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

news2024/12/24 21:24:33

我是荔园微风,作为一名在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.coloradmin.cn/o/735085.html

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

相关文章

12 Java选择语句(switch)

1 选择语句常规用法 switch语法如下: swicth(输入的变量){ case 1 : //如果变量等于1 System.out.println("星期一"); break; case 2 : //如果变量等于2 System.out.println("星期二"); break; default: // 如果变量不是1和2 System.out.pr…

【Python】Python项目打包发布(五)(制作Windows安装包)

Python项目打包发布汇总 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目) 【Python】Python项目打包发布(二)(基于Pyinstaller打包PyWebIO项目) 【Python】Pytho…

学生成绩管理系统实现(CSS+JQuery+PHP+MySQL)

学生成绩管理系统实现(CSSJQueryPHPMySQL) 一、项目背景 本项目基于学校教务系统的背景,根据大学生选课以及学校对学生成绩的管理,实现了一个学校的学生成绩管理网站。另外在学生功能模块实现了选课系统,可供学生选课…

Ext4文件系统介绍 - 理论篇

Overview ext4文件系统分割成多个block groups,为了解决碎片化问题,block allocator尽量将一个文件的block放在一个group中。block groups的size通过sb.s_blocks_per_group指定,同样也可以通过8*block_size_in_bytes计算得到。block默认大小…

【Zookeeper】终端操作常用命令

文章目录 服务端常用命令客户端常用命令 zookeeper版本3.7.1 Zookeeper是一个开源的分布式协调服务。 Zookeeper是Apache软件基金会的一个项目,它提供了分布式应用程序协调的通用服务,如分布式同步、命名服务、集群维护等,以简化分布式应用协…

【计算机组成与体系结构Ⅰ】实验6 熟悉Vivado及MINISYS-1实验系统

一、实验目的 1:熟悉Vivado的开发环境及开发流程,掌握Vivado中Verilog HDL文本输入设计方法,包括仿真、综合、实现与下载。熟悉Minisys开发板的功能和使用方法。 2:学会可配置IP核的设计与封装方法,深入理解与门逻辑…

Linux驱动入门(五)——简单的字符设备驱动程序

文章目录 前言字符设备驱动程序框架字符设备和块设备主设备号和次设备号申请和释放设备号 初识cdev结构cdev结构体file_operations结构体cdev和file_operation结构体的关系inode结构体 字符设备驱动的组成字符设备加载和卸载函数file_operations结构体和其他成员函数驱动程序与…

Tomcat面试题

江湖无名 安心练剑 关注微信公众号:程序三两行 获取最新版面试资料、java学习路线 1、Tomcat 的缺省端口是多少,怎么修改? 1)找到 Tomcat 目录下的 conf 文件夹 2)进入 conf 文件夹里面找到 server.xml 文件 3&…

Elasticsearch】文档操作

目录 3.文档操作 3.1.新增文档 3.2.查询文档 3.3.删除文档 3.4.修改文档 3.4.1.全量修改 3.4.2.增量修改 3.5.总结 3.文档操作 3.1.新增文档 语法: POST /索引库名/_doc/文档id {"字段1": "值1","字段2": "值2"…

AUTOSAR CP标准的RTE和BSW各模块的设计及开发工作

AUTOSAR(Automotive Open System Architecture)是一种开放的汽车电子系统架构标准,旨在提供一种统一的软件架构,以实现汽车电子系统的模块化和可重用性。 AUTOSAR标准中的两个重要模块是RTE(Runtime Environment&…

YOLOV5/V7动态多Batch推理,GPU预处理、后处理C++源码

YOLO系列多batch处理后处理代码,C代码,结构清晰,自己后期会继续发布真实场景项目;关注公众号欢迎下载。 一、获取链接 所有源码获取方法,链接:https://www.cnblogs.com/shenduxuexizahuopu/p/17538815.htm…

【LeetCode】HOT 100(22)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

【Python】Python实现串口通信(Python+Stm32)

🎉欢迎来到Python专栏~Python实现串口通信 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望…

在linux中安装HAProxy

使用xfrp将压缩包上传到linux的opt目录下 1.解压HAProxy安装包 tar -zxvf haproxy-1.8.12.tar.gz 2. 查看点钱的内核及版本: uname -r 3. 根据内核版本选择编译参数 cd haproxy-1.8.12 cat README 4. 编译安装HAProxy make TARGETlinux2628 ARCHx86_64 PREFIX/usr/local…

测试,写用例!真有必要?

今天的文章是想跟所有小伙伴讨论软件测试工作中必不可少的一项工作:写测试用例,但目前还有很多公司并不重视写测试用例,觉得写测试用例是浪费时间,还不如拿这些时间来执行测试,那我们真的有必要写测试用例么&#xff1…

算法与数据结构-递归

文章目录 什么是递归递归需要满足的三个条件递归可能存在的问题堆栈溢出重复计算 总结 什么是递归 递归是一种直接或者间接调用自身函数或者方法的算法(或者编程技巧),应用非常广泛。我们举个例子来说明什么是递归: 推荐注册返佣金…

join的作用【A中调用B.join表示 B先完成后A再继续】【b.join 表示b先完成】

★ 2.5 等待一个线程-join() ★★★A中调用B.join表示 B先完成后A再继续 有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。例如,张三只有等李四转账成功,才决定是否存钱,这时我们需要一个方法明确…

maya粒子碰撞(碰撞几何体索引)

全部下滑了 nParticleShape1.rgbPP<<1,0,0>>; 碰撞层 int $yase nParticleShape1.collisionGeometryIndex; if ($yase 0 ) nParticleShape1.rgbPP<<0,1,0>>; int $yase nParticleShape1.collisionGeometryIndex; if ($yase 0 ) nParticleShape1.…

【Linux】网络基础和网络套接字的概念

文章目录 前言一、网络的发展及其网络中的概念总结 一、网络的发展及其网络中的概念 刚开始的计算机大多处于独立模式&#xff0c;也就是说计算机之间相互独立。等到网络出现的时候就出现了网络互联&#xff0c;多台计算机连接在一起完成数据共享。随着发展计算机越多越多就出…

选购云主机

目录 一、购买云主机 二、SSH连接云主机 三、在云主机上面开放端口 一、购买云主机 云服务商有很多&#xff0c;但是我推荐大家使用腾讯云。之前我讲过阿里云超卖的事情&#xff0c;云主机IO性能非常差劲&#xff0c;我们要在云主机上面安装MySQL、MongoDB这样的数据库&…