精益软件开发(一)

精益软件开发连载(一)

“精益软件开发”这个词最初是由欧洲联盟的ESPRIT倡议组织1992年10月在德国斯图加特举办的一个会议的标题。另外早些年,Robert “Bob” Charette 在1993年建议把“精益软件开发”应用于软件项目风险管理的最佳方法作为他工作研究的一部分。“精益”这个术语是1991年由James Womack、Daniel Jones和Daniel Roos在他们编写的图书《The Machine That Changed the World: The Story of Lean Production 》中使用英语定义的术语,用来描述丰田公司的管理方法。把精益这种思想应用于软件开发其实是很早的,大约是在精益这个术语第一次被使用在制造过程和工业领域之后的一两年中。
沃麦克(Womack)和琼斯(Jones)在他们出版于1995年的第二本书中,定义了精益思想的五个核心原则:

• 根据客户需求,重新定义价值
• 识别价值流,重新制定企业活动
• 使价值流动起来
• 依靠客户需求拉动价值流
• 追求尽善尽美

这成为未来十年大部分时间里默认的工作定义。有人建议,通过消除浪费而达到追求完美。虽然有五大支柱,而第五个就是通过消除浪费的活动和系统化的识别浪费的活动并且消除这些活动来追求完美,真正的与广泛的读者产生共鸣。通过20世纪90年代末和早期的第二十一世纪的一部分活动,精益变得几乎完全与消除浪费的实践相关联。

沃麦克(Womack)和琼斯(Jones)对精益的定义并不被普遍性的共享。丰田的管理原则更为微妙。英语中的“浪费”一词可以用三个含义更为丰富的日语术语描述:

• Muda–字面上的意思是“浪费”,这意味着没有附加值的活动
• Mura–意思是“不均衡”和可被理解为“在流量的变化中”
• Muri–意思是“过重的负担”或“不合理”(超出人或者设备的能力)

追求完美是通过减少非增值的活动,而且通过稳定的工作流程和消除过重的负担达到的。此外,丰田的做法是基于一个基本的尊重人和严重影响来讨论二十世纪的质量保证和统计的过程控制专家,如爱德华兹•戴明(W. Edwards Deming)。不幸的是,几乎有许多作者给出了精益的定义。

精益和敏捷

Bob Charette虽然受到邀请但是他并未能出席2001年在美国犹他州瓦萨奇山雪鸟滑雪胜地召开的敏捷软件开发[5]宣言会议。尽管错过了这个历史性的会议,但是精益软件开发被认为是几个敏捷方法中的一个。Jim Highsmith致力于他在2002出版的书中与Bob关于这个话题采访中的一个章节。后来,Mary和Tom Poppendieck继续编写了一系列与此相关的图书。在二十一世纪最初的几年中,精益原则被用来解释为什么敏捷方法更好。从精益的观点来解释敏捷方法,它包含很少的“浪费”,因此产生了更好的经济性的结果。精益原则被用来作为“许可者”采用敏捷方法。

精益超越敏捷

近年来,精益软件的发展确实出现了与自己相关的学科,但这并不是敏捷运动的一个分支。这种学科的演变最初的思想源自于精益产品开发和Donald G. Reinertsen [10,11]的工作研究:非敏捷世界的大型系统工程思想的融合,以及James Sutton和Peter Middleton的著作。我也综合了Eli Goldratt和W. Edwards Deming的著作,强调专注于工作流程而不是减少浪费。在2005年前后Reinertsen的要求下,我介绍了当系统已经准备好了之后,使用限制工作进展和“拉”动新工作的看板系统。Alan Shalloway在他2009年的书中增加了精益软件开发思想的主题[ 14 ]。自2007以来,精益作为一个新的力量出现在软件开发行业,进步专注于改善流程,管理风险,提高(管理)决策。看板已成为IT相关工作精益生产的主要推动者。看来,专注于流程而不是消除浪费成为重点,这在知识工作活动如软件开发的持续改进方面是一个更好的催化剂。

定义精益软件开发

定义精益软件开发是具有挑战性的,因为没有具体的精益软件开发方法或过程。精益不是个人软件过程、V模型、螺旋模型、EVO、特征驱动开发、极限编程、Scrum、或者测试驱动开发。如果它被观察到与精益软件开发运动的价值和精益软件开发的原则相一致,一个软件开发生命周期过程或项目管理过程可以说是“精益”。因此,那些期待一个简单的秘诀,可以遵循和命名精益软件开发将感到失望。你必须通过理解精益原则和采用精益的核心价值观来定制或定制自己的软件开发过程。

在精益软件开发中有几个学派(schools of thought)。最大的也可以说是领先的学派是精益系统的社会。其代表人物有Donald Reinertsen,Jim Sutton,Alan Shalloway,Bob Charette,Mary Poppendeick,David J. Anderson。Mary和Tom Poppendieck的作品发展到社会和其信条分别形成之前,作为Craig Larman的工作,Bas Vodde [15,16],以及最近的Jim Coplien。本文旨在广泛代表的精益系统社会的观点表示在其信条(credo),并提供一个综合和总结他们的思想。

价值

精益系统协会在2012精益软件与系统会议发表了其信条。这是基于一组发表在一年前的价值观。这些值包括:
• 接受人类的条件
• 接受复杂性和不确定性是自然的知识工作
• 致力于更好的经济成果
• 使社会学更好的结果
• 寻求,拥抱和质疑的想法,从一个广泛的学科
• 基于价值观的社区提高了积极变化的速度和深度

接受人类的生存环境

诸如软件开发等知识工作是由人类进行的。我们人类本质上是复杂的,而逻辑思想家,我们也受我们的情绪和内在的一些动物性的特征,不能合理地被克服。我们的心理和神经心理学必须考虑到我们所从事的设计系统或过程中。我们的社会行为也必须得到满足。人类本质上是情感的、社会的和部落的,我们的行为随着疲劳和压力而改变。成功的过程将是那些拥抱和容纳人类的生存环境,而不是那些试图否认它,并假设逻辑、机器般的行为。

接受复杂性和不确定性是自然的知识工作

顾客和市场的行为是不可预测的。工作流程和工作的人是不可预测的。缺陷和要求的返工是不可预测的。软件开发中存在着多层次的内在的机会或看似随机的行为。项目的目的、目标和范围在交付时往往会发生变化。这种不确定性和可变性,尽管最初是未知的,可知在某种意义上说,它可以研究和量化其风险管理,但有些变化是不可知的提前并不能充分的预期。因此,系统的精益软件开发必须能够应对显露出来的事件,并且系统必须能够适应不断变化的情况。因此,任何精益软件开发过程中必须存在一个框架,允许适应(过程),以展现事件。

朝着更好的经济结果努力

人类的活动诸如精益软件开发应侧重于产生更好的经济成果。当资本主义既有利于商业价值又有利于顾客利益时,资本主义是可以接受的。投资者和企业所有者应获得投资回报。员工和工人应该有公平的报酬来公平地执行工作。客户应该得到一个良好的产品或服务,提供其承诺的好处,以换取公平的价格支付。更好的经济成果将以较低的成本向客户交付更多的价值,同时以最有效的方式管理投资者或业主所调配的资金。

更好的社会学成果

更好的经济成果不应该以牺牲那些履行工作的人花费来交付。创建一个工作场所,尊重人并接受人们的条件,并提供尊重人的心理感受和社会学本质工作的系统是必不可少的。创建一个伟大的地方来完成伟大的工作是精益软件开发团体的一个核心价值。

猜你喜欢

转载自blog.csdn.net/seagal890/article/details/80722004