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

news2024/10/8 17:56:00

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.coloradmin.cn/o/932876.html

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

相关文章

Java 时间String转Date类型

Testpublic void testTime() throws ParseException {SimpleDateFormat format new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//法一:String time111 "2023-08-14 18:13:10";Date date format.parse(time111);System.out.println("法一…

4.18 TCP 和 UDP 可以使用同一个端口吗?

目录 TCP 和 UDP 可以同时绑定相同的端口吗? 多个 TCP 服务进程可以绑定同一个端口吗? 重启 TCP 服务进程时,为什么会有“Address in use”的报错信息? 重启 TCP 服务进程时,如何避免“Address in use”的报错信息…

Java之API详解之System类的详解

2 System类 2.1 概述 tips:了解内容 查看API文档,我们可以看到API文档中关于System类的定义如下: System类所在包为java.lang包,因此在使用的时候不需要进行导包。并且System类被final修饰了,因此该类是不能被继承的。…

【C++】C++ 引用详解 ⑤ ( 函数 “ 引用类型返回值 “ 当左值被赋值 )

文章目录 一、函数返回值不能是 " 局部变量 " 的引用或指针1、函数返回值常用用法2、分析函数 " 普通返回值 " 做左值的情况3、分析函数 " 引用返回值 " 做左值的情况 函数返回值 能作为 左值 , 是很重要的概念 , 这是实现 " 链式编程 &quo…

我的128天创作纪念日-东离与糖宝

文章目录 机缘收获日常成就憧憬 不知不觉我也迎来了自己的128天创作纪念日,一起来看看我有什么想对大家说的吧 机缘 我的写博客之旅始于参加了代码随想录算法训练营。在训练营期间,代码随想录作者卡尔建议我们坚持每天写博客记录刷题学习的进度和心得体…

Jira vs Trello:项目管理的深层巅峰对决

引言 项目管理在现代企业运作中起着至关重要的作用。从跨国公司的巨大项目,到创业公司的快速反应,再到个人的日常任务管理,一个好的项目管理工具可以有效地跟踪进度,优化资源分配,确保项目在预定时间内完成。今天&…

银河麒麟服务器、centos7服务器mysql离线安装:通过获取临时密码进行登录修改新密码

离线安装脚本 cd /home/zenglg/mysql5.7# 判断mysql是否安装# 下面这种方法必须是rpm安装的判断才有效,不通用# IS_INSTALLED$(rpm -qa |grep mysql)# if [ $? -eq 0 ]# 下面的判断方法是查询版本号,比较通用SQL_VERSIONmysql -V | grep -i -o -P 5.7.4…

Kotlin协程flow发送时间间隔debounce

Kotlin协程flow发送时间间隔debounce debounce的作用是让连续发射的数据之间间隔起来。典型的应用场景是搜索引擎里面的关键词输入,当用户输入字符时候,有时候,并不希望用户每输入任何一个单字就触发一次后台真正的查询,而是希望…

简单了解文件上传漏洞(md版)

简单了解文件上传漏洞 一、什么是文件上传漏洞二、常见功能点三、成功的前提四、文件上传的校验方式五、Pass-1六、Pass-2七、蚁剑结合msf获取目标权限 一、什么是文件上传漏洞 在文件上传的功能处,如果服务端未对上传的文件进行严格的验证和过滤,导致攻…

系统架构设计高级技能 · 层次式架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

PC上架货源的方式

PC上架货源的方式 第一步建立文档夹 给他发一个snipaste的文件包 1、第一步搜索1688 移动端上架货源的方式 货源上架 弄两个方框,上架货源,先下载软件

基于广义神经网络的网络入侵检测Matlab代码

1.案例背景 1.1 FCM 聚类算法 聚类方法是数据挖掘中经常使用的方法,它将物理的或抽象的对象分为几个种群,每个种群内部个体间具有较高的相似性,不同群体内部间个体相似性较低。模糊c均值聚类算法(Fuzzy C- Mean, FCM)是用隶属度确定每个元素属于某个类别程度的一种聚类算法&am…

[管理与领导-49]:IT基层管理者 - 8项核心技能 - 4 - 团队激励

目录 前言: 一、什么是团队激励 二、为什么需要激励 三、激励的误区 3.1 常见误区 3.2 以下是一些常见的激励错误做法: 四、如何正确地激励 五、关于激励的一些理念 六、常见障碍 前言: 管理者存在的价值就是制定目标,即…

用户端Web自动化测试_L4

目录: selenium多浏览器处理执行 javascript 脚本headless无头浏览器使用capability配置参数解析企业微信实战cypress测试框架介绍Playwright测试框架介绍 1.selenium多浏览器处理 多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何…

*如何筛选关键词*

*第一步:打开百度,搜索百度指数* *第二步 输入所选择产品的品类* *第三步 找到搜索热度的关键词* *第四步 第一个需要统计的关键词,搜索热度前五的关键词* 建立EXCEL表,写好日期,格式按照 20230206 那一天写得按照这个…

【算法专题突破】双指针 - 复写零(2)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:1089. 复写零 - 力扣(Leetcode) 我先来读题, 题目的意思非常的简单,其实就是, 遇到 0 就复制一个写进数组&a…

mongodb 添加加点 stateStr 停在 STARTUP

解决办法 PRIMARY 节点是的host 是否是内网IP,如果是内网IP 需要切换成外网IP 即可;

ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)

1.实验目的:实现KEY1/LEY2/KE3三个按键,中断触发打印一句话,并且灯的状态取反; key1 ----> LED3灯状态取反; key2 ----> LED2灯状态取反; key3 ----> LED1灯状态取反; 2.分析框图: …

STL-常用容器-Vector容器(数组)

1 vector基本概念 功能: vector数据结构和数组非常相似,也称为单端数组 vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展: 并不是在原空间之后续接新空间,而是找更大…

谷歌面试-扔鸡蛋

今天想跟大家分享一个有意思的面试题,这让我再一次感叹思维的奇妙,接下来我们一起看看吧~ 首先来看看题目: 你有2颗鸡蛋,需要以最少的尝试次数来判断在100层的高楼上,哪一层楼是鸡蛋的安全层。 换句话说&#xff0c…