1.软件开发过程
定义问题
需求分析
规划构建
软件架构
详细设计
编码与调试
单元测试
集成测试
集成
系统测试
保障维护
----------------------------------------------------------->
架构师吃掉需求
设计师吃掉架构
程序员消化设计
发现错误的时间要尽可能接近引入该错误的时间
序列式和迭代式
2.架构典型组成部分
程序组织
主要的类
数据设计
业务规则
用户界面设计
资源管理
安全性
性能
可伸缩性
互用性
国际化/本地化
输入输出
错误处理
容错性
架构的可行性
过度工程
关于买还是造
关于复用的决策
变更策略
架构的总体质量
3.设计的层次
软件系统
分解为子系统或包
分解为类
分解成子程序
子程序的内部的设计
4.启发式方法
找出现实世界中的对象
形成一致的抽象
封装实现细节
当继承能简化设计时就继承
隐藏秘密
找出容易改变的区域
保持松散偶合
查阅常用的设计模式