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

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

    10428 人正在学习 去看看 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-11-01 08:49:47 jk050802 阅读数 1098
  • SCRUM敏捷开发视频教程

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

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

从接触敏捷开发的时候,就被敏捷开发的理念吸引了。下面是我学习敏捷开发的一些书籍

《敏捷软件开发》

《高效程序员的45个习惯——敏捷开发修炼之道》






2019-08-12 20:39:23 yjn1995 阅读数 766
  • SCRUM敏捷开发视频教程

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

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

前言

  

迭代开发

  敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。那么什么是"迭代开发"呢?迭代的英文是 iterative,直译为"重复",迭代开发其实就是"重复开发"。
  对于大型软件项目,传统的开发方式是采用一个大周期(比如半年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。
  举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭 Falcon 1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果 SpaceX 不采用迭代开发,它可能直到现在还无法上天。
  迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。

增量开发

  迭代开发只是要求将开发分成多个迭代,并没有回答一个重要的问题:怎么划分迭代,哪个任务在这个迭代,哪个任务在下个迭代?这时,一般采用"增量开发"(incremental development)划分迭代。
  所谓的"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
  举例来说,房地产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司第一个迭代就是交付一号楼,第二个迭代交付二号楼…每个迭代都是完成一栋完整的楼。而不是第一个迭代挖好10栋楼的地基,第二个迭代建好每栋楼的骨架,第三个迭代架设屋顶…
增量开发加上迭代开发,才算是真正的敏捷开发。

敏捷开发的好处

早期交付

  敏捷开发的第一个好处,就是早期交付,从而大大降低成本。
  还是房地产公司为例,如果按照传统的"瀑布开发模式",先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。也就是说,如果不考虑预售,该项目必须等到两年后才能回款。
  敏捷开发是六个月后交付一号楼,后面每两个月交付一栋楼。因此,半年就能回款10%,后面每个月都会有现金流,资金压力就大大减轻了。

降低风险

  敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。
  请想一想,哪一种情况损失比较小:10栋楼都造好以后,才发现卖不出去,还是造好第一栋楼,就发现卖不出去,从而改进或停建后面9栋楼?
  对于软件项目来说,先有一个原型产品,了解市场的接受程度,往往是项目成功的关键。有一本书叫做《梦断代码》,副标题就是"20+个程序员,三年时间,4732个bug,100+万美元,最后失败的故事",这就是没有采用敏捷开发的结果。相反的,Instagram 最初是一个地理位置打卡 App,后来发现用户不怎么在乎地理位置,更喜欢上传照片,就改做照片上传软件,结果成了独角兽。
  由于敏捷开发可以不断试错,找出对业务最重要的功能,然后通过迭代,调整软件方向。相比传统方式,大大增加了产品成功的可能性。如果市场需求不确定,或者你对该领域不熟悉,那么敏捷开发几乎是唯一可行的应对方式。

如何进行每一次迭代

  虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。

 &emssp;具体来说,每次迭代都必须依次完成以下五个步骤。

  • 需求分析(requirements analysis)
  • 设计(design)
  • 编码(coding)
  • 测试(testing)
  • 部署和评估(deployment / evaluation)
    每个迭代大约持续2~6周。

敏捷开发的价值观

《敏捷软件开发宣言》里面提到四个价值观。

  • 程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具。
  • 软件能够运行,优于详尽的文档。
  • 跟客户的密切协作,优于合同和谈判。
  • 能够响应变化,优于遵循计划。

十二条原则

该宣言还提出十二条敏捷开发的原则。

  • 通过早期和持续交付有价值的软件,实现客户满意度。
  • 欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。
  • 不断交付可用的软件,周期通常是几周,越短越好。
  • 项目过程中,业务人员与开发人员必须在一起工作。
  • 项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。
  • 面对面交谈是最好的沟通方式。
  • 可用性是衡量进度的主要指标。
  • 提倡可持续的开发,保持稳定的进展速度。
  • 不断关注技术是否优秀,设计是否良好。
  • 简单性至关重要,尽最大可能减少不必要的工作。
  • 最好的架构、要求和设计,来自团队内部自发的认识。
  • 团队要定期反思如何更有效,并相应地进行调整。
2016-08-29 15:22:41 myhead756 阅读数 5442
  • SCRUM敏捷开发视频教程

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

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

最适合App的开发模式——敏捷开发

 

传统的软件开发模式需要经历问题评估、计划解决方案、设计系统架构、开发代码、测试、部署和使用系统、维护解决方案等过程,如下图




采用传统软件开发模式的最大问题是开发周期过长,迭代速度慢。移动互联网行业发展速度快,需求不断变化,产品更新迭代的频率高,基于移动互联网的以上特点,就引入了Scrum这个敏捷开发框架。

 

Scrum简介:Scrum是一个敏捷开发框架,是一个增量的,迭代的开发过程。在这个框架中,整个开发周期包括若干个小的迭代周期,每个小的迭代周期成为一个Sprint,每个Sprint的周期建议为2~4周。在Scrum中,使用产品Backlog来管理产品或项目的需求,产品Backlog是一个按照商业价值排序的需求列表。在每个迭代过程中开发团队从产品Backlog挑选最有价值的需求进行开发。Sprint中挑选的需求经过Sprint会议上的分析、讨论和估算得到一个Sprint的任务列表,称为Sprint Backlog

 

Scrum的流程如下图↓

 

Sprint 计划会议

Sprint计划会议前,产品经理所要实现的产品需求(产品Backlog)以用户故事(即从用户的角度去描述用户所需的功能)的形式确定下来,并画出原型图,UI根据原型图完成设计稿。产品经理同时确定各个产品需求的优先级。

Sprint计划会议期间(一般为2天),开发团队的成员不应该做任何开发工作,要将全部精力放在把产品需求分解成一个个开发任务,并估算开发时间。

估算开发时间需要注意以下几点。

1、对于所需要使用的新技术,要估算学习和调研的时间。

2、根据统计,每个程序员每天的有效工作时间是5个 小时左右,其他时间都被沟通、喝水、休息、上洗手间等琐事占据,如果某个任务估算超过5个小时,那就代表了这个任务完成需要超过一天的时间。

3、开发人员对于开发任务的估算尽可能精细,一般来说,每个任务的估算时间不应该超过5个小时,如果超过5个小时,就应该把这个任务再细分为多个更小的任务。只要尽可能精细地估算任务,总体估算时间是大概精确的,因为有的任务估算的时间比实际完成的多,有的比实际完成的少。

最后根据产品经理的优先级和开发人员的估算时间,确定这个迭代周期最终的开发任务和其对应的优先级,即完成Sprint Backlog

 

日常开发

 

App开发中,App通过APIApp后台交互,后台人员可以先设计好相关的API并让API返回假数据。

开发过程中遇到任何问题,必须及时找相关人员沟通。为了保证沟通的效果,可以采用下面的方法。

1、如果不是非常紧急的问题,可以等相关人员休息的时候再沟通。

2、解决一个问题,先梳理好情绪,沟通的时候对事不对人。

Scrum中有个关键的职位“Scrum master”,Scrum master一般有技术总监担任,团队和外部的沟通必须统一通过Scrum masterScrum master的最大作用是屏蔽外部对开发团队的影响,使开发的进度和开发的效率得到保证。

在开发的过程中需要注意:一个Sprint Backlog中,需求不能变更,UI确定后原则上只能做小修改。产品有新需求,下一个Sprint Backlog再考虑。

 

每日例会

 

每日例会前,团队成员应该整理各自的任务列表,包括:

1、昨天完成了哪些任务,每个任务使用了多少时间,没完成的任务估算还要多少时间。

2、剩余的开发时间

例会中产品经理和开发团队的成员都要参加,如果可以的话,让运营人员和市场人员也参与进来,这样可以使团队每个成员都对公司的产品有个整体的了解。

每个人在例会上报告一下3方面的事情。

1、昨天做了哪些工作?

2、今天准备做哪些工作?

3、有什么工作需要其他同事配合?

注意避免在会议上讨论问题,如果真的需要讨论,请在会议后和同事讨论,不要浪费整个团队的时间。

 

测试和修复BUG

 

产品开发完成就进入测试和修复BUG的阶段。

测试人员把测试得到的问题提交到BUG管理软件,每个BUG应该包含3个部分。

1、问题描述和重新步骤

2、测试人员

3、负责解决这个问题的人员,如果测试人员不知道具体负责人,把这个问题提交给技术总监,由技术总监指定解决问题的研发人员。

 

评审会议

 

在测试和修复BUG完成后全体人员开评审会议。相关开发人员在评审会议中向全体人员演示APP的功能。

 

回顾会议

 

研发完成后开回顾会议,每个成员都在会议中提两点。

1、这轮迭代过程中做得好的地方。

2、这轮迭代过程中做得不好的地方。

这个过程走两轮,即每个成员都要提两点做得好和不好的地方。注意当一个成员提出自己的意见时,其他成员不做任何的评论。

 

及时反馈

 

可以通过建立相关QQ群收集意见,在APP中可以增加一个意见反馈的功能。

 

总结

 

敏捷开发不是万能的,敏捷开发更适用于需求多变,开发周期端的项目。


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

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

    10428 人正在学习 去看看 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 把项目中的一切开放给每个人看
  • 尊重每个人都有他独特的背景和经验
  • 勇气有勇气做出承诺,履行承诺,接受别人的尊重

 

敏捷开发总结

阅读数 458

敏捷开发思想

阅读数 558

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