敏捷软件开发VS传统软件开发

敏捷软件开发VS传统软件开发

软件开发方法是软件工程理论的重要内容,在软件开发方法中,对于开发软件时的“做什么”和”如何做“,给出了明确的、详细的回答。那软件开发方法的”做什么”和”如何做”之间究竟有什么异同?

下面本文就传统软件开发和敏捷软件开发的来探讨一下。

关于传统软件开发

在软件开发方法出现之前,人们普遍错误的认为开发软件只是编写程序。当时,软件开发活动个体化非常严重,编写程序随心所欲,过分追求编程技巧,造成程序很难阅读和理解,导致后期软件出现问题无法维护,比如不重视需求分析工作,对用户需求了解的不全面,开发出的软件往往与客户要求有很大差距。软件危机一天天加重,为了消除软件危机,人们开始思考软件活动和改进软件开发方法。1965年,以Dijkstra的极力坚持取消goto语句为开端,大家渐渐认识到应该改变传统思维观念,创建新观念,来进行软件开发。渐渐的出现了新的设计方法——结构化设计编程。1971年,IBM公司在设计纽约时报信息管理系统时,使用了结构化设计方法(也称传统软件开发方法),完成了83000行的程序的编写。结构化软

件开发方法成为20世纪70年代和80 年代占主导地位的软件开发方法, 直到现在仍在发挥作用。它的广泛运用, 有效地遏制了软件危机的蔓延。

传统软件开发的生命周期模式是从时间角度对软件开发和维护的复杂问题进行分解, 把软件生命的漫长周期依次划分为若干个阶段, 每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。一般遵循分析、设计、开发、测试、实施和维护的流程,整个过程用户没有或很少参与,需求基本一次给出。各个阶段的工作按自顶向下、从抽象到具体的顺序进行。传统的生命周期开发方法可以用瀑布模型来模拟,如图1所示。

图1

优点(优缺点是在两种软件设计方法对比的基础上给出的)

>对开发人员的个人技能无太高要求;

>结构化分析,有效遏制了软件危机。

缺陷

>花费时间较长;

>测试放在最后,若出现问题,需要对整个模块进行返工、有可能延迟交付;

>在开发中期冻结用户需求,但由于开发早期客户往往并不能明确自己所需要的功能,导致后期修改难度增加或者修改后会导致整个系统的兼容性受影响。

关于敏捷软件开发

传统软件开发主张采用预先设计的方式,希望通过前期投入来降低未来的投入,但现实中,由于需求的不稳定性,设计不可能一次完成。

由于传统软件开发存在着开发周期长、成本大、产品和用户期望有较大差距的问题,敏捷软件开发在20世纪90年代后期逐渐发展起来,敏捷软件开发是为了适应变化、充分发挥人的主观能动性、简化开发过程、提高开发效率、以人为中心的软件开发,提倡刚好够用,追求快节奏,主要针对传统的软件开发过程复杂繁琐、产生并维护大量文档、缺乏对开发过程中各种变化的有效和及时的反应等问题。2001年2月,敏捷软件开发方法的创始人在美国犹他州成立敏捷联盟,发布了敏捷开发宣言,公布了他们开发软件的新的思维观念,引起了人们的广泛关注。其中,敏捷软件开发的4条价值观是:

>重视个人的创造力和相互沟通甚于软件过程和软件工具;

>重视当前软件甚于理解文档;

>重视用户合作甚于仅仅依赖合同;

>重视对变动的响应甚于一味遵循计划。

敏捷软件开发不同于传统软件开发,其项目初期只是得到大概的需求和架构模型,具体的需求是在后面的每次迭代与客户沟通中逐渐细化。在多次迭代的过程中,一步步完成用户的需求。其软件开发方法可以用软件开发方法的迭代模型来模拟,如图2所示。

图2

敏捷软件的软件开发方法有两种开发模型:

第一种是Boehm 提出的螺旋模型:

(1)分析, 建原型, 评价与修改;

(2)设计, 建原型, 评价与修改;

(3)程序设计, 建原型, 评价与修改;

第二种是Gilb 提出的渐增模型:

(1)完成一部分分析工作;

(2)完成一部分设计工作;

(3)完成一部分程序设计工作;

(4)建原型, 评价与修改;

(5)重复上述过程。

敏捷软件开发有多种开发方法,其中XP极限编程是反响最大、最完善的过程方法。

XP强调4条基本的价值:沟通、反馈、简单和勇气。分别对应1)与客户以及开发团队内部持续的交流。2)通过单元测试和功能测试得到快速反馈。3)总是将焦点放在最小限度的解决方案上。4)积极寻求更简单的解决方法,用于改进代码的设计和质量。

XP对测试极端重视,并将其作为开发的基础。XP认为提前添加测试可避免将与客户需求不一致的代码写入程序模块中。XP还要求采用自动化测试工具,通过测试后,要被整合到系统中去,加入后,需要通过先前系统所做的所有测试。

XP采用渐进的迭代开发过程,比如开发过程中安排6个左右的迭代,每个迭代过程1-3周。XP将注意力集中在当前的迭代上,而不去管将来的需求。这种设计过程的结果是纪律性和适应性的高度统一,使得XP成为敏捷方法中发展最好的一种方法。

优点

>多次迭代获取用户需、完善工程,最终的成品能最大限度的符合客户真实的需求。

>由于是结队编程,减少了很多繁琐不重要的文档,其开发周期较短。

缺点

>由于文档较少,降低了系统的可理解性;

>对开发人员有额外技能要求。敏捷开发强调交互和客户的参与,这就要求参与敏捷开发每个工作人员都具备一定的个人能力和社交技能。

>由于开发过程需要多次迭代,所以要求程序员整个开发过程对软件的整体架构和每一处具体架构都有很清晰的认识,并且对软件开发相当有经验。

>强调客户的参与作用,在实际中有一定困难。

>团队开发,领导者如何管理团队在缺少像传统开发的文档并且需求经常改变的情况下做到协调,很有难度。

敏捷软件开发相比传统软件开发是一个较新的软件开发理念。它更多的表现在理念描述上。他给出基本的价值观、原则和相关实践,但基本的度还是要靠开发人员自己掌握,所以敏捷软件开发具有较高的灵活性,同时也具有很多不确定性,适合有经验和有一定能力的开发人员使用。

应用分析

每种开发模型试用的场合不同,例如,软件开发的瀑布模型适用于在开发期内很少或没有需求变化、对应用领域很熟、低风险项目。敏捷开发适用于一开始不清楚具体需求或对产品要求高的客户、默契度高的团队、开发时间短的项目。

不论采用何种软件开发的方法, 都必须完成一系列性质各异的工作, 这些必须完成的工作要素是:确定“做什么”和“怎么做” , 如何“实现”和“改善”等。采用不同的软件开发方法可能改变这些工作要素的顺序、名称和相对重要性, 但是却不能忽略其中任何一个要素。由于每个软件系统都或多或少有其特殊性, 因此, 不能泛泛地称某种软件开发方法“最好”。但同时,将来随着敏捷软件开发的逐步完善,或许适应性会变得更强。

【参考文献】

[1]高禹,冯相忠.软件开发方法的创新发展过程研究[J].科学学研究,2009,02:180-186.

[2]张志丽.软件开发生命周期法比较之敏捷与传统[J].电脑开发与应用,2013,12:32-34+37.

[3]温力.软件开发方法及其应用[J].广西财政高等专科学校学报,2000,04:60-64.

[4]张友生,李雄.软件开发模型研究综述[J].计算机工程与应用,2006,03:109-115.

[5]范洪涛.敏捷软件开发应用研究[D].西南交通大学,2009.

[6]彭志楠.敏捷开发在软件开发中的应用研究[D].电子科技大学,2009.

时间: 2024-10-19 12:51:58

敏捷软件开发VS传统软件开发的相关文章

浅谈敏捷软件开发与传统软件开发

本文将介绍传统软件开发与敏捷软件开发,并简单分析二者的优缺. 首先我查阅相关资料大致了解了下为什么会爆发"软件危机"和什么是"软件危机".由于在早期的软件开发活动中有明显的个体化特征,开发流程不规范,人们没有将软件与程序加以详细的区别,对程序之外的数据和相关文档资料没有给予重视,对编写程序之外的软件活动也没有给予重视,因此出现了"软件危机"."软件危机"的特点有:开发成本急剧上升.不能按时交付软件.软件难以维护.无法保证软件质

敏捷软件开发与传统软件开发的对比

敏捷软件开发与传统软件开发的对比 最早了解敏捷开发是通过大二的一次博雅课堂,一位在百度工作的北航学长跟我们分享了他近年来从事敏捷开发的经历.印象最深的一句话是一个延迟3个月交付100%功能的软件和一个按时交付75%核心功能的软件,敏捷软件开发者更愿意选择后者.本学期的软件工程基础课又向我们讲授了传统软件开发,经过课上和课后的学习,对于敏捷软件开发和传统软件开发有了浅显的认识和理解.由于课上学习的重点是传统软件开发,所以课下对敏捷软件开发进行了更多的涉猎,本文以敏捷软件开发为主体,来分析其与传统软

减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程". 业务逻辑,通俗说就是:比如要取数据的操作,取出会员编号为x的数据,原来我们一般是封装成函数,或者直接编写sql语句查询.现在是交给数据库的存储过程去完成. +------------------------------------------------------------ 写这篇文章的缘由 +-----

敏捷软件开发 VS. 传统软件工程

敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将软件工程这一学科具体化,软件工程中开发与管理软件的方法也不断完备.而敏捷软件开发于2001年由Kent Beck和其他16位知名软件开发者提出,敏捷开发是人们对于传统软件开发方式的一种提出的新的挑战.本文将具体介绍软件传统工程与敏捷软件开发两种方法,并对两者进行对比分析. 一.传统软件工程 软件工程

敏捷软件开发与传统软件工程——因果篇

因--差异之源 近来秋将尽,京中阴霾好几日不见好转,更有几天雨水扰人心烦.幸得一日周末,又逢雨过天晴,秋高气爽,捡得几番文笔来细述敏捷软件开发与传统软件工程之异同. 从字面看来,二者无非是"敏捷"与"传统"一词之差.然而这两个词又同属修饰之词,因此就这两个词之差自然就是两种开发方法的差别所在. 敏捷一词,自然是好理解.正如众人所云如游侠身手之敏捷,为称赞游侠反映之迅速,应对变化之机敏.此处用以修饰软件开发,我们亦可套用迅速应变之意,也就是在软件开发过程中能迅速应对需

传统软件开发VS敏捷软件开发

在上世纪60年代,由于计算机的计算能力显著提升,人们需要处理问题的复杂程度也得到提升,导致了一系列问题比如项目运行超过预算.项目运行超过时间.软件十分低效.软件质量很低.软件无法满足需求.项目缺乏管理,代码难以维护.软件难以交付,称为软件危机.人们意识到,软件开发不仅仅是让程序员编写程序那么简单,而是一项工程,需要科学的开发方法,从而人们提出了软件工程的概念,采用工程化的方法对软件开发进行管理.而在当今,软件工程中软件开发方法主要分为传统软件开发和敏捷软件开发.本文主要介绍这两种软件开发方法以及

敏捷开发与传统开发

  本文主要介绍和讨论什么是敏捷开发和传统软件开发,分析这两个软件开发方法的特点并作出对比.首先介绍什么是传统软件开发. 传统开发 传统软件开发主要指的是传统软件开发的模型.传统的软件开发模型包括瀑布模型.增量过程模型.原型模型.螺旋模型等.这里就主要说这四个模型. 瀑布模型 瀑布模型可以说是狭义上的传统开发模型.1970年温斯顿·罗伊斯(Winston Royce)提出了著名的"瀑布模型",直到80年代早期,它一直是唯一被广泛采用的软件开发模型.瀑布模型由软件开发经典的四个过程组成-

敏捷软件开发VS传统软件工程

敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中"人"的作用. 本文将介绍敏捷软件开发的历史背景与发展,

敏捷软件开发和传统软件工程

一.   传统软件工程 从上个世纪60年代开始,人们开始逐渐认识到了确实存在着"软件危机" 这样一个事实,软件开发人员被诸如下列问题困扰: 软件生产不能满足日益增长的需要 软件开发成本和开发进度估计往往不准确 软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低 软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已成为许多计算机系统中花钱最多的项目 软件质量难以保证 软件可维护性差,程序中的错误很难改正,适应性或完善性维护都极其困难 导致危机问题的一个重要原因