第五次作业(7)
1.软件设计的目标及主要任务有哪些?
答:软件系统设计是把软件需求“变换”为用于构造软件的蓝图,基本目标是构造系统“怎么做”的模型描述。
2.什么是模块(构件)化设计思想?
答:把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体,这就是软件的模块化设计。
3.模块独立性的两个度量标准是什么? 内聚和耦合的含义是什么?各有那些种类?请举例说明每一类型。
答:内聚性和耦合性。
内聚性是从功能的角度对模块内部聚合能力的量度,耦合性是对一个软件结构内不同模块之间互连程度的度量。
内聚分类:偶然性内聚、逻辑性内聚、时间性内聚、过程性内聚、通信性内聚、顺序性内聚、功能性内聚。
耦合分类:非直接耦合、数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合。
4.为什么要高内聚和低耦合?高内聚低耦合是否意味着内聚越高越好,耦合越低越好呢?
答:在软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则是高内聚低耦合。从模块粒度来看,高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合); 低耦合:减少类内部,一个成员方法调用另一个成员方法。从类角度来看, 高内聚低耦合:减少类内部,对其他类的调用;从功能块来看 高内聚低耦合:减少模块之间的交互复杂度(接口数量,参数数据)即横向:类与类之间、模块与模块之间;纵向:层次之间;尽可能,内容内聚,数据耦合。
并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。最强的内聚莫过于一个类只写一个函数,这样内聚性绝对是最高的。但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的,不过、审时度势、融会贯通、人尽其才、物尽其用,才是设计的王道。

浙公网安备 33010602011771号