2019-10-31 09:25:34 janeqi1987 阅读数 29
  • SCRUM敏捷开发视频教程

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

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

敏捷的故事始于一小群创新者,他们聚在一起试图找到解决这些问题的新方法。他们一开
始就对以下这四则价值观达成了一致,认为这些是成功团队和成功项目共有的特质。他们
把这四则价值观称为“敏捷软件开发宣言”(Manifesto for Agile Software Development)。
• 个体和互动高于流程和工具
• 可工作的软件高于详尽的文档
• 客户协作高于合同谈判
• 响应变化高于遵循计划

2012-08-06 20:04:49 cxh1527 阅读数 809
  • SCRUM敏捷开发视频教程

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

    10411 人正在学习 去看看 CSDN讲师
敏捷开发价值观:
    • 个体和交互   胜过 过程和工具
    • 可以工作的软件 胜过 面面俱到的文档
    • 客户合作 胜过 合同谈判
    • 响应变化 胜过  遵循计划
原则 :
  1. 我们最优先要做的是通过尽早、持续的交付有价值的软件来使客户满意
  2. 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势
  3. 经常性地交付可以工作的软件,交付时间间隔越短越好
  4. 在整个项目开发期间,业务人员和开发人员必须天天在一起
  5. 围绕被激励起来的个人来构建项目。给他们提供需要的环境和支持,并且信任他们能够完成工作
  6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈
  7. 工作的软件是首要的进度度量标准
  8. 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度
  9. 不断地关注优秀的技能和好的设计会增强敏捷能力
  10. 简单--使未完成的工作最大化的艺术-----是根本的
  11. 最好的构架、需求和设计出自于组织的团队
  12. 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整
2019-04-06 12:51:32 zxh19800626 阅读数 213
  • SCRUM敏捷开发视频教程

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

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

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。如果还不知道Scrum敏捷开发的朋友们,请出门左转,点击 Scrum 了解。

敏捷价值观

个体和互动 高于 流程和工具

工作的软件 高于 详尽的文档

客服合作 高于 合同谈判

响应变化 高于 遵循计划

敏捷的原则

1.我们最重要的目的,是通过持续不断地及早交付有价值的软件使客户满意。

2.欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。

3.经常的交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

4.业务人员和开发人员必须相互合作,项目中得每一天都不例外。

5.激发个体的斗志,以他们为核心搭建项目。提高所需的环境和支援,辅以信任,从而达成目标。

6.不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。

7.可工作的软件是进度的首要度量标准。

8.敏捷过程倡导可持续发。责任人、开发人员和用户、要能够共同维持其步调稳定延续。

9.坚持不懈的追求技术卓越和良好设计,敏捷能力由此增强。

10.以简洁为本,它是极力减少不必要工作量的艺术。

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

12.团队定期地反思如何能提高成效,并依次调整自身的举止表现。

 

参考文献 《Scrum要素》作者:Chris Sims & Hillary Louise Johnson

2007-09-26 02:03:27 dadarain 阅读数 132
  • SCRUM敏捷开发视频教程

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

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

         项目组采用XP的实践开发已经有一个多月了,主要是采用了测试驱动开发,重构,结对编程,还要引入持续集成。经过这么长时间的实践,我觉得组建敏捷团队,开始敏捷开发的最关键问题是要统一价值观。<o:p></o:p>

测试驱动开发<o:p></o:p>

      我发现实际上掌握这些实践其实并不是最困难的,比如测试驱动开发,虽然我也是个初学者,但是我知道,只要经历一个学习和实践的过程,我们就能掌握这项技术。我们使用JUnit测试,最开始将整个Spring框架和Hibernate一起都测试了,后来发现这样做是不对的,单元测试应该不依赖于框架。于是我们改了。这个很容易改。<o:p></o:p>

     可是我发现比较难改的是大家编写测试的习惯。虽然使用着JUnit,但是他们依然会在产品代码编写完之后写测试,而非在其之前;他们依然是写了大量产品代码之后写测试,而非写一点测试,写一点产品代码。起初我觉得是因为大家不明白测试驱动开发的好处,因为先写测试有以下几个好处:<o:p></o:p>

    1、单元测试是需求说明书<o:p></o:p>

    2、单元测试是用户手册<o:p></o:p>

   3、帮助设计<o:p></o:p>

   4、有助解耦<o:p></o:p>

   5、观测性能<o:p></o:p>

  6、界定特性是否完成<o:p></o:p>

  7、系统集成出现问题便于排错<o:p></o:p>

 8、是重构的保护伞<o:p></o:p>

 9、在大多数情况下不需要调试,只需要测试,节省时间<o:p></o:p>

10、提高产品质量<o:p></o:p>

     应该还可以举出很多好处,这些在很多著作,讨论中都已经重复千万遍了,不必细说,重点是,我发现即便人们都明白所有这些,但是依然会回到过去的方式。我觉得其根本问题在于对于敏捷背后的两个价值观他们是不认同的:重视质量小步前进。他们并不认为质量对于系统的开发会有怎样的作用,认为质量是无关紧要的。质量的重要性其实已经不需要说了,Fowler等人的论述已经够多了,可是他们依然还是坚持自己的观点,这类人有以下几个表征:<o:p></o:p>

   1、认为测试驱动开发会增加成本。因为他们觉得测试驱动开发时编写的测试是多余的,如果不采用测试先行,这些测试是可以不编写的。这实际上是对质量的不重视。<o:p></o:p>

  2、认为测试脚本和测试数据是难以编写的。因为他们觉得使用完整的一套测试数据来进行测试是不可行的,而在我看来这是必须的,用户必须提供平时他们使用的典型数据来进行测试,以保证质量。<o:p></o:p>

3、认为有了集成测试和用户测试,就不需要单元测试,这样做是非常冗余的。<o:p></o:p>

诚然,QA等级和软件成本是挂钩的,但是单元测试保证的质量应该是必须的。<o:p></o:p>

如果上述观念无法达成共识的话,TDD中所说的,当遭遇失败时,首先写一个测试,对于他们而言就更是天方夜谭了。<o:p></o:p>

 重构<o:p></o:p>

虽然我们使用Eclipse内置的重构工具完成一些典型重构,比如抽取接口,renamemove,提取方法等,但是为什么要进行重构的价值观却很难建立。具体现象是:

1、在代码很混乱的情况下继续添加新的代码,而不是考虑先将代码重构

2、认为重构会降低开发效率

我觉得其背后隐藏的依然是对于敏捷价值观的不认同:重视质量简单

他们通常觉得只要能运行就不要去破坏它,质量问题是最后要考虑的问题(有一部分人还会将重构和性能调优画上等号)。

重构可以获得一个简单的设计,而简单设计意味着没有重复,有充分理由的依赖关系和继承体系。可是我发现,没有重复这样一件事情,就很难达成共识,有的人认为重复代码是代码重用的一种方式。

<o:p> </o:p>

<o:p> </o:p>

结对编程<o:p></o:p>

结对编程的有效进行也对于提高质量和使设计简单有同样的好处,这个不必细说。

问题还在于大家是否对于这两个价值观认同。

<o:p> </o:p>

以人为本<o:p></o:p>

Fowler的《新方法论》中,Fowler认为敏捷最重要的两个特性之一就是以人为本,而非以过程为本。如果听到下列言论,我觉得意味着你的组织文化可能不是以人为本的:

1、随便找几个人进行简单的培训(这些人只使用过VB开发过课堂作业程序),就可以很好的编程了

2、制定一个执行步骤规范,人手一本,只要按照上面一步步操作就可以了

3、谁离开了,马上找一个人来就可以来替换他的工作。

<o:p> </o:p>

我觉得这已经表明老板认为程序员只不过是生产线上可替换的零件了。

我觉得不以人为本的团队,也体现了对于如下几个价值观的不认同:

1信任。程序员不值得信任,并不是像Fowler所说的程序员是担负责任的专家。

2沟通反馈。虽然通常他们会强调沟通的重要性,但是他们很少强调反馈的重要性。他们所谓的沟通是单向的下命令,而非交互式的。

3尊重。团队中其他人的工作是不值得尊重的,架构师可以有一万个理由瞧不起编写代码的程序员,在这样的团队中,架构师通常都是不参与编程的。

迭代,小步前进<o:p></o:p>

我非常喜欢Kent那个开车的比喻,可是领导认为每天总结(站立式会议)或者每隔一段时间进行总结都是没有必要的。

设立短小的、可控的计划是无用的。

还有一个最根本的<o:p></o:p>

<o:p> </o:p>

我觉得敏捷开发最根本的一个观念就是实事求是,也就是Kent在《解析极限编程》中所说的,XP就是将有益的事情做到极致。所以敏捷方法都是一堆实践原则的集合。

Johnson讲的循证框架也是在强调这点。我们可以笼统的说自己在实践敏捷开发,或许不是那么纯粹的XPKent的说法也是建议循序渐进的使用XP,但是觉得有用,可以解决你遇到的问题,又不会有很大的副作用,那么就把它引进来,即使这个方法是CMMI阵营的。

    我认为每件事都要经过科学的论证,而不是猜测,可是这一点也得不到认同。

敏捷叫停<o:p></o:p>

我们的团队请了一个日企的强调使用V模型,严格文档驱动的顾问,意味着我们的敏捷之旅结束了。

我想我们之所以没有沿着敏捷的道路走下去,并不是因为实践的问题,也不是因为原则的问题,而是价值观的问题,总结如下:

1、我们的老板觉得程序员就是可替换的零件

2、质量不重要

3、开会就是下达命令

4、简单就是把所有的代码都写到一个文件里

5、对于大家不信任

6、个性不应该被尊重,服从命令是第一位的,海军陆战队风格

7、实事求是

<o:p> </o:p>

Kent说,如果你的团队的价值观是与XP抵触,那么就不要使用XP

我觉得透过种种敏捷实践的实施不力,其背后隐藏的其实是价值观的难以统一,至少我觉得我在项目中推行敏捷,挣扎了一个半月终于要搁浅,原因就在于实在难以在价值观上达成共识,最困难的是难以说服老板改变观念。

<o:p> </o:p>

Ps:我是研究生一年级的学生,我们的项目很大,可是人不多,我觉得非常适合使用XP。我认为XP是非常好的天才的想法,可以解决很多问题,可是今天来给我们做指导的那个日企的人说在大公司做大项目都是要听话的,不会用敏捷之类的新方法。可是我看到的那些软件开发大师的书,和论坛上各位的讨论,都觉得这个方法应该是经过很多大型项目的验证了,可是我们导师询问了几个公司里的人,却都没有用过,他们也觉得TDD很好,但是就是没用过。

  我是作为我们团队的技术主管,其实就是矬子里面拔大个,但是这是我接触敏捷1年来,并且在这个项目前期时使用敏捷的想法,或许我的所有观点都很幼稚,所以还请各位有工作经验的多多指点~<o:p></o:p>

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

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

    10411 人正在学习 去看看 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周。

敏捷开发的价值观

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

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

十二条原则

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

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

浅谈敏捷开发

阅读数 240

浅析敏捷开发

阅读数 137

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