第二部分 对RUP进行逆向工程
依据“RUP剪裁是软件过程开发的再工程”的观点,RUP剪裁分为对RUP进行逆向工程、考虑软件过程新需求和过程开发正向工程三个步骤。但是,对RUP进行逆向工程只需进行一次,以后的RUP剪裁过程都可以重用了。所以,笔者将“对RUP进行逆向工程”从“工程化的RUP剪裁过程”单独提出讨论。
另外,本文也不打算详细阐述逆向工程的工程化过程,那将是非常庞大和非常理论化的。本文采取的方法是,列出逆向工程过程的产出产品的子集,而且每个产品的内容也仅涉及核心子集。
其实,如果不从理论化的角度讲,对RUP进行逆向工程其实就是个理解RUP的过程(不理解RUP就没用办法进行剪裁),因此,下面的阐述也是笔者对RUP的一点理解,抛砖引玉,敬请斧正。
一、 需求
Rational的大师们在开发RUP时先要进行需求捕获,他们捕获到的需求肯定少不了下面的内容:
◆RUP将是一个有足够通用性的过程产品,将RUP适当剪裁后应能适合绝大多数项目。(功能需求)
◆采用RUP作为开发过程,开发风险必须最小化。(非功能需求)
二、 分析
接下来进行分析,想必会是这样:
◆开发过程由多种“活动”组成。
◆每种“活动”生产出不同的“产品”,也可能多种“活动”生产出一种“产品”。
◆活动有业务建模、需求、分析和设计、实现、测试、实施、配置和变更管理、项目管理和环境。(RUP的九个核心工作流)
◆产品有:用例模型、分析模型、设计模型、源程序和测试报告等。
◆活动可以包含子活动,子活动之间可以并行进行,干脆把活动改称工作流,把子活动改称活动。
◆“产品”可以是成品或供演进的半成品,干脆把成品和半成品合称为“工件”。
三、 设计
接下来进行设计,想必会是这样:
◆为了满足通用性需求:借鉴面向对象的泛化思想(即参数化或模板),RUP只提供框架而和具体项目无关。
◆为了满足风险最小化需求:引入阶段概念和迭代开发模型,以便给开发者足够多的机会,在付出太多代价之前放弃或调整开发。
四、 实现
RUP的实现我们都看到了,就是那个可以在线查询的知识库,内容很丰富。
第三部分 工程化的RUP剪裁过程
在对RUP进行了逆向工程,并且比较好地理解了RUP之后,还需要进行的两个步骤是RUP剪裁过程的核心部分,本段给出一种工程化的解决方案。首先,讨论软件过程开发的需求工程;然后,讨论软件过程开发的正向工程,即五步法;最后,对五步法给出几点说明,着重说明五步法是如何降低RUP剪裁的复杂性的。下面要阐述的工程化的RUP剪裁过程,不是放之四海而皆准的,但确实有一定的通用性。