软件工程方法模型浅析

作者: 徐莉娜

摘 要:软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、不同的软件工具和不同的软件工程环境。

关键词:软件开发模型; 瀑布模型; V模型; 迭代模型

中图分类号:TP311 文献标识码:A 文章编号:1006-3315(2014)09-120-001

一、前言

当今时代,软件的重要性与日俱增,从办公生活到休闲娱乐,日常生活中每时每刻都有软件的身影。企业要提高运作效率,家庭要提升生活质量,电商要提升营销精准度;政府要提升公众满意,无不需要依靠各种各样的软件。CRM、ERP、大数据、互联网APP,各式各样的软件正在改变着我们的生活,我们已经进入一个软件定义世界的时代。

在此背景下,软件开发也变得越来越至关重要,而作为软件开发管理的基础,软件工程方法的正确选择和应用将是软件开发项目成功的保障。

本文主要简要探讨一些常见的软件工程模型方法及其适用范围。

二、瀑布模型

瀑布模型(Waterfall Model)是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。该过程由一系列顺序的活动构成,每个活动分为输入、过程与输出三部分。其中上一项活动的输出被作为本活动的输入,利用这一输入实施该项活动应完成的内容,最后给出该项活动的工作成果输出,作为下一项活动的输入。

从上述描述中我们能够看出,传统的瀑布模型具有如下的优点:

(1)为项目提供了按阶段划分的检查点。使得软件开发过程从无序变为有序,使软件开发的工程管理变为可能。

(2)各项活动串行进行,当前一阶段完成后,只需要去关注后续阶段。软件工程管理变得简单清晰。

(3)它提供了一系列的模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

瀑布模型也存在如下致命缺点:

(1)各个阶段的划分完全固定且周期较长,极大地降低了开发效率。

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

(3)项目管理更加注重过程,而容易忽视对目标及价值结果的关注。

(4)无法应对开发过程中出现的用户需求的变化。

(5)开发与测试活动割裂,导致测试人员天然的依附于开发人员。

综上,典型的瀑布模型相对来说比较理想化,适合那种开发周期固定、客户需求清晰的项目,当前几乎被业界抛弃,很难适应当今软件开发的需求。比如互联网应用软件很难使用瀑布模型来管理。

三、V模型

V模型一定程度上是典型瀑布模型的一种改良,可视为瀑布模型的延伸。主要是针对开发、测试活动割裂进行的改良。把测试设计工作提前到分析、设计、编码各阶段,一方面提升了开发效率,同时开发与测试同源,提升测试有效性。

典型的V模型开发流程包括:需求分析(系统测试分析)、概要设计(集成测试分析)、详细设计(单元测试分析)、编码、单元测试、集成测试、系统测试和发布。和瀑布模型的最大区别是测试设计分析的提前,比如单元测试分析。在瀑布模型中,单元测试是在编码后进行的,输入的是编码;而测试人员需要根据编码先设计单元测试用例,然后执行。这样将存在一个风险,即单元测试只能发现编码本身的问题,即使编码完全未按照详细设计进行,单元测试也无法发现。而在V模型中,开发人员、测试人员针对详细设计展开工作,开发人员编码的同时,测试人员编写单元测试用例,从而使得测试用例不受具体编码影响,能够更加准确的验证详细设计的意图。其他阶段类似。

V模型中,测试活动有更多的独立性和自主性,软件开发效率也有一定程度的提升。但是V模型无法解决瀑布模型的本质缺陷,如同样无法应对需求的不断变化,同样需要在版本开发后期才能验证成果等。

三、迭代模型

早在20世纪50年代末期,软件领域中就出现了迭代模型。通俗的讲,迭代模型就是将整个软件的开发分解成一个个的子特性开发(阶段),而针对每个阶段内部采用的还是类似瀑布模型的方法。每个迭代是一次完整的经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。

与传统的瀑布模型相比较,迭代过程具有以下优点:

(1)由于每个迭代是整个系统的子系统,相对内容比较单一,各个阶段需要传递的信息量较小,不需要通过大量的文档进行传递。

(2)由于整个开发过程被拆分为独立的若干阶段,用户在每个阶段结束就可以提前看到开发成果。一方面能够及时对开发中出现的偏差进行纠正;另一方面由于能够及时看到工作成果,有利于开发人员的效率提升。

(3)相对于瀑布模型,迭代模型更加关注对软件目标、结果的关注,更加注重和最终用户的互动,以保证开发成果的质量。

(4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的,而迭代模型更能够适应这种需求的变化。

同样,迭代模型也存在其缺点,那就是对于项目经理和开发团队的要求更加高,并且需要团队成员之间更加的信任。因为迭代模型运作对于过程的监控较弱,更加关注面对面的交流与合作。

四、结束语

软件工程方法包含的内容很多,除了正确的选择模型方法以外,还包括各种能力域的工程方法,如计划管理、资源管理、财务管理、人员管理、价值管理、需求管理、风险管理等等。只有根据软件项目具体的情况和目标,选择正确的工程方法模型,并把这一系列的工程管理方法有机的结合起来,才能使得软件开发的结果可预期,质量可保证。

参考文献:

[1]软件工程-实践者的研究方法,(美)Poger S.Pressman

[2]钱乐秋.《软件工程》[M]北京:清华大学出版社,2005

[3]张海藩.软件工程(第二版)[M]北京:人民邮电出版社,2006

经典小说推荐

杂志订阅