软件设计思考题
一、软件设计的目标和主要任务
1、目标
软件设计的目标是对将要实现的软件系统的体系结构、系统的数据、系统模块之间的接口、以及所采用的算法给出详尽的描述。
2、主要任务
·数据设计将分析模型转化成为设计类的实现以及软件实现所要求的数据结构。
·体系结构设计定义了软件的主要结构元素之间的联系,可用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束。
·接口设计描述了软件和协作系统之间、软件和使用人员之间是如何通信的。接口时信息流和特定行为的类型。
·构件设计将软件体系结构和结构元素变换为对软件构件的过程性描述。
3、软件设计过程
软件设计过程主要包括概要设计和详细设计。
概要设计又有体系结构设计、接口设计和数据设计。概要设计也称为总体设计、结构设计、高层设计。
详细设计包括模块所需的算法和数据结构等。其内容包括:模块嚯构件描述,算法描述和数据描述。
二、模块化设计思想
1、定义
模块是一个独立命名的,拥有明确定义的输入、输出和特性的程序实体。
把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体,这就是软件的模块化设计。
2、内容
1)分解
即分而治之。
一个软件系统的各个模块之间是相互关联的,模块划分的数量越多,模块间的联系也会越来越多。模块本身的复杂性和工作量虽然随着模块变小而减少,模块的接口工作量却随着模块数的增加而增大。
2)抽象
抽象是抓住主要问题,隐藏细节,这样才容易分解。
3)信息隐藏
信息隐藏原则建议模块应该具有的特征是:每个模块对其他所有模块都隐藏自己的设计决策。
4)逐步求精
逐步求精是一种自顶向下的设计策略,是人类采用抽象到具体的过程把一个复杂问题趋于简单化控制和管理的有效策略。
5)模块独立性
高内聚,低耦合
“一个模块,一个功能”以及成为模块化设计的一条重要准则。
内聚性是从功能的角度对模块内部聚合能力进行量度。高内聚是模块独立性追求的目标。
耦合性是对一个软件结构内不同模块之间互连程度的度量。弱的耦合是模块独立性追求的目标。
三、模块独立性
内聚性和耦合性是模块独立性的两个度量标准。
1、内聚性
内聚性是从功能的角度对模块内部聚合能力进行量度。高内聚是模块独立性追求的目标。
2、耦合性
耦合性是对一个软件结构内不同模块之间互连程度的度量。弱的耦合是模块独立性追求的目标。
四、内聚和耦合
1、内聚
内聚分为(内聚性由弱到强):
①偶然性内聚:
模块内的各个任务在功能上没有实质性联系,纯属偶然因素组合为块内各个互不相关的任务。
②逻辑性内聚:
模块通常由若干个逻辑功能相似的任务组成,通过模块外引入的一个开关量来选择其一执行。这种内聚增大了模块间的耦合性。
③时间性内聚:
模块间的各个任务由相同的执行时间联系在一起,如初始化模板。
④过程性内聚:
模块内的各个任务必须按照某一特定次序执行。
⑤通信性内聚:
模块内部的各个任务靠公用数据联系在一起,即均使用同一个输入数据,或产生同一个输出数据。
⑥顺序性内聚:
模块内的各任务是顺序执行的。上一个任务的输出是下一个任务的输入。
⑦功能性内聚:
模块各个成分结合在一起,完成一个特定的功能。
功能性模块具有内聚性最强、与其他模块联系少的特点。
2、耦合
耦合分类为(耦合性由弱到强):
①非直接耦合:
同级模块相互之间没有信息传递,属于非直接耦合。
②数据耦合:
调用下属模块时,如果交换的都是简单变量,便构成数据耦合。
③特征耦合:
调用下属模块时,如果交换的都是数据结构,便构成特征耦合。
④控制耦合:
模块间传递的信息不是一般的数据,而是作为控制信息的开关值或标志量。
⑤外部耦合:
若一组模块访问同一个全局变量,我们可称它们为外部耦合。
⑥公共耦合:
若一组模块访问同一个全局性的数据结构,则称它们为公共耦合。全局性的数据结构可以时共享的通信区、公共的内存区域、任何存储介质文件、物理设备等。
⑦内容耦合:
若一个模块可以直接调用另一个模块中的数据,或者直接转移到另一个模块中去,或者一个模块有多个入口,则称为内容耦合。
内容耦合时最强的耦合,往往被称作“病态”的块间联系,应尽量不用。
五、高内聚低耦合
高内聚和低耦合可以更好的保证模块的独立性。
并不是说内聚越高越好,也不是耦合越低越好。这些都是相对而言,而且都要看具体的情况。我们只是应该尽量往高内聚低耦合上面去靠,当然最终目的也是为了保证模块独立性,从而完成整个软件的设计。

6674

被折叠的 条评论
为什么被折叠?



