以前老是聽到UML的大名,不過很少去真正地了解它,無非以為只是一種建模的方法,乍看這封面或許和產(chǎn)品經(jīng)理毫無相關(guān),但是認(rèn)真細(xì)讀,其實(shí)和產(chǎn)品經(jīng)理工作方法思考模式都是緊密相關(guān)的,雖然本書涉及更多是關(guān)于軟件產(chǎn)品方面的,但是秉著“世間萬物皆產(chǎn)品”的心態(tài)去閱讀和思考也是能發(fā)現(xiàn)其中的精髓
作者從UML是什么,為什么需要UML開始; 以UML核心元素(版型、參與者、用例、邊界、業(yè)務(wù)實(shí)體、包、分析類、設(shè)計類、關(guān)系、組件、節(jié)點(diǎn))為點(diǎn), 以UML核心視圖(靜態(tài)視圖與動態(tài)視圖)為線, 以UML核心模型(業(yè)務(wù)用例模型、概念用例模型、領(lǐng)域模型、系統(tǒng)用例模型、分析模型、設(shè)計模型、組件模型、實(shí)施模型)為面來介紹UML表示法的內(nèi)涵; 全書以一個案例貫穿始終,并以RUP核心工作流為指引,分別介紹了業(yè)務(wù)建模、系統(tǒng)建模、分析與設(shè)計建模及實(shí)施建模的工作流程、活動集與工件集,幫助你了解軟件生命周期各階段要完成的工作和階段之間工作之間的聯(lián)系與推導(dǎo)
而且本書框架非常好的一點(diǎn)是能逐層深入,從準(zhǔn)備篇(需要了解)--基礎(chǔ)篇(在學(xué)習(xí)中思考)--進(jìn)階篇(在實(shí)踐中思考)--高級篇(在提煉中思考),著實(shí)讓我眼前一亮,因?yàn)樽罱ぷ饕残枰@么一套方法
所以寫讀書筆記過程中,我也希望遵循從了解到思考,再到提煉這過程,看看每個階段對于自己的收獲,所以讀書筆記先針對前兩篇,準(zhǔn)備篇和基礎(chǔ)篇(第一章~第七章),往后還會更新進(jìn)階篇和高級篇的文章
看待世界有兩種方法,一種是面向過程,另一種是面向?qū)ο?。面向過程歸納為結(jié)構(gòu)化程序設(shè)計、DFD圖、ER圖、UC矩陣等,而面向?qū)ο罂蓺w納為繼承、封裝、多態(tài)、復(fù)用等具體技術(shù)。
面向?qū)ο蠓椒軌驅(qū)?fù)雜的系統(tǒng)分解成許多的小零件,就像制造一輛汽車,先標(biāo)準(zhǔn)化生產(chǎn)出汽車的各個零部件,再組裝起來,進(jìn)一步的,當(dāng)需要將汽車和其它元素聯(lián)系時,可以將汽車看成是一個整體,進(jìn)一步抽象。這就是面向?qū)ο蟮膹?qiáng)大之處,可以多層次抽象。不過面向?qū)ο笠灿腥觞c(diǎn),它不能讓我們知道這個世界要如何去抽象,我們抽象的現(xiàn)實(shí)世界是否一致。這時就需要UML這種面向?qū)ο蠓治鲈O(shè)計方法統(tǒng)一可視化語言來描繪。
UML捕獲了現(xiàn)實(shí)世界的人,事,物,規(guī)則,將現(xiàn)實(shí)信息轉(zhuǎn)化成業(yè)務(wù)模型
業(yè)務(wù)模型只是原始需求信息,接下來需要建立計算機(jī)可理解的和可實(shí)現(xiàn)的模型
邊界類(boundary):計算機(jī)的操作都要通過界面進(jìn)行,邊界類就這個界面。邊界類決定了外面能對里面做什么“事”。
實(shí)體類(entity): UML用實(shí)體類來表示現(xiàn)實(shí)世界種參與者完成業(yè)務(wù)目標(biāo)所涉及的事物。
控制類(control):UML采用控制類來表述原始需求中的動態(tài)信息,也就是業(yè)務(wù)和用例場景中的步驟和活動。
概念模型實(shí)例化
以人為本開始
思考下面問題有助于找到參與者
1.誰對系統(tǒng)有著明確的目標(biāo)和要求并且主動發(fā)出動作
2.系統(tǒng)是為誰服務(wù)的
3.參與者也可能是非人類,例如一個每天自動統(tǒng)計網(wǎng)站訪問量報表的系統(tǒng),這個參與者就是一個時間觸發(fā)器,參與者肯定是一個需求的啟動者,如果找不到啟動者,說明這不是一個功能性需求
確定參與者可思考下面問題
1.誰負(fù)責(zé)提供,使用或刪除信息?
2.誰將使用此功能?
3.誰對某個特定功能感興趣?
4.在組織中的什么地方使用系統(tǒng)?
5.誰負(fù)責(zé)支持和維護(hù)系統(tǒng)?
6.系統(tǒng)有哪些外部資源?
7.其他還有那些系統(tǒng)將需要與該系統(tǒng)進(jìn)行交互?
用于定義業(yè)務(wù)的參與者,業(yè)務(wù)主角必須在實(shí)際的業(yè)務(wù)里找到對應(yīng)的崗位或人員
例如定票系統(tǒng)中的人工作機(jī),他的最終目的不是訂票,而是服務(wù)客戶,他屬于系統(tǒng)之內(nèi),所以他是業(yè)務(wù)工人,而不是參與者
完整用例=參與者+前置條件+場景+后置條件,就是一件事情,要完成這件事情,需要做的一系列的活動;而做一件事情可以有很多不同的辦法和步驟,也可能會遇到各種各樣的意外情況,因此這件事情是由很多不同情況的集合構(gòu)成的
要注意的點(diǎn):
1.用例的執(zhí)行結(jié)果對于參與者來說是可觀測的和有意義的。例如系統(tǒng)中有個刪除前自動備份數(shù)據(jù)的操作,這個操作結(jié)果對與參與者是透明的,參與者不是直接受益人,所以他不能稱之為用例
2.用例必然是以動賓短語形式出現(xiàn)的、例如“喝水”是一個有效的用例,而“喝”不是
要思考如下問題
1.您有什么期望
2.打算做些什么事情
3.做這些事情目的是什么
4.希望出現(xiàn)一個什么結(jié)果
1.功能是脫離使用者的愿望而存在的。例如我們描述一個自行車的功能就是他能騎和載物,并無誰來使用它。用例是要從使用者絕度描述使用者愿望
2.功能是孤立的,在系統(tǒng)中,給一個輸入就能得到一個輸出。而用例是一個系統(tǒng)性的工作,這個系統(tǒng)的工作非常明確的去為某個參與者達(dá)成一個特定的目標(biāo)
3.如果非要從功能的角度去解釋用例,那么用例可以解釋為一系列完成一個特定目標(biāo)的功能的組合
一個非常虛無縹緲的概念,它是“事物”展現(xiàn)給外部的一個限定,對于有形事物和無形事物都有區(qū)分
用于業(yè)務(wù)建模階段。業(yè)務(wù)實(shí)體描述了我們使用什么來達(dá)到業(yè)務(wù)目標(biāo),以及通過什么來記錄這個業(yè)務(wù)目標(biāo)。
包括三類:邊界類,控制類,實(shí)體類
分析類三高:
1.高于設(shè)計實(shí)現(xiàn),在為需求考慮系統(tǒng)實(shí)現(xiàn)的時候,可以不必理會復(fù)雜的設(shè)計要求。如應(yīng)用的設(shè)計模式,系統(tǒng)框架等
2.高于語言實(shí)現(xiàn),在需求考慮系統(tǒng)的時候,可以不必理會采用哪一種特性的語言來編碼
3.高于實(shí)現(xiàn)方式,在為需求考慮系統(tǒng)實(shí)現(xiàn)的時候,可以不考慮采用哪一種具體的實(shí)現(xiàn)方式
關(guān)聯(lián)關(guān)系
A—B,它描述不同類的對象之間的結(jié)構(gòu)關(guān)系,就像A知道B的存在一樣
依賴關(guān)系
A----->B 它描述一個對象的修改回導(dǎo)致另一個對象的修改這樣的關(guān)系。猶如B的修改會導(dǎo)致A的修改
擴(kuò)展關(guān)系
它特別用于在用力模型中說明向基本用例中的某個擴(kuò)展點(diǎn)插入擴(kuò)展用例。就像一個用例的“支流”一樣。比如,你在接電話的時候,這時候有另一通電話打進(jìn)來,這時候你而已選擇保持通話去接這個剛來的電話,這個保持通話就是一個擴(kuò)展,它是“可選”的,這與包含關(guān)系有區(qū)別
包含關(guān)系
它和擴(kuò)展關(guān)系的唯一不同就在于他是必選的,例如你去銀行辦理業(yè)務(wù)的時候,無論是取錢,轉(zhuǎn)賬,查看賬戶資料的時候,都必須經(jīng)過一個身份的驗(yàn)證,這一個驗(yàn)證的過程就是一個包含用例
實(shí)現(xiàn)關(guān)系
用于在用例模型鏈接用例和用例實(shí)現(xiàn),說明基本用例的一個實(shí)現(xiàn)方式。例如交納電話費(fèi)這個用例,可以選擇營業(yè)廳交費(fèi),銀行交費(fèi),預(yù)存話費(fèi),這3種方式都是交納電話費(fèi)的一個實(shí)現(xiàn)途徑,所以他們是實(shí)現(xiàn)用例
精化關(guān)系
用于用例模型,精化關(guān)系表示由基本對象可以分解為更明確,精細(xì)的子對象,這些子對象并沒有增加,減少,改變經(jīng)本對象的行為和屬性。例如預(yù)存話費(fèi)這個用例,可以分解為開立賬戶,存入現(xiàn)金,轉(zhuǎn)賬,支付劃賬等精化用例
泛化關(guān)系
泛化關(guān)系表示面向?qū)ο罄锩娴睦^承
聚合關(guān)系
用于類圖,表達(dá)整體部分的語義,且部分可以單獨(dú)存在,例如一個部門由許多人員構(gòu)成,但部門解散了,人員依然存在。
組合關(guān)系
和聚合關(guān)系不同,如果整體部分消失,分部也消失,不能單獨(dú)存在
UML中的靜態(tài)視圖包括:用例圖,類圖,包圖
業(yè)務(wù)用例圖:兩個視角,業(yè)務(wù)主角視角和業(yè)務(wù)模塊視角
業(yè)務(wù)主角視角:從業(yè)務(wù)主角視角來展示業(yè)務(wù)主角在業(yè)務(wù)中使用哪些業(yè)務(wù)用例來達(dá)成業(yè)務(wù)目標(biāo)
業(yè)務(wù)模塊視角:從業(yè)務(wù)模塊視角來展示業(yè)務(wù)領(lǐng)域的業(yè)務(wù)目標(biāo)
業(yè)務(wù)用例實(shí)現(xiàn)圖:業(yè)務(wù)用例實(shí)現(xiàn)圖是來展現(xiàn)業(yè)務(wù)用例有哪些實(shí)現(xiàn)途徑
概念用例視圖:概念用例圖用于展現(xiàn)業(yè)務(wù)用例中經(jīng)過分析分解出來的關(guān)鍵概念用例,并表示概念用例和業(yè)務(wù)用例之間的關(guān)系
系統(tǒng)用例視圖:系統(tǒng)用例圖展現(xiàn)系統(tǒng)范圍,將對業(yè)務(wù)用例進(jìn)行分析以后得到的系統(tǒng)用例展現(xiàn)出來
概念層類圖:根據(jù)業(yè)務(wù)用例來描述出現(xiàn)實(shí)世界中所用到的事物,并把它抽象出類
說明層類圖:在這個層次的類圖考察是類的接口而不是類的實(shí)現(xiàn)
實(shí)現(xiàn)層類圖:在這個層次上,類必須明確采用哪種實(shí)現(xiàn)語言,什么設(shè)計模式,什么通信標(biāo)準(zhǔn)等
包括:活動圖,狀態(tài)圖,時序圖,協(xié)作圖
用例活動:表達(dá)參與者的一個目標(biāo),用例場景表達(dá)如何達(dá)到這個目標(biāo)
對象活動圖:用于展示對象的交互
泳道:代表特定的類,人,部門,層次等對象的職責(zé)區(qū)
業(yè)務(wù)模型時序圖:目標(biāo)是實(shí)現(xiàn)業(yè)務(wù)用例
概念用例時序圖:根據(jù)業(yè)務(wù)模型場景圖
設(shè)計模型時序圖:實(shí)現(xiàn)概念模型某個事件流
業(yè)務(wù)模型協(xié)作圖:只需要將影響對象相互的信息繪制出來
概念模型協(xié)作圖:
設(shè)計模型協(xié)作圖:
靜態(tài)圖是論據(jù),動態(tài)圖事論證,模型提出論點(diǎn),采用論據(jù)來論證論點(diǎn)的過程
完整的業(yè)務(wù)用例模型
1.業(yè)務(wù)用例視圖
2.業(yè)務(wù)用例場景
3.業(yè)務(wù)用例規(guī)約
4.業(yè)務(wù)規(guī)則
5.業(yè)務(wù)對象模型
6.業(yè)務(wù)用例實(shí)現(xiàn)視圖
7.業(yè)務(wù)用例實(shí)現(xiàn)場景
8.包圖
完整的概念用例模型
1.概念用例視圖
2.概念用例分析
3.分析類視圖
4.分析場景
完整的系統(tǒng)用例模型
1.業(yè)務(wù)用例
2.概念用例
3.用例視圖
4.用例規(guī)約
5.補(bǔ)充規(guī)約
6.業(yè)務(wù)規(guī)則
7.用例實(shí)現(xiàn)
8.用例場景
9.分析對象
業(yè)務(wù)建模工作流程
系統(tǒng)建模工作流程
分析設(shè)計建模流程