内容简介
Markus Völter 模型驱动的软件开发(MDSD)是当前受到开发人员和研究人员高度关注的开发范型。随着OMG的MDA 和Microsoft的Software Factories的出现,MDSD方法已经越来越受到程序员的关注,并且成为一些国际协会(例如OOPSLA、JAOO和OOP)的重点讨论议题。 MDSD使用域特定语言创建模型,这种模型以有效的、域特定方式表达应用程序结构或行为。通过一系列模型转换过程,这些模型随后被转换为可执行的代码。本书是一本面向软件架构师和开发人员的实践指南,包括了大量实践范例和丰富的案例研究。
建模是一种关键的工程工具。在分析和设计复杂系统的时候,工程师们通常要创建模型。模型是对一个系统及其环境的一种抽象。模型允许工程师们有效地表达自己对系统的关注,例如回答特定的问题或者对设计做出必要的修改。每个模型的创建都是有目的的。特定的模型也许适合解答一类特定的问题。在这种情况下,对于模型和实际系统而言,这类问题的答案都是一样的。然而,这个特定的模型却不一定适合解答其他类问题。构造模型也比搭建实际系统花费少。例如,为了检查结构的安全性,国内的工程师们建造了静态和动态的桥梁结构模型。这是因为与建造真实的桥梁相比,用建模的方法观察桥梁在何种情况下倒塌的确花费更少且更加有效。 在软件开发中,模型由来已久。在过去的几十年中,软件行业内出现了许多分析和设计方法。每一种方法都有自己的建模方法和表示法。近年来,统一建模语言(Unified Modeling Language,UML)得到了显著的发展。现在,UML对市场的渗入程度要大于以前任何一种建模表示法的渗入程度。尽管如此,分析和设计模型很少能和代码具有相同的地位。绝大多数软件项目的现实使模型并不会随代码的更新而实时更新,因此它们会随时间的过去而被废弃并失去价值。 模型驱动软件开发(Model-Driven Software Development,MDSD)将分析和设计模型与代码同等对待。将该模型和代码更好地集成起来可以通过模型来大大增加有效改进的机会,而不仅仅是直接修改代码。MDSD涉及到许多不同的技术,这些技术贯穿了整个软件开发过程,包括模型驱动需求工程、模型驱动设计、通过模型生成代码、模型驱动测试及模型驱动软件演变等。 对象管理组(Object Management Group,OMG)首次提出的模型驱动体系结构(Model-Driven Architecture,MDA)使人们对软件建模和模型驱动技术越来越感兴趣。然而,这种概念的提出有利有弊。在积极的方面,值得高兴的是,建模已经引起了人们的很大兴趣,并且各个组织正在尝试使用模型驱动技术改进自己目前的实践。与此同时,围绕MDA的大肆市场宣传倾向于产生一些不切实际的期望。不考虑这些宣传,的确可以认为MDSD提供了很多思想,其中许多思想可以用在现今的实际情况中。认识到这些潜在的发展趋势需要深刻地理解目前的MDSD技术、其适用性及其局限性。 本书的作者站在MDSD研究和实践的前沿。在一些OOPSLA会议上,Markus和Jorn曾经组织并参与了一系列MDSD工作室。Simon参与了OMG对模型变换的标准化。所有的作者都在若干领域内倡导将这项技术用于实践,涉及的领域涵盖了诸如b+m、Siemens和BMW等小型公司和大型公司的企业应用和嵌入式软件。 很高兴能够把这本书推荐给大家。本书是模型驱动领域内不可多得的一本书。它不但谈到了前景,而且还谈到了目前可能实现的内容以及如何实现。介绍完一些为数不多但非常必要的基本概念和术语之后,本书还介绍了许多涉及范围很广的MDSD技术课题,例如元建模、组件体系结构及组成、代码生成、模型变换、MDA标准和MDSD工具。作者采取的实际动手操作的方法也很好。该方法通过具体的建模实例和代码片断阐明了可用的工具和技术,而且还给出了大量的实用提示和解决问题的提示。除了一些技术主题以外,作者还提出了一种将测试、版本控制、过程管理和采纳策略等基本软件工程方面应用于MDSD时的处理方式,这种方式很容易理解。这些内容是通过两个案例研究完成的,这两个案例都是受到了实际应用程序的启发,源自于作者的集体经验。 作者为MDSD描绘出了广阔的前景,它将超越MDA,涵盖一系列相关的方法,包括软件产品生产线、特定域语言、软件工厂以及面向方面的和生成程序设计。如同在任何一个新兴的、动态的以及仍在逐渐发展的领域内一样,现今的模型驱动领域内大量相互竞争的思想、概念和类似的术语可能会产生混淆。因此,为了清晰、和谐地描绘出模型驱动这一领域,作者做了大量的筛选工作。他们在书中所做的这方面的工作极其出色。 欢迎大家系统地研究这个激动人心的新领域,本书将是一个绝佳的起点。 Krzysztof Czarnecki 2006年1月 于滑铁卢