对于中、小规模的软件项目,开发团队的规模不是很大。软件的开发周期也比较短。在这种情况下,完全照搬RUP并不完全适用。因此,裁剪RUP使其适合中、小型软件开发项目是非常有必要的。
|
图1:一个复杂的BUC的实现方法 |
Rational统一过程(RUP)是IBM公司的一个软件过程产品。它几乎覆盖了软件开发过程中的所有方面。
J2EE技术提供了一个基于组件的、多层分布式计算平台。在J2EE的应用系统的开发过程中,由于使用了中间件,开发人员可以把工作重点放在系统功能的建模、设计与实现上。此外,J2EE技术结合了软件设计中的最佳实践(best
practices),如以架构为中心的软件体系结构、基于组件的架构等等。这一切都对现有的软件工程过程提出了新的挑战。所以,裁剪RUP并且使其在J2EE项目中起更大的作用是非常有意义的。
本文讲述了如何把RUP应用到小型项目团队开发J2EE应用系统的过程中,并且结合J2EE技术的特点从项目管理、架构设计、开发和测试等方面重点阐明了对RUP的裁剪。
项目管理
在RUP中,角色定义了个人或团队的行为和职责,包括分析设计人员、编程人员、测试人员、项目管理人员和辅助人员,一个人可以同时担当几个角色.一个角色也可以由几个人来共同承担。针对J2EE系统的开发和维护,J2EE规范中也定义不同的角色,包括J2EE产品供应商、应用组件供应商、发布人员、系统管理员等等。
在实际的项目运行中.要根据软件开发组织的实际情况来确定角色的定义和分配。项目经理是必不可少的一个角色,通常是一个人来担任。项目经理代表整个项目与软件客户进行沟通和协商,并且制定软件开发计划等等。架构师也是一个必须的角色,通常由一名经验丰富的软件开发人员来担任。
在项目运行的前期,架构师负责设计软件架构和原型系统。在项目运行后期,架构师可以参与到具体的软件开发中。SQA同样是必不可少的,通常是一名经验丰富的软件开发人员来担任。SQA在整个项目的运行过程中负责监督和改进软件质量,包括制定系统测试方案、用户接受测试方案等等。开发人员是组成团队的主要力量,负责系统的设计、开发和测试。如果可能的话,团队中必须设立业务分析员的角色,负责商业建模等,通常由有特定行业经验的人来担任。
迭代开发计划
RUP的精髓之一迭代式的开发,它是基于Spiral模型翻的。整个软件开发周期由很多个迭代组成,其中初始迭代最为重要。其它每个迭代都为了实现软件的部分功能。在完成所有迭代后,软件的所有功能都已实现并且通过测试。
初始迭代又叫作0迭代,它开始于项目的启动。结束于RUP初始阶段(inception phase)的完成。初始迭代在整个软件项目中起着十分重要的作用,这是因为在这个迭代中,项目团队和客户必须对软件项目的范围、成本、进度和应用系统的边界以及功能等达成一致的理解。
在初始迭代中,最重要的活动有明确项目的范围、商业需求和提出至少一个可用的软件架构方案。在明确项目范围的过程中,项目经理就项目的边界、产品、限制条件等与软件客户进行协商,从而达成一致认识。同时,在理解客户需求的基础上,项目经理或者业务分析员以需求说明书和功能说明书的形式把客户的需求记录下来。并且和客户达成一致理解。在此基础上,架构师提供至少一个合适的软件架构方案,并且完成原型系统。原型系统的目的不但是为了验证技术上的可行性,而且是为了给客户一个感性的认识,更好地完善对需求的理解。
需求说明书从客户的角度简要地描述了系统要具备的功能,它包含了很多商业用例。通常情况下,需求说明书还不能够全面地描述整个应用系统,所以软件开发组织还要从不同角度来描述系统的功能和特征,这就是功能说明书。功能说明书中包含了很多系统用例。功能说明书和需求说明书必须征求客户的意见,直到客户满意为止。
迭代计划是项目计划的一部分,指如何把要实现的系统分解成更小的子系统和如何在不同迭代中(除初始迭代之外)划分子系统,从而使每个迭代的目标明确,不同迭代之间的依赖关系达到最低。通常情况下,从逻辑上看,应用系统可以划分成多个BUC,而每个BUC又可以进一步划分成SUC;因此,可以从BUC的角度出发,根据相互之间的依赖程度来进行划分,把依赖程度低的BUC划分到不同的迭代中,从而确定每一个迭代的范围。一个复杂的BUC可以把它分解成独立的几个小BUC在几个迭代中来实现。
一个应用系统也是由很多组件组成的。一个或者几个组件组合起来可以实现一个SUC或者一个BUC的要求。在设计迭代计划的时候,要考虑到组件之间可能存在的约束关系。基于J2EE的应用系统是基于组件架构的,因此,最小化迭代之间的依赖是一个最重要的衡量标准。
采用这种迭代办法后,每个迭代的范围限制在一个或者几个相互独立的BUC中。这样做的好处在于降低需求变化带来的风险。
风险管理
采用迭代式开发的一个很重要的原因是,项目的风险能够在早期的几个迭代中暴露出来。风险有两个基本的属性,一个是它发生的概率,还有一个是风险发生后对项目的影响。风险管理的目的是为了尽量降低风险发生时对项目的影响。
在风险管理中,首先要识别项目中存在的风险。其次根据风险发生的概率和风险发生后对项目的影响来分析存在的风险。通常采用量化风险的办法。给概率和影响分别赋予一定的数值,经过分析,把概率的数值和影响的数值相乘后的结果风险量化后的值。接着,对于量化后值比较高的风险制定相应的风险规避计划。在项目运行过程中,要不断地监督风险的变化。