Changes between Version 130 and Version 131 of ProjectManagementIdeas
- Timestamp:
- Sep 7, 2015, 7:34:41 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ProjectManagementIdeas
v130 v131 26 26 * Deadlines for task or project completion. 27 27 28 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.28 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. 29 29 30 30 === Task Properties … … 80 80 There are two fundamental ways to approach scheduling. One is to assume that all tasks are small and to divide total estimates by resource rate. Then, one compares earned value to cost, computes CPF (Cost Performance Factor), and computes an estimated end time. This is the simpler approach, but fails to capture tasks that only some people can work on and other complexities. The other approach is to create an actual plan that shows when each resource will work on tasks. 81 81 82 The basic answer to "When will my project be done?" is generally ''displayed in'' a [http://en.wikipedia.org/wiki/Gantt_chart Gantt chart] which shows tasks, dependencies, duration (scaled by resource availability) and milestones. Two threads [https://groups.google.com/forum/?hl=en#!topic/trac-users/g8C2okgEBUI here] and [https://groups.google.com/forum/?hl=en#!topic/trac-users/MIR5asvHIzw here] on the Trac Users mailing list,suggest that a Gantt chart is a fundamental requirement for project management, but so is scheduling tasks and in fact a necessary condition for producing a Gantt chart.82 The basic answer to "When will my project be done?" is generally displayed in a [http://en.wikipedia.org/wiki/Gantt_chart Gantt chart] which shows tasks, dependencies, duration (scaled by resource availability) and milestones. Two threads [https://groups.google.com/forum/?hl=en#!topic/trac-users/g8C2okgEBUI here] and [https://groups.google.com/forum/?hl=en#!topic/trac-users/MIR5asvHIzw here] on the Trac Users mailing list suggest that a Gantt chart is a fundamental requirement for project management, but so is scheduling tasks and in fact a necessary condition for producing a Gantt chart. 83 83 84 84 Consider a grossly-simplified project to design a new electronic device, with the following tickets: … … 92 92 ||6||Assemble units||New device|| 93 93 94 With this 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 ''[Estimated] Work'':94 With this 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 work backwards 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. Hence, we need a field to hold ''[Estimated] Work'': 95 95 96 96 ||'''ID'''||'''Summary'''||'''Work'''|| … … 102 102 ||6||Assemble units||8h|| 103 103 104 From here we can guess that the shortest the project could beis one week. However, we know we cannot begin circuit board layout without a schematic. We need a field to hold ''Predecessors'':104 From here we can determine that the shortest duration of the project is one week. However, we know we cannot begin circuit board layout without a schematic. We need a field to hold ''Predecessors'': 105 105 106 106 ||'''ID'''||'''Summary'''||'''Estimate'''||'''Predecessors'''|| … … 114 114 For such a short task list we can manually inspect and see that assembly (8h) follows firmware (40h) follows schematic (24h) and the shortest project time is 72 hours (9 person-days) and we can take 9 days from the milestone date to know when we have to start work to finish on time. However, a project of any complexity may have many more tasks and manual inspection is impractical. 115 115 116 We can begin to do more effective project management if we have a task scheduler tha n can work backwards from the milestone, considerwork and dependencies, and calculate task start and end dates and project start date.116 We can begin to do more effective project management if we have a task scheduler that can work backwards from the milestone, considers work and dependencies, and calculate task start and end dates and project start date. 117 117 118 118 If the milestone for this work is May 11, the schedule might look like the following: … … 174 174 === Dependency and Duration 175 175 176 Once we have a task scheduler, we can simplify presentation of task scheduling with a very basic Gantt that showedjust tasks and their dependencies and the resultant schedule.176 Once we have a task scheduler, we can simplify presentation of task scheduling with a basic Gantt chart that shows just tasks and their dependencies and the resultant schedule. 177 177 178 178 [[Image(simple-gantt.PNG)]] … … 208 208 [[Image(critical-path.PNG)]] 209 209 210 Packaging design and circuit board layout are so short, relative to other activities, that speeding them up doesn't reallyhelp the project. But if we could shorten schematic design or firmware, we shorten the project's duration.210 Packaging design and circuit board layout are so short, relative to other activities, that speeding them up doesn't help the project. But if we could shorten schematic design or firmware, we shorten the project's duration. 211 211 212 212 === Sub-tasks … … 257 257 == Trac Core 258 258 259 There are a couple of tickets ([ http://trac.edgewall.org/ticket/31 31], [http://trac.edgewall.org/ticket/886886]) and some discussion about ticket [http://trac.edgewall.org/wiki/TracDev/Proposals/TicketLinks linking] and [http://trac.edgewall.org/wiki/TracDev/Proposals/TracRelations relationships] in the Trac core.259 There are a couple of tickets ([t:#31], [t:#886]) and some discussion about ticket [http://trac.edgewall.org/wiki/TracDev/Proposals/TicketLinks linking] and [http://trac.edgewall.org/wiki/TracDev/Proposals/TracRelations relationships] in the Trac core. 260 260 261 261 == Trac Plugins … … 265 265 MasterTicketsPlugin supports FS dependency, but calls it ''blocks'' and ''blocked by''. 266 266 267 The [ http://trac.edgewall.org/wiki/SubTicketsSubTickets] proposal talks about adding composition type dependency (parent/child relationships).267 The [t:SubTickets] proposal talks about adding composition type dependency (parent/child relationships). 268 268 269 269 SubticketsPlugin and ChildTicketsPlugin provide composition type dependency that can be used for WBS. … … 273 273 === Time and Scheduling 274 274 275 TimingAndEstimationPlugin and TracHoursPlugin add estimated and actual hours fields to tickets. There is some disagreement about whether the estimate is the remaining time (so total estimated time is actual + estimate) or total time (so remaining time is estimate - actual). A Gantt chart typically wants estimate and percent complete. It is possible to extract this from either recording convention and we should likelyallow either convention via a configurable interface.275 TimingAndEstimationPlugin and TracHoursPlugin add estimated and actual hours fields to tickets. There is some disagreement about whether the estimate is the remaining time (so total estimated time is actual + estimate) or total time (so remaining time is estimate - actual). A Gantt chart typically has estimate and percent complete. It is possible to extract this from either recording convention and we should allow either convention via a configurable interface. 276 276 277 277 DateFieldPlugin has some helpful wrappers around custom fields to validate them as dates. … … 295 295 === Data Exchange 296 296 297 The TicketImportPlugin can import tasks exported from Microsoft Project as a CSV file. There is a [ticket:7812 patch] to import dependencies so MicrosoftProject can feed !MasterTickets.297 The TicketImportPlugin can import tasks exported from Microsoft Project as a CSV file. There is a [ticket:7812 patch] to import dependencies, so MS-Project can feed !MasterTickets. 298 298 299 299 Because Microsoft products are present in many environments, it would be nice if we could get availability information from Exchange to feed a project calendar. Just reading from the group calendar would probably be enough. That way users would only have to put in their vacations, etc. in one place. 300 300 301 == M icrosoftProject Task Properties302 303 M icrosoft 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 MS-Project recordsand what their analogs may be in Trac tickets.301 == MS-Project Task Properties 302 303 MS-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 are recorded and what their analogs may be in Trac tickets. 304 304 305 305 The Microsoft Project ''Task Information'' property sheet includes: … … 371 371 === IProjectTask 372 372 373 Tasks for project management will be based on tickets but an abstract interface allows us to decouple a scheduler or other PM tool from the implementation of non-core ticket features like recording estimates and progress. One user may choose to implement IProjectTask on top of !TimingAndEstimation and another on top of !TracHours.373 Tasks for project management will be based on tickets, but an abstract interface allows us to decouple a scheduler or other PM tool from the implementation of non-core ticket features like recording estimates and progress. One user may choose to implement IProjectTask on top of !TimingAndEstimation and another on top of !TracHours. 374 374 375 375 An IProjectTask has the following properties: … … 379 379 risk:: Relative risk as a measure of likelihood of the ''work estimate'' being accurate, where 0 means 'certain to be accurate'. An integer from 0 to 100. 380 380 priority:: Relative priority. An integer. 381 percentComplete:: How much of ''work'' is done? This can be computed from time remaining vs. total estimate or time worked vs. total estimate. We will not, necessarily, store percent complete . It is intuitive for display and analysis but difficult for data entry.381 percentComplete:: How much of ''work'' is done? This can be computed from time remaining vs. total estimate or time worked vs. total estimate. We will not, necessarily, store percent complete, but is rather a calculated field. 382 382 resource:: Name of resource assigned to this task. 383 383 percentEffort:: How much of ''resource's'' time is spent on the task. … … 408 408 * Finding all related tickets (predecessors, successors, descendants, ancestors, and possibly those that share a resource). 409 409 * Finding all the tickets due in a time range, ''begin''..''end''. 410 * If ''begin'' is not specified, all due by a ''end''.410 * If ''begin'' is not specified, all due by an ''end''. 411 411 * If ''end'' is not specified, all that start on or after ''begin''. 412 412 * Manipulating task relationships: … … 435 435 The following rules control the scheduling: 436 436 437 * Choosing a method 437 * Choosing a method: 438 438 * If using ''As Soon As Possible'', tasks without predecessors should be done done today (or the start of the project, if that's later), and their successors when they are done, etc. 439 439 * If using ''As Late As Possible'', tasks without successors should be done at the end of the project and their predecessors done right before they must start, etc. 440 440 * It may be desirable to override the method for individual tasks so exploratory work is done ASAP and clean up work is done ALAP, regardless of the overall method being used. 441 441 442 * Handle assigned dates 442 * Handle assigned dates: 443 443 * It is an error for a task to have an ''assignedStart'' ''and'' an ''assignedFinish''. 444 444 * If a task has an ''assignedStart'', the ''computedStart'' is the ''assignedStart'' and the ''computedFinish'' is the ''computedStart'' plus the duration. … … 447 447 Note: Once a task is begun, its ''assignedStart'' is set from the ''computedStart'', so recomputing a schedule doesn't change its start. We may have to deal with split tasks, however, if a task is begun then put down and resumed later. 448 448 449 * 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.) 449 * 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.): 450 450 * 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. 451 451 * 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. … … 547 547 548 548 Also: 549 550 549 * [http://www.openworkbench.org/ Open Workbench] is a Microsoft Windows-based application not suitable for integration with a web-based tool like Trac. 551 550 * [http://www.ganttproject.biz/ GanttProject] is a desktop application developed in Java.