软件体系结构——第十章<从模型到代码>
一、正向工程
正向工程是指按照软件开发基本过程,将抽象层次较高的静态结构转换为相对具体的模型的过程
-
从类图生成框架代码,简单转换(Rose)
-
从交互图(主要指顺序图)生成类的方法中操作的调用代码框架,主要将交互图中的消息转换为对操作的调用。简单转换(利用IBM Rational Software Architect、Enterpris Architect(EA)等工具)
-
从状态机图生成状态转换控制代码,可以构建无二义的代码实现。复杂转换(利用同上工具)
从类图生成框架代码
什么是框架代码?代码在设计上的初步实现。主要是类定义的基本信息,不包括方法的具体实现
类的框架代码包括那些?
-
属性值定义:名称、类型、缺省值等
-
操作的定义:名称、参数、返回类型等
-
关系——引用属性的表示,等等
根据设计类图产生框架代码(也即类的上述初步核心结构),如:
-
用操作和简单属性定义一个类
-
加入引用属性:用角色名定义引用属性
实例:预定房间场景的VOPC类图
①用操作和简单属性定义一个类(属性、操作)
②加入引用属性(关联和导航;角色名)
二、逆向工程
逆向工程
-
根据源代码导出设计模型,如:
- 对Java语言来说:逆向工程是分析Java代码,然后将源代码转换到Rose模型的类和组件(构件)的过程。
-
设计类图、设计交互图(rose不支持)
逆向工程的主要作用
-
开始编码后,很多地方势必会和设计模型不一致,此时则可通过逆向工程更新原有的设计模型,从而保持设计模型的有效性、一致性
-
已有的系统缺少相关文档,通过逆向工程获得系统的设计模型,以便理解和完善文档
①类、属性和操作
②关系和角色
三、模型驱动构架
问题的提出(模型的构建):模型是应用程序或系统的某些部分的简单抽象表示。用户可以以任意的复杂程度构建模型:从在白板上手绘的方框图,到使用建模工具生成的复杂的UML图。
然而,实际开发却经常脱离模型,模型只作为一个软件系统的蓝图,开发者仍然要手工编写所有的实现代码。
因此,模型驱动开发(MDD,Model-Driven Development)是一种能够将模型与实现更紧密地联系在一起的开发方法。
模型驱动的常见开发技术:
支持MDD的核心技术有两种:
-
模型驱动架构(MDA, Model Driven Architecture) 。MDA 表示了一种模型驱动开发方法的概念框架。
-
模型转换(MT, Model Transformation)