本章将帮助您了解什么是项目以及我们如何管理项目。在这里,您将学习高级项目管理活动。除此之外,我们还将讨论项目管理方法以及我们为什么需要它们。我们还将了解不同的、常用的项目管理方法,如瀑布、敏捷、Scrum、功能驱动开发、DevOps和Microsoft Sure Step及其阶段。一旦您对项目管理方法有了想法,我们将讨论您在决定哪种方法最适合Dynamics 365 CE实施时需要考虑的主要问题。
我们将在本章中讨论的主要主题如下:
在讨论项目管理方法之前,让我们首先确定什么是项目。项目是一组临时活动,通常被称为软件行业的任务,应该在特定的时间和预算内完成,以实现特定的目标。任务必须在特定的时间段内启动和完成。您的项目工期和项目预算取决于许多因素,包括我们将在项目中包括多少活动,以及完成这组活动需要多少资源。例如,与开发新软件产品相比,任何软件的维护项目的持续时间和预算都较小。
定义项目活动也称为项目范围界定。项目范围是负责定义需要什么以及如何实现我们的要求。最佳实践是在开始处理项目的任何活动之前,正确定义项目范围。在项目启动后添加活动可能会影响项目的时间表和预算。在下图中,您可以看到,项目分为三个高级步骤,我们从定义项目活动开始,然后开始处理这些活动,最后完成所有活动以完成项目:
项目活动在不同阶段进行,以便更好地管理,并对产出质量进行更多的控制。这些阶段也称为项目阶段。项目阶段通常取决于前一阶段的输出,因此下一阶段可以将前一阶段输出作为输入。
让我们举一个组装自行车的简单例子,其中一个阶段是获得所有自行车零件,下一阶段是将它们组装在一起,形成一个完整的自行车。项目阶段本质上是渐进的,这意味着项目的每个阶段都需要添加一些改进,以实现项目的总体目标。既然我们已经对项目有了很好的了解,让我们来讨论一下项目管理。
项目管理层负责执行之前的所有阶段,以确保根据客户的项目预期实现项目目标。为了有效地实施项目管理,我们将在下一个主题中讨论不同的项目管理方法。
在进行项目时,项目经理会使用不同的技术和工具来保持项目的有序性,并按时交付。项目经理做出的最关键的决定之一是选择合适的项目管理方法。我们在上一个主题中了解了常见的项目管理阶段。在实施这些阶段时,项目经理需要遵循特定的实践来规划、管理和执行项目,这就是我们所说的项目管理方法。
我们也可以称之为一种模型,可以应用于项目管理,以在设定的项目时间表和预算内实现项目目标。项目管理方法帮助管理者从项目的初始阶段到交付阶段管理他们的项目。它可以帮助管理者为不同的活动建立一个协议。例如,项目团队将如何沟通,如何将任务分配给团队成员,设置质量控制,管理项目时间表,以及交付项目输出。
毫无疑问,使用项目管理方法通过标准化业务流程、建立沟通规则、制定指导方针和降低项目失败风险,为组织提供了许多优势。公司可以采用不同的方法来实施项目,但项目将使用哪种项目管理方法取决于项目经理。项目经理根据他们过去的经验和行业要求使用项目方法,因为并非所有方法都可以用于每个项目。例如,在进行建筑项目时,特定的项目方法可能比软件项目中常见的方法更有帮助。
这里列出了我们将要研究的各种项目管理方法:
这是用于项目管理的最流行和最简单的方法之一。在这种方法中,项目被划分为顺序任务,然后逐一执行,直到所有任务都完成。这类似于瀑布,水从上到下流动,因此得名。在这种方法中,您不能返回到前一阶段。相反,唯一可能的选择是回到最初阶段,重新开始。一级产生的输出变成下一级的输入。
在Waterfall方法中,每个阶段都会进行全面的文档记录,这在进行维护或项目期间新成员加入时非常有用。他们可以很容易地参考文档来了解项目的详细信息。瀑布模型将一个完整的项目分为六个不同的阶段。通过使用下图,我们可以了解这些阶段是如何逐一实现的:
让我们详细讨论这些阶段:
瀑布法是软件和建筑行业的一种常见方法。这种方法强调在初始阶段进一步收集所有需求,并将其适当地记录下来,以便在后续阶段使用。随着项目一个接一个地经过易于理解的阶段,这个模型很容易理解。然而,这个模型不能用于在初始阶段很难找到所有需求的项目。这是因为一旦项目启动,就很难添加新的需求。
这是另一个非常古老的项目管理模型,可以被认为是瀑布模型和迭代模型的组合。在螺旋模型中,为每个迭代确定一个需求列表,称为螺旋。每个螺旋的输出都是该项目的一个小原型。客户可以查看此原型并提供反馈。同样,也确定了下一个螺旋的需求。遵循此过程,直到项目完成并准备交付。正如我们在下面的Spiral模型图中所看到的,每个Spiral中都开发了一个小型原型:
螺旋模型有四个阶段。下面我们来讨论一下:
该模型适用于大型项目,客户可以在每次迭代后审查项目进度,并提供有关原型的反馈。它还允许在项目启动后进行需求更改。项目风险在早期阶段就被识别并修复,以避免项目失败。然而,这种模型不能应用于小型项目,风险分析需要更多经验丰富的资源。
这是目前使用的一种非常常见的项目管理方法,尤其是用于管理软件开发项目。当启动项目时不清楚完整的需求,但项目利益相关者对他们想要的东西有一个总体的想法时,这个模型最适合。敏捷方法论基本上实现了在多次迭代中开发软件的思想;每一次迭代都使用完整的软件开发生命周期(SDLC)过程,利益相关者也不断地参与到每一次的迭代中来提供他们的反馈。
在这个模型中,项目在迭代中移动到下一个级别,并且项目任务是根据它们的优先级执行的。项目任务的优先级列表在敏捷中被称为产品积压。团队成员共同处理产品积压工作,并根据他们的优先级提供任务估计。
SDLC是软件开发公司用来开发软件的过程。它分为许多阶段,从需求收集开始,到维护阶段结束。
我们可以使用下图来定义敏捷方法论,该图解释了高级敏捷方法论过程:
与其他方法论相比,敏捷方法论可以帮助团队使用小迭代快速交付更好的产品。敏捷方法论使用以下主要原则:
敏捷方法论保持持续的团队沟通,包括从开发人员到客户的每个团队成员。敏捷团队不仅仅由项目经理来管理;相反,团队管理是每个团队成员的责任。每天的电话会议被称为Scrum电话会议,讨论项目进展和任何障碍。在每次sprint(通常从一周到四周)之后,都会发布一个包含完整文档的工作模型。
最终用户在每次冲刺后都会进行用户验收测试,与利益相关者的持续互动也确保了项目朝着正确的方向发展。sprint之后发布的工作模型总是基于客户的期望。敏捷项目管理能够快速应对变化。利用这一原则,项目团队
快速响应客户、最终用户、利益相关者和市场趋势,确保最终产品对最终用户有帮助,并且是他们真正想要使用的产品。
如今,敏捷被用作其他方法论的框架,如Scrum和看板,整个项目通过不断迭代和协作进行管理。毫无疑问,敏捷可以帮助团队提高灵活性和协作性,这最终会导致一个更成功的项目,在项目启动过程中,最终目标没有明确定义。
Scrum基本上是用来实现敏捷方法论的,所以我们也可以把它称为敏捷的一个子集。使用Scrum,我们在每冲刺一到两周后都会向客户交付增量产品。冲刺结束后,每个团队成员都会开会为下一次冲刺做计划。Scrum中涉及的一些高级活动是sprint计划、每日站立电话、sprint评审以及每次sprint之后的构建发布。Scrum通常用于需求变化非常快的情况。下图表示了在Scrum方法中执行的完整的常见步骤:
现在让我们讨论一下Scrum方法中包含的常见阶段。
第一阶段是收集客户的高级需求并准备产品积压工作。客户需求是根据其在产品积压工作中的优先级排序的。这些要求由产品所有者确定优先级。产品积压工作包括客户在最终产品中期望的所有功能。这些需求被称为用户故事。
用户故事从最终用户的角度提供了有关需求的详细信息,重点是他们想做什么或想在产品中拥有什么功能。这些用户故事不包括完整的需求集,而是只包括客户在启动项目时脑海中的功能。客户期望的特性列表可以在实现过程中更改,但产品积压仍然是Scrum实现过程的需求文档。此文档用作sprint计划的基础文档。
在准备好产品积压工作之后,下一步是计划冲刺。冲刺计划是在每次冲刺结束后完成的。在sprint计划中,Scrum团队选择一个将包含在当前sprint中的需求列表。在sprint规划中回答了以下一些问题:
sprint计划的输出是sprint backlog和时间估计。根据优先级、工作量估计和团队能力,从产品积压中选择的需求包含在sprint积压中。Scrum方法论为团队提供了关于在当前sprint中实现的用户故事的灵活性,因为sprint积压项目可以从一个sprint移动到另一个。如果任何sprint积压项目在当前sprint期间没有完成,那么它们将被移动到下一个sprint。
在sprint期间,团队成员每天都会召开Scrum会议,会议时间不应超过15分钟。这些Scrum会议由Scrum团队成员管理。Scrum Master充当团队教练,激励每一位团队成员发挥最佳表现。在日常会议中,团队成员向团队更新他们的任务状态、他们将要处理的下一项任务,并讨论障碍(如果有的话)。
每日电话帮助团队获取有关用户故事状态的更新。任何潜在的问题都可以提前确定,团队共同努力解决。
在每日站会中,消耗图表会根据球队的状态进行更新。燃尽图可以被视为每日Scrum调用的输出,它可以帮助每个团队成员了解还有多少任务。
sprint审查是在每次sprint结束时完成的。在sprint评审过程中,将向Scrum团队、利益相关者和最终用户演示已完成的用户故事。
利益相关者和最终用户在演示后提供他们的反馈,Scrum团队相应地对反馈采取行动。
一旦sprint结束,下一步就是完善产品积压工作。在此过程中,会将新的用户故事添加到产品积压工作中,并从中删除不必要的用户故事。如果需要,产品所有者可以更改用户故事的优先级。
毫无疑问,Scrum方法论有助于我们快速实施项目。
较大的项目可以分为多个sprint。就适应新变化的容易程度而言,它非常灵活。例如,如果利益相关者请求一个新功能,产品所有者可以很容易地将它们添加到产品积压工作中。但有时,当利益相关者不断请求新功能时,这会成为项目的风险。
快速应用程序开发(RAD)是另一种用于实现敏捷的方法。RAD现在非常流行,使用这种方法的主要原因是快速有效地构建系统的工作原型。在开发过程中,这种方法在接受更改方面也非常灵活。在这里,花在规划上的时间更少,主要集中在使用迭代步骤开发原型上,这有助于项目经理和利益相关者准确衡量项目进度。
他们可以在使用原型后提供反馈,团队可以快速将其纳入其中。下图解释了RAD方法如何用于项目:
让我们讨论一下RAD中使用的常见阶段。
在这个阶段中,对项目进行需求收集和规划。在RAD方法中,与其他项目方法相比,规划阶段更短。收集需求以了解客户在最终产品中想要什么。本阶段还分析了当前的业务流程。一旦收集到需求,项目在获得客户对需求的批准后进入下一阶段。
在这个阶段,原型的设计和开发就开始了。一个团队处理在早期阶段收集的需求,以准备UI和数据模型。然后,他们根据客户反馈定制UI。在开始代码开发之前,获得客户对UI的批准是非常重要的。一旦设计和数据模型完成,团队就开始为需求编写代码。
单元测试后,向包括利益相关者在内的所有团队成员演示原型。利益相关者提供反馈,然后与团队沟通功能运行良好,但失败了。然后,团队根据提供的反馈对原型进行改进。此阶段根据需求在多次迭代中实现。在整合了所有反馈和请求的更改之后,项目进入下一阶段。
在这个阶段,QA团队执行系统和集成测试,以确保这个新的原型能够与现有系统很好地配合使用。大多数问题已经在早期阶段根据客户反馈得到解决。在RAD中,每个原型都是独立测试的,这减少了整个测试时间。在这个阶段,还测试了开发策略,以确保部署顺利进行。
这是RAD的最后阶段,最终产品发布给最终用户。这个阶段包括最终用户测试、数据迁移和转换到新系统。客户可以记录发布后遇到的任何问题。
RAD有助于在更短的时间内实现更多目标。快速迭代可以适应所要求的新更改,因此最终产品始终基于客户的期望。由于已经进行了集成测试,所以在项目发布期间遇到任何集成问题的情况都不太常见。然而,这种方法只能用于产品开发,其中模块可以独立开发,并且需要更短的开发周期。
Microsoft Sure Step方法由Microsoft开发,用于为客户实施Dynamics产品。Microsoft Sure Step方法论具有实现Dynamics解决方案所需的内置过程和规程。它还包括Dynamics实施过程中各种任务所需的内置文档模板,以及成功实施Dynamics的一套指导方针和最佳实践。Microsoft Sure Step将项目分类,我们将在以下小节中讨论这些分类。
这提供了有关参与Sure Step项目的不同用户的信息,包括客户和咨询方。我们可以使用下图来理解Sure Step方法论项目,并查看有关不同阶段和项目的详细信息:
在上图中,我们可以看到,在Microsoft Sure Step方法中,我们有不同的项目类别,所以让我们逐一讨论这些项目,以了解更多关于它们的信息:
现在我们对项目有了更多的了解,让我们来看看各个阶段。
Microsoft Sure Step方法论还实现了一系列阶段。每个阶段都有其重要性。让我们逐一详细了解这些阶段:
Microsoft Sure Step方法体系为客户实施Microsoft Dynamics所需的时间较少,因为它包括一套工具、所需的模板和最佳实践。
这是继敏捷项目管理方法之后的另一种流行的项目管理方法。它使用一种可视化的方法来管理整个过程中的项目。在这种方法中,工作项是在看板板的帮助下表示的,如下图所示,它允许团队成员随时查看每项工作的状态:
上图中用数字表示的工作项目使用看板卡显示。在前面的看板中,我们可以看到所有工作项的当前状态。To Do是尚未启动的挂起项目的列表,而In Progress项目是正在开发的项目。已完成队列显示所有已完成的项目。看板使用以下基本原则:
该方法中的工作项目可以根据利益相关者的
要求。看板工作项从不绑定到特定的迭代,因此这为开发人员提供了灵活性。团队成员在整个项目中相互协作,以改善看板委员会的工作流程。这种方法最适合小型团队的项目。
功能驱动开发是敏捷家族下的另一种项目管理方法,这意味着它也遵循迭代和增量开发过程。在这种方法中,客户需求被表示为成为产品开发基础的特征。我们可以考虑Scrum中的用户故事等功能。
下图解释了功能驱动开发方法的各个阶段:
让我们更详细地讨论这些阶段:
在前面的五个简单阶段之后,特征驱动开发方法可以用于快速的产品开发。最初没有花太多时间讨论需求细节。相反,整个模型是为了理解项目的高层目标而准备的。然而,这种方法不能与小团队一起使用,因为它需要一位专业的首席架构师来领导团队并监控所有的开发和测试过程。
DevOps填补了开发团队和运营团队之间的空白。DevOps这个词是“开发”和“运营”的组合。这有助于自动化开发和部署项目的过程,更快、更高效。DevOps基本上使用敏捷来创建一个价值驱动的环境,用于快速部署软件产品和功能。
下图为我们提供了有关DevOps方法论的基本思想:
让我们讨论一下DevOps的常见阶段:
使用DevOps的主要优势是使整个开发和发布过程更快。因此,产品可以以更快的方式发布给用户,因为所有任务都是自动化的,不需要任何手动操作。当我们经常需要项目发布时,这非常有用。自动化工具的使用确保了高质量、高效率的产品。因此,产品可以更快地投放市场。发布自动化还将部署失败的风险降至最低,从而显著减少了错误的数量。
除了上述方法之外,有时,公司还创建自己的混合项目管理方法,其中包括各种项目管理方法的模板、工具和流程。现在,我们讨论了最流行的项目管理方法,并了解到每种方法都有其优缺点。在规划项目实施时,首要任务是选择一种适合您项目的项目管理方法,以使实施更加顺利和高效。现在,在下一节中,我们将讨论前面的哪种方法可以用于实现Dynamics365CE。
Microsoft Dynamics 365 CE可以使用不同的项目管理方法来实现,如Sure Step、Agile、Scrum、Waterfall和DevOps,我们在项目管理方法论部分对此进行了讨论。项目经理在为您的组织选择正确的实施方法方面发挥着关键作用。项目经理选择哪种方法取决于他们过去的项目经验,有时这是由为您实施Dynamics 365 CE的Microsoft合作伙伴公司决定的。但是,在为您的公司选择正确的方法论之前,让我们首先了解为什么在为组织实施Dynamics 365 CE时使用项目管理方法论非常重要。
使用项目管理方法来实施Dynamics 365 CE的最常见原因包括以下几点:
既然我们知道了使用项目管理方法的主要原因,接下来的问题就来了:哪种方法最适合Dynamics 365 CE的实施?在讨论合适的方法之前,我们应该试着回答以下问题:
一旦我们对前面的所有问题都有了答案,就很容易选择合适的Dynamics365CE实施方法。总之,如果所有项目需求都已知,客户无法进行日常沟通,并且他们正在为组织寻找单一版本,则可以为您的Dynamics 365 CE实施选择瀑布模型。但请记住,瀑布模型增加了项目失败的高风险,因为只有在瀑布方法的所有阶段结束后,客户才需要等待看到产品。在使用瀑布模型时,最终解决方案可能不是基于客户的期望,因为客户对瀑布模型的参与程度很低。
敏捷家族方法论最适合基于当前市场趋势。客户希望尽快高效地将产品推向市场。
在敏捷中,不同时更改整个系统也是一种正常的做法,这也会带来集成问题,尤其是当客户使用多个软件应用程序时。
使用DevOps方法可以帮助发布自动化,并且可以轻松地执行集成。如今,Scrum在Dynamics365CE实现中也非常流行,在那里,每个人都可以清楚地看到整个sprint中正在进行的过程。来自客户的新更改请求可以轻松快速地进行调整。Scrum在Dynamics365CE实现中增加了高成功率,因为客户从最初开始到每次sprint的发布都参与其中。每天的单口相声可以帮助我们轻松识别任何潜在的未来问题,并且这些问题可以及时解决。
总结:
在本章中,我们了解了项目以及如何有效地管理项目。我们还讨论了项目管理方法论的重要性以及用于项目管理的不同流行方法论。我们还讨论了您需要找到的主要问题的答案,以选择最适合Dynamics 365 CE实施的项目方法。现在,我们对项目管理和项目管理方法有了很好的了解。
在下一章中,我们将讨论如何为您的Dynamics365CE实现执行需求收集和分析。