Changes between Version 124 and Version 125 of ProjectManagementIdeas
- Timestamp:
- Aug 27, 2015, 2:00:00 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ProjectManagementIdeas
v124 v125 5 5 Trac 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. 6 6 7 In Trac, "project" is sometimes used synonymouslywith "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.7 In 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. 8 8 9 9 == Related research 10 10 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 spanout 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.11 Scheduling 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. 12 12 13 13 There are several variations on the problem. … … 19 19 ''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. 20 20 21 A range of techniques have been brought to bear on RCPSP . They can be broadly categorized as:21 A range of techniques have been brought to bear on RCPSP: 22 22 23 23 * 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). … … 51 51 Project management support software should help us answer a few basic questions: 52 52 53 * When will my project be done? That is, what is the forecast ed completion date.53 * When will my project be done? That is, what is the forecast completion date? 54 54 * How much Earned Value has the project achieved? 55 55 * 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? 58 58 * How are my resources being utilized? 59 59 60 60 To answer these questions, the system must know about: 61 61 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 i nformation is part of the Trac core, some is provided by existing plugins, and some must be added to support project management. None of this informationis 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 68 Some 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. 69 69 70 70 == Properties … … 74 74 === Task Properties 75 75 76 Answering the questions listed above requires recording certain properties of a task .76 Answering the questions listed above requires recording certain properties of a task: 77 77 78 78 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. … … 138 138 ||6||Assemble units||New device|| 139 139 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''.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'': 141 141 142 142 ||'''ID'''||'''Summary'''||'''Work'''|| … … 148 148 ||6||Assemble units||8h|| 149 149 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'' .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'': 151 151 152 152 ||'''ID'''||'''Summary'''||'''Estimate'''||'''Predecessors'''|| … … 162 162 We 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. 163 163 164 If the milestone for this work is May 11, the schedule might look like the following .164 If the milestone for this work is May 11, the schedule might look like the following: 165 165 166 166 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Due'''||'''Start'''|| … … 174 174 This is computed as follows: 175 175 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. 179 179 180 180 To finish on time, the project must start on May 3, the earliest start time for any task. … … 182 182 However, 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. 183 183 184 With 100% applied to each task, the motherboard and daughter board are worked on serially .184 With 100% applied to each task, the motherboard and daughter board are worked on serially: 185 185 186 186 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''|| … … 192 192 ||6||Assemble units||8h||2,3,4,5||||May 11, 2009||May 11, 2009|| 193 193 194 With 50% applied to each task, the board designs are worked on in parallel but take twice as long .194 With 50% applied to each task, the board designs are worked on in parallel but take twice as long: 195 195 196 196 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''|| … … 204 204 == Calendar 205 205 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 .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: 207 207 208 208 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''|| … … 224 224 [[Image(simple-gantt.PNG)]] 225 225 226 Disregarding any resource constraints, this chart shows 226 Disregarding any resource constraints, this chart shows: 227 227 228 228 * circuit board design and firmware development follow schematic design … … 242 242 === Resource Allocation 243 243 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.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 delay. 245 245 246 246 [[Image(gantt-resource.PNG)]] … … 254 254 [[Image(critical-path.PNG)]] 255 255 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.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. 257 257 258 258 === Sub-tasks … … 325 325 Pale Purple's [http://virtual-planner.palepurple.co.uk/ Virtual Planner] is an alternative visualization tool. 326 326 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]. Itwas shut down in [http://www.activestate.com/assembla January 2011].327 ActiveState'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]. 328 328 329 329 === Dependencies 330 330 331 MasterTicketsPlugin supports FS dependency (but calls it ''blocks'' and ''blocked by'').331 MasterTicketsPlugin supports FS dependency, but calls it ''blocks'' and ''blocked by''. 332 332 333 333 The [http://trac.edgewall.org/wiki/SubTickets SubTickets] page talks about adding composition type dependency (parent/child relationships). … … 344 344 345 345 May 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 346 It 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 348 347 349 348 TeamCalendarPlugin keeps track of user availability. … … 357 356 == Other work 358 357 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.358 There 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. 360 359 361 360 [http://www.simpleprojectmanagement.com/planner/home.html Planner] is an open source project management program. … … 367 366 I 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: 368 367 369 Basecamp works370 371 368 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. 372 369 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.370 But 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. 374 371 375 372 Also: … … 381 378 == Microsoft Project Task Properties 382 379 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.380 Microsoft 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. 384 381 385 382 The Microsoft Project ''Task Information'' property sheet includes: … … 415 412 However, 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. 416 413 417 = Roadmap =414 = Roadmap 418 415 419 416 There 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. … … 469 466 [#Dependencies dependencies]:: A list of other tasks (by ''id'') and the dependencies of this task on them. 470 467 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. 472 469 473 470 Each dependency specifies: … … 507 504 == IProjectResource 508 505 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. 506 Describes resource availability. May need calendar options for individuals. Some may want progress rates and costs, and some may not - this is surely controversial. 511 507 512 508 == IProjectSchedule 513 509 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 apartfrom the scheduler.510 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 separate from the scheduler. 515 511 516 512 The following rules control the scheduling: … … 534 530 * 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. 535 531 536 N OTE: A scheduling algorithm which handled only FS dependencies would be a ''very'' useful first step.532 Note: A scheduling algorithm which handled only FS dependencies would be a ''very'' useful first step. 537 533 538 534 * 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: