每当我谈到敏捷宣言时,我都会看到人们扬起眉毛。他们了解敏捷并致力于它,但他们以前没有听说过这个术语。因此,在本文中,我将重点关注:
- 什么是敏捷宣言——我们将讨论敏捷宣言是如何出现的以及为什么需要它?
- 敏捷宣言的发展——这将包括敏捷宣言是如何发展的?它与其他方法和程序有何不同?
- 敏捷宣言的目的——借助示例,我们将尝试理解敏捷宣言的目的?我们还将讨论它如何解决其他模型存在的问题。
- 敏捷价值观——我们将详细讨论四个核心价值观,并了解拥有这些价值观的目的是什么
- 敏捷原则-借助示例,我们将了解敏捷宣言的所有 12 条原则。
让我们开始理解敏捷宣言——
什么是敏捷宣言?
敏捷宣言由17 位开发人员于2001年2 月 11 日至 13 日在犹他州 Snowbird 滑雪胜地的一次郊游中正式制作。
制定宣言的开发人员称自己为敏捷联盟。他们正在寻求对传统的软件开发流程进行重组,他们认为这些流程繁琐、反应迟钝、过于热衷和专注于文档。他们希望平衡并改善客户参与度。他们既不反对文档,也不赞成它,就像我们过去一样,采用传统方法,这些方法从未被维护和重用。他们想要计划文档并将其限制为所需的信息。他们对软件开发的新方法是“做它并帮助别人做它”。
为了明确他们的观点和优先级,他们创建了这个文档并将其称为“敏捷宣言”。当他们构建这个文档时,他们不知道他们的想法会以多快的速度传播到他们的行业之外,并且在今天,敏捷宣言被接受了全球范围内。
敏捷宣言是一个宣言,它阐明了其作者所相信的四个基本价值观和十二个原则;软件开发人员应该用它来指导他们的开发工作。
敏捷宣言的发展:
敏捷软件开发方法的定义是它致力于定期和增量地开发软件。敏捷方法为用户提供了一个新版本的软件开发,这是通过按照承诺进行短暂的工作时间来完成的,这些时间段称为Sprint。
敏捷宣言就是要优先考虑以下四个因素:
- 人们
- 产品
- 沟通
- 响应能力
这种敏捷过程与传统的软件开发方法完全不同,在传统的软件开发方法中,开发人员通常会从客户那里获取所有需求,编译它们,然后一次性开发软件。在这些方法中,软件将在项目周期的最后发布,这个开发团队,即敏捷联盟正在寻找这些类型的繁琐文档流程的替代方案,如瀑布模型,他们将其定义为“文档驱动的重量级软件开发流程”。
敏捷宣言的目的
敏捷宣言中的四个价值观促进了以质量为重点的软件开发过程。他们通过创建满足客户期望和需求的软件来做到这一点。
让我们借助一个例子来理解这一点
这是你孩子的考试月,他有他的:
- 下周交作业
- 为下周的考试做准备
- 作业将在下个月审查和发送。
现在要提供质量,即要获得好成绩并在考试中取得好成绩,您需要根据要求对活动进行优先级排序。
- 由于作业需要下周提交,所以你会要求你的孩子在两天内先完成作业,然后
- 他可以根据他接下来三天的考试时间表准备考试
- 最后,他可以开始处理作业,因为它们将在下个月提交。
这正是敏捷价值观所做的。敏捷专注于客户的需求;它不参与制定计划和情节;它只是顺其自然,适用于小任务。
敏捷不是“你告诉我你想要的一切”,这就是所谓的需求收集;这个步骤可能需要几个月的时间来记录它。只有在文档之后,您才能开始进行软件开发,并且您将在最后一步获得工作产品。这里的问题将是“做出改变”。
敏捷的价值观和原则使它与众不同。他们使敏捷与变化一起工作。我们首先询问客户他们想要什么,并为他们提供第一个产品,如果需要任何进一步的更改,可以在下一次迭代中进行调整。
就像您的食品卡车会迅速开始工作,而不是等待几个月并制定启动大型食品链的计划。
十二项原则的目的是创造和支持以下工作环境:
- 以客户为中心
- 与业务目标保持一致
- 随着用户需求和市场力量的变化迅速做出响应和调整
敏捷项目以客户为中心,鼓励客户指导和参与。敏捷旨在使开发与业务需求保持一致,敏捷的成功是显而易见的。
敏捷核心价值观
每个敏捷方法论都以不同的方式使用四个核心价值观,所有这些都有助于交付高质量和可工作的软件。
- 个人和交互胜过过程和工具:在软件开发行业中,会有提供需求的人,即业务,以及从事规范工作的人,即软件开发人员,这就是沟通的原因业务和开发团队之间的关系非常重要。为了清楚地了解需要什么以及确切的需求是什么,业务和开发人员之间需要进行适当的沟通,因此我们应该重视人员、他们的需求而不是流程和工具,因为如果需求不明确,我们可以不要创造客户希望我们创造的东西。
- 交付可工作的软件优于全面的文档:敏捷不支持消除文档,而是将其限制为仅需要的文档。这样做的主要原因是,需求、规格、招股说明书、设计文件、测试计划、批准等许多文件用于导致交付延迟。在敏捷中,我们创建“用户故事”而不是所有这些文档,这足以让开发人员开始一项任务。“用户故事”只不过是客户根据其优先级给出的待办事项列表。在敏捷中,我们的主要重点是在各自的时期提供工作功能,而不是根据客户的要求创建大量文档。
- 与客户协作优于合同谈判:通常,在任何过程中,客户都会与开发团队互动,就需求、时间表进行详细谈判,但那是在工作开始之前。工作完成后,他们通常会进行交互以获取反馈和输入。在敏捷中 - 客户在整个过程中参与和协作,因为我们每周(每个时期)为他们提供价值,因此它使开发团队更容易满足客户的需求。每周向客户交付价值有助于开发人员详细了解客户的需求,最终有助于及时交付项目。
- 响应和实施变更胜于遵循计划:在大多数传统方法中,变更被认为是一种费用,因为需要进行大量返工,因为在完成项目交付后会给出反馈。在敏捷中 - 优先级可以从一个迭代转移到另一个迭代,即周期性地,并且新特性/更改可以包含在下一个可能的迭代中。此外,根据敏捷的说法,改变不是费用;它为项目增加了价值。
敏捷原则
从那时起,原始文件被不同的团体使用;从销售到营销再到餐厅,敏捷已经普及。这种普遍性源于一组可以广泛统一应用、快速学习且很少能完全掌握的原则。十二项原则是这些方法的指导原则。他们描述了欢迎变革的文化,客户是工作的重点。
这 12 条原则可以分为四个不同的组,即
- 消费者满意度
- 质量
- 团队合作
- 项目管理
以下是所有 12 条原则及其所属组的列表:
类别 | 敏捷宣言原则 |
---|---|
消费者满意度 | 通过早期和持续的软件交付实现客户满意度 面对面互动 定期反思如何变得更有效 |
质量 | 在整个开发过程中适应不断变化的需求在整个项目中简化业务和开发人员之间的协作 |
团队合作 | 及时、频繁地交付工作软件 相信、支持和鼓励相关人员 敏捷流程支持一致的开发步伐 自组织团队鼓励高质量 |
项目管理 | 工作软件是首要措施 注重技术细节和设计提高敏捷性。 |
我们将借助一个例子来理解这些原则。
假设您想在食物接头较少的区域开始您的食物链,为此您可以做的是-
首先,用你拥有的任何东西开始一辆小型食品卡车,并最终成长。
我们将坚持这个例子,并借助它来解释原理。以下是发展的关键原则。
让客户满意:通过早期和持续的软件交付让客户满意。我们的首要任务是通过早期和持续交付有价值的软件来满足客户。
现在在我们的例子中,我们的方法是用你最擅长的东西启动一辆食品卡车,用一些招牌菜开始喂人。我们不会让我们的客户在我们计划的时候等待。
欢迎更改需求:在整个开发过程中适应不断变化的需求。所有不断变化的需求总是受欢迎的,即使是在开发的后期阶段。敏捷流程利用变化来获得客户的竞争优势。每次功能交付后,都会收集客户反馈,如果客户提出任何更改建议,则会将其纳入下一阶段。
在同一个例子中,我们已经启动了一辆小型食品卡车,现在我们将看到人们如何响应当前可用的菜肴,并根据客户的需要改变我们的口味、香料和菜肴。我们的重点是为客户提供更好的质量。
经常交付工作软件:在这里,我们必须每个周期都向客户交付价值,这个周期可能从一周到几个月不等,周期越短越好。这部分由从事 sprint 的团队负责。他们将在每个 sprint 结束时交付工作软件,客户了解进度。这完全是关于问责制和时间管理。
以餐车为例,如果顾客点了五道菜,那么我们可以询问他的优先顺序,并可以在一点时间间隔内送达。当您及时满足他的要求时,这将使客户感到高兴。
每日协作:整个项目中业务和开发人员之间的协作。在整个项目中,业务人员和软件开发人员每天都一起工作。沟通是敏捷中的关键,在这里客户和开发人员是不断沟通的,这使得它不同于传统的方法。
使用我们的食品卡车,我们将始终与客户保持联系,并将获得持续的实时反馈,这将有助于改进。
激励个人:相信、支持和鼓励相关人员:围绕有积极性的个人创建项目,为他们提供所需的环境和支持,并相信他们能够完成工作。参与项目的人应该始终相互支持。
对于我们的餐车,我们需要不断地激励我们的厨师为那些快乐和满足的面孔付出最大的努力,这是他们的奖励,这将有助于我们实现目标。
面对面的对话:在开发团队内部和内部传达信息的最有效和最有效的方法是面对面的对话。在这里,我们有来自企业和组织内部的面对面互动。
这与我们的示例很吻合,因为如果有人对您的食物感到满意;它会反映在他的脸上。我们所要做的就是保持与人的互动。我们需要征求反馈以进行持续改进;因为没有什么比面对面的互动更好的了,因为这会给你实时的反馈和要求。
通过工作产品衡量进度:交付的软件功能正常且工作正常是衡量进度的基本因素。我们的首要任务是在每个时期都提供一个有效的功能,如果我们能做到,我们就走在了正确的轨道上。
如果我们的食品卡车,一个热门菜和重复订单将是我们的成功措施。如果一道菜很受欢迎,这意味着你走在了正确的轨道上。
促进可持续发展:支持一致发展步伐的敏捷流程:团队建立或制定促进可持续发展的流程。客户、开发人员和用户应该能够无限期地保持恒定的步伐,以避免项目中的任何延误。
对于我们的餐车,我们有一个由清洁工、厨师和一些助手组成的团队,我们必须确保他们所有人协同工作,并及时将所需的菜肴送到顾客手中。如果有任何瓶颈,例如无法工作的烤箱,则需要及时解决以保持一致的速度。
持续关注技术卓越:关注技术细节和良好的设计可提高敏捷性。正确的技能和良好的设计可确保团队保持步伐,不断改进产品并保持变革。
就我们的食品卡车而言,我们必须专注于为客户提供质量。为此,我们需要确保我们使用的产品质量正确,香料用量正确,食物不要太油腻,不要煮过头或未煮熟等。这些将是我们的技术细节 如果我们的食品卡车我们需要注意提供卓越的品质。
简单是必不可少的:简单是最大化工作量的艺术。发展到足以暂时完成工作。我们不必生产目前不需要的东西。这里的简单意味着不要进入太多的文档。
这就是为什么我们会为我们的食品卡车保持简单的东西和菜单并且不会包含太多的原因,这甚至是不需要的,并且会增加不必要的混乱。我们只会拥有客户需要或喜欢的东西。
自组织团队:这鼓励了卓越的品质。最好的架构、需求和设计来自自组织团队。如果团队内部是有组织的;项目中很少发生错误和延误。
在我们的食品卡车案例中,如果我们的团队乐于完成他们的工作,获得良好的反馈和奖励,那么没有什么能阻止他们提供最好的服务,所以这是关键部分。
定期反思持续改进:如何变得更有生产力。团队定期反思如何变得更有效,并相应地调整和调整其行为。客户的定期反馈有助于我们实现这一目标。
对于我们的餐车也是如此,根据客户的要求和行为进行定期改进将导致我们成功,如果我们的一辆餐车成功,我们可以继续前进并启动另一辆餐车,最终可以启动食物链。
以客户为中心和专注于沟通为敏捷宣言带来了成功。它只是一种经过验证的技术,不仅对软件行业而且对其他行业都有影响,如今它本身已成为一个行业。