使用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阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,087评论 18 139
  • 有一阵子各大媒体充满此类报道,主题是男人体验女性分娩之痛。先是两名荷兰知名男主持在电视节目中亲身体验了分娩时的阵痛...
    像一棵开花的树阅读 2,280评论 7 7
  • 年纪大了,会开始思考和反省,在之前是从来不会考虑的东西,慢慢的放在了心里;不喜欢的人或事,少了;不能理解的一些,也...
    Joysmile阅读 169评论 0 0
  • J神说需要更新测试版本9.0.0-SNAPSHOT为了支持AGP 3.0。 Github issue#863给出了...
    minminaya阅读 3,693评论 1 2