2017-09-19 21:18:49 williamyi96 阅读数 549
  • SCRUM敏捷开发视频教程

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

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

一段时间以来,由于学习的需要,涉及到了很多软件系统分析与设计以及软件体系结构相关的问题。而软件系统开发流程中,不得不提到的,便是敏捷开发。

接下来,将由浅入深地来分析分析敏捷开发的基本概念,然后说明一下敏捷开发的代表–XP(极限编程)与Srcum过程。

敏捷开发概念与价值观

敏捷开发运动历史相对于整个软件开发而言算是较为悠久的,其真正开始的标志是01年2月提出的”敏捷宣言(Agile Manifesto)”,这项宣言由17位当时称之为“轻量级方法学家”所编写签署的,他们的核心价值观是:

这里写图片描述

以上来自于敏捷宣言的官方网站,敏捷宣言作为指导敏捷开发的核心思想,下面简单地解释一下其内容的基本含义。

  • 个体和互动高于流程和工具。往往勤于沟通合作,目标明确的个人优秀的团队比那些使用最高级工具的团队做得更好,因为软件产品是人完成的,中间有太多的不确定性,因此互动与个人能力对变化的适应性就显得尤为重要;

  • 工作的软件高于详尽的文档。能够让软件能够顺利给用户交付使用是最终的目的,并不在乎将项目开发的过程文档写得多么漂亮,由于敏捷开发注重效率,而如此耗时的工作在后期并没有很好的效益。

  • 客户合作高于合作谈判。让客户参与到软件开发的过程中,能够更好地了解客户的需求。

  • 响应变化高于遵循计划。软件开发的过程中,往往会有诸如需求,设计等的改变,对于传统的瀑布模型将软件开发定义地过于死板,不具有对变化的适应性,开发出来的产品很可能并不是满足需求的“高质量”产品。

敏捷开发特征总结

关于敏捷开发的特征问题,网上已经有相当多的介绍资源,以下仅仅按照个人的体会针对一些与传统开发方式差异较大的部分进行总结。

  • 以瀑布模型为代表的开发方式有着严格的过程化,没有较强的响应变化的能力,不利于了解用户变化的真正需求。而敏捷开发实际上是测试驱动的。了解了用户的需求之后设计测试用例,编写测试代码,如果产品能够通过所有测试,那么其就是一个可以release的版本。

  • 敏捷开发的主要文档是测试文档。传统的开发过程中特别看中需求分析,设计与实现等部分的文档,而敏捷开发则更为注重测试文档。其本质原因是因为敏捷开发的过程中,伴随着极其快的软件版本迭代,如果注重实现等的文档,很容易产生代码修改不一致的问题。而如果以测试文档为主要文档,则便于项目的管理。同时也可以减轻团队成员调整带来的学习成本。

  • 敏捷开发以合作为中心,也就是实现代码共享。敏捷开发过程的代码不是为一人所有,任何人都有权利看到所有代码并原则上允许修改所有代码,并不需要征得原作者同意。这在很大程度上就降低了人员调动所带来的风险。

  • 敏捷开发要求开发人员的水平基本相当,一般而言,较高。由于敏捷开发的代码共享性以及代码的高需求适应性,其对开发人员的整体水平要求较高,同时开发人员之间的水平基本相当。

敏捷开发典型代表

当下用得比较多的,有两类敏捷开发的方法。一类是XP(极限编程),另外一类是Scrum。由于两者都是基于敏捷开发价值观的具体实现,因此下面简单地谈谈两者之间的差异。

区别之一: 迭代长度的不同

XP的一个Sprint的迭代长度大致为1~2周, 而Scrum的迭代长度一般为 2~ 4周.

区别之二: 在迭代中, 是否允许修改需求

XP在一个迭代中,如果一个User Story(用户素材, 也就是一个需求)还没有实现, 则可以考虑用另外的需求将其替换, 替换的原则是需求实现的时间量是相等的。 而Scrum是不允许这样做的,一旦迭代开工会完毕, 任何需求都不允许添加进来,并有Scrum Master严格把关,不允许开发团队收到干扰。

区别之三: 在迭代中,User Story是否严格按照优先级别来实现

XP是务必要遵守优先级别的。 但Scrum在这点做得很灵活, 可以不按照优先级别来做,Scrum这样处理的理由是: 如果优先问题的解决者,由于其它事情耽搁,不能认领任务,那么整个进度就耽误了。 另外一个原因是,如果按优先级排序的User Story #6和#10,虽然#6优先级高,但是如果#6的实现要依赖于#10,则不得不优先做#10.

区别之四:软件的实施过程中,是否采用严格的工程方法,保证进度或者质量

Scrum没有对软件的整个实施过程开出养个工程实践的处方。要求开发者自觉保证,但XP对整个流程方法定义非常严格,规定需要采用TDD, 自动测试, 结对编程,简单设计,重构等约束团队的行为。因此,原作者认为, 这点上,XP的做法值得认同的,但是却把敏捷带入了一个让人困惑的矛盾, 因为xp的理念,结合敏捷模式,表达给团队的信息是“你是一个完全自我管理的组织, 但你必须要实现TDD, 结对编程, …等等”

不难发现,这四个区别显见的是: Scrum非常突出Self-Orgnization, XP注重强有力的工程实践约束。

一般建议, 在管理模式上启用Scrum, 而在实践中,创造一个适合自己项目组的XP(“start with Scrum and then invent your own version of XP.”)

总结

通过对敏捷开发相关理念以及突出特点的了解,个人觉得其思想是一种很不错的范式。后续承担的某项目本人将尝试使用敏捷开发。

参考文献

  1. 敏捷软件开发宣言
  2. 敏捷开发 From MBALib
  3. Differences Between Scrum and Extreme Programming
  4. 敏捷方法之极限编程(XP)和 Scrum区别
2019-09-29 15:34:43 heibuliuqiu_gk 阅读数 28
  • SCRUM敏捷开发视频教程

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

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

敏捷开发,在百度上这样介绍的:

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

敏捷开发宣言如下:

  • 个人和他们之间的交流胜过了开发过程和工具。
  • 可运行的软件胜过了宽泛的文档。
  • 客户合作胜过了合作谈判。
  • 对变更的良好响应胜过了按部就班地遵循计划。

敏捷原则如下:

  • 我们最优先要做的是通过尽早、持续交付有价值的软件来使客户满意。
  • 即使是开发的后期,也欢迎需求变更。敏捷过程利用变更为客户创造竞争优势。
  • 经常交付可运行的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
  • 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
  • 围绕有积极性的个人构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
  • 在团队内部,最富有效果和效率的信息传递方法是面对面交谈。
  • 可运行软件是进度的首要度量标准。
  • 敏捷过程提倡可持续的开发速度。负责人、开发者和用户应该能够长期保持稳定的开发速度。
  • 不断地关注优秀的技能和好的设计会增强敏捷能力。
  • 简单——使不必做的工作最大化的艺术——是必要的。
  • 最好的架构、需求和设计出自于自组织团队。
  • 每隔一定时间,团队会反省如何才能更有效地工作,并相应调整自己的行为。

首先需要明确,敏捷开发不是一个具体的框架或者过程,也不是软件开发的具体方法,而是一种价值观和原则,因此敏捷开发是不可模仿的。每个不同的团队都会在开发软件的工程中根据敏捷开发的价值观和原则去做适合自己团队的决策。

敏捷开发是一个不断迭代的过程,需要具有极强的适应性,简洁性和完整性。敏捷团队也需要是一个高度自主的团队,团队中不会存在“打酱油”这种人,团队中每个人都有极强的个人能力,同时,他们每个人还必须具备良好的沟通合作能力。在做决策时,每个团队都要遵循敏捷开发的价值观和原则,而不是去模仿其他的团队,即:“他们怎么做不重要,重要的是明白他们为什么这么做”。

2019-10-22 11:54:24 tianxintiandisheng 阅读数 24
  • SCRUM敏捷开发视频教程

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

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

敏捷软件开发,又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

一、story讲解

  1. 制作竞品分析PPT,UE全组参与。(用时:根据产品复杂度,0.5-2小时之内)
  2. 制作产品原型,交由客户看,客户没有异议之后禅道录入story
  3. 产品在禅道拆分好story,并且定义出优先级,关联需求,后续开发根据优先级进行开发
  4. 由产品讲解story,前端和后端都参与。(用时:根据产品的复杂度,1-3小时之内)

二、人员划分

  1. 新建wiki项目主页,把PPT和产品原型(HTML文件)上传到wiki
  2. 根据产品原型,按照模块划分相关负责人,前端和后端都是,并放到wiki。(由项目负责人新建)

三、定义接口文档(2-3天)

  1. 前端后端相关人员一起,对照原型,根据模块及页面大概定义出接口
    • 一个页面中有几个接口,每个接口入参与出参是什么
  2. 后端每个模块的负责人,根据开会讨论的结果,在wiki上生成标准的接口文档
  3. 将后端做好的接口文档发给前端模块负责人过目,有问题继续修改;没问题开始后续的步骤 。

四、方案设计(1小时-1天左右,根据模块大小定义时间)

  1. 后端开发人员,根据原型以及定义的接口,做好方案设计
  2. 对有难度或者有疑点的接口,做出方案,尽量给出多个合理方案
  3. 每个方案写清楚优点缺点

五、方案评审(2-3小时)

  1. 对做出的方案设计,做方案评审,建议全体人员参与(无论做不做该项目)

六、禅道拆分(1-2小时)

  1. 相关负责人按照优先级顺序,在禅道拆分自己的任务,单个任务最多不要超过4小时,即拆分要详细

    • 拆分一个task时,以具体写的代码为一个task,并在任务名称中写出该类/方法的名称在任务描述中写出该task的代码块具体有的功能
    • 当拆完task后,这几个task所完成功能的代码已经过了一遍
    • 如果有不了解的功能,在方案评审前先写出一个demo,以方便拆分task的估时
    • 一个task用时应在0.5-2之间,最大最大4个小时
  2. 以文件上传功能为例,分成3个task

    • task1.任务名称:公共模块-文件上传-上传文件controller的方法fileUpload
      任务描述:通过网页获取文件,文件判空,判断文件的归属类型(用户/教材/课时/步骤/咨询)
      工时:1
    • task2.任务名称:公共模块-文件上传-添加文件FileUtil 和FileUtilOssImpl
      任务描述:util处理上传的文件,判断文件类型,大小,设置文件上传的路径,返回的url
      工时:1.5
    • task3.任务名称:公共模块-文件上传-文件接口spring-fileOss.xml 配置文件
      任务描述:oss的文件上传, 调用的spring.xml配置文件(密匙,ID,bucket等)
      工时:1.5

七、开发

  1. 搭建开发服务器
  2. 开发人员根据禅道上的任务,按时完成自己的开发工作,具体体现到日报上
  3. 每天上午开10分钟左右进度会议,如果有延迟现象出现,拿出解决方案,保证项目按照禅道上的时间点完成
  4. 数据库索引(两种索引):
    1. 经常查询的,数据散列度比较高的,做一般索引,不需要建联合索引。
    2. 数据必须保持唯一的,建唯一索引。(要有文档,文档表明哪些字段要建索引。发邮件。)

八、阶段测试

  1. 每天至少发布一次代码到开发环境,并且保证发布完之后程序没问题(与开发并行)

九、性能测试和coderevivew(1天)

  1. 对每个接口做好性能测试
    • 每个接口的响应时间不超过200ms,如果有超过的,做优化,尽量缩小到200ms内
  2. 完成codereview,根据codereview结论完成修改

十、压力测试

  1. 做好压测报告

十一、 Demo

demo

  1. 发demo申请邮件,收件人包括产品、测试同学、前后端相关开发人员
    1. 主题:XX项目demo通知
    2. 内容:时间 地点 参会人员
  2. 开demo会议:主讲人:某个开发人员
    • 会议途中产品和测试提出问题
  3. 发demo结果通知邮件(由产品同学发)
    1. demo结果
    2. 如果不通过,有哪些问题
  4. 如果不通过,召集第二次Demo会议,知道通过为止。第二次会议只需演示之前不通过的部分

测试

  1. demo通过之后
  2. 开发人员对代码打tag(参考文档: 如何打tag 。)
  3. 开发人员部署测试环境,部署完成之后发邮件,写明域名;
  4. 交给测试人员进行测试,测试人员发送全体测试周期邮件
  5. 测试期间,如果有测试发现bug,会在禅道上面提出bug,禅道会发送邮件到各自开发人员的邮箱,开发人员要关注BUG邮件 ,及时确认BUG,及时修改
  6. 修改BUG之后,开发环境前端代码由前端同学自己部署,后端代码由后端同学自己部署
  7. 测试完成之后,测试或产品发送上线通知
    具体参看: 测试Bug划分及处理流程
    测试和线上环境发布流程: 测试及线上环境发布流程

十二、 发布测试环境、集成测试(2-3天)

  1. 禅道上建立bug,测试出bug,指派给相关人员修改

十三、发布线上环境,同时停止开发环境和测试环境

十四、线上监控

  1. 错误报告
2015-03-10 17:31:48 MeAmI 阅读数 354
  • SCRUM敏捷开发视频教程

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

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

敏捷开发

简介:敏捷开发是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。

组成方法:敏捷开发由几种轻量级的软件开发方法组成,它们包括:极限编程(XP),Scrum,精益开发(Lean Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Cristal Clear)等等。

敏捷开发介绍—极限编程XP:

(1)主要目的是降低需求变化的成本

(2)定义了一套简单的开发流程

(3)核心做法:
小规模,频繁的版本发布,短迭代周期。
测试驱动开发(Test-driven development)
结对编程(Pair programming)
持续集成(Continuous integration)
每日站立会议(Daily stand-up meeting)

敏捷开发原则和方法:

(1)迭代式开发:即整个开发过程被分成几个迭代周期,每个迭代周期是一个定长或不定长的时间块,每个迭代周期持续的时间一般较短,通常为一到六周。
(2)增量交付:产品是在每个迭代中欧其结束时被逐步交付使用,而不是在整个开发过程结束的时候一次性交付使用。
(3)开发团队和用户反馈推动产品开发:敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。同时,团队对于用户的需求也能及时提供反馈意见。
(4)持续集成:新的功能或需求变化总是尽可能频繁地被整合到产品中。一些项目是在每个迭代周期结束的时候集成,有些项目则每天都在这么做。

(5)开发团队自我管理:拥有一个积极的、自我管理的、具备自由交流风格的开发团队,是每个敏捷项目必不可少的条件。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给人。


2010-05-26 20:10:00 xqy1522 阅读数 512
  • SCRUM敏捷开发视频教程

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

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

敏捷开发4句宣言:

 

个体与交互           胜过     过程与工具
可以工作的软件    胜过     面面俱到的文档
客户协作               胜过     合同谈判
响应变化               胜过     遵循计划

 

 

 

个人感悟:敏捷开发相对于传统的开发就犹如互联网时代的经济相对于早期的经济一样:从干巴巴走向湿乎乎!

 

 

 

 

简单理解敏捷开发

阅读数 564

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