设计工程
抽象
- 过程抽象
 - 数据抽象
 
架构(体系结构)
- 为系统提供概念上完整性的方式
 - 程序构件的结构或组织+和构件的交互形式+构件所用的数据结构
 
(设计)模式
已证实的解决方案集
逐步求精(refinement)
- 自顶向下的设计策略
 - 通过连续精化层次结构的程序细节来实现程序的开发
 
模块化
- 将软件划分为独立命名的、可寻址的构件,被称为模块,把这些模块集成到一起满足问题的需求
 - 避免过低或过高的模块化,应该遵循以下原则:
 
- 使软件开发更容易;
 - 可以定义和交付软件增量;
 - 更容易实施变更;
 - 更有效地开展测试和调试
 
信息隐藏
- 每个模块对其他所有模块都隐藏 自己的设计决策。
 
功能独立
- 是模块化、抽象概念和信息隐藏的直接结果。
 - 开发具有专一功能且避免与其他模块过多交互的模块实现功能独立
 
重构
不改变代码的外部行为的情况下改进其内部结构的过程。
架构(体系结构)设计
为何进行体系结构设计?
- 有助于软件产品的共同利益者相互交流
 - 体系结构突出了早期设计决策。
 - 体系结构构建了一个相对小的,易于理解的模型,描述了系统如何构成以及其构件如何一起工作
 
体系结构风格(style)
- 以数据为中心的体系结构
 - 数据流体系结构
 - 调用和返回体系结构
 - 面向对象的体系结构
 - 层次体系结构