技术开发 频道

模型驱动软件开发实战步骤

【IT168 技术文档】

  有人说:今年是AJAX年,AJAX作为软件系统表现层实现技术,怎么能和改变软件开发方式的模型驱动开发模式相比呢?DSM、Together 2006等都在2006不断亮相,因此,说2006年是领域模型年一点也不过分,因为这是一个软件新旧时代的开始之年,数据库时代已经过去。领域模型时代已经来临!

  过去,当我们面对一个新的业务需求时,我们总是从先建立数据表结构开始,这种面向数据表的分析设计方法已经逐步被面向模型的分析设计方法替代。

  使用数据表分析需求,无法涵括项目的全部需求设计,例如系统的状态无法统一设计,最终导致每个程序员都可以直接操控系统的状态,导致整个系统状态运行混乱;使用数据表分析,还非常容易将实体表和关系混合在一起,造成分析者视觉混乱,无法正确分析出系统的真正基本实体;使用数据表分析还会导致软件系统以数据库为中心的编码架构,进而产生传统过程化编程风格,难于维护和拓展,甚至性能低下,将系统负载都集中在数据库服务器端,走上传统的大型机集中式计算模式,而不是分布式计算模式;使用数据表分析还会丧失多层结构引以为豪的中间层,回复到过去的两层结构,更谈不上设计模式应用了。

  领域建模提倡的面向模型的分析设计方法,系统一开始我们就首先确立领域模型Domain Model,以及它们之间的关系,进而可以交由程序员分别实现表现层、业务服务层和持久层,通过使用Jdon Framework(以下简称JF)等模型驱动框架,结合FDD等模型驱动的工程方法,从而正确无误地、且快速高质量地完成一个软件开发过程。

  下面我们从分析、设计和开发几个环节说明一下时下流行的最新软件开发模式:

  MDA步骤

  Models 建模

  Abstraction 抽象细化。落实细节。

  Platform 平台架构选择,J2EE还是.NET,J2EE中选择如何架构,下面案例我们是选择Struts+JdonFramework+Hibernate架构平台,所以,目前JF属于整个模型驱动开发环节中Platform部分。

  Model transformation 模型传递,将模型设计传递为java的类代码。

  The MDA value proposition

  DSM(Domain-Specific Modeling)是在上述MDA基础上,加强平台定义映射和模型映射灵活性和自住性,不象MDA工具,一出厂这个工具就确定死了平台和技术细节。

  MDA工具和DSM将模型驱动软件开发过程自动化,但是实际中,更多人工手工介入,下面展示这个过程。

  论坛系统的模型驱动开发

  首先,我们使用UML用例图来完整清晰地表达一下一个新系统的需求,从而才能够保证正确地建模。

  比如一个论坛的简单需求如下:

  从这个需求中,我们需要发现那些有一定内容的实体对象,Actor1表示用户角色,用例图可以说用来表示“什么人做什么事情”,我们只要把“事情”抽象出来,作为实体对象,可能就是我们的领域模型(Domain Model),上图中发言用例实际可理解为用户发表言论,按照“什么人做什么事情”分析方法,实际是“用户”(什么人) + “发表”(做) + “言论”(事情),我们可以总结这里的“事情”是“言论”,“言论”作为实体对象,也就是Message(消息 帖子)。

  “发言”实际就是模型Message的创建,有创建必有修改,增删改查CRUD功能必会有。

  “回复”实际也是Message对象的创建,只不过有父子关系罢了。使用同样的方法可以从“浏览论坛”中分析出 Forum(论坛)这个领域对象。

 

0
相关文章