Changes between Version 11 and Version 12 of ProjectManagementIdeas


Ignore:
Timestamp:
Apr 28, 2009, 7:58:29 PM (15 years ago)
Author:
ChrisN@…
Comment:

Major revisions, partially complete.

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v11 v12  
    33Trac is strong in basic, individual and small-team task management but lacks features for heavy-duty project management ''a la'' Microsoft Project, Project Manager Workbench, etc.  This page discusses those missing features and how they can best be realized.
    44
     5= Requirements and Definitions =
     6
     7Project management support software should help us answer a few basic questions:
     8
     9 * When will my project be done?
     10 * How are my resources being utilized?
     11 * How will a change (e.g., in scope or constraints) affect project completion or resource utilization?
     12
     13To answer these questions, it must know about:
     14
     15 * Tasks to be done
     16 * Dependencies between tasks
     17 * Resources available to do tasks
     18 * Assignment of resources to tasks
     19 * Deadlines for task or project completion
     20
     21== Task Properties ==
     22
     23Answering the questions listed above requires recording certain properties of a task.
     24
     25 * Duration - The amount of work needed to complete the task.  This is ''not'', necessarily, the time it will take to complete the task.  The task may be unassigned (and will take forever to complete) or has a resource assigned only part-time (so it will take longer to complete than the amount of work indicates).
     26 * Assigned resource - The individual who will work  on this task.
     27 * % Effort - The amount of the resource's time that will be spent on this task.  If the resource is working on a 2-day task 50% of the time, we expect it to take 4 days.
     28 * % Complete - How much of the task has been done already.
     29 * Dependencies - How other tasks affect when this task can be started or finished.
     30
     31=== Dependencies ===
     32
     33Task dependencies can be quite complex.  Project management generally involves four types of dependencies between tasks or activities:
     34
     35  Finish-to-Start (FS):: Task B cannot begin until task A is complete.  This is the most common.  When building a house, the walls cannot be put up until the foundation is complete.
     36
     37  Start-to-Start (SS):: Task B cannot begin until after task A begins (though they may end independently).  When building a house, interior painting cannot begin until the dry wall is started.  (Each room can be painted as soon as its dry wall is up.)
     38
     39  Finish-to-Finish (FF):: Task B cannot end until task A ends (though they may begin independently).  When building a house, inspections cannot be completed until construction has completed (though parts may be inspected before the whole job is done).
     40
     41  Start-to-Finish (SF):: Task B cannot end until Task A begins.  When building a house, the builder may begin getting interim payments during construction but payment will not be completed until the owner can start moving in.
     42
     43In addition, managing the complexity of a large project requires breaking large tasks into smaller ones (or viewing groups of small tasks as larger aggregates).  For example, interior painting might be broken down into paint the living room, paint the dining room, etc.
     44
     45While useful, the FF and SF dependencies are somewhat more esoteric than the others and implementation may be deferred.
     46
     47''NOTE:'' The relationships are directional and inverting them is not straightforward.  If A has a FS dependency on B, it is '''not''' true that B has an SF dependency on A.
     48
    549= Gantt Charts =
    650
    7 As discussed in [http://groups.google.com/group/trac-users/browse_thread/thread/83c0b6a248040542?hl=en two]  [http://groups.google.com/group/trac-users/browse_thread/thread/3084796acbc7233c/3f393a18f99cfebd?hl=en&tvc=2#3f393a18f99cfebd threads] on the Trac Users mailing list, a fundamental requirement for project management is a [http://en.wikipedia.org/wiki/Gantt_chart Gantt chart] to show [http://en.wikipedia.org/wiki/Work_breakdown_structure work Breakdown Structure] (WBS).
     51The basic answer to "When will my project be done?" is generally provided by a {{{//en.wikipedia.org/wiki/Gantt_chart Gantt chart}}} which shows tasks, their dependencies, their duration (scaled by resource availability), and milestones. As discussed in {{{//groups.google.com/group/trac-users/browse_thread/thread/83c0b6a248040542?hl=en}}} two  {{{//groups.google.com/group/trac-users/browse_thread/thread/3084796acbc7233c/3f393a18f99cfebd?hl=en&tvc=2#3f393a18f99cfebd}}} threads on the Trac Users mailing list, a Gantt chart is a fundamental requirement for project management.
    852
    953Trac has three Gantt chart plugins:
     
    1357 [wiki:GanttChartPlugin GanttChart]:: is a very simple Gantt chart implemented in a formatted text region.  It is manually edited, not data-driven.
    1458
    15  [http://willbarton.com/code/tracgantt/ TracGantt]:: has potential but has some funky fields (e.g., Due to Assign) that don't seem to be appropriate to what we want to do with a Gantt chart.
    16 
    17 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 developped 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.
    18 
    19 = Requirements =
     59 {{{//willbarton.com/code/tracgantt/ TracGantt}}}:: has potential but has some funky fields (e.g., Due to Assign) that don't seem to be appropriate to what we want to do with a Gantt chart.
     60
     61There is a {{{//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 developped and maintained by a company (i.e. {{{//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.
    2062
    2163== Gantt Chart Components ==
     
    3173It may also show resource assignments and progress in tasks.  It often includes a "today" line to show where a project stands.  (If the project is on schedule, all tasks to the left of ''today'' are complete and any task that spans ''today'' has a progress bar to the right of ''today''.)
    3274
    33 A Gantt chart may also show slack time for tasks, how much they can slip before affecting the overall schedule.
     75A Gantt chart may also show slack time for tasks, how much they can slip before affecting the overall schedule.  It often also highlights the ''critical path'', the set of tasks which determine the overall length of the project and which delay the project completion unit-for-unit as they are delayed or extended.
    3476
    3577== Component Data ==
     
    3779Each Gantt chart component or feature requires data to support it.  For Trac-based project management, this data is often in addition to the core ticket data. 
    3880
     81In general, we might expect to have multiple resources assigned to a task but if we use a Trac ticket as the basis for a task, we have only a single resource, the ticket owner.
     82
    3983=== Core Fields ===
    4084
    41 Core ticket fields include:
    42 
    43  * type (bug, task, enhancement, etc.)
    44  * time (when the ticket was created)
     85Core ticket fields include relevant to project management include:
    4586
    4687 * owner (who is working on it)
    47 
    48 {{{
    49 owner is duplicated. Is it core or additional field ?
    50 }}}
    51 
    52  * reporter (who wrote the ticket)
    5388 * milestone (what milestone this ticket is part of)
    5489 * status (new, assigned, ..., closed)
    5590 * summary (short description)
    5691
    57 Core milestone fields include:
     92Core milestone fields relevant to project management include:
    5893
    5994 * name
    6095 * due (date and time)
    6196 * completed (treated as a Boolean: open or closed)
    62  * description
    6397
    6498=== Additional Data ===
    6599
    66 For a simple Gantt chart, we may use the following ticket fields:
    67 
    68  * owner (the resource assigned to the task)
    69  * milestone (when the task is due)
    70  * summary (short description)
    71 
    72 In addition, a task must have:
    73 
    74  * estimate (expected work require to complete task)
     100For project management, we must have the following additional information about a task/ticket:
     101
     102 * estimate (expected work required to complete task)
    75103 * percent complete
    76104 * dependencies
    77 
    78 It may also prove useful to note that a resource may not be applied 100% to a task.
     105 * percent effort
     106
    79107
    80108=== Timing ===
    81109
    82110While Gantt charts typically show percent complete, this can be computed from hours remaining vs. total estimate or hours worked vs. total estimate.  We will not, necessarily, store percent complete.  It is intuitive for display and analysis but difficult for data entry.
    83 
    84 === Dependencies ===
    85 
    86 Project management generally involves four types of dependencies between tasks or activities:
    87 
    88   Finish-to-Start (FS):: Task B cannot begin until task A is complete.  This is the most common.  When building a house, the walls cannot be put up until the foundation is complete.
    89 
    90   Start-to-Start (SS):: Task B cannot begin until after task A begins (though they may end independently).  When building a house, interior painting cannot begin until the dry wall is started.  (Each room can be painted as soon as its dry wall is up.)
    91 
    92   Finish-to-Finish (FF):: Task B cannot end until task A ends (though they may begin independently).  When building a house, inspections cannot be completed until construction has completed (though parts may be inspected before the whole job is done).
    93 
    94   Start-to-Finish (SF):: Task B cannot end until Task A begins.  When building a house, the builder may begin getting interim payments during construction but payment will not be completed until the owner can start moving in.
    95 
    96 In addition, managing the complexity of a large project requires breaking large tasks into smaller ones (or viewing groups of small tasks as larger aggregates).  For example, interior painting might be broken down into paint the living room, paint the dining room, etc.
    97 
    98 While useful, the FF and SF dependencies are somewhat more esoteric than the others and implementation may be deferred.
    99 
    100 ''NOTE:'' The relationships are directional and inverting them is not straightforward.  If A has a FS dependency on B, it is '''not''' true that B has an SF dependency on A.
    101111
    102112= Features =
     
    146156MasterTicketsPlugin supports FS dependency (but calls it ''blocks'' and ''blocked by'').
    147157
    148 The [http://trac.edgewall.org/wiki/SubTickets SubTickets] page talks about adding composition type dependency.  Can this be done in a plugin like !MasterTickets or must it be in the core?
     158The {{{//trac.edgewall.org/wiki/SubTickets SubTickets}}} page talks about adding composition type dependency.  Can this be done in a plugin like !MasterTickets or must it be in the core?
    149159
    150160TimingAndEstimationPlugin 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.
     
    194204There 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.
    195205
    196  1. Fork !MasterTickets as !TicketDep (or something) and add ''composed of''/''part of'' dependencies and [http://trac.edgewall.org/wiki/SubTickets#CreatingSubtickets means to create them].  Plan for but do not yet implement ''starts with'' and ''ends with'' dependencies.
     206 1. Fork !MasterTickets as !TicketDep (or something) and add ''composed of''/''part of'' dependencies and {{{//trac.edgewall.org/wiki/SubTickets#CreatingSubtickets means to create them}}}.  Plan for but do not yet implement ''starts with'' and ''ends with'' dependencies.
    197207 1. Specify the interfaces necessary for a scheduling plugin to use dependencies, estimates, and time worked to determine project schedule.
    198208   * Consider adding a percentage available when scheduling resources.