精益软件研发实践
2017-07-20陆震
陆震
【摘要】精益管理源于制造企业丰田公司的实践,帮助丰田公司度过危机并成长为全球最大汽车制造企业。近年来在软件研发行业也出现了不少学习精益的实践,其中有不少实践也取得了良好效果,本文结合自己公司的精益研发实践总结了一些经验。
【关键词】精益管理;持续集成;自动化测试;看板
1.精益管理
1.1 精益管理的内容
精益管理起源于丰田公司,精益思想打破了自工业革命起关于“批量生产”带来企业效率的信条,围绕整个价值链的“客户价值”,“拉动”,“流动生产”并不断“改善”,不断消除各种浪费,采用了自动化,看板生产方式,多品种小批量生产,多技能工,改善,客户价值和做事,以人性为中心等方法,取得了空前的成功。
1.2 精益管理在软件研发中的实践
精益管理在很多制造型企业中都取得了巨大成功,但是否可以也用于软件研发的企业中?软件生产被看作是一种知识型的工作,不少人认为知识型工作过程很难标准化,并不适合采用精益管理。
从上世纪90年代开始,以敏捷为代表的轻量型方法论开始进入软件研发领域,精益思想随后不久也进入了软件研发领域。敏捷和精益思想逐步在软件研发行业被逐步接受,参考精益制造的概念,精益软件开发可以总结有7个原则:消除浪费,内建质量,增强学习,推迟决策,快速交付,尊重一线人员,整体优化。
2.精益软件开发的实践
信息技术正逐步成为很多公司经营的重要支撑,客户业务创新和发展需要软件系统可以更灵活、高效、高质量、低成本的交付。为适应这种市场需求的变化,我所在的公司也开始引入精益开发的思想,对软件研发过程进行优化。
考虑企业具体情况,我们制定了顶层设计,痛点驱动,教练引导,自主实践,试点先行,固化流程,量化结果,持续改进的策略。精益导入可以需要有一些基础准备工作,例如任务流程系统,统一的配置管理库,自动化工具,人员的培训等等,可以基于自己组织和团队情况复用现有的基础设施和实践,结合精益思想进行持续优化。对部分实践活动做一些总结,重点介绍下持续集成,测试变革和看板方法的实践。
2.1 持续集成
集成是要把整个开发的努力都整合到一起来,随着软件规模不断扩大,软件复杂度的提升,在团队开发过程中的大部分时间里面,软件可能都处于一种不可用的状态,等到了项目后期再去做集成时候,往往会发现很多问题,这种集成活动可能会持续很长时间,给项目带来不可控制的风险。持续集成意味持续不断的去集成产品,每当有人提交了代码,产品状态发生微小变化,就会自动触发自动化的集成,集成过程中一旦发现构建失败或测试失败,就立刻停下来先修复问题,时刻保持软件处于一种可用状态。
持续集成可以分阶段进行建设,开始建设阶段可以仅仅包括代码自动获取,编译,代码静态检查一些简单任务,等持续集成平台建设完成后,可以进一步扩展重复代码检查、业务规范检查、安全性检查、复杂度检查、单元测试、数据库更新、版本制作、自动化测试等内容。我们还利用这个平台,为不同团队制定了代码改进目标,通过定期更改持续集成的告警阈值,促使研发团队不断去降低圈复杂度。
2.2 自动化测试和提早测试
在软件研发行业,让开发赶工是常见的现象,看似加快了速度,但往往返工率也会非常高,如果出现了严重故障,还会带来索赔和品牌等其他方面的风险。通过下游测试环节去检验上游设计开发环节的方法被认为是一种低效的方法,通过内建质量的精益思想,越早发现故障,修复的成本越低。
我们也从两方面做了改进:自动化和提早。通过自动化测试平台把回归测试用例自动化,通过持续集成的平台把单元测试自动化,提升测试及时性和效率。提早测试有两个方面的措施,一方面是让开发人员提早测试,通过采用TDD(测试驱动开发)模式,先写单元测试用例,再开发代码,另外一方面是测试提早介入,让测试人员在需求分析和设计阶段就启动测试过程,提早编写集成测试用例和端到端的测试用例,提早准备自动化测试用例,并用于指导开发的内部测试过程。
在对业务侧代码进行单元测试时,存在两种不同的思路,一種是传统意义的单元测试,需要大量mock将外围依赖因素隔离,一种是按真实业务场景进行组件级的测试。前者运行速度较快,可移植性强,但是面临业务代码快速变化时可能用例维护成本高;后者运行速度较慢,但是稳定性较高。计算密集型的产品可以考虑采用前一种方法,业务密集性或业务复杂的模块可以考虑采用后一种方法,两种方法都有其适用的适用场景。
2.3 看板方法
看板方法是来源于精益思想,致力于形成自主拉动,让价值顺畅流动起来。看板方法遵循的六个原则(可视化,限制在制品,管理流动,规则显式化,建立反馈,协同改进、实验进化),将团队工作流程和当前工作状态可视化,让整个团队一起聚焦于优先级最高的事务上;限制在制品以达到让这些高优先级事务尽快完成的目的;团队共同讨论每个环节的完成标准并达成了共识,在看板上明确列出来;通过每日站会及时暴露并让整个团队聚焦于解决问题。看板成为暴露风险和团队共同决策的工具。
实践过程中,有团队也使用电子看板进行管理,从实际效果看,普通白板或墙面改造成的实物看板具有更好的效果,另外看板形式可以多种多样,每个团队都可以根据自己团队任务情况设计不同的看板布局,任务流程,设计自己任务卡,制定完成定义,制定团队公约,人员标签,异常处理方式等内容,通过看板也让每个团队形成一种自我管理的模式,增强团队自我驱动力。看板配合敏捷一些实践的方式,例如每日站会,故事点游戏,燃尽图等手段,把开发过程变得更加透明、高效和有趣,对研发效率提升起到了积极的效果。
3.总结
精益软件研发推进过程中,对于部分项目也遇到了一些问题,但随着过程推移,大部分项目都发生了积极的变化,精益实践的活动激活了团队和个人,故障泄露率有了明显下降,交付周期也有了明显改善。精益思想正慢慢在我们企业的软件研发过程中得到广泛的应用和认可,并为企业提效工作带来了明显的收益。
参考文献:
[1]Mary Poppendieck、Tom Poppendieck,2011:《精益软件开发管理之道》,机械工业出版社
[2]希布斯(Hibbs,C.)、(美)朱(Jewett,J.)、(美)沙利文(Sullivan,M.),2009:《精益软件开发艺术》,电子工业出版社
[3]David J.Anderson,2014:《看板方法:科技企业渐进变革成功之道》,华中科技大学出版社
[4]百度百科,http://baike.baidu.com/