1) 抽象与求精 抽象是一种常用的思考和解决问题的方式,即抽取事物的本质的共同特性而暂时避开不必要的低层细节。
方式:过程抽象、数据抽象和控制抽象。
抽象过程是指具有特定功能的一个命名的指令序列。(如:二维图形创建 )
抽象数据则是描述数据对象的一个命名的数据集合。(如:“图画”数据对象 )
抽象控制包含了一种程序控制机制而无须刻画其内部细节。(如:操作系统中的“同步信号量”)
求精是由N. Wirth最初提出的一种自顶向下设计策略,其主要思想是:将某个宏观功能不断分解,逐步确定过程细节,直至用程序设计语言描述的算法实现为止。
抽象使得设计人员能够避开过早地陷入细节之中刻画过程和数据。 求精能够帮助设计人员随着设计过程的深入而不断呈现更低层次的信息。
如何确保模块数落在“最小代价区”?依据什么标准划分模块?
由Parnas倡导的“信息隐藏”是指模块中所包含的信息(包括数据和过程)对不需要这些信息的其它模块是不可访问的。
抽象有助于定义组成软件的过程(或信息)实体;
隐藏定义并加强了对模块内部访问的约束,有助于分离模块的实现者和使用者。
模块独立性是模块化、抽象和信息隐藏的直接产物,其基本含义是每一个模块只完成功能需求中的一个特定的子功能,而且从程序结构的其它部分来看这一模块只具有一个简单的接口。
模块的功能独立性可以使得模块既容易开发又容易维护。 模块独立性有两个定性的度量标准:内聚度和耦合度。
内聚度(Cohesion)是指模块内部各成分联系紧密的程度。 通常,内聚度越高,模块的独立性就越强。 G. Myers定义了七种类型的内聚,大致按照内聚程度从高到低的顺序是:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。
设计模块时,应该尽可能避免使用偶然内聚等低级内聚的模块,争取高级内聚的模块,以提高模块的独立性。
耦合(Coupling)是模块之间相互关联紧密的程度。 一般地,模块的耦合度越低,模块的独立性越强。
模块之间的耦合程度从低到高也可分为七种:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。
在设计模块时,应该尽量使用数据耦合,必要时使用标记耦合,少用控制耦合,限制使用公共耦合,最好不要使用内容耦合。
? 模块的扇出是指模块直接调用多少其它模块。 ? 模块的扇入是指共有多个模块直接调用本模块。 ? 模块的扇出过大,表明该模块过分复杂,需要协调和控制过多的下层模块。
? 模块的扇入过大,而它又不是公用模块,一般来说明该模块可能具有多个功能。
? 经验表明,良好的软件结构图,上层模快(主要是控制模块)往往具有较高的扇出,底层的模块(主要是功能型模块)具有较高的扇入,呈两头小、中间大的清真寺状。
模块的作用域是指模块中判定的作用范围,它是指所有受这个判定影响的模块。
模块的控制域是指模块本身及其直接或间接调用的模块。
如果模块的作用域不在控制域之内,则会增加模块间数据的传递量,使模块之间出现控制耦合。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库任胜兵老师软件工程课件知识点整理(4)在线全文阅读。
相关推荐: