敏捷软件开发与传统软件工程概述比较

敏捷软件开发与传统软件工程概述比较

翁松秀数据库

北京航空航天大学计算机学院编程

  摘要:软件工程的开发过程当中有两种大相径庭的管理和开发体系,一种是基于“瀑布模型”的预设性传统软件工程,另外一种是轻量级的适应性敏捷软件开发,本文简单阐述传统软件工程的开发方法与敏捷软件开发的异同,并经过“瀑布模型”和SCRUM方法的比较来探析传统软件工程与敏捷软件开发的异同。最后得出结论,把传统软件工程和敏捷软件开发相结合,将软件架构“颗粒化”,在简单可快速交付的敏捷软件开发中嵌套系统的传统软件开发方法,实现预见性和适应性折中。架构

关键词:敏捷软件开发;传统软件工程;瀑布模型;SCRUM方法;嵌套;颗粒化框架

  0 前言运维

  随着计算机的发展,对软件的需求愈来愈大,软件的规模也变得愈来愈大,结构愈来愈复杂,软件开发管理困难而复杂,在这个“软件危机”背景下产生的传统软件工程,用工程化的方法构建和维护有效和高质量的软件。暂时解决了软件的兵荒马乱时代,但随着社会和科技的发展,对软件的需求变化愈来愈快,传统的软件工程很难再适应瞬息万变的客户需求,敏捷软件开发应运而生,其轻量级、简单、可快速交付、适应性强收到开发团队的青睐,与传统软件工程并肩,造成软件工程中的两大开发体系。工具

  1 传统软件工程测试

1.1 传统软件工程概述编码

  基于“瀑布模型”的传统软件开发方法中,以软件架构(software architecture)为核心,采用结构化的设计和分析方法将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动。并规定他们自上而下,相互衔接的顺序,如同瀑布的流水通常,各个阶段的经过文档相互流通。前期就要设计好整个软件大厦的框架来指导和支撑后面各个方面的开发和维护工做,后面再根据前期设计的蓝图来逐步实现。由架构师完成软件架构设计,开发人员再根据软件大厦的蓝图进行软件开发。这种开发方法的优势是,超前的预见性和每一阶段都要经过严格的审查才能进行下一个阶段,保证了软件的质量。缺点是,软件的框架一旦肯定下来就很难改变,甚至会牵一发而动全身,难以适应变化莫测的客户需求。因为各个阶段要自上而下相互衔接,各个阶段的沟通要经过大量臃肿、复杂的文档来传递信息。spa

  1.2 瀑布模型架构设计

  瀑布模型是Winston Royce1970年提出的一种软件开发模型,瀑布式开发是一种传统的计算机软件开发,是最典型的预见性软件开发方法,严格遵照计划、分析、设计、编码、测试、维护的步骤。阶段之间经过文档流通,每一个阶段结束时要进行严格的审查,检查功能设计和实现是否符合上阶段流下来的文档的要求,若是不符合就逆流到上个阶段检查并修正,以此往复,直到流到最后阶段产品经过测试后进行发布以及运行期间的维护。

  • 瀑布模型开发过程(如图)

    • 三个阶段:定义阶段、开发阶段和维护阶段。开发阶段架构师要有预见性地分析客户如今的需求以及之后可能变更的需求,设计规划好大量的功能需求和非功能需求,尽量多地知足客户后面需求的变更,避免往后重构软件框架带来的成本亏损。设计包括UML图,API接口,数据库表等。开发阶段开发人员根据架构师的对客户需求分析之后设计的蓝图进行软件的开发和测试,实现用户的需求。运维阶段开发团队根据用户使用软件的体验、反馈、软件存在的BUG和新增功能需求对软件进行维护,保证软件在保证鲁棒性的前提下能尽量地知足客户的需求。
    • 六个流程:制定计划、需求分析、软件设计、程序编写、软件测试和运行维护。
  • 瀑布模型的特色
    • 强调文档。瀑布模型每一个阶段之间的沟通和交流就是文档,上一个阶段的输出就是下一个阶段的输入,文档就是先后阶段衔接的介质。缺乏开发人员之间面对面的沟通与交流,形成文档臃肿现象。
    • 结构明显。按需求分析将整个工程划分为完整的阶段集合,每个阶段都有明确的检查点,当出现问题可使用顺藤摸瓜式往上检查。当一个阶段结束后经过严格审查,就能够只关注下个阶段,出现问题再逆流检查。

  2 敏捷软件开发

  1.2 敏捷软件开发概述

  2001年由17位业界专家构成的敏捷开发联盟成立,联盟起草了敏捷宣言:个体与交互赛过过程和工具;可用的软件高于复杂的文档;客户的合做赛过合同的谈判;响应变化赛过遵循计划。敏捷软件开发是一组重视人的主观能动性和开发人员、管理层和产品负责人的沟通,经过迭代式和增量式软件,追求便捷,可快速交付,及时响应客户需求变更的软件开发管理方法。

  敏捷软件开发方法体系主要包括:SCRUMXP(极限编程)、CRYSTAL(水晶编程)、PDD(特性驱动开发)等。敏捷软件开发的一个精髓就是“刚刚够(Just enough)”思想。用逐步实现的思想替代完整构架,每一步的需求和人员及其沟通、开发成本都刚恰好,经过不断地迭代,在迭代过程当中响应客户需求的变化,实现最紧致成本,体现“刚恰好”思想。同时对每次迭代的反馈进行讨论和思考,总结经验和吸收教训。

  2.2 SCRUM方法

  在敏捷软件开发中,软件项目被切分红不少个子项目,经过选取优先级较高的一组子项目做为敏捷迭代的球心进行迭代,每次迭代都有明确的需求、目标、人员、而且每次迭代以后都要有可交付的产品。就比如从山顶滚雪球,选取优先级较高的需求做为首次迭代的球心,通过增量式迭代,每次迭代加带必定的需求滚下山,下山就能够造成可交付的产品。

  • 三个角色:管理层(Scrum Master)、产品负责人(Product Owner)和开发团队(Team)。
  • 三种工件:产品列表(Product Backlog)、迭代列表(Sprint Backlog)和燃尽图(Burn Down Chart)。
  • 四个会议:Sprint Plan MeetingSprint 计划会议)、Daily Scrum MeetingScrum每日会议)和Sprint Review MeetingSprint评审会议)和Sprint Retrospective MeetingSprint回顾会议)。

  • 五个步骤

    (1)Product Owner根据需求的优先级肯定一个排序好的Product Backlog

    (2)Scrum Team经过Sprint Plan Meeting根据Product Backlog按优先级选出一组需求做为迭代的目标,即Sprint Backlog。这个阶段通常的时间是4周。

    (3)Scrum Team完成Sprint Backlog过程当中须要天天都要进行Daily Scrum Meeting,每一个人都要汇报所完成的进度和遇到的问题,总结经验,经过Burn Down Chart记录工做的整个过程。

    (4)当本次SprintSprint Backlog都实现完以后进行Sprint Review Meeting,这个会议中管理层和产品负责人以及开发团队都要参加,讨论本次Sprint交付的产品,以及根据产品负责人的需求变更及时调整。

    (5)最后进行Sprint Retrospective Meeting,回顾本次Sprint整个过程当中开发遇到的问题,以及解决的方案,为下一轮Sprint作准备。

 

  3 结束语

  3.1 敏捷开发与软件架构的比较

  敏捷开发的优势是轻量级、简单、可快速交付,最大的特色是高度透明、检验和适应,注重开发团队之间以及开发团队与客户的及时沟通,主张响应需求变化,可是不够系统。

  传统软件架构的优势在于预见性和系统性,能在正式开发前预见软件的功能需求和非功能需求,最大的特色是重视文档和结构明显,主张固定流水开发,很难响应客户需求的变化,难以保证开发的灵活性。

  3.2 敏捷开发与软件架构的融合

  将具备系统性和预见性的软件架构嵌套到敏捷开发的每次轻量级的迭代中,将软件架构颗粒化,嵌套到整个敏捷开发,使软件工程兼具软件构架的预见性和敏捷开发的适应性,根据项目的大小来调整嵌套的程度,根据每次迭代项目的大小来选择不一样的架构,实现敏捷开发与软件架构融合的共赢。

  参考文献:

[1]王玉玺.浅谈敏捷软件开发.设计开发.2014

[2]孙嘉瑞.敏捷开发方法综述.科技创新.2015

[3]聂华北,沈剑翘.几种常见的敏捷软件开发方法综述.计算机系统应用.2008

[4]王琼.敏捷软件开发过程研究及应用.技术探讨.2015

[5]李声威,王爱景.敏捷开发与软件架构概述比较.万方数据.2015

[6]孙宗旺,蓝金球.基于Web服务组合的敏捷软件开发研究.软件导刊.2015

相关文章
相关标签/搜索