开发流程和方法
成功的软件开发需要以下因素:
需要得到理解和遵循的原则。
进行了正式说明的基于经过验证的最佳实践的方法和技术。
可以进行定制的流程。
方法内容
方法内容 描述需要生成什么内容、如何执行相关工作以及由谁执行。
方法内容构件包括:
角色:定义技能和工作产品职责。软件架构师 就是角色的一个例子。
工作产品:任务的结果,可以为交付内容,也可以不是交付内容。服务模型 就是工作产品的一个例子。
任务:特定角色执行的步骤序列。任务使用输入工作产品来生成或修改输出工作产品。标识服务 就是任务的一个例子。
指南:文档说明。术语表、模板、示例 和工具使用指导信息 都是指南。
流程
流程 用于将方法内容组织到开发周期中,并指定要完成的工作的顺序。要完成的工作的顺序独立于开发生命周期模型(如瀑布式或迭代)。可以将流程视为工作流或分解结构。通过流程,项目经理可以确定在项目的每个阶段需要哪些人员以及修改了哪些工作产品。如果熟悉 Rational Unified Process (RUP),则可以将 RUP 规程(如分析与设计实现)视为方法内容,而将 RUP 阶段(如细化和构造)视为流程元素。
务必将方法和流程这两个概念加以区分,并提供框架来支持分别对其进行修改。
IBM Rational Method Composer (RMC) 是基于 Eclipse 的方法与流程创作平台,用于集成、定制、代码化和发布流程。
软件流程工程元模型
本部分将讨论开发流程。软件流程工程元模型(Software Process Engineering Metamodel,SPEM)是正式描述软件开发流程的的标准规范。
元数据
元数据即关于数据的数据。例如,关于所录制的歌曲的元数据可能包括关于演唱者、专辑、作曲、长度或质量的信息,而数据则是音频记录本身。
模型
RUP 将模型定义为系统的抽象表示或模拟,可从特定的角度提供对系统的完整描述。模型经常用于更好地了解系统如何工作,或用于记录实际实现的设计决策。模型经常由多个不同类型的部分组成。这些部分作为模型元素进行归类。
自动化与转换
SOA 设计与开发平台应该允许进行模型的半自动化转换,从而从高抽象级别转换到低抽象级别,最终转换为代码。例如,UML-to-Java转换能从 UML 类关系图生成 Java 代码。
Eclipse Modeling Framework
作为开源 Eclipse 项目,Eclipse Modeling Framework (EMF) 包括了一个模型元模型(建模领域的元模型)。以下是 EMF 网站上提供的定义:
“EMF 是用于基于结构化数据模型构建工具和其他应用程序的建模框架和代码生成工具。通过采用 XML 元数据交换(XML Metadata Interchange,XMI)格式描述的模型规范,EMF 提供了工具和运行时支持,从而为模型生成一组 Java 类;这包括一组适配器类(支持查看模型和基于命令对模型进行编辑)和一个基本编辑器。
核心 EMF 框架包括用于描述模型的元模型 (Ecore),并为模型提供运行时支持,包括更改通知、采用缺省 XMI 序列化的保存支持以及用于对 EMF 对象进行常规操作的非常高效的反射应用程序编程接口(Application Programming Interface,API)。”
EMF 与 UML 的区别何在?
EMF 是建模框架(包括元模型),而 UML 是规范。以 Eclipse UML2 项目为例,该项目是基于 EMF 的 UML 元模型实现,支持为 Eclipse 平台开发 UML 建模工具。从这个角度而言,可以将 EMF 元模型 (Ecore) 视为用于在 Eclipse 平台上实现 UML 模型的元模型。
统一建模语言 (UML)
“统一建模语言 (UML) 是行业标准语言,用于指定、可视化、构造和记录软件系统的构件。它简化了软件设计的复杂流程,为构造创建“蓝图”。”来源:Object Management Group (OMG)
UML 的好处在于其具有广泛的行业支持。该规范最初于 1997 年提交给 OMG,拥有很多供应商的设计与开发环境的全面支持,如 IBM Rational Software Modeler (RSM) 或 IBM Rational Software Architect (RSA)。
作为 OMG 标准,该规范的当前正式版本为 2.1.1。其中定义了 13 组概念 和归入两个类别的关系图类型:
结构;类、对象、组件、组合结构、包、部署
行为:用例、活动、状态机、序列、通信、计时、交互概述
UML 是一种通用建模语言,其主要优势之一是能够使用 UML 概要针对领域特定的建模工作进行扩展。
图 2. UML 类关系图
模型驱动的体系结构
模型驱动的体系结构(Model-Driven Architecture,MDA)为业务和技术提供独立的模型,能满足业务和技术不断更改的情况下的需要。以下是摘自 OMG MDA 用户指南的定义:
“OMG 的 MDA 是一种在软件开发中使用模型的独立于供应商的方法。MDA 提供了相应的方法,支持提供用于以下方面的工具:
指定独立于为其提供支持的平台的系统
指定平台
为系统选择特定的平台
将系统规范转换为针对特定平台的规范
MDA 的主要目标是通过从关注点的体系结构分离来实现可移植性、互操作性和可重用性。”
MDA 的核心是系统(现有或以后的系统)、平台(提供 J2EE 或 Web 服务等功能)和视角(关注特定概念的抽象概念)之类的概念。
MDA 定义以下模型:
计算独立模型(Computation-Independent Model,CIM):用于定义功能的需求的领域模型。
平台独立模型(Platform-Independent Model,PIM):独立于可以采用其进行构建的技术的业务功能和行为模型。
平台特定模型(Platform-Specific Model,PSM):将 PIM 的规范与特定类型的平台的使用方式进行组合。
MDA 定义了转换,以将系统的模型转换为同一个系统的另一个模型(如从 PIM 到 PSM)。将一个模型转换为另一个模型的方法使用映射进行说明。
MDA 的主要目标之一是允许提供设计及为其提供支持的开发工具。
模型驱动的开发
本部分目前所介绍的内容(即模型和转换)形成了模型驱动的开发(Model-Driven Development,MDD)的基础,该方法有时候也称为模型驱动的软件开发(Model-Driven Software Development,MDSD),是采用 MDA 作为说明标准的软件工程方法。模型驱动的开发 (MDD) 是基于模型和转换的软件开发方法。MDD 支持采用半自动化方式生成代码,可使用一组模型到模型转换以及模型到代码转换从高级业务分析模型生成代码。此功能以一组模型的定义、模型实例的完整性和转换中使用的不同模型间的元素的映射作为后盾。另外,MDD 支持对变更的影响进行分析。
IBM Rational Software Delivery Platform (SDP) 支持使用 MDD(或其他方法,如业务驱动的开发)方法进行端到端企业解决方案的团队开发。"业务驱动的开发(Business-Driven Development,BDD)是一种基于角色的集成软件开发方法,能使业务和 IT 保持一致,可大幅度提高业务的性能。“BDD 也使用模型,关注的是业务和 IT 模型在整个 SOA 生命周期中的协作”(请参见本系列的第 1 部分)。IBM BDD 方法通过 IBM Software Delivery Platform 支持各种角色,如业务分析人员、IT 架构师、J2EE 开发人员或集成开发人员。
请参见参考资料中提供的 IBM Systems Journal 文章的链接,IBM 思想领袖 (thought leader) 在其中深入地讨论了模型驱动的软件开发方法。
可重用资产规范
可重用资产规范(Reusable Asset Specification,RAS)于 2005 年开始采用,是用于描述可重用软件资产的结构、内容和说明的 OMG 标准。RAS 的目标是提供有关如何以一致的标准方式打包资产的最佳实践。按照规范中的定义,RAS 资产的核心特征包括:
- 分类:资产相关的上下文。
- 解决方案:资产中包含的构件。
- 用法:有关安装、使用和自定义资产的规则。
- 相关资产:此资产如何与其他资产相关。
构件的类型可以由其文件名后缀决定,如 .xml、.txt、.doc 或 .java;也可以由其用途决定,如用例模型或分析模型。由于软件资产 是较为宽泛的术语,RAS 还提供了用于描述特定资产类型的概要。此概念与 UML 概要相同。可以使用 UML 概要来扩展独立于领域的 UML。类似地,可以采用领域特定(如 Web 服务)的 RAS 概要来扩展独立于领域的 RAS。
RAS 资产的文件扩展名为 .ras,打包为 .zip 文件,这意味着其中包含一个清单,可以使用 WinZip 将其打开。图 3 摘自 RAS 规范,说明了核心 RAS 资产的主要部分。
图 3. 核心 RAS 资产的主要部分
posted on 2009-04-05 12:59
shivaree 阅读(196)
评论(0) 编辑 收藏