答CSDN关于建模的系列问题
最近工作一直比较忙,很多想法没时间写下来,最近回复了CSDN杂志社的一系列相关的建模问题,顺便贴在这里,欢迎大家讨论。
以下是我对建模的一些看法
1 你怎么看待建模?
作为一个程序员,可能每个人都经历过这样一个阶段,在需求分析完毕后,立刻开始建立数据模型,也就是把表结构设计出来,然后根据功能需求和表结构开始进行简单设计,大部分设计文档为Word和Excel,然后就着手进行编码。很多经验比较丰富的程序员用这种方法也可以很快把系统开发出来,这种方法的基本思想是使用数据库来表示业务模型,那么是否就不需要建模了呢?我们深入考虑一下,就我们广泛使用的关系数据库来说,它是否能确切的描述业务模型呢,显然答案是否定的。一个简单的二维表只能描述相对单一的对象,对于语义丰富的对象来说,显然就勉为其难了。基于面向对象设计和CBD(Component Based Design)设计方法,基于软件的高内聚,松耦合原则,基于提高软件生产率和可维护性的考虑,目前软件建模已经是商业软件开发过程中不可或缺的一部分部分了。
简单来说,建模就是使你能够逐层深入解决问题的办法,建模能够确认系统的功能需求并为业务系统建立模型,根据场景为系统提供相应的设计模式,根据需求划分出子系统。
说到这里,我们就不能不提UML了,UML(Unified Modeling Language,统一建模语言)是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,同样,在网站设计或以网站为表现形式的各种网络应用项目中,UML也表现出强大的作用。UML能够描述系统的静态结构和动态行为:静态结构定义了系统中重要对象的属性和操作以及这些对象之间的相互关系;动态行为定义了对象的时间特性和对象为完成目标任务而相互进行通信的机制。UML不是一种程序设计语言,但我们可以用代码生成器将UML模型转换为多种程序设计语言代码,或使用反向生成器工具将程序源代码转换为UML模型。这就是OMG组织正在力推的MDA,除了UML之外,建模语言还新增加了XMI和MOF,感兴趣的可以到相关的MDA网站查找它们的定义。
我们可以看的出,建模不是编码,利用同样的UML模型可以生成不同语言的框架代码,而且可以通过反向生成,在编写代码过程中及时更新UML模型,这对系统分析员和项目管理人员来说是梦寐以求的,也就是MDA要实现的。
建模必定会使软件开发走向成熟。
建模工具推荐使用Rational Rose、Together。
2 公司的建模现状
本公司作为一个面向全球Out Sourcing业务的软件外包公司,始终采用规模化和标准化的开发过程和建模方法。由于用友软件工程公司是CMM3级,目前正在全力推进CMM5的工作,所有CMM KPA(关键过程域)的实施能够保证从公司高层的组织模型就支持这样的开发过程。目前用友软件工程采用的软件开发过程是基于RUP开发方法,并结合用友十几年的软件开发经验建立的一整套符合自己的开发过程和开发标准,对需求,分析与设计、实现、测试和实施都做了标准的过程定义,同时提供相关的模板、模式、样例、规范、检查单等,并从组织级加以保证,软件建模是目前用友软件开发过程中的核心过程。
同时我们提供了可复用的应用软件开发平台,这个平台提供了一整套基于J2EE和.NET架构的相关应用,基于这个平台可以迅速开发出相关业务程序。
目前我们需要持续改进的方面就是提高项目开发过程中的可复用度,提升开发人员素质,进行持续技术改进。针对这些我们都会成立相关的Pat小组,根据CMM的标准KPA对我们的过程进行改进。
目前Eclipse的EMF(Eclipse Modeling FrameWork)、Rational的XDE、Borland的Together都是以Modeling为核心的技术架构,都对MDA进行了不同程度的实现,XDE和Together现在已经是商业软件,估计不久的将来EMF就会集成到IBM WSAD的某个版本中。还有两款MDA工具,分别是OptiamlJ和ArcStyler,据说不错,笔者还没有试用过。
就目前趋势来看,随着大厂商对MDA支持力度的加大和OMG组织的影响力,笔者觉得,软件建模未来的趋势就是MDA,驱动模型架构,大家应该记住这个名字。
身边越来越多的人开始使用Mac,经常被问道Mac的使用问题和技术问题。遂决定,每天发布一则#Mac技巧#。同时发布于微博和微信公众账号“Mac技巧”,微信号sagacity-mac,有微信账号的童鞋扫描下图片或搜索微信号即可