使用StarUML為iOS項目建模

工欲善其事必先利其器。

統一建模語言UML可以很好的幫助我們分析開發中遇到的不斷增長且日趨復雜的需求,這在其他的諸如C++或者java語言開發的復雜系統中早已經得到驗證。但是在以object-c作為主導開發語言的ios應用開發中,使用者卻并不多見。
究其原因,大部分的UML工具,并未做到對OSX的支持,如Rational Rose;另外一些支持OSX的UML工具,也僅僅支持UML的一個子集,如DiagrammixLite僅僅支持類圖。
StarUML是目前我嘗試過的眾多mac版建模工具中不錯的一個。

一 、綜述

StarUML是一個開源的統一建模語言(UML)工具。是一種創建類圖,并能夠自動生成對應代碼的工具(當然目前暫時不支持object-c代碼的生成)。
盡管StarUML暫時還不支持oc代碼的生成,但是在比較復雜的應用開發中,借由其引入UML進行需求分析、設計分析、文檔輸出,確實能為我們的開發工作提供助力。
下面我就主要來梳理如何在應用開發中引入StarUML。

二 、安裝

首先,我們必須先安裝將要使用的軟件。
StarUML ,是一個開放源碼軟件, 遵循GPL協議許可(GNU公共許可證) ,并免費提供下載。
因此,只需要到官網下載對應的dmg文件安裝即可,下載鏈接如下:
http://staruml.io/download

三、創建工程

安裝后,打開應用便可以開始建模工作。
StarUML啟動后的界面如下圖所示:


StarUML啟動后的界面

這只是個單純的類圖,對于從零起步的應用,一開始肯定無法具體到類圖的層面。所以建議新建一個項目,在進行了用例圖,包圖等分析后,再做類圖。
選擇File->New From Template->UML Conventinal便可創建一個比較通用的工程模型。


創建工程

建好的工程如下圖所示:
建好的工程

這個工程包含了Use Case Model、Analysis Model、Design Model、Implementation Model、Deployment Model以及UMLStandardProfile。其中UMLStandardProfile是提供給我們使用的屬性集,可以不用關注,其他的都是要輔助我們分析的工具。

默認的工程名為Untitled,可以通過選中工程,編輯Properties中的name項,來修改工程名。

四 、用例圖

用例圖主要用來描述“用戶、需求、系統功能單元”之間的關系。它展示了一個外部用戶能夠觀察到的系統功能模型圖。幫助開發團隊以一種可視化的方式理解系統的功能需求。
用例圖所包含參與者(Actor)、用例(Use Case)、子系統(Subsystem)、關系。
用例圖中涉及的關系有:關聯、泛化、包含、擴展。如下表所示:
一個簡單的闡述上面各種角色與關系的用例圖如下圖所示:


用例圖

五 、類圖

在UML類圖中,常見的有以下幾種關系: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

  1. 泛化(Generalization):是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
  2. 實現(Realization):是一種類與接口的關系,表示類是接口所有特征和行為的實現.
  3. 關聯(Association):是一種擁有的關系,它使一個類知道另一個類的屬性和方法,在代碼中體現在類和成員變量之間
  4. 聚合(Aggregation):是整體與部分的關系,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。聚合關系是關聯關系的一種,是強的關聯關系;關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
  5. 組合(Composition):是整體與部分的關系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關系,沒有公司就不存在部門。組合關系是關聯關系的一種,是比聚合關系還要強的關系,它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
  6. 依賴(Dependency):是一種使用的關系,即一個類的實現需要另一個類的協助,所以要盡量不使用雙向的互相依賴.

**各種關系的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴 **
下面這張類圖,比較形象地展示了各種類圖關系:


類圖示例

六 、組件圖

組件圖是用來描述系統中的各組件之間的關系。組件圖主要是為系統架構師對整個系統的解決方案的自然形成,可以通過組件圖的形式把系統的大體功能進行區分和設計。組件圖中涉及的元素如下:
(1)、組件:我們知道組件是組件圖中最基本的組成元素,組件上面已經講述了組件的定義。這里就不在多介紹,組件圖組成的基本單位即組件。
(2)、容器:可以為多個組件提供服務的管理容器,容器中的組件相互交互。
(3)、包:可以看作一個子系統,其實也可以看作是特殊的組件。
(4)、約束:用于定義接口規范。
(5)、給組件圖中的相應元素添加相應注釋信息。
一般意義組件圖如下所示:


組件圖

七、總結

通過以上的描述,我們已經基本清楚,UML是如何通過組件圖把系統功能進行抽象和分離,再通過功能流程細分后通過類圖去構建每個流程步驟中的每個類應具有的個方法。達到最終細分實現整個工程的目的。
現在有了StarUML,在開發復雜ios應用的時候,也可以按照這個步驟逐步來分解細化我們的工作啦。

希望本文的闡述,可以帶給您幫助。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,643評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,782評論 18 139
  • 有一陣子各大媒體充滿此類報道,主題是男人體驗女性分娩之痛。先是兩名荷蘭知名男主持在電視節目中親身體驗了分娩時的陣痛...
    像一棵開花的樹閱讀 2,397評論 7 7
  • 年紀大了,會開始思考和反省,在之前是從來不會考慮的東西,慢慢的放在了心里;不喜歡的人或事,少了;不能理解的一些,也...
    Joysmile閱讀 200評論 0 0
  • J神說需要更新測試版本9.0.0-SNAPSHOT為了支持AGP 3.0。 Github issue#863給出了...
    minminaya閱讀 3,766評論 1 2