软件工程第5章

上传人:子 文档编号:46841904 上传时间:2018-06-28 格式:PDF 页数:15 大小:411.15KB
返回 下载 相关 举报
软件工程第5章_第1页
第1页 / 共15页
软件工程第5章_第2页
第2页 / 共15页
软件工程第5章_第3页
第3页 / 共15页
软件工程第5章_第4页
第4页 / 共15页
软件工程第5章_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《软件工程第5章》由会员分享,可在线阅读,更多相关《软件工程第5章(15页珍藏版)》请在金锄头文库上搜索。

1、西南交通大学西南交通大学软件工程软件工程第五章第五章第第1 1页页第第5 5章章 软件设计软件设计5.1 5.1 软件设计中的基本概念和原理软件设计中的基本概念和原理5.2 5.2 体系结构设计概述体系结构设计概述5.4 5.4 详细设计概述详细设计概述5.3 5.3 面向数据流的体系结构设计方法面向数据流的体系结构设计方法5.5 5.5 面向数据流的详细设计方法面向数据流的详细设计方法5.6 5.6 面向数据结构的设计方法面向数据结构的设计方法西南交通大学西南交通大学软件工程软件工程第五章第五章第第2 2页页软件设计的主要任务软件设计的主要任务软件设计基本原理软件设计基本原理 实现系统逻辑模

2、型向物理模型的转换,解决“实现系统逻辑模型向物理模型的转换,解决“系系统如何做统如何做”的问题。”的问题。 体系结构设计阶段体系结构设计阶段 详细设计阶段详细设计阶段软件设计主要成果:软件设计主要成果:软件设计的两个阶段:软件设计的两个阶段: 软件设计说明书软件设计说明书西南交通大学西南交通大学软件工程软件工程第五章第五章第第3 3页页模块是指具有相对独立性的,由数据说明、执行语句等模块是指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。程序对象构成的集合。模块化模块化在高级语言中,模块具体表现为函数、子程序、过程等。在高级语言中,模块具体表现为函数、子程序、过程等。模块的四个特征

3、:模块的四个特征: 输入输入/输出(接口):用于实现模块与其他模块间的输出(接口):用于实现模块与其他模块间的 数据传送,即向模块传入所需的原始数据及从模块传出数据传送,即向模块传入所需的原始数据及从模块传出 得到的结果数据。得到的结果数据。 功能:模块所完成的工作。功能:模块所完成的工作。 内部数据:仅能在模块内部使用的局部量。内部数据:仅能在模块内部使用的局部量。 程序代码:描述实现模块功能的具体方法和步骤。程序代码:描述实现模块功能的具体方法和步骤。西南交通大学西南交通大学软件工程软件工程第五章第五章第第4 4页页模块化指将整个程序划分为若干模块,每个模块用于实现模块化指将整个程序划分为

4、若干模块,每个模块用于实现一个特定功能。一个特定功能。问题复杂性、开发工作量和模块数之间的关系推理:问题复杂性、开发工作量和模块数之间的关系推理:模块化模块化 C(x):问题:问题x所对应的复杂度函数所对应的复杂度函数 E(x):解决问题:解决问题x所需要的工作量函数所需要的工作量函数 两个问题两个问题P1和和P2 一个有趣的规律:解决多个问题复合而成的大问题的复杂度大一个有趣的规律:解决多个问题复合而成的大问题的复杂度大 于单独解决各问题的复杂度之和。即:于单独解决各问题的复杂度之和。即:C(P1+P2) C(P1)+C(P2)C(P1+P2) C(P1)+C(P2) 即将复杂问题分解成若干

5、小问题,各个击破,所需的工作量小即将复杂问题分解成若干小问题,各个击破,所需的工作量小 于直接解决复杂问题所需的工作量。即:于直接解决复杂问题所需的工作量。即:E(P1+P2) E(P1)+E(P2)E(P1+P2) E(P1)+E(P2)设:设:若:若: C(P1) C(P2)则:则: E(P1) E(P2)西南交通大学西南交通大学软件工程软件工程第五章第五章第第5 5页页模块化可以降低解决问题的复杂度,从而降低软件开模块化可以降低解决问题的复杂度,从而降低软件开发的工作量。但同时也带来了发的工作量。但同时也带来了缺点缺点。 增加了设计模块接口的工作量。增加了设计模块接口的工作量。模块化的优

6、点模块化的优点 降低软件开发的难度降低软件开发的难度 使程序结构清晰,增加易读性和易修改性使程序结构清晰,增加易读性和易修改性 有利于提高代码的可重用性有利于提高代码的可重用性 有利于提高团队合作开发大型软件的可行性。有利于提高团队合作开发大型软件的可行性。模块化模块化西南交通大学西南交通大学软件工程软件工程第五章第五章第第6 6页页模块数与软件开模块数与软件开发成本的关系图发成本的关系图模块化模块化 当划分的模块数处于最小成本区时,开发软件的总成本最低。当划分的模块数处于最小成本区时,开发软件的总成本最低。 目前还不能得到模块数目前还不能得到模块数M M的精确取值。的精确取值。成本 (工作量

7、)模块数接口成本软件总成本最小成本区M成本 / 模块西南交通大学西南交通大学软件工程软件工程第五章第五章第第7 7页页模块独立性(模块独立性(Module IndependenceModule Independence)定义:)定义:模块独立性模块独立性 软件系统中每个模块只涉及软件要求的具体子软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他模块的接口是简单的。功能,而和软件系统中其他模块的接口是简单的。两个度量准则:两个度量准则: 耦合性(耦合性(CouplingCoupling) 内聚性(内聚性(CohesionCohesion)西南交通大学西南交通大学软件工程软件工程第五

8、章第五章第第8 8页页耦合性是对一个软件结构内部不同耦合性是对一个软件结构内部不同模块间模块间联系紧密联系紧密程度的度量指标。程度的度量指标。耦合性耦合性模块间的联系越紧密,耦合性就越高,模块的独立性模块间的联系越紧密,耦合性就越高,模块的独立性也就越低。也就越低。耦合性的决定因素耦合性的决定因素 模块接口的复杂程度模块接口的复杂程度 调用模块的方式调用模块的方式 通过模块接口的数据通过模块接口的数据西南交通大学西南交通大学软件工程软件工程第五章第五章第第9 9页页(1)数据耦合()数据耦合(Data Coupling) 若两个模块之间仅通过模块参数交换信息,且交换的信若两个模块之间仅通过模块

9、参数交换信息,且交换的信 息全部为简单数据,则称这种耦合为数据耦合。息全部为简单数据,则称这种耦合为数据耦合。 数据耦合的耦合性最低数据耦合的耦合性最低,通常软件中都包含有数据耦合。,通常软件中都包含有数据耦合。耦合性的主要类型耦合性的主要类型sum ( int a, int b) int c;c = a + b;return (c); main( ) int x=5, y=4;printf (“x + y= %d“ ,sum (x, y);主函数与主函数与sumsum函数之间即为数据耦合关系函数之间即为数据耦合关系西南交通大学西南交通大学软件工程软件工程第五章第五章第第1010页页(2 2)

10、公共耦合()公共耦合(Common CouplingCommon Coupling)两个或多个模块通过引用公共数据相互联系,则称两个或多个模块通过引用公共数据相互联系,则称这种耦合为公共耦合。这种耦合为公共耦合。 公共耦合的复杂度随着耦合的模块个数的增加而显公共耦合的复杂度随着耦合的模块个数的增加而显著增加。著增加。 尽量降低公共耦合的程度。尽量降低公共耦合的程度。耦合性的主要类型耦合性的主要类型 例如,在程序中定义了全局变量,并在多个模块例如,在程序中定义了全局变量,并在多个模块中对全局变量进行了引用。中对全局变量进行了引用。西南交通大学西南交通大学软件工程软件工程第五章第五章第第1111页

11、页(3)控制耦合()控制耦合(Control Coupling) 模块之间交换的信息中包含有模块之间交换的信息中包含有控制信息控制信息(尽管有时控制尽管有时控制 信息是以数据形式出现的信息是以数据形式出现的),则称这种耦合为控制耦合。,则称这种耦合为控制耦合。控制耦合是中等程度的耦合,会增加程序的复杂性。控制耦合是中等程度的耦合,会增加程序的复杂性。耦合性的主要类型耦合性的主要类型void output ( flag ) If ( flag ) printf (“OK! “);else printf (“NO! “); main() int flag;output ( flag );/*主函数

12、与主函数与output函数之间即为控制耦合关系函数之间即为控制耦合关系*/西南交通大学西南交通大学软件工程软件工程第五章第五章第第1212页页(4)内容耦合()内容耦合(Content Coupling) 如果发生下列情形,两个模块之间就发生了内容耦合如果发生下列情形,两个模块之间就发生了内容耦合(1)(1)一个模块对另一模块中的内容一个模块对另一模块中的内容( (包括数据和程序段包括数据和程序段) )进进行了直接的引用甚至修改行了直接的引用甚至修改(2)(2)两个模块共享一部分代码两个模块共享一部分代码(3)(3)一个模块通过非正常入口转到另一模块内部一个模块通过非正常入口转到另一模块内部(

13、4)(4)一个模块具有多个入口一个模块具有多个入口耦合性的主要类型耦合性的主要类型西南交通大学西南交通大学软件工程软件工程第五章第五章第第1313页页内容耦合是所有耦合关系中程度最高的内容耦合是所有耦合关系中程度最高的,会使因模,会使因模块间的联系过于紧密而对后期的开发和维护工作带来块间的联系过于紧密而对后期的开发和维护工作带来很大的麻烦。很大的麻烦。 应坚决避免任何形式的内容耦合应坚决避免任何形式的内容耦合。耦合性的主要类型耦合性的主要类型耦合是影响软件复杂度的一个重要因素,耦合是影响软件复杂度的一个重要因素, 设计过程中应力求降低程序的耦合性。设计过程中应力求降低程序的耦合性。上述的耦合类

14、型中,耦合程度的高低关系为:上述的耦合类型中,耦合程度的高低关系为:数据耦合数据耦合 公共耦合公共耦合 控制耦合控制耦合 内容耦合内容耦合西南交通大学西南交通大学软件工程软件工程第五章第五章第第1414页页内聚性是对一个内聚性是对一个模块内部模块内部各个组成元素之间相互结合各个组成元素之间相互结合的紧密程度的度量指标。的紧密程度的度量指标。理想的内聚性要求模块功能明确、单一,即一个模块理想的内聚性要求模块功能明确、单一,即一个模块只做一件事情。只做一件事情。内聚性内聚性模块中的组成元素结合的越紧密,模块的内聚性就越模块中的组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。高,模块的独立性也就越高。西南交通大学西南交通大学软件工程软件工程第五章第五章第第1515页页内聚性内聚性模块的内聚性和耦合性是两个相互对立且又密切相关模块的内聚性和耦合性是两个相互对立且又密切相关的概念。的概念。 事实上,它们是同一事物的两个方面事实上,它们是同一事物的两个方面 模块的高内聚性往往就意味着模块间的低耦合性。模块的高内聚性往往就意味着模块间的低耦合性。 经实践证明,保证模块的高内聚性比低耦合性更经实践证明,保证模块的高内聚性比低耦合性更为重要,在软件设计时应将更多的注意力集中在提为重要,在软件设计时应将更多的注意力集中在提高模块的内聚性上。高模块的内聚性上。

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

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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