软件工程19(结构化设计基本原则)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合程度,从而获得较高的模块独立性。

内聚和耦合是密切相关的,模块内的高内聚往往意
味着模块间的松耦合。内聚和耦合都是进行模块化设
计的有力工具,但是实践表明内聚更重要,应该把更
多注意力集中到提高模块的内聚程度上。
• 事实上,没有必要精确确定内聚的级别。重要的是 设计时力争做到高内聚,并且能够辨认出低内聚的模 块,有能力通过修改设计提高模块的内聚程度降低模 块间的耦合程度,从而获得较高的模块独立性。
2)内聚 内聚标志一个模块内各个元素彼此结合的紧密程 度,它是信息隐蔽和局部化概念的自然扩展。简单 地说,理想内聚的模块只做一件事情。

设计时应该力求做到高内聚,通常中等程度的内
聚也是可以采用的,而且效果和高内聚相差不多;
但是,低内聚很坏,不要使用。
内聚与模块属性的关系
内部联系 清晰性 可复用 性 很差 很差 很差 差 可修改性 可理解性
4.1 软件设计的概念及原则
• 在设计中引入灵活性的方法有: 降低耦合并提高内聚(易于提高替换能力); 建立抽象(创建有多态操作的接口和父类); 不要将代码写死(消除代码中的常数); 抛出异常(由操作的调用者处理异常); 使用并创建可复用的代码。
小结
• 本次课主要讲述软件设计的概念与原则。重点 掌握模块化和模块独立性度量。
• 软件的体系结构设计、模块化设计都是分而治
之策略的具体表现。
4.1 软件设计的概念及原则
(1) 分而治之
• 尽管模块分解可以简化要解决的问题,但模块
分解并不是越小越好。
• 当模块数目增加时,每个模块的规模将减小, 开发单个模块的成本确实减少了;但是,随着 模块数目增加,模块之间关系的复杂程度也会 增加,设计模块间接口所需要的工作量也将增
下课了。。。
休息一会儿。。。
4.1 软件设计的概念及原则 • 软件设计的概念

设计是一项核心的工程活动。 在 20 世纪 90 年代早期, Lotus 1-2-3 的发明人 Mitch
Kapor 在 Dr. Dobbs 杂志上发表了“软件设计宣言
”,其中指出:
“什么是设计?设计是你站在两个世界——技术世
界和人类的目标世界——而你尝试将这两个世界 结合在一起……”。
耦合性与模块属性的关系
对修改的敏感性 可重用性 可修改性 可理解性
内容耦合 公共耦合 控制耦合 数据耦合
很强 强 一般 不一定
很差 很差 差 好
很差 中 差 好
很差 很差 差 好
耦合性
• 耦合性应采取下述设计原则:尽量使用数
据耦合,少用控制耦合,限制公共环境耦合的 范围,完全不用内容耦合。
• •
偶然内聚
逻辑内聚 时间内聚 过程内聚
很差
很差 差 中

很差 中 好
很差
很差 ຫໍສະໝຸດ Baidu 中
很差
差 中 中
通信内聚
顺序内聚 功能内聚

好 好

好 好

中 好

好 好

好 好
内聚性
内聚性设计内聚原则:设计时应力争做到高内聚, 并且能够辨认出低内聚的模块,并采取措施进行 修改,以提高模块的内聚程度、降低模块间的耦
加,如图所示。
图4.2 模块化和软件成本
4.1 软件设计的概念及原则
(2) 模块独立性
• 模块的独立性是指软件系统中每个模块只涉及软 件要求的具体的子功能,而和软件系统中其他的 模块的接口是简单的。例如,若一个模块只具有 单一的功能且与其他模块没有太多的联系,那么 ,我们则称此模块具有模块独立性。 • 一般采用两个准则度量模块独立性。即模块间的 耦合和模块的内聚。
4.1 软件设计的概念及原则 • 软件设计的概念

罗马建筑批评家Vitruvius提出了这样一个观念 :
“设计良好的建筑应该展示出坚固、适用和令 人赏心悦目”。
4.1 软件设计的概念及原则 • 软件设计的原则
(1) 分而治之
• 分而治之是将大型复杂的问题分解为许多容易
解决的小问题,原来的问题也就容易解决了。
软件工程
主讲:陈利平
计算机与信息科学学院 2015
概述:
• 一、主要内容 • 讲述软件设计的概念和原则。 • 二、目的与要求 • 了解软件设计的基本概念,理解软件设计 的基本原则。 • 三、重点与难点 • 软件设计的原则。
思考:
• 提问: • 1)什么是软件软件设计? • 2)软件工程的基本原则是什么?
4.1 软件设计的概念及原则
(3) 提高抽象层次 • 抽象是指忽视一个主题中与当前目标无关的那 些方面,以便更充分地注意与当前目标有关的 方面。 • 当我们进行软件设计时,设计开始时应尽量提 高软件的抽象层次,按抽象级别从高到低进行 软件设计。
4.1 软件设计的概念及原则
(4) 复用性设计 • 复用是指同一事物不做修改或稍加修改就可以 多次重复使用。将复用的思想用于软件开发, 称为软件复用。 • 我们将软件的重用部分称为软构件。 • 也就是说,在构造新的软件系统时不必从零做 起,可以直接使用已有的软构件即可组装(或 加以合理修改)成新的系统。
• •
1) 耦合
耦合是对一个软件结构内不同模块之间互连程度的度量。耦 合强弱取决于模块间接口的复杂程度,进入或访问一个模块
的点,以及通过接口的数据。 在软件设计中应该追求尽可
能松散耦合的系统。在这样的系统中可以研究、测试或维护 任何一个模块,而不需要对系统的其他模块有很多了解。此 外,由于模块间联系简单,发生在一处的错误传播到整个系 统的可能性就很小。因此,模块间的耦合程度强烈影响系统 的可理解性、可测试性、可靠性和可维护性。
4.1 软件设计的概念及原则
(5) 灵活性设计 • 保证软件灵活性设计的关键是抽象。 • 面向对象系统中的类结构类似一座金字塔,越 接近金字塔的顶端,抽象程度就越高。 • “抽象”的反义词是“具体”。理想情况下, 一个系统的任何代码、逻缉、概念在这个系统 中都应该是唯一的,也就是说不存在重复的代 码。
相关文档
最新文档