敏捷和精益_精益和敏捷的对比和互补部分

敏捷和精益

This article is the first part of the whole publication which deals with software development methodologies of lean and agile. The goal is to compare the two methodologies and identify the contrasts and similarities. Although these two concepts are not really new anymore, many companies still question the advantages of such modern software development. This part contains an introduction (or a little recap) to the concepts of lean and agile. You can find the link to the part 2 at the bottom of this part.

本文是整个出版物的第一部分,涉及精益和敏捷的软件开发方法。 目的是比较两种方法并确定对比和相似之处。 尽管这两个概念不再是真正的新概念,但许多公司仍然对这种现代软件开发的优势提出质疑。 本部分包含精益和敏捷概念的简介(或简要介绍)。 您可以在该部分的底部找到指向第二部分的链接。

The traditional Waterfall Model for software development assumes that the creation of a working software could be divided into several phases and that each and every such phase can be designed and planned in advance (Bente, S. et al., 2012 p. 165), no matter what the scales of such a software be. This results in loads of paperwork and documentations to precisely define and describe every requirement and each and every step from planning the software to its delivery. It does not accommodate to the future changes to the requirements.

传统的软件开发瀑布模型假设可以将工作软件的创建分为几个阶段,并且每个此类阶段都可以预先设计和计划(Bente,S. et al。,2012 p。165),无论这种软件的规模如何。 这将导致大量的文书工作和文档,以精确地定义和描述从计划软件到交付的每个需求以及每个步骤。 它不能适应将来对要求的更改。

The software developers have realized that the requirements and even the perceptions of the customers change over the time which led to the new methods of software development, which involves planning and development in small intervals and anticipating changes (Eckstein, J., 2012 p. 12–13), the “agile” way of thinking.

软件开发人员已经意识到,随着时间的流逝,客户的需求甚至观念都会发生变化,这导致了新的软件开发方法,这涉及到以较小的时间间隔进行规划和开发以及预期更改(Eckstein,J.,2012 p。12)。 –13), “敏捷”的思维方式。

Another modern approach to software development finds its root in the lean manufacturing, which focuses on removing the wastes in the production systems. Mary and Tom Poppendieck noticed the parallels between manufacturing and software development and thus called it “lean software development” (Poppendieck, M. & Poppendieck, T., 2003).

另一种现代软件开发方法源于精益制造,该精益制造侧重于消除生产系统中的废物。 Mary和Tom Poppendieck注意到制造和软件开发之间的相似之处,因此将其称为“精益软件开发” (Poppendieck,M。和Poppendieck,T.,2003年)。

The following sections will introduce the two approaches, discuss the similarities and differences between the two. Finally, this article will try to show how these two approaches can complement each other and eliminate the drawbacks of the other approach respectively.

以下各节将介绍这两种方法,并讨论两者之间的异同。 最后,本文将尝试说明这两种方法如何相互补充,并分别消除另一种方法的缺点。

软件开发的敏捷性 (Agility in Software Development)

“Agile” according to the Oxford Dictionaries mean “able to move quickly and easily” (Oxford Dictionaries, a). Agile software development could, thus, be described in one word as being “flexible”.

根据牛津词典, “敏捷”的意思是“能够快速,轻松地移动” (牛津词典,a)。 因此,敏捷软件开发可以用一个词形容为“灵活的”

The shortcomings and failure of the rigid approach of the linear process models, such as Waterfall, led to the birth of the agile way of developing software. Agile methods, in contrast to the traditional process models, accept the fact that software development is a continuous, iterative process which can not be planned to down to its smallest atom (Eckstein, J., 2012 p. 12–13). This section will discuss the values and principles of the agile software development that will give a better understanding to the agile ways of software development.

线性过程模型(例如Waterfall)的刚性方法的缺点和失败导致了敏捷的软件开发方法的诞生。 与传统的过程模型相比,敏捷方法接受这样一个事实,即软件开发是一个连续的,迭代的过程,无法计划到最小的原子(Eckstein,J.,2012 p。12-13)。 本节将讨论敏捷软件开发的价值和原理,以更好地理解软件开发的敏捷方式。

敏捷宣言 (Agile Manifesto)

The term “agile” was coined by a group of 17 leading software developers at a meeting in 2001 (Eckstein, J. (2012) p. 14). Although, they all had a different perspective on software development and had a rivalry among each other, they all mutually agreed to 4 values that were for them the backbone of software development.

“敏捷”一词由17个领先的软件开发人员小组在2001年的一次会议上提出(Eckstein,J.(2012)p。14)。 尽管他们对软件开发的看法不同,彼此之间也存在竞争,但他们都共同同意了4个价值观,它们对他们来说是软件开发的基础。

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

“我们正在探索通过开发和帮助他人来开发软件的更好方法。 通过这项工作,我们开始重视:

  • Individuals and interactions over processes and tools

    个人与 流程和工具 之间的互动

  • Working software over comprehensive documentation

    通过全面的文档 工作软件

  • Customer collaboration over contract negotiation

    客户合作 而非合同谈判

  • Responding to change over following a plan

    响应 计划 变更

That is, while there is value in the items on the right, we value the items on the left more.” (Agile Alliance, 2001a)

也就是说,尽管右侧的项目有价值,但我们更重视左侧的项目。” (敏捷联盟,2001a)

These 4 values (which will be discussed later) form the foundation for the “Agile Principles” and the agile frameworks such Scrum, XP, Kanban etc.

这四个值(将在后面讨论)构成“敏捷原则”和诸如Scrum,XP,Kanban等敏捷框架的基础。

敏捷价值观 (Agile Values)

As mentioned above, the Agile Manifesto defines 4 key values for agile software development:

如上所述,敏捷宣言为敏捷软件开发定义了四个关键值:

1.个人与流程和工具之间的相互作用 (1. Individuals and Interactions over Processes and Tools)

The team members and the continuous interactions among them are more important than the processes and tools. This means the organizational structure must provide the environment for a healthy communication culture and never force them to implement processes against their will. (Eckstein, J., 2012 p. 14)

团队成员及其之间的持续交互比流程和工具更为重要。 这意味着组织结构必须为健康的沟通文化提供环境,决不能强迫他们违背自己的意愿实施流程。 (Eckstein,J.,2012第14页)

High performing agile teams value truth, transparency, trust, respect and commitment among and for the individuals in the team and the customers more than the processes and tools they share. To achieve this the team leaders and members must encourage a positive conflict and constant feedbacks. That facilitate commitment and a sense of belonging, responsibility and self-organization among the team members. (Sutherland, J.)

高效能的敏捷团队更重视团队中的个人与客户之间以及客户与团队之间以及客户之间的真相,透明度,信任,尊重和 承诺 他们共享的流程和工具。 为此,团队负责人和成员必须鼓励积极的冲突和不断的反馈。 这有助于团队成员之间的承诺以及归属感,责任感和自组织能力。 (萨瑟兰,J。)

2.工作软件胜过完整的文档 (2. Working software over comprehensive documentation)

In contrast to the traditional process models such as Waterfall Model where the largest part of the time and budget was spent on defining the requirements and documenting every step to finest, the main focus of the agile methodologies lies at the working software. Although, this does not mean the requirements definition and documentation are completely neglected in the agile way of software development. All the activities must converge to one goal, increasing the value for the customer i.e. delivering a working software.

与传统的过程模型(如瀑布模型)相比,瀑布模型花费了大部分时间和预算来定义需求并记录每个步骤的最优化,而敏捷方法论的主要重点在于工作软件。 虽然,这并不意味着在敏捷的软件开发方式中完全忽略了需求定义和文档。 所有活动必须收敛于一个目标,从而为客户增加价值,即交付有效的软件。

All the agile methods focus on delivering a working software in small pieces at predefined intervals.

所有敏捷方法都专注于按预定义的时间间隔小批量交付工作软件。

3.客户通过合同谈判进行合作 (3. Customer collaboration over contract negotiation)

Customer satisfaction should be the top most priority of a software development team, as it is him who knows his wishes the best and he is the one paying for it. Agile methodologies stress, in contrary to the Waterfall Model, a constant interaction between the customer or the product owner and the software developers. It is to be noted, though that even customers don’t exactly know from the very beginning what

客户满意度应该是软件开发团队的头等大事,因为他是最了解自己愿望的人,也是为此付出代价的人。 与瀑布模型相反,敏捷方法强调客户或产品所有者与软件开发人员之间的不断交互。 要注意的是,即使客户从一开始也不完全知道

the end product should look like as the software doesn’t exist yet. Hence, the software needs to be developed in small steps with a constant customer involvement and no time should be wasted in long contract negotiations that don’t add to the value (Eckstein, J. (2012) p. 15).

最终产品应该看起来像该软件尚不存在。 因此,需要在客户持续参与的情况下分步开发软件,并且不应在不会增加价值的长期合同谈判中浪费时间(Eckstein,J.(2012)p。15)。

4.响应计划变更 (4. Responding to change over following a plan)

As mentioned no customer and no software developer can define the exact requirements to begin with. An agile teams welcomes the amendments to the software instead of causing conflict with the customer, who “should have known his wishes right away”. The first three values of Agile Manifesto allows the changes to flow in the process through interactions, delivery in intervals and customer collaboration.

如前所述,没有客户和软件开发人员可以定义确切的要求。 敏捷团队欢迎的软件,而不是导致与客户,谁“应该知道他的愿望马上 冲突的修订。 敏捷宣言的前三个值允许更改在 通过交互,定期交付和客户协作来进行流程。

“All agile methodologies have built-in processes to change their plans at regular intervals based on feedback from the customer” — Jeff Sutherland. (Sutherland, J.)

“所有敏捷方法都有内置的流程,可根据客户的反馈定期更改其计划。” — Jeff Sutherland 。 (萨瑟兰,J。)

敏捷原则 (Agile Principles)

The 12 principles of the Agile Manifesto outline ways to implement the four key values (Agile Alliance, 2001b):

敏捷宣言的12条原则概述了实现这四个关键价值的方法(敏捷联盟,2001b):

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

    我们的首要任务是通过尽早并持续交付有价值的软件来满足客户。

  • Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

    即使在开发后期,也欢迎不断变化的需求。 敏捷流程利用变更来获得客户的竞争优势。

  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

    频繁交付工作软件,从几周到几个月不等,而更倾向于缩短时间范围。

  • Business people and developers must work together daily throughout the project.

    在整个项目中,业务人员和开发人员必须每天一起工作。

  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

    围绕有积极性的人建立项目。 给他们提供所需的环境和支持,并信任他们来完成工作。

  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Working software is the primary measure of progress.

    向开发团队内部传达信息的最有效方法是面对面的交谈。 工作软件是进度的主要衡量标准。

  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

    敏捷过程促进可持续发展。 赞助者,开发者和用户应该能够无限期地保持恒定的步伐。

  • Continuous attention to technical excellence and good design enhances agility.

    持续关注技术卓越和良好的设计可增强敏捷性。

  • Simplicity — the art of maximizing the amount of work not done — is essential.

    简洁-最大化未完成工作量的艺术-是必不可少的。

  • The best architectures, requirements, and designs emerge from self-organizing teams.

    最好的体系结构,需求和设计来自自组织团队。

  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

    团队会定期思考如何提高效率,然后相应地调整和调整其行为。

精益 (Being Lean)

The word “lean” as an adjective means “slim” or “having no superfluous fat” (Oxford Dictionaries, b). This definition of the word “lean” actually also lays the base of “lean manufacturing” or “lean software development”. The main goal of being lean is to increase the value to customers by reducing waste (Poppendieck, M. & Poppendieck, T., 2003) i.e. the unwanted “fat” and keep the processes as “slim” as possible. This section will discuss the origins of the lean thinking, the introduction of lean in software development and the 7 principles of lean software development.

“瘦”一词作为形容词的意思是“苗条”或“没有多余的脂肪”(Oxford Dictionaries,b)。 对“精益”一词的这种定义实际上也奠定了“精益制造”或“精益软件开发”的基础。 精益生产的主要目标是通过减少浪费(Poppendieck,M.和Poppendieck,T.,2003),即不必要的“肥肉”来增加客户价值,并使过程尽可能“苗条”。 本节将讨论精益思想的起源,软件开发中精益的介绍以及精益软件开发的7条原则。

精益思想的起源 (The Origins of Lean Thinking)

The origin of the Lean Thinking goes back to 1940s (Bente, S. et al., 2012 p. 174–175) when Toyota was facing the challenge of manufacturing cheap cars for the Japanese market as the majority of the Japanese population after the Second World War didn’t have enough money to afford themselves such luxurious goods. Mass exports to countries such as U.S.A or China was not yet an option in the 1940s, thus the benefits of economies of scale were not available to Toyota either, as the Japanese market itself was not large enough to buy all those cars.

精益思维的起源可以追溯到1940年代(Bente,S.等人,2012,第174-175页),当时丰田汽车面临着为日本市场制造廉价汽车的挑战,因为第二次世界大战之后,日本人大多数第二次世界大战没有足够的钱来负担​​自己的奢侈品。 在1940年代还没有向美国或中国这样的国家大规模出口的选择,因此丰田也无法获得规模经济的好处,因为日本市场本身还不足以购买所有这些汽车。

Toyota under the leadership of Taiichi Ohno realized that the first and most important factor to achieve the advantages of economies of scale without actually producing on a large scale was to “Eliminate Waste” (Poppendieck, M. & Poppendieck, T., 2003). Anything that didn’t add to the customer value was defined as waste. Ohno recognized 7 wastes in manufacturing which led to reduction in customer value: overproduction, unnecessary transportation, inventory, motion, defects, over-processing and waiting. Each and every lean principle is derived from this fundamental thinking. The process eventually developed by Toyota in that period, today also known as “Toyota Product System” (Toyota) as shown in the illustration below, laid the foundation for Lean Manufacturing.

丰田汽车在大野大一(Taiichi Ohno)的领导下意识到,要实现规模经济优势而不真正大规模生产,第一个也是最重要的因素是“消除浪费” (Poppendieck,M。和Poppendieck,T.,2003年)。 没有增加客户价值的任何东西都被定义为浪费。 大野意识到制造中的7种浪费导致客户价值降低: 生产过剩,不必要的运输, 库存,运动,缺陷,过度加工和等待 。 每个精益原则 是从这种基本思想衍生出来的。 该过程最终由丰田公司在那个时期开发,今天也称为“丰田产品系统”(Toyota) 如下图所示,为精益生产奠定了基础。

敏捷和精益_精益和敏捷的对比和互补部分_第1张图片
Toyota Production System 丰田生产系统 (Source: http://www.toyota-forklifts.de/SiteCollectionDocuments/PDF%20files/Toyota%20Production%20System%20Brochure.pdf) (来源:http: //www.toyota-forklifts.de/SiteCollectionDocuments/PDF%20files / Toyota%20Production%20System%20Brochure.pdf)

The Lean Manufacturing is based on several principles derived from the TPS including:

精益生产基于TPS衍生的几项原则,包括:

  • “Most errors are of a systematic nature and therefore your development system must be improved.

    “大多数错误都是系统性的,因此必须改进您的开发系统。

  • You must respect your people in order to improve your system.

    您必须尊重您的员工才能改善您的系统。

  • Doing things too early causes waste. Do things just before you need to do them: This is called Just-In-Time, or JIT.

    过早地做事会造成浪费。 在需要做之前就做一些事情:这称为即时(Just-In-Time)或JIT。

  • Lean principles suggest focusing on shortening time-to-market by removing delays in the development process; using JIT methods to do this is more important than keeping everyone busy.” (Shalloway, A. et al., 2010 p. 7–8)

    精益原则建议着重于通过消除开发过程中的延迟来缩短上市时间; 使用JIT方法做到这一点比让每个人都忙起来更为重要。” (Shalloway,A。等,2010,第7-8页)

从制造到软件开发 (From Manufacturing to Software Development)

Lean manufacturing and lean management based on TPS introduced by Ohno enjoyed a great success in the automobile industry as the history witnessed. The idea of eliminating waste through process such as Just-In-Time revolutionized the thinking of not only almost every automobile manufacturer but also the other industries (Bente, S. et al. (2013) p. 175). Mary and Tom Poppendieck realized that the principles that led to the success of lean in manufacturing also apply to the software development. The traditional process models caused unnecessary waste and inflexibility through their rigid structure. Mary and Tom Poppendieck translated the lean principles of manufacturing to the software development which follows:

大野公司引入的基于TPS的精益生产和精益管理在历史上见证了汽车行业的巨大成功。 通过诸如“准时生产”(Just-In-Time)之类的过程消除浪费的想法,不仅改变了几乎所有汽车制造商的思想,而且也改变了其他行业的思想(Bente,S.等人(2013年),第175页)。 Mary和Tom Poppendieck意识到导致精益生产成功的原理也适用于软件开发。 传统的过程模型由于其刚性结构而导致不必要的浪费和灵活性。 Mary和Tom Poppendieck将制造的精益原则转化为软件开发,其原理如下:

精益原则 (Lean Principles)

1.消除浪费 (1. Eliminate Waste)

As already mentioned abovve the core idea of lean thinking is to eliminate any kind of waste that does not add to the value. Mary and Tom Poppendieck transformed the 7 wastes of manufacturing to software development as listed in Table below:

如前所述,精益思维的核心思想是消除不会增加价值的任何浪费。 下表列出了Mary和Tom Poppendieck将7种制造浪费转化为软件开发:

敏捷和精益_精益和敏捷的对比和互补部分_第2张图片
The Seven Wastes 七废物 (Source: Poppendieck, M. & Poppendieck, T., 2003) (来源: Poppendieck,M.&Poppendieck,T.,2003)

2.扩大学习 (2. Amplify Learning)

Lean Software Development emphasizes on learning by doing as it is considered crucial to improve the quality of the software. It follows a “try-it, test-it, fix-it cycles ” approach rather than “right the first time” (Poppendieck, M. & Poppendieck, T., 2003) as it allows the developers to be creative and experiment in finding the better processes for software creation. It also includes a constant communication and feedback among the team and even with the customers so that the knowledge about the complex process could be shared and retained. The “right the first time” is considered rather counterproductive (Bente, S. et al., 2012 p. 177) as it averts creativity and thus the continuous improvement “Kaizen”.

精益软件开发强调边干边学,因为这对提高软件质量至关重要。 它遵循“尝试,测试,修复周期”的方法,而不是“第一次就正确” (Poppendieck,M.&Poppendieck,T.,2003),因为它允许开发人员发挥创造力并在其中进行试验。寻找更好的软件创建流程。 它还包括团队之间甚至与客户之间不断的沟通和反馈,以便可以共享和保留有关复杂过程的知识。 “第一次正确”被认为适得其反(Bente,S.等人,2012 p。177),因为 它避免了创造力, 因此持续改进“ Kaizen”

3.尽可能晚地决定 (3. Decide as late as possible)

This principle is also known as “Defer Commitment” or “Concurrent Development”. The decisions are taken as late as possible to keep one’s options open and being open to changes. Concurrent Development means to start programming even when the detailed requirements are being defined. This leads to an iterative approach to software development that is a far better way to deal with changing requirements.

该原则也称为“延迟承诺”“并发开发” 。 这些决定要尽可能晚地做出,以保持选择的开放性和开放性。 并发开发意味着即使定义了详细的要求也可以开始编程。 这导致了一种迭代的软件开发方法,这是处理不断变化的需求的更好的方法。

4.尽快交付 (4. Deliver as fast as possible)

This principle of delivering fast is on one hand a result lean thinking and on the other it empowers the lean software development. Firstly, it allows the developers to respond quickly to changes (Bente, S. et al., 2012 p. 178–179) that may occur due to “Concurrent Development”, but also it the continuous development of the product also satisfies the customer and supports the decision making. This also allows the customers to test the software at smaller intervals and reduces the risks of mis-communication.

快速交付的这一原则一方面是精益思想的结果,另一方面又是对精益软件开发的支持。 首先,它允许开发人员快速响应“并发开发”可能发生的更改(Bente,S.等人,2012,第178-179页),而且产品的持续开发也使客户满意并支持决策。 这也使客户能够以较小的间隔测试软件,并降低了通信错误的风险。

5.授权团队 (5. Empower the Team)

One of the main reasons of the success of the TPS in 1940s was the respect and acknowledgement of the people who were responsible for the transformation of the thoughts to some thing more tangible. The same principle also applies to software development. The decisions that affect the team directly or indirectly should never be made without the team. Respecting people also allows the creating of knowledge (2. lean principle) as the knowledge could only be shared if there is mutual respect among the team members which also includes the project managers and the customers.

TPS在1940年代取得成功的主要原因之一是对负责将思想转变为更切实可行的事情的人们的尊重和认可。 相同的原则也适用于软件开发。 没有团队,决不能做出直接或间接影响团队的决定。 尊重人也可以创造知识(2.精益原则),因为只有在团队成员(包括项目经理和客户)之间存在相互尊重时,才能共享知识。

6.建立诚信 (6. Build Integrity in)

“Integrity” can also be defined as “free from flaws”. This principle focuses on building integrity or quality in processes and the software. “Perceived Integrity” is how the customer feels about the product without knowing anything about the processes and code behind the software development. “Conceptual Integrity” can also be defined as the part of the software from the developers perspective. The key attributes of conceptual integrity are: simplicity, clarity, suitability for use, no repetition and no extra features. (Poppendieck, M. & Poppendieck, T., 2003)

“完整性”也可以定义为“没有缺陷” 。 该原则侧重于 在流程和软件中建立完整性或质量。 “感知的完整性”是客户在不了解软件开发背后的流程和代码的情况下对产品的感觉。 从开发人员的角度来看, “概念完整性”也可以定义为软件的一部分。 概念完整性的关键属性是: 简单,清晰,适合使用,无 重复无额外功能。 (波本迪克(M. Poppendieck)和T.庞本迪克(T. Poppendieck),2003年)

7.看整体 (7. See the Whole)

The last principle of the lean software development is also called “optimize the whole” (Shalloway, A. et al., 2010 p. 14). Software development does not only mean programming but comprises of a whole process from planning to testing, delivery and so on. So instead of optimizing each step individually, the whole flow of value should be looked upon. Everyone, from the product managers to the software architects and to the programmers, need to consider the process of software development as whole and not just as subdomains.

精益软件开发的最后一个原则也称为“优化 整体” (Shalloway,A.等人,2010,第14页)。 软件开发不仅意味着编程,还包括 从计划到测试,交付等等的整个过程。 因此,应该着眼于整个价值流,而不是单独优化每个步骤。 从产品经理到软件架构师再到程序员,每个人都需要将软件开发过程视为一个整体,而不仅仅是子域。

Thank you for reading and here’s the link for the part 2 and thus the conclusion of my findings about Lean and Agile. Spoiler alert: this where it really gets more interesting.

感谢您的阅读,这是第二部分的链接,也是我关于精益和敏捷的发现结论的链接。 剧透警报:这真的变得更有趣。

翻译自: https://medium.com/@samir.ar.2810/lean-and-agile-contrasting-and-complementary-part-i-3f3b8ff51088

敏捷和精益

你可能感兴趣的:(python)