软件开发模型有哪些各有什么特点(开发模型有哪些常见类型)
导语:软件开发模型有哪些?
软件开发模型大体上可分为两种类型,第一种是以软件需求完全确定为前提的瀑布模型。 第二种是在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如原型模型、螺 旋模型等。实践中经常将几种模型组合使用以便充分利用各种模型的优点。
1.瀑布模型瀑布模型也称软件生存周期模型,由 W.Royce 于 1970 年首先提出。
根据软件生存周 期各个阶段的任务,瀑布模型从系统需求分析开始,逐步进行阶段性变换,直至通过验收测 试并得到用户确认的软件产品为止。瀑布模型上一阶段的变换结果是下一阶段变换的输入, 相邻的两个阶段具有因果关系,紧密相联。
一个阶段工作的失误将蔓延到以后的各个阶段。 为了保证软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确 认之后再转入下一阶段的工作。评审过程发现错误和疏漏后,应该反馈到前面的有关阶段修 正错误、弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段,这 种形式的瀑布模型是带有反馈的瀑布模型,
模型中各个阶段的任务和软件 开发活动如前所述。 瀑布模型在软件工程中占有重要的地位,它提供了软件开发的基本框架,这比依靠“个 人技艺”开发软件好得多。它有利于大型软件开发过程中人员的组织和管理,有利于软件开 发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。
瀑布模型的主要特点是:
阶段间的顺序性和依赖性,开发过程是一个严格的下导式过程, 即前一阶段的输出是后一阶段的输入,每一阶段工作的完成需要确认,而确认过程是严格的 追溯式过程,
后一阶段出现了问题要通过前一阶段的重新确认来解决。因此,问题发现得越 晚解决问题的代价就越高。
瀑布模型的主要缺点是:
(1)在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。 从认识论上讲,人的认识是一个多次反复的过程,实践——认识——再实践——再认识,多 次认识,多次飞跃,最后才能获得对客观世界较为正确的认识。软件开发是人的一个智力认 识活动,也不可能一次完成,需要多次反复地进行,但瀑布模型中划分的几个阶段没有反映 出这种认识过程的反复性,缺乏灵活性。
(2)软件开发是个知识密集型的开发活动,需要人们合作交流才能完成,因此,人员 间的通信和活动间的并行和串行都是必需的,但在瀑布模型中没有这方面的体现。随着软件 开发项目规模的日益庞大,由此引发的问题显得更为严重。
2. 快速原型法模型 快速原型法是针对瀑布模型(即传统的生存周期法)提出来的一种方法。
它的基本思想是 回避(或暂时回避)传统的生存周期法中的一些难点,顺从用户需求出发,快速建立一个原型。 使用户通过这个原型初步表达出自己的要求,在征求用户对原型意见的过程中,进一步修改、 完善、确认软件系统的需求并达到一致的理解,这就大大避免了在瀑布模型冗长的开发过程 中,看不见最终软件产品雏形的现象。通过反复修改、完善,逐步靠近用户的全部需求,最 终形成一个完全满足用户要求的新体系。
因此,快速原型法的最大特点是快捷,且避免了许 多由于不同理解而造成的错误。 原型开发模型如图 6.7 所示。
快速开发原型的途径有三种:
(1)利用计算机模拟软件系统的人机界面和人机交互方式。
(2)开发一个工作原型,实现软件系统的部分功能,而这部分功能是重要的,也 可能是容易产生误解的。
(3)利用类似软件向客户展示软件需求中的部分或全部功能。 为了快速开发原型,要尽量采用软件重用技术,在算法时/空开销方面也可以让步,以 便争取时间,尽快向用户提供原型。原型应充分展示软件的可见部分,如数据的输入方式、 人机界面、数据的输出格式等。
快速原型法模型在各个阶段用户反馈活动的基础上,突出了快速的改进过程,它改变 了瀑布模型的线性结构,采用逐步求精方法使原型逐步完善,以满足用户的要求,是一种在 新的高层次上不断反复推进的过程。
由于原型是用户和软件开发人员共同设计和评审的,因此利用原型能统一用户和软件开 发人员对软件项目需求的理解,有助于需求的定义和确认。利用原型定义和确认软件需求之 后,就可以对软件系统进行设计、编码、测试和维护。
原型系统的不足之处有以下两点:
(1)为了使系统尽快运行起来,系统开发人员在初期往往考虑得不周全,有可能使原 型不能成为最终软件产品的一部分,只是一个示例而已。这样,在实际开发软件产品时,仍 有许多工作要做。
(2)原型模型需要大量完备和实用的软件工具的支持才能实现,即原型模型对工具和 环境的依赖性较高。 3.螺旋模型 螺旋模型是 B.Boehm 于 1988 年提出的。它是瀑布模型与原型模型的结合,不仅体现 了两个模型的优点,而且还增加了新的成分——风险分析。
它由四个部分组成:
(1)需求定义 当初次建立原型时,必须对用户需求进行分析;当针对已有原型构造新的更为丰富和完 善的原型时,必须将用户对已有原型的评价意见、改进建议以及对新原型的需求进行分析。
(2)风险分析 根据初始需求或改进意见,评审可选方案,给出消除或减少风险的途径。
(3)工程实现 针对前面得到的用户需求,进行软件设计、编码、调试和测试。
(4)评审 检查原型是否实现了用户需求,邀请用户实际操作该原型,要求用户进行评价,提出改 进意见和进一步的需求。
螺旋模型是由以上步骤组成的迭代模型。软件开发过程每迭代一次,螺旋线就增加一周, 软件开发又前进一个层次,系统又生成一个新版本,而软件开发的时间和成本又有了新的投 入。
在大多数场合,软件开发过程沿螺旋线的路径连续进行,希望最终得到一个用户满意的 软件版本。理论上,迭代过程可以无休止地进行下去,但在实践中,迭代结果必须尽快收敛 到用户允许的或可接受的目标范围内。只有降低迭代次数,减少每次迭代的工作量,才能降 低软件开发的时间和成本。
螺旋模型的每一周期都包括需求定义、风险分析、工程实现和评审四个阶段。这是对典 型生存周期的发展。它不仅保留了生存周期模型中系统地、按阶段逐步进行软件开发和“边 开发、边评审”的风格,而且还引入了风险分析,并把制作原型作为风险分析的主要措施。
用户始终关心、参与软件开发并对阶段性的软件产品提出评审意见,这对保证软件产品的质 量是十分有利的。
本文内容由小涵整理编辑!