1.軟件開發過程
定義問題
需求分析
規劃構建
軟件架構
詳細設計
編碼與調試
單元測試
集成測試
集成
系統測試
保障維護
----------------------------------------------------------->
架構師吃掉需求
設計師吃掉架構
程序員消化設計
發現錯誤的時間要儘可能接近引入該錯誤的時間
序列式和迭代式
2.架構典型組成部分
程序組織
主要的類
數據設計
業務規則
用戶界面設計
資源管理
安全性
性能
可伸縮性
互用性
國際化/本地化
輸入輸出
錯誤處理
容錯性
架構的可行性
過度工程
關於買還是造
關於複用的決策
變更策略
架構的總體質量
3.設計的層次
軟件系統
分解爲子系統或包
分解爲類
分解成子程序
子程序的內部的設計
4.啓發式方法
找出現實世界中的對象
形成一致的抽象
封裝實現細節
當繼承能簡化設計時就繼承
隱藏祕密
找出容易改變的區域
保持鬆散偶合
查閱常用的設計模式