零爱好互动
零爱好互动
9天前 · 2 人阅读
Lean&Agile软件开发

精益思想核心是尊重发挥人都主观能动性和持续改进。价值最大化、优化速度和质量、激励团队。精益和敏捷开发具有相同目标:提高质量和生产力。精益是一个过程,越多改善越乐于去发现仍然存在的那些障碍,根据自己的知识和能力做出自己的价值判断,持续改进软件开发过程。精益不是通过盯在成本上来减少成本,而是全神贯注再提升成本的根本原因-往返时间和质量上,成本降低只不过是副产品。

戴明在上个世纪五十年代提出PDCA思想,后续在丰田生产系统实现精益思想(主要包括六西格玛、价值流-找到瓶颈、学习第一、PDCA循环、改进事件、精益生产、准实时化生产、拉取系统),丰田系统定义的是七种浪费:等待的浪费、搬运的浪费、不良品的浪费、运输的浪费、加工的浪费、库存的浪费、制造过多(早)的浪费、人能力的浪费。


精益软件开发在2003年开始出现,可视化看板(可视化工作流、限制在制品数量、测量和优化流程)在2008年开始流行。精益思想定义的七项精益软件开发原则:消除浪费、学习优先、延迟决定、尽快发布、激励团队、內建质量、放眼全局。精益中的主要概念:价值、价值流、流程、拉取、完美主义。

精益软件开发可以总结为七条原则(做人-艺术、做事-享受、吃苦-财富、吃亏-福气):

尊重人员(团队授权)Empower the Team

工作在一线的员工最了解实际情况,他们知道现在发生了什么,知道当前情况下的最佳应对方法;

他们熟知每天使用的工具、流程、规则,因而完全具备足够的知识提出改进意见;

要充分尊重一线人员的意见;

杜绝浪费Eliminate Waste

消除浪费原则,最初是由大野耐一(丰田生产方式之父)的理念所采用的。按照精益思维,任何不能为客户增加价值的行为即是浪费。包括:不必要的功能和代码软件开发过程的延迟不明确的需求繁文缛节低效的内部沟通。

为消除浪费,首先必须能够识别、认识到浪费。如果某项活动可以被跳过或者没有这些活动也能达成最终的结果,那它就是浪费。在开发过程中最终被废弃的代码是浪费。客户不经常使用的额外处理和特性是浪费。等待其他活动、团队、处理是浪费,缺陷和低品质是浪费,不产生实际价值的、过度的管理也是浪费,以价值链来区分的方法被用来区分识别浪费。

为消除浪费,第二步就是指出浪费的根源并消灭它,“5个为什么”方法可以使用。持续不断的消除浪费直到一些甚至看起来必不可少的过程和步骤被清除。

创建知识(放大学习)Amplify Learning

面对开发团队以及最终产品大小的额外挑战,软件开发是个持续学习的过程。使用短周期迭代(每个迭代都应包括重构和集成测试)可以加速学习过程。

用户需求收集过程可以简单地通过给最终客户演示,并听取他们的反馈。在决定当前阶段的开发内容并对未来改善的努力方向进行调整时,在客户帮助下通过简短的反馈会议来增强反馈 - 客户代表和开发团队会更多地发现在进一步开发时会遇到的主要问题及可能的解决方案。

基于已开发出的原型,客户可以更好地理解自己的需求,开发者也能了解到如何才能更好地满足客户的需求。另一个关于和客户沟通、学习的想法是“基于组的开发”,这种方法聚焦于未来解决方案的约束限定而不是各种可能的解决方案,因此通过和客户的对话加速了解决方案的产生。

延迟决策(尽量延迟决定)Decide as Late as Possible

软件开发通常具有不确定性,基于多种选择的方法能够达成更好的结果,尽可能地延迟决定,直到能够基于事实而不是不确定的假定和预测来做出决定。

系统越复杂,这个系统容纳变化的能力就应该越强,使其能够具备推迟重要及关键决定的能力。

嵌入质量Build Quality/Integrity In

质量是在过程中产生的;过程中保证质量能大量减少浪费,质量是过程的一部分;

在代码完成后马上进行测试可以避免缺陷的累积。不是去做成更多的文档或详细设计,而是对各种各样的想法进行实际的编码尝试。

如果在研发流程的每一个阶段,都能保证产出物的质量,最终产品的质量就能以最低的代价实现;

快速交付Deliver as Fast as Possible

快速交付的好处不仅仅是开发团队快速有成就感,早日看到进行系统集成,尽早发现问题;还能够使客户更早地使用产品获取产品价值,使产品更快地投入市场;

整体优化See the whole

局部的优化,若不能带来整体的改善,将是没有价值的,必须使用系统思维方法

构造一个完整的产品,梳理端到端价值流,不断往前发展

精益软件开发基本原则是追求浪费最小化。并非所有的系统冗余都是浪费,不尝试失败就没有成功,不创造各种可能性就难以获得现实性。软件开发过程中的浪费包括:等待(客户等待,或团队内等待,推迟问题暴露和解决时间)、任务切换(不停被打扰,同一段时间两个任务比较合适)、软件缺陷(从头到尾都是浪费,花在其他任务上)、移交(经手人越多,交接内容越多,越浪费)、半成品工作(未编码的需求、不测试的代码、未修复的错误)、从未被使用的功能(二八原则同样试用)、没充分发挥人的创造力(分配任务)。


怎样开始精益软件开发方法呢?有些轻量级快速工具:查看浪费、减少浪费、反馈、迭代、同步、集合开发、多种选择、最后决定时刻、做决定、拉取系统、队列理论、延迟成本、自己做决定、激励。 这里重点说明下VSM和Kanban工具。

价值流程图(VSM-ValueStreamMapping),学会减少浪费的基本方法论。价值流程图的目的是为了辨识和减少生产过程中的浪费。浪费在这里被定义为不能够为终端产品提供增值的任何活动。据统计,企业用于增值的活动占企业生产和经营活动的5%,而不增值的部分占到95%。不增值的部分又分为不增值但是必须的和不增值也不必须(就是浪费),所以要辨识浪费,去除浪费就是使用VSM的主要目的。VSM描述两个状态:“当前状态” 和 “未来状态”,需要进行对比分析,在差距中逐步提高。

具体做法:减少管理过程中的活动,比如不需要的跟踪系统,通过创建一个最小化平滑的流动工作流最小化跟踪;重新思考授权系统,让“审批”不必要;大脑重新吸收查看浪费,问自己“为什么我真的需要这些?”;映射你的价值流以识别无效。

看板:拉式工具。帮助人们划出他们需要做的事情,工作是自我控制的;只要引入一个小疏忽或变量,复杂的线性结构就会被考虑取消;是一个允许工作中的决定按实时而不是提前进行的一个准实时的方法。


参考材料

精益软件开发:https://baike.baidu.com/item/精益软件开发/10975919

Devops工具链 - http://www.devopsbookmarks.com/

精益工具之VSM:http://blog.sina.com.cn/s/blog_5f6abfb70102wh9o.htm

Watts S. Humphrey:软件质量之父 - http://blog.sina.com.cn/s/blog_8ef144470101bzov.html

收藏 0
浪费 精益 软件开发 价值 过程 客户
评论 ( 0 )