uml之实践感悟

简介: 刚出道的时候,做业务系统很喜欢用uml来做分析和设计模型,很喜欢在rose中作以下事情:1.以用户需求作为输入,做用例分析和领域模型设计,得到一个系统用例模型和领域模型2.接下来就做模型迁移(转换),将用例模型和领域模型转换为特定语言环境的设计模型和数据库模型,比如java和oracle,其中还可以在java组件上直接应用23种设计模式。

刚出道的时候,做业务系统很喜欢用uml来做分析和设计模型,很喜欢在rose中作以下事情:
1.以用户需求作为输入,做用例分析和领域模型设计,得到一个系统用例模型和领域模型
2.接下来就做模型迁移(转换),将用例模型和领域模型转换为特定语言环境的设计模型和数据库模型,比如java和oracle,其中还可以在java组件上直接应用23种设计模式。
3.接下来将设计模型和数据库模型正向工程为java代码框架和数据库建库脚本(或者直接在数据库中建表)
4.如果想将代码或者数据库表和设计模型或者数据库模型保持同步,可以进行逆向工程(这些uml工具真的很强大)
4.接下来就是实现所有的代码框架和编写dao组件
5.最后可能的话还可以画一个部署模型

整个路线图看起来很好很强大很清晰,也很和谐。但是做到后来总是很困惑,可能是自己对uml把我不好或者是滥用了uml,那就是:分析模型和设计模型画好后,代码也写了一部分了,结果客户说他的需求要做大的变更。我傻眼了,需求的变化导致分析模型要调整,设计模型也要调整(你不要骂我做的模型不具备可扩展性),代码也要做一部分的调整(记住只是一部分),我该如何下手:
a.修改分析模型,然后将分析模型再转换为设计模型,然后将设计模型再转换为代码模型(框架)和数据库模型
b.直接修改分析模型,直接修改设计模型,直接修改代码和数据库模型
c.直接修改代码和数据库表,然后采用逆向工程方法同步先前的设计模型,数据库模型,然后再逆向工程到分析模型(呵呵,这些uml工具确实很强大)

采用上述a,b,c三种方法都是一件很痛苦的事情,而且会导致分析模型,设计模型和代码模型的不同步,另外,采用方法a很可能导致你已经编写好的代码和数据库脚本被模型转换出来的新代码框架和数据库脚本给覆盖掉。这时你就彻底傻眼了,所有的代码和脚本都得重新来过(谁知到以前的代码是怎么写的,有些人会说你不是有配置库吗,有版本管理吗,把原来的代码考回来不就是了,事情要是有这么简单就好了,关键是你有这么多的时间去反反复复做这些事情吗,项目的进度怎么保证,如果是在单纯地玩玩uml也没什么,关键咱们是在做项目)。
如果项目的规模比较大,大面积出现上述的情况,那么这个项目就很危险了,一般情况下项目都会以失败而终结,当然这是我碰到的一般情况,可能您或者是大家碰到的情况要好些。

 

后来再也不去做那种傻事了,在项目中顶多用uml画画静态的用例图、类图、实体关系图(也叫分析模型,领域模型)以及动态的时序图什么的,作为交流和沟通使用,或者作为文档备案,这样就够了,不再去搞什么正向工程和逆向工程了,更多的时候只是用office word来画几个草图,然后放到需求或者设计文档中就可以了。

 

曾经听一位uml培训老师讲到:只要架构师或者设计师将系统的体系架构和代码框架设计好,剩下的事情只要程序员去填空就可以了。呵呵,我个人觉得这个老师很天真,也很单纯,一个系统不可能就这么简简单单就出来了的,要不还要那么多迭代开发方法干什么。

最后说一下Hashmap与Entity的问题该怎么处理,之前我也不知道怎么处理,后来上面的那位uml培训老师告诉我可以用uml 2.x中的组合结构图(Compostion Construction diagram)来表示复杂的类结构,例如java中的内部类和匿名类。

目录
相关文章
|
5月前
|
敏捷开发 测试技术 uml
UML 在敏捷开发中的应用与实践
【8月更文第23天】统一建模语言 (UML) 是一种广泛使用的图形化语言,用于描述软件系统的设计。它通过各种图表和符号来帮助开发团队理解系统的架构、行为和交互。而敏捷开发则是一种强调快速迭代、客户反馈和持续改进的软件开发方法论。这两种看似风格迥异的方法实际上可以很好地协同工作,以提高软件项目的效率和质量。
146 4
|
8月前
|
uml
UML之类图
UML之类图
106 1
|
8月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
507 1
|
5月前
|
Java uml
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
该博客文章通过UML类图和Java代码示例,展示了如何使用工厂方法模式设计一个支持加法、减法、乘法和除法运算的计算机程序,并严格按照类图设计实现程序。
|
5月前
|
Java uml
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
该博客文章展示了如何使用简单工厂模式设计一个程序,该程序能够根据用户输入的运算符(加、减、乘、除)对两个数进行计算,并提供了相应的UML类图和Java源码实现。
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
|
7月前
|
应用服务中间件 uml
【UML】软件工程中常用图:类图、部署图、时序图、状态图
【UML】软件工程中常用图:类图、部署图、时序图、状态图
1133 1
|
5月前
|
数据可视化 Java uml
精通UML:从类图到序列图的实战指南
【8月更文第23天】统一建模语言(Unified Modeling Language, UML)是一种用于软件工程的标准图形化语言,它提供了一套工具来帮助开发团队可视化、构造和文档化软件系统。在UML中,类图和序列图是最常用也是最重要的两种图。类图用于描述系统的静态结构,而序列图则用于表示对象之间的交互和系统的动态行为。
258 5
|
5月前
|
设计模式 uml
设计模式常用的UML图------类图
这篇文章介绍了UML中类图的基本概念和用途,详细解释了类与接口、类之间的关系,包括继承、实现、组合、聚合、关联和依赖等六种关系,并展示了它们在类图中的表示方法。
设计模式常用的UML图------类图
|
8月前
|
设计模式 数据可视化 程序员
软件设计模式:UML类图
软件设计模式:UML类图
174 1