UML了解
為什么說(shuō)工程開(kāi)發(fā)交流的語(yǔ)言是UML
簡(jiǎn)單的圖形是不精確的
自然語(yǔ)言的描述是不精確的
溝通需要一門(mén)語(yǔ)言
工程化的過(guò)程我們需要用的不是容易引起歧義的自然語(yǔ)言弟翘,而是嚴(yán)謹(jǐn)統(tǒng)一的模型化語(yǔ)言即UML
UML讓我們用一種語(yǔ)言井誉,相同的方式進(jìn)行交流
作計(jì)劃泊交,做需求,我們不用中文泽铛,而用UML
UML我們用它的三個(gè)方面:草圖、藍(lán)圖、代碼設(shè)計(jì)圖
學(xué)好UML和看圖說(shuō)話的道理是一樣的胞四,記住兩個(gè)要素:節(jié)點(diǎn)和聯(lián)系
UML圖形架構(gòu)分三大類(lèi):
對(duì)象:類(lèi)圖、組件圖伶椿、部署圖
交互(行為):用例圖辜伟、時(shí)序圖氓侧、協(xié)作圖、活動(dòng)圖
狀態(tài):狀態(tài)圖
我們的世界是三維立體的导狡,我們需要從三個(gè)方向觀察物體约巷,才能有一個(gè)較好的理解。所以我們應(yīng)該學(xué)會(huì)從三個(gè)角度用UML來(lái)描述軟件旱捧。
可以通過(guò)三張圖來(lái)描述:用例独郎、類(lèi)圖、時(shí)序圖(或活動(dòng)圖)
UML入門(mén)
用例圖
用例(Use Case)是幫助角色確定系統(tǒng)使用情況的UML組件
用例組(UseCase Group)就是從用戶(hù)的角度出發(fā)對(duì)如何使用系統(tǒng)的描述
用例圖(Use Case Diagram)是用圖形的方式來(lái)描述場(chǎng)景
用例在最早是以表的形式展示廊佩,簡(jiǎn)稱(chēng)用例卡片
用例圖要素:參與者(主囚聚,附加,后臺(tái))标锄、假設(shè)條件顽铸、前置條件、場(chǎng)景中的步驟料皇、后置條件
在StarUml中用例圖的元素:包(Package)谓松、用例(UseCase)、角色(Actor)践剂、關(guān)聯(lián)(Association)鬼譬、定向關(guān)聯(lián)(DirectedAssociation)、泛化(Generalization)逊脯、依賴(lài)(Dependency)优质、包含(Include)、擴(kuò)展(Extend)军洼、系統(tǒng)邊界(System Boundary)
Package主要用來(lái)分類(lèi)巩螃、模塊、子模塊
用例是實(shí)際描述的一個(gè)具體動(dòng)作匕争,一般用動(dòng)賓短語(yǔ)
Association避乏、DirectedAssociation關(guān)聯(lián)就是陳述性語(yǔ)句,如小張喝水
Generalization就是繼承
依賴(lài)甘桑、包含拍皮、擴(kuò)展類(lèi)似
系統(tǒng)邊界就是劃分模塊區(qū)間
用例圖的作用
用例圖用來(lái)描述需求場(chǎng)景
在與用戶(hù)交流過(guò)程中快速建立用戶(hù)業(yè)務(wù)描述,并且跟用戶(hù)確認(rèn)
設(shè)計(jì)好的用例圖用來(lái)檢驗(yàn)程序?qū)崿F(xiàn)場(chǎng)景
用例圖示例:
用例圖相關(guān)疑問(wèn)
為何一定要使用用例圖概念跑杭,把用戶(hù)的需求描述記錄下來(lái)不可以么
這樣做在實(shí)際中往往行不通铆帽。對(duì)于用戶(hù)的描述,我們往往要用一種結(jié)構(gòu)組織起來(lái)德谅,用例就提供了這種組織結(jié)構(gòu)锄贼。在記錄客戶(hù)的交談結(jié)果以及將這些結(jié)果與開(kāi)發(fā)者溝通的時(shí)候,這些結(jié)構(gòu)尤為重要
我們和客戶(hù)交談的時(shí)候女阀,我們所做的僅限于他們告訴我們的用例么
當(dāng)然不是宅荤,事實(shí)上要搞清楚客戶(hù)告訴了你什么,還要發(fā)掘客戶(hù)沒(méi)有告訴你什么
獲取用例的難度有多大
列出系統(tǒng)的用例一點(diǎn)也不難浸策,但在深入研究每個(gè)用例冯键,并且讓用戶(hù)列出每個(gè)場(chǎng)景的步驟的時(shí)候,會(huì)需要經(jīng)驗(yàn)和技巧
在高層用例圖中庸汗,并沒(méi)有顯示出參與者和用例之間的關(guān)聯(lián)惫确,這是為什么
高層用例圖出現(xiàn)在與用戶(hù)會(huì)談的早期階段,這個(gè)階段它仍然是一個(gè)考慮不成熟的產(chǎn)物蚯舱,其主要目標(biāo)是找出系統(tǒng)的總體需求及系統(tǒng)的邊界和范圍改化,因此暫時(shí)不需要關(guān)聯(lián)
我們需要畫(huà)UML大圖么僅僅知道每種類(lèi)型的圖什么時(shí)候使用還不夠么
如果你理解了UML的組織結(jié)構(gòu),即使遇到前所未遇的問(wèn)題你也能處理枉昏,你可以重新組織UML元素以便適應(yīng)工作需要
針對(duì)商場(chǎng)購(gòu)物畫(huà)用例圖
狀態(tài)圖
狀態(tài)圖就是開(kāi)關(guān)陈肛,是描述狀態(tài)變化的圖形
狀態(tài)圖描述了一個(gè)對(duì)象狀態(tài)與狀態(tài)的轉(zhuǎn)變并且給出了狀態(tài)變化序列的起點(diǎn)和終點(diǎn)
狀態(tài)圖元素:狀態(tài)節(jié)點(diǎn)(Composite State)、狀態(tài)子節(jié)點(diǎn)(Submachine State)兄裂、初始狀態(tài)(Initial State)句旱、結(jié)束狀態(tài)(Final State)、交匯點(diǎn)(junction->一個(gè)口多輸入輸出)晰奖、選擇點(diǎn)(Choice->單輸入輸出)谈撒、淺層歷史狀態(tài)(Shallow History)、深層歷史狀態(tài)(Depp History)匾南、同步(Fork)啃匿、對(duì)象流程結(jié)束(Exit Point)、狀態(tài)傳遞(Transition)蛆楞、自我傳遞(Self Transition->入口動(dòng)作溯乒、出口動(dòng)作,中間動(dòng)作)
狀態(tài)圖相關(guān)疑問(wèn)
什么時(shí)候會(huì)用到狀態(tài)圖:需求過(guò)程臊岸,需要描述一個(gè)對(duì)象的狀態(tài)跟蹤的時(shí)候橙数,比如一個(gè)表單在不同環(huán)境審批的狀態(tài)
開(kāi)始建立狀態(tài)圖的最好方法:首先列出對(duì)象狀態(tài),然后將注意力集中在狀態(tài)的轉(zhuǎn)移上帅戒。當(dāng)研究每個(gè)轉(zhuǎn)移的時(shí)候灯帮,要估計(jì)是否觸發(fā)事件或者執(zhí)行某個(gè)動(dòng)作
狀態(tài)圖是否必須有終止?fàn)顟B(tài):不一定,有的狀態(tài)永遠(yuǎn)是活動(dòng)的
狀態(tài)圖的部圖技巧:圖要清晰逻住,回避交叉點(diǎn)
狀態(tài)圖示例:
時(shí)序圖
時(shí)序圖是描述一個(gè)時(shí)間段的不同角色之間的業(yè)務(wù)情況
我們通常用時(shí)序圖來(lái)畫(huà)出流程钟哥,時(shí)序圖和協(xié)作圖是類(lèi)似的,掌握一種即可
時(shí)序圖元素:對(duì)象(Lifeline)瞎访、對(duì)象消息傳遞(Message)腻贰、自我消息傳遞(Self Message)、組合碎片(CombinedFragment)扒秸、交互操作(Interaction Use)播演、框架(Frame)
時(shí)序圖多做分析圖:業(yè)務(wù)流程的分析圖和程序調(diào)用的分析圖
時(shí)序圖相關(guān)疑問(wèn)
我們?cè)谀挠脮r(shí)序圖:
需求階段-分析按照時(shí)間關(guān)系的流程的時(shí)候
設(shè)計(jì)階段-分析程序之間調(diào)用的時(shí)候
時(shí)序圖不僅可以用于系統(tǒng)分析冀瓦,還可以用來(lái)說(shuō)明一個(gè)組織中各種交互關(guān)系。把組織中的重要角色標(biāo)志為對(duì)象写烤,對(duì)象之間的消息就標(biāo)識(shí)了角色的控制轉(zhuǎn)移
時(shí)序圖示例:
協(xié)作圖
協(xié)作圖與時(shí)序圖類(lèi)似翼闽,協(xié)作圖也是展現(xiàn)對(duì)象交互的圖形
協(xié)作圖和時(shí)序圖的異同
同:協(xié)作圖和時(shí)序圖是語(yǔ)義等價(jià)的
異
協(xié)作圖強(qiáng)調(diào)的是交互語(yǔ)境和參與交互的對(duì)象整體組織
時(shí)序圖強(qiáng)調(diào)的是交互時(shí)間順序
協(xié)作圖和時(shí)序圖可互轉(zhuǎn)
協(xié)作圖相關(guān)疑問(wèn)
在UML建模時(shí)有需要包含時(shí)序圖和協(xié)作圖兩種圖嗎
兩種圖包含是個(gè)好主意。時(shí)序圖重在表示時(shí)間關(guān)系洲炊,協(xié)作圖重在描述對(duì)象之間的關(guān)系感局。不過(guò)二圖取其一也可以,因?yàn)樗鼈冋Z(yǔ)義相同暂衡,可以借助工具自動(dòng)互轉(zhuǎn)
協(xié)作圖示例:
活動(dòng)圖
活動(dòng)圖用來(lái)描述一個(gè)過(guò)程或者操作的工作步驟询微,類(lèi)似于流程圖
活動(dòng)圖元素:動(dòng)作狀態(tài)(Action)、子活狀態(tài)(StructuredActivity)狂巢、開(kāi)始狀態(tài)(inital)撑毛、結(jié)束狀態(tài)(Final)、同步(fork)隧膘、選擇(Decision)代态、流程結(jié)束(Flow Final)、對(duì)象流程(Object Node)疹吃、接收狀態(tài)(Accpet Signal)蹦疑、發(fā)送狀態(tài)(Send Signal)、狀態(tài)傳遞(Control Flow)萨驶、自我傳遞(Control Flow)歉摧、垂直泳道(Swimlane)、水平泳道(Swimlane)
活動(dòng)圖相關(guān)疑問(wèn)
活動(dòng)圖的必要與否
活動(dòng)圖就是用來(lái)描述流程的腔呜∪拢活動(dòng)圖能表現(xiàn)多個(gè)對(duì)象之間的復(fù)雜活動(dòng)關(guān)系,比時(shí)序圖更有表現(xiàn)力核畴。如收錄系統(tǒng)的流程圖時(shí)序圖就表現(xiàn)不出來(lái)膝但。我們?cè)谶x擇時(shí)優(yōu)先選擇時(shí)序圖,時(shí)序圖做不到的用活動(dòng)圖谤草。
活動(dòng)圖示例
類(lèi)圖
復(fù)雜的類(lèi)圖
類(lèi)圖是用來(lái)描述對(duì)象及對(duì)象之間關(guān)系的圖
類(lèi)圖在需求階段和設(shè)計(jì)階段有不同的含義
需求階段類(lèi)圖可以看做對(duì)象圖
MDA模型驅(qū)動(dòng)的基礎(chǔ)就是對(duì)象
類(lèi)圖用來(lái)描述實(shí)體對(duì)象的跟束,和用例圖同等重要
類(lèi)圖和設(shè)計(jì)的關(guān)系,類(lèi)圖和數(shù)據(jù)庫(kù)的關(guān)系
類(lèi)圖元素:子系統(tǒng)(Subsystem)丑孩、包(Package)冀宴、類(lèi)(Calss)、接口(interface)温学、枚舉(Enumeration)略贮、信號(hào)(Signal)、異常(Signal)、端口(Port)逃延、局部(part)览妖、關(guān)聯(lián)(Association)、定向關(guān)聯(lián)(Directed Association)真友、聚合(Aggregation)黄痪、組合(Composition)、泛化(Generalization)盔然、依賴(lài)等關(guān)系(Dependency)、實(shí)現(xiàn)(Realization)是嗜、關(guān)系類(lèi)(AssociationClass)愈案、連接(Connector)、對(duì)象(Object)鹅搪、鏈接(Link)
聚合是空心組合是實(shí)心站绪,組合是同生共死的,聚合如公司的組成丽柿,組合如房屋的組成
泛化就是繼承
依賴(lài)在類(lèi)中會(huì)有創(chuàng)建被依賴(lài)類(lèi)的方法恢准。如公司類(lèi)依賴(lài)用戶(hù)管理類(lèi)
關(guān)聯(lián)類(lèi)是中間關(guān)系類(lèi)
關(guān)聯(lián)就好比公司和員工的關(guān)系,鏈接就好比我們公司和我的關(guān)系
類(lèi)圖相關(guān)疑問(wèn)
不是程序員需要類(lèi)圖么:有必要甫题,類(lèi)圖其實(shí)是描述實(shí)體的對(duì)象圖馁筐。雖然它的類(lèi)、接口坠非、實(shí)現(xiàn)等特性在其它場(chǎng)景用不上敏沉。但是它們的屬性,操作等來(lái)描述對(duì)象是最清晰的炎码。
聚合具有傳遞性
類(lèi)圖的作用
需求階段定義對(duì)象屬性
定義數(shù)據(jù)庫(kù)關(guān)系
設(shè)計(jì)階段定義包盟迟、類(lèi)結(jié)構(gòu)和關(guān)系
組件圖
軟件組件可以是軟件系統(tǒng)的一個(gè)物理單元、數(shù)據(jù)文件潦闲、表格攒菠、可執(zhí)行文件、動(dòng)態(tài)鏈接庫(kù)等歉闰;這些都被定義為組件辖众。
定義系統(tǒng)組件,接口及關(guān)系的圖就是組件圖
組件元素:接口(interface)新娜、組件(Component)赵辕、組件實(shí)例(Component instance)、工件(Artifact)概龄、端口(port)还惠、部分(part)、關(guān)聯(lián)(Association)私杜、依賴(lài)(Dependency)蚕键、實(shí)現(xiàn)(Realization)救欧、鏈接(Link)、連接器(Connector)
組件圖示例:
部署圖
部署圖反應(yīng)了工件如何在系統(tǒng)硬件上發(fā)布
剪貼畫(huà)可以和UML混用锣光,來(lái)表達(dá)更明確的圖例
部署圖示例:
案例展示
移動(dòng)點(diǎn)菜系統(tǒng)
設(shè)計(jì)四要素
項(xiàng)目前提和評(píng)估
模塊子模塊,功能子功能
具體用例
界面原型
需求成文示例