| A simple example of reasoning about how long a project will take, given | that a task may depend on more than one previous task | | There are well known algorithms for this, but writing the reasoning in this form | would allow us to add qualitative risk analyses to the calculations | | Version 20050108 project this-project task number this-tnum has task number this-prenum as a prerequisite ======================================================================================= Proj1 1 s Proj1 2 1 Proj1 3 2 Proj1 4 2 Proj1 5 3 Proj1 5 4 Proj1 6 2 Proj1 7 5 Proj1 7 6 Proj2 1 s Proj2 2 1 Proj3 1 s Proj3 2 1 Proj3 3 2 Proj3 4 2 Proj3 5 3 Proj3 5 4 project this-project begins with task number this-tnum ======================================================= Proj1 1 Proj2 1 Proj3 1 project this-project task number this-tnum name this-tname requires this-wnumber wk(s) and this-pnumber person(s) ================================================================================================================= Proj1 1 Planning 6.4 1.8 Proj1 2 Review Plan 10.3 1.4 Proj1 3 Design 3.7 0.8 Proj1 4 Specification 4.9 2.2 Proj1 5 Specification Review 8.8 2.1 Proj1 6 Order Components 3.7 1.5 Proj1 7 Assembly 7.3 1.9 Proj2 1 Planning 5.6 1.1 Proj2 2 Review Plan 11.5 1.5 Proj3 1 Planning 5.6 1.8 Proj3 2 Review Plan 10.5 2.4 Proj3 3 Design 4.6 2.9 Proj3 4 Specification 5.1 4.3 Proj3 5 Specification Review 10.8 1.9 project eg-project begins with task number eg-tnum max eg-path-length : Project eg-project has a path taking eg-path-length calendar weeks = eg-number --------------------------------------------------------------------------------------------------- The Critical Path for Project eg-project requires eg-number Calendar Weeks in project eg-project going from eg-tnum1 eg-task1 to eg-tnum2 eg-task2 can take eg-w person-wk(s) and eg-length calendar-wk(s) ------------------------------------------------------------------------------------------------------------------------------ Project eg-project has a path taking eg-length calendar weeks project eg-project begins with task number eg-tnum1 named eg-task1 project eg-project ends with task number eg-tnum2 named eg-task2 project eg-project task number eg-tnum2 has prereqs requiring eg-w-pre person-wk(s) and eg-c-pre calendar-wk(s) project eg-project task number eg-tnum2 requires eg-w-task person-wk(s) and eg-c-task calendar-wk(s) eg-w-pre added to eg-w-task yields eg-pw eg-c-pre added to eg-c-task yields eg-cw ------------------------------------------------------------------------------------------------------------------------------ in project eg-project going from eg-tnum1 eg-task1 to eg-tnum2 eg-task2 can take eg-pw person-wk(s) and eg-cw calendar-wk(s) project eg-project task number eg-tnum has task number eg-prenum as a prerequisite ---------------------------------------------------------------------------------- a task in project eg-project has task number eg-prenum as a prerequisite project eg-project begins with task number eg-tnum project eg-project task number eg-tnum name eg-tname requires eg-wnumber wk(s) and eg-pnumber person(s) ----------------------------------------------------------------------------------------- project eg-project begins with task number eg-tnum named eg-tname project eg-project task number eg-tnum name eg-tname requires eg-wnumber wk(s) and eg-pnumber person(s) not : a task in project eg-project has task number eg-tnum as a prerequisite ---------------------------------------------------------------------------------------------------------- project eg-project ends with task number eg-tnum named eg-tname project eg-project begins with task number eg-tnum named eg-tname --------------------------------------------------------------------------------------------------- project eg-project task number eg-tnum has prereqs requiring 0 person-wk(s) and 0 calendar-wk(s) project eg-project task number eg-tnum1 has task number eg-tnum2 as a prerequisite project eg-project task number eg-tnum2 requires eg-task-pnumber person-wk(s) and eg-task-cnumber calendar-wk(s) project eg-project task number eg-tnum2 has prereqs requiring eg-pre-pnumber person-wk(s) and eg-pre-cnumber calendar-wk(s) eg-task-pnumber added to eg-pre-pnumber yields eg-pnumber eg-task-cnumber added to eg-pre-cnumber yields eg-cnumber ---------------------------------------------------------------------------------------------------------------------- project eg-project task number eg-tnum1 has prereqs requiring eg-pnumber person-wk(s) and eg-cnumber calendar-wk(s) project eg-project task number eg-tnum name eg-tname requires eg-wnumber wk(s) and eg-pnumber person(s) eg-wnumber * eg-pnumber = eg-pwnumber-long that-pwnumber-long rounded to 2 places after the decimal point is some-pwnumber ---------------------------------------------------------------------------------------------------------- project eg-project task number eg-tnum requires eg-pwnumber person-wk(s) and eg-wnumber calendar-wk(s) some-number1 + some-number2 = some-long-sum that-long-sum rounded to 2 places after the decimal point is some-sum --------------------------------------------------------------------- that-number1 added to that-number2 yields that-sum