软件项目管理第十章软件设计

  • 格式: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.数据库管理与维护说明 提示:在设计数据库的时候,及时给出管理与维护本数据库的方法,有助于将来撰写出正确完备的用户手册。