软件项目管理第十章软件设计
- 格式:pdf
- 大小:421.38 KB
- 文档页数:11
第10章 软件设计
10.1 目的 软件设计指设计软件的系统结构、用户界面、数据库、功能模块等,在需求与代码之间建立桥梁,指
导工作人员开发能够满足用户需求的软件产品。
10.2 关键活动与流程 软件设计的流程如图10-1所示,分为概要设计阶段和详细设计阶段。关键活动是“软件系统设计”、
“用户界面设计”、“数据库设计”和“功能模块设计”。
用户界面设计师
软件开发人员
软件开发人员
图10-1 软件设计的流程
该流程的主要工作成果见表10-1。
表10-1 软件设计流程的主要工作成果
关键活动 主要工作成果 责任人
软件系统设计 《软件系统设计报告》 软件开发人员
用户界面设计 《用户界面原型》 用户界面设计师
数据库设计 《数据库设计报告》 软件开发人员
功能模块设计 《功能模块设计报告》 软件开发人员
概要设计阶段 详细设计阶段
软件系统设计
功能模块设计 数据库设计 用户界面设计 10.2.1 软件系统设计 软件系统设计的一般步骤如图10-2所示。
图10-2 软件系统设计的步骤 第一步 设计准备
项目经理分配软件设计的任务,包括系统设计、模块设计、用户界面设计、数据库设计等。
系统设计人员阅读需求文档,明确设计任务,并准备相关的设计工具(如Rational Rose)和资料。
第二步 确定系统的约束因素
软件系统设计人员从《软件需求规格说明书》中提取需求约束,例如: ☆ 本系统应当遵循的标准或规范。
☆ 软件、硬件环境(包括运行环境和开发环境)的约束。
☆ 接口/协议的约束。
☆ 用户界面的约束。
☆ 软件质量的约束,如正确性、健壮性、可靠性、易用性、清晰性、安全性、可扩展性、兼容性、可移植性等等。
有一些假设或依赖并没有在需求文档中明确指出,但可能会对系统设计产生影响,设计人员应当尽可
能地在此处说明,例如对用户教育程度、计算机技能的一些假设或依赖,对支撑本系统的软件硬件的假设
或依赖等。
第三步 确定设计策略 系统设计人员根据产品的需求,以及本产品的发展战略,确定设计策略(Design Strategy)。例如:
☆ 设计模式:根据本产品的功能性需求和非功能性需求,确定某些设计模式。
☆ 扩展策略:说明为了方便本系统在将来扩展功能,现在有什么措施。
☆ 复用策略:说明本系统在当前“复用什么”以及将来“如何被复用”。
☆ 折中策略:说明当两个目标难以同时被优化时如何折中,例如“时-空”效率折中,复杂性与实用性之间的折中。
第四步 系统结构设计
☆ 将系统分解为若干子系统,确定每个子系统的功能以及子系统之间的关系。绘制系统的总体结构
图(包括物理图和逻辑图)。
☆ 将子系统分解为若干模块,确定每个模块的功能以及模块之间的关系,绘制子系统的结构图。 ☆ 确定系统开发、测试、运行所需的软硬件环境。
第五步 撰写系统设计文档
系统设计人员根据指定的模板撰写《软件系统设计报告》,格式参见表10-2。
第六步 设计评审
系统设计人员邀请同行专家、开发人员对该系统设计进行技术评审。设计评审的重点不是“对还是错”,而是要考察系统的综合能力。设计评审的要素视产品特征而定,例如除了“合适性”、“结构稳定性”、“可
扩展性”、“可复用性”之外,还要考虑性能、容量、安全性等。 Step1.
设计
准备 Step2.
确定
约束
因素 Step3.
确定
设计
策略 Step4.
系统
结构
设计 Step5.
撰写
文档 Step6.
设计
评审 表10-2 软件系统设计报告 软件系统设计报告
1. 系统概述
提示:(1)说明本系统“是什么”,(2)描述本系统的主要功能。 2. 设计约束 提示:体系结构设计人员从需求文档提取需求约束,并且确定一些隐含约束。
3. 设计策略 提示:体系结构设计人员根据产品需求,确定设计模式、扩展策略、复用策略、折中策略等。
4. 系统总体结构 (1)将系统分解为若干子系统,绘制总体结构图(含物理图和逻辑图),说明各子系统的主要功能。
(2)说明“如何”以及“为什么”如此分解系统。
(3)说明各子系统如何协调工作,从而实现原系统的功能。 5. 子系统N的结构与功能
(1)将子系统N分解为一些模块,绘制结构图,说明各模块的主要功能。 (2)说明“如何”以及“为什么”如此分解子系统N。
(3)说明各模块如何协调工作,从而实现子系统N的功能。 6. 开发环境的配置 提示:说明本系统应当在什么样的环境下开发,有什么强制要求和建议。
软件硬件设备名称 开发环境标准配置 开发环境最低配置
7. 测试环境的配置 提示:说明本系统应当在什么样的环境下测试,有什么强制要求和建议。
软件硬件设备名称 测试环境标准配置 测试环境最低配置
8.运行环境的配置
提示:说明本系统应当在什么样的环境下运行,有什么强制要求和建议/
软件硬件设备名称 运行环境标准配置 运行环境最低配置
9.其它
10.2.2 用户界面设计 用户界面设计的一般步骤如图10-2所示。
图10-3 用户界面设计的步骤 第一步 界面设计准备
项目经理指定开发人员或美工人员从事用户界面设计(以下称为界面设计人员)。
界面设计人员详细阅读《软件需求规格说明书》,了解用户的需求。再与用户交流,了解用户的工作习惯和他们对界面的看法。
界面设计人员学习本公司的《用户界面设计指南》(如果存在的话),进一步商定本软件的用户界面设
计规则。
第二步 界面原型设计
界面设计人员先创作界面原型,一般方式: (1) 在纸上徒手画,或者用Visio等工具绘制界面的视图;
(2) 用软件开发工具实现可以运行的原型。
第三步 体验与细化
界面设计人员邀请用户和同行体验界面原型,收集意见,及时改进。之后界面设计人员细化界面原型,
例如美工处理,添加细节等。 第四步 用户界面评审
本软件的用户界面设计定型后,项目经理邀请用户和同行对界面进行评审,尽最大努力使界面变得更
加美观、易用。
之后,开发人员编写界面的代码,并和用户一起通过各种途径测试界面,从而不断地完善用户界面。
需求分析
界面设计准备 界面原型设计
体验与细化 用户界面评审 10.2.3 数据库设计 数据库设计的一般步骤如图10-4所示。
迭
代
图10-4 数据库设计的步骤 第一步 设计准备
☆ 数据设计人员阅读需求文档和体系结构设计文档,明确数据库设计任务。 ☆ 数据库设计人员准备相关的设计工具和资料。
☆ 数据库设计人员确定本软件的数据库设计规则(或指南),例如数据库命名规则。
第二步 数据库设计
数据库设计一般要经历“逻辑设计→物理设计→安全性设计→性能优化”等步骤,通常要迭代进行。
☆ [Step2.1] 逻辑设计 数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD:Entity Relationship Diagram)。如果采用面向对象设计方法,那么“实体”相当于类(class)。
☆ [Step2.2] 物理设计 按照第三范式设计表结构(即规范化处理)。一般地,实体对应于表,实体的属性对应于表的列,
实体之间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不是一一对应的。
☆ [Step2.3] 安全性设计 提高软件系统的安全性应当从“管理”和“技术”两方面着手。这里仅考虑技术手段(因为安全
管理超出了软件工程范畴),一般原则如下:
△ 用户只能用给定的用户名登录到应用软件,通过应用软件访问数据库,而没有其它途径可以操作数据库。
△ 对用户的密码进行加密处理,确保在任何地方都不会出现密码的明文。
△ 确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色拥有刚
好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限
等于他所有角色的权限累加。
☆ [Step2.4] 性能优化 数据库性能化一般有两种途径:
△ 优化表结构本身。例如对第三范式的表结构进行反规范化处理,允许表中存在冗余数据,
从而减少多个表链接操作,达到提高性能的目的。
△ 优化数据库的环境参数。例如提高硬件设施,调整表的空间尽量减少数据碎片等。 Step2.数据库设计
2.1逻辑设计
2.2物理设计
2.3安全性设计
2.4性能优化 Step1. 设计 准备 Step4. 设计 评审 Step3. 撰写 文档 第三步 撰写数据库设计文档 ☆ 数据库设计人员根据指定的模板撰写《数据库设计报告》,格式参见表10-3。
第四步 设计评审
数据库设计人员邀请同行专家、开发人员对数据库进行技术评审,数据库的主要评审要素包括:(1)
正确性、完整性、一致性;(2)安全性;(3)性能。
表10-3 数据库设计报告 数据库设计报告 1. 数据库环境说明
提示:(1)说明所采用的数据库系统,设计工具,编程工具等;(2)说明详细配置。 2.数据库命名规则 提示:完整并且清楚地说明本数据库的命名规则 3. 逻辑设计
提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。 4. 物理设计
4.0 表汇总
表 名 功能说明
表 A
表 B
表 C
4.n 表n 表 名
列 名 数据类型(精度范围) 空/非空 约束条件
补充说明 5.安全性设计
5.1账号与密码管理 提示:用户只能用账号登录到应用软件,通过应用软件访问数据库,而没有其它途径操作数据库。
5.2 密码加密方法 提示:对用户密码进行加密处理,确保在任何地方都不会出现密码的明文。
5.3 角色与权限 提示:确定每个角色对数据库表的操作权限,如创建、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。
在应用时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之和。
角 色 可以访问的表 操作权限
角 色A
角 色B
6.性能优化方法
优 先 级 优 化 对 象 方 法、措 施
7.数据库管理与维护说明 提示:在设计数据库的时候,及时给出管理与维护本数据库的方法,有助于将来撰写出正确完备的用户手册。