俯瞰UML

在小公司做事的好处是终于可以眉毛胡子一把抓,来个全栈式控制,好吧,人人都有控制欲。
商业项目中的上游设计一旦展开,UML设计变成一个巨大的工程,每个设计者都被淹没在UML中一根根线条,标记符号,颗粒度的大小争论,optional flow的全与不全,DB ER图上字段的正则等等细节之中,这样的设计往往会要三个月,大规模项目甚至6个月。

从Agile,Scram开始,个人的观点UML完全可以简化下来,收缩在概要层次,然后在开发中细化或者也不一定去细化修改。

简要归纳一下UML最小配置。
UML的关键点是要有映射关系,如同辞典一样可以互相检查,保证可以追踪

Usecase:

一般USECASE的文字记录足够了,因为图形还不如用业务流程图去表示更清晰一些。
UC是对业务流程的归纳总结,是概要设计的基础和源头,包含了客户的要件内容(非性能要求不算)一般和客户的IT部门沟通业务细节,主要靠UC。(UC技巧和注意事项在此不赘述,教科书太多)

UC中可以标记出页面和BusinessRule,为后面的详细设计做准备。
页面是User Interface的重要部分,通常页面的wireframe 设计在概要设计阶段都会给出,这样才能和没有IT经验的客户做比较顺畅的沟通。

BR是详细的业务逻辑实现,一般仅对比较复杂的业务计算逻辑做BR,例如有算法实现或者业务逻辑细节非常复杂,或者要调用其他子系统进行实现。

Sequence图:

UC之后可以写Sequence图,在sequence 图中非常重要的是需要识别object, 在MVC模型中则分为boundary, control and entity, 这些object 是今后类图设计的基础,中大型项目分为概念时序图和分析时序图,概念时序图是给出概要Object,而分析时序图中Object位置则出现的是实际的class 图,和类图要一一对应。

此处的object识别将作为后面类图设计的依据。

Class图:

可以直接写静态类图设计,但也可以一边做时序图的分析模型一边将类中的method/function 剥离分析出来,再填入类图,这样可以保证关键的方法函数被包含。 类图是详细设计,设计过于繁琐细节,会妨碍开发,或者说这部分其实应该由开发人员在开发中完善。
动态生成类图文档可以直接将这步覆盖,但是对于类的分类和粒度选定,确实一定要在设计过程中定下。
通常Object可以是Classe图中的父类、基类、抽象类的基准。

BR:

BR(business rule) 需要在分析时序图中和类方法函数标注对应,基本确定下来在什么类中实现哪部分BR,因为类的重用设计和BR放在何处有紧密联系,如果做得不够好会导致大量代码的拷贝,重复写。

BR当中需要break down 的是: API (调用外部接口) 和 Message (和其他子系统通讯)
有些项目会另外做个对API和Msg的汇总,便于倒过来检查。

页面设计+迁移图:

页面设计非常重要,这部分是和客户沟通的基础,而数据又和背后的数据库,数据模型连携。
页面的wireframe 将页面功能基本理出来。这部分页面设计和美工无关,主要是功能性整理,并要决定有些页面状态更新是否会向后台传送数据,在前端技术发展迅猛的当下,很多功能处理在前端完成,因此这部分的设计需要前端开发经验。
页面设计+页面迁移图,完整说明客户界面和流程。

状态迁移图:

对于一些和流程相关的程序,需要专门写一下状态迁移图,并定义状态标志,这些标志有的是中间暂时状态,数据在过程中被销毁,有的则需要计入数据库或者数据模型以便于跟踪。
状态的标志要和各个类中的关键属性以及DB的字段做好对应。

数据库ER图:

这部分是对前面的综合概括,通常ER和类图有映射关系,POJO,OR映射关系反应了这种关系,MVC模型也被流行很久,但除此之外,要考虑batch 对数据库的修改,但这些通常可以看做是后台操作。

项目的估算:

估算是门非常古老的艺术,对,我说的是艺术,不是技术。
综上所述,开发工数估算应该包含:

类的开发工数估算(包括BR的复杂度)
页面复杂度,包括页面迁移带来的batch 实现难度
外部接口调用复杂度
外部通讯msg 的复杂度

测试一般以比例计算,但是系统间测试最好单独考虑一下。

所谓估算的艺术,是要在以上逻辑性的考虑上再考虑一下客户的预算,横向的比较,此处不做赘述。

为什么需要UML?

对于业务应用的开发,UML是业务层和技术开发层的桥梁,也可以防止功能的遗漏,以及功能需求的暧昧,最终落实到技术语言层面。
对于一些Framework型的项目,最重要的是做好接口的整理。
从技术角度出发的人,可能是从类图的topdown设计开始,而UML是从业务角度,客户需求角度的视角开始。

如何简化UML?

1)BR如果可以独立让开发人员定下来,可以省略,或者仅做简单的标识。
2)关键method 和属性之外,可以省略
3)分析时序图可以省略,仅留概念时序图
4)DB的ER图可以过后补全,但是基本框架要在
5)可以在页面表示的一些机能以及动态联系,可以在时序图和UC中写得较为省略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • 自序 1. 不是每个人都能以产品经理为业,但在我看来,产品经理是一类人,他的做事思路与方法可以解决很多实际的生活问...
    沉沦2014阅读 4,362评论 1 19
  • 我们在进行项目的时候,通过使用 UML 的面向对象图的方式来更明确、清晰的表达项目中的架设思想、项目结构、执行顺序...
    充满活力的早晨阅读 4,915评论 2 34
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • 多态 多态概述 某一个事物,在不同时刻表现出来的不同状态。 举例:猫可以是猫的类型。猫 m = new 猫(); ...
    chongsheng阅读 458评论 3 1
  • 朋友,可能只是陪着走过一段时光的生命亮色,或许能一起走一辈子,或许下一个转身就不见。可能会感伤,但不会苦苦哀求。很...
    听见了吗沉默的声音阅读 203评论 0 0