资源描述
{ 项目名称 }
软件产品设计阐明书
文献状态:
[√] 草稿
[ ] 正式发布
[ ] 正在修改
文献标记:
Company-Project-PIM-PROPOSAL
当前版本:
X.Y
作 者:
完毕日期:
Year-Month-Day
北京捷诺视讯数码科技有限公司
Beijing General DVR Science & Technology Co.Ltd
二零一零年五月
版 本 历 史
版本/状态
作者
参加者
起止日期
备注
目录
目录 3
一、 简介 5
二、 体系构造设计 5
2.1、 目 5
2.2、 角色与职责 6
2.3、 启动准则 6
2.4、 输入 6
2.5、 重要环节 6
2.5.1、 设计准备 6
2.5.2、 拟定影响系统设计约束因素 6
2.5.3、 拟定设计方略 7
2.5.4、 系统分解与设计 7
2.5.5、 撰写体系构造设计文档 7
2.5.6、 体系构造设计评审 7
2.5.7、 [后续活动] 8
2.6、 输出 8
2.7、 结束准则 8
2.8、 度量 8
三、 顾客界面设计 8
3.1、 目 8
3.2、 角色与职责 8
3.3、 启动准则 8
3.4、 输入 9
3.5、 重要环节 9
3.5.1、 设计准备 9
3.5.2、 顾客界面设计 9
3.5.3、 撰写顾客界面设计文档 10
3.5.4、 顾客界面设计评审 10
3.5.5、 [后续活动] 10
3.6、 输出 11
3.7、 结束准则 11
3.8、 度量 11
四、 数据库设计 11
4.1、 目 11
4.2、 角色与职责 11
4.3、 启动准则 11
4.4、 输入 11
4.5、 重要环节 12
4.5.1、 设计准备 12
4.5.2、 数据库设计 12
4.5.3、 撰写数据库设计文档 13
4.5.4、 数据库设计评审 14
4.5.5、 [后续活动] 14
4.6、 输出 14
4.7、 结束准则 14
4.8、 度量 14
五、 模块设计 14
5.1、 目 14
5.2、 角色与职责 14
5.3、 启动准则 15
5.4、 输入 15
5.5、 重要环节 15
5.5.1、 设计准备 15
5.5.2、 模块设计 15
5.5.3、 撰写模块设计文档 16
5.5.4、 模块设计评审 16
5.5.5、 [后续活动] 16
5.6、 输出 16
5.7、 结束准则 16
5.8、 度量 17
六、 实行建议 17
一、 设计简介
系统设计(System Design,SD)是指设计软件系统体系构造、顾客界面、数据库、模块等,从而在需求与代码之间建立桥梁,指引开发人员去实现能满足顾客需求软件产品。
系统设计过程域是CMM模型重要构成某些。本规范阐述了系统设计过程域四个重要规程:
² 体系构造设计
² 顾客界面设计
² 数据库设计
² 模块设计
上述每个规程“目的”、“角色与职责”、“启动准则”、“输入”、“重要环节”、“输出”、“完毕准则”和“度量”均已定义。
系统设计过程域分为两个阶段:高层设计阶段和详细设计阶段。
高层设计阶段重点是软件系统体系构造设计。详细设计阶段重点是顾客界面设计、数据库设计和模块设计,如图所示。
需求开发
高层设计阶段
体系构造设计
数据库设计
顾客界面设计
模块设计
实现与测试
详细设计阶段
系统设计过程域示意图
系统设计过程域产生重要文档有:
² 《体系构造设计报告》。
² 《顾客界面设计报告》。
² 《数据库设计报告》。
² 《模块设计报告》。
二、 体系构造设计
2.1、 目
l 分析与设计软件体系构造。通过系统分解,拟定子系统功能和子系统之间关系,以及模块功能和模块之间关系,产生《体系构造设计报告》。
2.2、 角色与职责
l 项目经理指定若干名开发人员从事体系构造设计(如下称为体系构造设计人员)。
2.3、 启动准则
l 体系构造设计人员已经拟定。
2.4、 输入
l 需求文档如《产品需求规格阐明书》
2.5、 重要环节
体系构造设计流程如图所示。
Step3.
拟定
设计
方略
Step2.
拟定
约束
因素
Step1.
设计
准备
Step4.
系统
分解
设计
Step6.
设计
评审
Step5.
撰写
文档
体系构造设计流程
2.5.1、 设计准备
l 项目经理或者技术负责人分派系统设计任务,涉及体系构造设计、模块设计、顾客界面设计、数据库设计等。本活动也许产生一份阶段性开发筹划,如《系统设计筹划》,视工作量而定。
l 体系构造设计人员阅读需求文档,明确设计任务。
l 体系构造设计人员准备有关设计工具(如Rational Rose)和资料。
2.5.2、 拟定影响系统设计约束因素
l 需求约束。体系构造设计人员从需求文档如《软件需求规格阐明书》中提取需求约束,例如:
² 本系统应当遵循原则或规范
² 软件、硬件环境(涉及运营环境和开发环境)约束
² 接口/合同约束
² 顾客界面约束
² 软件质量约束,如对的性、健壮性、可靠性、效率(性能)、易用性、清晰性、安全性、可扩展性、兼容性、可移植性等等。
l 隐含约束。有某些假设或依赖并没有在需求文档中明确指出,但也许会对系统设计产生影响,设计人员应当尽量地在此处阐明。例如对顾客教诲限度、计算机技能某些假设或依赖,对支撑本系统软件硬件假设或依赖等。
2.5.3、 拟定设计方略
l 体系构造设计人员依照产品需求与发展战略,拟定设计方略(Design Strategy)。例如:
² 扩展方略。阐明为了以便本系统在将来扩展功能,当前有什么办法。
² 复用方略。阐明本系统在当前以及将来复用方略。
² 折衷方略。阐明当两个目的难以同步优化时如何折衷,例如“时-空”效率折衷,复杂性与实用性折衷。
2.5.4、 系统分解与设计
l 体系构造设计人员:
² 将系统分解为若干子系统,拟定每个子系统功能以及子系统之间关系。
² 将子系统分解为若干模块,拟定每个模块功能以及模块之间关系。
² 拟定系统开发、测试、运营所需软硬件环境。
2.5.5、 撰写体系构造设计文档
l 体系构造设计人员依照指定模板撰写《体系构造设计报告》,重要内容涉及:
² 软件系统概述
² 影响设计约束因素
² 设计方略
² 系统总体构造
² 子系统构造与模块功能
² 开发、测试、运营所需软硬件环境
2.5.6、 体系构造设计评审
l 体系构造设计人员邀请同行专家、开发人员对体系构造进行正式技术评审。
l 体系构造评审重点不是“对还是错”,而是“好还是差”。重要评审要素涉及:
² 适当性。考察该体系构造与否适合于产品需求,与否可在预定筹划内实现。
² 系统综合能力(Capability)。例如“时-空”效率(性能,容量等),可扩展性,可管理性(可维护性),可复用性,安全性等等,视产品特性而定。
2.5.7、 [后续活动]
l 体系构造设计完毕后进入详细设计阶段(顾客界面设计、数据库设计、模块设计等)。
2.6、 输出
l 《体系构造设计报告》
2.7、 结束准则
l 《体系构造设计报告》已经完毕,并且通过了技术评审。
2.8、 度量
l 体系构造设计人员记录工作量以及文档规模,报告给项目经理。
三、 顾客界面设计
3.1、 目
l 设计软件顾客界面,产生《顾客界面设计报告》。
l 制作顾客界面资源如图像、图标或者界面专用组件等。
3.2、 角色与职责
l 项目经理指定若干名开发人员从事顾客界面设计(如下称为界面设计人员)。
l 如果也许话,邀请顾客或美工人员协助设计顾客界面。
3.3、 启动准则
l 需求文档已经完毕。
l 体系构造设计已经完毕。
3.4、 输入
l 需求文档
l 体系构造设计文档
3.5、 重要环节
顾客界面设计流程如图所示。
迭代
Step2. 界面设计
Step4.
设计
评审
Step3.
撰写
文档
Step1.
设计
准备
2.3细化
2.2原型评估
2.1原型创作
体系构造设计流程
3.5.1、 设计准备
l 界面设计人员阅读需求文档和体系构造设计文档,明确界面设计任务。
l 界面设计人员与顾客交流,理解顾客工作习惯和她们对界面看法。
l 界面设计人员准备有关设计工具和资料,收集或创作基本界面资源如图像、图标以及通用组件。
l 界面设计人员拟定本软件顾客界面设计规则(或指南),重要涉及:
² 先进界面特性或通用设计原则;
² 软件主界面(如主窗口、主页面)设计规则;
² 软件子界面(如子窗口、子页面)设计规则;
² 原则控件使用规则;
² 美学设计规则。
3.5.2、 顾客界面设计
顾客界面设计普通要经历“原型创作—>原型评估->细化”等环节,普通迭代进行。
l [Step2.1] 原型创作
界面设计人员创作界面原型:
² 先徒手画,或者用Visio 等工具绘制界面视图;
² 再用软件开发工具实现可以运营原型。
l [Step2.2] 原型评估
² 界面设计人员邀请顾客和同行们评估界面原型,汇集意见,及时改进。
l [Step2.3] 细化
² 界面设计人员细化界面原型,例如美工解决,添加细节等。
补充阐明:开发人员在本阶段不必关怀界面原型代码质量,由于界面原型也许不断地被修改甚至被抛弃。
3.5.3、 撰写顾客界面设计文档
l 顾客界面定型之后,界面设计人员依照指定模板撰写《顾客界面设计报告》,重要内容涉及:
² 应当遵循界面设计规范;
² 界面关系图和工作流程图;
² 主界面视图、功能阐明、操作方式;
² 子界面视图、功能阐明、操作方式;
² 美学设计阐明。
3.5.4、 顾客界面设计评审
l 界面设计人员邀请顾客和同行们对定型后界面进行正式技术评审,尽最大努力使界面变得更加美观、易用。
l 顾客界面重要评审要素涉及:
² 适当性
² 简洁易用
² 一致性
² 美观
² 动态反馈
² 功能屏蔽和出错解决
² 顾客控制
² 国际化(兼容性和可移植性)
² 适应性(针对各种顾客)
3.5.5、 [后续活动]
l 在系统设计工作结束之后,开发人员编写界面代码,并和顾客一起通过各种途径测试界面,从而不断地完善顾客界面。(请参照关于测试文档)
l 界面设计人员总结经验教训,不断地完善合用于本机构“顾客界面设计指南”。
3.6、 输出
l 《顾客界面设计报告》
3.7、 结束准则
l 《顾客界面设计报告》已经完毕,界面原型已经通过评审。
3.8、 度量
l 界面设计人员记录工作量以及文档规模,报告给项目经理。
四、 数据库设计
4.1、 目
l 设计软件数据库,产生《数据库设计报告》。
4.2、 角色与职责
l 项目经理指定若干名开发人员从事数据库设计(如下称为数据库设计人员)。
4.3、 启动准则
l 需求文档已经完毕。
l 体系构造设计已经完毕。
4.4、 输入
l 需求文档
l 体系构造设计文档
4.5、 重要环节
数据库设计流程如图所示。
迭代
Step2. 数据库设计
Step3.
撰写
文档
2.4优化
2.3安全性设计
2.2物理设计
2.1逻辑设计
Step1.
设计
准备
Step4.
设计
评审
数据库设计流程
4.5.1、 设计准备
l 数据库设计人员阅读需求文档和体系构造设计文档,明确数据库设计任务。
l 数据库设计人员准备有关设计工具和资料。
l 数据库设计人员拟定本软件数据库设计规则(或指南),重要涉及:
² 数据库命名规则
² 逻辑设计规则(或指南)
² 物理设计规则(或指南)
² 安全性设计规则(或指南)
² 优化规则(或指南)
² 数据库管理与维护规则(或指南)
4.5.2、 数据库设计
数据库设计普通要经历“逻辑设计—>物理设计->安全性设计->优化”等环节,普通要迭代进行。
l 逻辑设计
² 数据库设计人员依照需求文档,创立与数据库有关那某些实体关系图(ERD)。如果采用面向对象办法(OOAD),这里实体相称于类(class)。
l 物理设计
² 设计表构造。普通地,实体相应于表,实体属性相应于表列,实体之间关系成为表约束。逻辑设计中实体大某些可以转换成物理设计中表,但是它们并不一定是一一相应。数据库表参照格式如表11-1所示。
² 对表构造进行规范化解决(第三范式)。
表名
功能阐明
列名
数据类型(精度范畴)
空/非空
约束条件
补充阐明
数据库表参照格式
l 安全性设计
提高软件系统安全性应当从“管理”和“设计”两方面着手。这里仅考虑数据库安全性设计。
² 顾客只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径可以操作数据库。
² 对顾客帐号密码进行加密解决,保证在任何地方都不会浮现密码明文。
² 拟定每个角色对数据库表操作权限,如创立、检索、更新、删除等。每个角色拥有刚好可以完毕任务权限,不多也不少。在应用时再为顾客分派角色,则每个顾客权限等于她所兼角色权限之和。
l 优化
分析并优化数据库“时-空”效率,尽量地“提高解决速度”并且“减少数据占用空间”。
² 分析“时-空”效率瓶颈,找出优化对象(目的),并拟定优先级。
² 当优化对象(目的)之间存在对抗时,给出折衷方案。
² 给出优化详细办法,例如优化数据库环境参数,对表格进行反规范化解决等。
4.5.3、 撰写数据库设计文档
l 数据库设计人员依照指定模板撰写《数据库设计报告》,重要内容涉及:
² 数据库环境阐明
² 数据库命名规则
² 逻辑设计
² 物理设计
² 安全性设计
² 优化
² 数据库管理与维护阐明
4.5.4、 数据库设计评审
l 数据库设计人员邀请同行们对数据库进行正式技术评审。
l 数据库重要评审要素涉及:
² 对的性、完整性、一致性
² 安全性
² “时-空”效率
4.5.5、 [后续活动]
l 在系统设计工作结束之后,开发人员将编写与数据库有关代码,并和顾客一起通过各种途径测试数据库,从而不断地完善数据库。(请参照关于测试文档)
l 数据库设计人员总结经验教训,不断地完善合用于本机构《数据库设计指南》。
l 软件交付给顾客后,由顾客管理与维护数据库。
4.6、 输出
l 《数据库设计报告》
4.7、 结束准则
l 《数据库设计报告》已经完毕,并且通过了技术评审。
4.8、 度量
l 数据库设计人员记录工作量以及文档规模,报告给项目经理。
五、 模块设计
5.1、 目
l 设计软件所有模块重要接口与属性、数据构造和算法,产生《模块设计报告》。
5.2、 角色与职责
l 项目经理指定若干名开发人员从事模块设计(如下称为模块设计人员),模块设计人员将在实现阶段编写这些模块代码。
5.3、 启动准则
l 需求文档已经完毕。
l 体系构造设计已经完毕。
5.4、 输入
l 需求文档
l 体系构造设计文档
5.5、 重要环节
模块设计流程如图所示。
Step2. 模块设计
2.1接口与属性设计
Step4.
设计
评审
Step3.
撰写
文档
Step1.
设计
准备
迭代
2.2数据构造
与算法设计
模块设计流程
5.5.1、 设计准备
l 模块设计人员阅读需求文档和体系构造设计文档,明确模块设计任务。
l 模块设计人员准备有关设计工具和资料。
l 模块设计人员拟定本软件编程规范,保证模块设计文档风格与代码风格保持一致。
5.5.2、 模块设计
模块设计普通要经历“接口与属性设计—>数据构造与算法设计”等环节,并且普通需要重复迭代。
建议:由于当代软件开发工具越来越先进,模块详细设计和编程可以较好地融合一起,并且效率相称高,有些工具甚至具备代码自动生成功能。因此在系统设计阶段,模块设计究竟要详细到什么地步,应当视问题复杂性以及所采用开发工具而定。普通地,只要拟定了每个模块重要接口、数据构造与算法,可以清晰地指引模块编程即可。总之,不必花太多时间用于设计模块细节。
l 接口与属性设计
² 模块设计人员设计每个模块重要接口与属性。如果采用面向对象办法(OOAD),相称于设计类函数和成员变量。
l 数据构造与算法设计
² 模块设计人员设计每个模块数据构造与算法(如果存在话)。
5.5.3、 撰写模块设计文档
l 模块设计人员依照指定模板撰写《模块设计报告》,重要内容涉及:
² 模块汇总
² 每个模块重要接口与属性
² 每个模块数据构造与算法(如果存在话)
5.5.4、 模块设计评审
l 模块设计人员邀请同行们对模块设计文档进行正式技术评审或者非正式技术评审(由技术负责人决定采用何种评审方式)。
l 模块重要评审要素涉及:
² 信息隐藏(独立性)
² 强内聚、低耦合
² 数据构造与算法效率
5.5.5、 [后续活动]
l 模块代码实现可以与模块设计同步进行,也可以在模块设计完毕之后进行。
5.6、 输出
l 《模块设计报告》
5.7、 结束准则
l 《模块设计报告》已经完毕,并且通过了技术评审。
5.8、 度量
l 模块设计人员记录工作量以及文档规模,报告给项目经理。
六、 实行建议
l 先对系统设计人员进行“专项”培训,让她们掌握必要系统设计技能。
l 由于国内绝大多数大学不开设“顾客界面设计课程”,这导致大某些软件开发人员不善于设计顾客界面。项目开发小组应当设法邀请顾客界面设计专家参加(或指引)本软件界面设计。
l 系统设计人员可以依照产品特性,恰本地修改《体系构造设计报告》、《顾客界面设计报告》、《数据库设计报告》和《模块设计报告》模板。
l 对系统设计过程中产生所有有价值文档进行配备管理。
展开阅读全文