OOAD(Object Oriented Analysis and Design) 面向?qū)ο蟮姆治龊驮O(shè)計
定義OOA階段
--建立針對業(yè)務(wù)問題域的清晰視圖
--列出系統(tǒng)必須要完成的核心人物
--針對問題域建立公共詞匯表
--列出針對此問題域的最佳解決方案
此階段要解決的核心問題是"what to do?"
定義OOD階段
設(shè)計階段主要解決以下問題
--如何解決具體的業(yè)務(wù)問題
--引入系統(tǒng)工作所需的支持元素
--定義系統(tǒng)的實現(xiàn)策略
此階段要解決的核心問題是"How to do?"
抽象(abstract)
- 忽略掉一個對象或?qū)嶓w的細(xì)節(jié)而只關(guān)注其本質(zhì)特征的過程
- 簡化特征的過程
- 幫助用戶和對象交互
封裝(encapsulation)
- 隱藏數(shù)據(jù)和實現(xiàn)
- 提供公共方法供用戶調(diào)用功能
- 對象的兩種視圖
---外部視圖:對象能做的工作
---內(nèi)部視圖:對象如何完成工作
繼承(inheritance)
- 通過存在的類型定義新類型的機制
- 通常在兩個類型之間存在"is a"或"kind of"這樣的關(guān)系
- 通過繼承可實現(xiàn)代碼重用,另外繼承也是多態(tài)的基礎(chǔ)
多態(tài)(polymorphism)
- 一個名稱,多種形態(tài)
- 基于繼承的多態(tài)
- 調(diào)用方法時根據(jù)所給對象的不同選擇不同的處理方式
- 如Football--paly():使用腳來完成
- Basketball--play():使用手來完成
關(guān)聯(lián)(association)
- 對象之間交互時的一種引用方式
- 當(dāng)一個對象通過對另一個對象的引用去使用另一個對象的服務(wù)或操作時,兩個對象之間便產(chǎn)生了關(guān)聯(lián)
- 如person使用computer,person與computer之間就存在了關(guān)聯(lián)關(guān)系
聚合(aggregation)
- 關(guān)聯(lián)關(guān)系的一種,一個對象成為另一個對象的組成部分
- 是一種關(guān)系較強的關(guān)聯(lián)
- 在兩個對象之間存在"hasa"關(guān)系,一個對象作為另一個對象的屬性存在,在外部對象被生產(chǎn)時,可由客戶端指定與其關(guān)聯(lián)的內(nèi)部對象
- 如汽車與輪胎,輪胎作為汽車的一個組成部分,它可以和汽車分別生產(chǎn)以后裝配起來使用,但汽車可以換新輪胎,輪胎也可以卸下來給其他汽車使用.
組合(composition)
- 當(dāng)一個對象包含另一個對象時,外部對象負(fù)責(zé)管理內(nèi)部對象的生命周期的情況
- 關(guān)聯(lián)關(guān)系中最為強烈的一種
- 內(nèi)部對象的創(chuàng)建由外部對象自己控制
- 外部對象不存在時,內(nèi)部對象也不能存在
- 如電視機與顯示器
內(nèi)聚和耦合(cohesion & conpling)
內(nèi)聚:度量一個類獨立完成某項工作的能力
耦合:度量系統(tǒng)內(nèi)或系統(tǒng)之間依賴關(guān)系的復(fù)雜度
設(shè)計原則:增加內(nèi)聚,減少耦合
域模型
- 域模型是面向?qū)ο蟮?在面向?qū)ο笮g(shù)語中,域模型也稱之 為設(shè)計模型.域模型由以下內(nèi)容組成:
---具有狀態(tài)和行為的域?qū)ο?br> ---域?qū)ο笾g的關(guān)系
* 關(guān)聯(lián)
* 依賴
* 聚集
* 一般化(泛化)
傳統(tǒng)開發(fā)過程(瀑布模型)
缺點:無法適應(yīng)變化,"軟件危機",真實開發(fā)中,客戶會經(jīng)常修改需求,瀑布模型并不能解決這個問題
OOAD的開發(fā)過程
- 將大項目分解為一些子項目
- 使用uml工具
- 統(tǒng)一軟件開發(fā)過程是一個迭代遞增的開發(fā)過程
迭代,遞增的項目生命周期
- 項目是迭代,遞增的
- 迭代是指生命周期中的一個步驟
- 迭代導(dǎo)致"遞增"或者是整個項目的增長
- 大項目分解為子項目
- 在每一個迭代的階段,應(yīng)該做以下工作
---選擇并分析相關(guān)用例
---根據(jù)所選架構(gòu)進(jìn)行設(shè)計
---在組件層次實現(xiàn)設(shè)計
---在驗證組件滿足用例的需求 - 當(dāng)一次迭代滿足目標(biāo)后,開發(fā)進(jìn)入下一個迭代周期
迭代,遞增生命周期的主要階段
inceotion-start up
elaboration-refine
construction-implement
teansition-promotion
- 每一個周期包含一次或多次迭代
- 一個階段的結(jié)束稱之為"里程碑"
細(xì)化階段
本階段的增量集中于
---高層的分析與設(shè)計
---建立項目的基礎(chǔ)框架
---監(jiān)督主要的風(fēng)險因素
---制定達(dá)成項目目標(biāo)的創(chuàng)建計劃
移交階段
本階段的增量集中于
---向用戶發(fā)布產(chǎn)品
---beta測試
---執(zhí)行性能調(diào)優(yōu),用戶培訓(xùn)和接收
每一個階段所含工作流
每一次增量都由5部分工作流組成
---需求與初始分析
---分析
---設(shè)計
---實現(xiàn)
---測試
---每一次迭代執(zhí)行工作流的深度不同
---早期的迭代在深度上覆蓋初始工作流,后期迭代在深度上覆蓋
后期工作流
---80/20原則
迭代,遞增生命周期的優(yōu)勢
- 降低成本
- 便于更好地維護項目進(jìn)度
- 便于團隊的協(xié)作開發(fā)
- 便于適應(yīng)用戶需求的動態(tài)變化