项目进度管理(4-1)关键链法

1 关键链法产生的背景

关键链法(Critical Chain Method,CCM)起源于20世纪80年代,是由Eliyahu M. Goldratt在他的著作《关键链》("Critical Chain")中首次提出和阐述的。Eliyahu M. Goldratt是以色列制造业界的著名人物,也是一位著名的管理学家和作家。他是“约束理论”(Theory of Constraints,TOC)的创始人之一,关键链法是约束理论在项目管理领域的应用之一。

Goldratt在他的著作中指出,传统的项目管理方法,尤其是关键路径法(Critical Path Method,CPM)在解决资源约束和不确定性问题上存在局限性。他认为传统方法中的人为保守估算和缺乏对资源约束的考虑会导致项目的延期和资源浪费。为了应对这些问题,他提出了关键链法作为一种改进的项目管理方法。

关键链法的核心思想是通过资源约束和缓冲管理,减少资源约束可能导致的项目延期风险。Goldratt强调了乐观估算的重要性,鼓励项目团队在考虑资源约束的情况下,对任务的时长进行更积极的估算。他还引入了项目缓冲和资源缓冲的概念,以应对不可预测的延误。

随着时间的推移,关键链法逐渐得到了业界的关注和应用。它在资源约束和不确定性较高的项目中,特别是在复杂的工程和创新领域,显示出了明显的优势。关键链法的理念逐渐演化和完善,被广泛应用于项目管理实践中,为项目管理者提供了一种更具适应性和效率的方法。

总结下来,关键链法的产生背景与传统的项目管理方法在解决资源约束和项目延期问题上的局限性有关。主要有:

  • 资源约束问题: 传统的项目管理方法,如关键路径法(Critical Path Method,CPM),通常不考虑资源的有限性和瓶颈。这导致在资源受限的情况下,项目进度可能会受到影响,因为任务无法同时进行。传统方法可能导致任务在排程时受到资源瓶颈的限制,从而导致项目延期。
  • 人为保守估算: 在传统方法中,为了防止可能的延误,项目管理者倾向于给任务提供保守的时长估算。这样的估算可能过于悲观,导致了任务间的过度缓冲,浪费了潜在的资源和时间。
  • 不确定性: 许多项目面临不确定性和变化,这可能导致任务的实际完成时间与预期有很大差异。传统方法无法灵活应对这种不确定性,导致了项目的不可预测性。

关键链乏旨在解决资源约束和不确定性带来的问题,强调资源的有限性和瓶颈,优化资源的利用,减少人为保守估算带来的延误,从而提高项目的进度控制能力。它的核心思想是通过优化资源约束下的任务顺序、任务时长估算和缓冲管理,以更有效地应对项目管理中的挑战。

2 理解关键链法及其核心概念

关键链法(Critical Chain Method,CCM)是一种项目管理方法,旨在优化项目进度管理,特别是在资源约束和不确定性环境下。它在项目管理中引入了一系列概念,以解决传统关键路径法可能遇到的问题,如资源浪费、人为保守估算等。核心概念主要有:

  • 关键链任务: 在关键链法中,关键链任务是指那些受资源约束影响的任务序列。关键链任务决定了整个项目的完成时间,因为它们受到资源瓶颈的制约。关键链任务是项目中最重要的任务,需要特别关注。
  • 资源约束: 关键链法强调资源的有限性和瓶颈,即在项目中可能存在资源不足的情况。这些资源约束可能来自人力、设备、材料等方面,它们会影响任务的执行时间和项目的进度。
  • 缓冲管理: 关键链法引入了两种类型的缓冲,即项目缓冲和资源缓冲。项目缓冲是用来保护项目的整体完成时间,而资源缓冲是用来保护关键链任务之前的时间,以应对资源约束可能导致的延迟。
  • 乐观估算: 关键链法鼓励使用更乐观的任务时长估算,即在资源得到合理分配和支持的情况下,任务可以更快地完成。这有助于减少人为保守估算可能导致的项目延期。
  • 任务优先级: 关键链法强调关键链任务的优先处理,确保它们得到足够的资源支持。其他非关键链任务的时长则可以相对灵活,以适应资源约束。

通过结合以上核心概念,关键链法试图在项目管理中解决资源约束和不确定性的问题,以提高项目的进度控制和成功交付的概率。它关注资源的合理分配、任务优先级和乐观估算,以最大程度地减少资源约束可能带来的影响。接下来主要针对 资源约束、缓冲管理、乐观估算法进行更详细的解释。

2.1 关键链任务

2.1.1 识别关键链任务

识别受资源约束的任务序列,即关键链任务,是关键链法(Critical Chain Method,CCM)中的重要步骤。这些任务是影响整个项目进度的瓶颈,关键链法的目标是优化它们的排程,以提高项目效率。以下是识别关键链任务的步骤:

  1. 制定任务网络: 创建一个任务网络图,显示任务之间的依赖关系和时间估算。这可以是一个甘特图、项目网络图等。
  2. 识别资源限制: 确定项目中资源的有限性和瓶颈。哪些资源在项目中是稀缺的?哪些资源可能会限制任务的并行执行?
  3. 考虑资源约束: 根据资源限制,从任务网络图中找出那些无法并行执行的任务。这些任务可能因为资源不足而需要等待,成为关键链任务。
  4. 识别最长路径: 在资源约束的条件下,找出整个项目网络中最长的路径,即关键路径。这条路径上的任务通常是关键链任务。
  5. 考虑资源可用性: 在资源约束下,对每个关键路径上的任务考虑实际资源的可用性,以确定是否有其他任务受到资源限制而成为关键链任务。
  6. 考虑资源的优先级: 有些资源可能比其他资源更稀缺,因此它们的瓶颈效应更大。考虑资源的优先级,将更关键的资源引导到关键链任务上。
  7. 进行仿真和分析: 使用仿真工具或项目管理软件,在不同资源限制和排程情况下分析项目的进度。观察哪些任务的延误对整个项目产生了最大影响。
  8. 实际执行情况: 在项目实施过程中,关注任务的实际进展情况。有时资源限制可能会出现在项目执行过程中,因此需要随时调整关键链任务。

总之,识别受资源约束的任务序列,即关键链任务,需要综合考虑资源限制、依赖关系、时间估算等因素。通过合理的分析和实际情况的观察,可以准确定位并优化关键链任务,以提高项目的进度和效率。接下来以案例的形式解读下 具体如何识别:

假设一个公司正在进行新产品的开发项目,需要完成以下几个子任务:A、B、C、D、E、F。每个子任务的预计完成时间和任务关系图如下:

在这个案例中,我们将根据资源约束和依赖关系来识别关键链任务。步骤如下:

@1 制定任务网络: 首先,创建一个任务网络图,显示任务之间的依赖关系。在这个案例中,我们假设任务的依赖关系如下:

  • A -> B -> C -> F
  • A -> D -> E -> F

@2 识别资源限制: 假设在项目中,资源B和E是稀缺的,可能会限制任务的并行执行。

@3 考虑资源约束: 考虑资源B和E的稀缺性,我们可以看到任务B和任务E是无法并行执行的,因为它们共享同一台资源。因此,任务B和任务E是受资源约束的关键链任务。

@4 识别最长路径: 在资源约束的情况下,从任务A开始,我们可以看到最长的路径是:A -> B -> C -> F,它的预计完成时间为5 + 3 + 6 + 2 = 16天。

@5 考虑资源可用性: 由于资源B和E在关键链路径上,我们需要考虑它们的实际可用性,以确定是否有其他任务受到资源限制。假设资源B和E在同一时间只能使用一台,我们可以看到资源约束并没有导致其他任务成为关键链任务。

说明:这里是以一个简化的项目的形式便于大家理解,在实际项目中,还要综合考虑资源的优先级、进行仿真和分析,以及实际执行情况分析等因素,以便更准确地识别关键链任务,优化项目排程,提高项目效率。

通过上述步骤,我们成功地识别出了关键链任务:B和E。这些任务受到资源约束的影响,可能会影响整个项目的进度。在这种情况下,关键链法的优化策略将集中在这些任务上,以提高资源的利用率和整体项目的效率,从而确保项目按时交付。

2.2.2 关键链任务在项目进度中的关键作用

关键链任务在项目进度中的关键作用是决定整个项目的最短完成时间,它们是资源约束下的瓶颈,优化它们的排程可以最大程度地提高项目效率。

2.2 资源约束和缓冲管理的理解

这里以案例的形式来解释资源约束和缓冲管理的概念。考虑一个软件开发项目,需要完成以下几个子任务:A、B、C、D、E、F。每个子任务的预计完成时间和任务关系图如下:

对于这个项目来说,什么是资源约束呢?

在这个项目中,假设任务 C 和任务 E 需要特定的软件环境,而软件环境的资源有限。这意味着在同一时间只能有一个任务使用该资源。因此,任务 C 和任务 E 是受资源约束的关键链任务。此时任务关系图中如果先C后E则有(工期23天):

如果先E后C则有(工期24天):

对于这个项目来说,什么是缓冲管理呢?

在关键链法中,引入了项目缓冲和资源缓冲的概念,以应对不可预测的延误和风险。项目缓冲是用来保护项目的整体完成时间,而资源缓冲是用来保护关键链任务之前的时间。假设在这个项目中,项目的整体完成时间需要在27天内完成。为了保证项目按时交付,我们可以设置3天的项目缓冲。受资源约束的关键链任务 C 预计需要6天完成,但为了避免意外导致的资源不足情况,我们可以设置2天的资源缓冲,以应对可能的延误。类似地,关键链任务 E 需要7天完成,我们可以设置1天的资源缓冲,共3天缓冲期。

在资源约束下(针对先C后E的情况,另一种分析也类似),如果任务 C 实际完成所需的时间超过了估算的6天,项目缓冲和资源缓冲可以帮助我们在不影响整体项目完成时间的情况下进行调整。例如,如果任务 C 实际需要7天完成,那么资源缓冲会被消耗1天,但整体项目完成时间仍然在项目缓冲范围内。但如果C实际需要超过8天,也就是2天的缓冲区用完了,那么就会消耗任务E的缓冲区。如果E的缓冲区也被消耗完了,那么此时就需要采取积极的措施来应对可能的延误风险,以确保项目能够按时完成,比如 任务加速 或者 应急计划等。

通过资源约束和缓冲管理,关键链法试图最大程度地优化资源利用,提高项目的进度控制能力,并确保项目能够按时交付。这种方法在资源有限和不确定性较高的项目中尤其有价值。

2.3 乐观估算法

乐观估算法旨在解决传统项目管理中任务时长估算过于保守导致资源浪费和项目延误的问题。

2.3.1 乐观估算法的背景和起源

传统项目管理方法通常倾向于使用保守估算,以考虑不确定性和风险,这可能导致任务间的过度缓冲和资源的浪费。项目管理者可能会过于谨慎地估算任务的时长,以确保项目能够按时交付。然而,这样的估算可能导致项目变得低效,资源利用不充分,而且整个项目可能会受到不必要的延误。

关键链法的创始人之一,以色列制造业家Eliyahu M. Goldratt在他的著作《关键链》("Critical Chain")中首次提出了乐观估算的概念。Goldratt认为,传统估算方法的保守性是导致项目管理问题的一个关键因素,它使项目变得缓慢、低效,并可能导致任务浪费时间。因此提出了乐观估算法。

2.3.2 乐观估算法的核心思想

乐观估算的核心思想是为任务分配更接近实际情况的、乐观的时长估算,而不是过于保守的估算。这样一来,任务在排程时会更合理地利用资源,减少任务之间的不必要缓冲时间。乐观估算考虑到任务完成可能比预期更快,从而提高资源的利用率和整个项目的效率。

2.3.3 乐观估算法的评估

在应用乐观估算时,项目管理者需要与团队合作,了解任务的实际完成时间,并根据实际情况进行估算。这需要基于团队的能力、资源的可用性和实际执行情况来确定任务的时长。通过这种方式,可以将项目的时间线更接近实际可能的情况,避免了过于保守的估算。

乐观估算法旨在通过更接近实际情况的任务时长估算,减少不必要的缓冲时间,提高资源的利用率,从而优化项目进度并应对不确定性。

2.4 任务优先级设置的原则

虽然每个项目的优先级设置可能因项目特性而异,但设置优先级的基本原则是普适的,因为它们适应于不同项目的特定情况。任务设置原则总结如下:

  • 关键链任务优先:在资源分配和任务调度中,将关键链任务设置为最高优先级。这些任务是项目进度的瓶颈,优化它们的排程可以最大程度地提高项目效率。
  • 资源约束考虑:考虑资源的有限性和稀缺性,将资源优先分配给关键链任务。确保这些任务得到充分支持,以保证项目按时交付。
  • 依赖关系和专业能力: 考虑任务之间的依赖关系,优先处理前置任务,以确保后续任务能够按计划进行。同时,将资源分配给与任务要求最匹配的专业能力,以提高任务的效率和质量。
  • 实时调整和沟通: 随着项目进展,随时根据实际情况调整资源分配和任务优先级。跨部门合作和沟通是确保优先级设置成功的关键因素。

3 实战案例-新产品开发项目的关键链法应用

假设一个公司计划开发一款新产品,涉及以下子任务:A、B、C、D、E、F。每个子任务的预计完成时间和资源需求如下:

  • A: 设计产品(预计3天,需要设计师资源)
  • B: 制造原型(预计5天,需要系统架构师资源)
  • C: 测试原型(预计4天,需要测试人员资源)
  • D: 优化设计(预计2天,需要设计师资源)
  • E: 批量生产(预计6天,需要系统架构师资源)
  • F: 市场推广(预计3天,需要市场专员资源)

任务关系图如下所示:

资源约束:公司只有一名设计师、一名系统架构师、一名测试人员和一名市场专员。在这个案例中,我们将看看如何应用关键链法来优化项目排程。步骤如下:

  1. 识别关键链任务: 根据资源约束和依赖关系,我们确定关键链任务。任务B和任务E由于需要系统架构师资源,成为关键链任务。
  2. 优化资源分配: 由于只有一名系统架构师,将系统架构师优先分配给关键链任务B和E,确保它们能够得到充分支持。
  3. 创建缓冲区: 在关键链任务B和E的后面,创建项目缓冲区,以便处理不可预测的延误。假设缓冲时间为2天。
  4. 设置资源缓冲: 考虑系统架构师资源的稀缺性,设置资源缓冲为1天,以确保关键链任务B和E受到足够的支持。
  5. 任务优化: 使用乐观估算法来确定实际的任务期限。假设任务B和任务E的乐观估算时间分别为4天和5天。考虑资源约束和资源缓冲,确定任务的开始时间和完成时间。

通过以上步骤,关键链法应用于新产品开发项目中,我们可以确保关键链任务(B和E)得到优先处理,系统架构师资源得到最大化利用,同时设置了缓冲区来应对不可预测的延误。这将使项目能够更有弹性地应对变化,提高项目的效率,并确保项目按时交付。

4 关键链法核心理念和应用方法总结

4.1 关键链法核心理念:

  • 关键链任务: 确定项目中资源约束下的关键链任务,它们是项目进度的瓶颈,决定整个项目的完成时间。
  • 资源约束: 优先考虑资源的有限性和稀缺性,将资源分配给关键链任务,以最大化项目效率。
  • 资源缓冲和项目缓冲: 创建缓冲区来应对不可预测的延误,使项目保持弹性。资源缓冲用于保护关键链任务,项目缓冲用于保护整个项目进度。
  • 任务优化: 使用乐观估算法来确定任务的实际期限,考虑资源约束和缓冲时间。确保任务在资源约束下能够及时完成。

4.2 关键链法应用方法

  • 识别关键链任务: 根据资源约束和依赖关系,确定关键链任务,它们是项目进度的关键瓶颈。
  • 优化资源分配: 将资源优先分配给关键链任务,确保它们得到充分支持,以保证项目按时交付。
  • 创建缓冲区: 在关键链任务后面创建项目缓冲区,以便应对不可预测的延误。
  • 设置资源缓冲: 针对关键链任务,设置资源缓冲,以确保它们受到足够的支持,避免资源约束影响进度。
  • 任务优化和实时调整: 使用乐观估算法确定任务的实际期限,考虑资源约束和缓冲时间。随着项目进展,根据实际情况灵活调整任务。

通过将这些核心理念和应用方法结合起来,关键链法能够帮助项目团队应对资源限制和不确定性,提高项目效率,确保项目按时交付。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/53923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫实战零基础(3)——某云音乐

爬取某些云网页音乐,无需app 分析网页第二种方式批量爬取 声明:仅供参考学习,参考,若有不足,欢迎指正 你是不是遇到过这种情况,在pc端上音乐无法下载,必须下载客户端才能下载? 那么&…

c语言每日一练(11)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

面试之快速学习计算机网络-http

1. HTTP常见状态码 2. 3开头重定向,4开头客户端错误,5开头服务端错误 2. HTTP 报文 1. start-line:请求行,可以为以下两者之一: 请求行: GET /hello-world2.html HTTP/1.1状态行:HTTP/1.1 200…

数据库——Redis 单线程模型详解

文章目录 Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 (Netty 的线程模型也基于 Reactor 模式,Reactor 模式不愧是高性能 IO 的基石),这套事件处理模型对应的是 Redis 中的文件事件处理器(file …

大模型是什么?泰迪大模型能够解决企业哪些痛点?

什么是大模型? 大模型是指模型具有庞大的参数规模和复杂程度的机器学习模型。在深度学习领域,大模型通常是指具有数百万到数十亿参数的神经网络模型。这些模型需要大量的计算资源和存储空间来训练和存储,并且往往需要进行分布式计算和特殊…

一百六十五、Kettle——用海豚调度器调度Linux资源库中的kettle任务脚本(亲测、附流程截图)

一、目的 在Linux上脚本运行kettle的转换任务、无论是Linux本地还是Linux资源库都成功后,接下来就是用海豚调度Linux上kettle任务 尤其是团队开发中,基本都要使用共享资源库,所以我直接使用海豚调度Linux资源库的kettle任务脚本 二、前提条…

<C++> 内存管理

1.C/C内存分布 让我们先来看看下面这段代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char *pChar3 "abcd";int *ptr1 (int *) mal…

【Java 高阶】一文精通 Spring MVC - 转发重定向(四)

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

芯讯通SIMCOM A7680C (4G Cat.1)AT指令测试 TCP通信过程

A7680C TCP通信 1、文档准备 去SIMCOM官网找到A7680C的AT指令集 AT指令官网 进入官网有这么多AT指令文件,只需要找到你需要用到的,这里我们用到了HTTP和TCP的,所以下载这两个即可。 2、串口助手 任意准备一个串口助手即可 这里我使用的是XC…

浅析Python爬虫ip程序延迟和吞吐量影响因素

作为一名资深的爬虫程序员,今天我们很有必要来聊聊Python爬虫ip程序的延迟和吞吐量,这是影响我们爬取效率的重要因素。这里我们会提供一些实用的解决方案,让你的爬虫程序飞起来! 网络延迟 首先,让我们来看看网络延迟对…

软件测试知识点总结(一)

文章目录 前言一. 什么是软件测试二. 软件测试和软件调试的区别三. 软件测试和研发的区别四. 优秀的测试人员所应该具备的素质总结 前言 在现实生活中的很多场景下,我们都会进行测试。 比如买件衣服,我们需要看衣服是不是穿着好看,衣服材质如…

sql server删除历史数据

1 函数 datediff函数: DATEDIFF ( datepart , startdate , enddate )datepart的取值可以是year,quarter,Month,dayofyear,Day,Week,Hour,minute,second,millisecond startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。 2 例子 删除2023年以…

核污水会造成什么影响

目录 1.什么是核污水 2.什么是氚元素 3.氚元素的半衰期 4.核污水对人类健康的影响 5.我们应该采取什么措施保护自己 1.什么是核污水 核污水是指核设施(如核电站、核燃料回收厂等)产生的含有放射性物质的废水。核污水中可能含有放射性同位素、放射性…

Oracle查锁表(史上最全)

Oracle查锁表 Oracle分两种锁,一种是DDL锁,一种是DML锁。一、Oracle DDL锁的解锁(dba_ddl_locks视图)1.1、查表的DDL锁的详情(kill session脚本、表名、执行锁表的SQL等)1.2、解锁表的DDL锁1.2.1、解锁表的…

sql入门-多表查询

案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…

卷积神经网络——下篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.10、⭐批量归一化5.10.1、理论部分5.10.2、代码部分 5.11、⭐残差网络(ResNet)5.11.1、理论部分5.11.2、代码部分 话题闲谈 5、卷积神经网络 5.10、⭐批量归一化 5.10.1、理论部分 批量归一化可以解决深层网络中梯度消失和…

使用PyMuPDF添加PDF水印

使用Python添加PDF水印的博客文章。 C:\pythoncode\new\pdfwatermark.py 使用Python在PDF中添加水印 在日常工作中,我们经常需要对PDF文件进行处理。其中一项常见的需求是向PDF文件添加水印,以保护文件的版权或标识文件的来源。本文将介绍如何使用Py…

Eureka:集群环境配置

创建三个集群 导包 <!-- 导包--><dependencies><!-- Eureka -server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.…

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

Form tools是一套可搭配PHP和SQL的表單開源工具&#xff0c;可讓開發者靈活運用&#xff0c;同時其有數個表單模板和應用模組供挑選&#xff0c;方便且彈性。Form tools已開發超過20年&#xff0c;為不同領域的需求者或開發者提供一個自由和開放的平台&#xff0c;使他們可建構…

【C++】—— C++11之可变参数模板

前言&#xff1a; 在C语言中&#xff0c;我们谈论了有关可变参数的相关知识。在C11中引入了一个新特性---即可变参数模板。本期&#xff0c;我们将要介绍的就是有关可变参数模板的相关知识&#xff01;&#xff01;&#xff01; 目录 序言 &#xff08;一&#xff09;可变参…