简答题
简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点(从项目特点、风险特征、人力资源利用角度思考)
瀑布模型
瀑布模型开发过程通过设计一系列阶段顺序展开,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段。
优点:
- 降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性。
- 推迟软件实现,强调在软件实现前必须进行分析和设计工作。
- 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。
缺点:
- 缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题。
- 风险控制能力较弱。
- 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量。
增量模型
增量模型从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动。第一个版本纳入一部分需求,下一个版本纳入更多的需求,依此类推,直到系统完成。
优点:
- 增强客户对系统的信心。
- 提高系统可靠性。
- 降低系统失败风险。
- 提高系统的稳定性和可维护性。
缺点:
- 增量粒度难以选择。
- 建立初始模型时,作为增量基础的基本业务服务的确定有一定难度。
螺旋模型
螺旋模型是一种演化软件开发过程模型,兼顾了快速原型的迭代的特征和瀑布模型的系统化与严格监控,并且引入风险分析。螺旋模型更适合大型的昂贵的系统级的软件应用。
优点:
- 设计灵活,可以在项目的各阶段进行变更。
- 成本计算变得简单容易。
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
缺点:
- 很难让用户确信这种演化方法的结果是可以控制的。
- 建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
简述统一过程三大特点,与面向对象的方法有什么关系?
特点:
- 是迭代过程。
- 由用例驱动。
- 以架构设计为核心。
RUP是一个面向对象且基于网络的程序开发方法论。
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
初始阶段
初始阶段的目标是为系统建立商业案例并确定项目的边界,关注的是整个项目进行中的业务和需求方面的主要风险。初始阶段结束时是第一个重要的里程碑:生命周期目标里程碑。生命周期目标里程碑评价项目基本的生存能力。
细化阶段
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。细化阶段结束时第二个重要的里程碑:生命周期结构里程碑。生命周期结构里程碑为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。此刻,要检验详细的系统目标和范围、结构的选择以及主要风险的解决方案。
构造阶段
在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。构建阶段结束时是第三个重要的里程碑:初始功能里程碑。初始功能里程碑决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。
交付阶段
交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在交付阶段的终点是第四个里程碑:产品发布里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合。
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
这是因为在RUP中各阶段的周期是固定的,并且有明确的目的以及相应的规范,每个阶段结束于一个里程碑。在产品的迭代开发过程中,有明确的时间限制,会按照固定的周期完成产品的的开发与发布。
这可以让企业项目管理更加明确每个阶段的划分和任务,对产品的质量与流程可以更加严格把控,固定的迭代周期也可以提高个人和团队的生产力,并且企业也更容易把控开发进度和每个阶段的预算,从而整体上规范管理获得最大的效益。
实践题
TAPD使用实践
backlog 支持(树结构)
需求Backlog是产品待实现的需求列表,Backlog中的需求按照对用户的价值排序。需求是敏捷中的User Story,从用户角度描述的独立的功能点。
下图是敏捷项目样例,可以看到需求的树状结构和需求的优先级。
迭代安排
迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。
如下是迭代界面,可以看到迭代的进度并且可以为迭代制定明确的目标、开始和结束时间。
较好的缺陷管理
通过缺陷管理功能,软件测试者可以更好的跟进项目,在开发工程师完整对应需求后进行测试,记录项目中的问题,以下图片列出了当前存在的缺陷。
对缺陷进行编辑,可以设置其优先级、严重状态和处理状态
Kanban
看板包括四个部分:规划中、实现中、已实现、已拒绝。并可以看到这些内容的优先级,方便多人开发。
统计
如图,可以看到5类报表,同时每个内容进去以后支持自定义报告。例如缺陷统计可以统计缺陷状态分布、缺陷严重级别分布、缺陷创建人/解决人分布等等,也可以缺陷趋势等等。其他部分也有支持高度的自定义。