CN101630252A - 一种基于过程仿真技术进行软件项目进度控制的方法 - Google Patents

一种基于过程仿真技术进行软件项目进度控制的方法 Download PDF

Info

Publication number
CN101630252A
CN101630252A CN200910088448A CN200910088448A CN101630252A CN 101630252 A CN101630252 A CN 101630252A CN 200910088448 A CN200910088448 A CN 200910088448A CN 200910088448 A CN200910088448 A CN 200910088448A CN 101630252 A CN101630252 A CN 101630252A
Authority
CN
China
Prior art keywords
task
project
tasks
risk
change
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN200910088448A
Other languages
English (en)
Inventor
王青
谢利子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN200910088448A priority Critical patent/CN101630252A/zh
Publication of CN101630252A publication Critical patent/CN101630252A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于过程仿真技术进行软件项目进度控制的方法,属于计算机软件工程领域。本发明方法为:1)根据输入的项目计划信息,确定任务间的进度约束关系和理想进度安排;2)搜索理想进度安排,确定出项目中的关键任务链和非关键任务链;3)按照任务之间的约束关系,依次为全部的关键任务分配缓冲;4)项目仿真执行模块按照给定的缓冲范围和仿真次数,对缓冲分配结果执行仿真;5)对多次仿真项目执行的平均计划变更点数和平均执行工期进行统计,确定项目计划的最佳进度安排。本发明能为用户提供最佳工期安排,提高项目缓冲的利用效率,对确保项目计划执行的稳定性,减少计划变更,控制项目成本等方面提供了有力的系统支持。

Description

一种基于过程仿真技术进行软件项目进度控制的方法
技术领域
本发明涉及一种基于项目执行仿真技术的软件项目进度控制方法,该方法特别适用于规模较大,风险较多,不确定性较高的项目缓冲分配和项目进度控制,如大型软件开发项目等,属于计算机软件工程领域。
背景技术
随着信息技术的应用领域不断扩展,软件产品的规模不断增大,复杂度也越来越高。这导致软件项目控制的难度也越来越大。软件项目进度滞后、成本超支的情况依旧屡见不鲜。近年来,软件开发的主流模式已由小规模的手工作坊式开发转向诸如软件外包等形式的跨地域、跨组织的协作软件开发。软件产品与生俱来的高复杂性导致软件开发过程相对传统工业生产过程具有更高的不确定性。频繁的计划变更将严重影响软件开发效率,增加额外的工作量和沟通成本。同时,计划变更所带来的大量沟通协调工作也会给项目带来新的风险。如何制定出符合项目特点的、稳定的进度安排是确保软件项目成功的关键。因此如何减少计划变更,提高项目执行的稳定性是软件工程领域的热点问题。稳定的项目计划将大大提高协作开发效率,降低开发成本。尤其对于软件外包等协作型软件开发公司而言,稳定的项目进度安排和执行能力将提高其行业竞争力。
大规模软件产品开发项目的特点在于其极高的不确定性,由此带来的项目风险直接关系到项目成败。本发明风险驱动的项目缓冲分配方法旨在通过综合考虑软件项目的风险因素、任务之间的工作产品约束和人力资源约束(项目中各任务之间的约束关系的介绍参见文献:Lizi Xie,A Project Scheduling Method Based on Human Resource Availability,In:Proc.Of the 20th International Conferences on Software Engineering and knowledge engineering,SanFrancisco:Knowledge Systems Institute,2008,Pages:161-166),将有限的可用项目缓冲分配到各个任务中。通过风险暴露度和风险叠加性相结合的方法量化任务的风险权重(关于风险暴露度参见文献:Karlsson J,Wohlin C,Regnell B.An evaluation of methods for prioritizingsoftware requirements.Information and Software Technology,1997,Volume39(14-15),939-947)。在项目规模较大,任务数量较多的大型软件开发项目中,为任务进行合理的缓冲分配和进度安排是很难完成的。本发明通过对复杂环境下的项目缓冲自动分配,并使用风险驱动的项目执行仿真对项目进度安排进行仿真执行和分析(利用计算机仿真技术在项目管理中提供决策支持有很多已有成果,参见专利:200810119283.6预测需求易变性对软件项目影响的仿真方法及系统,中国科学院软件研究所),对项目执行效果进行有效预测。
发明内容
针对上述问题,本发明的目地在于提供一种基于过程仿真技术进行软件项目进度控制的方法。该方法通过基于对项目任务的风险影响权重进行合理的量化表示和对任务关系的分析,将有限的可用项目缓冲进行自动的优化分配,实现科学的进度安排;通过计算机模拟技术对项目计划进行模拟执行,预测风险对项目的影响以及计划变更的频率;最终获得最佳的项目工期安排以及对项目执行情况的预测。本发明包括一种风险驱动的缓冲分配系统和一种基于过程仿真的项目执行分析系统。本发明具有极高的实用价值,能够提高项目的缓冲利用效率,控制计划变更频率,提高项目执行的稳定性。
本发明的技术方法为:
一种基于过程仿真技术进行软件项目进度控制的方法,其步骤为:
1)输入一项目计划信息,包括项目信息、任务理想工期、人力资源分配信息、任务之间的工作产品约束及风险信息;
2)约束关系生成模块遍历任务集中的每个任务,根据工作产品约束和人力资源分配信息确定任务间的进度约束关系;
3)进度安排生成模块根据任务间的进度约束关系和任务理想工期,生成任务的理想进度安排;
4)关键链分析模块搜索理想进度安排,确定出项目中的关键任务链和非关键任务链;
5)项目缓冲分配模块计算选定关键任务链上每个任务风险缓冲权重,并根据风险缓冲权重计算该选定关键链上每个任务的可分配缓冲时间;
6)项目缓冲分配模块根据任务之间的进度约束关系和时间先后,调整非关键任务链上任务的可用缓冲时间,输出缓冲分配结果;
7)项目仿真执行模块按照给定的缓冲范围和仿真次数,对缓冲分配结果执行仿真;
8)对多次仿真项目执行的平均计划变更点数和平均执行工期进行统计,并自动绘制统计图;
9)根据统计图确定项目计划的最佳进度安排。
所述项目信息包括:项目的任务集合、人力资源集合、可用缓冲时间、风险列表;所述风险的特性包括:原子性、独立性、叠加性、无时效性。
所述进度约束关系包括:完成-完成、完成-开始、开始-开始、开始-完成。
所述理想进度安排的生成方法为:首先系统根据任务之间的约束关系,确定每个任务的前置任务集合和后置任务集合;然后,当某任务的前置任务不为空时则将该任务的计划开始日期设为前置任务的最晚结束日期,如果某任务的前置任务为空时则将该任务的计划开始日期设为项目计划开始日期;将任务的计划结束日期设为计划开始日期与理想执行时间之和。
所述关键链分析模块中采用关键路径算法确定出项目中的关键任务链和非关键任务链,其方法为:根据所述进度约束关系,将任务集合表示为一个以任务为节点、任务理想工期为各边长的有向无环图;从任务集合的根任务开始,按照任务关系,搜索所有可达项目结束的任务路径;从任务路径中选择任务工期之和最长的一条路径作为项目关键任务链,其它路径作为非关键任务链。
所述每个任务风险缓冲权重的计算方法为:累计所选关键链上所有风险的暴露度对任务执行工期的影响,以该影响值作为该任务的风险缓冲权重;所述暴露度为风险的影响和概率的乘积。
所述方法采用基于离散事件的仿真方法对缓冲分配结果执行仿真。
所述对缓冲分配结果执行仿真的方法为:
1)根据任务之间的约束关系,确定每个任务的前置任务集合和后置任务集合;
2)取出任务集合中的当前可模拟执行任务集合;
3)对当前可模拟执行任务集合中的每个任务,按照计划开始日期先后模拟风险发生情况,计算模拟执行的实际工期;如果延期天数大于可用缓冲,则记录一次计划变更点,并将任务状态标记为已模拟执行;
4)如果任务的计划结束日期有变更,则取该任务的后置任务集合,判断该变更是否会对其后续任务造成影响,每个后续任务的计划开始日期的变更和计划结束日期的变更均记为一个计划变更点;依次处理,直到最后处理的任务后置任务集合为空。
所述判断任务变更是否对其后续任务造成影响的方法为:如果当前任务延期,且延期日期晚于后续任务的开始日期,则后续任务需要进行计划变更,如此递归,统计变更影响,直到项目末尾。
所述缓冲分配结果以甘特图的形式输出;所述统计图包括:计划变更变化趋势图、平均执行工期变化趋势图和计划变更/执行工期对比趋势图。
如图1所示,本发明的技术方案主要包括如下两大功能模块:
A风险驱动的自动化项目缓冲分配模块,该模块接受用户输入的项目信息(如任务信息、风险信息、人力资源分配信息、可用项目总缓冲天数等),自动按照风险权重将项目缓冲分配到关键任务之上,输出优化的项目进度安排。该模块内部进行项目缓冲分配的大致流程如下:
1用户信息输入->2系统自动分析任务之间的约束关系->3系统自动进行理想进度安排->4系统自动分析项目关键链->5系统自动进行缓冲分配->6系统自动处理非关键链任务->7系统输出缓冲分配结果
B基于过程仿真的自动化项目模拟执行和分析模块,该模块根据风险信息对给定项目进度安排进行自动化的仿真执行,同时采集计划变更和项目工期两项基本数据,最后自动对仿真执行的结果进行统计分析,将统计结果以图形化方式展现给用户,供项目管理人员做出项目决策。该模块内部对项目进行仿真执行和数据采集分析的大致流程如下:
1系统自动分析任务约束关系->2系统自动查找当前可仿真执行任务集合->3系统自动仿真单个任务执行->4系统自动仿真任务计划变更对后续任务的影响->5如果当前无可仿真执行任务则仿真结束,否则循环执行该流程->系统自动生成数据统计分析图
以上两个模块对数据进行处理时均是风险驱动的,系统在风险特性的表达上采取如下的四维定义:
维度1、风险的原子性:每个风险要么发生一次要么不发生。对于可能发生N次的风险,系统将其分解表达为N个单独的风险。
维度2、风险的独立性:只考虑独立的风险,风险之间的相关关系不做考虑。
维度3、风险的叠加性:发生在同一个任务上的多个风险对任务进度所产生的影响是叠加进行的。比如任务T1存在n个风险(R1R2R3....Rn),则所有风险都发生情况下的任务工期为
T1.IET×∏((T1.Rn.I+1))    公式{1}
维度4、风险的无时效性:系统认为某个任务的风险在任务执行过程中任意时间发生,对任务进度所造成的影响是相同的。
在对项目进行执行仿真时,任务之间考虑如下的约束关系:
软件开发项目中不同任务间存在前驱后继的进度约束关系,任务间的四种进度约束关系为:完成-完成(Finish-Finish,FF),完成-开始(Finish-Start,FS),开始-开始(Start-Start,SS),开始-完成(Start-Finish,SF)。在软件开发项目中以FS型约束最为常见。该约束的具体表现是一个任务必须当其他某些任务完成后才可以开始。在软件开发过程中,造成这种进度约束关系的原因主要有两个:
1工作产品约束
如果任务的执行需要其他任务提交相应的工作产品作为输入,那么该任务与其他任务之间存在FS型约束关系。比如系统设计任务和设计评审任务之间就存在这种约束关系,因为设计评审任务的执行需要系统设计任务完成并提交相关工作产品(设计文档)。
2资源约束
如果某任务的执行需要其他任务完成以释放必要的资源,那么该任务与这些任务之间也会存在FS型约束关系。
本发明的积极效果为:
本发明包括风险驱动的项目缓冲分配模块以及风险驱动的项目执行仿真和分析模块。对于给定的项目信息集合,系统能够自动实现项目缓冲的优化分配并通过项目仿真对项目进度安排的执行效果进行预测和分析。在项目规模较大,任务较多时,该方法能为用户提供最佳工期安排以及对项目执行情况的预测,具备极高的实用价值。本发明能够帮助软件企业确定合适的项目缓冲长度和缓冲分配方案,提高项目缓冲的利用效率,对确保项目计划执行的稳定性,减少计划变更,控制项目成本等方面提供了有力的系统支持。
附图说明
图1本发明的系统结构示意图;
图2系统用户界面示意图;
图3缓冲分配后的项目进度安排示意图;
图4仿真执行后计划变更情况和平均执行工期情况对比分析图。
具体实施方式
下面结合附图进一步详细的描述本发明的具体实施方式。
一、本发明的系统结构
本发明的系统架构图如图1所示。框架分为工具层和模型层。项目经理将项目信息输入系统,然后查看自动化缓冲分配结果和项目执行仿真结果。在工具层,风险驱动的项目缓冲分配模块提供自动的项目缓冲分配和进度安排功能,风险驱动的项目执行仿真模块则提供自动化的项目仿真执行和数据统计分析功能。在底部的模型层中,软件项目模型对框架中各个模块的实现和具体运作提供底层的描述支持,同时对系统的后台数据库操作提供支持。
1工具层
该层提供了基本的图形显示系统和用户输入输出访问界面,核心模块包括风险驱动的项目缓冲分配模块和风险驱动的项目执行仿真模块。系统可以提供自动化的缓冲优化分配与项目执行仿真以及仿真数据分析等功能。
2模型层
该层提供了对系统所设计的所有数据的抽象描述,以及数据存储的数据库访问支持。
二、风险驱动的项目缓冲分配模块
该模块实现了对项目缓冲的自动优化分配。分配期间综合考虑各任务不同的风险影响权重。该模块自动进行缓冲分配的七个工作流程和涉及的技术方案详解如下:
1信息输入:
用户输入项目计划,包括项目信息、任务理想工期、人员信息、人员分配情况、任务之间的工作产品约束及风险信息。项目信息包括:项目的任务集合、人力资源集合、可用缓冲时间、风险列表。
该流程中,系统通过图形化的系统界面实现良好的用户输入与输出。项目负责人或用户将项目计划录入风险驱动的项目缓冲分配系统,用户界面如图2所示。
2约束关系设定:
约束关系生成模块根据任务之间的工作产品约束和任务之间的人力资源约束确定任务之间的前驱后继关系。
约束关系生成模块确定资源约束关系时采用遍历算法,对任务集合中的每个任务,分析其他任务与该任务之间是否存在资源约束。如果存在,则设定前驱后继关系。具体判定资源约束关系的方法如下:
Figure G2009100884482D00061
公式{2}
上述公式是指如果任务T在任务t结束之后开始,而且两个任务的人力资源集合的交集不为空,则这两个任务之间存在资源约束关系。
3理想进度安排:
进度安排生成模块根据任务之间的约束关系和任务的理想执行时间,在暂不考虑风险因素的前提下,形成任务的理想进度安排。该安排的总工期称为理想项目工期。本步骤确定了在不考虑风险情况下所有任务的理想开始日期和结束日期。
该流程中采用的具体处理算法如下:
Figure G2009100884482D00071
公式{3}
上述算法是指当某任务的前置任务不为空时则将该任务的计划开始日期设为前置任务的最晚结束日期,如果某任务的前置任务为空时则将该任务的计划开始日期设为项目计划开始日期。表达式中设计的符号定义请参考说明书后面的附录1。
T.PFD=T.PSD+T.IET    公式{4}
上述算法是指将任务的计划结束日期设为计划开始日期与理想执行时间之和。
4分析关键链:
关键链分析模块分析理想进度安排中的项目关键任务链,关键任务链是指在项目的理想工期安排中,从项目开始到项目结束中历时最长的一段任务路径。在项目理想工期安排的进度图中通过关键路径搜索算法得到项目进度的关键任务链。如果项目计划存在多条关键链则随机选择其中之一进行处理。
在该流程中,关键链分析模块确定项目关键链采用如下基于遍历的搜索算法:
1理想进度安排中,各任务已经按照约束关系设定好其前驱后继关系。根据该约束关系,任务集合可以被表示为一个以任务为节点,任务理想工期为各边长的有向无环图。
2从任务集合的根任务开始,按照前途后继的任务关系,搜索所有可达项目结束的任务路径。
3从任务路径中选择任务工期之和最长的一条路径。如果存在多条最长路径,则随机选择其中一条作为项目关键链。
5缓冲分配:
项目缓冲分配模块按照任务之间的约束关系,自动依次为全部的关键链任务分配缓冲,该分配的详细流程分为如下四部分:
(1)计算任务风险缓冲权重。
基于风险暴露度的风险缓冲权重量化方案如下:
如果所选定的关键链上存在n个任务{T1,T2....Tn},记任务T1的风险缓冲权重RW(RiskWeight)为:
T1.RW=T1.IET×{[∏(T1.Rn.I×T1.Rn.P+1)]-1}    公式{5}
上述公式中风险的I(影响)和P(概率)的乘积称为风险的暴露度,公式的含义是指累计所有风险的暴露度对任务执行工期的影响,以该影响值作为该任务的风险缓冲权重。影响值越大则该任务的不确定性越高,需要的缓冲时间越多。
(2)计算任务的可分配缓冲天数。
基于关键链的确定任务缓冲天数的方案如下:
任务T1的分配缓冲天数为:
T 1 . TSB = δ ( P . PB × ( T 1 . RW Σ T n . RW ) ) 公式{6}
上述公式根据任务的风险缓冲权重对可用项目缓冲P.PB进行分配。风险缓冲权重较高的任务将获得较多的缓冲时间,风险缓冲权重较小的任务将获得较少的缓冲时间。
函数δ(x)为对x取整运算。当x的小数部分大于等于0.5时对x取上整,当x的小数部分小于0.5时对x取下整。由上定义可知∑Tn.TSB=P.PB,即缓冲分配后,选定的关键链上各个任务的缓冲之和等于项目的总可用缓冲。
(3)调整任务的计划结束日期。
调整任务的计划结束日期,将任务T1的计划结束日期更新为:
T1.PFD=T1.PSD+T1.IET+T1.TSB    公式{7}
上述算法将任务的计划结束日期设定为任务的计划开始日期与任务理想执行时间、可用缓冲三者之和。
(4)调整后续任务的计划工期。
根据步骤3中的方法递归调整任务T1所有后续任务的计划开始日期和计划结束日期。
6处理非关键链任务:
项目缓冲分配模块在确定所有关键任务的可用缓冲之后,开始对非关键链任务进行自动化处理。基于尽早开始策略的确定非关键链任务工期的方案如下:
按照任务之间的约束关系和时间先后,依次处理所有的非关键链任务,调整非关键链任务的可用缓冲时间为其计划结束日期和其后继任务的最早开始日期之间的时间跨度,直到所有的非关键链任务均调整完毕。项目缓冲分配模块采用尽早开始策略处理非关键链任务。传统工业过程中为了避免库存开销采用及时生产(JIT)思想安排最佳任务开始日期。软件开发有别于工业生产,软件生产的库存开销很小,可以不去考虑。而软件开发过程的不确定性较大,因此在我们的方法中,确定关键链任务进度时采取尽早开始策略,这样可以降低非关键链任务的进度出现异常时对关键链的冲击。
具体处理方法如下:
根据公式{2}重新计算非关键链任务的计划开始日期
T.PFD=Min{t.PSD|t∈T.PostTS}    公式{8}
T.TSB=T.PFD-T.PSD-T.IET         公式{9}
7输出缓冲分配结果:
项目缓冲分配模块分配结果以甘特图的形式输出自动优化缓冲分配后的项目进度安排,供用户查看。如图3所示。
三、风险驱动的项目仿真执行模块
该模块按照给定的缓冲范围和仿真次数,实现了对项目计划执行的自动化仿真,在仿真时对项目执行数据(计划变更点数,执行工期等度量点)进行采集和统计分析并给出图示,如图4所示。系统的核心仿真算法可归类为基于离散事件的仿真方法。该模块的处理流程和所采用的技术方案详解如下:
1分析任务的资源约束关系
系统自动分析任务之间的资源约束关系,确定每个任务的前置任务集合和后置任务集合。资源约束关系判定方法如下:
Figure G2009100884482D00091
公式{2}
上述判定方法是指如果任务T在任务t结束之后开始,而且两个任务的人力资源集合的交集不为空,则这两个任务之间存在资源约束关系。
2获得当前可仿真执行任务集合
系统自动查找任务集合中的当前可仿真执行任务集合。
判定某任务是否为可仿真执行任务的方法如下:
Figure G2009100884482D00092
公式{10}
上述定义是指项目的任务集合中的任务T,如果T的前置任务均执行过或T的前置任务为空,则任务T为当前可仿真执行。
3仿真单个任务执行
对当前可仿真执行任务集合中的每个任务T按照计划开始日期先后仿真风险发生情况,计算仿真执行的实际工期。如果延期天数大于可用缓冲,则记录一次计划变更点,并将任务状态标记为已仿真执行。(一次计划变更可能包括多个计划变更点,为了便于统计,我们只记录计划变更点的数量)。
该流程的详细处理算法参见附录2。
4仿真任务计划变更对其后续任务的影响
如果T的计划结束日期有变更,则取任务T的后置任务集合,判断该变更是否会对其后续任务造成影响,每个后续任务的计划开始日期的变更和计划结束日期的变更均记为一个计划变更点。依次处理,直到最后处理的任务后置任务集合为空。该手段能够很好的模拟单任务变更对整体项目的波动性影响。
该流程的详细处理算法参见附录2。
5判断是否继续进行仿真
继续执行自动处理流程2,直到当前可仿真执行的任务集合为空。
6生成数据统计分析图
系统根据对多次仿真项目执行的平均计划变更点数和平均执行工期进行统计分析,并自动绘制计划变更变化趋势图、平均执行工期变化趋势图和计划变更/执行工期对比趋势图。通过这些统计图,项目管理人员可以很方便的获得最佳工期安排以及对项目执行情况的预测,进而提高软件项目计划执行的可靠性。
附录1:说明书中涉及到的符号以及缩写的解释说明
P(project)={PN,PSD,PFD,PB,TS......}
-PN(Project Name):项目名称
-PSD(Plan Start Date):项目计划开始日期
-PFD(Plan Finish Date):项目计划结束日期
-PB(Project Buffer):项目可用缓冲,单位:天
-TS(Task Set):项目包含的任务集合。
TS={T1,T2......Tn}
--T(task)={TN,PSD,PFD,TSB,IET,E,CP,HRS,PreTS,PostTS,RS......}这里的任务是指IEEE相关标准中,工作分解结构(WBS)里的底层工作包,其成本、工作量、工期、工作产品和资源需求等属性是较为明确的。
---TN(Task Name):任务名称
---PSD(Plan Start Date):任务计划开始日期
---PFD(Plan Finish Date):任务计划结束日期。T.PFD=T.PSD+T.IET+T.TSB
---TSB(Task Scheduled Buffer):任务所分配的可用缓冲天数
---IET(Ideal Execution Time):理想情况下(不考虑风险)该任务需要的执行天数
---E(Executed):用来标识该任务是否被仿真执行过。取值为true表示该任务已被仿真执行过,取值为false表示该任务未被仿真执行过。
---CC(Critical Chain):用来标识该任务是否位于选定的项目关键链之上。取值为true表示该任务是关键任务,取值为false表示该任务不是关键任务。
---HRS(Human Resource Set):分配给任务的人力资源集合
HRS={HR1,HR2,HR3......HRm}
----HR(Human Resource)={HN,......}人力资源属性可以根据需要进行扩展,这里只列出人员姓名。
-----HN(Human Name):人力资源姓名
---PreTS(Pre-Task Set):前置任务集合,当前任务如果要开始,则其前置任务必须已经结束。
---PostTS(Post-Task Set):后置任务集合,如果当前任务不结束就不能开始执行该集合中的任务。后置任务集合可以通过前置任务集合关系得到,这里为了后期缓冲分配和仿真执行的描述方便,单独列出。
---RS(Risk Set):对任务进度产生影响的风险集合
RS={R1,R2,R3....Rj}
----R(Risk)={RN,I,P......}
-----RN(Risk Name):风险名称
-----I(Impact):风险对任务进度的影响程度
-----P(Probability):风险可能发生的概率
附录2:风险驱动的项目仿真执行模块中步骤3和步骤4的详细处理算法
我们对该工具中涉及的“计划变更点”做出如下解释
定义计划变更点:如果某任务在仿真执行过程中,计划开始日期或计划结束日期发生变化,则记录一个计划变更点,如果计划开始日期和计划结束日期都发生变化,则记录两个计划变更点。
3仿真单个任务执行
对当前可仿真执行任务集合中的每个任务T按照计划开始日期先后仿真风险发生情况,计算仿真执行的实际工期。如果延期天数大于可用缓冲,则记录一次计划变更点,并将任务状态标记为已仿真执行。(一次计划变更可能包括多个计划变更点,为了便于统计,我们只记录计划变更点的数量)。该处理过程的伪代码表示如下:
  Function SimTaskExcutation(Task T){
         numOfPlanChangePoint=0;//用于统计计划变更点数的计数器
         actualDurion=GetDelayedDayForATask(task);
         actualFinishDate=T.PSD+actualDurion;
         if(actualFinishDate<T.PFD)T.PFD=actualFinishDate;
         if(actualFinishDate>T.PFD)
         {
              T.PFD=actualFinishDate;
              numOfPlanChangePoint++;//任务延期,记录变更点
              numOfPlanChangePoint+=getPlanChangeForTaskDelay(task);//分析该延期
对后续任务的影响
          }
          T.E=true;
          return numOfPlanChangePoint;}
Function GetActalDuration(Task T)该函数随机仿真风险发生情况,根据风险的叠加性计算风险发生情况下对项目工期的影响,并返回该仿真工期长度。
4仿真任务计划变更对其后续任务的影响
如果T的计划结束日期有变更,则取任务T的后置任务集合,判断该变更是否会对其后续任务造成影响,每个后续任务的计划开始日期的变更和计划结束日期的变更均记为一个计划变更点。依次处理,直到最后处理的任务后置任务集合为空。该处理过程的伪代码表示如下:
Function getPlanChangeForTaskDelay(Task T){
       planChange=0;if(T.PostTS==Φ)return 0;
       for each t∈T.PostTS  {
            if T.PFD>t.PSD
            {  planChange++;delay=T.PFD-t.PSD;t.PSD=T.PFD;//计划开始日期推迟,
记录变更点
               if delay>t.TSB{
                         t.PFD=t.PFD+delay-t.TSB;
               t.TSB=0;
               planChange++;}//计划结束日期推迟,记录变更点
                              else t.TSB=t.TSB-delay
                              planChange+=getPlanChangeForTaskDelay(tempTask);//递归处理所有后
续任务
                           }
                        }
                      return planChange;}

Claims (10)

1.一种基于过程仿真技术进行软件项目进度控制的方法,其步骤为:
1)输入一项目计划信息,包括项目信息、任务理想工期、人力资源分配信息、任务之间的工作产品约束及风险信息;
2)约束关系生成模块遍历任务集中的每个任务,根据工作产品约束和人力资源分配信息确定任务间的进度约束关系;
3)进度安排生成模块根据任务间的进度约束关系和任务理想工期,生成任务的理想进度安排;
4)关键链分析模块搜索理想进度安排,确定出项目中的关键任务链和非关键任务链;
5)项目缓冲分配模块计算选定关键任务链上每个任务风险缓冲权重,并根据风险缓冲权重计算该选定关键链上每个任务的可分配缓冲时间;
6)项目缓冲分配模块根据任务之间的进度约束关系和时间先后,调整非关键任务链上任务的可用缓冲时间,输出缓冲分配结果;
7)项目仿真执行模块按照给定的缓冲范围和仿真次数,对缓冲分配结果执行仿真;
8)对多次仿真项目执行的平均计划变更点数和平均执行工期进行统计,并自动绘制统计图;
9)根据统计图确定项目计划的最佳进度安排。
2.如权利要求1所述的方法,其特征在于所述项目信息包括:项目的任务集合、可用缓冲时间、人力资源集合、风险列表;所述风险的特性包括:原子性、独立性、叠加性、无时效性。
3.如权利要求1所述的方法,其特征在于所述进度约束关系包括:完成-完成、完成-开始、开始-开始、开始-完成。
4.如权利要求1所述的方法,其特征在于所述理想进度安排的生成方法为:首先系统根据任务之间的约束关系,确定每个任务的前置任务集合和后置任务集合;然后,当某任务的前置任务不为空时则将该任务的计划开始日期设为前置任务的最晚结束日期,如果某任务的前置任务为空时则将该任务的计划开始日期设为项目计划开始日期;将任务的计划结束日期设为计划开始日期与理想执行时间之和。
5.如权利要求1所述的方法,其特征在于所述关键链分析模块中采用关键路径算法确定出项目中的关键任务链和非关键任务链,其方法为:根据所述进度约束关系,将任务集合表示为一个以任务为节点、任务理想工期为各边长的有向无环图;从任务集合的根任务开始,按照任务关系,搜索所有可达项目结束的任务路径;从任务路径中选择任务工期之和最长的一条路径作为项目关键任务链,其它路径作为非关键任务链。
6.如权利要求1所述的方法,其特征在于所述每个任务风险缓冲权重的计算方法为:累计所选关键链上所有风险的暴露度对任务执行工期的影响,以该影响值作为该任务的风险缓冲权重;所述暴露度为风险的影响和概率的乘积。
7.如权利要求1所述的方法,其特征在于采用基于离散事件的仿真方法对缓冲分配结果执行仿真。
8.如权利要求7所述的方法,其特征在于所述对缓冲分配结果执行仿真的方法为:
1)根据任务之间的约束关系,确定每个任务的前置任务集合和后置任务集合;
2)取出任务集合中的当前可模拟执行任务集合;
3)对当前可模拟执行任务集合中的每个任务,按照计划开始日期先后模拟风险发生情况,计算模拟执行的实际工期;如果延期天数大于可用缓冲,则记录一次计划变更点,并将任务状态标记为已模拟执行;
4)如果任务的计划结束日期有变更,则取该任务的后置任务集合,判断该变更是否会对其后续任务造成影响,每个后续任务的计划开始日期的变更和计划结束日期的变更均记为一个计划变更点;依次处理,直到最后处理的任务后置任务集合为空。
9.如权利要求8所述的方法,其特征在于所述判断任务变更是否对其后续任务造成影响的方法为:如果当前任务延期,且延期日期晚于后续任务的开始日期,则后续任务需要进行计划变更,如此递归,统计变更影响,直到项目末尾。
10.如权利要求1所述的方法,其特征在于所述缓冲分配结果以甘特图的形式输出;所述统计图包括:计划变更变化趋势图、平均执行工期变化趋势图和计划变更/执行工期对比趋势图。
CN200910088448A 2009-07-07 2009-07-07 一种基于过程仿真技术进行软件项目进度控制的方法 Pending CN101630252A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910088448A CN101630252A (zh) 2009-07-07 2009-07-07 一种基于过程仿真技术进行软件项目进度控制的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910088448A CN101630252A (zh) 2009-07-07 2009-07-07 一种基于过程仿真技术进行软件项目进度控制的方法

Publications (1)

Publication Number Publication Date
CN101630252A true CN101630252A (zh) 2010-01-20

Family

ID=41575371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910088448A Pending CN101630252A (zh) 2009-07-07 2009-07-07 一种基于过程仿真技术进行软件项目进度控制的方法

Country Status (1)

Country Link
CN (1) CN101630252A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102592193A (zh) * 2011-12-29 2012-07-18 杭州新中大软件股份有限公司 一种通过资源驱控进度的方法
CN103649974A (zh) * 2011-03-21 2014-03-19 塔雷科·莫哈梅德·莫哈梅德·赫加兹 工期优化系统与方法
CN104462372A (zh) * 2014-12-09 2015-03-25 武汉理工大学 一种基于文件驱动的项目进度控制方法及系统
CN104715315A (zh) * 2013-12-14 2015-06-17 中国航空工业集团公司第六三一研究所 环境试验自动化时间排布工具的实现方法
CN102722381B (zh) * 2011-03-25 2017-03-01 微软技术许可有限责任公司 优化升级任务的技术
CN106709646A (zh) * 2016-12-23 2017-05-24 国网山东省电力公司 一种考虑资源约束的项目进度动态调控方法
CN107122188A (zh) * 2017-04-26 2017-09-01 网易(杭州)网络有限公司 项目进度条图像生成的方法及装置
CN107527163A (zh) * 2017-09-30 2017-12-29 新奥(中国)燃气投资有限公司 一种项目执行方法及装置
CN109634989A (zh) * 2018-11-16 2019-04-16 百度在线网络技术(北京)有限公司 一种hive任务执行引擎选择方法和系统
CN109710958A (zh) * 2018-08-03 2019-05-03 深圳大学 一种基于仿真模型的建设项目工期风险模拟方法及系统
CN110866679A (zh) * 2019-10-28 2020-03-06 西北工业大学 符合do-178标准的机载软件开发流程调度方法
CN112465451A (zh) * 2020-11-19 2021-03-09 北京航空航天大学 一种支持项目并行及多资源方案的优化方法
WO2021064876A1 (ja) * 2019-10-01 2021-04-08 日揮グローバル株式会社 プロジェクト管理装置、プロジェクト管理方法、及び記録媒体
CN113408856A (zh) * 2021-05-21 2021-09-17 杰为软件系统(深圳)有限公司 一种基于物联网技术的关键链计划调度软件算法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103649974B (zh) * 2011-03-21 2019-02-22 塔雷科·莫哈梅德·莫哈梅德·赫加兹 工期优化系统与方法
CN103649974A (zh) * 2011-03-21 2014-03-19 塔雷科·莫哈梅德·莫哈梅德·赫加兹 工期优化系统与方法
CN102722381B (zh) * 2011-03-25 2017-03-01 微软技术许可有限责任公司 优化升级任务的技术
CN102592193A (zh) * 2011-12-29 2012-07-18 杭州新中大软件股份有限公司 一种通过资源驱控进度的方法
CN104715315A (zh) * 2013-12-14 2015-06-17 中国航空工业集团公司第六三一研究所 环境试验自动化时间排布工具的实现方法
CN104462372A (zh) * 2014-12-09 2015-03-25 武汉理工大学 一种基于文件驱动的项目进度控制方法及系统
CN106709646A (zh) * 2016-12-23 2017-05-24 国网山东省电力公司 一种考虑资源约束的项目进度动态调控方法
CN107122188A (zh) * 2017-04-26 2017-09-01 网易(杭州)网络有限公司 项目进度条图像生成的方法及装置
CN107527163A (zh) * 2017-09-30 2017-12-29 新奥(中国)燃气投资有限公司 一种项目执行方法及装置
CN109710958A (zh) * 2018-08-03 2019-05-03 深圳大学 一种基于仿真模型的建设项目工期风险模拟方法及系统
CN109634989A (zh) * 2018-11-16 2019-04-16 百度在线网络技术(北京)有限公司 一种hive任务执行引擎选择方法和系统
CN109634989B (zh) * 2018-11-16 2022-03-25 百度在线网络技术(北京)有限公司 一种hive任务执行引擎选择方法和系统
WO2021064876A1 (ja) * 2019-10-01 2021-04-08 日揮グローバル株式会社 プロジェクト管理装置、プロジェクト管理方法、及び記録媒体
CN110866679A (zh) * 2019-10-28 2020-03-06 西北工业大学 符合do-178标准的机载软件开发流程调度方法
CN110866679B (zh) * 2019-10-28 2023-05-02 西北工业大学 符合do-178标准的机载软件开发流程调度方法
CN112465451A (zh) * 2020-11-19 2021-03-09 北京航空航天大学 一种支持项目并行及多资源方案的优化方法
CN112465451B (zh) * 2020-11-19 2022-06-24 北京航空航天大学 一种支持项目并行及多资源方案的优化方法
CN113408856A (zh) * 2021-05-21 2021-09-17 杰为软件系统(深圳)有限公司 一种基于物联网技术的关键链计划调度软件算法

Similar Documents

Publication Publication Date Title
CN101630252A (zh) 一种基于过程仿真技术进行软件项目进度控制的方法
Wang et al. Framework for modeling operational uncertainty to optimize offsite production scheduling of precast components
Zhou et al. An event-triggered dynamic scheduling method for randomly arriving tasks in cloud manufacturing
US6233493B1 (en) Computer-implemented product development planning method
Mahdavi et al. Development of a simulation-based decision support system for controlling stochastic flexible job shop manufacturing systems
Herroelen Resource-constrained project scheduling—the state of the art
CN105959401B (zh) 一种基于超网络的制造服务供需匹配与动态调度方法
CN102508639B (zh) 一种基于卫星遥感数据特征的分布式并行处理方法
Kianfar et al. Study of stochastic sequence-dependent flexible flow shop via developing a dispatching rule and a hybrid GA
CN1728168A (zh) 基于合同开始/结束数据的用户输入来重启项目管理系统调度引擎的方法和系统
EP2763084A1 (en) Alpha-chain constraints for process planning
Huang et al. Service requirement conflict resolution based on ant colony optimization in group-enterprises-oriented cloud manufacturing
Chen et al. Manufacturing synchronization in a hybrid flowshop with dynamic order arrivals
CN103279818A (zh) 基于启发式遗传算法的云工作流调度方法
Habib Zahmani et al. Multiple dispatching rules allocation in real time using data mining, genetic algorithms, and simulation
Lu et al. A resource investment problem based on project splitting with time windows for aircraft moving assembly line
CN115907332A (zh) 一种油气井维修任务调度的两层优化方法及装置
Tyrin et al. Multi-agent system “Smart Factory” for real-time workshop management: Results of design & implementation for Izhevsk Axion-Holding Factory
Giordano et al. On just-in-time production leveling
Norbis et al. A multiobjective, multi-level heuristic for dynamic resource constrained scheduling problems
Dziurzanski et al. Implementing digital twins of smart factories with interval algebra
CN109783189A (zh) 一种静态工作流调度方法与装置
CN109636299A (zh) 基于流程流转带的节点期限机制
Sharma et al. EVALUATION OF MULTI CRITERIA ASSEMBLY LINE BALANCING BY MCDM APPROACHES: A CONCEPTUAL REVIEW.
Kanagasabapathi et al. Scheduling in resource-constrained multiple projects to minimise the weighted tardiness and weighted earliness of projects

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20100120