UML
Unified Modeling Language (UML)又稱統(tǒng)一建模語言或標(biāo)準(zhǔn)建模語言芥玉,是始于1997年一個(gè)OMG標(biāo)準(zhǔn)锹淌,它是一個(gè)支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段提供模型化和可視化支持垄琐,包括由需求分析到規(guī)格边酒,到構(gòu)造和配置。
十年前此虑,UML很火甚纲,那時(shí)候絕對(duì)裝B利器,機(jī)子里面不裝一個(gè)Rapsody或rose啥的你都不敢出去裝架構(gòu)師朦前。在入金這種強(qiáng)調(diào)敏捷開發(fā)的時(shí)代介杆,當(dāng)時(shí)再提uml的時(shí)候年輕的臉蛋上出現(xiàn)的都是WTF的表情。
今天在知乎的一個(gè)話題“ [UML 還有用嗎韭寸?]”上看到相關(guān)的討論 春哨,正方反方各有意見。我更認(rèn)同的看法是:
單純的分“有用”還是“沒用”恩伺,很容易陷入二元論的爭論赴背,UML既不可能包打天下,也不可能是一無是處,我的看法是“有用凰荚,但不是很有用”燃观。
任何工具的存在都應(yīng)該著眼于高效解決人們生活中遇到的問題。在現(xiàn)在敏捷開發(fā)的時(shí)代便瑟,項(xiàng)目已經(jīng)不可能一次性做到最終完美的狀態(tài)缆毁。但是敏捷開發(fā)并不意味著還沒有建立起業(yè)務(wù)模型就開始coding。
一些書籍到涂、文章脊框、博客大談“編碼的藝術(shù)”,很多也屬于概念不清践啄,文中探討的根本不是編碼的技能浇雹,而是分析技能甚至是業(yè)務(wù)建模技能。編碼確實(shí)有編碼的技能屿讽,但到了編碼時(shí)還在思考訂單和商品昭灵、發(fā)票的關(guān)系是什么,相當(dāng)于護(hù)士已經(jīng)把注射器拿在手里了聂儒,還在思考病人可能是什么病虎锚,開什么藥硫痰。
光喊口號(hào)“先做最重要的需求”是沒用的衩婚,你得知道哪些需求最重要。掌握業(yè)務(wù)建模技能效斑,能幫助你準(zhǔn)確定位最重要的需求非春。光喊口號(hào)“分離變化”是沒用的,你知道哪些容易變缓屠,哪些不容易變嗎奇昙?掌握分析設(shè)計(jì)技能,能讓你看到變和不變的部分敌完。
上面說的是通過UML這個(gè)工具的使用可以幫助人對(duì)整個(gè)項(xiàng)目有在全局上的理解和把控储耐。在團(tuán)隊(duì)開發(fā)過程中,UML還可以起到降低溝通成本的作用滨溉。
團(tuán)隊(duì)的溝通效率遠(yuǎn)遠(yuǎn)勝過一個(gè)完美無瑕的方案∈蚕妫現(xiàn)在在我的團(tuán)隊(duì)里面,溝通的時(shí)候晦攒,能站著說的絕不坐著講闽撤,能再白板上畫圖說明白的,絕不用ppt脯颜。
在這個(gè)基礎(chǔ)上哟旗,上古的UML給我們留下了不錯(cuò)的抓手。
UML定義了5類,10種模型圖
五種類圖定義:
1.用例圖:從用戶角度描述系統(tǒng)功能闸餐,并指各功能的操作者饱亮。
2.靜態(tài)圖:包括類圖,包圖舍沙,對(duì)象圖近尚。
類圖:描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu)
包圖:是包和類組成的,表示包與包之間的關(guān)系场勤,包圖描述系統(tǒng)的分層結(jié)構(gòu)
對(duì)象圖:是類圖的實(shí)例
3.行為圖:描述系統(tǒng)動(dòng)態(tài)模型和對(duì)象組成的交換關(guān)系戈锻。包括狀態(tài)圖和活動(dòng)圖
活動(dòng)圖:描述了業(yè)務(wù)實(shí)現(xiàn)用例的工作流程
狀態(tài)圖:是描述狀態(tài)到狀態(tài)控制流,常用于動(dòng)態(tài)特性建模
4.交互圖:描述對(duì)象之間的交互關(guān)系
順序圖:對(duì)象之間的動(dòng)態(tài)合作關(guān)系和媳,強(qiáng)調(diào)對(duì)象發(fā)送消息的順序格遭,同時(shí)顯示對(duì)象之間的交互
合作圖:描述對(duì)象之間的協(xié)助關(guān)系
5.實(shí)現(xiàn)圖:
配置圖:定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu)
10種模型圖
(1)、用例圖:展示系統(tǒng)外部的各類執(zhí)行者與系統(tǒng)提供的各種用例之間的關(guān)系
(2)留瞳、類圖:展示系統(tǒng)中類的靜態(tài)結(jié)構(gòu)(類是指具有相同屬性和行為的對(duì)象拒迅,類圖用來描述系統(tǒng)中各種類之間的靜態(tài)結(jié)構(gòu))
(3)、對(duì)象圖:是類圖的一種實(shí)例化圖(對(duì)象圖是對(duì)類圖的一種實(shí)例化)
(4)她倘、包圖:是一種分組機(jī)制璧微。在UML1.1版本中,包圖不再看作一種獨(dú)立的模型圖)
(5)硬梁、狀態(tài)圖:描述一類對(duì)象具有的所有可能的狀態(tài)及其轉(zhuǎn)移關(guān)系(它展示對(duì)象所具有的所有可能的狀態(tài)以及特定事件發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移情況)
(6)前硫、順序圖:展示對(duì)象之間的一種動(dòng)態(tài)協(xié)作關(guān)系(一組對(duì)象組成,隨時(shí)間推移對(duì)象之間交換消息的過程荧止,突出時(shí)間關(guān)系)
(7)屹电、合作圖:從另一個(gè)角度展示對(duì)象之間的動(dòng)態(tài)協(xié)作關(guān)系(對(duì)象間動(dòng)態(tài)協(xié)作關(guān)系,突出消息收發(fā)關(guān)系)
(8)跃巡、活動(dòng)圖:展示系統(tǒng)中各種活動(dòng)的執(zhí)行流程(各種活動(dòng)的執(zhí)行順序危号、執(zhí)行流程)
(9)、構(gòu)件圖:展示程序代碼的物理結(jié)構(gòu)(描述程序代碼的組織結(jié)構(gòu)素邪,各種構(gòu)件之間的依賴關(guān)系)
(10)外莲、配置圖:展示軟件在硬件環(huán)境中(特別是在分布式及網(wǎng)絡(luò)環(huán)境中)的配置關(guān)系(系統(tǒng)中硬件和軟件的物理配置情況和系統(tǒng)體系結(jié)構(gòu))
用例圖
類圖
對(duì)象圖
https://www.lookmw.cn/doc/epgvni.html
包圖
http://blog.csdn.net/kimylrong/article/details/40043389
狀態(tài)圖
http://www.cnblogs.com/sura/archive/2012/07/01/2572083.html
順序圖
http://blog.csdn.net/lishehe/article/details/8243806
合作圖
http://www.cnblogs.com/wolf-sun/p/UML-collaboration-diagram.html
活動(dòng)圖
http://www.uml.org.cn/oobject/201409092.asp
構(gòu)件圖
http://www.cnblogs.com/finehappy/archive/2009/11/24/1609352.html
配置圖
http://blog.csdn.net/fanxiaobin577328725/article/details/51657122
建模過程
- 第一步:描述需求
- 第二步:根據(jù)需求建立系統(tǒng)的靜態(tài)模型,以構(gòu)造系統(tǒng)的結(jié)構(gòu)
- 第二步:描述系統(tǒng)的行為
其中第一步與第二步中所建立的模型都是靜態(tài)的兔朦,包括用例圖偷线、類圖(包括包圖)、對(duì)象圖烘绽、構(gòu)件圖和配置圖等六種圖淋昭。
第三步中所建立的模型或者可把執(zhí)行或者表示執(zhí)行時(shí)的時(shí)序狀態(tài)或交互關(guān)系,它包括狀態(tài)圖安接、活動(dòng)圖翔忽、順序圖和合作圖等四種圖英融。
可用以下常用視角來描述一個(gè)系統(tǒng):
- (1)、系統(tǒng)的使用實(shí)例:從系統(tǒng)外部的操作者的解度描述系統(tǒng)的功能
- (2)歇式、系統(tǒng)的邏輯結(jié)構(gòu):描述系統(tǒng)內(nèi)部的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為驶悟,即從內(nèi)部描述如何設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)功能
- (3)、系統(tǒng)的構(gòu)成:描述系統(tǒng)由哪些程序構(gòu)件所組成
- (4)材失、系統(tǒng)的并發(fā)性:描述系統(tǒng)的并發(fā)性痕鳍,強(qiáng)調(diào)并發(fā)系統(tǒng)中存在的各種通信和同步問題
- (5)、系統(tǒng)的配置:描述系統(tǒng)的軟件和各種硬件設(shè)備之間的配置關(guān)系
startUml工具請(qǐng)參考 http://www.umlchina.com/Tools/Newindex1.htm
參考文檔