Agile敏捷开发与MVP(Agile Software Development And MVP)

Posted 艾博唯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Agile敏捷开发与MVP(Agile Software Development And MVP)相关的知识,希望对你有一定的参考价值。

项目管理需要更灵活、更积极地,响应客户的需求。为了加快项目的步伐,敏捷管理的思想和各种方法被提出,比如Scrum、精益、极限等方法。那么,敏捷项目管理的核心是什么?区别于其他项目管理方法,比如瀑布式(Water-Fall)管理方法,关键点在哪里?下面,我们一起来分析一下吧。
2019年,我们在周一沟通中,曾经讨论过MVP:最小可行产品(Minimum Viable Product,简称MVP)是一种避免开发出客户并不真正需要的产品的开发策略。MVP必须向用户提供价值,换句话说,也就是验证问题是否真的存在,解决方案是否真的带来了改善。MVP不是一个粗糙的demo,也不是漂亮的原型,它必须直面问题给一个基本可用的解答,就像下面图片汽车产品项目路径的描述。

2019年,针对项目管理,公司聘请专家培训,针对我们公司形成了一套的管理模型。 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

敏捷宣言( Manifesto for Agile Software Development): http://agilemanifesto.org/
四大核心价值

个体和互高于流程和工具(Individuals and interactions over processes and tools)

工作软件高于详尽的文档(Working software over comprehensive documentation)

客户合作高于合同谈判(Customer collaboration over contract negotiation)

响应变化高于遵循计划(Responding to change over following a plan)

敏捷开发十二原则(Twelve Principles of Agile Software)

  • 最重要的是通过尽早和不断交付有价值的软件满足客户需要。

  • 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。

  • 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。

  • 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。

  • 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。

  • 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。

  • 可以工作的软件是进度的主要度量标准。

  • 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。

  • 对卓越技术与良好设计的不断追求将有助于提高敏捷性。

  • 简单——尽可能减少工作量的艺术至关重要。

  • 最好的架构、需求和设计都源自自我组织的团队。

  • 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。


特别针对敏捷开发SCRUM(这是一种迭代式增量软件开发过程)做了讲解,我们知道了很多概念,比如:

1、Product Backlog源自于Scrum方法,是指产品待办事项的集合,其中事务有优先级判断,先处理优先级高的事项。

2、Use Case(用例图)、User Story(用户故事)和Task(任务)说明要开发的软件完成什么事情,促进相关者的交流和合作。

3、Sprint:一个时间周期(通常在2周到1个月之间),开发团队会在此期间内完成所承诺的一组开发项(Product Backlog)。

现在,应用软件团队同时有5个项目(MF、AIOT、JS、GZ、Odoo等)在执行。项目包括公司内部的,还有公司外部的,按照重要和紧急程度做了排序进行。2020年,针对关键项目,我们和客户在一起沟通项目需求以及敏捷管理。客户也对敏捷管理和非敏捷管理区别,提出疑问。
通过沟通,大家提问回答,记录如下:

1、最快的方法是一次性将需求搞清楚,最快的实现,那么为什么要强调迭代?

    回答:在实际工作中,往往很多需求是不清楚的,或者,以为清楚,在实现的时候发现逻辑问题,此时等待问题全部解决后再开发,还是先开发确认的需求,就是一种选择。

2、一个任务来了,我们都要分解任务,比如从功能出发,分解任务模块,敏捷开发的不同是什么?

  回答:一般非敏捷开发,是按照功能划分的,而敏捷是通过类似与MVP的方法来画分的开发项(Product Backlog)的。

3、有的项目提的需求很多,或很详细,是否一定会做到更加敏捷?

    回答:一些项目虽然需求很详细,但是,很有可能这个需求,并没有在用户哪里得到实际的价值验证。如果开发出来,最终客户发现不是自己所要的,那么,这样的开发可能会推倒重来,反而是问题了。

4、项目开发的时候,有的开发人员不能很好理解整个User Story,怎么办?

  回答:在敏捷开发中,Scrum Master必须有能力画分开发项(Product Backlog)并描述User Story,然后将User Story通过Use Case等方式描述Task和Sub-Task,让开发人员从Task入手理解Story会更好。

5、Scrum、极限、精益(Lean)开发模式的区别?

回答:

Scrum是一种敏捷方法,着眼于有价值,通过迭代,规避风险,实现有用的产品;

精益是和敏捷对于的另外一种制造和开发方法,着眼于JIT(Just in time),旨在需要的时候,按需要的量,生产所需的产品;

极限(ExtremeProgramming)是一种敏捷方法,比Scrum的管理粒度更细,迭代速度更快,开发团队中包含客户,每个开发人员都可以参与任何开发等。

最后,让我们归纳总结一下:

1、敏捷开发表现是灵活和快速,其核心是规避风险,通过抓住真正有价值的需求,通过迭代不断获取反馈和改进,来规避可能的风险;

2、敏捷开发区别与其他方法的表现是类似与PDCA(Plan-Do-Check-Act)迭代,关键点是找到类似MVP式的User Story,快速为客户呈现软件价值,并验证需求的有效性,规避识别的风险;

3、敏捷开发的基础是开放和自学习的团队,以及项目平台的搭建、共享和不断创新,还需要深入行业,学习一些相关的专业,真正了解客户的需求。

综上所述,敏捷开发的关键在于讲述类似MVP产品方案的User Story。







以上是关于Agile敏捷开发与MVP(Agile Software Development And MVP)的主要内容,如果未能解决你的问题,请参考以下文章

敏捷软件开发(Agile Software Development)的上位史

敏捷开发学习笔记-Agile development(AM)

Agile Development ----敏捷开发

转载Agile Development 敏捷软件开发介绍

编程心法 之 Scrum - Agile 敏捷开发

敏捷开发(Agile)在硬件中的应用