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