软件体系结构 - Parnas 模块化与信息隐藏(Lecture 3)
来源:田浩然上传 / 0B105软件体系结构 / Lecture-3 / 03parnas.ppt(olefile 提取,55KB,内容丰富)
核心主题:David Parnas 软件体系结构思想
1. KWIC 模块化案例
- Modularization 1:每个处理步骤为一个模块
- Modularization 2:信息隐藏——每个模块有一个或多个”秘密”,模块以其知道的设计决策为特征,对其他模块隐藏
KWIC 系统模块划分:
- Characters:行存储方式
- Circular Shifter:循环移位算法
- Alphabetizer:字母排序(惰性排序)
2. Parnas 1974 IFIP 论文核心观点
“On a ‘Buzzword’: Hierarchical Structure” IFIP Congress ‘74. North Holland, 1974, pp. 336-339
- 最早对”软件架构”概念的抽象讨论
- 反驳”Hierarchical == good”的流行观念
- 同一术语在不同上下文中含义不同(常在同一篇论文中混用)
- 背景:OS 设计(T.H.E, MULTICS, RC4000)
3. 层次类型
| 类型 | 说明 |
|---|---|
| Program Hierarchy | 调用层次;仅当人类使用系统时有意义(如 inline 等价于调用) |
| Process Hierarchy | 常与其他层次混淆(如 T.H.E 中 “Give works to”) |
| Resource Allocation Hierarchy | RC4000 保护层次 |
| Module Hierarchy | 模块是更高层模块的 part-of |
4. 程序族(Program Families)
- Parnas 1976 IEEE Trans. On SE. vol. SE-2, pp.1-9
- 先研究公共属性,再确定每个成员的特有属性
- 为变化而设计 / 重用库 / 面向对象设计的基础
5. 开发方法
- 经典方法:顺序完成,一个成员完全开发后修改得到下一个
- 新技术:发展到中间阶段,不同成员从中间阶段开始采用不同设计决策
- 逐步求精(postpone implementation of operand types and operators)
- 模块化(指定模块接口,替换不同实现)
关联
- 软件体系结构-Parnas(Parnas 经典论文系列)
- 信息隐藏原则(模块化设计核心原则)
- 程序族与软件复用(Parnas 1976 程序族概念)