模型讨论

非 Y 不嫁゛ 提交于 2020-03-03 09:32:43

一、推荐模型

刘畅:增量模型

1. 概念
    - 在瀑布模型的基础上,所有阶段都进行增量开发。先对某部分功能进行需求分析,然后按顺序进行设计、编码和测试,把该功能进行开发,提交用户直至所有功能全部增量开发完毕为止。

2. 优点:
    - 继承了瀑布模型的优点
    - 第一个版本发布快
    - 风险不大
    - 减少了用户需求变更
    - 允许增量投资

3. 缺点:
    - 一开始必须要有一部分可确定需求,否则初始增量会造成后来增量的不稳定
    - 初必须有一部分的需求是可确定的,对于完全不可确定的需求不能使用增量模型进行开发

4. 为什么选择增量模型:
    - 软件的项目体积并不庞大,如果需求分析到位的话可以比较准确的抓住需求核心,能够避免增量模型的两个不足
    - 相比较于瀑布模型,增量模型的第一个版本发布快,我们就可以在此基础上再对需求或是功能进行完善,在时间分配上也更加合理:开发早期核心需求时多花一点时间,到后面就会轻松一些
    - 虽然演化模型等更加灵活,但是我考虑到同学间代码风格、习惯差异较大,如果需求在不断迭代,经常要对已完成代码进行修改,这其实会导致效率降低,反而不能在有限的时间内达到最佳的效果

张清望:瀑布模型

1. 定义:瀑布模型( Waterfall Model )将软件生命周期划分为软件计划、需求分析和定义、设计、实现、测试、运行和维护这6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落。

2. 优点:
    1. 为项目提供了按阶段划分的检查点。
    2. 当前一阶段完成后,您只需要去关注后续阶段。
    3. 可在迭代模型中应用瀑布模型。
    4. 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

3. 缺点:
    1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
    2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
    3. 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
    4. 瀑布模型的突出缺点是不适应用户需求的变化。

4. 为什么选择瀑布模型:
    1. 我们的课程设计是小型项目,在开发前可以通过调查问卷,小组讨论等形式完全确定项目的需求,便于使用瀑布模型。
    2. 瀑布模型提供了软件开发的基本框架在其他模型中也有交叉使用,使用瀑布模型可以为我们以后的软件开发工作打下基础。
    3. 瀑布模型在每一步都正确的前提下可以保证结果的正确,并且将每一阶段的工作界定,便于查错。

刘铠铭:增量模型

- 与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成.

- 增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:

    - (1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

    - (2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

- 在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

- 例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

卢家伟:演化模型

1. 演化模型的优点
    1. 任何功能一经开发就能进入测试以便验证是否符合产品需求。
    2. 帮助导引出高质量的产品要求。如果没有可能在一开始就弄清楚所有的产品需求,它们可以分批取得。而对于已提出的产品需求,则可根据对现阶段原型的试用而作出修改。
    3. 风险管理可以在早期就获得项目进程数据,可据此对后续的开发循环作出比较切实的估算。提供机会去采取早期预防措施,增加项目成功的机率。
    4. 大大有助于早期建立产品开发的配置管理,产品构建(build ),自动化测试,缺陷跟踪,文档管理。均衡整个开发过程的负荷。
    5. 开发中的经验教训能反馈应用于本产品的下一个循环过程,大大提高质量与效率。
    6. 如果风险管理发现资金或时间已超出可承受的程度,则可以决定调整后续的开发,或在一个适当的时刻结束开发,但仍然有一个具有部分功能的,可工作的产品。

2. 演化模型的缺点
    1. 如果所有的产品需求在一开始并不完全弄清楚的话,会给总体设计带来困难及削弱产品设计的完整性,并因而影响产品性能的优化及产品的可维护性。
    2. 如果缺乏严格的过程管理的话,这个生命周期模型很可能退化为一种原始的无计划的“试-错-改”模式。
    3. 心理上,可能产生一种影响尽最大努力的想法,认为虽然不能完成全部功能,但还是造出了一个有部分功能的产品。
    4. 如果不加控制地让用户接触开发中尚未测试稳定的功能,可能对开发人员及用户都产生负面的影响。

二、讨论阶段

  • 刘畅:咱们最终选啥模型啊?
  • 刘铠铭:增量吧。
  • 张清望:我也感觉刚开始应该不会把需求全部想好,要先确定核心(这样可以防止我们做无用功),等我们把核心实现了再想办法优化,就算最后没法优化但是我们至少有东西了。
  • 刘铠铭:增量刚开始会生成一个具有关键功能的初产品,然后就添功能,优化呗。
  • 刘畅:是的,选增量模型更好分配时间,更有效率。
  • 卢家伟:那就增量吧。

三、模型确定

经讨论,我们决定选择【增量模型】作为本次软工项目的模型

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!