Windows平台软件工程关键路径PDM图

我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊Windows平台下软件工程实践中涉及关键路径问题时常用的PDM图。

PDM图

我们用工程实例来完整讲解PDM图的节点表示, ES(最早开始时间) 、 LS(最迟开始时间)、EF(最早完成时间)、LF(最迟完成时间)推导,以及关键路径的推导。

项目描述

某系统集成项目的建设方要求必须按合同规定的期限交付系统,承建方项目经理决定严格执行项目进度管理,以保证项目按期完成。经理决定使用关键路径法来编制项目进度PDM图。 在对工作分解结构进行认真分析后,经理得到了一张包含活动先后关系和每项活动初步历时估计的工作列表,见下。

活动关系及历时列表

活动代号          前序活动         活动历时/天

A                       -                        5

B                       A                       3

C                       A                       6

D                       A                       4

E                       B、C                 8

F                       C、D                 5

G                       D                       6

H                       E、F、G            9

(1)画出该系统集成项目的PDM图。

(2)标记各节点的ES、LS、EF、LF。

(3)求该PDM图关键路径。

PDM图中求各节点的ES、LS、EF、LF及求关键路径的方法一般分为如下6步:

第1步:将工作表转换为PDM图。

我们使用矩形代表活动,活动间使用箭线连接,表示活动之间的逻辑关系。PDM图存在4种依赖关系,目前各论坛中我看到的画的最好的图就是下面这张。

(1)FS(结束一开始)。表示前序活动结束后,后续活动才可以开始。

(2)FF(结束一结束)。表示前序活动结束后,后续活动才可以结束。

(3)SS(开始一开始)。表示前序活动开始后,后续活动才可以开始。

(4)SF(开始一结束)。表示前序活动开始后,后续活动才可以结束。

PDM图中,活动(即节点)的表示图中,目前各论坛中我看到的画的最好的图就是下面这张。

其中,节点中各时间的关系如下:
(1)ES(最早开始时间)+工期=EF(最早完成时间)。
(2)LS(最晚开始时间)+工期=LF(最晚完成时间)。
(3)LS(最晚开始时间)-ES(最早开始时间)=TF(总时差)=LF(最晚完成时间)-EF(最早完成时间)。

将工作列表转换为PDM图,目前各论坛中我看到的画的最好的图就是下面这张。。

确定起点:活动A没有前序活动,因此活动A为起点。
确定终点:活动H没有后续活动,因此活动H为终点。
确定依赖关系:工作列表给出活动B的前序为A,因此在PDM图中,有一条从A到B的射线。
确定工期:工作表给出的活动历时,即为各项活动的工期。

第2步:从左至右求各节点的最早开始时间。

目前各论坛中我看到的画的最好的图就是下面这张,节点B的所有前序节点的MAX{最早开始时间+工期},即为节点B的最早开始时间(ES)。

 根据如上思路,得到对应PDM图所有节点的最早开始时间,目前各论坛中我看到的画的最好的图就是下面这张:

第3步:从右至左求各节点的最晚完成时间。
a.终点H的最晚完成时间等于H的最早开始时间加上H的历时。
b.除H以外的其他节点,其最晚完成时间=MIN后续节点{最晚完成时间-活动历时},目前各论坛中我看到的画的最好的图就是下面这张。

根据上述逻辑,可得PDM图中所有节点的最晚完成时间,目前各论坛中我看到的画的最好的图就是下面这张。

 第4步:求最早完成时间、最晚开始时间、关键路径。

根据节点的时间关系,求最早完成时间、最晚开始时间、时间差。其中,ES=LS或者EF=LF的节点均可视为关键路径节点。尝试连接这些节点,能从起点连接到终点的,就是关键路径。

根据上述逻辑,可得到题目对应PDM图所有节点的最早完成时间、最晚开始时间、关键路径,目前各论坛中我看到的画的最好的图就是下面这张。


第5步:求总时差。

某个节点的总时差是指其在不影响总工期的前提下所具有的机动时间。每个活动总时差(机动时间)用完后,必须马上开始,否则将会耽误工期。关键路径上的节点总时差为0。

总时差公式:TF=LS-ES=LF-EF。

根据上述逻辑得到对应PDM图所有节点的总时差,目前各论坛中我看到的画的最好的图就是下面这张。

第6步:求自由时差。
自由时差是指不影响后继节点最早开始时间的前提下的本节点的机动时间。如图所示,节点A的所有后继节点的MIN{ES}-本节点的EF, 即为节点A的自由时差。

大家要尽快熟练这个方法,不然在实践中很容易用不起来。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

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

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

相关文章

DevOps基础服务1——版本控制gitlab

文章目录 一、基本了解1.1 安装git客户端1.2 git命令1.2.1 本地仓库1.2.2 远程仓库 二、安装gitlab三、功能管理3.1 创建账号3.2 用户注册授权通知功能3.3 创建项目远程库3.4 ssh设置3.5 克隆远程库项目到本地3.6 上传本地项目代码到远程库3.7 授权用户查看项目权限 一、基本了…

03_007linux内存管理架构以虚拟内存空间布局架构

内存管理子系统架构 内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面,具体结构如 下图所示: 1、用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。 2、内核空间:内核总是驻留在内存中,是操作系统的一部分。内核空间为内…

【React笔记】react循环列表的写法

react循环的写法 简单循环输出人名简单循环输出json格式数组 简单循环输出人名 循环输出people数组中的四个人名 import ReactDOM from react-dom/client;const people [宋江,卢俊义,吴用,公孙胜 ]; const root ReactDOM.createRoot(document.getElementById(root)); root.…

gitee提交项目失败记录:remote:error:hook declined to update refs/heads/master

问题描述; 今天修改了项目里面一些文件内容,结果提交的时候报错了,可以提交到本地仓库,但提交到中央仓库报如下异常,因此记录下,防止后面再遇到…… 解决办法: 登录gitee账号,在设置…

spring10-配置数据元

他的作用是提高我们程序性能的:我们怎么用呢!先创建我们数据源对象:创建初始化对象之后,创建数据源对象之后,会给我们一些初始化资源。 使用完后还给他 ,这是一种环保的思想。 常见的数据源:底…

Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart)

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

架构课学习笔记:职业成长

架构师没有明确的定义,郭老师提出具备的能力:就是为一个复杂系统设计软件的能力,以及引导研发团队实施的能力。从5个 阶段来看对应的能力维度:结构化设计、解决横向问题、解决跨领域冲突、正确的技术决策和创造生存优势。 一结构…

哈夫曼树-算法

一、霍夫曼树基本概念: 路径:从树的一个结点到另外一个结点的分支构成这两个结点的路径 结点的长度:两节点之间路径的分支数 树的路径长度:从树根到每一个结点的长度之和,记做TL: 结点数目相同的二叉树中&#xff0…

Linux--冯诺依曼体系结构

【Linux】冯诺依曼体系结构、操作系统及进程概念_linux io 冯诺依曼_平凡的人1的博客-CSDN博客 存储器指的是内存还是磁盘? 内存 输入设备:键盘、摄像头、话筒、磁盘、网卡... 输出设备:显示器、音响、磁盘、网卡... CPU: 运算器&#x…

自然语言处理实战项目12-基于注意力机制的CNN-BiGRU模型的情感分析任务的实践

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目12-基于注意力机制的CNN-BiGRU模型的情感分析任务的实践,本文将介绍一种基于注意力机制的CNN-BiGRU模型,并将其应用于实际项目中。我们将使用多条CSV数据样例&#xff0…

flask和Vue3的前后端数据传输

(一)基于flask,构建一个后端 后端就采用flask的一般构建方法,然后用 flask-restful 构建一个接口,接口返回为json数据。 datas [{id: 1, name: xag, 年龄: 18}, {id: 2, name: xingag, age: 19}]class UserView(Res…

Docker学习笔记25

Docker swarm 应用: 镜像准备: 参照Docker学习笔记13,创建centos-nginx:v1的镜像: [rootswarm-1 nginxtest]# docker build -t centos-nginx:v1 . [] Building 211.5s (12/13) [] Building 211.7s (12/13) [] Building 211.8s (…