統(tǒng)一建模語言UML可以很好的幫助我們分析開發(fā)中遇到的不斷增長且日趨復(fù)雜的需求徐钠,這在其他的諸如C++或者java語言開發(fā)的復(fù)雜系統(tǒng)中早已經(jīng)得到驗證兵睛。但是在以object-c作為主導(dǎo)開發(fā)語言的ios應(yīng)用開發(fā)中辆影,使用者卻并不多見疾宏。
究其原因昭卓,大部分的UML工具愤钾,并未做到對OSX的支持瘟滨,如Rational Rose;另外一些支持OSX的UML工具能颁,也僅僅支持UML的一個子集杂瘸,如DiagrammixLite僅僅支持類圖。
StarUML是目前我嘗試過的眾多mac版建模工具中不錯的一個伙菊。
一 败玉、綜述
StarUML是一個開源的統(tǒng)一建模語言(UML)工具。是一種創(chuàng)建類圖镜硕,并能夠自動生成對應(yīng)代碼的工具(當(dāng)然目前暫時不支持object-c代碼的生成)运翼。
盡管StarUML暫時還不支持oc代碼的生成,但是在比較復(fù)雜的應(yīng)用開發(fā)中兴枯,借由其引入UML進行需求分析血淌、設(shè)計分析、文檔輸出念恍,確實能為我們的開發(fā)工作提供助力六剥。
下面我就主要來梳理如何在應(yīng)用開發(fā)中引入StarUML晚顷。
二 峰伙、安裝
首先,我們必須先安裝將要使用的軟件该默。
StarUML 瞳氓,是一個開放源碼軟件, 遵循GPL協(xié)議許可(GNU公共許可證) 栓袖,并免費提供下載匣摘。
因此,只需要到官網(wǎng)下載對應(yīng)的dmg文件安裝即可裹刮,下載鏈接如下:
http://staruml.io/download
三音榜、創(chuàng)建工程
安裝后,打開應(yīng)用便可以開始建模工作捧弃。
StarUML啟動后的界面如下圖所示:
這只是個單純的類圖赠叼,對于從零起步的應(yīng)用,一開始肯定無法具體到類圖的層面违霞。所以建議新建一個項目嘴办,在進行了用例圖,包圖等分析后买鸽,再做類圖涧郊。
選擇File->New From Template->UML Conventinal便可創(chuàng)建一個比較通用的工程模型。
建好的工程如下圖所示:
這個工程包含了Use Case Model眼五、Analysis Model妆艘、Design Model彤灶、Implementation Model、Deployment Model以及UMLStandardProfile批旺。其中UMLStandardProfile是提供給我們使用的屬性集枢希,可以不用關(guān)注,其他的都是要輔助我們分析的工具朱沃。
默認的工程名為Untitled苞轿,可以通過選中工程,編輯Properties中的name項逗物,來修改工程名搬卒。
四 、用例圖
用例圖主要用來描述“用戶翎卓、需求契邀、系統(tǒng)功能單元”之間的關(guān)系。它展示了一個外部用戶能夠觀察到的系統(tǒng)功能模型圖失暴。幫助開發(fā)團隊以一種可視化的方式理解系統(tǒng)的功能需求坯门。
用例圖所包含參與者(Actor)、用例(Use Case)逗扒、子系統(tǒng)(Subsystem)古戴、關(guān)系。
用例圖中涉及的關(guān)系有:關(guān)聯(lián)矩肩、泛化现恼、包含、擴展黍檩。如下表所示:
一個簡單的闡述上面各種角色與關(guān)系的用例圖如下圖所示:
五 叉袍、類圖
在UML類圖中,常見的有以下幾種關(guān)系: 泛化(Generalization), 實現(xiàn)(Realization)刽酱,關(guān)聯(lián)(Association)喳逛,聚合(Aggregation),組合(Composition)棵里,依賴(Dependency)
- 泛化(Generalization):是一種繼承關(guān)系润文,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為衍慎。例如:老虎是動物的一種转唉,即有老虎的特性也有動物的共性。
- 實現(xiàn)(Realization):是一種類與接口的關(guān)系稳捆,表示類是接口所有特征和行為的實現(xiàn).
- 關(guān)聯(lián)(Association):是一種擁有的關(guān)系赠法,它使一個類知道另一個類的屬性和方法,在代碼中體現(xiàn)在類和成員變量之間
- 聚合(Aggregation):是整體與部分的關(guān)系,且部分可以離開整體而單獨存在砖织。如車和輪胎是整體和部分的關(guān)系款侵,輪胎離開車仍然可以存在。聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種侧纯,是強的關(guān)聯(lián)關(guān)系新锈;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系眶熬。
- 組合(Composition):是整體與部分的關(guān)系妹笆,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關(guān)系娜氏,沒有公司就不存在部門拳缠。組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強的關(guān)系贸弥,它要求普通的聚合關(guān)系中代表整體的對象負責(zé)代表部分的對象的生命周期窟坐。
- 依賴(Dependency):是一種使用的關(guān)系,即一個類的實現(xiàn)需要另一個類的協(xié)助绵疲,所以要盡量不使用雙向的互相依賴.
**各種關(guān)系的強弱順序:
泛化 = 實現(xiàn) > 組合 > 聚合 > 關(guān)聯(lián) > 依賴 **
下面這張類圖哲鸳,比較形象地展示了各種類圖關(guān)系:
六 、組件圖
組件圖是用來描述系統(tǒng)中的各組件之間的關(guān)系盔憨。組件圖主要是為系統(tǒng)架構(gòu)師對整個系統(tǒng)的解決方案的自然形成徙菠,可以通過組件圖的形式把系統(tǒng)的大體功能進行區(qū)分和設(shè)計。組件圖中涉及的元素如下:
(1)般渡、組件:我們知道組件是組件圖中最基本的組成元素懒豹,組件上面已經(jīng)講述了組件的定義芙盘。這里就不在多介紹驯用,組件圖組成的基本單位即組件。
(2)儒老、容器:可以為多個組件提供服務(wù)的管理容器蝴乔,容器中的組件相互交互。
(3)驮樊、包:可以看作一個子系統(tǒng),其實也可以看作是特殊的組件薇正。
(4)、約束:用于定義接口規(guī)范囚衔。
(5)挖腰、給組件圖中的相應(yīng)元素添加相應(yīng)注釋信息。
一般意義組件圖如下所示:
七练湿、總結(jié)
通過以上的描述猴仑,我們已經(jīng)基本清楚,UML是如何通過組件圖把系統(tǒng)功能進行抽象和分離肥哎,再通過功能流程細分后通過類圖去構(gòu)建每個流程步驟中的每個類應(yīng)具有的個方法辽俗。達到最終細分實現(xiàn)整個工程的目的疾渣。
現(xiàn)在有了StarUML,在開發(fā)復(fù)雜ios應(yīng)用的時候,也可以按照這個步驟逐步來分解細化我們的工作啦崖飘。
希望本文的闡述榴捡,可以帶給您幫助。