1,敏捷过程

为了使软件开发团队具有高效工作和快速响应变化的能力,17位著名的软件专家于2001年2月联合起草了敏捷软件开发宣言。

敏捷软件开发宣言由下述4个简单的价值观声明组成。

(1)个体和交互胜过过程和工具

优秀的团队成员是软件开发项目获得成功的最重要因素;当然,不好的过程和工具也会使最优秀的团队成员无法发挥作用。

团队成员的合作、沟通以及交互能力要比单纯的软件编程能力更重要。

正确的做法是,首先致力于构建软件开发团队(包括成员和交互方式等),然后再根据需要为团队配置项目环境(包括过程和工具)。

(2)可以工作的软件胜过面面俱到的文档

软件开发的主要目标是向用户提供可以工作的软件而不是文档;但是,完全没有文档的软件也是种灾难。开发人员应该把主要精 力放在创建可工作的软件上面,仅当迫切需要并且具有重大意义时,才进行文档编制工作,而且所编制的内部文档应该尽量简明扼要、主题突出。

(3)客户合作胜过合同谈判

客户通常不可能做到一次性地把他们的需求完整准确地表述在合同中。能够满足客户不断变化的需求的切实可行的途径是,开发团队与客户密切协作,因此,能指导开发团队与客户协同工作的合同才是最好的合同。

(4)响应变化胜过遵循计划

软件开发过程中总会有变化,这是客观存在的现实。一个软件过程必须反映现实,因此,软件过程应该有足够的能力及时响应变化。然而没有计划的项目也会因陷入混乱而失败,关键是计划必须有足够的灵活性和可塑性,在形势发生变化时能迅速调整,以适应业务和技术等方面发生的变化。

在理解上述4个价值观时应该注意,这些声明只不过是对不同因素在保证软件开发成功方面所起作用的大小做了比较,说一个元素更重要并不是说其他因素不重要,更不是说某个因素可以被其他因素代替。

根据上述价值观提出的软件过程统称为敏捷过程,其中最重要的是极限编程

2,极限编程

极限编程(eXtreme Programming,XP)是敏捷过程中最富盛名的一个,其名称中“极限”二字的含义是指把好的开发实践运用到极致。目前.极限编程已经成为种典型的开发方法,广泛应用于需求模糊且经常改变的场合。

(1)极限编程的有效实践

下面简述极限编程方法采用的有效的开发实践。

客户作为开发团队的成员

必须至少有一名客户代表在项目的整个开发周期中与开发人员在- -起紧密地配合工作,客户代表负责确定需求、回答开发人员的问题并且设计功能验收测试方案。

使用用户素材

所谓用户素材就是正在进行的关于需求的谈话内容的助记符。根据用户素材可以合理地安排实现该项需求的时间。

短交付周期

每两周完成一次的迭代过程实现了用户的一些需求,交付出目标系统的-个可工作的版本。通过向有关的用户演示迭代生成的系统,获得他们的反馈意见。

验收测试

通过执行由客户指定的验收测试来捕获用户素材的细节。

结对编程

结对编程就是由两名开发人员在同一台计算机上共同编写解决同-个问题的程序代码,通常一个人编码,另一个人对代码进行审查与测试,以保证代码的正确性与可读性。结对编程是加强开发人员相互沟通与评审的一种方式。

测试驱动开发

极限编程强调“测试先行”。在编码之前应该首先设计好测试方案,然后再编程,直至有测试都获得通过之后才 可以结束工作。

集体所有

极限编程强调程序代码属于各个开发小组集体所有,小组每个成员都有更改代码的权利,每个成员都对全部代码的质量负责。

持续集成

极用编程主张在一天之内多次集成系统,而且随着需求的变更 .应该不断地进行回归测试

可持续的开发速度

开发人员以能够长期维持的速度努力工作,XP规定开发人员每周工作时间不超过40小时 、连续加班不可以超过两周,以免降低生产率。

开放的工作空间

XP项目的全体参与者(开发人员、客户等)一起在个开放的场所中工作。项目组成员在这个场所中自由地交流和讨论。

及时调整计划

计划应该是灵活的、循序渐进的。制定出项目计划之后.必须根据项目进展情况及时进行调整,没有一成不变的计划。

简单的设计

开发人员应该使设计与计划要在本次迭代过程中完成的用户索材完全匹配,设计时不需要考虑未来的用户素材。在一次次的迭代过程中,项目组成员不断变更系统设计,使之相对于正在实现的用户素材而言始终处于最优状态。

重构

所谓代码重构就是在不改变系统行为的前提下,重新调整和优化系统的内部结构,以降低复杂性、消除冗余、增加灵活性和提高性能。应该注意的是.在开发过程中不要过分依赖重构。特别是不能轻视设计,对于大中型系统而言,如果推迟设计或者干脆不做设计,将造成一场灾难。

使用隐喻

可以将隐喻看作把整个系统联系在一起的全局视图,它描述系统如何运作,以及用何种方式把新功能加人到系统中。

(2)极限编程的整体开发过程

上图描述了极限编程的整体开发过程。首先,项目组针对客户代表提出的“用户故事"(用户故事类似于用例,但比用例更简单,通常仅描述功能需求)进行讨论,提出隐喻,在此项话动中可能需要对体系结构进行“试探"(所谓试探就是提出相关技术难点的试探性解决方案)。然后,项目组在隐喻和用户故事的基础上,根据客户设定的优先级制订交付计划(为了制订出切实可行的交付计划,可能需要对某些技术难点进行试探)。接下来开始多个选代过程(通常每个迭代历时1~3周),在迭代期内产生的新用户故事不在本次迭代内解决,以保证本次开发过程不受干扰。开发出的新版本软件通过验收测试之后交付用户使用。

(3)极限编程的迭代过程

上图描述了极限编程的迭代开发过程。项目组根据交付计划和“项目速率”(即实际开发时间和估计时间的比值),选择需要优先完成的用户故事或待消除的差错,将其分解成可在1~2天内完成的任务,制订出本次迭代计划。然后通过每天举行一次的“站立会议”(与会人员站着开会以缩短会议时间,提高工作效率),解决遇到的问题,调整迭代计划,会后进行代码共享式的开发工作。所开发出的新功能必须100%通过单元测试,并且立即进行集成,得到的新的可运行版本由客户代表进行验收测试。开发人员与客户代表交流此次代码共享式编程的情况,讨论所发现的问题,提出新的用户故事,算出新的项目速率,并把相关的信息提交给站立会议。

综上所述,以极限编程为杰出代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特性,而且在快速的同时仍然能够保持可持续的开发速度。上述这些特点使得敏捷过程能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。

软件工程(敏捷过程和极限编程)相关推荐

  1. 敏捷过程、极限编程和SCRUM的关系

    极限编程是最知名的敏捷开发过程,SCRUM是最经典的极限编程. 层次关系从大到小是:敏捷过程>极限编程>SCRUM

  2. 【软件工程】瀑布模型 原型模型 增量模型 螺旋模型 喷泉模型 RUP过程模型 敏捷过程

    Content 瀑布模型(生命周期模型) 原型模型 增量模型 综合瀑布模型与原型模型 螺旋模型 喷泉模型 RUP过程模型 敏捷过程 详细内容 参考链接 1.瀑布模型.快速原型模型.增量模型.螺旋模型 ...

  3. 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)

    文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...

  4. 什么是RUP,XP,敏捷过程

    RUP RUP(Rational Unified Process),统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论. 瑞理统一过程(RUP)是Rational软件公司(Rat ...

  5. XP框架开启debug模式_敏捷方法之极限编程(XP)和 Scrum

    敏捷软件开发(Agile software development),又叫敏捷开发,是一种应对开发过程中需求快速频繁变更的软件开发能力.敏捷开发强调开发团队与业务专家之间的紧密协作.面对面的沟通.频繁 ...

  6. 软件工程敏捷开发01

    1. 软件工程敏捷开发,每日站立会议:进行了组内成员的任务分派,把今天的任务做了具体的任务分配,把已知的问题提交到个人索引卡 2. 将分配好的任务做完,总结遇到的问题,并结合今后的问题进行讨论和组内成 ...

  7. Keil(MDK-ARM-STM32)系列教程(一)_新建软件工程详细过程

    Ⅰ.写在前面 本文使用目前(2016年11月)最新版本Keil(MDK-ARM)V5.21a开发环境.以STM32的处理器为例给大家讲述新建一个软件工程的详细过程. Keil(MDK-ARM)V4和V ...

  8. 敏捷过程(小规模团队敏捷开发)

    敏捷过程(小规模团队敏捷开发) 一.敏捷过程 1.1 敏捷开发的价值观 1.2 敏捷开发应遵循的12条原则 二.敏捷开发的原则 2.1 敏捷团队运作机制 2.2 关键的团队角色 2.3 产品负责人(P ...

  9. 敏捷软件开发——敏捷方法、极限编程、Scrum

    快速的软件开发过程就是为迅速制造可用软件而设计的.软件的开发和部署不是一次完成的,而是以一系列增量的形式完成的,每一个增量包括新的系统功能.尽管有很多快速软件开发的方法,它们都有一些基本的特性: 描述 ...

  10. 软件工程 敏捷的酒后问答

    王屋村移山公司的程序员果冻最近请假参加了一系列敏捷的培训, 有好事者传言他和 "a-girl"勾搭上了, 其他年轻同事有点坐不住了, 也表示要参加此类活动. 几天后, 果冻回到公司 ...

最新文章

  1. DedeCms织梦发布文章时输入Tag标签逗号自动变成英文标点的方法
  2. 洛谷——P1181 数列分段Section I
  3. WIN7情况下VMWARE虚构机中Microsoft Windows XP Professional 2002 Service Pack2与win7共享文件的编制:
  4. Fragment 键盘弹出方式设置
  5. C 常用新特性(上)
  6. python3输入输出_Python3 输入和输出
  7. 蓝牙适配器 能同时接多少个设备_便携音箱也能有立体环绕声,JVC智能蓝牙颈挂音箱体验...
  8. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype
  9. windows 下搭建 git 服务器 gogs
  10. Python 各种画图
  11. centos下载和安装mongodb
  12. 拨号不能建立远程计算机的连接,彻底解决Win8、Win10系统宽带拨号出现“错误720:不能建立到远程计算机的连接”的问题...
  13. 移动通信网络规划:D2D通信技术
  14. 自定义Java注解处理器
  15. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭
  16. 服! 买不起2.6亿一只的加密猫, 他用10分钟生了一窝!
  17. 基于gradle构建spring cloud项目
  18. linux 下 QT 讯飞语音合成
  19. 库乐队历史版本怎么下载_库乐队下载_库乐队安卓版下载_库乐队下载安装-太平洋下载中心...
  20. 非常方便的将 SVG 图标生成 TTF/EOT/WOFF/WOFF2/SVG 字体

热门文章

  1. 初学C语言,可能需要的软件及下载方式
  2. 关于F头、射频线、水晶头、网线
  3. pcduino_arm_rtl8187L 驱动安装编译过程
  4. 谷歌中国发布三国赤壁地图
  5. C语言arduino密码锁实验报告,Arduino密码锁设计
  6. java哪些地方用到了工厂模式_【java】实际开发中哪些场景需要用到工厂模式?...
  7. 基于多租户的云计算Overlay网络
  8. IDA Pro、OllyDbg、LordPE和UltraEdit简单实用实验
  9. 解决无线路由器无法进行账号认证上网的问题
  10. 软件商业模式的发展与2.0时代