《精益软件开发》专题报告

精益软件开发

软件开发行业的变革步伐仍然很快,人们继续推动已知技术和实践的界限,尽可能高效地开发软件。在生活中各个方面,尤其是在产品的生产过程中,避免不了出现时间的浪费、人力资源的浪费。而如何在尽可能短的时间内,利用有效的成本,为顾客创造最大价值呢?问题的答案就是精益思想。
一、精益软件开发的背景
每个软件开发组织都在使用一个过程开发其产品。 在大多数情况下,该过程适合每个组织的规模、资源和需求,但核心特征是基于一个(或多个)“标准”开发方法。 然而,统计数据表明,大量软件项目在功能、成本或交付时间表方面不符合它们的期望。 这主要是由于传统开发过程的“刚性”,以及它们无法有效地应对当今软件行业的各种挑战。 因此,越来越多的公司正在寻找更好的替代方案,以提高软件质量,降低开发成本,满足市场需求和客户满意度。
精益软件开发替代了文件驱动的、严格的传统开发方法。精益思想(Learn Thinking)起源于丰田公司以“低成本、零缺陷、高质量和人性化生产”为特色的丰田生产系统,是制造行业中的一种新思维,并且被传播和应用到各个行业。在过去的几年里,精益开发在软件行业中流行起来。 它之所以受欢迎,是因为它在识别和消除浪费方面的有效性,以及快速响应不断变化的客户和市场需求。
二、精益软件开发的发展
精益的历史始于精益生产。为了能够认识和理解精益生产的性质或意义,首先必须理解精益的概念。
人们认为精益最初是在日本引进的——主要是在丰田生产系统中。但历史也表明亨利·福特在1920年一直在应用精益的部分。“在保持福特产品低价方面最值得注意的成就之一是生产周期的逐步缩短。一件物品在制造过程中的时间越长,移动得越多,其最终成本就越大。”在19世纪末以来,精益生产的概念始于大规模生产系统的需要。弗雷德里克· 温斯洛· 泰勒(Frederick Winslow Taylor)在他的著作《科学管理的原则》中第一次提到了被称为批量生产的高生产系统。第二次世界大战后,一位来自丰田的工程师,名叫EijiToyoda,参观了福特工厂。 他注意到每件事都运作顺利,但实质上有在生产过程中到处都有浪费。随后,丰田汽车的生产经理承认,福特生产系统不适用于日本,他们开始改善福特的生产系统,以使其适用。后来,丰田开发了这个过程,现在被称为丰田生产系统。太一·奥诺解释了这个概念:“我们所做的就是从客户给我们一个订单的那一刻起就看着时间线,直到我们收集现金的那一刻。我们正在通过消除非增值浪费来缩短时间表。”太一奥诺花了近30年的时间才使它成为丰田的完美产品,并使它成为今天的样子。
精益生产系统在詹姆斯·沃马克、丹尼尔·琼斯和丹尼尔·罗斯的《改变世界的机器》一书中也有主要描述。在这本书中,作者提到精益生产系统,相比之下,结合了工艺和批量生产的优势。 在目前, 它也避免了高成本和刚性的生产计划,因此,它被称为“精益”(因为它使用的东西更少)。如果将它与大规模生产或大规模生产相比较,那么它将使用一半的人力、一半的制造空间、一半的投资工具和一半的工程时间。因此,它为产品提供了较少的缺陷,并生产各种产品,因为它在产品线的基础上工作。
精益软件开发主要来源于Mary和TomPoppendieck的《精益软件开发:软件开发经理敏捷工具包》一书。 这本书介绍了精益生产系统与一个新的外观软件开发与改进形式的精益原则,包括一套工具。
精益思想有五个原则,也可以视为五个步骤:价值、价值流、流动、拉动、尽善尽美。价值就是明确客户的要求,即客户希望我们能提供的价值。价值流就是识别出对于产品生产过程中的活动哪些是有益的,哪些是浪费的。流动是指消除这些浪费 ,然后剩下有价值的活动。拉动则是价值流应由用户实际需求拉动。最后是尽善尽美,顾名思义,就是要去不断的进行改进,发现和消除更多的浪费。这五个过程环环相扣,循环往复,最终达到一层层的找出浪费并消除浪费的目的。
三、精益软件开发理论
3.1精益理论
“精益开发意味着消除所有不必要的东西。”
顾名思义,它的目的是消除软件工程中所有不必要的东西。软件行业的一个值得商榷的问题是精益软件开发是否属于敏捷开发过程。它的原则在很大程度上与敏捷开发的原则共鸣。有些甚至认为这两种方法是密不可分的。在丰田生产系统(TPS)的启发下,精益在发展战略方面更趋于融合。根据Tomaszewski等人的说法。“为软件开发引入精益制造思想并不容易,因为切割金属和制造汽车与切割代码和制造成本较低的软件有很大的不同。”当涉及到创建软件时,它不仅仅是关于“生产某物”;它是“某物”的含义,应该努力实现它的目的。(目的是通过开发过程和结果或产品使客户满意。)
在讨论软件产品价值时,成本和质量是核心观点,根据精益理论,主要受浪费的影响。 精益通过设计,专注于尽可能快地识别和消除浪费,反过来,通过不断的客户反馈,不断改进软件。总体而言,精益软件开发有7条原则,每条原则旨在加快交付速度并为最终用户带来更高的价值。
3.2精益的7大原则
根据汤姆(Tom)和玛丽·波彭迪克(Mary Poppendieck)所著,精益开发过程有七个主要原则:
1.第一个是消除浪费。例如减少每周工作天数。
消除浪费不仅仅是说消除物质资源上的浪费,更是消除人力资源上的浪费。根据权威调查,在绝大多数情况下,没有精益开发经验的软件项目经理,在软件的设计开发阶段所做的工作都会或多或少地存在人力资源浪费。譬如,软件的架构师和产品经理设计了很多额外的功能,并为此浪费了大量时间来编写文档,而软件开发人员又依照这样的设计文档,开发了许多额外的功能,但是客户根本不用或者很少用到,这就是80/20原则,即20%的功能可以满足客户80%的需求。在精益开发的理论看来,任何不能够为最终产品增加用户认可价值的东西都是浪费。无用的需求是浪费,无用的设计是浪费,超出了功能范围,不能够被马上利用的代码也是浪费,而由此投入的人力资源则是最大的浪费。
2. 精益开发的第二个原则:强化学习,鼓励改进。
软件开发是一个不断发现问题,解决问题的过程。而学习能力的强化,能够令软件开发工作不断地获得改进。这和敏捷开发有点相似,敏捷软件开发的原则之一就是:通过短期迭代的方式,来达到持续改善的目的。
3. 精益开发的第三点与敏捷开发也有异曲同工之处,那就是注重质量。
质量驱动的开发实践,如测试驱动开发TDD、测试自动化、持续集成等。这些实践都是内建质量(Build-in Quality)的典范。质量就是要从需求、从每一行代码做起。
4. 精益开发的第四个原则,那就是推迟承诺(defer commitment)。
目前绝大多数的软件开发都工作在一个不确定的环境中,而环境的变化会对软件开发本身造成致命的伤害。推迟决策,并不是鼓励优柔寡断,而是说推迟到当环境变得足够清晰后,让你有充足的信息和理由来进行最正确的决策。对于一套大型软件的架构设计来说,如何构建一个可拥抱变化的系统架构是至关重要的问题。
推迟承诺并不是我们对不能按时完成项目所找的借口,反而是让我们学会如何在正确的时间段做出正确的判断。
5. 下一个原则是“尽快交付”。
自从互联网应用以来,发布速度已成为商业中的至关重要的因素,甚至有人说Web 2.0上的软件永远处于Beta版。软件阶段性交付的周期越短,软件的风险就越容易识别,用户的需求就越清晰,软件的质量就越高。
延期是精益软件开发里面最深恶痛绝的浪费。我们可以尽可能快地以小功能的形式交付软件,以减少延期,这需要减少组织内的开销。譬如测试不会因为等待开发人员编码结束而停下来;我们不会同时做多个项目,避免不断切换情境和混乱,相反,我们一次只做一个项目,对DONE有非常明确的定义。
6. 下一个原则是“尊重员工”。
尊重员工实际上是要对团队授权,让团队自己做决定,很显然,信任是基石。实际上,这一点和Scrum里面提到的自管理、自组织是一致的。
7. 最后一个原则,是优化整体(optimize the whole)。
产品完整性有两个维度:外部完整性和内部完整性。内部完整性意味着系统的所有部分一起工作。外部完整性关系到系统的性能与客户需求之间的一致性。要想缩短整个开发周期,需要采用系统化的解决方法。找出系统中的瓶颈,评估它,找到解决方法,然后重新开始。如果你只优化系统中的一个部分,或许其他地方会出现问题,效果就会大打折扣。
四、精益软件的应用

  • 源代码管理与脚本化构建
  • 自动化测试
  • 持续集成
  • 精简代码
  • 短周期迭代
  • 客户参与

《人月神话》里也提到了许多问题和解决方法同样适用于精益。例如第2章中提到:当意识到进度的偏移时,下意识(以及传统)的反应是增加人力。这就像使用汽油灭火一样,只会使事情更糟。这暗示了在估计和进度安排中认为人员数量和时间可以互换是一种谬误的思考方式。软件开发本质上是一项系统工作,简化Brooks法则:向进度落后的项目中增加人手,只会使进度更加落后。(Adding manpower to a late software makes it later.)
又譬如小型、精干的队伍——外科手术队伍。这是由Mills提出的团队解决方案,由一个人来完成问题的分解,其他人给予他所需要的支持,以提高效率和生产力。团队之间的交流,作为价值流里的一部分,这同样也很重要,团队之间交流融洽无障碍,没有出现交流问题,就会节约许多时间和精力;如果团队之间某一环节交流产生了问题,就很有可能误工误事,造成大量的浪费。
五、精益开发VS敏捷开发

  • 共同点
    —提高软件质量,提高生产力
    —肯定或欢迎一定的需求变更
    —满足客户需求为最高价值
  • 不同点:
    —精益使用范围更广,价值链更长
    —敏捷主要聚焦客户协作和交付软件,精益聚焦对客户有价值的上下文环境消除浪费。
    —敏捷有相当一批正规的方法学,精益没有正规方法学。

参考文献:
[1]Poppendieck M,Poppendieck T,2003,Lean Soft ware Development:A Agile Toolkit for Soft ware Development Manager.
[2]Tomaszewski P.等人,2007年,“从传统发展到 精简发展-机遇与挑战”,《软件过程:改进与 实践》,第一卷。
[3]精益管理系列,2009年,http://www.unisa. Edu.au/
[4]Taylor W.F,1911,The Principles of Scientific Management .
[5]Womack J.P.等人,1990年,《改变世界的机器:精益生产的故事》
布鲁克斯. 人月神话 (40周年中文纪念版) [J]. 电脑编程技巧与维护, 2015(15):98.

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值