Changes between Version 124 and Version 125 of ProjectManagementIdeas


Ignore:
Timestamp:
Aug 27, 2015, 2:00:00 PM (9 years ago)
Author:
figaro
Comment:

Further cleanups

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v124 v125  
    55Trac is strong in basic, individual and small-team task management but lacks features for heavy-duty project management such as in Microsoft Project, Project Manager Workbench, etc. This page discusses those missing features and how they can best be realized.
    66
    7 In Trac, "project" is sometimes used synonymously with "installation". As used on this page, it is a set of related tasks and deadlines. Perhaps a software project has a Design Phase, an Alpha Release, a Beta Release, and a General Release. Each phase would have a milestone with a target date and tickets to complete the work for that phase.
     7In Trac, a "project" is sometimes synonymous with "installation". As used on this page, it is a set of related tasks and deadlines. Perhaps a software project has a Design Phase, an Alpha Release, a Beta Release, and a General Release. Each phase would have a milestone with a target date and tickets to complete the work for that phase.
    88
    99== Related research
    1010
    11 Scheduling activities in a project is an area of active research in operational research (or [http://en.wikipedia.org/wiki/Operations_research operations research]) (cf. [http://books.google.com/books?id=pHetPl2LOYgC&lpg=PA153&ots=rKKZ7Lv2On&dq=pslib%20project%20scheduling&pg=PP1 Project Scheduling]) and has been established to be [http://en.wikipedia.org/wiki/NP-hard NP hard]. It should be noted that it is an ''optimal'' solution that is hard compute. Most research strives to get 2-3% better make span out of a well-defined, complex project. If you have a small or dynamic project or if your estimates are routinely off by 5-10%, you won't see the benefit of such high-powered scheduling.
     11Scheduling activities in a project is an area of active research in [http://en.wikipedia.org/wiki/Operations_research Operations Research] (cf. [http://books.google.com/books?id=pHetPl2LOYgC&lpg=PA153&ots=rKKZ7Lv2On&dq=pslib%20project%20scheduling&pg=PP1 Project Scheduling]) and has been proven to be [http://en.wikipedia.org/wiki/NP-hard NP hard]. It should be noted that it is an ''optimal'' solution that is hard compute. Most research strives to get 2-3% improvement out of a well-defined, complex project. If you have a small or dynamic project or if your estimates are routinely off by 5-10%, you won't see the benefit of such high-powered scheduling.
    1212
    1313There are several variations on the problem.
     
    1919 ''m_PRCPSP'' :: Preemptable RCPSP. A RCPSP where each task may be broken (preempted) ''m'' times during scheduling. Generally, ''m'' is limited to 1 both for simplicity of the algorithm and because there is real cost in practical task switching.
    2020
    21 A range of techniques have been brought to bear on RCPSP. They can be broadly categorized as:
     21A range of techniques have been brought to bear on RCPSP:
    2222
    2323 * Exact solutions. Attempts to find an optimal schedule. Due to the polynomial nature of the problem these are only possible or practical for a small number of activities (e.g., a few dozen).
     
    5151Project management support software should help us answer a few basic questions:
    5252
    53  * When will my project be done? That is, what is the forecasted completion date.
     53 * When will my project be done? That is, what is the forecast completion date?
    5454 * How much Earned Value has the project achieved?
    5555 * How do incurred costs compare to Earned value (Cost Performance Factor).
    56  * Am I on schedule? That is, is the percent complete for the overall project where it should be at this time.
    57  * What tasks are on the critical path? That is, what tasks have a positive or negative effect on the overall schedule if they are early or late.
     56 * Am I on schedule? That is, is the percent complete for the overall project where it should be at this time?
     57 * What tasks are on the critical path? That is, what tasks have a positive or negative effect on the overall schedule if they are early or late?
    5858 * How are my resources being utilized?
    5959
    6060To answer these questions, the system must know about:
    6161
    62  * Tasks to be done
    63  * Dependencies between tasks
    64  * Resources available to do tasks
    65  * Assignment of resources to tasks
    66  * Deadlines for task or project completion
    67 
    68 Some of this information is part of the Trac core, some is provided by existing plugins, and some must be added to support project management. None of this information is antithetical to Trac's design and implementation.
     62 * Tasks to be done.
     63 * Dependencies between tasks.
     64 * Resources available to do tasks.
     65 * Assignment of resources to tasks.
     66 * Deadlines for task or project completion.
     67
     68Some of this is part of the Trac core, some is provided by existing plugins, and some must be added to support project management. None of this is antithetical to Trac's design and implementation.
    6969
    7070== Properties
     
    7474=== Task Properties
    7575
    76 Answering the questions listed above requires recording certain properties of a task.
     76Answering the questions listed above requires recording certain properties of a task:
    7777
    7878 Original Work Estimate:: The amount of work believed to be needed to complete the task as of before the task was started. This is ''not'', necessarily, the time it will take to complete the task (duration). The task may be unassigned (and will take forever to complete), may have a resource assigned only part-time (so it will take longer to complete than the amount of work indicates), or have multiple resources assigned (so it may take less time to complete than the amount of work indicates). Typically work will be expressed in hours of effort of a resource.
     
    138138||6||Assemble units||New device||
    139139
    140 With this simple task list -- supported by core Trac tickets and milestones -- we'll know when we are done because all the tickets are closed but we have no way to project when that will be. ''If'' all the tasks could be done concurrently, the project length is the length of the longest task. And since Trac assigns a date to the milestone, we can sort of work backwards from that to determine when work needs to start for the milestone to be met. However, core Trac has no way to record the time that a task should take. We need a field to hold ''Work''.
     140With this simple task list, supported by core Trac tickets and milestones, we'll know when we are done because all the tickets are closed but we have no way to project when that will be. ''If'' all the tasks could be done concurrently, the project length is the length of the longest task. And since Trac assigns a date to the milestone, we can sort of work backwards from that to determine when work needs to start for the milestone to be met. However, core Trac has no way to record the time that a task should take. We need a field to hold ''Work'':
    141141
    142142||'''ID'''||'''Summary'''||'''Work'''||
     
    148148||6||Assemble units||8h||
    149149
    150 From here we can guess that the shortest the project could be is one week. However, we know we cannot begin circuit board layout without a schematic. We need a field to hold ''Predecessors''.
     150From here we can guess that the shortest the project could be is one week. However, we know we cannot begin circuit board layout without a schematic. We need a field to hold ''Predecessors'':
    151151
    152152||'''ID'''||'''Summary'''||'''Estimate'''||'''Predecessors'''||
     
    162162We can begin to do more effective project management if we have a task scheduler than can work backwards from the milestone, consider work and dependencies, and calculate task start and end dates and project start date.
    163163
    164 If the milestone for this work is May 11, the schedule might look like the following.
     164If the milestone for this work is May 11, the schedule might look like the following:
    165165
    166166||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Due'''||'''Start'''||
     
    174174This is computed as follows:
    175175
    176  * Assemble units is the last step and is due when the milestone is scheduled
    177  * Firmware, packaging design, and the circuit board all must be done before assembly or 1 day (the length of the assembly task) before the milestone
    178  * Schematic is due the length of the circuit board task before the circuit board's end
     176 * Assemble units is the last step and is due when the milestone is scheduled.
     177 * Firmware, packaging design, and the circuit board all must be done before assembly or 1 day (the length of the assembly task) before the milestone.
     178 * Schematic is due the length of the circuit board task before the circuit board's end.
    179179
    180180To finish on time, the project must start on May 3, the earliest start time for any task.
     
    182182However, the preceding schedule assumes that the motherboard and daughter board are independent tasks. If there is only one board designer, only one board at a time can be worked on. If we assign the same resource to the board designs, either one must be done before the other can begin (even in the absence of an FS dependency) or the time for both must be extended and the resource spread between them concurrently.
    183183
    184 With 100% applied to each task, the motherboard and daughter board are worked on serially.
     184With 100% applied to each task, the motherboard and daughter board are worked on serially:
    185185
    186186||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''||
     
    192192||6||Assemble units||8h||2,3,4,5||||May 11, 2009||May 11, 2009||
    193193
    194 With 50% applied to each task, the board designs are worked on in parallel but take twice as long.
     194With 50% applied to each task, the board designs are worked on in parallel but take twice as long:
    195195
    196196||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''||
     
    204204== Calendar
    205205
    206 The schedule above isn't accurate unless we have a 7-day work week. If we assume that the work week is Monday to Friday with Saturday and Sunday off, firmware has to finish Friday, May 8 and schematic has to finish Friday, May 1 so the project must begin April 29. Applying calendar information, our task list looks like the following.
     206The schedule above isn't accurate unless we have a 7-day work week. If we assume that the work week is Monday to Friday with Saturday and Sunday off, firmware has to finish Friday, May 8 and schematic has to finish Friday, May 1 so the project must begin April 29. Applying calendar information, our task list looks like the following:
    207207
    208208||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''||
     
    224224[[Image(simple-gantt.PNG)]]
    225225
    226 Disregarding any resource constraints, this chart shows 
     226Disregarding any resource constraints, this chart shows:
    227227
    228228 * circuit board design and firmware development follow schematic design
     
    242242=== Resource Allocation
    243243
    244 When a resource is not available 100% of the time, tasks take longer than the work suggests.By assigning effort to resources, we can chart this time dialation.
     244When a resource is not available 100% of the time, tasks take longer than the work suggests. By assigning effort to resources, we can chart this delay.
    245245
    246246[[Image(gantt-resource.PNG)]]
     
    254254[[Image(critical-path.PNG)]]
    255255
    256 Packaging design and circuit board layout are so short -- relative to other activities -- that speeding them up doesn't really help the project. But if we could shorten schematic design or firmware, every day we take out of one of those activities we also take out of the project schedule.
     256Packaging design and circuit board layout are so short, relative to other activities, that speeding them up doesn't really help the project. But if we could shorten schematic design or firmware, every day we take out of one of those activities we also take out of the project schedule.
    257257
    258258=== Sub-tasks
     
    325325Pale Purple's [http://virtual-planner.palepurple.co.uk/ Virtual Planner] is an alternative visualization tool.
    326326
    327 I've only just become aware of ActiveState's [http://www.activestate.com/press-releases/activestate-introduces-firefly-new-hosted-project-management-and- Firefly]. It was shut down in [http://www.activestate.com/assembla January 2011].
     327ActiveState's [http://www.activestate.com/press-releases/activestate-introduces-firefly-new-hosted-project-management-and- Firefly] was shut down in [http://www.activestate.com/assembla January 2011].
    328328
    329329=== Dependencies
    330330
    331 MasterTicketsPlugin supports FS dependency (but calls it ''blocks'' and ''blocked by'').
     331MasterTicketsPlugin supports FS dependency, but calls it ''blocks'' and ''blocked by''.
    332332
    333333The [http://trac.edgewall.org/wiki/SubTickets SubTickets] page talks about adding composition type dependency (parent/child relationships).
     
    344344
    345345May I draw your attention to SchedulingToolsPlugin? I was not aware of this page, but implemented some of its ideas in some kind of prototype.
    346 It currently has a scheduler, resource availability and Gantt chart in a simple fashion.
    347 I would like to enhance it, maybe we can join efforts? -- viola
     346It currently has a scheduler, resource availability and Gantt chart in a simple fashion. I would like to enhance it, maybe we can join efforts? -- viola
    348347
    349348TeamCalendarPlugin keeps track of user availability.
     
    357356== Other work
    358357
    359 There is a [http://www.viewpath.net/Website/ganttcharts/googlegadget.aspx Google Gadget Gantt chart] which might be leveraged for the visualizations once the data is made available (e.g., using [https://opensvn.csie.org/traccgi/swlcu/wiki/En/Devel/TracGViz/ TracGViz plugin]). That widget is developed and maintained by a company (i.e., [http://www.viewpath.net/ ViewPath]). Besides users need access to the internet and their projects environments '''have to''' be available too so that the iGoogle container be able to retrieve the data to display in the chart. All this means that local deployments (intranets, ...) are not possible.
     358There is a [http://www.viewpath.net/Website/ganttcharts/googlegadget.aspx Google Gadget Gantt chart] which might be used for the visualizations once the data is made available (e.g., using [https://opensvn.csie.org/traccgi/swlcu/wiki/En/Devel/TracGViz/ TracGViz plugin]). That widget is developed and maintained by [http://www.viewpath.com/ ViewPath]. Besides users need access to the internet and their projects environments '''have to''' be available too so that the iGoogle container be able to retrieve the data to display in the chart. All this means that local deployments (intranets) are not possible.
    360359
    361360[http://www.simpleprojectmanagement.com/planner/home.html Planner] is an open source project management program.
     
    367366I reviewed [http://www.smashingmagazine.com/2008/11/13/15-useful-project-management-tools/ 15 Useful Project Management Tools]. It mentions Trac. None of the tools obviously have scheduling in them. [http://www.atlassian.com/software/jira/ Jira] sounded promising but doesn't seem to have scheduling. Their chart examples don't include a Gantt. [http://www.basecamphq.com/ Basecamp] is popular and promising:
    368367
    369   Basecamp works
    370 
    371368  For years project management software was about charts, graphs, and stats. And you know what? It didn’t work. Pictures and numbers don’t get projects done. Basecamp tackles project management from an entirely different angle: A focus on communication and collaboration. Basecamp brings people together.
    372369
    373 But it is also commercial (which doesn't really help the Trac community). The description above makes it sound like we shouldn't expect a Gantt chart in Basecamp. I don't see automatic scheduling. They have a nice feature where you can subscribe to milestone updates via iCalendar.
     370But it is also commercial, which doesn't help the Trac community. The description above makes it sound like we shouldn't expect a Gantt chart in Basecamp. I don't see automatic scheduling. They have a nice feature where you can subscribe to milestone updates via iCalendar.
    374371
    375372Also:
     
    381378== Microsoft Project Task Properties
    382379
    383 Microsoft Project goes far beyond what is likely to be put into a Trac-based project management solution but it may be helfpul to consider what task properties MSProject records and what their analogs may be in Trac tickets.
     380Microsoft Project goes far beyond what is likely to be put into a Trac-based project management solution, but it may be helpful to consider what task properties MSProject records and what their analogs may be in Trac tickets.
    384381
    385382The Microsoft Project ''Task Information'' property sheet includes:
     
    415412However, this doesn't seem to be all the data Project records for a task. If you add a column to the WBS in the Gantt chart, there are many more options. The most interesting is Work which is the amount of work required to complete a task. Only when a resource is assigned 100% are Work and Duration the same. We'd like to be specify the ''work'' required for a task and let the system calculate its ''duration'' based on available resources.
    416413
    417 = Roadmap =
     414= Roadmap
    418415
    419416There seems to be a consensus that grandiose project management features for Trac should be implemented with a combination of plugins which provide useful functionality on their own. The following plan assumes that approach.
     
    469466 [#Dependencies dependencies]:: A list of other tasks (by ''id'') and the dependencies of this task on them.
    470467
    471 ''assignedStart'' and ''assignedFinish'' are likely mutually exclusive (that is, only one can be set; though both could be set if ''percentEffort'' was allowed to be computed).
     468''assignedStart'' and ''assignedFinish'' are likely mutually exclusive, that is, only one can be set; though both could be set if ''percentEffort'' was allowed to be computed.
    472469
    473470Each dependency specifies:
     
    507504== IProjectResource
    508505
    509 Describes resource availability. May need calendar options for individuals.
    510 Some may want progress rates and costs, and some may not - this is surely controversial.
     506Describes resource availability. May need calendar options for individuals. Some may want progress rates and costs, and some may not - this is surely controversial.
    511507
    512508== IProjectSchedule
    513509
    514 Computing a schedule involves determining the ''computedStart'' and ''computedFinish'' for a set of tasks taking into account the dependencies between tasks, the resources assigned to those tasks, and the resource availability. Where the tasks do not have ''assignedStart'' or ''assignedFinish'', the computed schedule prioritizes tasks to keep resources at or below availability. 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.
     510Computing a schedule involves determining the ''computedStart'' and ''computedFinish'' for a set of tasks taking into account the dependencies between tasks, the resources assigned to those tasks, and the resource availability. Where the tasks do not have ''assignedStart'' or ''assignedFinish'', the computed schedule prioritizes tasks to keep resources at or below availability. However, assigned dates may force overloaded resources. These overloads can then be reported and either manually resolved or resolved with a resource leveling module separate from the scheduler.
    515511
    516512The following rules control the scheduling:
     
    534530  * 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.
    535531
    536 NOTE: A scheduling algorithm which handled only FS dependencies would be a ''very'' useful first step.
     532Note: A scheduling algorithm which handled only FS dependencies would be a ''very'' useful first step.
    537533
    538534 * 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: