软件工程--第七章软件设计--思考题

1、软件设计的目标及主要任务有哪些

软件设计的主要目标时对将要时间的软件系统的体系结构、系统的数据、系统模块间的接口,以及所采用的算法给出详尽的描述。

任务:

  1. 将分析模型转化为设计类的实现以及软件实现所要求的数据结构
  2. 体系结构设计定义了软件主要结构元素之间的联系
  3. 接口设计描述了软件和协作系统之间,软件和使用和人员之间是如何通信的。接口时信息流和特性行为的类型。
  4. 构建设计将软件体系结构的结构元素变换为对软件构件的过程性描述

2、什么时模块化设计思想

模块是一个独立命名的拥有明确定义的输入输出和特性的程序实体。例如过程、函数、子程序、宏都可以作为模块。
把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的模块以某种结构形式组成一个整体,这就是软件的模块化设计。
简化软件的设计和实现,提高软件的可理解性和可测试性,更容易维护。
指导思想:分解、抽象、逐步求精、信息隐蔽、模块独立性。

3、模块独立性的两个度量标准

模块自身的内聚和模块之间的耦合

4、内聚

  1. 含义:内聚性从功能角度对模块内部聚合能力进行度量。
  2. 分类:(内聚性从弱到强)
    偶然性内聚:功能上没有实质联系
    逻辑性内聚:由若干逻辑功能相似的任务组成,模块外引入开关变量(调用的就是控制耦合),增大了模块间的耦合性,一般不用
    时间性内聚:模块内的各个任务有相同的执行时间联系到一起,如初始化,异常处理。
    过程性内聚:各任务必须按照特定的顺序执行,函数
    通信性内聚(信息内聚):靠公用数据联系在一起,有同一输入或输出
    顺序性内聚:模块内任务按顺序执行,XML文档模块,面向数据流设计方法

时间性内聚顺序可调整,过程性内聚顺序 不可调整
顺序内聚数据流从一个处理单元到另一个处理单元,过程性内聚是控制流从一个动作刘翔另一个动作

5、耦合

  1. 含义:耦合性是一个软件结构内不同模块之家互联程度的度量,取决于模块间接口的复杂程度
  2. 分类(从弱到强):
    非直接耦合:同级模块,无信息传递
    --------尽量使用
    数据耦合:调用下属模块,传递简单变量
    特征耦合:调用下属模块,传递数据结构
    --------少用
    控制耦合:传递开关值或标志量,必须知道被调用模块内部结构,增加耦合,逻辑性内聚
    外部耦合:一组模块访问同一个全局变量
    --------限制
    公共耦合:一组模块访问同一个全局性的数据结构,可以是共享的通信去,公共存储区,物理设备等
    --------不用
    内容耦合:一个模块直接调用另一个模块中的数据。

6、为什么要高内聚低耦合,是否意味着内聚越高越好,耦合越低越好呢?

高内聚低耦合有利于提高模块的独立性,模块独立性越高,块内联系越强,块间联系越弱。有利于软件的开发,使软件容易测试和维护。

并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。
最强的内聚莫过于一个类只写一个函数,这样内聚性绝对是最高的。但这会带来一个
明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。
对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。
真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的,不过、审时度势、融会贯通、人尽其才、物尽其用,才是设计的王道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值