几年前还有人在探讨是不是要“敏捷”,而现在大家要探讨的却是如何更敏捷的话题,因为没有敏捷的软件开发已经完全不适应现在易变且复杂的市场环境了。
那什么是敏捷开发,敏捷开发有哪些内容呢?本篇内容给大家概括性的介绍一下。
对敏捷开发的理解有狭义与广义之分。
狭义理解,敏捷开发是一种迭代增量的开发方法,主要框架方法有极限编程、Scrum、特性驱动开发、水晶方法族等,也有人认为敏捷开发就是Scrum方法,敏捷开发与精益开发区分的比较明确。
广义理解,敏捷开发包含上边狭义理解的部分、精益开发以及DevOps。因为这三者都鼓励持续改进,为了应对市场的需求变化,它们都在不断的改进,把适合现在软件开发所有好的内容不断的吸收到自己的范围中来,促使这三者的边界越来越模糊。所以大家会经常将精益、敏捷、DevOps一起使用或混着使用。
我们站在广义理解的角度,将敏捷开发体系分为道、法、术、器四层内容(如下图所示)。
(一)“道”是指“敏捷宣言”即敏捷的核心价值观。敏捷宣言一共6句话:
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人,由此我们建立了如下价值观:
1)个体和互动高于流程和工具
2)工作的软件高于详尽的文档
3)客户合作高于合同谈判
4)响应变化高于遵循计划
也就是说,尽管右项有其价值,但我们更重视左项的价值。
(二)“法”是敏捷开发的十二项原则。
1-我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意;
2-即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势;
3-经常性的交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好;
4-在整个项目期间,业务人员和开发人员必须天天都在一起工作;
5-要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务;
6-无论是团队内还是团队间,最有效的沟通方法是面对面的交谈;
7-可用的软件是衡量进度的主要指标;
8-敏捷过程提倡可持续的开发,项目方,开发人员和用户应该能够保持恒久稳定的进展速度;
9-对技术的精益求精以及对设计的不断完善将提升敏捷性;
10-要做到简洁,尽可能减少不必要的工作,这是一门艺术;
11-最佳的架构,需求和设计出自于自组织的团队;
12-团队要定期反省如何能够做到更有效,并相应调整团队的行为。
(三)“术”是敏捷开发的框架方法(例如:极限编程(XP)、Scrum、精益看板、水晶方法族、特性驱动开发、还有基于Scrum扩展的规模化敏捷SAFe、LeSS等)。
(四)“器”是敏捷开发的实践方法与工具(“实践方法”例如:用户故事、故事点估算、测试驱动开发、单元测试、持续集成、持续部署、重构等,“工具”例如DevOps工具链中提到的工具、例如白板、jira等),这些实践方法与工具可以在框架方法中被组合应用。
运用敏捷贵在掌握敏捷核心思想和它的12项原则。工作中是否用到了敏捷、是否在敏捷地工作,只要跟这12项原则对照一下,就可以区别出来。现在敏捷的知识铺天盖地,刚接触的朋友可能会有些发蒙,不知从何下手。
其实,敏捷的内容离不开道、法、术、器四层。学习和应用的时候还是要分清楚,属于哪一层,不能盲目地学习和生搬硬套。如果大家对敏捷核心理解到位,完全可以因地制宜地裁剪敏捷开发的方法。另外,敏捷贵在持续改进,没有最敏捷只有更敏捷。