ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第五周 思考题

2021-04-03 16:02:17  阅读:147  来源: 互联网

标签:思考题 紧密 第五 设计 模块 内聚 耦合 软件


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

软件设计的基本目标是构造系统“怎么做”的模型描述。把软件需求“变换”为用于构造软件的蓝图。

总体设计:

体系结构设计:定义软件模块(构件)及模块之间的关系。

接口设计:包括用户接口(界面)、外部接口、内部接口。

数据设计:软件涉及的数据结构、文件系统的结构、数据库的表结构。

软件详细设计:

模块内部细节设计:包括模块所需的算法和数据结构。

2.什么是模块化思想?

分解、抽象、逐步求精、信息隐蔽和模块独立性

3.模块独立性的度量标准?

模块自身的内聚

模块之间的耦合

4.内聚合耦合的含义是什么?各有哪些中种类?举例说明。

内聚:是从功能的角度对模块内部聚合能力的度量。分为功能性内聚(解析XML文档板块)、顺序性内聚(规则引擎)、通信性内聚(学生选课系统CURD)、过程性内聚(判断文件是否有权限)、时间性内聚(处理异常板块)、逻辑性内聚(打印机和显示器)、偶然性内聚(正方形面积和绘图)

耦合:对一个软件结构内不同板块之间互联程度的度量。分为非直接耦合、数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合。

5.为什么要高内聚低耦合?是否意味着绝对?

  首先面向对象的主要特点是封装、继承和多态。实质上是将本来混乱的代码尽可能的抽象出共性,分门别类。最终达到复用,提高开发效率和保证软件质量的目的。大家知道蜘蛛以网来捕捉昆虫,因为网中的各个节点是互相联系的,这样增加了蜘蛛网的韧性不容易被昆虫冲破。而面向对象追求的是代码复用和运行稳定,即在模块之间减少联系。可以想象,如果各模块之间联系太过紧密对于代码复用是不容易的,因为很难会再找到同样适合的环境。同时对于运行来说也是不利的,软件发生错误是不可避免的,那么各模块如果联系紧密则错一处而动全身,好比多米诺骨牌。所以一个好的软件各模块之间的联系不能过分紧密,即低耦合。 面向对象的思想追求的是每个模块的动能单一,模块间越独立越好。即在划分模块时,只有为了完成一个功能的各个元素才会被划分到一个模块中。所以模块内部的各个元素必须是联系紧密的,否则就说明模块划分还没有到位。所以模块内部需是联系紧密的,即高内聚。
  并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。
最强的内聚莫过于一个类只写一个函数,这样内聚性绝对是最高的。但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。

 

标签:思考题,紧密,第五,设计,模块,内聚,耦合,软件
来源: https://www.cnblogs.com/Letitia00/p/14613941.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有