Changes between Version 6 and Version 7 of ProjectManagementIdeas


Ignore:
Timestamp:
Apr 20, 2009, 2:29:25 PM (15 years ago)
Author:
Olemis Lang
Comment:

Implementation details ... bah!

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v6 v7  
    1515 [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.
    1616
    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. The chart 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.
     17There 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.
    1818
    1919= Requirements =
     
    4343 * type (bug, task, enhancement, etc.)
    4444 * time (when the ticket was created)
     45
    4546 * owner (who is working on it)
     47
     48{{{
     49owner is duplicated. Is it core or additional field ?
     50}}}
     51
    4652 * reporter (who wrote the ticket)
    4753 * milestone (what milestone this ticket is part of)
     
    7682While 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.
    7783
    78 
    7984=== Dependencies ===
    8085
     
    101106By "project", I mean a set of related milestones.  Perhaps a software project has a Design Phase, an Alpha Release, a Beta Release, and a General Release.  Each would be a milestone with a target date and tickets to complete the work for that milestone.  There must be a way to specify which milestones to include either listing explicitly or by giving a pattern or substring filter.
    102107
    103 The chart should be able to show all tickets (though that may be a very complex chart) or alternately all those tickets matched by a (query | report) or any other ticket group provider.  A "chart these" button on a report page would be very nice.
     108== What do we need in the backend ? ==
     109
     110The chart should be able to show all tickets (though that may be a very complex chart) or alternately all those tickets matched by a (query | report) or any other ticket group provider. 
     111
     112To effectively display project progress, tickets must have estimated and actual times as in the TimingAndEstimation plugin. 
     113
     114It is also desirable to have loop detection to error-proof the tool used to create dependencies.
     115
     116It would be nice to be able to choose an As Late As Possible or As Soon As Possible algorithm for laying out tasks.
     117
     118== What do we need in the user interface ? ==
     119
     120A "chart these" button on a report page would be very nice.
     121
     122Tasks in the chart should be links to the tickets they represent (preferently opened in a separate tab | window).
     123
     124Milestones should be displayed in the chart as well
    104125
    105126The chart should support interactively "folding" groups of tasks to hide detail.
    106127
    107 Tasks in the chart should be links to the tickets they represent.
    108 
    109 To effectively display project progress, tickets must have estimated and actual times as in the TimingAndEstimation plugin.  Each task's bar in the chart should show actual hours.
     128Zooming in order to see the WBS in more detail
     129
     130Panning or scrolling in order to display the schedule at a
     131different time.
     132
     133Each task's bar in the chart should show actual hours.
    110134
    111135The chart should have a Today line
    112136
    113 It is also desirable to have loop detection to error-proof the tool used to create dependencies.
    114 
    115 It would be nice to be able to choose an As Late As Possible or As Soon As Possible algorithm for laying out tasks.
    116 
    117137The chart (or an accompanying report or tool) should aid in resource leveling by (at least) showing overcommitted resources.
    118138
     139Visual indications about delays, task completion and other
     140significant events
     141
     142Drag n' Drop so that users can change the order of the tickets (yes, I'm drunk ... hip .o: )
     143
    119144= Related Work =
    120145
     
    124149
    125150TimingAndEstimationPlugin 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.
     151
     152= Design guidelines =
     153
     154In order to agree about how to implement this functionality, the
     155very first step should be to describe the possible(s) architecture(s)
     156(i.e. how the different components are going to interact with each other
     157since the moment the request is sent by the client until the Gantt chart
     158is rendered by the browser)
     159that will be considered.
     160
     161== Components ==
     162
     163In order to add flexibility to the final solution, the
     164'''MVC pattern''' ''should'' be considered during its development.
     165Hence the following components need to be implemented in order to add
     166Gantt charts to Trac.
     167
     168=== The Model ===
     169
     170It provides the data in the Gantt chart and is not just a
     171single element but a set of components like the following :
     172
     173    * The ticket models, which provide data about the issues found
     174      in the project environment
     175    * Trac query mechanism which provides a way to select (filter) the
     176      tickets being shown.
     177    * [#RelatedWork Other plugins] used to track ticket dependencies
     178    * [#RelatedWork Other plugins] used to track task/subtask relationships
     179    * [#RelatedWork Other plugins] used to estimate the time needed to finish the given tasks
     180    * Maybe one (a few) component(s) whose role is to provide the
     181      functionality specific to Gantt charts, thus acting as a central
     182      access point and a mediator so as to put all the other
     183      components together.
     184
     185=== The View ===
     186
     187It ''should'' be a JavaScript component (is this possible ?)
     188responsible for rendering the data provided by ''the model''.
     189Besides it ''might'' support [#What_do_we_need_in_the_user_interface__ other dynamic features]
     190
     191=== The Controller ===
     192
     193{{{
     194¿What do we need this for?
     195}}}
     196
     197=== Implications ===
     198
     199The aforementionned separation ''should'' allow the replacement of
     200any of the components involved. Hence the following modifications
     201''should'' be made easily (the list being intentionally incomplete) :
     202
     203  - Replace the JS-based view by another made with Flash.
     204  - Use a custom, or specific estimation strategy.
    126205
    127206= Roadmap =