全程软件测试(七):软件开发流程—概要设计——读书笔记(软件的开发流程和测试流程)
概要设计是软件分析师或架构师通过分析需求规格说明书,对软件产品的结构、逻辑进行规划,并给出设计说明书的过程。
概要设计的任务
(1)系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推荐方案,提交系统流程图、系统物理元素清单、成本效益分析、系统的进度计划,供专家审定,审定后进入设计。
(2)确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
(3)编写概要设计说明书、用户手册、测试计划,选用相关的软件工具来描述软件结构。结构图是经常使用的软件描述工具。
概要设计的过程
在概要设计过程中要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。一般步骤如下所示:
1.设计系统方案;
2.选取一组合理的方案;
3.推荐最佳实施方案;
4.功能分解;
5.软件结构设计;
6.数据库设计、文件结构的设计;
7.制订测试计划;
8.编写概要设计文档;
9.审查与复审概要设计文档。
模块化与模块独立性
1.模块化
模块是数据说明、可执行语句等程序对象的集合。模块可以单独被命名,而且可通过名字来访问,例如,过程、函数、子程序、宏等都可作为模块。
2.抽象与逐步求精
软件工程的每一步都是对软件解法的抽象层次的一次精化。抽象与逐步求精是紧密相关的。
3.信息隐蔽和局部化
信息隐蔽是指一个模块将自身的内部信息向其他模块隐藏,以避免其他模块不恰当的访问和修改。只有那些为了完成系统功能不可或缺的数据交换才被允许在模块间进行。
4.模块独立性
模块独立性是指软件系统中每个模块只涉及软件要求的具体子功能。它具有如下优点:
具有独立模块的软件比较容易开发。这是由于能够分割功能而且接口可以简化。当许多人分工合作开发同一个软件时,这个优点尤其重要。
独立的模块比较容易测试和维护。这是因为修改设计和程序的工作量相对较小,错误传播范围小,需要扩充功能时只需调用模块。
模块的独立程度可以由耦合和内聚两个定性标准度量,具体如下所示。
(1)耦合
耦合是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度、调用模块的方式,以及通过接口的信息。
根据耦合程度由弱到强,可以将耦合分为以下几种:
非直接耦合;
数据耦合;
控制耦合;
公共环境耦合;
内容耦合;
标记耦合;
外部耦合。
总之,耦合是影响软件复杂程度的一个重要因素。通常采用的原则是:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。
(2)内聚
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。理想内聚的模块只做一件事情。
根据内聚程度由低到高,可以将内聚分为以下几种:
偶然内聚;
逻辑内聚;
时间内聚;
过程内聚;
通信内聚;
信息内聚;
功能内聚。
概要设计的原则
软件概要设计包括规划模块构成的程序结构和输入输出数据结构。其目标是产生一个模块化的程序结构,并明确模块间的控制关系,以及定义界面、说明程序的数据,进一步调整程序结构和数据结构。
改进概要设计、提高软件质量的原则如下:
显著改进软件结构,提高模块独立性;
模块规模应该适中;
适当选择深度、宽度、扇出和扇入;
模块的作用域应该在控制域之内;
力争降低模块接口的复杂程度;
设计单入口单出口的模块;
模块功能应该可以预测。
概要设计文档
在概要设计阶段,设计人员完成的主要文档是概要设计说明书,它主要规定软件的结构。概要设计说明书的主要内容及结构如下:
1.引言;
2.任务概述;
3.总体设计;
4.接口设计;
5.数据结构设计;
6.运行设计;
7.出错处理设计;
8.安全保密设计;
9.维护设计。