type
status
date
slug
summary
tags
category
icon
password
对比瀑布模型、敏捷、精益和 DevOps
Introduction 介绍
A lot of discussions in the software development and IT project management communities are often around software development methodologies. The waterfall model, a traditional plan-driven approach to software development has been around for decades. Critics argue that the waterfall model lacks flexibility to accommodate customer changes and that its linear stages to software development are not people-centered, do not encourage customer collaboration and leave no room for creativity nor innovation. To improve software development, individuals have adopted methodologies that focus on customer collaboration, continuous delivery, constant feedback and communication between developers, customers and users while delivering software incrementally in small releases. This has led many individuals to becoming advocates of agile way of thinking.软件开发和 IT 项目管理社区中的许多讨论通常都是围绕软件开发方法论进行的。瀑布模型是一种传统的计划驱动的软件开发方法,已经存在了几十年。批评者认为,瀑布模型缺乏适应客户变化的灵活性,并且其软件开发的线性阶段不是以人为中心的,不鼓励客户协作,也没有为创造力和创新留下空间。为了改进软件开发,人们采用了注重客户协作、持续交付、开发人员、客户和用户之间的持续反馈和沟通的方法,同时以小版本增量交付软件。这导致许多人成为敏捷思维方式的倡导者。
However, in order to improve IT service performance and to give organizations competitive advantages, we need more than just simple agile methodologies. Gartner declared that “DevOps movement was born of the need to improve the agility of IT service delivery and emphasizes people and culture and seeks to improve collaboration between development and operations teams while seeking to remove the unnecessary impediments to service and application delivery by making use of agile and lean concepts” (Wurster, et al., 2013). For this reason, DevOps can be considered as the integration and application of different software development methodologies, operational processes and social psychological beliefs for transforming IT service delivery. In this perspective, DevOps is a new way of thinking, a spirit and a philosophy for transforming organizations.然而,为了提高 IT 服务绩效并为组织提供竞争优势,我们需要的不仅仅是简单的敏捷方法。 Gartner 宣称:“DevOps 运动诞生于提高 IT 服务交付敏捷性的需要,强调人员和文化,寻求改善开发和运营团队之间的协作,同时寻求通过利用敏捷和精益概念”(Wurster 等,2013)。因此,DevOps 可以被视为不同软件开发方法、操作流程和社会心理信念的集成和应用,以改变 IT 服务交付。从这个角度来看,DevOps是一种新的思维方式、一种精神、一种变革组织的哲学。
We compare agile methodologies to lean concepts and practices so as to understand the relationships between these two ways of working and see how they encourage continuous integration and continuous delivery of IT services and how the combination of these two methodologies create a new culture, philosophy and spirit for development and operations teams. When it comes to telling which software development methodology is good, better or the best, it all depends on the view of the proponents of the methodology, the type of system to be developed and the culture of the organization.
我们将敏捷方法论与精益概念和实践进行比较,以了解这两种工作方式之间的关系,了解它们如何鼓励IT服务的持续集成和持续交付,以及这两种方法论的结合如何创造新的文化、理念和精神适用于开发和运营团队。当谈到哪种软件开发方法好、更好或最好时,这完全取决于该方法支持者的观点、要开发的系统类型以及组织的文化。
The waterfall model, also referred to as the software life cycle is an example of a plan-driven approach to software development. Ian Sommerville in his book entitled “Software Engineering” supports that the waterfall model is a linear approach to software development where the results of each phase is one or more documents that are signed-off and that the following phase should not start until the previous phase has finished. He also supports that in the waterfall process model, you must plan and schedule all the process activities before starting work on them (Sommerville, 2011).瀑布模型,也称为软件生命周期,是计划驱动的软件开发方法的一个示例。 Ian Sommerville 在他的《软件工程》一书中支持瀑布模型是软件开发的一种线性方法,其中每个阶段的结果是一个或多个已签署的文档,并且下一阶段不应在上一阶段之前开始已经完成了。他还支持在瀑布流程模型中,您必须在开始处理所有流程活动之前对其进行计划和安排(Sommerville,2011)。
While the waterfall process model focuses on following well-defined plans and detailed documentations, agile is considered by many IT professionals as a way of thinking and not a methodology. Is this true? Well, a group of software practitioners advocated a set of principles based on best practices and their previous success and failure experiences with many software development projects regarding what works and does not work. Each one of these highly-experienced professionals had their own different philosophies or way of thinking about how they approached software development. They developed the manifesto for agile software development which states the values and principles of agile software development philosophy (Misra, et al., 2012).虽然瀑布流程模型侧重于遵循明确定义的计划和详细的文档,但许多 IT 专业人员认为敏捷是一种思维方式,而不是一种方法论。这是真的吗?一群软件从业者根据最佳实践以及他们之前在许多软件开发项目中的成功和失败经验,倡导了一套关于什么有效、什么无效的原则。这些经验丰富的专业人士中的每一位对于如何进行软件开发都有自己不同的哲学或思考方式。他们制定了敏捷软件开发宣言,其中阐述了敏捷软件开发哲学的价值观和原则(Misra 等,2012)。
As we read from the above quote, the individuals who created agile practices and principles termed the output of their thinking as a philosophy (a way of thinking) and not a methodology. Philosophy informs everything we do in a method (Roberts, 2012).正如我们从上面的引文中读到的那样,创建敏捷实践和原则的个人将他们的思维成果称为哲学(一种思维方式),而不是方法论。哲学告诉我们在方法中所做的一切(Roberts,2012)。
So why is agile a philosophy and not a methodology?那么为什么敏捷是一种哲学而不是一种方法论呢?
In my humble opinion, it is because agile principles denote the methods used in agile practices and these principles or methods result from critical empirical thinking which is a philosophy subjective to individuals. Another reason why agile is not a methodology but a philosophy is that agile does not refer to a single method but encompasses different software development methodologies and IT project management practices such as scrum, extreme programming practices, pair programming, etc.在我看来,这是因为敏捷原则指的是敏捷实践中使用的方法,而这些原则或方法来自于批判性的实证思维,这是一种个人主观的哲学。敏捷不是一种方法论而是一种哲学的另一个原因是,敏捷并不是指单一的方法,而是包含不同的软件开发方法论和IT项目管理实践,例如scrum、极限编程实践、结对编程等。
Agile manifesto and principles vs the waterfall process model敏捷宣言和原则与瀑布过程模型
You cannot compare agile software development to the waterfall process model without mentioning the agile manifesto and principles. The agile manifesto states the values and principles of agile software development while broadly comparing them to what is believed to be the primary focus of a plan driven approach to software development. The following is the agile manifesto as literally stated by its 17 authors (Beck, et al., 2001):如果不提及敏捷宣言和原则,就无法将敏捷软件开发与瀑布过程模型进行比较。敏捷宣言阐述了敏捷软件开发的价值观和原则,同时将它们与被认为是计划驱动的软件开发方法的主要焦点进行了广泛的比较。以下是 17 位作者逐字阐述的敏捷宣言(Beck 等人,2001 年):
“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.”也就是说,虽然右侧的物品有价值,但我们更看重左侧的物品。”
Thus, the waterfall model is based on the spirit of strict conformance to executing software development stages in a linear fashion from A to Z due to the assumption made that requirements can be clearly specified prior to developing the system. This had worked with the development of operating systems, embedded control systems and large and complex systems where a detailed plan is required. In contrast, the spirit of agile philosophy relies on an incremental approach to software specification, development and delivery (Sommerville, 2011). Agile is the driver for success and innovation and emphasizes individuals, working software, customer collaboration and rapid responses to customers’ needs by accommodating their later changes to requirements throughout the development processes.因此,瀑布模型基于严格遵循从 A 到 Z 的线性方式执行软件开发阶段的精神,因为假设可以在开发系统之前明确指定需求。这适用于操作系统、嵌入式控制系统以及需要详细计划的大型复杂系统的开发。相比之下,敏捷哲学的精神依赖于软件规范、开发和交付的增量方法(Sommerville,2011)。敏捷是成功和创新的驱动力,强调个人、工作软件、客户协作以及通过在整个开发过程中适应客户需求的后续变化来快速响应客户的需求。
When can I choose the waterfall process model over agile methods?我什么时候可以选择瀑布流程模型而不是敏捷方法?
It is proven that in principle, one should choose to use the waterfall model only when the requirements are well understood and unlikely to change radically during system development (Sommerville, 2011).事实证明,原则上,只有当需求得到充分理解并且在系统开发过程中不太可能发生根本性变化时,才应该选择使用瀑布模型(Sommerville,2011)。
While agile methods are being widely used by individuals, not all projects are suitable for agile methodologies. The reason why proponents of the waterfall model argue that agile methodologies degrade the structure of many systems is because some agile practitioners do not want to admit that they can also make use of the waterfall model in software development. Safety critical systems and embedded control systems require prior adequate and consistent planning of what have to be included in the release of the system and how the system will operate. For instance, making changes to the initial design of an aircraft control system in the later phases of the development process may result in the introduction of bugs that can comprise the reliability and safety of the system under development.虽然敏捷方法被个人广泛使用,但并非所有项目都适合敏捷方法。瀑布模型的支持者之所以认为敏捷方法会降低许多系统的结构,是因为一些敏捷实践者不愿意承认他们也可以在软件开发中使用瀑布模型。安全关键系统和嵌入式控制系统需要事先对系统发布中必须包含的内容以及系统如何运行进行充分且一致的规划。例如,在开发过程的后期阶段对飞机控制系统的初始设计进行更改可能会导致引入错误,从而影响正在开发的系统的可靠性和安全性。
Despite the fact that agile methods such as scrum which leaves the software project scope flexible to accommodating later changes to software requirements, there is still a little bit of planning. The waterfall model depicts the traditional SDLC. Every software development methodology makes use of the SDLC but in a different way. While the waterfall model follows a linear approach to executing the SDLC, agile methods rely on an incremental approach to software specification, development and delivery.尽管 Scrum 等敏捷方法使软件项目范围能够灵活地适应软件需求的后续变化,但仍然需要一些规划。瀑布模型描述了传统的SDLC。每种软件开发方法都使用 SDLC,但方式不同。瀑布模型遵循线性方法来执行 SDLC,而敏捷方法则依赖于软件规范、开发和交付的增量方法。
Why choose agile way of working over the waterfall model?为什么选择敏捷工作方式而不是瀑布模型?
The twelve principles of agile software development stated in the agile manifesto describe in broader details the reasons why one may choose to follow an agile approach rather than the waterfall plan-driven approach to software development. Agile practices create an organizational culture that gives importance to customers. In order to explain the main reason why one may choose agile over the waterfall model, we compare agile principles to the waterfall model as follow:敏捷宣言中阐述的敏捷软件开发的十二条原则更详细地描述了人们选择遵循敏捷方法而不是瀑布式计划驱动方法进行软件开发的原因。敏捷实践创建了一种重视客户的组织文化。为了解释人们选择敏捷而不是瀑布模型的主要原因,我们将敏捷原则与瀑布模型进行如下比较:
- While software delivery in the waterfall process model is toward the end of the contract, agile methods focus on satisfying the customer through early and frequent releases of valuable software integrating the customer’s prioritized functionalities.
虽然瀑布流程模型中的软件交付是在合同结束时进行的,但敏捷方法的重点是通过尽早且频繁地发布集成客户优先功能的有价值的软件来满足客户的需求。
- While later changes to the system specifications in the waterfall model is difficult to integrate as this may involve redesigning the all system, agile methods welcome changing requirements even late in the development of the product.
虽然瀑布模型中系统规范的后续更改很难集成,因为这可能涉及重新设计整个系统,但敏捷方法即使在产品开发后期也欢迎不断变化的需求。
- While the waterfall model places emphasis on documentation, agile methods focus on frequently delivering working software to customers.
瀑布模型强调文档,而敏捷方法则侧重于频繁地向客户交付工作软件。
- While development teams work in isolation away from business people, agile methods encourage collaboration between development teams, business people and customers.
虽然开发团队与业务人员隔离地工作,但敏捷方法鼓励开发团队、业务人员和客户之间的协作。
- While the waterfall model places importance on processes and tools, agile methods focus on motivating individuals by building a culture of trust to get the work done and providing all the supports needed by the team.
瀑布模型重视流程和工具,而敏捷方法则侧重于通过建立信任文化来激励个人完成工作并提供团队所需的所有支持。
- While the waterfall model uses documentation to communicate the plan of what has to be done in a software project, the advocates of agile methods believe that face-to-face conversation is the most efficient way of conveying information.
虽然瀑布模型使用文档来传达软件项目中必须完成的工作的计划,但敏捷方法的倡导者认为面对面的对话是传达信息的最有效方式。
- While documentation is used as a metric to assess the progress of the project, agile advocates believe that working software is the primary measure of progress.
虽然文档被用作评估项目进度的指标,但敏捷倡导者认为工作软件是进度的主要衡量标准。
- While processes of the waterfall model lead to ineffective communication between development teams and customers, which is considered as one of the main problems that lead customers to being dissatisfied, agile processes create a culture that promote sustainable development by encouraging collaboration between sponsors, developers and users throughout the development life cycle.
瀑布模型的流程导致开发团队和客户之间沟通无效,这被认为是导致客户不满意的主要问题之一,而敏捷流程通过鼓励发起人、开发人员和用户之间的协作创建了一种促进可持续发展的文化贯穿整个开发生命周期。
- While the waterfall model emphasizes on following a well-established plan which does not keep in mind potential later changes to the system requirements, agile methods advocates believe that best designs emerge from self-organizing teams.
虽然瀑布模型强调遵循既定的计划,而没有考虑系统需求的后续潜在变化,但敏捷方法的倡导者认为最好的设计来自自组织团队。
- Finally, while the waterfall model put emphasize on improving development processes and tools, agile advocates believe that success is achieved when individuals assess their performance regularly and adjust their behavior accordingly.
最后,虽然瀑布模型强调改进开发流程和工具,但敏捷倡导者认为,当个人定期评估自己的绩效并相应地调整自己的行为时,就会取得成功。
Agile or lean for improvement? Maybe both for success and innovation?敏捷还是精益来改进?也许既为了成功又为了创新?
Phil Abernathy states in a video that the four most common workplace challenges are:Phil Abernathy 在视频中指出,工作场所最常见的四种挑战是:
- Poor quality of product
产品质量差
- Low morale and employee engagement
士气低落和员工敬业度低下
- Unsuccessful projects
不成功的项目
- and high cost of operations
以及高昂的运营成本
All these result in unhappy customers and low profitability. These are the problems that lean and agile solve. These ways of working solve these workplace problems by developing a culture of collaboration and continuous improvement with the help of simple practices that change behaviors. They improve the culture and the fabric of the way for ensuring fast delivery of tangible results from day one. Agile started off as a software development way of working and lean started as a production and operation system that helped Toyota overtake GM and become the number auto company in the world (Abernathy, 2013).所有这些都会导致客户不满意和盈利能力低下。这些都是精益和敏捷解决的问题。这些工作方式通过发展协作文化和借助改变行为的简单实践持续改进来解决这些工作场所问题。他们改善了文化和结构,确保从第一天起就快速交付切实的成果。敏捷最初是一种软件开发工作方式,而精益最初是一种生产和运营系统,帮助丰田超越通用汽车并成为世界上最大的汽车公司(Abernathy,2013)。
Moreover, Phil Abernathy supports that agile and lean are both based on the same organizational values of trust, respect, accountability and honesty. Above this, agile and lean are based on a common set of principles of collaboration, iterative delivery, continuous improvement, empowerment and transparency. Agile and lean have a set of practices that are focused at all times on delivering customer values. This creates the fabric leadership behavior and determines the culture and success. Agile and lean are ways of working as opposed to methods. Together they give the necessary understanding to continuously improve. When we combine agile and lean we get operational efficiency, project excellence, product and service quality and a great working culture that attracts the best people and gives a competitive advantage that is tough to imitate or beat (Abernathy, 2013).此外,Phil Abernathy 认为敏捷和精益都基于相同的组织价值观:信任、尊重、责任和诚实。除此之外,敏捷和精益基于一组共同的协作、迭代交付、持续改进、授权和透明度原则。敏捷和精益有一套始终专注于交付客户价值的实践。这创造了组织领导行为并决定了文化和成功。敏捷和精益是工作方式,而不是方法。他们共同提供必要的理解以不断改进。当我们将敏捷和精益结合起来时,我们可以获得运营效率、卓越的项目、产品和服务质量以及吸引最优秀人才的优秀工作文化,并提供难以模仿或击败的竞争优势(Abernathy,2013)。
Application of lean and agile精益和敏捷的应用
Rod Bray explains in a video that agile practices can be used to solve problems that fall in the quadrant of complex and that lean principles can be applied to solve complicated problems where expertise is required by pulling the waste out (Bray, 2013). The term agile and lean are often used interchangeably by some IT professionals. However they are different in their application. Agile was born of the need to improve software development process models which means agile is applied on projects. In contrast, lean was born of the need to improve production system operations and this means that lean practices are not directly applied to projects but to operations and processes involved in managing projects and delivering products and services.Rod Bray 在视频中解释说,敏捷实践可用于解决复杂象限中的问题,而精益原则可用于解决需要专业知识的复杂问题,以消除浪费(Bray,2013)。一些 IT 专业人员经常交替使用“敏捷”和“精益”这两个术语。但它们的应用有所不同。敏捷诞生于改进软件开发过程模型的需要,这意味着敏捷应用于项目。相比之下,精益诞生于改进生产系统运营的需要,这意味着精益实践并不直接应用于项目,而是应用于管理项目以及交付产品和服务所涉及的运营和流程。
After reading about the origin of the application of lean and agile, it is time to know why individuals are no longer just making use of agile methods but combining them with lean practices. In the following section, we analyze the transition from agile to lean and how lean practices are used to improve agile methods.在阅读了精益和敏捷应用的起源之后,是时候了解为什么个人不再仅仅使用敏捷方法,而是将其与精益实践相结合。在下一节中,我们分析从敏捷到精益的转变以及如何使用精益实践来改进敏捷方法。
From agile methods to lean principles and practices从敏捷方法到精益原则和实践
Agile methods have been used for years. Scrum approach to project management and extreme programming technique in software engineering have been used a lot. However, many individuals who have lot of years of experience in agile way of working are now seeing that agile methods have to be improved. Others argue that “lean is a necessary progression for organizations planning to scale up agility from the project or team level to the organizational level, which agile methods fail to address satisfyingly” (Smits, 2007). For this reason, the agile community is moving toward using lean software development.敏捷方法已使用多年。 Scrum 项目管理方法和极限编程技术在软件工程中已被大量使用。然而,许多在敏捷工作方式方面拥有多年经验的人现在发现敏捷方法必须改进。其他人则认为,“对于计划将敏捷性从项目或团队级别扩展到组织级别的组织来说,精益是一个必要的进步,而敏捷方法无法令人满意地解决这一问题”(Smits,2007)。因此,敏捷社区正在转向使用精益软件开发。
What is lean thinking? Womack and Jones define lean as “a way of thinking that allows companies to specify value, line up value creating actions in the best sequence, conduct these activities without interruption whenever someone requests them, and perform them more and more effectively” (Womack and Jones, 1996). As with agile methods, lean thinking comes into practice through the integration of a set of principles and practices. Mary and Tom Poppendieck realized that the lean principles that was used to improve manufacturing and production could be adapted to fit software development. The lean principles relevant to software development are (Poppendieck and Poppendieck, 2003):什么是精益思维?沃马克和琼斯将精益定义为“一种思维方式,允许公司指定价值,以最佳顺序排列价值创造行动,在有人要求时不间断地开展这些活动,并越来越有效地执行这些活动”(沃马克和琼斯,1996)。与敏捷方法一样,精益思想通过整合一组原则和实践来付诸实践。 Mary 和 Tom Poppendieck 意识到,用于改进制造和生产的精益原则可以适应软件开发。与软件开发相关的精益原则是(Poppendieck 和 Poppendieck,2003):
- Eliminate Waste
消除浪费
- Build Quality In
打造品质
- Create Knowledge
创造知识
- Defer Commitment
推迟承诺
- Deliver Fast
快速交付
- Respect People
尊重人
- Optimize the Whole
整体优化
Identification and elimination of waste from the process with respect to customer value is the primary and guiding principle of lean way of working (Wang, et al., 2012). For this reason, while agile methods have improved software development with scrum and extreme programming practices, lean principles improve agile practices. As the primary principle of the lean way of working is to eliminate waste, it is supported that “Lean thinking forces teams to eliminate anything that is not adding value to the product or service development process. Lean organizations try to avoid unnecessary meetings, tasks and documentation. They also try to eliminate building things that are not needed, which can be challenging because nowadays, market needs change more rapidly than ever” (Chan, 2013).识别并消除流程中与客户价值有关的浪费是精益工作方式的主要和指导原则(Wang 等,2012)。因此,虽然敏捷方法通过 Scrum 和极限编程实践改进了软件开发,但精益原则改进了敏捷实践。由于精益工作方式的主要原则是消除浪费,因此“精益思维迫使团队消除任何不会为产品或服务开发过程增加价值的东西”。精益组织试图避免不必要的会议、任务和文档。他们还试图消除构建不需要的东西,这可能具有挑战性,因为如今,市场需求变化比以往任何时候都快”(Chan,2013)。
Thus, when we say from agile methods to lean principles and practices, what we actually mean is not that agile methods are no longer being used by individuals but what we mean is that agile methods are integrating lean practices and principles so that these methods can scale to organizational level by improving all the development and production system operations. In the following section, we explain how lean principles are used in agile.因此,当我们说从敏捷方法到精益原则和实践时,我们实际上的意思并不是敏捷方法不再被个人使用,而是敏捷方法正在整合精益实践和原则,以便这些方法可以扩展通过改进所有开发和生产系统运营来提升到组织级别。在下一节中,我们将解释如何在敏捷中使用精益原则。
Lean within agile 精益敏捷
As declared by Chris Sims in an article entitled “Fowler: Agile Vs Lean Misses the Point”, “many of the people who developed the current crop of agile methodologies were strongly influenced by lean manufacturing and the ideas behind it. This can be seen in the many commonalities between lean and agile, including (Sims, 2008):”正如 Chris Sims 在题为“ Fowler:敏捷与精益错过要点”的文章中所说,“开发当前敏捷方法论的许多人都受到精益制造及其背后的想法的强烈影响。这可以从精益和敏捷之间的许多共同点中看出,包括(Sims,2008):”
- People centric approach
以人为本的方法
- Empowered teams
赋权团队
- Adaptive planning
适应性规划
- Continuous improvement
持续改进
On top of the commonalities between agile and lean ways of working as identified by Chris Sims, we can also add collaboration, continuous integration, simplicity and fast delivery of product and services. However, if we read from the evolution of agile practices, we will see that agile methods were influenced right at their beginnings by lean principles.除了 Chris Sims 指出的敏捷和精益工作方式之间的共性之外,我们还可以添加协作、持续集成、简单性以及产品和服务的快速交付。然而,如果我们回顾敏捷实践的演变,我们会发现敏捷方法从一开始就受到精益原则的影响。
Thus, we use Kim Chan’s statement to conclude this section by saying that “lean and agile share many of the same principles and many agile principles are borrowed from lean thinking” (Sims, 2008).因此,我们用 Kim Chan 的陈述来总结本节,“精益和敏捷有许多相同的原则,并且许多敏捷原则借鉴自精益思维”(Sims,2008)。
Difference between lean and agile精益和敏捷的区别
Régis Medina in a video from the “Lean IT Summit 2013” contrasts these two methodologies by defining agile as a “process for building the right products with the minimum overhead in an unclear environment and lean being a set of practices for developing the right skills to deliver more value with the less waste.”(Medina, 2013). Thus, while lean and agile practices are based on some common principles, they are different approaches. Agile methods are practiced to improve software development processes whereas lean way of working is used to improve production system operations which lead us to concluding that lean principles are not only used in project management processes but in the entire organization from project or team level to the organizational level.Régis Medina 在“2013 年精益 IT 峰会”的视频中对这两种方法进行了对比,他将敏捷定义为“在不明确的环境中以最小的开销构建正确产品的过程,而精益则是一套开发正确技能以实现目标的实践”。以更少的浪费提供更多的价值。”(Medina,2013)。因此,虽然精益和敏捷实践基于一些共同的原则,但它们是不同的方法。敏捷方法用于改进软件开发过程,而精益工作方式用于改进生产系统操作,这使我们得出结论,精益原则不仅用于项目管理过程,而且用于从项目或团队级别到组织级别的整个组织。等级。
Transforming IT service delivery with DevOps by using agile and lean practices通过敏捷和精益实践,通过 DevOps 转变 IT 服务交付
Agile way of working such as scrum and extreme programming have improved software development. Lean software development principles are not only improving agile methods but also the entire production system operations. However, when it comes to improving IT performance in order to give organizations competitive advantages, we need a new way of thinking, a new way of working that improve all the production and management processes and operations from the team or project level to the organizational level while encouraging collaboration between all the individuals involved for fast delivery of valuable products and services.Scrum 和极限编程等敏捷工作方式改进了软件开发。精益软件开发原则不仅是改进敏捷方法,而且是整个生产系统运营。然而,当谈到提高IT绩效以赋予组织竞争优势时,我们需要一种新的思维方式、一种新的工作方式来改进从团队或项目层面到组织层面的所有生产和管理流程和运营同时鼓励所有相关人员之间的合作,以快速交付有价值的产品和服务。
For this reason, a new culture, corporate philosophy and way of working is emerging. This way of working integrates agile methods, lean principles and practices, social psychological beliefs for motivating workers, systems thinking for building complex systems, continuous integration and continuous improvement of IT products and services for satisfying both customers and production and development teams. This new way of working is DevOps.因此,一种新的文化、企业理念和工作方式正在出现。这种工作方式融合了敏捷方法、精益原则和实践、激励员工的社会心理信念、构建复杂系统的系统思维、持续集成和持续改进IT产品和服务,以满足客户和生产和开发团队的需求。这种新的工作方式就是 DevOps。
What is DevOps? 什么是 DevOps?
There are several definitions given by different individuals practicing the DevOps culture. To quote a few of them we give the following definitions for DevOps:践行 DevOps 文化的不同个人给出了多种定义。为了引用其中的一些内容,我们给出了 DevOps 的以下定义:
- Adam Jacobs in a presentation defined DevOps as “a cultural and professional movement, focused on how we build and operate high velocity organizations, born from the experiences of its practitioners”. This guru of DevOps also states that DevOps is reinventing the way we run our businesses. Moreover, he argue that DevOps is not the same but unique to the people who have practiced it (Jacobs, 2015).
Adam Jacobs 在一次演讲中将 DevOps 定义为“一种文化和专业运动,专注于我们如何构建和运营高速组织,其诞生于其从业者的经验”。这位 DevOps 大师还表示,DevOps 正在重塑我们运营业务的方式。此外,他认为 DevOps 对于实践过它的人来说并不相同,而是独一无二的(Jacobs,2015)。
- Gartner analysts declare that DevOps “… is a culture shift designed to improve quality of solutions that are business-oriented and rapidly evolving and can be easily molded to today’s needs” (Wurster, et al., 2013).
Gartner 分析师宣称,DevOps“……是一种文化转变,旨在提高以业务为导向、快速发展且可以轻松适应当今需求的解决方案的质量”(Wurster 等人,2013 年)。
Thus, DevOps is a movement that integrates different ways of thinking and different ways of working for transforming organizations by improving IT services and products delivery.因此,DevOps 是一场整合不同思维方式和不同工作方式的运动,通过改进 IT 服务和产品交付来实现组织转型。
How to successfully integrate DevOps culture in an organization?如何在组织中成功融入 DevOps 文化?
We cannot talk about DevOps in a corporate environment without integrating a set of principles and practices that make development and operations teams work together. For this reason, Garter analysts support that DevOps takes into account several commonly agreed practices which form the fundamentals of DevOps practices. These practices are (Wurster, et al., 2013):如果不整合一套使开发和运营团队协同工作的原则和实践,我们就无法在企业环境中谈论 DevOps。因此,Garter 分析师支持 DevOps 考虑几种共同商定的实践,这些实践构成了 DevOps 实践的基础。这些做法是(Wurster 等,2013):
- Cross-functional teams and skills
跨职能团队和技能
- Continuous delivery
持续交付
- Continuous assessment
持续评估
- Optimum utilization of toolsets
工具集的最佳利用
- Automated deployment pipeline
自动化部署管道
We are DevOps when we are:当我们满足以下条件时,我们就是 DevOps:
- Agile (continuous integration and continuous delivery)
敏捷(持续集成和持续交付)
- Lean (waste elimination and value stream mapping)
精益(消除浪费和价值流图)
- Making use of the best social psychological believes to motivate people and manage our organizations.
利用最好的社会心理学信念来激励人们并管理我们的组织。
- Making continuous improvement of products, services and processes
持续改进产品、服务和流程
- Creating a culture that invites and encourages development and operations teams to work together.
创建一种邀请并鼓励开发和运营团队合作的文化。
- You can add on this list based on your own professional experience.
您可以根据自己的专业经验添加到此列表中。
Continuous integration and continuous improvement are one of the drivers of the DevOps culture. In order to understand how DevOps as an organizational culture is practiced through agile and lean principles, we discuss in the following sections, continuous integration and continuous delivery.持续集成和持续改进是 DevOps 文化的驱动力之一。为了了解 DevOps 作为一种组织文化是如何通过敏捷和精益原则来实践的,我们在以下部分中讨论持续集成和持续交付。
Continuous integration 持续集成
Martin Fowler defines continuous integration as “a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early” (Fowler, 2006). Continuous integration is one the drivers of agile practices. In fact, we can just say that DevOps makes use of agile best practices to encourage continuous integration through iterative development. As stated in one of the principles of agile way of working, “software is delivered frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale” (Beck, et al., 2001). The main advantage of continuous integration is that it makes it easier to detect bugs earlier during development instead of waiting to integrate everything in the end which makes it expensive to fix if there are any bugs.Martin Fowler 将持续集成定义为“一种开发实践,要求开发人员每天多次将代码集成到共享存储库中。然后,每次签入都会通过自动构建进行验证,从而使团队能够及早发现问题”(Fowler,2006)。持续集成是敏捷实践的驱动因素之一。事实上,我们可以说DevOps利用敏捷最佳实践来鼓励通过迭代开发进行持续集成。正如敏捷工作方式的原则之一所述,“软件交付频繁,从几周到几个月不等,优先考虑较短的时间范围”(Beck 等人,2001 年)。持续集成的主要优点是,它可以更轻松地在开发过程中尽早检测到错误,而不是等到最后才集成所有内容,这使得修复任何错误的成本很高。
The scrum approach to software project management encourages continuous integration throughout a sprint. As developers are working on a product backlog, they continuously integrate their codes in a shared repository every day. This integration is facilitated by the use of source and version control software which allows developers to work in different machines even locations while still integrating their codes into the same repository that can be used later to deploy the entire system. Continuous integration is a must for fast and frequent delivery of valuable software.软件项目管理的 Scrum 方法鼓励在整个冲刺期间持续集成。当开发人员处理产品积压工作时,他们每天都会不断地将代码集成到共享存储库中。这种集成是通过使用源代码和版本控制软件来促进的,该软件允许开发人员在不同的机器甚至位置上工作,同时仍然将他们的代码集成到同一个存储库中,以便稍后用于部署整个系统。持续集成是快速、频繁地交付有价值的软件的必要条件。
DevOps and continuous deliveryDevOps 和持续交付
As stated in the fundamental principles of agile practices, “the highest priority is given to satisfy customers through early and continuous delivery of valuable software” (Beck, et al., 2001) . However, DevOps is all about continuous delivery as this way of working aims to transform IT products and services delivery within organizations. Jez Humble argue that “implementing continuous delivery means making sure your software is always production ready throughout its entire lifecycle — that any build could potentially be released to users at the touch of a button using a fully automated process in a matter of seconds or minutes” (Humble, 2010).正如敏捷实践的基本原则所述,“通过及早持续交付有价值的软件来满足客户的需求是首要任务”(Beck 等,2001)。然而,DevOps 的核心是持续交付,因为这种工作方式旨在改变组织内的 IT 产品和服务交付。 Jez Humble 认为,“实施持续交付意味着确保您的软件在整个生命周期中始终处于生产就绪状态 - 通过使用完全自动化的流程,只需按一下按钮,任何构建都可以在几秒钟或几分钟内发布给用户” (谦虚,2010)。
However, continuous delivery demands continuous integration for valuable software to be delivered to customers anytime as it may be requested. In order to make this happen, DevOps put emphasis on automation. Automating the deployment pipeline is a must in DevOps as continuous delivery depends on it. Thus, DevOps is all about being agile and eliminating waste by lining up value adding activities and executing them in a sequence. As DevOps aims to transform the way organizations develop and deliver IT products and services, it needs agile principles to do so. Continuous integration and continuous delivery of valuable software are the keys to delivering products and services to customers more frequently and satisfying the customer with valuable software at a click of a button.然而,持续交付需要持续集成,以便根据客户的要求随时将有价值的软件交付给客户。为了实现这一目标,DevOps 强调自动化。自动化部署管道是 DevOps 中的必备条件,因为持续交付依赖于它。因此,DevOps 的核心是通过排列增值活动并按顺序执行它们来实现敏捷并消除浪费。由于 DevOps 旨在改变组织开发和交付 IT 产品和服务的方式,因此需要敏捷原则来实现这一目标。持续集成和持续交付有价值的软件是更频繁地向客户交付产品和服务以及通过单击按钮即可让客户满意的有价值的软件的关键。
Difference between DevOps and AgileDevOps 和敏捷之间的区别
Agile methodologies and the waterfall model are approaches to software development. In contrast, DevOps is a corporate way of working that strive to promote collaboration between development and production teams by making use of different methodologies. This means that DevOps is not just about being agile or lean. It is more than that. DevOps includes agile and lean principles, systems thinking, the ITIL framework, social psychological beliefs that help organizations to motivate people and many more things.敏捷方法和瀑布模型是软件开发的方法。相比之下,DevOps 是一种企业工作方式,致力于通过使用不同的方法来促进开发和生产团队之间的协作。这意味着 DevOps 不仅仅是敏捷或精益。不仅如此。 DevOps 包括敏捷和精益原则、系统思维、ITIL 框架、帮助组织激励人员的社会心理信念等等。
Relationship between DevOps, agile and leanDevOps、敏捷和精益之间的关系
Professor Josef Langerman in a video states that “there are three ways of working which are: DevOps, lean and automation. DevOps for us is agile, what I mean by agile is continuous delivery, continuous integration. It is all of these modern engineering practices” (Langerman, 2015). Thus, DevOps as a spirit, way of thinking and way of working would not be possible without agile and lean principles. Another thing to mention is automation. As supported by Gartner analysts, automated deployment pipeline is one of the fundamentals of DevOps (Wurster, et al., 2013). These analysts also support that automating deployment pipeline enables a frictionless deployment. Thus, you are DevOps when you are agile and lean.Josef Langerman 教授在视频中指出,“存在三种工作方式:DevOps、精益和自动化。 DevOps 对我们来说就是敏捷,我所说的敏捷是持续交付、持续集成。这就是所有这些现代工程实践”(Langerman,2015)。因此,如果没有敏捷和精益原则,DevOps 作为一种精神、思维方式和工作方式就不可能实现。另一个值得一提的是自动化。正如 Gartner 分析师所支持的那样,自动化部署管道是 DevOps 的基础之一(Wurster 等人,2013 年)。这些分析师还支持自动化部署管道可以实现无摩擦部署。因此,当你敏捷且精益时,你就是 DevOps。
Conclusion 结论
A new way of working that encourages collaboration between development and operations teams to work together is emerging. This is DevOps. It is the next big thing in software development and IT products and services delivery. Through the use of lean and agile principles, systems thinking, ITIL and social psychological beliefs for motivating people, the spirit of DevOps is transforming the way IT products and services are delivered. DevOps is all about people and automation. It integrates the best parts of different software development methodologies and best practices in combination with some of the best social psychological beliefs for motivating people and encouraging the entire organization to work together in order to deliver valuable products and services that satisfy not only the customer but also the people involved in the development and delivery of these IT products and services.一种鼓励开发和运营团队协作的新工作方式正在出现。这就是 DevOps。它是软件开发以及 IT 产品和服务交付领域的下一件大事。通过使用精益和敏捷原则、系统思维、ITIL 和社会心理信念来激励人们,DevOps 精神正在改变 IT 产品和服务的交付方式。 DevOps 的核心是人与自动化。它集成了不同软件开发方法和最佳实践的最佳部分,与一些最佳的社会心理信念相结合,以激励人们并鼓励整个组织共同努力,以提供有价值的产品和服务,不仅满足客户,而且满足客户的需求。参与开发和交付这些 IT 产品和服务的人员。
Waterfall or agile? this depends on the type of system to be developed and the culture of the organization. Agile and lean are based on some commonly shared principles and values that emphasize people by encouraging customer collaboration and fast delivery of valuable software through continuous integration and continuous delivery. However, while agile methods are widely used as an approach to managing software development (scrum) and as a software engineering practice (extreme programming), lean principles were originally designed for improving production systems operations. Despite the difference in terms of application, agile methods use lean principles.瀑布式还是敏捷式?这取决于要开发的系统类型和组织的文化。敏捷和精益基于一些共同的原则和价值观,这些原则和价值观通过鼓励客户协作以及通过持续集成和持续交付快速交付有价值的软件来强调人。然而,虽然敏捷方法被广泛用作管理软件开发(scrum)和软件工程实践(极限编程)的方法,但精益原则最初是为了改进生产系统运营而设计的。尽管在应用方面存在差异,但敏捷方法都使用精益原则。
- Author:NotionNext
- URL:https://tangly1024.com/article/Contrasting%20the%20Waterfall%20Model%2C%20Agile%2C%20Lean%20and%20DevOps
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts