简单题
-
简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
-
瀑布模型
-
简述
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 -
优点
为项目提供了按阶段划分的检瀑布模型查点。
当前一阶段完成后,您只需要去关注后续阶段。
可在迭代模型中应用瀑布模型。
它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。 -
缺点
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
瀑布模型的突出缺点是不适应用户需求的变化。
-
-
增量模型
- 简述
增量模型又称为渐增模型,也称为有计划的产品改进模型,它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动。第一个版本纳入一部分需求,下一个版本纳入更多的需求,依此类推,直到系统完成。每个中间版本都要执行必需的过程、活动和任务。 - 优点
第一个可交付版本所需要的成本和时间是较少的,从而可减少开发由增量表示的小系统承担的风险
由于很快发布第一个版本,因此可以减少用户需求的变更
允许增量投资,即在项目开始时可以仅对一个或两个增量投资缺 - 缺点
如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定
如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布
由于进度和配置的复杂性,可能会增大管理成本,超出组织的能力
- 简述
-
螺旋模型
- 简述
螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软体项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。 - 优点
设计上的灵活性,可以在项目的各个阶段进行变更。
以小的分段来构建大型系统,使成本计算变得简单容易。
客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。 - 缺点
很难让用户确信这种演化方法的结果是可以控制的。
建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
- 简述
-
简述统一过程三大特点,与面向对象的方法有什么关系?
三大特点
-
统一过程是用例驱动的:所有的用户和用例组合在一起就是用例模型,它描述了系统的全部功能。用例图不仅能确定用户的需求,还可以驱动系统设计、实现和测试的进行,也就是说用例可以驱动开发过程。
-
统一过程是以构架为中心的:综合考虑软件系统的各个方面并优先解决软件系统中的主要问题,同时创建常见问题的通用解决方案,解决软件项目的主要风险。
-
统一过程是迭代和增量的过程:将这些项目划分为切实可行并能够产生一个增量的迭代过程,迭代过程就是用来处理一组用例的,迭代过程要解决最突出的风险问题。
与面向对象方法的关系
统一软件过程是一个面向对象且基于网络的程序开发方法论。其可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持
-
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
-
初始阶段:初始阶段的目标是为系统建立商业案例并确定项目的边界。在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。
发布生命周期目标里程碑。 -
细化阶段:细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。淘汰项目中最高风险的元素。理解整个系统–做出决策–建立支持环境
发布生命周期体系里程碑。 -
构建阶段:在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。重点放在管理资源及控制运作以优化成本、进度和质量
发布初始运营能力里程碑。 -
移交阶段:交付阶段的重点是确保软件对最终用户是可用的。开发人员改正用户报告产品的缺陷和不足。交付阶段横跨几次迭代,包括发布做准备的产品测试,基于用户反馈的少量的调整
发布产品发布里程碑。 -
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
因为统一过程模型中,各个阶段的生命周期是有固定长度的, 因此在产品的的迭代开发过程有较为明确的时间限制的。可以让企业能够及时的交付产品,减少耗费的时间金钱,通过迭代开发逐渐地完善产品。