问答题 阅读以下关于RUP的相关叙述,回答问题。
TradeManager。是一个关于金融软件研究的项目,开发基于J2EE技术的金融订单管理系统。项目由12个人的团队来进行开发。团队成员分工明确,有项目经理、架构师、测试员和SQA等等。项目采用迭代式的开发方式。在初始迭代中,项目双方对项目范围、功能需求及架构达成一致,并签字同意。整个开发分为三个迭代阶段,根据功能点来划分,每个迭代分别实现交易前、交易中和交易后的功能。每个迭代的开发时间在六个星期。
这个软件采用J2EE的架构,其中UI和Delegate层在客户端,采用Swing技术来实现,是一个典型的肥客户端。Facade、Business Logic和DAO在J2EE服务器端,采用EJB技术来实现,它与客户端的通信是典型的RMI/IIOp协议,采用的服务器是WebSphere。后台采用Oracle数据库米存放各种系统数据。同时,采用SiteMinder来实现系统的认证和授权。用log4j来实现logging/auditing功能。由于采用WebSphere集群技术,系统的可扩展性和高可用性得到了保证。
本项目采用RUP开发过程,但是对于这种中、小规模的软件项目,开发团队的规模不是很大,软件的开发周期也比较短。这种情况下,完全照搬RUP并不完全适用。因此,对RUP进行了裁剪使其适合该软件开发项目。

问答题 RUP中的软件过程在时间上分解为4个顺序阶段,分别是:初始阶段、细化阶段、构建阶段和交互阶段。基于RUP的软件过程是一个迭代过程,每经过这4个阶段就会产生一代软件。请简要回答各个阶段的主要任务和所占的工作量及进度分配。
【正确答案】4个阶段的主要任务如下。
初始阶段的任务是为系统建立业务模型并确定项目的边界。
细化阶段的任务是分析问题域,建立健全的架构基础,淘汰项目中最高风险的元素。
构建阶段的主要任务是通过优化资源和避免不必要的报废和返工,使开发成本降到最低;完成所有所需功能的分析、开发和测试,快速完成可用的版本。
交互阶段的主要任务是进行β制作产品发布版本;最终用户支持文档定稿;按用户的需求确认新系统;培训用户和维护人员;获得用户对当前版本的反馈。
RUP各阶段的工作量和进度分配如表13-12所示:
初始阶段 细化阶段 构建阶段 交互阶段
工作量/% 5 20 65 10
进度/% 10 30 50 10
【答案解析】第一个问题考查RUP生命周期分为几个阶段及其主要任务,RUP中的软件过程在时间上分为4个顺序阶段,分别是:初始阶段、细化阶段、构建阶段和交互阶段。
初始阶段的任务是为系统建立业务模型并确定项目的边界。在初始阶段,必须识别所有与系统交互的外部实体,定义系统与外部实体交互的特性。
细化阶段的任务是分析问题域,建立健全的架构基础,淘汰项目中最高风险的元素。
构建阶段的主要任务是通过优化资源和避免不必要的报废和返工,使开发成本降到最低;完成所有所需功能的分析、开发和测试,快速完成可用的版本。
交互阶段的主要任务是进行β制作产品发布版本;最终用户支持文档定稿;按用户的需求确认新系统;培训用户和维护人员;获得用户对当前版本的反馈。
RUP各阶段的工作量和进度分配如下表所示:
初始阶段 细化阶段 构建阶段 交互阶段
工作量/% 5 20 65 10
进度/% 10 30 50 10
问答题 RUP在每个阶段结束时都要进行一次技术评审,以确定在完成该阶段的最终迭代后是否应该让项目进入下一阶段。评审时,需要检验详细的系统目标和范围、架构的选择以及主要风险的解决方案,请问在技术评审中,需要考虑哪些问题?
【正确答案】在技术评审中需要考虑的问题有:
1.产品需求是否稳定,架构是否稳定?
2.可执行原型是否表明已经找到了主要的风险元素,并且得到妥善解决?
3.构建阶段的迭代计划是否足够详细和真实,是否有可靠的估算支持,可以保证工作继续进行?
4.所有与项目有关的人员是否一致认为,如果在当前构架环境中执行当前计划来开发完整的系统,则当前的需求可以实现?
5.实际资源耗费与计划的耗费相比是否有偏差,该偏差是否可以接受?
【答案解析】第二个问题考查RUP技术评审所关注的问题,RUP在每个阶段结束时都要进行一次技术评审,以确定在完成该阶段的最终迭代后是否应该让项目进入下一阶段。在技术评审中需要考虑的问题有:
1.产品需求是否稳定,架构是否稳定?
2.可执行原型是否表明已经找到了主要的风险元素,并且得到妥善解决?
3.构建阶段的迭代计划是否足够详细和真实,是否有可靠的估算支持,可以保证工作继续进行?
4.所有与项目有关的人员是否一致认为,如果在当前构架环境中执行当前计划来开发完整的系统,则当前的需求可以实现?
5.实际资源耗费与计划的耗费相比是否有偏差,该偏差是否可以接受?
问答题 对于中、小规模的软件项目,在开发团队的规模不是很大,软件的开发周期较短的情况下,完全照搬RUP并不完全适用,因此对RUP裁剪是非常有必要的。请问在该项目中可以从那些方面对RuP进行裁剪?
【正确答案】在该项目中对RUP进行裁剪的时候可以从以下几个方面进行考虑。
1.项目管理中,RUP定义了个人和团队的行为和职责,包括分析设计人员、编程人员、测试人员、项目管理人员和辅助人员等,可以根据实际项目的要求,确定项目所涉及的人员及其各阶段的任务。
2.迭代计划,RUP的精髓之一迭代式的开发,整个软件开发周期由很多个迭代组成,其中初始迭代最为重要。因此可以根据项目实际情况对迭代进行裁剪。
3.风险管理,采用迭代式开发的一个很重要的原因是,项目的风险能够在早期的几个迭代中暴露出来。风险管理的目的是为了尽量降低风险发生时对项目的影响,在中小项目中可以裁剪风险管理过程。
4.对实现和测试过程进行裁剪。
【答案解析】第三个问题是考查RUP在软件项目实施过程中的裁剪问题,RUP的确可以引导开发者走上一个正规化的生产途径,尤其是当我们不清楚一个过程该怎么走的时候。不过,要裁剪使用对很多人来说还是较困难的,使用不当,会给项目带来混乱和超期。那么在对RUP进行裁剪的时候可以从以下几个方面进行考虑。
1.项目管理中,RUP定义了个人和团队的行为和职责,包括分析设计人员、编程人员、测试人员、项目管理人员和辅助人员等,可以根据实际项目的要求,确定项目所涉及的人员及其各阶段的任务。
2.迭代计划,RUP的精髓之一迭代式的开发,整个软件开发周期由很多个迭代组成,其中初始迭代最为重要。其他每个迭代都为了实现软件的部分功能。在完成所有迭代后,软件的所有功能都已实现并且通过测试。因此可以根据项目实际情况对迭代进行裁剪。
3.风险管理,采用迭代式开发的一个很重要的原因是,项目的风险能够在早期的几个迭代中暴露出来。风险有两个基本的属性,一个是它发生的概率,还有一个是风险发生后对项目的影响。风险管理的目的是为了尽量降低风险发生时对项目的影响,在中小项目中可以裁剪风险管理过程。
4.对实现和测试过程进行裁剪。