Changes between Version 130 and Version 131 of ProjectManagementIdeas


Ignore:
Timestamp:
Sep 7, 2015, 7:34:41 PM (9 years ago)
Author:
figaro
Comment:

Further cosmetic changes

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v130 v131  
    2626 * Deadlines for task or project completion.
    2727
    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.
     28Some 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.
    2929
    3030=== Task Properties
     
    8080There 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.
    8181
    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.
     82The 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.
    8383
    8484Consider a grossly-simplified project to design a new electronic device, with the following tickets:
     
    9292||6||Assemble units||New device||
    9393
    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'':
     94With 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'':
    9595
    9696||'''ID'''||'''Summary'''||'''Work'''||
     
    102102||6||Assemble units||8h||
    103103
    104 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'':
     104From 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'':
    105105
    106106||'''ID'''||'''Summary'''||'''Estimate'''||'''Predecessors'''||
     
    114114For 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.
    115115
    116 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.
     116We 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.
    117117
    118118If the milestone for this work is May 11, the schedule might look like the following:
     
    174174=== Dependency and Duration
    175175
    176 Once we have a task scheduler, we can simplify presentation of task scheduling with a very basic Gantt that showed just tasks and their dependencies and the resultant schedule.
     176Once 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.
    177177
    178178[[Image(simple-gantt.PNG)]]
     
    208208[[Image(critical-path.PNG)]]
    209209
    210 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, we shorten the project's duration.
     210Packaging 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.
    211211
    212212=== Sub-tasks
     
    257257== Trac Core
    258258
    259 There are a couple of tickets ([http://trac.edgewall.org/ticket/31 31], [http://trac.edgewall.org/ticket/886 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.
     259There 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.
    260260
    261261== Trac Plugins
     
    265265MasterTicketsPlugin supports FS dependency, but calls it ''blocks'' and ''blocked by''.
    266266
    267 The [http://trac.edgewall.org/wiki/SubTickets SubTickets] proposal talks about adding composition type dependency (parent/child relationships).
     267The [t:SubTickets] proposal talks about adding composition type dependency (parent/child relationships).
    268268
    269269SubticketsPlugin and ChildTicketsPlugin provide composition type dependency that can be used for WBS.
     
    273273=== Time and Scheduling
    274274
    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 likely allow either convention via a configurable interface.
     275TimingAndEstimationPlugin 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.
    276276
    277277DateFieldPlugin has some helpful wrappers around custom fields to validate them as dates.
     
    295295=== Data Exchange
    296296
    297 The TicketImportPlugin can import tasks exported from Microsoft Project as a CSV file. There is a [ticket:7812 patch] to import dependencies so Microsoft Project can feed !MasterTickets.
     297The 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.
    298298
    299299Because 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.
    300300
    301 == Microsoft Project Task Properties
    302 
    303 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 MS-Project records and what their analogs may be in Trac tickets.
     301== MS-Project Task Properties
     302
     303MS-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.
    304304
    305305The Microsoft Project ''Task Information'' property sheet includes:
     
    371371=== IProjectTask
    372372
    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.
     373Tasks 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.
    374374
    375375An IProjectTask has the following properties:
     
    379379 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.
    380380 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.
    382382 resource:: Name of resource assigned to this task.
    383383 percentEffort:: How much of ''resource's'' time is spent on the task.
     
    408408  * Finding all related tickets (predecessors, successors, descendants, ancestors, and possibly those that share a resource).
    409409  * 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''.
    411411   * If ''end'' is not specified, all that start on or after ''begin''.
    412412 * Manipulating task relationships:
     
    435435The following rules control the scheduling:
    436436
    437  * Choosing a method
     437 * Choosing a method:
    438438  * 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.
    439439  * 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.
    440440  * 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.
    441441
    442  * Handle assigned dates
     442 * Handle assigned dates:
    443443  * It is an error for a task to have an ''assignedStart'' ''and'' an ''assignedFinish''.
    444444  * If a task has an ''assignedStart'', the ''computedStart'' is the ''assignedStart'' and the ''computedFinish'' is the ''computedStart'' plus the duration.
     
    447447Note: 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.
    448448
    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.):
    450450  * 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.
    451451  * 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.
     
    547547
    548548Also:
    549 
    550549 * [http://www.openworkbench.org/ Open Workbench] is a Microsoft Windows-based application not suitable for integration with a web-based tool like Trac.
    551550 * [http://www.ganttproject.biz/ GanttProject] is a desktop application developed in Java.