“實戰(zhàn)OO”學(xué)習(xí)筆記
作者:徐建祥(netpirate@gmail.com)
時間:2006/01/11
來自:http://www.anymobile.org
“實戰(zhàn)OO”系列文章是徐鋒發(fā)表在2004年《程序員》雜志的一系列關(guān)于面向?qū)ο蟮娜腴T文章,通過圖書館的實例,深入淺出地講述了基于軟件建模技術(shù)的面向?qū)ο箝_發(fā)過程。介紹了面向?qū)ο蟮姆治觯?/SPAN>OOA)和設(shè)計(OOD),并對OOP做了指導(dǎo),讓你迅速了解OO的威力,成為你分析系統(tǒng)和設(shè)計解決方案的工具。
全系列包括:
1)域建模
2)用例建模
3)魯棒性分析
4)交互建模
5)過程總結(jié)
6)部署與實施
7)補遺
1、 問題域建模,概念模型
輔助性的,靜態(tài)模型,幫助開發(fā)團(tuán)隊了解客戶所處的世界。
從現(xiàn)實問題域中找到最有代表性的概念對象;整理成類圖;改成文字描述,基本完成術(shù)語表。
a、 概念模型的目的是讓開發(fā)團(tuán)隊對問題域,業(yè)務(wù)知識建立正確的理解;
b、 概念模型是在開發(fā)過程中產(chǎn)生出來的第一個系統(tǒng)的靜態(tài)模型。
2、 用例建模,用例模型
反映系統(tǒng)行為的,動態(tài)模型,幫助開發(fā)團(tuán)隊明白客戶想解決什么問題。
Ivar Jacobson:“用例實例是在系統(tǒng)中執(zhí)行的一系列動作,這些動作將生成特定參與者可見的價值結(jié)果。一個用例定義一組用例實例。”
a、 需求(功能特性)捕獲,編號(FEAT***),以便進(jìn)行跟蹤管理;
b、 識別參與者(actor,與系統(tǒng)交互,系統(tǒng)之外的所有事物);
c、 合并需求,編號實例(UC**),決定用例的優(yōu)先級;
d、 細(xì)化用例描述:搭框架;細(xì)化事件流(溝通);補缺漏(確認(rèn))。
1、 用例名稱:
新增書籍信息(UC01)
2、 簡要說明:
錄入新購書籍信息,并自動存儲建檔。
3、 事件流:
3.1 基本事件流
3.2 擴(kuò)展事件流
4、 非功能需求:
5、 前置條件:
用戶進(jìn)入圖書管理系統(tǒng)。
6、 后置條件:
完成新書信息的存儲建檔。
7、 擴(kuò)展點:
無。
8、 優(yōu)先級:
最高(滿意度5,不滿意度) |
1)前置條件:指在用例啟動時,參與者(Actor)與系統(tǒng)應(yīng)置于什么狀態(tài),這個狀態(tài)應(yīng)該是系統(tǒng)能夠檢測到的、可觀測的;
2)后置條件:用例結(jié)束時,系統(tǒng)應(yīng)置于什么狀態(tài),這個狀態(tài)也應(yīng)該是系統(tǒng)能夠檢測得到的、可觀測的;
3)基本事件流:基本事件流是對用例中常規(guī)、預(yù)期路徑的描述,也被稱為Happy day場景,這時大部分時間所遇到的場景;它將體現(xiàn)系統(tǒng)的核心價值;
4)擴(kuò)展事件流:主要是對一些異常情況、選擇分支進(jìn)行描述。
注:非核心實體無須過渡展開,如四輪馬車,將新增、修改、查詢、刪除,抽象為管理;可以通過包來實現(xiàn)用例層次。
3、 Robustness魯棒分析,健壯性分析
Ivar Jacobson 1991引入,分析與設(shè)計之間的橋梁。
草圖,使得開發(fā)者對于系統(tǒng)細(xì)節(jié)了解得更加清楚。
3.1 分析的作用:
a、 正確性檢查;
b、 完整性檢查;
c、 持續(xù)發(fā)現(xiàn)對象;
d、 對象確定;
e、 初步設(shè)計:將分析的元素,類分為實體對象,控制對象,邊界對象。類似MVC。
實體對象:來自域模型,通常映射到數(shù)據(jù)表或文件中。
控制對象:抽象應(yīng)用程序的執(zhí)行邏輯。
邊界對象:用來完成參與者與系統(tǒng)之間交互的對象。
3.2 分析規(guī)則:
a、參與者,只能夠通過邊界對象與系統(tǒng)交互;
b、邊界對象,只能與控制對象或參與者交互;
c、實體對象,也只能與控制對象交互;
d、控制對象,可以與邊界對象、實體對象交互,但不能與參與者交互。
4、 交互建模
序列圖,協(xié)作圖,詳細(xì)設(shè)計階段。通過尋找對象之間的交互關(guān)系,從而進(jìn)行“行為分配”。
Ivar Jacobson:“只有在所有的用例為所有事件進(jìn)程建立了交互模型之后,才可以確定已經(jīng)發(fā)現(xiàn)系統(tǒng)所需的每個對象所扮演的角色,以及它們的責(zé)任。”
序列圖Sequence diagram:體現(xiàn)事件發(fā)生的次序。
協(xié)作圖Collaboration diagram:通過使用局部圖指明了各個對象之間是如何靜態(tài)相連的。
a、 羅列實體對象;
b、 羅列邊界對象和參與者,放置在左邊;
c、 添加個類的屬性與方法;
d、 引入基礎(chǔ)類;
e、 質(zhì)量評審;
1) 低耦合:耦合性是指兩個類之間的連接強度,耦合性越低,獨立性越高,越靈活。
2) 高內(nèi)聚:內(nèi)聚性是指一個類的屬性和方法高度地集成,內(nèi)聚性越高,設(shè)計越合理。
3) 效率:衡量的要點在于解決方案的執(zhí)行效率是否滿足系統(tǒng)要求。
4) 完整性:是指在任何環(huán)境下都可以重復(fù)使用。
5) 簡單性:類越簡單,出錯的可能性越小,系統(tǒng)的靈活性和可維護(hù)性也越好。
可以使用一些例如OCP、SRP、DIP、LSP原則等經(jīng)典的面向?qū)ο笤O(shè)計原則來衡量。
Robert C Martin《敏捷軟件開發(fā)》
f、 用設(shè)計模式進(jìn)行優(yōu)化。
5、 過程總結(jié)
現(xiàn)代軟件開發(fā)過程:
a、 RUP,Rational公司,Rose軟件,“用例驅(qū)動、以體系結(jié)構(gòu)為中心,迭代、增量的軟件開發(fā)過程。”
RUP軟件開發(fā)分為四個階段:
1) 初始階段:理解和分析需求,生產(chǎn)用例模型框架,對優(yōu)先級較高的用例進(jìn)行細(xì)化;
2) 精化階段:完成部分優(yōu)先級最高的用例開發(fā),并完善出所有的用例模型;
3) 構(gòu)建階段:分為多個迭代,逐步完成不同優(yōu)先級的用例開發(fā);
4) 交付階段:進(jìn)行各種功能、性能測試,進(jìn)行產(chǎn)品化、部署,完成整個系統(tǒng)的開發(fā)工作。
b、 XP,極限編程,“敏捷建模”,以最大化發(fā)揮人的能量為核心目標(biāo),以“小步快走”的邏輯知道開發(fā),12個最佳實踐充分體現(xiàn)了其迭代式開發(fā)的特點。
User Story用戶故事是Kent Beck在極限編程(XP)方法論中推薦的最佳實踐之一。它由客戶參與編寫,說明他們需要系統(tǒng)為他們做什么,一般用客戶的術(shù)語寫就,三句話左右。
敏捷開發(fā):
1) 直接的溝通和交流;
2) 分步實施、及時交付、及時測試;
3) 從簡單開始,逐步完善;
4) 積極主動;
5) 接受變化,響應(yīng)變化,甚至從頭再來。 |
c、 FDD,Feature Drive Develop,特征驅(qū)動開發(fā),Together創(chuàng)始人Peter Coad所創(chuàng)。通過特征來制定開發(fā)計劃,也是每日構(gòu)建為核心,強調(diào)按特征分步開發(fā)和交付。一個特征就是一個小的、具有客戶價值的功能,通常表示為<action><result><object>。
迭代開發(fā)過程:
a、 第一次迭代
1) 捕獲需求
2) 建立初始的領(lǐng)域模型
3) 建立用例模型框架
4) 制定開發(fā)計劃
b、 第二次迭代
1) 關(guān)鍵用例的Robustness分析與交互建模
2) 體系結(jié)構(gòu)設(shè)計
3) 建立類模型
4) 關(guān)鍵用例的開發(fā)與測試
5) 完善用例模型
c、 第n次迭代
完成所有用例的分析、設(shè)計與開發(fā)。
d、 最后的迭代
1) 整體測試:進(jìn)行各種功能、性能和壓力測試。
2) 部署與安裝:生成相應(yīng)的部署圖。
3) 產(chǎn)品化:進(jìn)行一些產(chǎn)品化的包裝。
注:每一次迭代之后,都應(yīng)該交付一個可以運行的中間版本。
6、 部署和實施
構(gòu)件圖:表現(xiàn)系統(tǒng)物理結(jié)構(gòu)。
部署圖:說明系統(tǒng)部署結(jié)構(gòu)。
“構(gòu)件是系統(tǒng)中可替換的物理部分,它包裝了實現(xiàn)而且遵從并提供一組接口的實現(xiàn)。”
1) 實施構(gòu)件:構(gòu)成一個可執(zhí)行系統(tǒng)必要和充分的構(gòu)件,如DLL、EXE文件。
2) 工作產(chǎn)品構(gòu)件:開發(fā)過程的產(chǎn)物,包括創(chuàng)建實施構(gòu)件的源代碼和數(shù)據(jù)文件。
3) 執(zhí)行構(gòu)件:是作為一個正在執(zhí)行的系統(tǒng)的結(jié)果而被創(chuàng)建的,如COM+對象。
構(gòu)件圖:包括構(gòu)件、接口以及各種關(guān)系。
1) 對源代碼進(jìn)行建模:表示出各個不同源程序文件之間的關(guān)系。
2) 對可執(zhí)行的發(fā)布建模:表示出各個執(zhí)行部分之間的信賴和關(guān)聯(lián)關(guān)系。
3) 對物理數(shù)據(jù)庫建模:表示出各種類型的數(shù)據(jù)庫、表之間的關(guān)系。
4) 對可調(diào)整的系統(tǒng)建模:如負(fù)載均衡,故障恢復(fù)等。
部署圖或?qū)嵤﹫D的關(guān)鍵組成部分:節(jié)點和連接;構(gòu)件和連接。
1) 對處理器和設(shè)備建模;
2) 對構(gòu)件的分步建模:通常用來可視化地指定其構(gòu)件的位置和協(xié)作關(guān)系。
7、 其它
活動圖:面向?qū)ο蟮牧鞒虉D。
狀態(tài)圖:用來描述一個特定對象的所有可能狀態(tài)及其引起狀態(tài)轉(zhuǎn)移的事件。
活動圖按照簡繁程度劃分:
1) 基本活動圖。
2) 實例說明。
3) 帶泳道的活的圖。
a、 業(yè)務(wù)建模階段:針對的是職責(zé)對象。
b、 系統(tǒng)設(shè)計狀態(tài)階段:針對的是對象,使用較少,一般使用順序圖。
鏈接:
徐鋒專欄--無名空間
http://blog.csdn.net/fjxufeng/
用例驅(qū)動的需求過程實踐(徐鋒)
http://www.ccw.com.cn/cio/research/info/htm2003/20031223_13XEG.asp
http://www.sawin.cn/doc/SA/REQ/blueski313.htm
廣告管理系統(tǒng)中的UML分析與設(shè)計
http://www.itpmi.com/Article.asp?ArtID=425
銷售管理系統(tǒng)的UML分析與設(shè)計
http://51cmm.csai.cn/ANALYZE/no000081.htm
posted on 2006-01-29 22:35
Xu Jianxiang 閱讀(1044)
評論(0) 編輯 收藏 所屬分類:
Design Research