Changes between Version 72 and Version 73 of ProjectManagementIdeas
- Timestamp:
- May 21, 2009, 5:43:13 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ProjectManagementIdeas
v72 v73 395 395 task:: The ID of the task this task depends on (I'd really like a better name here. ''parent'' is wrong. ''origin''? ''other''?) 396 396 type:: Dependency type (FS, SS, SF, or FF) 397 lag:: Offset of this task's anchor relative to the anchor of ''task''. Whether the ''anchor'' for the dependency is the start or end of the task depends on the dependency type. For example, if Task B has a FS dependency on Task A with a lag of 1 day, then Task B starts 1 day after Task A finishes. Or, if Task B has an SS dependency in Task A with a lag of 1 day, then Task B starts 1 day after Task A starts. (''lag'' is not scaled by ''percentEffort''.)397 lag:: Offset of this task's anchor relative to the anchor of ''task''. (''Lag'' may be negative.) Whether the ''anchor'' for the dependency is the start or end of the task depends on the dependency type. For example, if Task B has a FS dependency on Task A with a lag of 1 day, then Task B starts 1 day after Task A finishes. Or, if Task B has an SS dependency in Task A with a lag of 1 day, then Task B starts 1 day after Task A starts. (''lag'' is not scaled by ''percentEffort''.) 398 398 399 399 == IProjectCalendar == … … 423 423 Computing a schedule involves determining the ''computedStart'' and ''computedFinish'' for a set of tasks taking into account the dependencies between tasks and the resources assigned to those tasks. Where the tasks do not have assignedStart or assignedFinish, the computed schedule prioritizes tasks to keep resources at or below 100% utilization. However, assigned dates may force overloaded resources. These overloads can then be reported and either manually resolved or resolved with a resource leveling module apart from the scheduler. 424 424 425 Random algorithm notes. 425 The following rules control the scheduling: 426 427 * Handle assigned dates 428 * It is an error for a task to have an assignedStart ''and'' an assignedFinish. 429 * If a task has an assignedStart, the computedStart is the assignedStart and the computedFinish is the computedStart plus the duration. Done scheduling this task. 430 * If a task has an assignedFinish, the computedFinish is the assignedFinish and the computedStared is the computedFinish minus the duration. Done scheduling this task. 431 432 * Handle dependencies (This must be done iteratively for all of a task's dependencies. Several FS dependencies may produce different computedStart dates with the latest one being use. Interaction between other types of dependencies is complex.) 433 * If a task has an FS dependency on another task, its computedStart is the other task's computedFinish plus lag. The task's computedFinish is computedStart plus duration. 434 * If a task has an SS dependency on another task, its computedStart is the other task's computedStart plus lag. The task's computedFinish is computedStart plus duration. 435 * If a task has an FF dependency on another task, its computedFinish is the other task's computedFinish plus lag. The task's computedStart is the computedFinish minus duration. 436 * If a task has an SF dependency on another task, its computedFinish is the other task's computedStart plus lag. The task's computedStart is the computedFinish minus duration. 437 438 * Handle resource limitations[[br]]Tasks assigned to the same resource but with no other dependency between them and no assigned dates must be sequenced to keep from overloading the resource. A comparison function can be used to determine which task should go first (as in many sorting algorithms). {{{sequenceTasks(taskA,taskB)}}} would return -1 if taskA should go first, 1 if taskB should go first or 0 if it doesn't matter. ''The scheduler should not be aware of the policy implemented in the comparison function.'' Possible criteria for sequencing the tasks include: 439 * priority - More important/urgent work goes first 440 * risk - Riskier work goes first 441 * work - A function may favor short tasks ("low hanging fruit") or long ones (which inherently have more risk). 442 * percentComplete - Finishing something that's partially done is better than starting something new 443 * "fit" - It's better to start a 2-day task on Wednesday and hold a 4 day task for the next week than to break up the longer task across a weekend. 444 445 === Random algorithm notes === 426 446 427 447 * As Late As Possible (ALAP) with only FS dependency is an easy scheduling algorithm. A task without successors is due on it's milestone date and things back up from there. However, it is sometimes helpful to use ASAP, even for single tasks. For example, if a software development task is poorly understood so its estimate might be wildly wrong, that task should be tackled early in the project so that deviation from estimate is known early and there is more time to adjust for it. Also, it's often desirable to handle bugs before new features so tasks might get ALAP and bugs ASAP within the same project.