简答题
- 简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
- 从项目特点、风险特征、人力资源利用角度思考
瀑布模型:
优点:
- 瀑布模型可以将一个大型问题转化为一系列简单的线性问题,然后逐个解决。这降低软件开发的复杂程度,提高软件开发过程的透明性,也提高软件开发过程的可管理性。
- 瀑布模型推迟了软件实现,强调在软件实现前必须进行分析和设计工作。以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求,降低了开发风险。
- 每个阶段都有明确的产出物和验证准则,只有当前一阶段完成后,才会去进行后续阶段,因此可以进行有效的人力资源的调度和分配
缺点:
- 由于开发过程是线性的,对前面阶段的依赖性强,所以如果前面的需求分析等工作没有做好,可能会导致后期实现工作难度过大,甚至无法开展
- 风险控制能力较弱,如果前面的步骤出现错误,后面的所有步骤都需要重新来过,代价过高
- 缺乏灵活性,尤其无法解决需求不明确或不准确的问题
- 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量,浪费大量的人力资源
- 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往
往会产生错误的结论。增量模型:
优点:
- 在开发过程中客户可以不断看到开发的软件,可以增强客户对系统的信心,以及逐步明确客户的需求;
- 由于每一个增量模块相对独立,所以某一个模块的错误不会影响到整个系统,可以降低系统失败风险,提高系统可靠性,稳定性和可维护性;
- 适应性强,可以更好的对应需求的变化,可以在一定程度上防止由于需求变化,倒是项目开发失败的情况。
缺点:
- 要求项目必须是可以模块化的,且建立初始模型时,作为增量基础的基本业务服务的确定有一定难度
- 增量粒度难以选择,实际开发过程中很可能会演变成边做边改的过程,不利于整体把控。
- 由于进度和配置的复杂性,可能会增大管理成本,超出组织的能力,浪费很多的人力资源
螺旋模型:
- 优点:
- 在面对需求功能复杂,可能无法从项目开始就得到明确的规格,开发周期长,用户需求在中途经常发生变化时,有很强的适应性
- 螺旋模型结合了瀑布模型和快速原型方法,具有这两种方法的优越性能,除此之外,由于其加入了风险分析,有利于进行风险的控制
- 每个阶段都保证了客户的参与,防止产品偏离客户需求,同时让客户了解进度,及时进行沟通。
- 缺点
- 螺旋模型由于需要不断的迭代,因此需要消耗更多的成本和人力资源,如果风险分析错误,则可能会遭受到巨大的损失
- 螺旋模型强调风险分析,但说服外部客户接受和相信分析结果并做出相关反应并不容易,因此螺旋模型往往比较适合内部的大规模软件开发。
简述统一过程三大特点,与面向对象的方法有什么关系?
- 特点:
- 用户为中心
- 架构为重心
- 风险驱动和用例子驱动相结合的迭代增量模型
- 与面向对象方法的关系:
- RUP是一种基于
UML
的开发过程,它将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是一个面向对象的程序开发方法论。
- RUP是一种基于
- 特点:
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 初始阶段:
- 准则:为系统建立业务案例并确定项目的边界。
- 里程碑:生命周期目标里程碑,包括一些重要的文档,如:项目构想、原始用例模型、原始业务风险评估、一个或者多个原型、原始业务案例等。
- 精化阶段
- 准则:分析问题领域,建立健全的体系结构基础,编制项目计划,完成项目中高风险需求部分的开发
- 里程碑:生命周期体系结构里程碑,包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等
- 构建阶段
- 准则:完成所有剩余的技术构件和稳定业务需求功能的开发,并集成为产品,详细测试所有功能
- 里程碑:初始运行能力里程碑,包括可以运行的软件产品、用户手册等,它决定了产品是否可以在测试环境中进行部署。
- 交付阶段/产品化阶段
- 准则:确保软件对最终用户是可用的
- 里程碑:产品发布里程碑,确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。
- 初始阶段:
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
- 原因:
- 因为软件企业都有自己规范化的管理方法,并一般都采用统一过程模型来指导软件开发的过程。统一过程可以利用软件产品范围的弹性,合理规划范围,使得软件生产按固定节奏运行,固定迭代周期、固定开发周期、固定升级周期。这样软件企业就可以非常好地预判项目的工期、范围、质量和预算,并按时发布产品
- 好处:
- 每一个迭代过程都与用户保持联系,使得客户可以参与软件开发的全过程,可以更加明确软件的需求,降低开发风险
- 因为每一迭代周期时固定的,因此软件开发过程的预算、时间是可控的,这样可以提高客户、团队对软件产品的信心,且可以节省很多的人力资源和开发成本
- 每一次迭代内部都是一个瀑布模型,产品开发的可管理性会很高,易于进行人力资源的分配,充分提高团队的效率
- 原因:
实践题
下载腾讯微信企业版PC端,安装腾讯敏捷产品研发平台(TAPD),了解使用 TAPD 的最佳实践(可以写博客获得加分)
- 比较完善 backlog 支持(树结构)
- 迭代(sprint)安排
- 较好的缺陷管理
- Kanban
- 统计
大作业准备
- 按大作业要求组建团队、思考项目题目与内容
- 将团队暂时分为技术研究、业务调研两个部分
- 技术团队初步确定技术方法,力争做一些技术原型,如 基于 MVC 框架的的用户登陆实现
- 业务调研团队调查竞争性产品,分析它们的基础、共性业务以及竞争优势