一、敏捷的背景与动机

1.1 软件危机及软件工程的出现

速度是企业竞争致胜的关键因素,软件项目的最大挑战在于,一方面要应付变动中的需求,一方面要在紧缩的时程内完成项目,传统的软件工程难以满足这些要求, 所以软件团队除了在技术上必须日益精进,更需要运用有效的开发流程,以确保团队能够发挥综效。这正是Agile Process (敏捷的软件开发流程)于近年来兴起的主要原因。

1.2 软件项目的复杂

        

横轴代表需求的复杂度

纵轴表示技术的复杂度

还有人力资源的复杂度

解决复杂性问题需要采用经验式方式:解决问题的两种方式:1、预定义过程控制(富士康流水线生产),2、经验性过程控制(摸着石头过河), 如果复杂度超过预定义方式的能力范围,应该采用经验性方式, 经验性方式的三大支柱:可见性、检查及适应

1.3 他山之石

互联网时代的出版模式:

        作者最开始的时候并没有想出一本书,而只是把多年的积累梳理出来写成了博客,凭借博客的成功最后得到了出版商和纸版读者的认可。在写成本书的过程中,作者是渐进式的进行的,每写完一个章节,放到博客上去征求读者的反馈,很多反馈意见在后面的章节或修订中及时地体现出来,这样就形成了与读者之间的良好反馈,在出版之前就锁定了大量的读者。这就是敏捷开发提倡的“增量迭代、及时交付”的思想。 这种模式能最大程度地不偏离客户需求的本质。

精益制造:

       消除浪费、关注流程、建立无间断流程以快速应变 、降低库存 、一次做对、基于顾客需求的拉动生产 、标准化与工作创新 、尊重员工,给员工授权 等

二、敏捷宣言及原则

2.1敏捷的历史

敏捷软件开发又称敏捷开发,从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。

       2001年初,因观察到许多的软件团队身陷不断扩大的流程之中的困境,一群业界专家聚集在一起,勾勒出一些能让软件团队迅速工作,以及响应变化的价值观和原则。他们自称为Agile Alliance。

       之后的七个月里,他们创造具有价值的声明,也就是敏捷软件的开发宣言。

       十五人中包括:大名鼎鼎的Kent Beck(XP,TDD的创始人,Junit的创始人之一)、Ward Cunningham(Wiki概念的发明者)、Martin Fowler(《企业应用架构模式》作者)、Robert C. Martin、Ken Schwaber

2.2敏捷价值观之敏捷宣言

        

敏捷开发的核心思想是:以人为本,适应变化。

敏捷价值观之敏捷宣言-1    个体和交互胜过过程和工具:

人是软件项目获得成功最为重要的因素;合作、沟通能力以及交互能力比单纯的软件编程能力和工具更为重要;方法和工具是死的,人是活的,人要是太“面”或者协作不好,再强大的方法和工具都是白扯;

敏捷价值观之敏捷宣言-2     可以工作的软件胜过面面俱到的文档:

        过多的面面俱到的文档往往比过少的文档更糟;软件开发的主要和中心活动是创建可以工作的软件;直到迫切需要并且意义重大时,才进行文档编制;编制的内部文档应尽量短小并且主题突出

敏捷价值观之敏捷宣言-3      客户合作胜过合同谈判:

        客户不可能做到一次性地将他们的需求完整清晰地表述在合同中;为开发团队和客户的协同工作方式提供指导的合同才是最好的合同;

敏捷价值观之敏捷宣言-4      响应变化胜过循环计划:

        变化是软件开发中存在的现实;计划必须有足够的灵活性与可塑性;短期的迭代的计划比中长期计划更有效

2.3敏捷开发的12个原则

(1)我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

(2)即使到了开发的后期,也欢迎改变需求。

(3)经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好 。

(4)在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

(5)围绕被激励起来的个人来构建项目。

(6)在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。

(7)工作的软件是首要的进度度量标准。

(8)敏捷过程提倡平稳的开发节奏;发起人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

(9)不断地关注优秀的技能和好的设计会增强敏捷能力。

(10)简单化是根本(不做过度设计和预测)。

(11)最好的构架、需求和设计出自于自组织的团队。

(12)每隔一定时间,团队会在如何才能更有效地工作方面进行反思并对自己的行为进行相应调整。

三、敏捷方法是什么?

3.1什么是敏捷方法?

敏捷方法是一类软件开发流程的泛称;敏捷方法是相对于传统的瀑布式软件过程提出的;敏捷方法可以用敏捷宣言(4条)、敏捷原则(12条)来概括;敏捷原则通过一系列的敏捷实践来体现出来;敏捷方法有很多种。

问题1,请举出你知道的2个以上敏捷方法名字来

  

       

敏捷的方法(Agile Mthods):

                Extreme Programming (XP)极限编程

                Scrum 

                Adaptive Software Development (ASD)自适应软件开发

                Crystal Clear and Other Crystal Methodologies水晶方法

                Dynamic Systems Development Method (DSDM)动态系统开发方法

                等

3.2敏捷方法VS瀑布模型

敏捷方法:

      

  

完整地开发,每少数几周或是少数几个月里可以测试功能;强调在获得最简短的可执行功能的部分,能够及早给予企业价值;在整个项目的生命周期里,可以持续的改善、增加未来的功能。

瀑布模型:

​    

固定的、没有弹性的;  很困难去达到互动; 假如说需求没有完全的被了解,或是可能需要完全地改变项目的需求,瀑布式的model是比较不适合的。

3.3敏捷项目管理VS传统项目管理:

敏捷项目管理:

        对整个项目做一个粗略的估计,每一次迭代都有详细的计划;

鼓励变化, 客户价值驱动开发;信任和赋予权力;合约使变更变得简单,增加价值;客户和开发人员之间是紧密的连续的合作关系;每次迭代都产生可交付的软件;专注于交付软件;第一次迭代就可交付能工作的版本,风险发现的早。

传统项目管理:

        事先对整个项目进行估计、计划、分析;反对变更; 变更需要重新估计、重新规划;严密的合同来减少风险, 如果改变需求要走 CR 流程;项目作为一个“黑盒子” ,对客户与供应商的可视性差;文档和计划驱动的方法;软件交付时间晚, 意识到风险的时间晚;WBS,甘特图,关键路径分析。

敏捷 与CMMI双剑合璧:

​    

CMMI更加关注于流程,敏捷更加关注于人;CMMI自顶向下,敏捷自底向上;敏捷并不排斥必要的文档;敏捷的很多实践是对CMMI的一种实现,比如sprint计划会议就是PP的实现,每日例会就是在做PMC;很多CMMI4~5级的公司也在应用敏捷,比如说宝信、华为;项目级的敏捷实践通过CMMI可以在组织级得以重用;

3.4Extreme Programming(极限编程):

​      

XP我们一般称为极限编程,是最轻量级的开发流程。

        最主要的精神是:『在客户有系统需求时,给予及时满意的可执行程序』,所以最适合需求快速变动的项目。

        它强调客户所要的是:workable的执行码,所以把与撰写程序无关的工作降至最低,并要求客户与开发人员最好以side-by-side的方式一起工作。

        XP的实践包括:

    完整团队、计划游戏、客户测试;简单设计、结对编程、测试驱动开发; 改进设计、持续集成、集体代码所有权;编码标准、隐喻、可持续的速度

3.5Scrum开发流程

​   

3.6为什么采用敏捷? –预期的收益

采用敏捷方法得当的话,可以:(1)更加透明; 随时跟踪项目的状态和进展情况,及早发现问题和风险;(2)快速交付, 每次迭代都能交付可运行的软件;(3)最高风险和最高优先级的需求,最优先进行开发;(4)改善应对变更能力, 减少大量的重计划;(5)改善项目沟通;(6)更好的客户参与, 避免错误的假设.

        总之:(1)提高了生产率; 减少“浪费” (不需要的文档,重复工作等) ,项目的每次迭代都有明确的目标;(2)提高客户满意度; 短期内产生成效, 按预期交付软件, 每次迭代结束产生可以运行的软件;(3)改善员工的满意度; 团队精神,减少官僚,能够规划和管理自己的工作,减少“恐慌” ,稳定的工作量(可持续的步伐)

敏捷开发(Scrum)的更多相关文章

  1. 敏捷开发 Scrum 综述

    敏捷开发 Scrum 综述 这一星期学习了敏捷开发,然后阅读了相关的书籍,从网上查找了很多相关的资料,对敏捷开发scrum有了更加深刻了理解,对敏捷开发做了如下总结: 一.什么是敏捷开发? 敏捷开发提 ...

  2. 敏捷开发--scrum

    1.  请简述一下什么是敏捷开发(Agile Development),以及什么是持续集成.  敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开发中,软件项目的构建被切分成多个子项目,各个 ...

  3. 【转】敏捷开发 Scrum 总结

    转:http://www.open-open.com/lib/view/open1330413325514.html 最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据 ...

  4. 敏捷开发-Scrum 真实

    近期研究前 Scrum 数据编译的文件,在接下来的团队和项目开发.项目根据该引入 Scrum 一些练习,提高团队成员和项目之间的交付质量的合作. 参考资料: <轻松Scrum之旅-敏捷开发故事& ...

  5. 敏捷开发— —Scrum 学习笔记

    敏捷开发模式是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷" ...

  6. 敏捷开发(Scrum)与敏捷测试

    1.敏捷测试流程和传统测试流程 软件测试是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性 ...

  7. 敏捷开发 scrum管理

    项目准备阶段 1.产品经理将整体项目拆分成不同的单独模块,每个模块尽量细化到能够自成一体.例如app的登录注册模块,不能仅仅就是登录注册这两个界面,而是要将所有与这有关的需求整合到一块.要达到的效果就 ...

  8. 敏捷开发Scrum

  9. 敏捷开发Scrum学习

    官方:http://baike.baidu.com/link?url=VGFzdJpuHX3g90kIX6l1QABWMmBNyf30sTGuEcJ6OJVMq0Cot1G9Imbu1gls-xpI6 ...

  10. 【科普】Scrum——从橄榄球争球到敏捷开发

    对敏捷开发Scrum稍有了解的都知道Scrum来源于橄榄球,但你知道为何要以这项球类运动的术语来命名这个敏捷开发方法论吗? Scrum与橄榄球对应关系 Scrum 一词源于英式橄榄球运动,是指双方球员 ...

随机推荐

  1. BMP图片内部结构

    BMP图片内部结构 ​ BMP文件的数据按照从文件头开始的先后顺序分为四个部分:分别是位图文件头.位图信息头.调色板(24bit位图是没有的).位图数据(RGB). (1)位图文件头(Bitmap-F ...

  2. istio sidecar 工作方式

    istio 是什么 Istio 是一个开放源代码的服务网格,它为基于微服务的应用程序提供了一种统一的方式来连接.保护.监控和管理服务.Istio 主要解决的是在微服务架构中的服务间通信的复杂性问题,它 ...

  3. 开源项目分享:ChatGPT 控制台聊天应用

    开源项目分享:ChatGPT 控制台聊天应用 分享一个我最近完成的一个小应用,一个ChatGPT 的控制台聊天应用,大家都在搞AI,我也来玩一玩,顺便分享到社区,有兴趣的小伙伴可以去我的github主 ...

  4. NumPy 正态分布与 Seaborn 可视化指南

    正态分布(高斯分布) 简介 正态分布(也称为高斯分布)是一种非常重要的概率分布,它描述了许多自然和人为现象的数据分布情况.正态分布的形状呈钟形,其峰值位于平均值处,两侧对称下降. 特征 正态分布可以用 ...

  5. GeminiDB PITR,让游戏回档“进退自如”!

    本文分享自华为云社区<GeminiDB PITR,让游戏回档"进退自如"!>,作者:GaussDB 数据库. 在实际业务场景中,客户数据库难免会出现数据损毁.数据丢失. ...

  6. C# winfrom 局域网版多人成语接龙(二)

    功能基本上是完成了,要两个人完才好玩,目前 倒计时,每组游戏玩家数量这些控制变量,都是写死再代码里的,等以后想改的时候再改,这个项目核心的功能算是实现了,但还可以扩展,比如记录一下用户的游戏数据,答对 ...

  7. 流式响应Web小工具实践

    作为一位拥有多年经验的老程序员,我对于提升Web应用性能和用户体验有些兴趣.今天,我要和大家聊聊一个非常实用的技术--流式响应(Streaming Response). 首先,流式响应到底是什么呢?简 ...

  8. WPF加载GIF的五种方式(Storyboard / WpfAnimatedGif / ImageAnimator / PictureBox / MediaElement)

    部分内容参考博文WPF 如何显示gif 一.使用Storyboard 效果: (1)页面xaml: <Window x:Class="PlayGifDemo.StoryboardWin ...

  9. Rainbond 携手 TOPIAM 打造企业级云原生身份管控新体验

    TOPIAM 企业数字身份管控平台, 是一个开源的IDaas/IAM平台.用于管理账号.权限.身份认证.应用访问,帮助整合部署在本地或云端的内部办公系统.业务系统及三方 SaaS 系统的所有身份,实现 ...

  10. c++从零实现reactor高并发服务器!!!

    环境准备 linux虚拟机 安装升级c/c++编译器 gcc/g++ 选项 源代码文件1 源代码文件2 ... 源代码文件n -o指定输出的文件名(不能和源文件同名 默认是a.out) -g调试 -O ...