第八讲 软件设计的启发式规则 面向数据流的设计方法
第八讲 软件设计的启发式规则 面向数据流的设计方法
软件设计的启发式规则 2启发式规则是一种经验规律 对改进设计和提高软件质量 具有重要的参考价值,但不 要过分拘泥于这些规则 7.设计功能可以模块
一、软件设计的启发式规则 1. 提高模块独立性 2. 设计规模适中的模块 3. 深度、宽度、扇入、扇出适中 4. 模块的作用域应该在控制域之内 5. 降低接口复杂性 6. 设计单入口和单出口的模块 7. 设计功能可以预测的模块 启发式规则是一种经验规律, 对改进设计和提高软件质量 具有重要的参考价值,但不 要过分拘泥于这些规则
1)提高模块独立性 是划分模块的最高准则。 高内聚,尽量一个模块一个功能; 低耦合,避免“病态连接”; 降低接口的复杂程度; 综合考虑模块可分解性、模块可组装性 模块可理解性、模块连续性和模块保护 (因修改错误而引起的副作用被控制在 模块的内部)等
1) 提高模块独立性 • 是划分模块的最高准则。 • 高内聚,尽量一个模块一个功能; • 低耦合,避免“病态连接”; • 降低接口的复杂程度; • 综合考虑模块可分解性、模块可组装性、 模块可理解性、模块连续性和模块保护 (因修改错误而引起的副作用被控制在 模块的内部)等
2)设计规模适中的模块 W. M. Weinberg的研究表明:如果一个模块 长度超过30条语句,其可理解性将迅速下降; F.T. Baker:最好控制在50行左右,能够打印 在一张纸上。 由于模块独立性是最高原则,对于一个设计 合理的功能性模块,即使长达千句或小到几 行,也是允许的 分解模块不应该降低模块独立性
2) 设计规模适中的模块 • W. M. Weinberg的研究表明:如果一个模块 长度超过30条语句,其可理解性将迅速下降; • F. T. Baker : 最好控制在50行左右,能够打印 在一张纸上。 • 由于模块独立性是最高原则,对于一个设计 合理的功能性模块,即使长达千句或小到几 行,也是允许的。 • 分解模块不应该降低模块独立性
3)深度、宽度、扇入、扇出适中 深度:软件结构中控制的层数。一般而 它与系统的复杂度和系统大小直接对应 宽度:软件结构中同一个层次上的模块总 数的最大数。 扇出:一个模块直接控制(调用)的模块 数目。扇出过大说明模块过分复杂;过小 也不好,不利于系统平衡分解,3到9为宜 扇入:一个模块的扇入是指直接控制该模 块的模块数目。扇入越大说明共享该模块 的上级模块越多 整个系统结构呈现“椭圆外型
3) 深度、宽度、扇入、扇出适中 • 深度:软件结构中控制的层数。一般而言 它与系统的复杂度和系统大小直接对应。 • 宽度:软件结构中同一个层次上的模块总 数的最大数。 • 扇出:一个模块直接控制(调用)的模块 数目。 扇出过大说明模块过分复杂;过小 也不好,不利于系统平衡分解,3到9为宜。 • 扇入:一个模块的扇入是指直接控制该模 块的模块数目。扇入越大说明共享该模块 的上级模块越多。 • 整个系统结构呈现“椭圆外型