软件工程第4章总体设计.ppt

上传人:m**** 文档编号:570020875 上传时间:2024-08-01 格式:PPT 页数:72 大小:1.03MB
返回 下载 相关 举报
软件工程第4章总体设计.ppt_第1页
第1页 / 共72页
软件工程第4章总体设计.ppt_第2页
第2页 / 共72页
软件工程第4章总体设计.ppt_第3页
第3页 / 共72页
软件工程第4章总体设计.ppt_第4页
第4页 / 共72页
软件工程第4章总体设计.ppt_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《软件工程第4章总体设计.ppt》由会员分享,可在线阅读,更多相关《软件工程第4章总体设计.ppt(72页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 总体设计总体设计第第4章章 总体设计总体设计 可行性分析可行性分析可行性分析可行性分析 - - - - Why? Who?Why? Who?Why? Who?Why? Who? 需求分析需求分析需求分析需求分析 - - - - What?What?What?What? 设计设计设计设计 - - - - How do?How do?How do?How do? 总体设计总体设计总体设计总体设计 ( ( ( (概要设计概要设计概要设计概要设计) ) ) )确定软件的结构确定软件的结构确定软件的结构确定软件的结构以以以以及及及及 各组成成分各组成成分各组成成分各组成成分( ( ( (子

2、系统或模块子系统或模块子系统或模块子系统或模块) ) ) )之间的相互关系之间的相互关系之间的相互关系之间的相互关系 设计设计设计设计 详细设计确定模块内部的算法和数据结构,详细设计确定模块内部的算法和数据结构,详细设计确定模块内部的算法和数据结构,详细设计确定模块内部的算法和数据结构, 产生描述各模块程序过程的详细文档。产生描述各模块程序过程的详细文档。产生描述各模块程序过程的详细文档。产生描述各模块程序过程的详细文档。 总体设计的任务总体设计的任务划分出组成系统的物理元素划分出组成系统的物理元素程序、文件、程序、文件、数据库、人工过程和文档等,但是每个物数据库、人工过程和文档等,但是每个物

3、理元素仍然处于黑盒子级,这些黑盒子里理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。的具体内容将在以后仔细设计。设计软件的结构设计软件的结构,也就是要确定系统中每,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模个程序是由哪些模块组成的,以及这些模块相互间的关系。块相互间的关系。总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。4.1 4.1 设计过程设计过程总体设计过程通常由两个主要阶段组成:总体设计过程通常由两个主要阶段组成: - -

4、 系统设计阶段,确定系统的具体实现方案;系统设计阶段,确定系统的具体实现方案; - - 结构设计阶段,确定软件结构。结构设计阶段,确定软件结构。典型的总体设计过程包括下述9个步骤:1. 1. 设想供选择的方案设想供选择的方案 2. 2. 选取合理的方案选取合理的方案 3. 3. 推荐最佳方案推荐最佳方案 4. 4. 功能分解功能分解 5. 5. 设计软件结构设计软件结构 6. 6. 设计数据库设计数据库 7. 7. 制定测试计划制定测试计划 8. 8. 书写文档书写文档 9. 9. 审查和复审审查和复审总体设计所总体设计所书写的文档书写的文档(1) (1) (1) (1) 总体设计说明总体设计

5、说明总体设计说明总体设计说明 主要内容包括用系统流程图描绘的系统主要内容包括用系统流程图描绘的系统主要内容包括用系统流程图描绘的系统主要内容包括用系统流程图描绘的系统构成方案,组成系统的物理元素清单,成本构成方案,组成系统的物理元素清单,成本构成方案,组成系统的物理元素清单,成本构成方案,组成系统的物理元素清单,成本/ / / /效益分析;效益分析;效益分析;效益分析;对最佳方案的概括描述,精化的数据流图,用层次图或对最佳方案的概括描述,精化的数据流图,用层次图或对最佳方案的概括描述,精化的数据流图,用层次图或对最佳方案的概括描述,精化的数据流图,用层次图或结构图描绘的软件结构,用结构图描绘的

6、软件结构,用结构图描绘的软件结构,用结构图描绘的软件结构,用IPOIPOIPOIPO图或其他工具简要描述的图或其他工具简要描述的图或其他工具简要描述的图或其他工具简要描述的各个模块的算法,模块间的接口关系,以及需求、功能各个模块的算法,模块间的接口关系,以及需求、功能各个模块的算法,模块间的接口关系,以及需求、功能各个模块的算法,模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系等等。和模块三者之间的交叉参照关系等等。和模块三者之间的交叉参照关系等等。和模块三者之间的交叉参照关系等等。(2) (2) (2) (2) 用户手册用户手册用户手册用户手册 根据总体设计阶段的结果,修改更正在

7、需求根据总体设计阶段的结果,修改更正在需求根据总体设计阶段的结果,修改更正在需求根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。分析阶段产生的初步的用户手册。分析阶段产生的初步的用户手册。分析阶段产生的初步的用户手册。(3) (3) (3) (3) 测试计划测试计划测试计划测试计划 包括测试策略,测试方案,预期的测试结果,包括测试策略,测试方案,预期的测试结果,包括测试策略,测试方案,预期的测试结果,包括测试策略,测试方案,预期的测试结果,测试进度计划等等。测试进度计划等等。测试进度计划等等。测试进度计划等等。(4) (4) (4) (4) 详细的实现计划详细的实现计划详细

8、的实现计划详细的实现计划(5) (5) (5) (5) 数据库设计结果数据库设计结果数据库设计结果数据库设计结果概要设计说明书(概要设计说明书(GB856788GB856788)4.2 4.2 设计原理设计原理 模块化模块化 抽抽 象象 逐步求精逐步求精 信息隐藏和局部化信息隐藏和局部化 模块独立模块独立4.2.1 4.2.1 模块化模块化模块模块模块模块是由边界元素限定的相邻程序元素(例如,是由边界元素限定的相邻程序元素(例如,是由边界元素限定的相邻程序元素(例如,是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个数据说明,可执行的语句)的序列,而且有一个数据说

9、明,可执行的语句)的序列,而且有一个数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。总体标识符代表它。总体标识符代表它。总体标识符代表它。 - - - - 如:过程、函数、子程序、宏、对象等,都可作为模块。如:过程、函数、子程序、宏、对象等,都可作为模块。如:过程、函数、子程序、宏、对象等,都可作为模块。如:过程、函数、子程序、宏、对象等,都可作为模块。模块化模块化模块化模块化就是把程序划分成独立命名且可独立访问就是把程序划分成独立命名且可独立访问就是把程序划分成独立命名且可独立访问就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块的模块,每个模块完成一

10、个子功能,把这些模块的模块,每个模块完成一个子功能,把这些模块的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满集成起来构成一个整体,可以完成指定的功能满集成起来构成一个整体,可以完成指定的功能满集成起来构成一个整体,可以完成指定的功能满足用户的需求。足用户的需求。足用户的需求。足用户的需求。问题:模块该如何划分?问题:模块该如何划分?设:设:C(xC(x) )为为复杂程度函数复杂程度函数 E(xE(x) )为决定解决问题为决定解决问题x x所需的所需的 工作量工作量( (时间时间) )函数函数 对于两个问题对于两个问题对于两个问题对于两个问题P1P1P1P1

11、和和和和P2P2P2P2, 如果如果如果如果 C(P1)C(P2)C(P1)C(P2)C(P1)C(P2)C(P1)C(P2)则:则: E(P1)E(P2)E(P1)E(P2)E(P1)E(P2)E(P1)E(P2) 如果如果如果如果 C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)则:则: E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2) 这个不等式导致这个不等式导致这个不等式导致这个不

12、等式导致“各个击破各个击破各个击破各个击破”的的的的结论结论结论结论把复杂的问题分解成许多把复杂的问题分解成许多把复杂的问题分解成许多把复杂的问题分解成许多容易解决的小问题,原来的问题容易解决的小问题,原来的问题容易解决的小问题,原来的问题容易解决的小问题,原来的问题也就容易解决了。这就是模块化也就容易解决了。这就是模块化也就容易解决了。这就是模块化也就容易解决了。这就是模块化的根据。的根据。的根据。的根据。最小成本区M模块成本接口成本总成本软件开发工作量 模块数 4.2.2 4.2.2 抽象抽象 人类在认识复杂现象的过程中使用的最强有力的思维工具是人类在认识复杂现象的过程中使用的最强有力的思

13、维工具是人类在认识复杂现象的过程中使用的最强有力的思维工具是人类在认识复杂现象的过程中使用的最强有力的思维工具是抽抽抽抽象。象。象。象。 - - - - 就是抽出事物的就是抽出事物的就是抽出事物的就是抽出事物的本质特性(共性),本质特性(共性),本质特性(共性),本质特性(共性),而暂时不考虑它们的细节。而暂时不考虑它们的细节。而暂时不考虑它们的细节。而暂时不考虑它们的细节。 处理复杂系统的惟一有效的方法是用处理复杂系统的惟一有效的方法是用处理复杂系统的惟一有效的方法是用处理复杂系统的惟一有效的方法是用层次层次层次层次的方式构造和分析它。的方式构造和分析它。的方式构造和分析它。的方式构造和分析

14、它。 - - - - 在抽象的在抽象的在抽象的在抽象的最高层次使用问题环境的语言最高层次使用问题环境的语言最高层次使用问题环境的语言最高层次使用问题环境的语言,以概括的方式叙述问题的解,以概括的方式叙述问题的解,以概括的方式叙述问题的解,以概括的方式叙述问题的解法;在法;在法;在法;在较低抽象层次采用更过程化的方法较低抽象层次采用更过程化的方法较低抽象层次采用更过程化的方法较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现,把面向问题的术语和面向实现,把面向问题的术语和面向实现,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;最后在的术语结合起来叙述问题的解法;最后在的术语结合

15、起来叙述问题的解法;最后在的术语结合起来叙述问题的解法;最后在最低的抽象层次用可直接实现的最低的抽象层次用可直接实现的最低的抽象层次用可直接实现的最低的抽象层次用可直接实现的方式叙述问题的解法。方式叙述问题的解法。方式叙述问题的解法。方式叙述问题的解法。 软件工程过程的每一步都是对软件解法的抽象层次的一次精化。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。 在在在在可行性研究阶段可行性研究阶段可行性研究阶段可行性研究阶段,软件作为系统的一个完整部件;在,软件作为系统的一个完

16、整部件;在,软件作为系统的一个完整部件;在,软件作为系统的一个完整部件;在需求分析期间需求分析期间需求分析期间需求分析期间,软,软,软,软件解法是使用在问题环境内熟悉的方式描述的;当件解法是使用在问题环境内熟悉的方式描述的;当件解法是使用在问题环境内熟悉的方式描述的;当件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计由总体设计向详细设计由总体设计向详细设计由总体设计向详细设计过渡时过渡时过渡时过渡时,抽象的程度也就随之减少了;最后,抽象的程度也就随之减少了;最后,抽象的程度也就随之减少了;最后,抽象的程度也就随之减少了;最后,当源程序写出来以后当源程序写出来以后当源程序写出来以

17、后当源程序写出来以后,也就,也就,也就,也就达到了抽象的最低层。达到了抽象的最低层。达到了抽象的最低层。达到了抽象的最低层。4.2.3 4.2.3 逐步求精逐步求精逐步求精是人类解决复杂问题时采逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计技术(例如,规格说明技术,设计和实现技术)的基础。和实现技术)的基础。逐步求精定义为:逐步求精定义为:“为了能集中精为了能集中精力解决主要问题而尽量推迟对问题力解决主要问题而尽量推迟对问题细节的考虑。细节的考虑。” Magical Number Seven,Plus or Minus

18、Two,Some Limits on Our Capacity for Processing Information The Psychological Review,1956 G.A. Miller奇妙的数字奇妙的数字 7+2,人类,人类信息处理能力的限度信息处理能力的限度 逐步求精最初是由逐步求精最初是由逐步求精最初是由逐步求精最初是由NiklausNiklausNiklausNiklaus Wirth Wirth Wirth Wirth提出的一种自顶向下的设计提出的一种自顶向下的设计提出的一种自顶向下的设计提出的一种自顶向下的设计策略。策略。策略。策略。 他本人的概括说明如下:他本人的概

19、括说明如下: 我们对付复杂问题的最重要的办法是抽象,因此,对一个复杂我们对付复杂问题的最重要的办法是抽象,因此,对一个复杂我们对付复杂问题的最重要的办法是抽象,因此,对一个复杂我们对付复杂问题的最重要的办法是抽象,因此,对一个复杂的问题不应该立刻用计算机指令、数字和逻辑符号来表示,而的问题不应该立刻用计算机指令、数字和逻辑符号来表示,而的问题不应该立刻用计算机指令、数字和逻辑符号来表示,而的问题不应该立刻用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽象语句来表示,从而得出抽象程序。抽象程应该用较自然的抽象语句来表示,从而得出抽象程序。抽象程应该用较自然的抽象语句来表示,从而得出抽象程序

20、。抽象程应该用较自然的抽象语句来表示,从而得出抽象程序。抽象程序对抽象的数据进行某些特定的运算并用某些合适的记号(可序对抽象的数据进行某些特定的运算并用某些合适的记号(可序对抽象的数据进行某些特定的运算并用某些合适的记号(可序对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。对抽象程序做进一步的分解,并进入能是自然语言)来表示。对抽象程序做进一步的分解,并进入能是自然语言)来表示。对抽象程序做进一步的分解,并进入能是自然语言)来表示。对抽象程序做进一步的分解,并进入下一个抽象层次,这样的精细化过程一直进行下去,直到程序下一个抽象层次,这样的精细化过程一直进行下去,直到程

21、序下一个抽象层次,这样的精细化过程一直进行下去,直到程序下一个抽象层次,这样的精细化过程一直进行下去,直到程序能被计算机接受为止。这时的程序可能是用某种高级语言或机能被计算机接受为止。这时的程序可能是用某种高级语言或机能被计算机接受为止。这时的程序可能是用某种高级语言或机能被计算机接受为止。这时的程序可能是用某种高级语言或机器指令书写的。器指令书写的。器指令书写的。器指令书写的。抽象与求精是一对互补的概念。抽象与求精是一对互补的概念。抽象使得设计者能够说明过程和数据,同时抽象使得设计者能够说明过程和数据,同时 却忽略低层细节。事实上,可以把抽象看作却忽略低层细节。事实上,可以把抽象看作是一种通

22、过忽略多余的细节同时强调有关的是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。细节,而实现逐步求精的方法。求精则帮助设计者在设计过程中逐步揭示出求精则帮助设计者在设计过程中逐步揭示出低层细节。低层细节。这两个概念都有助于设计者在设计演化过程这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。中创造出完整的设计模型。4.2.4 4.2.4 信息隐藏和局部化信息隐藏和局部化 信息隐藏原理指出:设计和确定模块,使得一个模块内包信息隐藏原理指出:设计和确定模块,使得一个模块内包信息隐藏原理指出:设计和确定模块,使得一个模块内包信息隐藏原理指出:设计和确定模块,使得一个模块内

23、包含的信息含的信息含的信息含的信息( ( ( (过程和数据过程和数据过程和数据过程和数据) ) ) )对于不需要这些信息的模块来说,对于不需要这些信息的模块来说,对于不需要这些信息的模块来说,对于不需要这些信息的模块来说,是不能访问的。是不能访问的。是不能访问的。是不能访问的。 局部化的概念和信息隐藏概念是密切相关的。局部化的概念和信息隐藏概念是密切相关的。局部化的概念和信息隐藏概念是密切相关的。局部化的概念和信息隐藏概念是密切相关的。 所谓局部化:是指把一些关系密切的软件元素物理地放得所谓局部化:是指把一些关系密切的软件元素物理地放得所谓局部化:是指把一些关系密切的软件元素物理地放得所谓局部

24、化:是指把一些关系密切的软件元素物理地放得彼此靠近。彼此靠近。彼此靠近。彼此靠近。 - - - - 在模块中使用局部数据元素是局部化的一个例子。显然,局部化有在模块中使用局部数据元素是局部化的一个例子。显然,局部化有在模块中使用局部数据元素是局部化的一个例子。显然,局部化有在模块中使用局部数据元素是局部化的一个例子。显然,局部化有助于实现信息隐藏。助于实现信息隐藏。助于实现信息隐藏。助于实现信息隐藏。 如果在测试期间和以后的软件维护期间需要修改软件,那如果在测试期间和以后的软件维护期间需要修改软件,那如果在测试期间和以后的软件维护期间需要修改软件,那如果在测试期间和以后的软件维护期间需要修改软

25、件,那么使用信息隐藏原理作为模块化系统设计的标准就会带来么使用信息隐藏原理作为模块化系统设计的标准就会带来么使用信息隐藏原理作为模块化系统设计的标准就会带来么使用信息隐藏原理作为模块化系统设计的标准就会带来极大好处。极大好处。极大好处。极大好处。4.2.5 4.2.5 模块独立模块独立 模块的独立性模块的独立性是指软件系统中每个模块只是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。中其他模块的接口是简单的。耦合耦合耦合耦合 模块之间的模块之间的模块之间的模块之间的相对独立性相对独立性相对独立性相对独立性的度量的度

26、量的度量的度量 内聚内聚内聚内聚 模块功能强模块功能强模块功能强模块功能强度的度量度的度量度的度量度的度量 模块的独立程度可以由两个定性标准度量模块的独立程度可以由两个定性标准度量1. 耦合耦合 耦合性是程序结构中各个模块之间相互关联的度量耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。式以及那些信息通过接口。低低非直接非直接非直接非直接耦合耦合耦合耦合数据数据数据数据耦合耦合耦合耦合标记标记标记标记耦合耦合耦合耦合控制控制控制控制耦合耦合耦合耦合外部外部外部外部耦合耦合耦合耦合

27、公共公共公共公共耦合耦合耦合耦合内容内容内容内容耦合耦合耦合耦合 高高弱弱 强强耦合性耦合性模块独立性模块独立性(1) (1) 非非直接耦合直接耦合两个模块没有直接关系两个模块没有直接关系两个模块没有直接关系两个模块没有直接关系( ( ( (模块模块模块模块1 1 1 1和模块和模块和模块和模块2)2)2)2),模块独立性最强。模块独立性最强。模块独立性最强。模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 4(2) (2) 数据耦合数据耦合 一模块调用另一一模块调用另一模块时,被调用模块时,被调用模块的输入、输模块的输入、输出都是简单的数出都是简单的数据据( (若干参数若

28、干参数) )。 属松散耦合。属松散耦合。 开发票开发票计算水费计算水费单价单价数量数量金额金额(3) (3) 标记耦合标记耦合( (特征耦合特征耦合) ) 如两个模块通过传如两个模块通过传递递数据结构数据结构( (不是不是简单数据简单数据,而是记而是记录、数组等录、数组等) )加以加以联系联系,或都与一个或都与一个数据结构数据结构有关系有关系, , 则称这两个模块间则称这两个模块间存在标记偶合存在标记偶合。计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费 电费电费住户情况住户情况“住户情况住户情况”是一个数据结构是一个数据结构, ,图中图中模块都与此数据结构有关模块

29、都与此数据结构有关. .“计算水计算水费费”和和“计算电费计算电费”本无关本无关, ,由于引由于引用了此数据结构产生依赖关系用了此数据结构产生依赖关系, ,它们它们之间也是标记偶合之间也是标记偶合. .(4) (4) 控制耦合控制耦合 A 模块flagf1Bf2fn 如果一个模块通过传送开关、标志、名字如果一个模块通过传送开关、标志、名字 等控等控制信息,明显地控制选择另一模块的功能制信息,明显地控制选择另一模块的功能 就是就是控制耦合。控制耦合。(5) (5) 外部耦合外部耦合一组模块均与同一外部环境关联一组模块均与同一外部环境关联( (例例如如, I/O, I/O模块与特定的设备、格式和模

30、块与特定的设备、格式和通信协议相关联通信协议相关联), ),它们之间便存在外它们之间便存在外部耦合部耦合。外部偶合必不可少外部偶合必不可少, ,但这种模块数目但这种模块数目应尽量少应尽量少。(6) (6) 公共公共环境环境耦合耦合( (公共数据区耦合公共数据区耦合) ) 一组模块引用同一一组模块引用同一个公用数据区个公用数据区( (也称也称全局数据区、公共全局数据区、公共数据环境数据环境) )。 公共数据区指:公共数据区指: 全局数据结构全局数据结构 共享通讯区共享通讯区 内存公共覆盖区等内存公共覆盖区等 ABC公共数据区公共数据区 公共耦合存在的问题:公共耦合存在的问题: (1)软件可理解性

31、降低软件可理解性降低 (2)诊断错误困难诊断错误困难 (3)软件可维护性差,软件可维护性差, (4)软件可靠性差软件可靠性差(公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量慎用公共数据区和全程变量!(7) (7) 内容耦合内容耦合A B一模块直接一模块直接访问另一模访问另一模块的内部信块的内部信息息 ( (程序代程序代码或数据)码或数据) A B 模模块块代代码码重重叠叠Entry1 Entry2 多多入入口口模模块块不不正正常常转转入入另另一一模模块块最不好的耦合形式!最不好的耦合形式!以上给出了以上给出了 7 7种耦合类型,这只是从耦合的机制上所种

32、耦合类型,这只是从耦合的机制上所做的分类,按耦合的强弱程度的排列只是相对的关系。做的分类,按耦合的强弱程度的排列只是相对的关系。但它给设计人员在设计程序结构时提供了一决策准则。但它给设计人员在设计程序结构时提供了一决策准则。实际上,开始时两个模块之间的耦合不只是一种类型,实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员按照实际情而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。块的独立性。总之,耦合是影响软件复杂程度的一个重要因素。应总之,耦合是影响软件复杂程

33、度的一个重要因素。应该采取下述设计原则:该采取下述设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。公共环境耦合的范围,完全不用内容耦合。2. 2. 内内 聚聚 一个模块内部元素在功能上相互关联的强度一个模块内部元素在功能上相互关联的强度设计目标:高内聚,模块在软件过程中完成单一的任务设计目标:高内聚,模块在软件过程中完成单一的任务(1) (1) 功能内聚功能内聚 (Functional Cohesion)(Functional Cohesion)一个模块中各个部分都是一个模块中各个部分都是完成某一具体完

34、成某一具体功能功能必不可少的组成部分,或者说该模必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。则称该模块为功能内聚模块。 内聚性最强内聚性最强(2) (2) 信息内聚信息内聚(Informational Cohesion)(Informational Cohesion)这种模块完成多个功能,这种模块完成多个功能,这种模块完成多个功能,这种模块完成多个功能,各个功能都在同一数据结各个功能都在同一数据结各个功能都在同一数据结各个功能都在同一数据结构上

35、操作,每一项功能有构上操作,每一项功能有构上操作,每一项功能有构上操作,每一项功能有一个唯一的入口点。这个一个唯一的入口点。这个一个唯一的入口点。这个一个唯一的入口点。这个模块将根据不同的要求,模块将根据不同的要求,模块将根据不同的要求,模块将根据不同的要求,确定该执行哪一个功能。确定该执行哪一个功能。确定该执行哪一个功能。确定该执行哪一个功能。由于这个模块的所有功能由于这个模块的所有功能由于这个模块的所有功能由于这个模块的所有功能都是基于同一个数据结构都是基于同一个数据结构都是基于同一个数据结构都是基于同一个数据结构(符号表),因此,它是(符号表),因此,它是(符号表),因此,它是(符号表)

36、,因此,它是一个信息内聚的模块。一个信息内聚的模块。一个信息内聚的模块。一个信息内聚的模块。信息内聚模块可以看成是多个信息内聚模块可以看成是多个信息内聚模块可以看成是多个信息内聚模块可以看成是多个功能内聚模块的组合,并且达功能内聚模块的组合,并且达功能内聚模块的组合,并且达功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据到信息的隐蔽。即把某个数据到信息的隐蔽。即把某个数据到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个结构、资源或设备隐蔽在一个结构、资源或设备隐蔽在一个结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓模块内,不为别的模块所知晓模块内,不为别的模块所知晓模块内,不为别

37、的模块所知晓(3) (3) 通信内聚通信内聚(Communication Cohesion)(Communication Cohesion)如果一个模块内各功如果一个模块内各功如果一个模块内各功如果一个模块内各功能部分都使用了相同能部分都使用了相同能部分都使用了相同能部分都使用了相同的输入数据,或产生的输入数据,或产生的输入数据,或产生的输入数据,或产生了相同的输出数据,了相同的输出数据,了相同的输出数据,了相同的输出数据,则称之为通信内聚模则称之为通信内聚模则称之为通信内聚模则称之为通信内聚模块。通常,通信内聚块。通常,通信内聚块。通常,通信内聚块。通常,通信内聚模块是通过数据流图模块是通过

38、数据流图模块是通过数据流图模块是通过数据流图来定义的。来定义的。来定义的。来定义的。(4) (4) 过程内聚(过程内聚(Procedural CohesionProcedural Cohesion)模块内各处理成分相关,且必须以特定次序执行模块内各处理成分相关,且必须以特定次序执行读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查读入并审查成绩单成绩单统计并打印统计并打印成绩单成绩单(5) (5) 时间内聚(时间内聚(Classical CohesionClassical Cohesion) 时间内聚又称为经典内聚。这种模块大多时间内聚又称为经典内聚。这种模块大

39、多为多功能模块,但模块的各个功能的执行为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同与时间有关,通常要求所有功能必须在同一时间段内执行。一时间段内执行。 例如初始化模块和终止模块例如初始化模块和终止模块, ,系统结束模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块紧急故障处理模块等均是时间性聚合模块 。(6) (6) 逻辑内聚(逻辑内聚(Logical CohesionLogical Cohesion)把几种相关功能把几种相关功能(逻辑上相似的功能逻辑上相似的功能)组合组合在一模块内在一模块内,每次调用由传给模块的参数确每次调用由传给模块的参数确定执行哪种功能

40、。定执行哪种功能。SXYZWABCDSXYZW ABCD(7) (7) (7) (7) 巧合内聚(巧合内聚(巧合内聚(巧合内聚(Coincidental CohesionCoincidental CohesionCoincidental CohesionCoincidental Cohesion)当模块内各部分之当模块内各部分之当模块内各部分之当模块内各部分之间没有联系,或者间没有联系,或者间没有联系,或者间没有联系,或者即使有联系,这种即使有联系,这种即使有联系,这种即使有联系,这种联也很松散,则称联也很松散,则称联也很松散,则称联也很松散,则称这种模块为巧合内这种模块为巧合内这种模块为巧合

41、内这种模块为巧合内聚模块,它是内聚聚模块,它是内聚聚模块,它是内聚聚模块,它是内聚程度最低的模块。程度最低的模块。程度最低的模块。程度最低的模块。模块模块MM中的三个语句没有任何联系中的三个语句没有任何联系缺点:可理解性差,缺点:可理解性差, 可修改性差可修改性差内聚与耦合密切相关,同其它模块强耦合的内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合它模块间松散耦合。 设计目标:设计目标: 力争强内聚、弱耦合力争强内聚、弱耦合耦合、内聚与模块独立性关系:耦合、内聚与模块独立性关系:耦合与内聚都是模块独立性的定性标准

42、,都反映模耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。内聚则辅助耦合共同对模块独立性进行衡量。4.3 4.3 启发规则启发规则1.1.改进软件结构提高模块独立性。改进软件结构提高模块独立性。2.2.模块规模应该适中。模块规模应该适中。3.3.深度、宽度、扇出和扇入都应适当。深度、宽度、扇出和扇入都应适当。4.4.模块的作用域应该在控制域之内。模块的作用域应该在控制域之内。5. 5. 力争降低模块接口的复杂程度。力争降低模块接口的复杂程度。6. 6. 设计单入口单出口的

43、模块。设计单入口单出口的模块。7. 7. 模块功能应该可以预测。模块功能应该可以预测。4.4 4.4 软件设计过程软件设计过程1. 1. 1. 1. 制定规范制定规范制定规范制定规范 在进入软件开发阶段之初,在进入软件开发阶段之初,在进入软件开发阶段之初,在进入软件开发阶段之初,首先应为软件开发组制定首先应为软件开发组制定首先应为软件开发组制定首先应为软件开发组制定在设计时应该共同遵守的在设计时应该共同遵守的在设计时应该共同遵守的在设计时应该共同遵守的标准,以便协调组内各成标准,以便协调组内各成标准,以便协调组内各成标准,以便协调组内各成员的工作。包括员的工作。包括员的工作。包括员的工作。包括

44、: : : : - - 阅读和理解软件需求说明书,确阅读和理解软件需求说明书,确阅读和理解软件需求说明书,确阅读和理解软件需求说明书,确认用户要求能否实现,明确实现认用户要求能否实现,明确实现认用户要求能否实现,明确实现认用户要求能否实现,明确实现的条件,从而确定设计的目标,的条件,从而确定设计的目标,的条件,从而确定设计的目标,的条件,从而确定设计的目标,以及它们的优先顺序以及它们的优先顺序以及它们的优先顺序以及它们的优先顺序 - - 根据目标确定最合适的设计方法根据目标确定最合适的设计方法根据目标确定最合适的设计方法根据目标确定最合适的设计方法 - - 规定设计文档的编制标准规定设计文档的

45、编制标准规定设计文档的编制标准规定设计文档的编制标准 - - 规定编码的信息形式,与硬件,规定编码的信息形式,与硬件,规定编码的信息形式,与硬件,规定编码的信息形式,与硬件,操作系统的接口规约,命名规则操作系统的接口规约,命名规则操作系统的接口规约,命名规则操作系统的接口规约,命名规则2. 2. 2. 2. 软件系统结构的总体设计软件系统结构的总体设计软件系统结构的总体设计软件系统结构的总体设计 基于功能层次结构建立系统基于功能层次结构建立系统基于功能层次结构建立系统基于功能层次结构建立系统 - - - - 采用某种设计方法,将系统按采用某种设计方法,将系统按采用某种设计方法,将系统按采用某种

46、设计方法,将系统按功能划分成模块的层次结构功能划分成模块的层次结构功能划分成模块的层次结构功能划分成模块的层次结构 - - - - 确定每个模块的功能确定每个模块的功能确定每个模块的功能确定每个模块的功能 - - - - 建立与已确定的软件需求的对建立与已确定的软件需求的对建立与已确定的软件需求的对建立与已确定的软件需求的对应关系应关系应关系应关系 - - - - 确定模块间的调用关系确定模块间的调用关系确定模块间的调用关系确定模块间的调用关系 - - - - 确定模块间的接口确定模块间的接口确定模块间的接口确定模块间的接口 - - - - 评估模块划分的质量评估模块划分的质量评估模块划分的质

47、量评估模块划分的质量4.4 4.4 软件设计过程软件设计过程3. 3. 3. 3. 处理方式设计处理方式设计处理方式设计处理方式设计 确定为实现系统的功能需确定为实现系统的功能需确定为实现系统的功能需确定为实现系统的功能需求所必需的算法,评估算求所必需的算法,评估算求所必需的算法,评估算求所必需的算法,评估算法的性能法的性能法的性能法的性能 确定为满足系统的性能需确定为满足系统的性能需确定为满足系统的性能需确定为满足系统的性能需求所必需的算法和模块间求所必需的算法和模块间求所必需的算法和模块间求所必需的算法和模块间的控制方式的控制方式的控制方式的控制方式 周转时间周转时间周转时间周转时间 响应

48、时间响应时间响应时间响应时间 吞吐量吞吐量吞吐量吞吐量 精度精度精度精度 确定外部信号的接收发送确定外部信号的接收发送确定外部信号的接收发送确定外部信号的接收发送形式形式形式形式4. 4. 4. 4. 数据结构设计数据结构设计数据结构设计数据结构设计 确定软件涉及的文件系统的确定软件涉及的文件系统的确定软件涉及的文件系统的确定软件涉及的文件系统的结构以及数据库的模式、子结构以及数据库的模式、子结构以及数据库的模式、子结构以及数据库的模式、子模式,进行数据完整性和安模式,进行数据完整性和安模式,进行数据完整性和安模式,进行数据完整性和安全性的设计全性的设计全性的设计全性的设计 确定输入,输出文件

49、的详细确定输入,输出文件的详细确定输入,输出文件的详细确定输入,输出文件的详细的数据结构的数据结构的数据结构的数据结构 结合算法设计,确定算法所结合算法设计,确定算法所结合算法设计,确定算法所结合算法设计,确定算法所必需的逻辑数据结构及其操必需的逻辑数据结构及其操必需的逻辑数据结构及其操必需的逻辑数据结构及其操作作作作 确定对逻辑数据结构所必需确定对逻辑数据结构所必需确定对逻辑数据结构所必需确定对逻辑数据结构所必需的那些操作的程序模块的那些操作的程序模块的那些操作的程序模块的那些操作的程序模块( ( ( (软件软件软件软件包包包包) ) ) )4.4 4.4 软件设计过程软件设计过程4. 4.

50、 4. 4. 数据结构设计(续)数据结构设计(续)数据结构设计(续)数据结构设计(续) 限制和确定各个数据设计限制和确定各个数据设计限制和确定各个数据设计限制和确定各个数据设计决策的影响范围决策的影响范围决策的影响范围决策的影响范围 若需要与操作系统或调度若需要与操作系统或调度若需要与操作系统或调度若需要与操作系统或调度程序接口所必须的控制表程序接口所必须的控制表程序接口所必须的控制表程序接口所必须的控制表等数据时,确定其详细的等数据时,确定其详细的等数据时,确定其详细的等数据时,确定其详细的数据结构和使用规则数据结构和使用规则数据结构和使用规则数据结构和使用规则 数据的保护性设计数据的保护性

51、设计数据的保护性设计数据的保护性设计防卫性设计:在软件设防卫性设计:在软件设防卫性设计:在软件设防卫性设计:在软件设计中就插入自动检错,计中就插入自动检错,计中就插入自动检错,计中就插入自动检错,报错和纠错的功能报错和纠错的功能报错和纠错的功能报错和纠错的功能 一致性设计:一致性设计:一致性设计:一致性设计:保证软件运行过程中所使用保证软件运行过程中所使用保证软件运行过程中所使用保证软件运行过程中所使用的数据的类型和取值范围不的数据的类型和取值范围不的数据的类型和取值范围不的数据的类型和取值范围不变变变变在并发处理过程中使用封锁在并发处理过程中使用封锁在并发处理过程中使用封锁在并发处理过程中使

52、用封锁和解除封锁机制保持数据不和解除封锁机制保持数据不和解除封锁机制保持数据不和解除封锁机制保持数据不被破坏被破坏被破坏被破坏 冗余性设计:针对同一问题,冗余性设计:针对同一问题,冗余性设计:针对同一问题,冗余性设计:针对同一问题,由两个开发者采用不同的程序由两个开发者采用不同的程序由两个开发者采用不同的程序由两个开发者采用不同的程序设计风格不同的算法设计软件,设计风格不同的算法设计软件,设计风格不同的算法设计软件,设计风格不同的算法设计软件,当两者运行结果之差不在允许当两者运行结果之差不在允许当两者运行结果之差不在允许当两者运行结果之差不在允许范围内时,利用检错系统予以范围内时,利用检错系统

53、予以范围内时,利用检错系统予以范围内时,利用检错系统予以纠正,或使用表决技术决定一纠正,或使用表决技术决定一纠正,或使用表决技术决定一纠正,或使用表决技术决定一个正确结果。个正确结果。个正确结果。个正确结果。4.4 4.4 软件设计过程软件设计过程5.5.5.5.可靠性设计可靠性设计可靠性设计可靠性设计 可靠性设计也叫做质量设可靠性设计也叫做质量设可靠性设计也叫做质量设可靠性设计也叫做质量设计计计计 在运行过程中,为了适应在运行过程中,为了适应在运行过程中,为了适应在运行过程中,为了适应环境的变化和用户新的要环境的变化和用户新的要环境的变化和用户新的要环境的变化和用户新的要求,需经常对软件进行

54、改求,需经常对软件进行改求,需经常对软件进行改求,需经常对软件进行改造和修正。在软件开发的造和修正。在软件开发的造和修正。在软件开发的造和修正。在软件开发的一开始就要确定软件可靠一开始就要确定软件可靠一开始就要确定软件可靠一开始就要确定软件可靠性和其它质量指标,考虑性和其它质量指标,考虑性和其它质量指标,考虑性和其它质量指标,考虑相应措施,以使得软件易相应措施,以使得软件易相应措施,以使得软件易相应措施,以使得软件易于修改和易于维护。于修改和易于维护。于修改和易于维护。于修改和易于维护。6.6.6.6.编写概要设计阶段的文档编写概要设计阶段的文档编写概要设计阶段的文档编写概要设计阶段的文档 概

55、要设计阶段完成时应编写概要设计阶段完成时应编写概要设计阶段完成时应编写概要设计阶段完成时应编写以下文档:以下文档:以下文档:以下文档: 概要设计说明书概要设计说明书概要设计说明书概要设计说明书 数据库设计说明书数据库设计说明书数据库设计说明书数据库设计说明书 用户手册用户手册用户手册用户手册 制定初步的测试计划制定初步的测试计划制定初步的测试计划制定初步的测试计划4.4 4.4 软件设计过程软件设计过程7.7.7.7.概要设计评审概要设计评审概要设计评审概要设计评审 可追溯性可追溯性可追溯性可追溯性:确认该设计是否复盖:确认该设计是否复盖:确认该设计是否复盖:确认该设计是否复盖了所有已确定的软

56、件需求,软件了所有已确定的软件需求,软件了所有已确定的软件需求,软件了所有已确定的软件需求,软件每一成份是否可追溯到某一项需每一成份是否可追溯到某一项需每一成份是否可追溯到某一项需每一成份是否可追溯到某一项需求求求求 接口接口接口接口:确认该软件的内部接口与:确认该软件的内部接口与:确认该软件的内部接口与:确认该软件的内部接口与外部接口是否已经明确定义。模外部接口是否已经明确定义。模外部接口是否已经明确定义。模外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要块是否满足高内聚和低耦合的要块是否满足高内聚和低耦合的要块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制求。模块作用范围是

57、否在其控制求。模块作用范围是否在其控制求。模块作用范围是否在其控制范围之内范围之内范围之内范围之内 风险风险风险风险:确认该设计在现有技术条:确认该设计在现有技术条:确认该设计在现有技术条:确认该设计在现有技术条件下和预算范围内是否能按时实件下和预算范围内是否能按时实件下和预算范围内是否能按时实件下和预算范围内是否能按时实现现现现 实用性实用性实用性实用性:确认该设计对于需求的:确认该设计对于需求的:确认该设计对于需求的:确认该设计对于需求的解决方案是否实用解决方案是否实用解决方案是否实用解决方案是否实用 技术清晰度技术清晰度技术清晰度技术清晰度:确认该设计是否以一:确认该设计是否以一:确认该

58、设计是否以一:确认该设计是否以一种易于翻译成代码的形式表达种易于翻译成代码的形式表达种易于翻译成代码的形式表达种易于翻译成代码的形式表达 可维护性可维护性可维护性可维护性:确认该设计是否考虑了:确认该设计是否考虑了:确认该设计是否考虑了:确认该设计是否考虑了方便未来的维护方便未来的维护方便未来的维护方便未来的维护 质量质量质量质量:确认该设计是否表现出良好:确认该设计是否表现出良好:确认该设计是否表现出良好:确认该设计是否表现出良好的质量特征的质量特征的质量特征的质量特征 各种选择方案各种选择方案各种选择方案各种选择方案:看是否考虑过其它:看是否考虑过其它:看是否考虑过其它:看是否考虑过其它方

59、案,比较各种选择方案的标准是方案,比较各种选择方案的标准是方案,比较各种选择方案的标准是方案,比较各种选择方案的标准是什么什么什么什么 限制限制限制限制:评估对该软件的限制是否现:评估对该软件的限制是否现:评估对该软件的限制是否现:评估对该软件的限制是否现实,是否与需求一致实,是否与需求一致实,是否与需求一致实,是否与需求一致 其它具体问题其它具体问题其它具体问题其它具体问题:对于文档、可测试:对于文档、可测试:对于文档、可测试:对于文档、可测试性、设计过程等进行评估性、设计过程等进行评估性、设计过程等进行评估性、设计过程等进行评估5.5 5.5 描绘软件结构的图形工具描绘软件结构的图形工具1

60、 1 1 1、层次图和、层次图和、层次图和、层次图和HIPOHIPOHIPOHIPO图图图图 IBM IBM IBM IBM公司发明的公司发明的公司发明的公司发明的HIPOHIPOHIPOHIPO图:图:图:图: 层次图层次图层次图层次图 + + + + 输入输入输入输入 / / / / 处理处理处理处理 / / / /输出图输出图输出图输出图 ( ( ( (H H H H图图图图) () () () (IPOIPOIPOIPO图图图图) ) ) ) ( ( ( (HiberarchyHiberarchyHiberarchyHiberarchy Input Process Output) In

61、put Process Output) Input Process Output) Input Process Output)正文加工系统的层次图正文加工系统的层次图2 2、结构图(、结构图(SC SC - - Structure ChartStructure Chart) YourdonYourdon提出的结构图是进行软件结提出的结构图是进行软件结构设计的另一个有力工具。结构图构设计的另一个有力工具。结构图和层次图类似,也是描绘软件结构和层次图类似,也是描绘软件结构的图形工具。的图形工具。结构图反映程序中模块之间的层次结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号调用关系和联系

62、:它以特定的符号表示模块、模块间的调用关系和模表示模块、模块间的调用关系和模块间信息的传递。块间信息的传递。 模块:模块用矩形框表示,并用模模块:模块用矩形框表示,并用模块的名字标记它。块的名字标记它。 模块的调用关系和接口:模块之间用单向模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块箭头联结,箭头从调用模块指向被调用模块 模块间的信息传递:模块间的信息传递:模块间的信息传递:模块间的信息传递:当一个模块调用另一个当一个模块调用另一个当一个模块调用另一个当一个模块调用另一个模块时,调用模块把数模块时,调用模块把数模块时,调用模块把数模块时,调用模块把数据或控制信息传

63、送给被据或控制信息传送给被据或控制信息传送给被据或控制信息传送给被调用模块,以使被调用调用模块,以使被调用调用模块,以使被调用调用模块,以使被调用模块能够运行。而被调模块能够运行。而被调模块能够运行。而被调模块能够运行。而被调用模块在执行过程中又用模块在执行过程中又用模块在执行过程中又用模块在执行过程中又把它产生的数据或控制把它产生的数据或控制把它产生的数据或控制把它产生的数据或控制信息回送给调用模块。信息回送给调用模块。信息回送给调用模块。信息回送给调用模块。 在模块在模块A A的箭头尾部标以一个菱形符号,的箭头尾部标以一个菱形符号,表示模块表示模块A A有条件地调用另一个模块有条件地调用另

64、一个模块B B。当当一个在调用箭头尾部标以一个弧形符号,一个在调用箭头尾部标以一个弧形符号,表示模块表示模块A A反复调用模块反复调用模块C C和模块和模块D D。程序的系统结构图程序的系统结构图4.6 4.6 面向数据流的设计方法面向数据流的设计方法- - - - 结构化设计(结构化设计(结构化设计(结构化设计(SD - SD - SD - SD - Structured DesignStructured Design)面向数据流的设计方法的目标是给出设计软件结构面向数据流的设计方法的目标是给出设计软件结构面向数据流的设计方法的目标是给出设计软件结构面向数据流的设计方法的目标是给出设计软件结

65、构的一个系统化的途径。的一个系统化的途径。的一个系统化的途径。的一个系统化的途径。面向数据流的设计要解决的任务,就是在需求分析面向数据流的设计要解决的任务,就是在需求分析的基础上,将表示系统逻辑模型的的基础上,将表示系统逻辑模型的DFDDFD图映射图映射(MappingMapping)成软件系统结构的初始设计描述。成软件系统结构的初始设计描述。目标系统的DFD SD目标系统的SC结构化设计方法(结构化设计方法(SDSD)1)1)1)1)首先研究、分析和审查首先研究、分析和审查首先研究、分析和审查首先研究、分析和审查数据流图。数据流图。数据流图。数据流图。 从软件的从软件的从软件的从软件的需求规

66、格说明中弄清数需求规格说明中弄清数需求规格说明中弄清数需求规格说明中弄清数据流加工的过程,对于据流加工的过程,对于据流加工的过程,对于据流加工的过程,对于发现的问题及时解决。发现的问题及时解决。发现的问题及时解决。发现的问题及时解决。2)2)2)2)然后根据数据流图决定然后根据数据流图决定然后根据数据流图决定然后根据数据流图决定问题的类型。数据处理问题的类型。数据处理问题的类型。数据处理问题的类型。数据处理问题典型的类型有两种:问题典型的类型有两种:问题典型的类型有两种:问题典型的类型有两种:变换型和事务型变换型和事务型变换型和事务型变换型和事务型。针对。针对。针对。针对两种不同的类型分别进两

67、种不同的类型分别进两种不同的类型分别进两种不同的类型分别进行分析处理。行分析处理。行分析处理。行分析处理。3)3)3)3)由数据流图推导出系统由数据流图推导出系统由数据流图推导出系统由数据流图推导出系统的初始结构图。的初始结构图。的初始结构图。的初始结构图。4)4)4)4)利用一些启发式原则来利用一些启发式原则来利用一些启发式原则来利用一些启发式原则来改进系统的初始结构图,改进系统的初始结构图,改进系统的初始结构图,改进系统的初始结构图,直到得到符合要求的结直到得到符合要求的结直到得到符合要求的结直到得到符合要求的结构图为止。构图为止。构图为止。构图为止。5)5)5)5)修改和补充数据词典修改

68、和补充数据词典修改和补充数据词典修改和补充数据词典6)6)6)6)制定测试计划。制定测试计划。制定测试计划。制定测试计划。在系统结构图中的模块在系统结构图中的模块 传入模块传入模块传入模块传入模块 从下属模块取得从下属模块取得从下属模块取得从下属模块取得数据,经过某些处理,再将数据,经过某些处理,再将数据,经过某些处理,再将数据,经过某些处理,再将其传送给上级模块。它传送其传送给上级模块。它传送其传送给上级模块。它传送其传送给上级模块。它传送的数据流叫做逻辑输入数据的数据流叫做逻辑输入数据的数据流叫做逻辑输入数据的数据流叫做逻辑输入数据流。流。流。流。 传出模块传出模块传出模块传出模块 从上级

69、模块获得从上级模块获得从上级模块获得从上级模块获得数据,进行某些处理,再将数据,进行某些处理,再将数据,进行某些处理,再将数据,进行某些处理,再将其传送给下属模块。它传送其传送给下属模块。它传送其传送给下属模块。它传送其传送给下属模块。它传送的数据流叫做逻辑输出数据的数据流叫做逻辑输出数据的数据流叫做逻辑输出数据的数据流叫做逻辑输出数据流。流。流。流。 变换模块变换模块变换模块变换模块 它从上级模块它从上级模块它从上级模块它从上级模块取得数据,进行特定的处理,取得数据,进行特定的处理,取得数据,进行特定的处理,取得数据,进行特定的处理,转换成其它形式,再传送回转换成其它形式,再传送回转换成其它

70、形式,再传送回转换成其它形式,再传送回上级模块。它加工的数据流上级模块。它加工的数据流上级模块。它加工的数据流上级模块。它加工的数据流叫做变换数据流。叫做变换数据流。叫做变换数据流。叫做变换数据流。 协调模块协调模块协调模块协调模块 对所有下属模对所有下属模对所有下属模对所有下属模块进行协调和管理的模块。块进行协调和管理的模块。块进行协调和管理的模块。块进行协调和管理的模块。变换型系统结构图变换型系统结构图变换型数据处理问题的工作过程大致分变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出为三步,即取得数据,变换数据和给出数据。数据。相应于取得数据、变换数据、给出数据,相应于

71、取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和变换型系统结构图由输入、中心变换和输出等三部分组成。输出等三部分组成。事务型系统结构图事务型系统结构图它接受一项事务,它接受一项事务,根据事务处理根据事务处理的特点的特点和性质,和性质,选择分派选择分派一个适当的处理单元,一个适当的处理单元,然后给出结果。然后给出结果。在事务型系统结构图中,在事务型系统结构图中,事务中心事务中心模块模块按所接受的事务的类型,选择某一事务按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操每个事务处理模块可能要调用若

72、干个操作模块,而操作模块又可能调用若干个作模块,而操作模块又可能调用若干个细节模块。细节模块。变换分析变换分析变换分析方法由以下四步组成:变换分析方法由以下四步组成:1 1) 重画数据流图;重画数据流图;2 2) 区分有效区分有效( (逻辑逻辑) )输入、有效输入、有效( (逻辑逻辑) )输出和中心变换部分;输出和中心变换部分;3 3) 进行一级分解,设计上层模块;进行一级分解,设计上层模块;4 4) 进行二级分解,设计输入、输出和进行二级分解,设计输入、输出和中心变换部分的中、下层模块。中心变换部分的中、下层模块。(1)(1)(1)(1)在在 DFDDFD 图上标出逻辑输入、逻辑输出和变换中

73、心的分界图上标出逻辑输入、逻辑输出和变换中心的分界A Ae eB BaC CbD Dc cE EdP PQQR Rwwu uv vwwu uvrp变换中心变换中心c,e 逻逻辑输入辑输入w,u 逻逻辑输出辑输出- 具有变换型数据流具有变换型数据流图图(2) (2) (2) (2) 完成第一级分解完成第一级分解A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VMcMAMTMEC,eC,eU,wU,w变换中心变换中心 顶顶 层层第一层第一层 第一级分解后的第一级分解后的 SC 图(含协调、传入、变换、传出模块)图(含协调、传入、变换、传出模块)第一级分解后

74、的 SC 图(另一种画法)McMA1ME1C eU MA2QPRME2e c,p pr r w,uwA Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV V变换中心变换中心MA对逻辑输入的分解CEBADabdecA Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV V变换中心变换中心ME对输出的分解WUVvuwMTQPR eC,prU,w对变换中心加工的分解 prw,u(3) (3) 完成第二级分解MACBAEDMTQPR从变换分析导出的初始 SC 图MEWUVMCc, eW,uW,uC,e(4) (4) (4) (4)

75、获得完整的获得完整的 SCSCSCSC 图图 在选择模块设计的次序在选择模块设计的次序在选择模块设计的次序在选择模块设计的次序时,必须时,必须时,必须时,必须对一个模块的全对一个模块的全对一个模块的全对一个模块的全部直接下属模块都设计完部直接下属模块都设计完部直接下属模块都设计完部直接下属模块都设计完成成成成之后,才能转向另一个之后,才能转向另一个之后,才能转向另一个之后,才能转向另一个模块的下层模块的设计。模块的下层模块的设计。模块的下层模块的设计。模块的下层模块的设计。 在设计下层模块时,应在设计下层模块时,应在设计下层模块时,应在设计下层模块时,应考虑模块的考虑模块的考虑模块的考虑模块的

76、耦合和内聚耦合和内聚耦合和内聚耦合和内聚问问问问题,以提高初始结构图的题,以提高初始结构图的题,以提高初始结构图的题,以提高初始结构图的质量。质量。质量。质量。运用变换分析方法建立系统的运用变换分析方法建立系统的SCSC时需注意以下几点:时需注意以下几点: 使用使用使用使用“ “黑箱黑箱黑箱黑箱” ”技术技术技术技术: : : : 在在在在设计当前模块时,设计当前模块时,设计当前模块时,设计当前模块时,先把这先把这先把这先把这个模块的所有下层模块定个模块的所有下层模块定个模块的所有下层模块定个模块的所有下层模块定义成义成义成义成“ “黑箱黑箱黑箱黑箱” ”,在设计中在设计中在设计中在设计中利用

77、它们时,暂时不考虑利用它们时,暂时不考虑利用它们时,暂时不考虑利用它们时,暂时不考虑其内部结构和实现。在这其内部结构和实现。在这其内部结构和实现。在这其内部结构和实现。在这一步定义好的一步定义好的一步定义好的一步定义好的“ “黑箱黑箱黑箱黑箱” ”,在下一步就可以对它们进在下一步就可以对它们进在下一步就可以对它们进在下一步就可以对它们进行设计和加工。这样,又行设计和加工。这样,又行设计和加工。这样,又行设计和加工。这样,又会导致更多的会导致更多的会导致更多的会导致更多的“ “黑箱黑箱黑箱黑箱” ”。最后,全部最后,全部最后,全部最后,全部“ “黑箱黑箱黑箱黑箱” ”的内的内的内的内容和结构应完

78、全被确定。容和结构应完全被确定。容和结构应完全被确定。容和结构应完全被确定。 在模块划分时,一个模块的在模块划分时,一个模块的在模块划分时,一个模块的在模块划分时,一个模块的直接下属模块直接下属模块直接下属模块直接下属模块一般在一般在一般在一般在5 5 5 5个左右个左右个左右个左右。如果直接下属模块超过如果直接下属模块超过如果直接下属模块超过如果直接下属模块超过10101010个,个,个,个,可设立中间层次。可设立中间层次。可设立中间层次。可设立中间层次。 如果出现了以下情况,就停如果出现了以下情况,就停如果出现了以下情况,就停如果出现了以下情况,就停止模块的功能分解:止模块的功能分解:止模

79、块的功能分解:止模块的功能分解: 当模块不能再细分为明显的子任当模块不能再细分为明显的子任当模块不能再细分为明显的子任当模块不能再细分为明显的子任务时;务时;务时;务时;当分解成用户提供的模块或程序当分解成用户提供的模块或程序当分解成用户提供的模块或程序当分解成用户提供的模块或程序库的子程序时;库的子程序时;库的子程序时;库的子程序时;当模块的界面是输入输出设备当模块的界面是输入输出设备当模块的界面是输入输出设备当模块的界面是输入输出设备传送的信息时;传送的信息时;传送的信息时;传送的信息时;当模块不宜再分解得过小时。当模块不宜再分解得过小时。当模块不宜再分解得过小时。当模块不宜再分解得过小时

80、。运用变换分析方法建立系统的运用变换分析方法建立系统的SCSC时需注意以下几点:时需注意以下几点:事务分析事务分析- - 是将具有是将具有事务型事务型的的DFD图导出图导出SC图图I IA AL LMMN NOOB BC CD DE EF FGGH H事务中心事务中心事务源事务源I IA AL LMMN NOOB BC CD DE EF FGGH H主模块给出H取得ALMNA GHBECF D变换分析是软件系统结构设计的主要方法。变换分析是软件系统结构设计的主要方法。变换分析是软件系统结构设计的主要方法。变换分析是软件系统结构设计的主要方法。 一般,一个大型的软件系统是变换型结构一般,一个大型

81、的软件系统是变换型结构一般,一个大型的软件系统是变换型结构一般,一个大型的软件系统是变换型结构和事务型结构的和事务型结构的和事务型结构的和事务型结构的混合结构混合结构混合结构混合结构。所以,我们通常。所以,我们通常。所以,我们通常。所以,我们通常利用以变换分析为主,事务分析为辅的方式利用以变换分析为主,事务分析为辅的方式利用以变换分析为主,事务分析为辅的方式利用以变换分析为主,事务分析为辅的方式进行软件结构设计。进行软件结构设计。进行软件结构设计。进行软件结构设计。 设计的后处理设计的后处理为每一个模块写一份处理说明为每一个模块写一份处理说明为每一个模块提供一份接口说明为每一个模块提供一份接口说明确定全局数据结构和局部数据结构确定全局数据结构和局部数据结构指出所有的设计约束和限制指出所有的设计约束和限制进行概要设计的评审进行概要设计的评审进行设计的优化进行设计的优化( (如果需要和可能的话如果需要和可能的话) )数据设计及文件设计数据设计及文件设计 数据设计的原则数据设计的原则 文件设计文件设计设计实例:设计实例: 教材教材P96 P102P96 P102作业:作业:1 1):习题):习题5 15 1、2 2、4 4、5 5; 2 2):对自选项目进行总体设计。):对自选项目进行总体设计。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号