2012-06-25 18:21:54 iteye_14109 阅读数 319
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10435 人正在学习 去看看 CSDN讲师

     软件开发方法一直处在不断发展过程中。在诸多方法中,敏捷开发以其能持续满足不断变化的用户需求正在受到越来越多人的重视,从中小项目开始进入大型开发项目,近几年来上升势头明显。那么,敏捷开发有什么好处呢?

 

    在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。在欧美软件企业中,有近半数企业已采用敏捷方法进行开发,而近几年受软件外包和外企的带动,敏捷开发在中国也出现了日渐普及的态势,如腾讯内部几乎所有的开发团队都在实施敏捷方法。敏捷开发的流行绝非偶然,其最大的推动力是采用这种方法所能带来的受益。相关统计表明,敏捷开发可以将效率提高3~10倍,软件的质量也有更加可靠的保证; 同时,还给团队内的每个成员提供了良好的发展机会,技术和合作水平都能得到相应提高。当然,敏捷的成功前提是其方法本身的适用性和团队对它的深入理解和合理运用。
 
    敏捷开发由几种轻量级的软件开发方法组成,包括极限编程、Scrum、精益开发(Lean Development)、动态系统开发方法、特征驱动开发(Feature Driver Development)、水晶开发(Cristal Clear)等等。所有这些方法都具有以下共同特征,它们也是敏捷开发的原则:

    1. 迭代式开发。即整个开发过程被分为几个迭代周期,每个迭代周期持续的时间一般较短,通常为1到6周。

    2. 增量交付。产品是在每个迭代周期结束时被逐步交付使用,每次交付的都是可以被部署、能给用户带来即时效益和价值的产品。

    3. 开发团队和用户反馈推动产品开发。敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。

    4. 持续集成。新的功能或需求变化总是尽可能频繁地被整合到产品中。有些是在每个迭代周期结束的时候集成, 有些则每天都在这么做。

    5. 开发团队自我管理。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给人。
 
    敏捷开发的优势:

    满足用户不断变化的需求是软件开发的长期无法解决的难题之一,经典的瀑布模式在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。敏捷方法满足需求的办法主要通过迭代。在每一次迭代周期结束时,都能交付用户一个可用的、可部署的系统,用户使用并体验该系统并反馈意见,在随后的迭代周期这些意见和需求的其他变化一起在产品中实现和集成。每次迭代周期应尽可能短,以便能及时地处理需求变化和用户反馈。
 
    敏捷开发方式能给企业和用户带来以下好处:

    1. 精确。瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想去的地方。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。

    2. 质量。敏捷方法对每一次迭代周期的质量都有严格要求。一些敏捷方法如极限编程等,甚至使用测试驱动开发(test-driven development),即在正式开发功能代码之前先开发该功能的测试代码。这些都为敏捷项目的整个开发周期提供了可靠的质量保证。

    3. 速度。敏捷团队只专注于开发项目中当前最需要的、最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。

    4. 丰厚的投资回报率。在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。

    5. 高效的自我管理团队。敏捷开发要求团队成员必须积极主动,自我管理。在这样的团队中工作,每个团队成员的技术能力、交流、社交、表达和领导能力也都能得以提高。
 
    主要的敏捷方法:

    敏捷开发方法是一组开发方法的统称,主要包括以下几种:

    极限编程其主要目的是降低需求变化的成本。它引入一系列优秀的软件开发方法,并将它们发挥到极致,结对编程(pair-programming)就是其中比较知名的方法之一。除此之外, 其核心做法还有小规模、频繁的版本发布、短迭代周期、测试驱动开发、持续集成、每日站立会议、共同拥有代码、系统隐喻等。

    Scrum Scrum是一个敏捷开发框架,它由一个开发过程、几种角色以及一套规范的实施方法组成。在Scrum中,产品需求被定义为产品需求积压(product backlogs)。所有的产品需求积压都是从一个简单的想法开始,并逐步被细化,直到可以被开发的程度。Scrum将开发过程分为多个Sprint周期,每个Sprint代表一个2~4周的开发周期,有固定的时间长度。

    精益开发精益开发的核心思想是查明和消除浪费。在软件开发过程中bug、没用的功能、等待以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被分析查明,然后设法消除。精益开发的其他原则包括强调学习、在最后时刻做决定、用最快的速度交付用户等。

    其他敏捷方法还包括动态系统开发方法(DSDM)、特征驱动开发(FDD)、Crystal Clear等,各种敏捷方法的区别在于它们对敏捷的不同阐释和不同侧重。理解这些方法可以帮助我们从多个角度理解敏捷开发,并且了解更多的最佳应用。
 
 
如何选择一种敏捷方法:

    选择一种合适的软件开发方法取决于多种因素。在做出决定之前,我们需要充分考虑以下这些方面:

    1. 方法的复杂度。确保你的团队或组织能够应付这种复杂度。

    2. 社区和业界支持。有较多的社区及行业支持可以使你受益匪浅。

    3. 实用工具。一个良好的软件工具可以帮助团队有效地处理日常工作,促进团队协作,并减少管理成本。

    4. 对敏捷方法的认识程度。选择一些与你当前开发方式比较接近的敏捷方法将有助于推动该方法的实施。

    5. 你的团队规模。较小规模的团队最好从简单的方式入手。

    6. 你不需要只遵从一种方法。你可以为团队选择一个主要的方法(如Scrum),然后借鉴其他方法。

 

2013-03-07 20:18:12 viscent_huang 阅读数 878
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10435 人正在学习 去看看 CSDN讲师
   很多刚刚转向管理岗位的人员,对于项目进度如何把控,往往不知所从。关于进度,比较容易让人想到的是询问、以及要求写日报、周报之类的。这些措施首先是不完全的。因为进度管理不仅仅是获取进度信息、更重要的是还要核实进度信息。就好比说这一样个任务,你让某人去下载一个软件的安装程序。
你要的是Linux版的。等他下载完了Windows版的,指不定他就告诉你这件任务完成了。
   其次,这些措施效率太低,试想一下,一个30人的团队,如果每个人进度你都去询问一般,那结果是什么呢?况且,别人可能还嫌你烦。另外一方面,一旦发现进度有所滞后,比如较计划滞后,或者某件任务可以花更少的时间时,还要采取一些矫正措施。就是说,还要一定的控制措施。比如,有一个测试人员准备测试一个Linux定时任务脚本。
我让他通报下进度,他说还在等待。那么,他在等什么呢?因为他把他准备测试的定时任务设置为每2小时运行一次。我对他说,把那个定时任务设置为每5分钟运行一次从测试的角度来看是否也是一样的效果呢(这个脚本所需的执行时间通常只需要几秒钟)。事实上,我事先就料到他会那么做,所以特意及时要求其通报下进度。


另外,在安排项目计划的时候,就要把进度管理考虑进来。在项目执行过程中,还需要时刻关注进度风险。


IBM developerWorks上面有篇有关如何把控进度的文章,以作者的实际的项目管理经验写的。感兴趣的可以参考:


《敏捷项目管理实战之进度管理》:
http://www.ibm.com/developerworks/cn/rational/r-cn-agileprojectprogressmanagement
2018-07-15 10:25:21 wer0735 阅读数 522
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10435 人正在学习 去看看 CSDN讲师

转载:https://yq.aliyun.com/articles/130605

敏捷开发(Agile Development) 随着“敏捷”一词出现在越来越多的项目中,于是,敏捷开发本身也被赋与了越来越多的意义,而敏捷的真正内涵反而变得越来越模糊。如何迈出敏捷开发第一步?是按照敏捷宝典、操作指南或是教父语录,还是因地制宜、因项目定方法?完成所有这些工作后,我们就真的“敏捷”了吗?

  一、前言

  Agile是指企业能够对外部环境做出速捷、有效的反应,是未来企业的必备素质。21世纪企业面临的竞争环境将是一个不断变化、不可预测的环境。由于高新技术的出现和更迭越来越快,产品的生命周期日益缩短,企业要面对这样的新的竞争环境,抓住市场机遇,迅速开发出用户所需要的产品,就必须实现敏捷反应。

  狭义地讲,敏捷企业就是将柔性的先进制造技术、熟练掌握生产技能、有知识的劳动力以及促进企业内部和企业之间的灵活管理三者集成在一起,对千变万化的市场机会做出快速、有效的响应。敏捷企业强调人、组织和技术的有机结合。通过这三者的紧密结合,敏捷企业可以发挥最佳的整体效益。评价一个企业敏捷性的具体指标是时间、成本、稳健性(Robustness)和适应范围。对敏捷企业的广义理解,可以认为敏捷企业是一个CIMS(计算机集成制造系统)、动态联盟、并行工程、仿真制造、高素质员工等多方面的系统集成,是一个基于CIMS、在CMS基础上发展起来的一个更高层次的集成大系统。

  二、变味的敏捷

  敏捷是大家在一起高效率地工作,清除所有沟通上的障碍,关注于增值的活动,从而使得开发更加成功。敏捷是大家肩并肩地工作,而不是什么都通过文档。敏捷是管理者积极地参加到项目管理中而不是整天去写状况报告,用那个来监督到底发生了什么事情。敏捷是开发人员和涉众(项目开发中涉及的从需求到最后交付的各种人员)在一起制定实际的计划,而不是用复杂的微软Project去制定一些几乎没人看的进度表。

  公平地说,很难设想敏捷术能如何发挥作用,尤其是在一些软件开发本身都问题重重的传统组织中,被误导过的敏捷更是难以帮上什么忙。

  敏捷开发,看到过这个词时,很多人一直没有什么深刻的体会,也没有仔细去研究到底什么才是敏捷开发。而一直在很多人的思想里,敏捷开发的印象就是,开发速度比较快。没错,做互联网的,快确实是一个制胜的法宝,那么敏捷开发似乎也就是在互联网应用的开发中最适合的方法了。那么敏捷开发中的参与者应该是什么状态?这似乎成了一直以来困扰很多管理者的严重问题。可以说,在敏捷开发中,并没有觉得有多敏捷,进度一拖再拖,问题一个接着一个,让我觉得我们是在进行慌乱开发。为什么会这样?

  另外,关于实施敏捷的效果也是充满置疑之声。我们经常看到一些号称Agile的国内项目,按照菜谱、操作指南和教父语录的提示,采用了许多花哨的技巧和实践(做法),是啊,表面上确实Agile了,那么结果呢?项目还是不能按时完成,甚至严重超支和超时,这能叫“敏捷”吗?

  三、敏捷十戒

  1、天报制度

  就算是进行远程开发或是两地使用开发,项目组的成员每天至少碰一次,不管是当面的,还是通过其它方式,如通过电话、email、Skype或其它。进行敏捷开发的时间,任何团队都不能以任何理由进行孤立的开发。

  2、例会制度

  即使每天通过Email给主管汇报工作,但有时主管还是无法及时准确的掌握项目组成员的状况及工作量。此时,通过每周一小时左右的例会将会有效的解决此问题。通过例会,大家面对面的就某些问题进行共同的探讨与讨论,找到共同的解决方案。

  3、版本控制

  如果没有一台干净的电脑来进行团队代码管理的话,则很有可能导致代码的混乱。而每天只须花很少的时间,哪怕一天一次,进行及时的数据提交与代码提交,则可以有效的保证团队之前代码的同步及代码的备份。

  4、需求失灵

  即使手里拿着30页且客户进行了签字的需求说明,有可能仍然不知所措。相对起那些良好的设计、精确的分析等,与客户持续的沟通、及时的反馈、不断的演示这些工作显得更加的有效果。可以有效的获得需求变化,减少误解,更加准确的把握用户的需求。

5、单元测试是QA的工作

  很多开发人员,甚至一些高级的软件开发人员,对于单元测试没有足够的认识,在行动上也没有足够的注意。大家都一致的认为那是QA的事情。就开发人员来讲,单元测试应该是一种白箱测试,能从功能上充分的测试软件的功能性。而对QA来说,只能是一种黑箱测试,无法深入的去分析代码的优势,只是从用户的角度进行功能上的测试而已。

  6、质量保证是QA的责任

  自从有了质量管理这个词以及后来产生的质量管理部门后,很多开发人员就理所当然的认为质量保证是QA的责任了。其实每一个人都需要对软件的质量负责,特别是开发人员。Bug越最早发现,那么解决它的成本就越低。

  7、项目进度风险控制

  也许一个项目需要18个月左右才能完成,但在没完成之前,谁也无法进行比较准确的时间估计。无法确定需要多长的时间进行设计、编码及软件组件的组合。但进行项目设计、实现及融合的人应该相对比较准确的掌握与估计项目的时间。因此,需要进行项目进度的风险控制,风险总是存在的,但要进行有力与及时的控制。充分意识到项目中可能会存在的风险因素,在制定计划时预留一定的时间,如果在项目进行中出现了没有想到的问题,根据其重要性,考虑压后解决,要在计划的时间内把计划的事情完成好,并为后续解决问题争取更多的时间。

  8、架构师身体力行

  很多软件架构师基本上不写代码,这也许是好事。软件架构师嘛,当然是比较高级的,他们对环境、语言、类库方面都可能比软件开发人员要更加在行,但他们一般不编码。这样的架构师是危险的,特别是那些基本上不与首席开发人员进行沟通或咨询的架构师,离项目失败可能已经不远了。

  9、牵一发而动全身

  很多时间,在功能上做了一个很小的变动,往往导致花费好几天的功夫来进行软件的集成与整合。如果没有持续的整合、及时的回归测试、可靠的整体设计,一些看起来非常微小的修改都有可能导致很大的麻烦。

  10、加大管理执行力

  目前项目中,开发者或者说参与人的状态是混乱的,或者说是慌乱的。那问题在哪里呢?是工作流程出了问题?不应该啊!在项目启动前已经定了一个看似美好的流程,而且是经过参与人讨论一致通过的。那么问题在哪里呢?原来是沟通、传达出了问题,执行力不够。那么,就必须加大执行力,今日事今日毕,这是必须的。

  另外,在一些产品级的软件开发中,觉得要实施敏捷式开发,我觉得也有一个不好解决的问题:没有具体的客户!没有具体的客户,那你的沟通去哪里寻找呢?一般的做法也是给一些有兴趣的用户发布Alpha版本,或者是beta版本的软件。可是当软件都到了Alpha/beta版本的时候,软件还有迭代的余地吗?未必!从我个人理解的角度来看,敏捷开发的适用范围还是很有局限性的。个人认为最适合使用敏捷开发的软件必须要有非常明确的客户才能进行,而有明确客户的情况以定制型软件为主。所以,我觉得最适合用敏捷方式开发的软件应该是——定制软件!

  四、小结

  记得Jim Highsmith在他的《敏捷项目管理》一书中这样写道:敏捷是指在动荡的业务环境中,适应变化并创造变化,从而获得价值的一种能力。同时敏捷是平衡灵活性和稳定性的一种能力。由此可见,望文生义地把“敏捷”理解为“做得快”也颇可商榷。如果缺乏有效的实施指导、忽视严格的敏捷实践,单凭着高层面的理解甚至“文化”就开始盲目前行,往往会因为缺乏对质量的有力保障而失去平衡,最终欲速则不达。


2018-02-05 11:33:03 qq_37551899 阅读数 105
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10435 人正在学习 去看看 CSDN讲师

瀑布式开发和敏捷开发是两个最具代表性的开发模式;

瀑布式开发:


特点:

1.强调文档,前一个阶段的输出是下一个阶段的输入,文档是各阶段衔接的唯一信息;

2.没有迭代与反馈,瀑布式模型对反馈没有涉及,所以对变化的客户需求非常不适应;

3.可以很方便的把握开发的进度;

敏捷开发:

以人为核心,迭代,循序渐进的开发方法,在敏捷开发中软件项目被划分为多个子项目,每个子项目都经过测试,具备集成和运行的特征;

敏捷开发宣言:

1.个体和交互胜过过程和工具;

2.软件胜过文档;

3.客户协作胜过合同谈判;

4.响应变化胜过遵循计划;



2019-05-21 18:56:52 StringBuff 阅读数 234
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10435 人正在学习 去看看 CSDN讲师

一、敏捷开发

“敏捷”是一种思想,与”瀑布“式(即传统开发模式)相比,敏捷开发有如下宣言

  • 个体和互动高于流程和工具:意思是敏捷开发中每个人都可以提出自己的见解,而不必按照”流程“逐个向上级反应。目的是为了降低”沟通的成本
  • 工作的软件高于详尽的文档:指你正在开发的软件,即使没有文档,你也可以开发(传统式开发中文档是高于开发的,没有”需求文档”,是不可以随便进行开发的)。不能停滞不前。
  • 客户合作高于合同谈判:指和客户之间的即使沟通,对于客户临时提出的要求来说,即使和合同文件上描述的不一致,我们也是要按照客户的要求做下去的

  • 响应变化高于遵循计划:在”敏捷“中,变化是无处不在的。所以我们不能按部就班,要积极的响应变化,最终实现“可交付的增量”这一目标。

敏捷十二原则

  1. 工作的软件是首要进度度量标准

  2. 敏捷过程提倡持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度

  3. 不断地关注优秀的技能和好的设计会增强敏捷能力

  4. 简单----尽最大可能减少不必要的工作----是根本的

  5. 最好的构架、需求和设计出自与自组织的团队

  6. 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整

二、Scrum

定义:Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程 Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。

Scrum三个角色

  • 产品负责人(Product Owner

  • Scrum Master

  • 开发团队

Scrum三个工件

  • 产品BacklogProduct Backlog):迭代计划

  • SprintBacklog

  • 产品增量(Increment

Scrum的5个活动

  • 产品Backlog梳理会议( Product Backlog Refinement
  • Sprint计划会议(Sprint Planning Meeting
  • 每日站会(Daily Scrum Meeting
  • Sprint评审会议(Sprint Review Meeting
  • Sprint回顾会议(Sprint Retrospective Meeting

Scrum5个价值

  • 承诺 愿意对目标做出承诺
  • 专注把你的心思和能力都用到你承诺的工作上去
  • 开放– Scrum 把项目中的一切开放给每个人看
  • 尊重每个人都有他独特的背景和经验
  • 勇气有勇气做出承诺,履行承诺,接受别人的尊重

 

敏捷开发总结

阅读数 461

浅析敏捷开发

阅读数 140

没有更多推荐了,返回首页