UML分類
UML(unified Modeling Language)統(tǒng)一建模語言UML除了用于軟件設(shè)計(jì)买鸽,還能用于需求分析很泊,在實(shí)際工作中UML恰恰是溝通的良好橋梁。UML能直觀栽烂、形象胚吁、描述出業(yè)務(wù)概念,業(yè)務(wù)流程书聚,客戶的期望和需求唧领。UML官方資料是很枯燥,語法多雌续,實(shí)際工作中用到的語法并不多斩个,我本科軟件工程,學(xué)校開了UML的課驯杜,當(dāng)時(shí)并沒有很好吸收受啥,工作后重新回顧,我寫的的這一系列主要用于需求分析方面。
我們要知道任何工具只是輔助工具滚局,學(xué)習(xí)UML關(guān)鍵在于改變思維習(xí)慣居暖,多鍛煉面向?qū)ο蠓治瞿芰Α?/p>
- UML在實(shí)際中分為下面兩種類別:
我們可以利用結(jié)構(gòu)型的UML圖對(duì)客戶業(yè)務(wù)進(jìn)行結(jié)構(gòu)建模(靜態(tài)),利用行為型的UML圖進(jìn)行行為建模(動(dòng)態(tài))藤肢,這些建奶耄活動(dòng)將幫助我們更好地認(rèn)識(shí)客戶的業(yè)務(wù)和做好業(yè)務(wù)流程再造的工作。
類圖
面向?qū)ο?/h3>
類圖
- ”+“ 表示public - 表示private嘁圈,軟件分析不用理會(huì)全畫成+ 就可以省骂;
- 類圖包含類名,屬性最住,操作钞澳;
關(guān)聯(lián)關(guān)系
關(guān)聯(lián)關(guān)系
如果覺得兩個(gè)業(yè)務(wù)概念之間有關(guān)系但又不確定具體是什么就可以先畫一條線連接起來,為了排版我們也可以用折線涨缚;
- x..y 意思x到y(tǒng)個(gè),x < y
- 表示0到多個(gè)
- 如果A類有一個(gè)成員變量保存的是類B的引用轧粟,也就是說類A可以找到類B,需求分析角度來說就是業(yè)務(wù)概念A(yù)可以找到B
包含關(guān)系(聚合/組合關(guān)系)
空心菱形表示聚合關(guān)系脓魏,實(shí)心菱形表示組合關(guān)系逃延,我們用的時(shí)候可以用“弱”“強(qiáng)”包含關(guān)系來記或者理解;
- “弱”包含指部門沒了轧拄,員工也還在揽祥,或者員工可以有多個(gè)部門,”強(qiáng)“包含指部門沒了檩电,員工也不在拄丰,而且員工只能有一個(gè)部門;
- 同樣*的用法和上面一樣俐末,如果沒有表示1料按;
泛化關(guān)系(繼承)
學(xué)生,老師都”繼承“了員工的屬性卓箫,同時(shí)也有自己的屬性载矿,可以理解為老師,學(xué)生是員工的一種烹卒。在實(shí)際的軟件需求分析工作中闷盔,我們往往有兩種認(rèn)識(shí)事物的角度,我們以員工旅急、學(xué)生逢勾、講師的關(guān)系為例子來說明。
- 角度一:在培訓(xùn)現(xiàn)場(chǎng)藐吮,我們看到的是學(xué)生和講師溺拱,后來你發(fā)現(xiàn)逃贝,原來講師是內(nèi)部員工來的!于是你可以從學(xué)生和講師這兩個(gè)類出發(fā),發(fā)現(xiàn)學(xué)生和講師其實(shí)都是員工!
- 角度二:作為這個(gè)公司的領(lǐng)導(dǎo)迫摔,希望公司形成一一種學(xué)習(xí)和進(jìn)步的風(fēng)氣沐扳,促進(jìn)公司的進(jìn)步,于是領(lǐng)導(dǎo)希望員工之間能互相分享知識(shí)和經(jīng)驗(yàn)句占。從這個(gè)角度看來沪摄,領(lǐng)導(dǎo)先想到的是員工,然后再進(jìn)一步發(fā)現(xiàn)員工可以當(dāng)學(xué)生也可以當(dāng)講師辖众。
依賴關(guān)系
虛線箭頭就是依賴(Dependency)關(guān)系卓起,說明A依賴B和敬,就像煙鬼依賴香煙凹炸。但依賴程度是相對(duì)而言,不一定是A沒有B就不能“生存了”昼弟,具體業(yè)務(wù)邏輯中啤它,對(duì)于某件事情得A需要B的協(xié)助才能完成也是一種依賴關(guān)系;
”遞歸“關(guān)系
描述文件夾與文件的關(guān)系可以如下圖
如果是文件夾下的文件夾下還有文件夾呢舱痘?
無論是弱包含還是強(qiáng)包含变骡,都可以“自包含”。除了“自包含”可以形成“遞歸”芭逝,其實(shí)直線關(guān)系同樣是可以指向自己的塌碌,這個(gè)叫“自關(guān)聯(lián)”,這樣也形成了“遞歸”關(guān)系
這種“遞歸”結(jié)構(gòu)旬盯,一旦展開就會(huì)形成一棵樹型的結(jié)構(gòu)台妆。需求分析時(shí)如果發(fā)現(xiàn)樹型的業(yè)務(wù)結(jié)構(gòu),你可以考慮使用“自包含”或者“自關(guān)聯(lián)”來分析胖翰。其實(shí)“自包含”接剩、“自關(guān)聯(lián)”的說法是不嚴(yán)謹(jǐn)?shù)模皇欠奖阌洃浐屠斫馊龋瑢?shí)際上具體的一個(gè)文件夾是不會(huì)包含自己的懊缺。這里我們需要進(jìn)一一步理解類圖中的每-一個(gè)類所代表的意義,一個(gè)類并不是指具體的一個(gè)業(yè)務(wù)對(duì)象培他,一個(gè)類泛指屬于這個(gè)類的任意一個(gè)業(yè)務(wù)對(duì)象鹃两。
”三角“關(guān)系
當(dāng)列出公司,雇員至少3個(gè)屬性舀凛,我們就會(huì)思考薪金是雇員的關(guān)鍵屬性嗎怔毛?崗位?合同期腾降?公司與雇員在法律上是怎么確立的拣度?那么會(huì)想到公司會(huì)和雇員簽署勞務(wù)合同,那這三者是什么關(guān)系?
要識(shí)別出能表征兩個(gè)類關(guān)系的關(guān)聯(lián)類抗果,難度是有點(diǎn)高筋帖,有這樣的-些步驟:
- 如果覺得兩個(gè)類有關(guān)系,則先拉上一條直線再說冤馏。
- 如果覺得兩個(gè)類有關(guān)系日麸,但怎樣畫都覺得這個(gè)關(guān)系不太合適,那么可以思考是不是漏了一個(gè)關(guān)聯(lián)類逮光。
- 分別列出這兩個(gè)類的關(guān)鍵屬性代箭,思考這些屬性的屬性值是不是由該類本身就可以確定了。例如:如果我們最開始將薪金作為員工的屬性涕刚,那么你可以思考薪金的具體數(shù)字嗡综,是不是員工自已本身可以確定的?你會(huì)發(fā)現(xiàn)薪金其實(shí)是由公司和員工商定后確定的,并不是員工自已本身可以決定杜漠。
-
通過對(duì)屬性的思考极景,可能會(huì)發(fā)現(xiàn)這個(gè)屬性應(yīng)該是屬于另外-一個(gè)類的,思考這個(gè)類是不是能表征原來兩個(gè)類關(guān)系的關(guān)聯(lián)類驾茴。
image
這個(gè)圖可能最體現(xiàn)它們的“三角”關(guān)系了盼樟,關(guān)聯(lián)類也可以表達(dá)成這樣的方式。但我在實(shí)際工作還是以關(guān)聯(lián)類的方式來表達(dá)锈至,我覺得關(guān)聯(lián)類的表達(dá)方式更加貼切和專業(yè)一點(diǎn)晨缴。在具體的需求分析工作中,如果發(fā)現(xiàn)三個(gè)類形成了類似該圖的“三角”關(guān)系峡捡,你可以思考其中一個(gè)類是不是可能是關(guān)聯(lián)類击碗,但要注意并不是凡是出現(xiàn)了“三角”關(guān)系就一定會(huì)有關(guān)聯(lián)類。
類圖的最大魅力在于幫助你發(fā)掘和提煉業(yè)務(wù)模型棋返,其他的非UML圖可能是做不到的延都。