只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
免费发布信息
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  什么是敏捷软件开发呢?


  • 【莆田鞋厂家分类】
  • 【奢侈大牌包包厂家分类】
  • 【潮牌奢侈服饰鞋子厂家分类】
  • 【名表厂家分类】

厂家货源分类区域

什么是敏捷软件开发呢?

发布时间:2019-08-05 19:58:01  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:473    【】【】【
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具
什么是敏捷软件开发呢?

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

就算你不屑使用百度、无法使用Google,至少在知乎里先搜索一下吧?

什么是 Agile Software Development(敏捷软件开发)?

啊……原来是机构自问自答的,打搅了。

谢邀

敏捷是一种拥抱变化的开发模式

区别于以前的传统瀑布模式开发

敏捷有三个角色,四场仪式

分别是:PO、Scrum Master、Team member

计划会议、站立会、评审会和回顾会

回顾是敏捷的精髓

通过短时间的迭代回顾团队的优点与缺点来逐步提高团队的能力

敏捷的时间盒在1到4周,一般建议为2周

在冲刺的时间内,根据PO排列出的优先级

永远开发出对用户来说价值最高的可交付

这个词应该适用于互联网产品,版本迭代很快

【什么是敏捷开发】



一、朋友,你听说过敏捷么?


程序员说,要有敏捷


从敏捷的滥觞看去,比起方法,这玩意貌似更像一个宗教(笑)。
千禧之初,美国在计算机行业已经走了几十年,瀑布流、螺旋模型、快速迭代...各种各样的软件开发流程雨后春笋各领风骚一段时间。虽然不断变化和完善,但互联网的加速发展让传统方法显得笨重,难以快速适应变化。有十七个程序员(程序员改变世界)在美国犹他州的一个风景区开了个碰头会,找到了一个团队耦合度高,流程极其灵活的方法,他们把它称为agile program development。
这十七个人如同开宗立派的长老,在会议之后给自己起了个名字“敏捷联盟”,他们不仅赋予了新方法名字,还有宣言,甚至纲领。
中文版的“敏捷宣言”。在建立于2002年3月的《Manifesto for Agile Software Development》里你可以找到几十种语言的“敏捷宣言”。

另外,长老们还制定了12原则,作为福音传播。

显而易见,敏捷是绝对的结果导向,去文档化,去流程化,高效沟通和合作是究极奥义。
看起来是个很不错的方法,文档不重要了,流程不重要了,大家聚在一起说一说就可以了不是吗?太棒了,感觉可以从繁重的文书工作中解脱出来了呢。
失之东隅收之桑榆。一处的方便一定意味着另外什么地方以其他方式运行着简化掉的部分。
去文档,敏捷管理者需要维护更为精细的需求池;去流程,口头沟通成为常态,对团队的耦合度要求更高。
胖友,这里有一份教义,你要不要听一下。
初识敏捷,有一些概念需要了解,如果你是老司机,跳过这部分,阿敏。
agile:迅速,敏捷。这是敏捷的理念也是精髓:迅速响应需求,快速反馈结果。agile 的引入像一股活水冲击着老气横秋的瀑布流模型,速度上跑赢几条街。
sprint:字面意思是短跑冲刺,一个开发阶段被认为是一次冲刺,一个个 sprint 首位相连,构成一个项目。
Scrum:指的是英式橄榄球中一股脑争球这一战术或行为。
scrum 即为这样一种方式,大家一拥而上,团队是球员,球是产品目标,人员环环相扣,围绕着产品目标进行工作。这里面多少有点“统筹法”的影子,人员深入协作以达到最优化效果。
Product Backlog:
backlog 即需求池。待办事项列表。
Backlog 里面写什么:

1.待开发任务。
2.任务优先级。


敏捷需要维护一份详尽的需求列表。这份列表常常要求 scrum 持有人(一般是产品经理)对所有待开发事项有深入了解,并且能够把待开发事项分解成更为细致的任务(或者跟敏捷教练一起,后面我们会再次提到敏捷教练)
story board:
很多领域都有故事板的概念,交互领域里,用故事板表述用户场景、电影领域里故事板用来更具体地描述分镜。在开发领域,故事版是任务流转的可视化窗口,一般有“待开发”“开发中”“待测试”“返工”“待发布”几个区块,所有任务由任务操作者负责流转至于下一个步骤,这样任何一个人项目成员都能看到任务的完成情况。
一个app使用情景故事版

在开发中,故事板展现所有需求的工作流
burn down chart:
燃尽图
一个 sprint 内,人/时是一个比较固定的值。在这个时间框架充分安排开发任务,每天进行时间结算,绘制时间燃尽图。项目成员通过燃尽图获知时间进展,若项目燃尽所用时间与预期时间契合,则需求时间预估和安排合理,若不契合则需要在下一个 sprint 进行调整。
名词听起来都玄乎乎的,很符合开宗立派的气质。这些概念定义了敏捷各个环节的工作,这些流程和节点是敏捷开展的基础和保障。


二、离开敏捷工具,我们怎么敏?


一个误区:我们用了敏捷管理工具,就敏捷了


随着敏捷在行业内的不断融入,各种工具产品层出不穷。国外jira、redmine,Axosoft ,国内的leangoo 、禅道,三大家则都有自研的工具,百度的icafe,阿里的aone,我鹅自研tapd

我们在 tapd 上建迭代,建需求,研发、测试等着收到需求流转的邮件之后开始干活...任务在测试和研发之间流转,bug 提给研发,研发解决 bug .....我们宣称:我们敏捷化了!
我们习惯于敏捷软件的便利,拉群解决一切,然而却丧失了敏捷的初衷,scrum 的本意。
假设我们没有任何项目协同软件,敏捷怎么实施?
设定一个环境,现在没有任何协同工具可用,但是所有人都坐在一起。有人站起来说,既然这样,我们不如敏捷吧!
敏捷工具消失了
敏捷路径里必须有一个项目持有者,制定规划并把握项目走向。这位产品汪我看你骨骼惊奇,你就担负起这个责任吧。
另外还有一个关键人物 SM(别想歪)。SM 全称 scrum master,中文称敏捷教练。一般说来,SM 需要由对技术开发以及当前项目明晰的技术经理担任。
虽然缺少线上工具,但至少要准备一些简单材料:一卷双面胶+白纸或一沓便利贴;笔,一面平坦的墙或一块黑板
如果还有电脑可用,excel 或者 word,甚至写字板都可以,没有电脑那就白纸好了,总之你得找个地方写下你的需求池(backlog)

需求池示例(任务名称、平台、详细描述、优先级按照P0-PX逐渐递减)
确定一个 sprint 周期的自然天。可以用月/旬/周等时间概念作为周期,我们选择一周(五个工作日)作为一个 sprint 周期。
按照优先级,从需求池中拉出你认为应该加入你们一穷二白的第一个 sprint 里面去的需求,别太贪心,大概觉得差不多一周左右的开发量就够了。拉上SM桑单独开一次小会。
当然不是让你俩傻站着,你俩要开会
你们一起通览需求,SM 桑根据经验对需求先行分解一遍,比如某需求在开发层面需要分解为 ABC 三部分,这三部分就形成三个开发任务。


正式开始一个 sprint 开始之前,产品、研发、测试需要一同开一次 scrum 会议,共同讨论本次 sprint 的功能点。
会上讨论什么:
1.需求讨论或技术讨论;
2.成员预估需求所需开发时间;
3.需求是否match人力时间,需求排入sprint;
4.交流一下感情。
每个任务的预估时间在最后由敏捷教练综合判定
scrum会后你的工作:
1.整理这个 sprint 内的需求列表;
2.整理每个需求的预期开发时间;
3.撰写故事版上的小纸条;
4.把小纸条贴到故事版上;
5.制作一个燃尽图。

一个改良版的小纸条,写明开发者、任务描述、预估时间和每日燃尽时间
故事版布局如下:

一个标准的故事版:最开始所有的小纸条都在“待开发”一栏
到此为止,你可以开始 run 起一个 sprint 。
以为这就完事了?天真。
接下来你必须来参加每日举行的项目短会。这个环节在 agile 中非常关键,是 agile 的日常修炼。为了缩减会议时间,我们一般站着开——所以也叫“站会”,早上上班后或晚上下班前,抽出十到十五分钟时间,完成它。
每日站会
站会都有什么人参加:
1.你(项目持有者)
2.SM
3.其他 scrum 成员
站会干什么:
1.昨天大家分别做了什么事,遇到了什么问题,如何解决或寻求解决方案;
2.昨天任务的完成状态,剩余多少时间,是否需要进行时间修正(增加时间或减少时间),把已完成的任务流转到下一环节(把纸条从一个item内撕下,贴到下一个item里去);

任务进行中,小纸条的示例
3.功能测试后是否有返工;
4.交流一下感情。
站会之后你的工作:
绘制燃尽图。

一个燃尽图的示例:正常的 sprint 的任务时间是随着 sprint 的进程逐渐减少的
周而复始,完成了一个 sprint 后,你们开了第二次 scrum 会。这时议题多了一项:复盘上一个 sprint。
任务未能燃尽;研发返工过多;测试需求淤积.....
针对问题讨论解决方案,根据实际情况进行下一个 sprint 的任务安排。
自此,我们在没有任何敏捷工具的帮助下,开始了敏捷的旅程。
说起来agile developing 本来就是排斥文档的作业方式,为一个小轻快的方法制作一套严谨庞大的工具,基本也算违背了元老们的初衷了吧,科科。


三、设计师在敏捷中如何介入?


我们正在使用或者听过的一些流程方法——不单敏捷,瀑布流,迭代式,结对开发,精益开发....似乎都不关设计师什么事。既然开发团队抱团敏捷了,设计,这个在产品流程中必不可少而工作内容相对独立的角色,要怎么介入敏捷呢?
一种思路是,设计拥有自己的敏捷流程。设计师作为一个 scrum 存在,以从上游获取的需求进行 sprint 。
另一种思路,是把设计和测试完全纳入到团队中来,一起进行 scrum 的合作。这样的话,UI工作至少要比开发工作前移至少半个 sprint 。
有请产品经理(项目持有者)出场。
很好,我们有了一个设计师
项目持有者将需求分为“ UI 支持”和“非 UI 支持”两类。我们将小纸条扩展一下。

多出来 UI 前置部分的小纸条


U I设计师参与到 scrum 会中。对于需要 UI 支持的需求,设计师给出一个 UI 制作的时间预估。项目持有者将这部分时间加到扩展小纸条上去。在一个sprint 中,设计师的工作跟研发的工作分别进行。
当设计师将某一需求完成时,将小纸条的 UI 部分撕下,汇入到“”待开发”中去。
一个已经完成了 UI 设计的小纸条示例


四、敏捷不需要文档吗?


一切为快服务的敏捷特别适合初创团队使用。它能把团队人员紧密结合在一起,高效而有序地输出产能。而常规高效的版本输出往往是初创团队高速发展的第一要务。
敏捷了一段时间之后,产品进入正轨,项目拿到拨款,公司拿到投资,你们要扩大团队规模,新入职的同事想了解下产品和技术细节,你告诉TA:
你要不翻下 backlog 看看?这个实现你要不看一下代码?这个字段我也不记得有没有了....你抓包看下?


新同事一脸懵逼,难道咱们没有文档吗?你自豪地指出:
“我们是敏捷团队。”
十几个人八九条枪的阶段之后,产品趋于稳定,团队逐步扩大。无论从内部协调还是外部沟通上对产品流程的正规化和文档化要求与日俱增。
从短期收益上看,文档对于敏捷开发是非必须品,并且很有可能会拖慢进度。在一个 sprint 中,口头沟通显然效率更高,每个人都有精确到工时的任务,没人有等待文档更新的时间。强调文档就等于放弃灵活性。
从长期和宏观上看,文档对于敏捷团队和敏捷的实施利大于弊——节省在一些常规问题上的沟通成本,同时降低错误的发生概率。对于一个将要长期实施敏捷的 团队来讲,文档让后续的工作效率更高。
一个以讹传讹的过程
这样一个功在当代利在千秋的好事,当然要做。那么——
谁来维护文档,怎么维护?
我们挑选几个重要的文档:产品文档、概要设计、接口文档
产品文档:不好意思内个产品经理你过来下。虽然你要维护 backlog 、跟 SM 分解需求、开 scrum 会、写小纸条、开站会、画燃尽图、还有什么外部沟通啊,写 PPT 啊,绞尽脑汁想规划啊......你还得认真把这个文档维护好。
对又是你
产品文档包括:


1.需求;
2.加入日期;
3.开发版本;
4.呈现和详细方案


在非敏捷开发流程中,文档在评审会后完善并更新,形成一个给研发参考的实现目标。在敏捷中,需求本身在 sprint 周期内不断完善,你可以在一个 sprint 之后将文档补全。
概要设计:敏捷的常规迭代中,概要设计不是一个必须的文档。但全新项目、重构以及重大新功能则必须输出概要设计文档。研发 leader 责无旁贷,这个落你身上了。
接口文档:必要且重要。包括接口说明、字段定义、字段类型、值定义、数据上报、错误码等。一般来说约定之后由接口开发者更新文档,如果你们没有云端存储的能力,至少咱们人手一份,定期更新。
长久来看,文档是提高效率的一大利器
虽然《宣言》中明确地放低了文档的地位(“工作的软件大于详尽的文档”),敏捷强调互动和变化,以及对变化的及时响应。诚然文档恰恰做不到如此灵活。但敏捷真的完全排斥文档吗?
文档的时效性和灵活性远低于口头沟通,但却有它实在的好处。
1.空间上,文档传播范围更广。规范化和常规化的内容形成文档可以大大减少沟通成本。尤其在多个系统协作的情况下,跨 scrum 、跨团队甚至跨部门的沟通时有发生,文档的重要性和便捷性不言而喻。


2.时间上,文档流传性更好。团队不是一成不变的,有人离开有人加入。更新换代中,新人快速了解系统,老兵传承研发理念;在更大的时间跨度上,团队可能成为忒修斯之船,文档的存在就是对产品历程的完整追溯,你将不用他人帮助就可以了解到产品的大部分面貌甚至全貌。


五、大项目怎么引入敏捷?


看起来敏捷方法特别适合产品常规迭代。有一种可能性是,你的产品需要插入一个巨无霸模块,与其说是模块倒不如说它几乎可以成为一个产品了。你想了想,这么大个项目怎么说产品、设计、研发、测试全情投入也得个一两个月。
还能走敏捷吗?
注意你的项目时间。有 deadline 的 scrum 是带着镣铐跳迪斯科,时间节点关乎 sprint 的大小。
大项目敏捷之前,先得不敏捷几步。
可能会发生一到多次需求讨论会。
团队必须不厌其烦地理解需求或修正产品经理“天真的幻想”,产品经理使用不断完善的原型同团队进(tao)行( jia )沟( huan )通( jia )。在最后的产品评审之前,至少敲定产品框架和大部分细节。这次评审邀请项目成员和所有协同团队,除了敲定的产品功能,技术上需要得到一些初步结论(比如“能不能做”。事实上,产品经理应该在产品规划阶段就知会协同团队将要做什么)。接下来进行概要设计(新产品、重构、重大新功能必须进行概要设计)。技术评审邀请除设计以外的项目成员和协同团队参会。
大项目敏捷中:
1.将 deadline 之前的时间分解为多个 sprint 。(deadline 之前必须留出一定“出血时间”用以解决时间预估不足的任务、返工任务以及 bug )
2.将所有需求分解成任务,开一次全局 scrum 会。预估时间之后,分散任务到各个 sprint 中。在时间较紧的情况下,sprint 的容量就要相应增加。

一个需要加班的 sprint


3.进入敏捷流程,常规 scrum 会、站会,燃尽图,故事版。未完成任务在 scrum 会上重新预估时间,滚入新 sprint 内,以此类推(按时完成 sprint 内的任务是目标。实在不行我们还有“出血时间”呢)


4.别忘了文档。


虽然被推崇备至,但敏捷并不是完美的开发方法。敏捷的最大的优势是灵活,而造成敏捷问题的根源也正是灵活。
文末再总结本文重点:


1.敏捷是一种流程、方法、理念,甚至信仰。
2 用了敏捷管理软件不一定就是敏捷。敏捷的初衷是团队成员能够更加紧密地配合完成工作,线上的的流转如果削弱了这种配合性,反倒背离了敏捷的本意。实际上只要有白板纸张和笔,你的团队就能开始敏捷。
4.我们敏捷了,不是不要文档了。在外部交流多、世代跨度长的情况下,文档的必要性显而易见。长期的面对面沟通最终会导致低效,这也是敏捷缺陷的根源。
5.设计师可以完全介入到敏捷流程中,只需要做一些细心的安排。
6.大项目开发中可以走敏捷,具体问题具体分析,需要根据项目特点制定敏捷计划。



更多内容,可以加入IT交流群565763832与大家一起讨论交流
这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地
---------------------

什么是敏捷软件开发?CORNERSTONE敏捷开发用户在此分享下我个人对敏捷开发的一些理解。

1、先来一张导图

2、概念

简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷最大的特色是迭代式开发。

3、优势

  1. 敏捷开发属于增量式开发,对于需求范围不明确,需求变更较多的项目而言,可以很大程度上响应及拥抱变化。
  2. 对于互联网产品而言,市场风向转变很快,需要一种及时快速的交付形式,而敏捷开发则能更好地适用于此。
  3. 敏捷开发可最大程度体现80/20法则的价值,通过增量迭代,每次都优先交付那能产生80%价值效益的20%功能。能最大化单位成本收益。

4、误区

5、特点

6、核心原则

7、敏捷开发与瀑布模型开发

瀑布模型开发

敏捷开发

某博主po的一个很有趣的“敏捷和瀑布”对比例子,给大家作为阅读参考:

7.1、敏捷开发

  • 客人到餐馆来点菜(新项目)
  • 不确定客户想吃什么的时候,通常选好餐厅后会先看看餐厅的菜单(客户往往提不出具体的需求)
  • 根据图文菜单,客人点了十个菜(根据原型和设计稿,基本确定了需求)
  • 后厨开始准备(项目启动)
  • 配菜、炒菜,先上了两盘,让客人尝了尝味道(先提供可用实例给客户用)
  • 客人说还不错,后厨继续准备后面的菜,陆续上菜(不断迭代,不断测试)
  • 上菜过程中,客人突然发现有个菜的味道太淡了,让后厨加了点盐又端上来了(敏捷的好处,可以不断测试和需求变更)
  • 又上了两盘,不够辣,又拿到后厨加了辣(敏捷的坏处,需求没有提前明确,反复迭代,增加了工作量)
  • 到最后两盘时,客人要求换两个菜,还好没炒(迭代的好处,随时接受需求变更)
  • 客人吃完,很满意(基本满足了全部的要求)

7.2、瀑布模型开发

  • 客人到餐馆来点菜(新项目)
  • 不确定客户想吃什么的时候,通常选好餐厅后会先看看餐厅的菜单(客户往往提不出具体的需求)
  • 根据图文菜单,客人点了十个菜(根据原型和设计稿,基本确定了需求)
  • 后厨开始准备(项目启动)
  • 根据客人的下单配菜,炒菜(基本上不会主动去了解完整需求)
  • 半个小时了,菜还没上桌,客人饿极了(项目启动后很长一段时间客户什么都看不到)
  • 再过了二十分钟,十个菜都一起上来了(项目最终一次交付)
  • 客人说,有几个菜挺好的,但是有个菜味道淡了,有两个不够辣,还有两盘重复了想换掉(我是买单的,我要变需求)
  • 这时候大堂经理来了,说,“味道淡了可以加盐,不辣可以加辣,但是换菜不行,已经炒好的那两盘菜也是要算成本的”(瀑布的坏处,需求变更比较麻烦)
  • 于是,后厨只给客户加了盐,加了辣
  • 客人吃完,不是很满意,下次不来了(没有满足需求)

8、总结

但总的来说,在现在管理项目过程中,并没有严格的按照完全的敏捷或者完全的瀑布模式,都是各自掺杂了其他的方式。在实际项目过程中,过于强调模式并没有意义,重要的是能不能预防问题的发生,在问题发生之后能不能用最小的成本解决,模式更多起一个参考作用。

对了,想要了解更多敏捷开发解决方案可前往CORNERSTONE。

责任编辑:
热门阅读排行
© 16货源网