- 7
- 0
- 约4.37千字
- 约 37页
- 2021-01-07 发布于安徽
- 举报
信息隐藏: David Parnas 模块化方法 1 按照处理流程,每个功能一个模块 模块化方法2 信息隐藏 每个模块有1或多个秘密Each module has one or more secrets” 每个模块实现了一个重要决策,而且只有自己知道细节 决策类型1:需求,即一个模块的接口功能与模块内部的程序细节分离 决策类型2:变化,将要发生变化的程序部分需要进行一个决策 不同决策之间互相独立 《On the criteria to be used in decomposing systems into modules》 KWIC Example Input: bar sock car dog town fog Output: bar sock car dog dog car fog town sock bar town fog Four steps: Input Circular shift Alphabetize Output Index: Circular shift positions: 1 5 10 14 18 23 Alphabetize: 1 10 14 23 5 18 按功能设计 按照信息隐藏设计 Lines how characters/lines are stored Circular Shifter algorithm for shifting, storage for shifts Alphabetizer algorithm for alpha, laziness of alpha 可修改性比较 可能的修改 输入数据: (1, 1) 字符储存: (all, 1) 字符打包: (all, 1) 更改转置算法: (3,1) 更改排序算法: (2,1 模块化与信息隐藏 模块化=按功能设计 给出功能接口,隐藏功能实现程序的细节 信息隐藏=模块化+可修改性 给出功能接口,隐藏功能实现程序的细节 给出要修改部分的接口,隐藏待修改部分的实现程序细节 不要只是按照流程设计 信息隐藏的应用:Module Guide 为每一个模块书写一个规格说明: 模块在整个系统设计中扮演的角色,即承担的功能 模块对外提供的接口 主要秘密: 模块承担的需求决策(0~N) 来源于需求规格说明书 次要秘密 模块承担的修改决策(0~N) 来源于对可修改性的预测 在设计的高层(面向对象的控制层),可以允许一个模块有多个秘密 在设计的细节层,一个模块只能有一个秘密 Parnas’ Experience * Integration testing took only a week Only nine bugs were discovered. Location of bugs isolated to single module. All bugs were quickly fixed. 《The Modular Structure of Complex Systems》 The A-7E Aircraft 从结构化到面向对象 模块+内聚/耦合标准=模块化 模块化+可修改性=信息隐藏 模块化+信息隐藏+(抽象数据类型、封装、继承、多态…)=面向对象 Barbara Jane Liskov Bertrand Meyer 《Object-Oriented Software Construction》 Bjarne Stroustrup (C++) 面向对象设计:理想的对象 单一职责 信息内聚 数据和行为互相支撑 功能内聚 只有一个职责 信息隐藏 只有一个秘密(需求或者可修改性) 继承符合多态思想 LSP Grady Booch 《Object-Oriented Analysis and Design》 Rebecca Wirfs-Brock Responsibility, Collaboration 中层设计总结 分割程序片段,隐藏程序片段(数据结构+算法)的实现细节,通过接口对外交互 评价质量标准:模块化?信息隐藏?OO设计原则 抽象层 接口层 精化层 实现层 数据结构的含义与使用 算法的语义与复杂度 结构的类型定义 存储空间的使用与更改 书写控制语句 分支的处理技巧 对数据的操纵 对象、模块 主要内容 低层设计:代码设计 中层设计:模块与类结构设计 高层设计:体系结构设计 《Programming-in-the-Small VSProgramming-in-the-Large》 Frank DeRemer Mary Shaw 详细设计过于依赖细节 导入/导出与名词匹配 连接与依赖,接口与实现 大型软件开发的一个根本不同是它更关注如何将大批独立模块组织形成一个“系统”,也就是说更重视系
原创力文档

文档评论(0)