简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
- 瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
- 优点:
- 降低软件开发的复杂度,提高软件开发过程透明性
- 为项目提供了按阶段划分的检查点。提高了软件开发过程的可管理性,适用于规模较小,较为稳定的项目开发
- 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
- 缺点:
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
- 风险控制能力较弱,当某一个阶段产生错误时,需要回归到前几个阶段重新开始,从而增加了开发风险。
- 鉴于其文档驱动的性质,当阶段之间规定文档较多时,将极大的增加人员和系统的工作量。
- 优点:
- 增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。
- 优点:
- 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
- 每个增量组件的交付后会收到用户反馈,增加用户参与度,降低用户使用风险,使用户可以及时了解软件项目的进展
- 模块化分解项目,提高系统稳定性,适用于规模较大,较为复杂,易变性低的软件开发,一个开发周期内的错误不会影响到整个软件系统
- 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
- 缺点:
- 各个增量组件加入已有的软件体系结构,必须不破坏已有的结构,这要求具备开放式的体系结构,待开发的软件系统可以被模块化
- 需求变化频繁时,增量模型灵活性容易丧失,使得软件过程控制较为复杂,很容易退化为边做边改模型
- 必须妥善处理增量组件之间的关系,若增量组件之间关系存在相交等情况,需要全盘系统分析
- 优点:
- 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。原型法是指在获取一组基本的需求定义后,利用高级软件工具可视化的开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。
- 优点:
- 设计上的灵活性,可以在项目的各个阶段进行变更。
- 以小的分段来构建大型系统,使成本计算变得简单容易。
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
- 客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
- 缺点:
- 过度依赖风险分析经验与技术,一旦风险分析过程出现偏差将导致重大损失
- 只适用于大型软件,过多的风险管理支出将会影响客户的最终收益。
- 过多的迭代次数会增加开发成本,延迟提交时间
- 优点:
简述统一过程三大特点,与面向对象的方法有什么关系?
三大特点:
- 软件开发是一个迭代过程。
- 软件开发是由Use Case驱动的。
- 软件开发是以架构设计为中心的。
统一过程与面向对象方法的关系:统一过程是一种基于UML的、以构架为中心的、用例驱动与风险驱动相结合的迭代增量过程。它将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是一个面向对象的程序开发方法论。
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 初始阶段:
- 准则:为系统建立业务案例 (Business Case) 并确定项目的边界。业务案例包括项目的验收规范、风险评估、所需资源估计、阶段计划等。
- 里程碑:生命周期目标里程碑,评价项目基本的生存能力。
- 细化阶段:
- 准则:分析问题领域,建立健全的体系结构基础,编制项目计划,完成项目中高风险需求部分的开发。
- 里程碑:生命周期结构里程碑,建立系统的开发流程管理并能够在下一个阶段中进行衡量。
- 构造阶段:
- 准则:完成开发所有应用程序功能、集成和测试。
- 里程碑:初始运行能力 (Initial Operational Capability) 里程碑,包括可以运行的软件产品、用户手册等。
- 产品化阶段/移交阶段:
- 准则:确保软件满足用户需求,是可用的软件产品。
- 里程碑:产品发布 (Product Release) 里程碑,确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
软件企业需要根据软件产品的需求情况,选择正确的软件开发模型,并严格执行,从而能稳定控制人力资源、工期、预算等方面的风险。从而使得软件企业可以用多个里程碑对开发流程和开发时间进行管理,提升团队的软件开发效率,最终企业可以按固定节奏生产与发布产品。