软件开发的过程中,我们使用生命周期模型简洁地描述软件过程。针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型。在20世纪80年代之前,瀑布模型(也称为传统生存模型)一直是唯一被广泛采用的生命周期模型。之后人们开发出快速原型模型,增量模型,螺旋模型等,这里只讨论着前3种模型的特点和适用面。
瀑布模型
它提出了软件开发的系统化的、顺序的方法。其流程从系统开始,随后需求分析、设计、编码、测试、支持。
瀑布模型有许多优点:可强迫开发人员采用规范的方法(例如,结构化技术);严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品必须经过质量保证小组的仔细验证。
然而缺点也是显著的,实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为”堵赛状态”。
它的适用面在现在的软件需求市场是很小的,现在的软件需要强大的适应力和可变性。
快速原型模型
这种模型是为了快速建立起来的可以在计算机上运行的程序,其流程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头往复循环直到客户对原型满意为止。
它的优点:如果客户和开发者达成一致协议:原型被建造仅为了定义需求,之后就被抛弃或者部分抛弃, 那么这种模型很合适了。迷惑客户抢占市场,这是一个首选的模型。
它的缺点:没有考虑软件的整体质量和长期的可维护性。大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。
适用面还是很广的,它适合小型的软件,在互联网市场上,以及民生行业需求很广泛。
增量模型
这种模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征。增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的”增量”。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都做为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断从复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。
缺点:至始至终开发者和客户纠缠在一起,直到完全版本出来。
优点:人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。具有一定的市场。
适用面:由于它可以根据市场的要求进行一系列的功能添加,是十分适合游戏,生活软件的使用的,如微信,qq。