Changes between Version 126 and Version 127 of ProjectManagementIdeas


Ignore:
Timestamp:
Aug 28, 2015, 12:58:53 PM (9 years ago)
Author:
figaro
Comment:

Further cleanups, removed dead link

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v126 v127  
    251251== Earned Value
    252252
    253 To compute earned value, we need unchanged original estimates, and probably also some way to estimate remaining time.
     253To compute [https://en.wikipedia.org/wiki/Earned_value_management earned value], we need unchanged original estimates and an estimate of remaining time.
    254254
    255255== Resource Description and Allocation
    256256
    257 We need a proposal for how to describe available resources within Trac. If tasks are tickets and tickets have owners who work on them, it seems reasonable that a resource is a Trac user. There may be information we need to track for a resource that it not part of the user configuration. It might also be necessary or desirable to allow tickets to have multiple owners. Or, we might want to have a way to have a list of (resource,hours) pairs independent of the owner.
     257We need a proposal for how to describe available resources within Trac. If tasks are tickets and tickets have owners who work on them, it seems reasonable that a resource is a Trac user. There may be information we need to track for a resource that it not part of the user configuration. It might also be necessary or desirable to allow tickets to have multiple owners. Or, we might want to have a way to have a list of `(resource,hours)` pairs independent of the owner.
    258258
    259259= Related Work
     
    261261== Trac Core
    262262
    263 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. We may be able to get a lot done while we wait for that work to come to fruition.
     263There 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.
    264264
    265265== Trac Plugins
     
    275275 [wiki:GanttChartPlugin GanttChart]:: is a very simple Gantt chart implemented in a formatted text region. It is manually edited, not data-driven.
    276276
    277  [http://willbarton.com/code/tracgantt/ TracGantt]:: has potential but has some fields that don't seem to be appropriate to what we want to do with a Gantt chart (e.g., Due to Assign).
    278 
    279  GanttCalendarPlugin:: provides nice views of tickets. It uses "Completed [%]" (quantized to 5% increments), "Start" (YYYY-MM-DD), and "End" (YYYY-MM-DD) custom fields. It seems to include an administrative calendar, perhaps where holidays and such can be recorded.
     277 [wiki:GanttCalendarPlugin GanttCalendar]:: provides nice views of tickets. It uses "Completed [%]" (quantized to 5% increments), "Start" (YYYY-MM-DD), and "End" (YYYY-MM-DD) custom fields. It seems to include an administrative calendar, perhaps where holidays and such can be recorded.
    280278
    281279Pale Purple's [http://github.com/palepurple Virtual Planner] is an alternative visualization tool.
     
    297295DateFieldPlugin has some helpful wrappers around custom fields to validate them as dates.
    298296
    299 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.
    300 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
     297SchedulingToolsPlugin has a scheduler, resource availability and Gantt chart in a simple fashion. It is in alpha stage, however.
    301298
    302299TeamCalendarPlugin keeps track of user availability.
     
    306303The 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.
    307304
    308 A fact of life is that Microsoft products like Exchange and Outlook 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.
     305Because 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.
    309306
    310307== Other work
     
    314311[http://www.simpleprojectmanagement.com/planner/home.html Planner] is an open source project management program.
    315312
    316 GNOME Office once included [http://wiki.linuxquestions.org/wiki/MrProject MrProject] (which may be another version of Planner). The news of !MrProject's death may be exaggerated; [http://live.gnome.org/Planner GNOME Live!] lists a 0.14.4 release in April 2009.
     313GNOME Office once included [http://wiki.linuxquestions.org/wiki/MrProject MrProject], which may be another version of Planner. The news of !MrProject's death may be exaggerated; [http://live.gnome.org/Planner GNOME Live!] lists a 0.14.4 release in April 2009.
    317314
    318315[http://www.dotproject.net/index.php dotProject] is an open-source, web-based project management system. A quick review suggests its task management isn't as good as Trac. It has a Gantt chart but [http://en.wikipedia.org/wiki/DotProject wikipedia] notes "as of version 2.0 the task dependencies feature is not complete". It has a troubled history but was forked last year as [http://www.web2project.net/ Web2Project].
    319316
    320 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:
     317The article [http://www.smashingmagazine.com/2008/11/13/15-useful-project-management-tools/ 15 Useful Project Management Tools] mentions Trac. None of the tools obviously have scheduling in them.
     318
     319[http://www.atlassian.com/software/jira/ Jira] sounded promising but doesn't seem to have scheduling. Their chart examples don't include a Gantt.
     320
     321[http://www.basecamphq.com/ Basecamp] is popular and promising:
    321322
    322323  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.
     
    364365 * Custom Fields
    365366
    366 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.
    367 
    368 = Roadmap
     367However, 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 specify the ''work'' required for a task and let the system calculate its ''duration'' based on available resources.
     368
     369== Roadmap
    369370
    370371There 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.
     
    382383  * TracJsGanttPlugin provides such a display.
    383384
    384  * [#DependencyandDuration Basic scheduling] (ignoring resource conflicts and availability) can be provided based on 
     385 * [#DependencyandDuration Basic scheduling] (ignoring resource conflicts and availability) can be provided based on:
    385386  * core Trac tickets,
    386387  * !MasterTickets,
     
    396397 * The scheduler can be enhanced to take into account resource conflicts.
    397398
    398 = Design
     399== Design
    399400
    400401To maximize the flexibility in mixing and matching plugins to provide features for project management, I propose to leverage Trac's [http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture Component Architecture] to specify a number of interfaces in a `tracpm` namespace. In this way a Gantt chart, a workload chart, a task scheduler, etc. can all use the `tracpm` interfaces regardless of whether, for example, Subtickets or Childtickets (or even ticket decomposition in a future Trac core) are used to represent parent/child relationships.
    401402
    402 == IProjectTask
     403=== IProjectTask
    403404
    404405Tasks 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.
     
    428429 lag:: Offset of this task's anchor relative to the anchor of ''task''. (''Lag'' may be negative.) Whether the ''anchor'' for the dependency is the start or end of the task depends on the dependency type. For example, if Task B has a FS dependency on Task A with a lag of 1 day, then Task B starts 1 day after Task A finishes. Or, if Task B has an SS dependency in Task A with a lag of 1 day, then Task B starts 1 day after Task A starts. (''lag'' is not scaled by ''percentEffort''.)
    429430
    430 == IProjectDependencies
     431=== IProjectDependencies
    431432
    432433An interface that abstracts the implementation details of dependencies and allows other parts of the PM system (e.g., a Gantt chart or scheduler) to retrieve and update dependencies including:
     
    446447  * Unlink B as a successor or predecessor of A (order doesn't matter).
    447448
    448 == IProjectCalendar
     449=== IProjectCalendar
    449450
    450451The essential feature of a project calendar is that it knows when work is not done (weekends and holidays) so that task duration can account for that down time.
     
    456457'''Used to have `startFromFinish()` and `finishFromState()` here but those are likely scheduler functions. I think what we need here is `hoursAvailable(resource, date)` which a scheduler can call on each date and subtract the result from the work it is trying to schedule.'''
    457458
    458 == IProjectResource
     459=== IProjectResource
    459460
    460461Describes resource availability. May need calendar options for individuals. Some may want progress rates and costs, and some may not - this is surely controversial.
    461462
    462 == IProjectSchedule
     463=== IProjectSchedule
    463464
    464465Computing 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.
     
    494495   * "fit" - It's better to start a 2-day task on Wednesday and hold a 4 day task for the next week than to break up the longer task across a weekend.
    495496
    496 == Schedule Scenarios ==
    497 
    498 It might be helpful or interesting to consider saving schedules or scenarios. If we stored resource assignment, start and finish data in a table keyed by schedule and ticket, we could store multiple possible schedules and choose to display different ones. An initial release could have only a single schedule and no facility for creating alternatives. A later refinement could add scenario support. If a start or finish date was configured for a task, the schedule would copy that data and not allow editing or recomputation of those dates; other tasks would flow around that fixed time. If a task lacked a start or finish date, the scheduling of that task would be fluid and computed by the scheduler.
     497== Schedule Scenarios
     498
     499It might be helpful to consider saving schedules or scenarios. If we stored resource assignment, start and finish data in a table keyed by schedule and ticket, we could store multiple possible schedules and choose to display different ones. An initial release could have only a single schedule and no facility for creating alternatives. A later refinement could add scenario support. If a start or finish date was configured for a task, the schedule would copy that data and not allow editing or recomputation of those dates; other tasks would flow around that fixed time. If a task lacked a start or finish date, the scheduling of that task would be fluid and computed by the scheduler.
    499500
    500501== Contributors
    501502
    502 The bulk of this page was prepared by Chris Nelson who makes no claim to be certified project planner or anything of the sort. It is based on his understanding of project management after 25 years of software development. [#Contributors Other developers] have also offered some hints and useful comments (according to their experience) in order to enhance this page, and get a better understanding of the features and requirements needed.
     503The bulk of this page was prepared by Chris Nelson who makes no claim to be a certified project planner. It is based on his understanding of project management after 25 years of software development.
    503504
    504505Other contributors:
     
    584585
    585586 * [http://portal.acm.org/citation.cfm?id=1162708.1163079&coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 Resource allocation and planning for program management], Kabeh Vaziri, Linda K. Nozick, Mark A. Turnquist, December 2005             
    586 
    587   Much of the project scheduling literature treats task durations as deterministic. In reality, however, task durations are subject to considerable uncertainty and that uncertainty can be influenced by the resources assigned. The purpose of this paper ...
    588 
    589587 * [http://portal.acm.org/citation.cfm?id=1351542.1351869&coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 Stochastic rollout and justification to solve the resource-constrained project scheduling problem], Ningxiong Xu, Linda Nozick, Orr Bernstein, Dean Jones, December 2007               
    590 
    591   The key question addressed by the resource-constrained project scheduling problem (RCPSP) is to determine the start times for each activity such that precedence and resource constraints are satisfied while achieving some objective. Priority rule-based ...
    592 
    593588 * [http://portal.acm.org/citation.cfm?id=324898.324933&coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 Activity scheduling in the dynamic multi-project setting: choosing heuristics through deterministic simulation], Robert C. Ash, December 1999           
    594589
    595590And others at [http://portal.acm.org/results.cfm?coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 ACM.org].
    596 
    597591
    598592----