浅析敏捷开发与传统软件开发的区别

敏捷开发的缘来编程

随着信息技术的迅速发展和经济的全球化,对软件开发的生产率提出了更高的要求。所以,软件开发界为了知足市场须要,同时也为了减少软件开发项目但愿可以有更多的可预测性和实际需求的模糊和快速变化不相协调这一因素给软件的开发定期完成所形成的风险,逐渐兴起了一类以快捷、轻便的思惟方式迅速解决了一些传统软件开发企业的生产效率的新的开发方法,这类方法称为敏捷软件开发方法。2001年2月11日到13日,17位软件开发领域的领军人物汇集在美国犹他州的滑雪胜地雪鸟(Snowbird)雪场。通过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以归纳一套全新的软件开发价值观。这套价值观,经过一份简明扼要的《敏捷宣言》传递给世界,该宣言中写道:咱们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此咱们创建了以下价值观:个体和互动高于流程和工具、工做的软件高于详尽的文档、客户合做高于合同谈判、响应变化高于遵循计划也就是说,尽管右项有其价值,咱们更重视左项的价值。从而宣告了敏捷开发运动的开始。安全

敏捷软件开发和传统软件工程的简介网络

敏捷软件开发方法其实不是一个具体的过程,而是一个用于归纳那些应需而生的具备相似价值观的软件开发方式和方法的涵盖性术语。这些方法基于迭代和增量开发,经过自组织,跨团队,沟通协做完成开发工做,通常都具备以人为核心、循环迭代、响应变化等特色,着眼于能高质量地快速交付客户满意的工做软件,从而来应对快速变化的需求。在敏捷开发中,软件项目的构建被切分红多个通过测试且具有集成和可运行特征的子项目,并分别完成,在此过程当中软件一直处于可以使用状态。而咱们所说的传统软件工程方法主要是指结构化软件工程方法,传统软件开发是以软件架构为核心的预测型开发过程,将传统软件工程方法分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个分离的基本活动,每一个基本活动的输出做为下一个阶段的输入,如同瀑布的流水通常,各个阶段的经过文档相互流通。代码为预先规划、彻底设计而后完成。在传统软件开发方法中,分析和设计是其最为重要的阶段,其前期的工做主要集中在分析和设计阶段,其中分析阶段对数据、数据流和功能进行分析。前期就要设计好整个软件大厦的框架来指导和支撑后面各个方面的开发和维护工做,后面在根据前期设计的蓝图来逐步实现。架构

敏捷软件开发和传统软件开发的差别框架

在敏捷软件开发中以极限编程为表明,12 个详细原则组成了宣言中提到的 4 个观点,这些原则是区别于传统软件工程的特征所在:① 最高优先级是经过尽早和常常交付有价值的软件来令客户满意;② 不断地交付软件,以每两周或每两个月为周期,推荐使用较短的周期;③ 可运行的软件是工做进展的主要度量标准;④ 以积极的态度对待需求的变化,即便在开发阶段末期也不例外。 敏捷过程利用变化来为客户创造竞争优点;⑤ 在整个开发过程当中,业务人员和开发人员最好能天天一块儿工做;⑥ 项目由积极主动的人员来完成,给他们提供所需的环境和支持,信任他们能把工做作好;⑦ 在开发团队中,最具备效果和最有效率的信息交流手段是面对面的交谈;⑧ 最好的系统构架、 需求和设计产生于自组织的团队;⑨ 应时刻关注技术上的精益求精和合理的设计,这样能够提升应变能力;敏捷过程提倡可持续开发思想。出资人、开发者、用户应该保持长期、恒定的开发速度;简单化——最佳化未完成的工做的艺术——是相当重要的;团队应该按期对其运做方法进行反思,考虑如何能变得更有效,提出改进意见,并据此进行相应的调整。而以“瀑布模型”( Waterfall Model)[1]为表明的传统软件开发方法,团队在开发的前期老是但愿把需求分析作细、作完整,尽量把变化排除在软件开发过程以外从而来减少由于需求变化对软件开发进度、软件质量以及用户的满意程度所产生的影响,也就是说,其软件开发活动是严格按照线性方式进行的,软件活动自由度相对敏捷软件开发较低。工具

敏捷软件开发相比传统软件工程的的优点测试

从对比中咱们能够发现,相对于传统软件开发而言,敏捷软件开发具备如下特色:1.觉得为本,强调客户和开发团队间的有效沟通和紧密协做,而相比之下,传统软件工程更加依赖于合同和规格的说明。2.适应性较强,接受开发过程当中需求的频繁修改,能有效地应对需求的变动,而传统软件工程中开发活动是严格按照线性方式进行的,因此较不能接受开发过程当中对需求进行频繁更改。3.高度迭代,持续集成。在敏捷软件开发中,将开发过程划分为尽量短的周期,每次迭代完成用户的部分需求,后面的迭代都是在前面迭代的基础上对系统功能进行修改、细化以及扩展的功能,设计随着需求而发展,直至系统功能完善,相比之下,传统软件开发方法中,代码为预先规划,彻底设计,而后生成,对需求和架构设计的不肯定性较低[2]架构设计

传统软件开发的两个重要缺陷设计

相比于敏捷软件开发,传统软件开发有两个重要缺陷:1.因为软件开发早期客户每每不肯定本身真实的须要,因此在早期创建的需求模型每每不能准确包含系统所需的功能,可是传统软件工程的开发又是按照计划在线性模式下开发,因此在开发完成后,若客户提出改变需求的要求,将会对系统进行频繁的修改,这会大大影响到系统的兼容性。而另外一方面,传统软件工程开发的测试阶段每每都是在整个代码编写完后才进行测试,假如在测试中发现问题,有可能要对整个模块进行修改,这样的返工成本每每是巨大的[3]。而相比之下,因为敏捷软件开发采用迭代式开发的方式,经过不断发布新版本并演示给客户,似的客户在交互过程当中发现本身须要的系统特性,能够避免客户在开发初期不能提供准确详细需求而致使的问题。从这能够看出传统软件工程在需求频繁更变的状况下所变现出的巨大局限性。生命周期

传统软件开发的优点之处

尽管如此,这并不意味着传统的软件开发就一无可取,正是由于传统软件开发强调文档对于团队成员的指导做用,开发人员能够在不知道项目细节的状况下进行开发,同时,因为开发计划一开始就已经订好,这样避免了大量同客户沟通交流的迭代会议的召开从而拥有更加富裕的开发时间,有利于开发出更好的产品。而另外一方面,超前的预见性和每一阶段都要经过严格的审查才能进行下一个阶段,保证了软件的质量。

小结

敏捷软件开发和传统软件开发这两种方法各有各自擅长的领域,差别很大可是各有千秋。传统软件开发在大型、复杂的系统中优点更为明显,由于这些系统通常都具备安全关键或者其余高可靠性的属性,需求常常至关稳定,环境也具备至关的可预见性。而敏捷软件开发擅长的则是那些系统和开发团队规模较小、客户和系统的使用随时能够到位、需求和环境相对容易变动的项目。在他们各自的领域中它们的优点明显优于对手,并不能一律而论的说哪一种开发方式更好、更为优秀。在将来,应用开发领域的发展趋势既须要敏捷,又离不开规范。咱们能够看到,一些平衡这二者的方法正在显现,逐步创建方法,而不是自上而下剪枝,而另外一方面,方法当然重要,可是同时也应该关注人、价值观念、沟通以及指望管理有关的领域[4]

[1] 李龙澍.实用软件工程[M].北京:人民邮电出版社,2005

[2] 吴洁明,万励,莫智懿,陆科达 敏捷方法与传统软件工程方法在通用型网络考试系统开发中的应用比较  梧州学院学报 第20卷第6期

[3] 张智丽 软件开发生命周期比较之敏捷与传统 电脑开发与应用 2013年12期

[4] 夏显鄂,梁洪峻. 敏捷软件开发与计划驱动开发的概述比较 计算机工程与设计 第28卷第16期

相关文章
相关标签/搜索