2017.10.8 软件工程----总体设计
(1)经过需求分析阶段的工作,系统必须做什么已经清楚了,现在是决定怎样做的时候,总体设计的基本目的就是回答“概括地说,
系统应该如何实现”这个问题,因此,总体设计有称为概要设计或初步设计。通过这个阶段分为组成系统的物理元素-程序、文件、数据库
人工过程文档等。
(2)总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构
(3)总体设计过程包括下述九个步骤:
·设想供选择的方案
需求分析阶段得出的数据流图是总体设计的极好出发点;设想把数据流图中的处理分组的各中可能。
·选取合理的方案
每份合理的方案,分析员都应该准备下列四份资料
1.系统流程图;
2.组成系统的物理元素清单;
3.成本/效益分析;
4.实现这个系统的进度计划。
·推荐最佳方案
·功能分解
为了完成系统系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序的设计,
通常分为两个阶段完成:首先进行结构设计,然后进行过程设计,结构设计是确定有哪些模块组成,
以及这些模块之间的关系;过程设计确定每个模块的处理过程。结构设计是总体设计阶段的任务;
过程设计是详细设计阶段任务。
·设计软件结构
软件结构(由模块组成的层次系统)可以用层次图或结构图来描绘
·设计数据库
·制定测试计划
·书写文档
1.系统说明 主要包含用系统流程图描绘的系统构成方案,组成系统的物理元素清单;精化的数据流图;用层次图或结构图描绘的软件结构
2.用户手册 根据总体设计阶段的结果,修正在需求分析阶段产生的初步的用户手册
3.测试计划 包括测试策略、测试方案、预期的测试结果、测试进度计划等;
4.详细的实现计划
5.数据库设计结果
·审查和复查
(4)设计原理
· 模块化
(1)模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行语句)的序列,而且有一个总体标识符代表他;
(2)模块化就是把程序划分为独立命名且可独立访问的模块,每个模块完一个子功能,把这些模块集成起来构成一个整体。可以完成指定的功能满足用户的需求。
(3)每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。
·抽象
(1)抽象就是抽出事物的本质特性而暂时不考虑他们的细节;
(2)把这些相似的方面集中和概括起来,暂时忽略他们之间的差异,这就是抽象
(3)处理复杂系统的唯一有效的方法是用层次的方法构造和分析它
·逐步求精
(1)为了能集中精力要问题而尽量推迟对问题细节的考虑
(2)Miller法则:一个人在任何时候都只能把注意力集中在(7+-2)个知识块土上
(3)求精实际上是细化过程
·信息隐藏和局部化
(1)信息隐藏原理指出:应该这样设计确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。
(2)所谓局部化是指把一些关系密切的软件元素物理地放的很近。模块中使用局部数据元素是局部化的一个例子,局部化有助于实现信息隐藏
(5)模块独立
·模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。
·模块的独立独立程度可以由两个定性标准度量,内聚与耦合。
(1)耦合衡量不同模块彼此间相互依赖的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度
数据耦合:两个模块之间通过参数交换信息而且交换的信息仅仅是数据(低耦合)
控制耦合:如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现)
特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时
公共环境耦合:当两个或多个模块通过一个公共数据环境相互作用时,可以是全程变量、共享通信区
内容耦合:一个模块访问另一个模块的内容;一个模块不通过正常入口而转到另一个模块的内部;
数据字典是信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据字典的作用使软件分析与设计的过程中给人提供关于数据的描述信息
数据字典有以下四个元素组成:
数据流;
数据流分量
数据存储
处理