APP下载

一种改进的软件开发模型
——组合模型研究

2018-11-19王雪梅张春海

软件导刊 2018年11期
关键词:开发人员测试用例增量

王雪梅,张春海

(中国海洋大学 信息科学与工程学院,山东 青岛 266100)

0 引言

软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系[1-3]。软件产品质量好坏取决于很多因素,而软件开发模型指导整个软件活动,其指导地位至高无上,因此不少专家对其越来越关注,陆续提出了一些传统开发模型,如瀑布模型、原型模型、增量模型及螺旋模型等[4-8]。随着时代发展,软件产品本身也发生着深刻变化,越来越复杂,在开发过程中遇到的问题也越来越多,这些传统开发模型逐渐暴露出很多缺陷,变得不再适合,因此选择一个合适的软件开发模型指导软件开发极其重要[9-11]。

本文通过对传统瀑布模型、原型模型、增量模型及螺旋模型的深入研究,分析其优缺点,对其进行改进,提出“组合”模型,并将该模型运用到典当行业O2O后台管理系统开发项目中。实践表明,该模型改善了传统模型的不足,降低了开发成本,有效提高了软件开发效率。

1 传统软件开发模型缺陷

1.1 瀑布模型

瀑布模型最早由Winston Royce在1970年提出,是最早的软件开发模型,它将软件生命周期划分为6个基本活动,即制定计划、需求分析、设计、实现、测试和维护[12-13],并规定了这些活动是自上而下的,且它们之间的顺序不能改变。在项目开发中,要求这些活动严格按照顺序进行,在每一阶段都要有文档生成,以保证软件产品质量。但是,随着软件规模越来越大,功能趋向复杂和多样,这种固有模式已经无法适应开发需要,当用户需求随时改变后,就要重新进行分析,浪费了大量时间、人力等资源。

1.2 原型模型

原型模型相比于瀑布模型有较大改进,开发人员先同用户商议基本需求,根据这些需求建立一个原型,然后再对需求逐步求精,进一步细化,再进行改进,如此循环迭代,直到达到一个共同满意的原型系统[14-15]。该模型的优点是快速、充分考虑用户需求,弥补了瀑布模型的缺点,但该模型在起初阶段没有从整体出发全盘考虑,从而影响到软件产品的整体质量。长期来看,这种模型的维护性很差,只是为了达到与用户需求一致,在一定程度上开发人员舍弃了某些创新。

1.3 增量模型

增量模型是在瀑布模型和原型模型的基础上开发的。该模型中软件被看作是无数的增量集合构成,将软件分解为不同的功能模块。开发人员先开发最核心最基础的模块[16],开发完成后先让用户评审,之后再根据用户需求进行迭代开发,直至最后将用户的完整需求都开发出来,集成最终的产品。它在一定程度上改进了瀑布模型和原型模型,但也有不足:如增量模型要求软件具有很好的开放性与稳定性,能够顺利实现功能模块的分解和增量的集成。当把一个新的增量集成到已有结构中时,一般要求此增量尽可能少地改变原来的软件结构,所以要求增量具有相当好的功能独立性。

1.4 螺旋模型

螺旋模型是1988年由Barry Boehm[17]提出,是一种周期迭代模型,该模型提出了“风险分析”步骤,这是其它传统模型所不具备的。其每一次迭代都包括需求定义、风险分析、工程实现和评审4个阶段,每次开发前都要进行风险分析,及时识别风险并进行有效控制进而提高软件质量。螺旋模型也有不足,如要求软件开发人员或风险分析人员有丰富的风险评估经验和专门知识,能力要求较高。

2 局限性总结

对以上传统软件开发模型的局限性进行如下概括:

(1)软件测试只是软件开发的一部分,并未贯彻到整个软件开发活动中。

(2)对于任何一个软件产品来说,风险都是随时随地存在的,风险会对软件产品的质量造成伤害,但大多数传统模型都没有做到控制风险。

(3)对软件的需求分析往往不够充分,不够明确,最后可能导致用户不满意软件产品,造成资源浪费。

3 改进的软件开发模型

针对上述不足进行改进,提出了“组合”模型,如图1所示。

图1 “组合”模型

“组合”模型改进要点如下:

(1)从图1可以看到,“组合”模型以增量模型为基本框架,以增量模型为基本框架是因为增量模型融合了瀑布模型和原型模型,其间又增添了很多具体信息。它要求先向客户发布一个最核心的软件产品,待用户仔细评审和初步使用后,根据这个核心产品的满意度再决定是否进行后续步骤。正因如此,在前期可不用投入过多人力,以免造成不必要的人力浪费;另一方面,先进行核心产品开发也可降低一定程度的风险,给最终的软件产品增加一份保障。

(2)风险问题是软件开发过程中不容忽略的重要问题[18-21],风险有大有小,因此会在不同程度上影响软件产品。在改进的软件开发模型中,加强了风险控制,在每一阶段的需求分析后都加入风险识别、分析与控制,每一阶段都标示多个主要风险,争取把所有风险因素找出来,从而选择一个合适的对策减少风险带来的损害,提高软件产品质量。此外,应积极宣传有关风险知识,定期举行风险问题讨论会,加强风险管理学习。

(3)对于一些大型软件开发,软件产品涉及工业、农业、商业等各行各业,这些行业的复杂程度很难想象,软件开发人员在起初阶段难以完整进行需求定义。为使开发人员对用户提出的软件需求理解更加充分,该模型借鉴了智能模型中的专家系统。首先从需求分析得出该软件所涉及的背景、领域、书本、各类专家等方面知识,再基于一定的机制进行表示和编码,构成一定的知识库。从图1可以看出,利用书本以及专家丰富的专业知识和经验共同定义软件需求,会使软件需求更加明晰,对软件有一个更好的把握,更有利于软件开发。

(4)一个好的软件开发模型的最终目的是提升软件质量,尽早高效地检测出错误。因此软件测试地位与其它几个阶段是平等甚至说更加重要的,软件测试应该始终伴随软件开发过程。当软件功能越来越复杂时,出现的问题就会越多,越早发现就能越早改正,从而避免产生大的问题。在定义软件需求时就进行需求测试,能保证需求阶段软件产品与用户要求一致,这一方面能在一定程度上避免一些人力、物力等资源浪费,另一方面测试人员可了解用户的部分需求信息,可从用户和自身双重角度设计测试用例,更有利于及早发现问题、解决问题,提高软件质量。

(5)软件编写到后期阶段一些问题才可能被发现,因为较高层次测试阶段发现的软件缺陷可能影响到较低层次的测试阶段,所以当问题修改过后必须要回到起始阶段做回归测试。这些测试要循环进行,对测试用例也要不断完善。另外,在测试完成后要交给用户评审,若发现有需求变更或有错误的地方要及时更正,不断地进行迭代开发,直至开发出令用户满意的产品。

(6)测试用例要广而且多。为了实现测试用例的复用,可以建立一个测试用例库,分析各种测试用例特点,找出其共性并添加到库中,这样做可以对一些测试用例进行复用,到下一次再有相似问题时直接使用,在一定程度上节省了资源和时间,加速了软件开发。

4 测试实例

典当O2O(典宝网)后台管理系统是一个集估价商品、典当商品、信息维护于一体的系统,总体模块结构如图2所示。

图2 模块结构

该系统3个功能相对独立,存在的潜在风险也较大,估价和典当业务需要很专业的知识,往往需要这些领域专家的参与,如果只是单纯使用4种传统软件开发模型,根本就不足以开发出一个完整项目。采用改进后的软件开发模型进行开发,与传统方法进行对比,结果见表1。开发包括从需求分析一直到整个软件产品上线。

表1 各模型对比

瀑布模型只能进行线性开发,原型模型只注重了前期的需求、增量,螺旋模型没有应用具体领域知识,对需求理解不是很准确,这些传统模型在开发项目时遇到了不少困难。将改进的软件开发模型进行开发项目,发现组合模型更占优势,它不仅节省了时间,而且需要的总人数也较少,注重了产品质量,达到了用户需求。

5 结语

选择一个合适的软件开发模型指导软件开发极其重要。通过比较传统开发模型的不足,在增量模型的基础上进行改进,提出组合模型并运用到实际项目中。实践表明,组合模型提高了软件开发效率,避免了人力、物力等资源浪费,有一定的参考价值。

猜你喜欢

开发人员测试用例增量
提质和增量之间的“辩证”
基于SmartUnit的安全通信系统单元测试用例自动生成
Semtech发布LoRa Basics 以加速物联网应用
基于混合遗传算法的回归测试用例集最小化研究
基于均衡增量近邻查询的位置隐私保护方法
基于依赖结构的测试用例优先级技术
德州仪器(TI)发布了一对32位增量-累加模数转换器(ADC):ADS1262和ADS126
软件回归测试用例选取方法研究
三星SMI扩展Java论坛 开发人员可用母语