1. 总体设计过程
主要任务:完成软件结构的设计,确定系统的模块及其模块之间的关系。
两个阶段:系统设计阶段 and 结构设计阶段
九个步骤:
1)设想供选择的方案
2)选取合理的方案
3)推荐最佳方案
4) 功能分解
5)设计软件结构
6)设计数据库
7)制定测试计划
8)书写文档
9)审查和复审
2. 设计原理
(1)模块化
模块:模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。模块有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。
模块化:按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。每个模块完成一个子功能,将这些模块构成一个整体,可以完成指定功能。
优点:使软件结构清晰,易读易理解;使软件容易测试调试,提高软件的可靠性;提高软件的可修改性;有助于软件开发工程的组织管理
(2)抽象
概念:将某些事物,状态之间存在相似的方面集中概括,暂时忽略它们之间的差异
(3)逐步求精
为了能集中精力解决主要问题而尽量推迟对问题细节的考虑
(4)信息隐藏和局部化
信息隐藏:使得一个模块内包含的信息对于不需要这些信息的模块来说是不能访问的
局部化:把一些关系密切的软件元素物理得放得彼此靠近,例如使用局部数据元素
(5)模块独立
模块的独立程度可以由内聚和耦合度量,耦合衡量不同模块间互相依赖的紧密程度;内聚衡量一个模块内各个元素结合的紧密程度。
①耦合
无直接耦合:如果两个模块分别从属于不同模块的控制和调用,它们之间不传递任何信息,没有直接的联系,相互独立,称无直接耦合。软件系统中不可能所有模块没有任何连接
数据耦合:如果两个模块之间有调用关系,相互传递的信息以参数的形式 给出,而且传递的信息仅仅是简单的数据,则称为数据耦合。
标记耦合:如果两个模块之间传递的是数据结构,而且被调用模块不需要作为参数传递过来的整体数据结构,只需要使用数据结构其中一部分数据元素, 则称为标记耦合。
控制耦合:当一个模块调用另一个模块时,传递的信息控制了该模块的功能,则称为控制耦合。
公共环境耦合:两个或多个模块共用一个数据环境,称为公共环境耦合。
内容耦合:一个模块直接访问另一个模块的内部数据,一个模块 不通过正常入口而转入另一个模块内部,一个模块有多个入口,这都属于内容耦合。
②内聚
偶然内聚:模块内的元素之间没有意义上的联系。
逻辑内聚:将逻辑上相同或相似的一类任务放在同一个模块中,每次被调用时,由传送给模块的参数来确定该模块应完成的某一功能。
时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
过程内聚:一个模块内的处理元素是相关的,且必须以特定次序执行。
通信内聚:如果模块中所有元素都使用相同的输入数据或者产生相同的输出数据,则称为通信内聚。
顺序内聚:一个模块中各个处理元素都紧密相关于同一个功能个且必须顺序执行,此模块的块内联系属顺序内聚。
功能内聚:模块内所有元素属于一个整体,共同完成一个单一功能,缺一不可,则称为功能内聚
3. 启发规则
4. 层次图and HIPO图
层次图:描绘软件的层次结构,与层次方框图的形式相同,但是表现内容却不同。层次图的一个矩形框代表一个模块,方框间的联系表示调用关系而不是组成关系
层次图很适合于自顶向下设计软件的过程中使用
HIPO图:层次图+输入处理输出图
5.结构图
结构图是进行软件结构设计的另一个有力工具。结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。
在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。