软件总体设计的目标和任务:

总体设计阶段的基本目标就是回答“概括地说,系统应该如何实现?”这个问题。总体设计的另一项任务是设计软件的总体结构,即确定系统中的每个程序是由哪些模块组成的,每个模块的功能以及模块和模块之间的接口、调用关系等。软件结构的设计是以模块为基础的,以需求分析阶段得到的数据流图为依据来设计软件结构。

软件结构设计准则:

软件总体设计的任务是软件体系结构设计和软件模块设计

软件体系结构设计准则:

① 体系结构是对复杂事物的一种抽象。良好的体系结构是普通适用的,它能够描述各种风格的软件系统结构,可以高效地处理多种多样的个体需求。

② 体系结构在一定的时间内保持稳定。确保接口一致,既能确保某一体系结构配置描述内相关接口描述的一致,又能确保建立关联的两个构件接口描述的一致性。

③ 良好的体系结构意味着普通、高效和稳定。

软件模块设计准则:

1.降低模块之间的耦合性,提高模块的内聚性;

2.模块结构的深度、宽度、扇出和扇入应适当;

3.模块的作用范围应该在控制范围内;

4.模块接口设计要简单,以便降低复杂程度和冗余度;

5.设计功能可预测并能得到验证的模块;

6.适当划分模块规模,以保持其独立性。

1.通过模块分解或合并,降低耦合提高内聚

2.

深度: 软件结构中模块的层数,它表示控制的层数,在一定意义能粗略地反映系统的规模和复杂程度。

宽度: 同一层次上模块的最大个数。

扇出: 是一个模块直接调用的模块数目。经验证明,好的系统结构的平均扇出数一般是 3-4,不能超过 5-9。

扇入: 有多少个上级模块直接调用它。

一般设计的比较好的软件结构,顶层扇出高,中层扇出较少,底层模块有高扇入。

系统总体设计逻辑架构 系统总体设计框架_软件结构

3.

模块的作用范围: 指受该模块内一个判断影响的所有模块的集合.

模块的控制范围: 指模块本身以及其所有直接或者间接从属于它的模块集合.

在设计的好的软件结构中,所有受判断影响的模块都从属于作出判断的那个模块,最好局限于做出判定的那个模

块本身及它的直属下级模块。

4.模块接口复杂是软件发生错误的一个主要原因,应该仔细设计模块接口,使得信息传递简单并且和模块的功能

一致。

5.模块的功能应该能够预测,但也要防止模块功能过分局限。

功能可预测: 如果一个模块可以当作一个黑盒子,只要输入的数据相同就产生同样的输出,这个模块的功能就是

可以预测的。

6.经验表明,一个模块的规模不应过大,最好能写在一页纸内。通常规定 50-100 行语句,最多不超过 500 行。

过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,一般说来,分解后不应该降低模块独立

性。过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。

软件设计的概念和原理:

模块: 是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合。

模块化: 是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程, 模块化可以降低软件复杂度。

模块化的作用:

采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解;

模块化使软件容易测试和调试,因而有助于提高软件的可靠性;

模块化能够提高软件的可修改性;

模块化也有助于软件开发工程的组织管理。

模块最重要的特征有两个: 抽象 和 信息隐蔽

抽象: 是人类认识自然界中的复杂事物和复杂现象过程中使用的一种思维工具。现实世界中一定事物、状态或过

程之间总存在某些相似的或者共性的方面,把这些相似的方面集中或概括起来,暂时忽略它们之间的次要因素,

这就是抽象。

信息隐蔽: 应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来

说,是不能访问的。

局部化: 和信息隐蔽的概念密切相关,它是指把一些关系密切的软件元素物理地放的彼此靠近。显然,局部化有

助于实现信息隐藏。

模块的独立性是一个好的软件设计的关键。

模块的独立性要求: 每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。

模块的独立性可以从两个方面来度量:

耦合: 衡量不同模块彼此间相互依赖的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单。

内聚: 衡量一个模块内部各个元素之间彼此结合的紧密程度的度量。 内聚要高,每个模块完成一个相对独立的

特定子功能。

要求:低耦合,高内聚

在软件设计中应该追求尽可能松散耦合的系统。

可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解。

模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。

模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性

系统总体设计逻辑架构 系统总体设计框架_uml_02

无直接耦合即模块之间没有直接联系,不可能出现所有模块之间没有任何联系,尽量做到的是数据耦合,内容耦

合是最差的,模块的独立性最低。

偶然内聚即内部元素没有任何联系,内聚性最低,功能内聚的内聚性最高。

在总体设计阶段可能会用到以下几种图形工具:

软件结构图

层次图

HIPO 图

软件结构图(SC): 是软件系统的模块层次结构,用来表达软件的 组成模块及其调用关系

系统总体设计逻辑架构 系统总体设计框架_uml_03

软件结构图的主要内容有:

模块:用方框表示,方框中写上模块的名字,模块名最好能反映模块功能;

模块的调用关系:两个模块之间用单向箭头或直线连接起来表示它们的调用关系;

辅助符号:弧形箭头表示循环调用;菱形表示选择或者条件调用。

附加符号:

系统总体设计逻辑架构 系统总体设计框架_系统总体设计逻辑架构_04

层次图: 用来描绘软件的层次结构,很适合在自顶向下设计软件的过程中使用。

层次图和层次方框图的区别:

系统总体设计逻辑架构 系统总体设计框架_模块化_05

结构化设计方法 是一种把在 数据流图 映射为软 件结构图 ,信息流的类型决定了映射的方法。( 变换流 和 事务流 )

数据流图有两种类型(变换型和事物型)

变换型数据流图 基本呈线性形状的结构,由 输入 、 变换 、 输出 三部分组成,变换是系统地变换中心。

系统总体设计逻辑架构 系统总体设计框架_软件结构_06

系统总体设计逻辑架构 系统总体设计框架_系统总体设计逻辑架构_07