面向构件软件过程概述


 2006-06-10 00:00:00       758

大约每隔5至10年,软件界就会重定义“问题”,

将其焦点从“产品”转移到“过程”。

--Roger S. Pressman,《软件工程:实践者的研究方法》

Stephen R. Palmer曾指出,“好的过程清晰地定义任务。任务焦点放在结果上而不是细节上……”。因为具体实践是鲜活多变的,定义太多关乎“How”的细节,不利于过程的适应性;而只有将过程划分成不同的子任务,并清晰定义每个任务的目标结果(What),才能更切入本质的东西,从而使项目既可以有效地进行,又能适应一些非常事件及环境的变化。

我们对面向构件软件过程的阐述,将贯彻上述“两个强调”原则--即强调“任务”及其产出的“核心工作产品”。在此基础上,再进一步讲清楚各个任务之间的依从关系、以及各个核心工作产品之间的跟踪关系。

深入理解软件过程

不同的软件过程(如RUP和XP),过程模型会有很大不同。为了考察软件过程的共性,我们来研究软件过程的元模型。图1显示了软件过程元模型。

图1 软件过程元模型(图片来源:Software Process Engineering Metamodel, version 1.1)

软件过程元模型显示了任何软件过程都必不可少的角色、活动、工作产品的概念。角色是对个人或作为开发团队的一组人员职责的规定;活动是角色执行的工作单元;而工作产品是工作的成品或半成品。

角色的职责,具体体现在他执行的活动和负责的工作产品上。工作产品是由活动生产出来的--工作产品是活动的输出:比如制定《编码规范》。然而,活动本身也可能以工作产品为输入--活动可能要求使用工作产品:比如编码活动要参考《编码规范》。当然,工作产品可以既是活动的输入又是它的输出--活动修改工作产品:比如修改《编码规范》。

面向构件软件过程的主要阶段

如图2所示,面向构件的软件过程分为如下五个主要阶段:

*        需求阶段:捕获需求,识别业务构件,归纳业务构件需求;

*        分析与高层设计阶段:分析业务构件,识别服务构件,架构设计,归纳服务构件需求;

*        并行开发与测试阶段:开发并测试服务构件、业务构件、应用系统;

*        提交、发布与部署阶段:提交服务构件、业务构件到构件库,发布应用系统,部署应用系统;

*        应用管理:对上线系统及其中的运行构件实施例行管理,以及各种突发情况的处理维护。

图2   面向构件软件过程的主要阶段

面向构件软件过程的核心工作产品

对于任何软件方法论而言,工作产品都是影响重大的--因为产出工作产品的数量直接决定了软件过程的敏捷程度。

而具体项目的实施,其规范程度和敏捷程度应根据具体项目、具体团队情况而定。因此,我们强调对本软件过程至关重要的核心工作产品,至于还需采用哪些外围工作产品,可由项目团队根据自身情况自行决定。

下列是面向构件的软件过程的核心工作产品:

*        业务构件需求

*        可复用业务构件列表

*        系统架构文档

*        业务构件设计文档

*        服务构件需求

*        可复用服务构件列表

*        服务构件

*        业务构件

*        应用系统

下面说明这些概念之间的跟踪关系在面向构件的软件过程中的体现,如图3所示。

图3 面向构件软件过程的核心工作产品

面向构件软件过程的主要角色

在面向构件的软件过程中,下列角色非常重要:

*        需求分析师

*        领域专家

*        架构设计师

*        开发人员

*        测试人员

*        构件库管理员

*        发布经理

*        工程实施人员

*        应用管理员

*        项目经理

需求分析师

需求分析师是需求捕获与整理方面的专家;并且他应当熟悉面向构件的需求阶段工作的独特之处,最终将需求归纳为业务构件需求。

需求分析师的主要职责:

*        推动需求捕获工作

*        领导领域专家进行需求捕获和整理

*        归纳业务构件需求

*        需求归档

领域专家

既然面向构件方法非常强调企业知识的积累,那么领域专家在该方法中的重要性,就比在一般的方法中要来得大;充分发挥领域专家的作用,目的是更好地把他们头脑中的知识最终转化为商业价值。

领域专家的职责:

*        和需求分析师紧密配合,完成需求捕获工作

*        配合识别业务构件,尽量保证其符合特定业务领域的惯例

*        参与业务构件的评审

*        参与系统级的验收测试

架构设计师

架构设计师在应用系统的组织方式、构成要素、行为契约、架构风格等方面做出决策,从而为后续开发提供明确有力的指导。

架构设计师的职责:

*        业务构件分析

*        应用架构设计

*        按照面向构件的思想,识别构件、确定构件接口和行为

*        决定服务构件需求

*        负责架构归档

*        协助项目经理制定并行开发计划

开发人员

如前所述,面向构件的软件过程提倡“为复用而生产,为使用而组装”。因此,开发人员会有进一步的角色分化(构件开发者和应用组装者)。

总体而言,开发人员的职责为:

*        服务构件的详细设计与实现

*        对服务构件进行单元测试

*        实现业务构件

*        将业务构件组装成应用系统

测试人员

构件是为复用而开发的,测试人员的工作将凝聚在构件之中,随着构件不断地被复用而发挥价值。

测试人员的职责:

*        对业务构件进行集成测试

*        对软件系统进行系统测试(包含功能测试、非功能专项测试、验收测试等)

构件库管理员

由于面向构件软件过程对构件复用的突出强调,所有构件库管理员--作为构件积累专家--从需求阶段就会参与可复用资产的分析工作,并且在后续阶段提供持续支持。

构件库管理员的职责:

*        配合需求分析师进行可复用业务构件分析、确定业务构件需求

*        配合架构设计师进行可复用业务构件分析、确定服务构件需求

*        主持服务构件和业务构件的提交评审

*        主持服务构件和业务构件的提交工作

*        负责构件的完整性,将构件的相关文档和说明等工作产品一并入库

*        构件库的日常管理和维护

发布经理

面向构件的软件过程对持续集成的天然支持,对外表现为增量发布。发布经理负责具体的增量发布工作。

发布经理的职责:

*        决定发布内容(特定子版本应用系统、文档和手册等)并实施发布

*        Release Notes的编写者

*        产品包装等发布相关事宜

工程实施人员

最终的应用系统,在何种基础设施的环境之下进行部署会有很大不同,工程实施人员负责该项工作。

工程实施人员的职责:

*        辅助用户方进行运行环境的决策

*        实施面向构件应用系统的部署

应用管理员

如您所知,维护和管理阶段,在软件的生命周期中是最长的一个阶段。应用管理员负责相关工作。

系统管理员的职责:

*        初始化

*        配置

*        监控

*        诊断

*        升级

*        热部署

项目经理

由于面向构件的软件过程提供了比传统的软件过程明确得多的“工作产品的跟踪关系”,项目管理可以更为有效。

项目经理的职责:

*        项目计划,并行开发计划

*        项目组织

*        项目实施

*        项目度量

*        突发事件处理

面向构件软件过程总览

如上所述,面向构件的软件过程涉及到角色、活动、工作产品等概念。图4所示为面向构件软件过程总览。

图4 面向构件软件过程总览


相关阅读: