精益思想和精益软件开发_第1页
精益思想和精益软件开发_第2页
精益思想和精益软件开发_第3页
精益思想和精益软件开发_第4页
精益思想和精益软件开发_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内容摘要:有关精益概念的历史根源可以追溯到20世纪50年代发展起来的精益制造和丰田生产系统。这个系统和它蕴含的思想,为日本制造业,尤其是丰田公司,赢得了广泛的信誉。在任一款基于精益制造和丰田生产系统的工作方法中,精益已经开始作为一个涵盖性的术语在使用了,包括精益建造,精益实验室。精益原则正被成功应用到产品设计、工程、供应链管理等领域中,现在也被应用到软件开发领域中了。在这个背景下,本文中将介绍精益思想和精益软件开发,在最后的部分还将探讨精益软件开发和敏捷软件开发的异同c关键词:精益思想精益软件开发敏捷软件开发引言精益生产源于日本丰田管理方式(ToyotaProductionSystem,TSP

2、),20世纪90年代,MIT的JamesWomackDanielJones和DanielRoos研究考察了丰田生产系统,提出“精益(Lean)”这个术语。它的核心思想是消除浪费,持续改善。它融合了单件生产方式及大规模生产方式各自的优点,并同时避免了前者高成本的不足及后者低柔性的缺点1。丰田公司凭借着这种独特的管理方式取得骄人的业绩。2007年,丰田的产量已超过通用,成为全球第一大汽车制造商,在全球170多个国家的年汽车销售量超过937万辆;2007年度,丰田的利润约合150亿美元,而通用福特的利润均为负值。精益生产是一种被实践证明了的科学的管理理念,并逐渐被越来越多的企业学习和借鉴20在过去的

3、几十年中,计算机已被用于商业用途。起初,计算机运行速度慢,结构也简单。但是,从其面世以来,计算机的运算能力及其结构的复杂度不断增加。计算机越强大,就能运行更加复杂的程序,因此随着计算机的每一个方面的改善,软件工程师需要以最佳成本效益和最有效的方式解决更大和更复杂的问题。而软件工程师通过借鉴过去和创新的编程经验应对了这一挑战3。我们可以把软件工程看作是开发软件的工程方法,我们可以把企业生产中的工程方法或者思想借鉴到软件工程中,软件行业是一个新兴的快速发展的行业,他与传统行业存在很多不同的思维方式,但是存在更多的共同点,很多在软件行业中的做法借鉴了传统行业,并且在软件行业中收效很大。比如软件设计的

4、经典著作设计模式则借鉴了建筑领域的著作建筑模式.软件行业学习制造业的精益思想也是理所当然.数十年来,精益方法已经在制造业取得了显著的成果,现在,精益方法正同样地被成功应用到供应链、产品设计、工程,甚至是软件开发中!与此同时,敏捷软件开发方法也表明,它们之中的核心实践,那些和精益软件开发所推荐的非常类似的部分,具有很大的价值。精益原则与分析精益(Lean)是消除浪费,持续改善。大野耐说过丰田生产系统是一个绝对消除浪费的系统。新乡重夫,指出了以下7中浪费;(1)缺陷和返工,这是一种最显而易见的浪费,传统处理的思维方式是“找到然后修复”。(2)过度生产,即生产超出了实际所需的产品;或在实际所需之前就

5、产生出了产品,通常通过物料的库存就可以看出这种浪费;(3)运输浪费,在作业过程中零部件不必要的移动;(4)库存,各种在制品未被处理完毕的成品等各种物料;(5)移动,为了完成生产,人或设备做出的多余的移动或者传送;(6)过度作业,超出客户所要求的标准;(7)等待,人或零部件在等待下一个生产工序;还存在第八种浪费,没有充分使用人力资源,没有充分发挥工人的创造力和资源的作用,分忧发挥出组织的智慧。丰田在对待这几个浪费,通过精益原则分析,采用及时处理,自动化(Jidoka),看板(Kanban)生产方式,多品种小批量生产,多技能工,改善(Kaizen),现场管理(GoandSee),客户价值和做事,以

6、人性为中心,强调智慧方法,得到了很好的效果。精益原则包括有价值(Value),价值流(Valuestream),流动(Flow),拉(Pull),尽善尽美(Perfection)。价值是客户定义的,必须有客户的视角看待。从价值视角分析一切活动,没有增加价值的纯粹浪费;没有增加价值但是必须;增加价值。实现精益生产管理,最基本的一条就是消灭浪费,而在企业的生产经营活动中,要消灭浪费,就必须判别企业生产中的两个基本构成:增值和非增值活动。统计研究发现,企业生产活动中,增值活动约占企业生产和经营活动的5%。必要但非增值活动约占60%,其余35%为浪费4。价值流就是将一种产品从原材料状态加工成客户可以接

7、受的产成品的一整套操作过程,包括增值和非增值活动。价值流管理就是通过绘制价值流图,进行价值流图分析来发现并消灭浪费、降低成本,赢取最高的边际利润。把一个作业过程分解为独立步骤构成的视图,标识出哪些步骤增加了价值,标识出哪些步骤没有增加价值=>浪费;没有增加价值但是必须(就当前系统状况而言);纯粹的浪费,立刻把它消除。生产过程必须设计为持续流动的,如果价值链(因为任何原因),停止流动了,浪费就会产生。通过客户订单拉动(pull)生产(价值),通过价值流向后级联(cascadeback),确保没有任何东西在被实际需要之前就制造出来,消除了过程中的大部分库存。持续的识别和消除浪费,追求达成完美

8、境界。精益软件开发2003年Mary和TomPoppendieck第一次透彻地把精益原则映射到软件开发中。2006年,他们进一步完善了这种映射6。2009年O'Reilly对精益软件开发艺术进行了生动的阐述7。精益管理的思想起源于丰田公司,归纳起来精益思想是在创造价值的目标下,通过改良流程不断地消除浪费。现已被广泛用于生产制造管理,但用于IT软件项目产品开发的实践尚属凤毛麟角。精益,是一种思想,一种哲学,一个方法论,其精髓是拒绝浪费。我们IT项目开发学习的不是“精益生产”的形式,而是其精髓思想。这种思想,不仅可以用于生产,也可以渗透到IT项目开发中。在研究会上,我们讨论到一个借鉴了精益

9、思想的IT项目开发是一个系统的观念。一般来说,IT软件开发项目精益开发系统包括三个要素,即人、流程和技术。以借鉴到IT软件项目精益开发来说,就是需要为IT项目的开发提出一系列的流程,培养技术队伍,运用最有效的技术和工具。同时,必须注意要把这三个方面整合在一起,成为一个协调发展的系统。例如在人的方面,精益思想强调如何将每个员工的能力发挥到极限,认为不应该只是简单的管理人,而应该去培训人。如果不能将管理的重点放在员工的培养上,就不能理解精益生产的真理。同时,精益生产的另一个精髓是管理过程,精益思想不是着眼于结果,而是强调过程。“只对结果管理”的管理思路的结果是员工对找借口、为结果辩护很在行,对数据

10、、报告很在行,但软件项目成果的质量只有在全过程都有效控制下才能得到根本的保证。和精益制造原则的概念相近,精益开发也可以总结为如下七条原则:精益软件开发七项原则:消除浪费;内建质量;创建知识;推迟决策;快速交付;对人尊重;整体优化。软件开发中的7种致命浪费对象对应前面提到的制造业中7浪费现象:缺陷导致昂贵的返工,传统开发中侧重在缺陷发生后找出缺陷。早后期修复发现缺陷是特别昂贵的。而精益软件开发聚焦于预防缺陷。在发现一个缺陷时的反应是找到缺陷的根源,确保缺陷先不再发生。通过自动化测试和创建新的测试来监测这个缺陷。过度生产对应的是额外的特征。简而言之,就是每行代码都是要花钱的。为了解决这个问题,在精

11、益实践中,要对需求优先级进行排序,以短迭代周期进行开发,避免不必要的复杂性,重用已有软件,使用编码规范和最佳实践,采用涌现式设计重构和设计模式。运输对应着传递,典型的瀑布过程,期间充满了传递活动。大量的知识在每次传递过程中丢失了。因为不可能以书面形式记录下包括教训,新发现,新创建的,已知的知识等等每样东西,大量的隐性知识没有被传递下去。所以我们要尽可能的避免传递。等待对应延迟,软件开发项目中几乎是在不断做出决定。开发人员是不可能知道一切的,势必需要去问其他同事客户和其他与项目相关的人。如果这些人可以随时在身旁,那么就不会有任何延迟,卡发也就会继续全速前进。但如果问题不能得到立即回答,该阶段就会

12、存在各种浪费的结果。最有成效的安排是,设置包含所有团队成员的“集成式产品团队”,其中包括客户(或者客户代表)在内。库存对应的是半成品工作,半成品工作是一切已经开始但尚未完成的东西。还未编码实现的需求(特征),或者是还没有进行测试文档化和部署的代码,或者是还没有修复的错误。精益方法,使用单件流,是某项功能特征尽快地流到部署阶段。不让半成品工作在队列中堆积起来。一项功能特征只有在可进行部署做了完整的文档记录经过测试和没有错误时才可以说是完成了。移动对应着任务切换。任务切换和中断扼杀了生产力。让大脑专注于手头的任务,了解需要关注的各种要素并开始解决问题,是比较耗费时间的。中断会导致重新启动这一进程。

13、任务切换(更长的中断),则不得不要求在开始再次产出前,“重新学习”回忆之前已经进行到了哪里。在精益开发中,使用单件流,在某项功能特征或任务上持续工作直至完成没有任务切换的浪费。过度作业对应不必要的流程。不必要的流程是纯粹的浪费,他们降低了生产效率,没有增加任何价值。不必要的流程包括没有达成任何产出的过程;编写没有任何人会读的文档;可以自动化但却以手工进行的任务;原本可以很简单但是现在却弄得很复杂的过程。内建质量。大野耐有关于制造方法的一个关键见解,不能在生存线的最后工序才检测产品的质量过程中的每一个工序应该能够进行错误验证和自检。当发现问题时,整个生产线要停止下来,直到发现和纠正问题的根源,这

14、样它就不黑再次发生了。而传统软件开发,遵循了与传统的美国汽车构造同样的模式:让缺陷一路溜滑到最后,由QA来检测捕获。精益的方法,在编写实现功能特征的代码时,就编写能够验证错误的测试。这些测试能过防止因引入未经检测的缺陷而造成的后续修改。创建知识。不要忘记已经学到的经验教训。再次犯同样的错误或再次去学习一个东西是怎么运作俄,是很浪费时间和精力的。找到记录团队知识的办法,当下次需要它时,能过轻松地找到它通常说来,在离知识源头最近的地方存储相应部分的知识,是最好的做法。发挥最佳的判断能力,并尝试保持良好的平衡。推迟决策。只有拥有大部分可用的信息时,才能做出最好的决定。如果不必立刻做出一个特别的决定,

15、那就等具备更多的知识和信息以后再做。但也不能等太久,暂时不做决定不应该阻碍吸纳古墓其他方面的进展。精益方法基于集合的设计,同时探寻多个解决方案,最终选择最好的那个,确保最大的成功,这看起来很浪费。但事实上,如果做出了错误的选择,可能大大减低成功的成都,造成丧失机会的严重浪费。软件工程是一项抽象的活动,在瀑布方法中,要等到项目结束时,客户才能使用软件,之后才收到他们的反馈意见。快速交付。以较短的迭代,以小批量的方式开发功能特征,并快速交付给客户。在相关联需求能过调整前,这些功能特征就被实现并交付客户了。客户有机会在使用这些功能特征后,提供反馈意见,并在其他需求实现前就能进行调整变更。每个短迭代完

16、成时,都提供了一个机会,可以基于真实的反馈和使用,对需求进行调整和重新排定优先级。最终的成果是,获得一个更贴近客户实际需求的产品。同时还消除了大量的浪费和因需求遗漏造成的返工。对人尊重。“积极投身其中,并思考着的人,提供最可持续的竞争优势。”信任员工知道如何以最好方式来完成自己的工作。让他们投身于解决当前过程中暴露出来的不足鼓励他们设法改善工作和周围的过程。肯定他们的取得的成绩并积极征询他们的意见。不要浪费最宝贵的资源,团队成员的智慧。全局优化。在对一个本地的局部过程做优化时,几乎总是会以整个价值流为代价的。一般情况下,当尝试优化过程时,应该试图包含尽可能多的价值流。局部优化若不能带来整体的改

17、善是没有价值的。精益和敏捷软件开发精益和敏捷软件开发的共同之处,目标都是要提高客户所感知到的软件质量,以及软件开发过程中的生产力。都肯定和欢迎贯穿项目过程中几乎一定会发生的需求变更。都交付满足客户真正需求而不是初期认为的客户需求的软件作为最高价值。敏捷软件开发主要的聚焦点是和客户密切协作网,尽早地迅速交付可用的软件。精益方法看待这些都是有意义的,但主要聚集点是在对客户有价值的上下文环境下消除浪费。敏捷软件开发的关注重点稍窄些。主要是围绕软件开发的具体实践和项目管理,一般不太关心在其中软件开发的商业上下文环境。精益软件开发采用比较宽泛的视角,偏好一体看待软件开发和它的整个业务环境。精益原则可以适用到任意范围,在精益生产中,甚至跨出自己公司的边界把供应商纳入精益过程改善的范围之中,也是很普遍的。敏捷开发有相当一批正规的方法学,而精益开发原则没有正规的方法学。在实施精益软件开发时,通常一个选择便是选择一个轻量型的敏捷方法作为起点,并从那里开始应用其他精益工具(如价值流图)。精益软件开发把各种敏捷软件开发视为有效支持实践。参考文献1 JamesWomacKDanielJones,DanielRoos.精益思想M.北京:商务印书馆,2005.2 齐二石,张洪亮.企业精益文化建设J.科学学与科学技术管理,2008(12):133-136

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论