1、第11章 系统设计211.1 介绍211.2 用户需求调查311.2.1 目标311.2.2 角色和职责311.2.3 开启准则311.2.4 输入311.2.5 关键步骤3Step1 设计准备3Step2 确定影响系统设计约束原因4Step3 确定设计策略4Step4 系统分解和设计4Step5 撰写体系结构设计文档4Step6 体系结构设计评审5后续活动511.2.6 输出511.2.7 结束准则511.2.8 度量511.3 用户界面设计511.3.1 目标511.3.2 角色和职责511.3.3 开启准则611.3.4 输入611.3.5 关键步骤6Step1 设计准备6Step2 用
2、户界面设计7Step3 撰写用户界面设计文档7Step4 用户界面设计评审7后续活动811.3.6 输出811.3.7 结束准则811.3.8 度量811.4 数据库设计811.4.1 目标811.4.2 角色和职责811.4.3 开启准则811.4.4 输入911.4.5 关键步骤9Step1 设计准备9Step2 数据库设计9Step3 撰写数据库设计文档10Step4 数据库设计评审11后续活动1111.4.6 输出1111.4.7 结束准则1111.4.8 度量1111.5 模块设计1211.5.1 目标1211.5.2 角色和职责1211.5.3 开启准则1211.5.4 输入121
3、1.5.5 关键步骤12Step1 设计准备13Step2 模块设计13Step3 撰写模块设计文档13Step4 模块设计评审13后续活动1411.5.6 输出1411.5.7 结束准则1411.5.8 度量1411.6 实施提议14第11章 系统设计系统设计(System Design, SD)是指设计软件系统体系结构、用户界面、数据库、模块等,从而在需求和代码之间建立桥梁,指导开发人员去实现能满足用户需求软件产品。系统设计过程域是SPP模型关键组成部分。本规范叙述了系统设计过程域四个关键规程: 体系结构设计 SPP-PROC-SD-ARCHITECTURE 用户界面设计 SPP-PROC
4、-RM-UI 数据库设计 SPP-PROC-RM-DATABASE 模块设计 SPP-PROC-RM-MODULE上述每个规程“目标”、“角色和职责”、“开启准则”、“输入”、“关键步骤”、“输出”、“完成准则”和“度量”均已定义。本规范适适用于中国IT企业软件研发项目。提议用户依据本身情况(如商业目标、研发实力等)合适地修改本规范,然后推广使用。11.1 介绍系统设计过程域分为两个阶段:高层设计阶段和具体设计阶段。高层设计阶段关键是软件系统体系结构设计。具体设计阶段关键是用户界面设计、数据库设计和模块设计,图11-1所表示。需求开发高层设计阶段体系结构设计数据库设计用户界面设计模块设计实现和
5、测试具体设计阶段图11-1 系统设计过程域示意图系统设计过程域产生关键文档有: 体系结构设计汇报,模板见 SPP-TEMP-SD-ARCHITECTURE。 用户界面设计汇报,模板见 SPP-TEMP-SD-UI。 数据库设计汇报,模板见 SPP-TEMP-SD-DATABASE。 模块设计汇报,模板见 SPP-TEMP-SD-MODULE。11.2 体系结构设计11.2.1 目标l 分析和设计软件体系结构。经过系统分解,确定子系统功效和子系统之间关系,和模块功效和模块之间关系,产生体系结构设计汇报。11.2.2 角色和职责l 项目经理指定若干名开发人员从事体系结构设计(以下称为体系结构设计人
6、员)。11.2.3 开启准则l 体系结构设计人员已经确定。11.2.4 输入l 需求文档如产品需求规格说明书11.2.5 关键步骤体系结构设计步骤图11-2所表示。Step3. 确定设计策略Step2. 确定约束原因Step1. 设计准备Step4. 系统分解设计Step6. 设计评审Step5. 撰写文档图11-2 体系结构设计步骤Step1 设计准备l 项目经理或技术责任人分配系统设计任务,包含体系结构设计、模块设计、用户界面设计、数据库设计等。本活动可能产生一份阶段性开发计划,如系统设计计划,视工作量而定。l 体系结构设计人员阅读需求文档,明确设计任务。l 体系结构设计人员准备相关设计工
7、具(如Rational Rose)和资料。Step2 确定影响系统设计约束原因l 需求约束。体系结构设计人员从需求文档如软件需求规格说明书中提取需求约束,比如: 本系统应该遵照标准或规范 软件、硬件环境(包含运行环境和开发环境)约束 接口/协议约束 用户界面约束 软件质量约束,如正确性、健壮性、可靠性、效率(性能)、易用性、清楚性、安全性、可扩展性、兼容性、可移植性等等。l 隐含约束。有部分假设或依靠并没有在需求文档中明确指出,但可能会对系统设计产生影响,设计人员应该尽可能地在此处说明。比如对用户教育程度、计算机技能部分假设或依靠,对支撑本系统软件硬件假设或依靠等。Step3 确定设计策略l
8、体系结构设计人员依据产品需求和发展战略,确定设计策略(Design Strategy)。比如: 扩展策略。说明为了方便本系统在未来扩展功效,现在有什么方法。 复用策略。说明本系统在目前和未来复用策略。 折衷策略。说明当两个目标难以同时优化时怎样折衷,比如“时空”效率折衷,复杂性和实用性折衷。Step4 系统分解和设计l 体系结构设计人员: 将系统分解为若干子系统,确定每个子系统功效和子系统之间关系。 将子系统分解为若干模块,确定每个模块功效和模块之间关系。 确定系统开发、测试、运行所需软硬件环境。Step5 撰写体系结构设计文档l 体系结构设计人员依据指定模板撰写体系结构设计汇报,关键内容包含
9、: 软件系统概述 影响设计约束原因 设计策略 系统总体结构 子系统结构和模块功效 开发、测试、运行所需软硬件环境Step6 体系结构设计评审l 体系结构设计人员邀请同行教授、开发人员对体系结构进行正式技术评审,评审步骤请参考 SPP-PROC-TR-FTR。l 体系结构评审关键不是“对还是错”,而是“好还是差”。关键评审要素包含: 适宜性。考察该体系结构是否适合于产品需求,是否可在预定计划内实现。 系统综合能力(Capability)。比如“时空”效率(性能,容量等),可扩展性,可管理性(可维护性),可复用性,安全性等等,视产品特征而定。后续活动 l 体系结构设计完成后进入具体设计阶段(用户界
10、面设计、数据库设计、模块设计等)。11.2.6 输出l 体系结构设计汇报11.2.7 结束准则l 体系结构设计汇报已经完成,而且经过了技术评审。11.2.8 度量l 体系结构设计人员统计工作量和文档规模,汇报给项目经理。11.3 用户界面设计11.3.1 目标l 设计软件用户界面,产生用户界面设计汇报。l 制作用户界面资源图像、图标或界面专用组件等。11.3.2 角色和职责l 项目经理指定若干名开发人员从事用户界面设计(以下称为界面设计人员)。l 假如可能话,邀请用户或美工人员帮助设计用户界面。11.3.3 开启准则l 需求文档已经完成。l 体系结构设计已经完成。11.3.4 输入l 需求文档
11、l 体系结构设计文档11.3.5 关键步骤用户界面设计步骤图11-3所表示。迭代Step2. 界面设计Step4. 设计评审Step3. 撰写文档Step1. 设计准备2.3细化2.2原型评定2.1原型创作图11-3 体系结构设计步骤Step1 设计准备l 界面设计人员阅读需求文档和体系结构设计文档,明确界面设计任务。l 界面设计人员和用户交流,了解用户工作习惯和她们对界面见解。l 界面设计人员准备相关设计工具和资料,搜集或创作基础界面资源图像、图标和通用组件。l 界面设计人员确定本软件用户界面设计规则(或指南),关键包含: 优异界面特征或通用设计标准; 软件主界面(如主窗口、主页面)设计规则
12、; 软件子界面(如子窗口、子页面)设计规则; 标准控件使用规则; 美学设计规则。Step2 用户界面设计用户界面设计通常要经历“原型创作原型评定细化”等步骤,通常迭代进行。l Step2.1 原型创作界面设计人员创作界面原型: 先徒手画,或用Visio 等工具绘制界面视图; 再用软件开发工具实现能够运行原型。l Step2.2 原型评定 界面设计人员邀请用户和同行们评定界面原型,聚集意见,立即改善。l Step2.3 细化 界面设计人员细化界面原型,比如美工处理,添加细节等。补充说明:开发人员在本阶段无须关心界面原型代码质量,因为界面原型可能不停地被修改甚至被抛弃。Step3 撰写用户界面设计
13、文档l 用户界面定型以后,界面设计人员依据指定模板撰写用户界面设计汇报,关键内容包含: 应该遵照界面设计规范; 界面关系图和工作步骤图; 主界面视图、功效说明、操作方法; 子界面视图、功效说明、操作方法; 美学设计说明。Step4 用户界面设计评审l 界面设计人员邀请用户和同行们对定型后界面进行正式技术评审,尽最大努力使界面变得愈加美观、易用。评审步骤请参考 SPP-PROC-TR-FTR。l 用户界面关键评审要素包含: 适宜性 简练易用 一致性 美观 动态反馈 功效屏蔽和犯错处理 用户控制 国际化(兼容性和可移植性) 适应性(针对多种用户)后续活动 l 在系统设计工作结束以后,开发人员编写界
14、面代码,并和用户一起经过多种路径测试界面,从而不停地完善用户界面。(请参考相关测试文档)l 界面设计人员总结经验教训,不停地完善适适用于本机构“用户界面设计指南”。11.3.6 输出l 用户界面设计汇报11.3.7 结束准则l 用户界面设计汇报已经完成,界面原型已经经过评审。11.3.8 度量l 界面设计人员统计工作量和文档规模,汇报给项目经理。11.4 数据库设计11.4.1 目标l 设计软件数据库,产生数据库设计汇报。11.4.2 角色和职责l 项目经理指定若干名开发人员从事数据库设计(以下称为数据库设计人员)。11.4.3 开启准则l 需求文档已经完成。l 体系结构设计已经完成。11.4
15、.4 输入l 需求文档l 体系结构设计文档11.4.5 关键步骤数据库设计步骤图11-4所表示。迭代Step2. 数据库设计Step3. 撰写文档2.4优化2.3安全性设计2.2物理设计2.1逻辑设计Step1. 设计准备Step4. 设计评审图11-4 数据库设计步骤Step1 设计准备l 数据库设计人员阅读需求文档和体系结构设计文档,明确数据库设计任务。l 数据库设计人员准备相关设计工具和资料。l 数据库设计人员确定本软件数据库设计规则(或指南),关键包含: 数据库命名规则 逻辑设计规则(或指南) 物理设计规则(或指南) 安全性设计规则(或指南) 优化规则(或指南) 数据库管理和维护规则(
16、或指南)Step2 数据库设计数据库设计通常要经历“逻辑设计物理设计安全性设计优化”等步骤,通常要迭代进行。l Step2.1 逻辑设计 数据库设计人员依据需求文档,创建和数据库相关那部分实体关系图(ERD)。假如采取面向对象方法(OOAD),这里实体相当于类(class)。l Step2.2 物理设计 设计表结构。通常地,实体对应于表,实体属性对应于表列,实体之间关系成为表约束。逻辑设计中实体大部分能够转换成物理设计中表,不过它们并不一定是一一对应。数据库表参考格式如表11-1所表示。 对表结构进行规范化处理(第三范式)。表名功效说明列名数据类型(精度范围)空/非空约束条件补充说明表11-1
17、 数据库表参考格式l Step2.3 安全性设计提升软件系统安全性应该从“管理”和“设计”两方面着手。这里仅考虑数据库安全性设计。 用户只能用帐号登陆到应用软件,经过应用软件访问数据库,而没有其它路径能够操作数据库。 对用户帐号密码进行加密处理,确保在任何地方全部不会出现密码明文。 确定每个角色对数据库表操作权限,如创建、检索、更新、删除等。每个角色拥有刚好能够完成任务权限,不多也不少。在应用时再为用户分配角色,则每个用户权限等于她所兼角色权限之和。l Step2.4 优化分析并优化数据库“时空”效率,尽可能地“提升处理速度”而且“降低数据占用空间”。 分析“时空”效率瓶颈,找出优化对象(目标
18、),并确定优先级。 当优化对象(目标)之间存在对抗时,给出折衷方案。 给出优化具体方法,比如优化数据库环境参数,对表格进行反规范化处理等。Step3 撰写数据库设计文档l 数据库设计人员依据指定模板撰写数据库设计汇报,关键内容包含: 数据库环境说明 数据库命名规则 逻辑设计 物理设计 安全性设计 优化 数据库管理和维护说明Step4 数据库设计评审l 数据库设计人员邀请同行们对数据库进行正式技术评审,评审步骤请参考 SPP-PROC-TR-FTR。l 数据库关键评审要素包含: 正确性、完整性、一致性 安全性 “时空”效率后续活动 l 在系统设计工作结束以后,开发人员将编写和数据库相关代码,并和
19、用户一起经过多种路径测试数据库,从而不停地完善数据库。(请参考相关测试文档)l 数据库设计人员总结经验教训,不停地完善适适用于本机构数据库设计指南。l 软件交付给用户后,由用户管理和维护数据库。11.4.6 输出l 数据库设计汇报11.4.7 结束准则l 数据库设计汇报已经完成,而且经过了技术评审。11.4.8 度量l 数据库设计人员统计工作量和文档规模,汇报给项目经理。11.5 模块设计11.5.1 目标l 设计软件全部模块关键接口和属性、数据结构和算法,产生模块设计汇报。11.5.2 角色和职责l 项目经理指定若干名开发人员从事模块设计(以下称为模块设计人员),模块设计人员将在实现阶段编写
20、这些模块代码。11.5.3 开启准则l 需求文档已经完成。l 体系结构设计已经完成。11.5.4 输入l 需求文档l 体系结构设计文档11.5.5 关键步骤模块设计步骤图11-5所表示。Step2. 模块设计2.1接口和属性设计Step4. 设计评审Step3. 撰写文档Step1. 设计准备迭代2.2数据结构和算法设计图11-5 模块设计步骤Step1 设计准备l 模块设计人员阅读需求文档和体系结构设计文档,明确模块设计任务。l 模块设计人员准备相关设计工具和资料。l 模块设计人员确定本软件编程规范,确保模块设计文档风格和代码风格保持一致。Step2 模块设计模块设计通常要经历“接口和属性设
21、计数据结构和算法设计”等步骤,而且通常需要反复迭代。提议:因为现代软件开发工具越来越优异,模块具体设计和编程能够很好地融合一起,而且效率相当高,有些工具甚至含有代码自动生成功效。所以在系统设计阶段,模块设计到底要具体到什么地步,应该视问题复杂性和所采取开发工具而定。通常地,只要确定了每个模块关键接口、数据结构和算法,能够清楚地指导模块编程即可。总而言之,无须花太多时间用于设计模块细节。l Step2.1 接口和属性设计 模块设计人员设计每个模块关键接口和属性。假如采取面向对象方法(OOAD),相当于设计类函数和组员变量。l Step2.2 数据结构和算法设计 模块设计人员设计每个模块数据结构和
22、算法(假如存在话)。Step3 撰写模块设计文档l 模块设计人员依据指定模板撰写模块设计汇报,关键内容包含: 模块汇总 每个模块关键接口和属性 每个模块数据结构和算法(假如存在话)Step4 模块设计评审l 模块设计人员邀请同行们对模块设计文档进行正式技术评审或非正式技术评审(由技术责任人决定采取何种评审方法),评审步骤请参考 SPP-PROC-TR。l 模块关键评审要素包含: 信息隐藏(独立性) 强内聚、低耦合 数据结构和算法效率后续活动l 模块代码实现能够和模块设计同时进行,也能够在模块设计完成以后进行。11.5.6 输出l 模块设计汇报11.5.7 结束准则l 模块设计汇报已经完成,而且经过了技术评审。11.5.8 度量l 模块设计人员统计工作量和文档规模,汇报给项目经理。11.6 实施提议l 先对系统设计人员进行“专题”培训,让她们掌握必需系统设计技能。l 因为中国绝大多数大学不开设“用户界面设计课程”,这造成大部分软件开发人员不善于设计用户界面。项目开发小组应该设法邀请用户界面设计教授参与(或指导)本软件界面设计。l 系统设计人员能够依据产品特征,合适地修改体系结构设计汇报、用户界面设计汇报、数据库设计汇报和模块设计汇报模板。l 对系统设计过程中产生全部有价值文档进行配置管理。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100