敏捷开发在软件工程中的应用研究.doc_第1页
敏捷开发在软件工程中的应用研究.doc_第2页
敏捷开发在软件工程中的应用研究.doc_第3页
敏捷开发在软件工程中的应用研究.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

敏捷开发在软件工程中的应用研究摘要:本文根据现有软件工程模型的实际运用对比,列举出适合敏捷开发过程的应用场景,并对常用敏捷开发过程进行分析,为实现软件产品的轻量化管理交付提供了参考依据。Abstract:Based on the contraction of existing software engineering models application case, this paper describes different scenarios for the application of agile development ,and also supplies several analysis of processes of actual used method. It provides a reference for how to achieve the aim of lightweight delivery of software product.Keyword:Software engineering, Development model, Agile development 随着信息化技术的高速发展以及网络产品的普及,客户对于软件产品的版本稳定性及交付周期都提出了更为严格的要求,软件工程理念的引入正迎合了这一需求。软件工程采用工程的概念、原理、技术、方法来开发与维护软件,利用软件工程模型整合资源、缩短开发周期,在实际运用中取得了良好效果。然而,在版本维护周期缩短,版本迭代速度提升的前提下,原有的软件工程模型在客户需求和开发时间的双重压力下,被开发负责人分解为多个相互联系也可独立运行的小模型并分别完成,在此过程中软件一直处于可使用状态,这就是敏捷开发。敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。文献1在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。本文通过分析软件工程模型的基础上,总结出敏捷开发应用的特点,在项目实际运用中具有参考价值。1. 传统的软件工程模型分析软件工程过程模型是一种策略,这种策略是由软件工程师在具体的实践工程活动当中设计并提炼 出来,能够覆盖软件过程的基本阶段,确定设计的方法、过程及工具 。文献2在实际中应用最多的软件工程模型主要包括瀑布模型、螺旋模型、迭代模型和原型模型,下表以表格的形式对这四种模型进行分析:模型名称形式优势劣势瀑布模型线性顺序模型。过程严格按照“需求一分析一设计一编码一测试”的步骤进行,每个阶段都要定义明确的产出物及验证准则。可以保证软件产品具有较高的质量:保证提前发现和解决 存在的缺陷;保证软件系统在整体上具有充分的把握,从而保证系 统具备 良好的可维护性和扩展性。 瀑布模型没有反馈环,难以完善和满足用户的需求,一旦需求发生变化后者需求增多,则瀑布模型就显示出了很大的劣势螺旋模型螺旋模型每一次迭代仅仅包含了瀑布模型的某一个或者个阶段螺旋模型遵循了瀑布模型的模式, 随着项目成本的逐渐增加, 风险性则逐渐减小。有利于 已有软件的重用,有助于把软件质量作为软件开发的重要目标,缺点是对于风险评估比较困难迭代模型迭代模型是指在进行较大规模的项 目任务时, 将迭代开发分为若干次, 第一次迭代完成项 目各阶段的基本业务, 但是不包含较为复杂的业务和逻辑,通过第二个功能则针对相关 的逻辑和业务逐渐补充完整并进行细化。迭代模型能够较早得到用户的反馈,不断的测试和整合,是 项目短期里程碑。主要适用于系统需求不稳定的情况 ,所包含的活动与瀑布模型一样,包括软件的需求分析和设计、代码生成测试及维护 。迭代周期以及每次迭代的内容难以规划,对于项目架构师要求较高原型模型原型模型能够快速实现一个可 以实际运作的系统初步模型, 适用于有结构的系统或者需求不明确的系统原型模型是很好的启发方法,可以迅速地挖掘用户的需求并与用户达成一 致,避免在签字时发现需求并不是客户所满意的东西 没有反馈环。原型模型一般不单独采用,往往是与瀑布模型和迭代模型一起使用。由上表分析可知,在软件工程实际运用中,只采用单一一种模型显然不能适应实际项目复杂的需求变更,采用各种模型组合开发的形式在实际运用中较为广泛,然而一些瀑布模型版本允许生命周期中相邻阶段的迭代,在大系统中肯定存在较晚阶段浮现的不能快速定位的问题,因而往往瀑布模型在实际运用中结束于大规模的迭代,那些迭代包括越来越多的生命周期阶段。生命周期的累加必然会造成开发周期的延长从而耽误交付时间,从而增加了软件开发的风险。因此采用面向对象的思想在传统软件模型基础上进行演进而产生的敏捷开发,就拥有了更多的应用场景。2. 敏捷开发过程的典型代表面向对象的思想是把系统定义为一组正在交互的对象,是一种不同以往的思考形式。敏捷开发所遵循的基本价值观可以总结为以下几点:开发团队和他们之间的交互比开发过程和所使用的工具更重要在软件产品上多下功夫比广泛的文档编制更重要在开发过程中间客户的良好协作比签订合同的谈判更重要积极面对需求的变更比实现一个完美的计划更重要。在这一价值观引导下,敏捷开发的开发过程主要是:2.1 极限编程(XP)极限编程是一套能快速开发高质量软件所需的价值观、原则和活动的集合,使软件能够快速开发出来并向客户提供最高效益文献3。极限编程的极限就在于它将众所周知的软件开发“最佳实践”都发挥到极致:a. 计划游戏:在需求和实现间取得平衡;b. 小版本:在每个迭代周期交付可执行的版本,根据客户提供的评价获得反馈。c. 简单设计:只设计立刻需要的东西。d. 测试:程序员编写单元测试,使得他们对程序的信心成为程序的一部分;e. 重构:更改现有程序从而使添加功能变得简单;f. 结对编程:所有的生产代码都由两个人使用同一台计算机完成;g. 集体所有权:任何人有发现改进代码的机会,并马上执行改进;h. 持续集成:几个小时的开发后对代码进行集成和测试;i. 现场客户:真是的客户同开发团队坐在一起,随时回答问题;j. 编码标准:人员交换和代码重构的要求,追求最小工作量。2.2 SCRUMSCRUM是一种迭代的增量化过程,用于产品开发或工作管理,其将项目分成短期迭代,或者“短跑”(sprints),每个sprint在开发团队和团队管理间有个短会跟踪进展,在每个sprint期间开发目标保持不变文献4。在一个sprint运作期间,新需求的加入会规划到下一个sprint中去,从而保证每个sprint 中的开发目标保持不变。SCRUM是一种对已存在系统的管理、提高和维护方法,在SCRUM中发布产品的重要性高于一切,其主要关注项目的客户需求、时间压力、竞争、质量、版本和资源。2.3 RUPRUP将一个项目分解成多个开发周期,将每个开发周期分解成多个阶段:先启阶段、精化阶段、构建阶段和移交(产品化)阶段。每个阶段由依次的开发迭代组成,每个迭代产生可执行的产出物。RUP在软件开发中确定了一系列的“工作流”:业务建模、需求、分析、设计、实现、测试、部署、配置和变更管理、项目管理、环境管理。所有的工作流在每个阶段都会涉及。RUP在每个阶段为每个开发成员都提供了行为准则、模板和工具指导,建立了简洁和清晰的过程结构,为开发过程提供较大的通用性,但是RUP只是一个过程,没有涵盖软件工程的全部内容,例如缺少软件运行和支持方面的内容文献5,在实际运用中可以结合软件工程的整体计划进行改进。2.4 Crystal水晶方法组由一系列以人为本、自适应、超轻型、可伸缩的软件开发方法构成。Crystal方法不仅考虑最佳理论,而且考虑切实可行,因此希望获得好的折衷并最终满足大批需求而取得成果。过程的形式由项目的大小和种类比例决定,Crystal经验包括:强调一组,不同项目需要不同方法;两个主要变数:开发团队人数和可靠性要求;注重人性:考虑开发者不易遵循严格方法,强调不很严格但仍能保证成功和容易执行的方法。Crystal 可以说是最轻的一类方法,但不惜对迭代过程后期评审加载,以及早发现问题和及时纠正,强调对过程的监控,使开发过程呈现出定制化的特定,是非常人性化的开发方式。3. 结论。由上述分析可得出结论:在实际系统项目运用中,是否采用敏捷开发要依据项目规模进行选择。对于系统项目(软硬件结合):要采用软件工程的理论进行宏观分析,比如采用瀑布+迭代+风险管控的方式进行规划,而在实际实现阶段则可引入敏捷开发的理念,实现轻量化管理交付;对于纯软件项目则可直接进行规模分解,根据软件规模选择敏捷开发中的开发过程,从而根据实际情况进行差异化开发。【参考文献】1.敏捷软件开发-原则、模式与实现 美 马丁著,人民邮电出版社2008-1-12 樊 学 东 软 件 工程 过程 模 型及 其选择 N 西安 外事 学 院学 报, 2 0 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论