Changes between Version 125 and Version 126 of ProjectManagementIdeas


Ignore:
Timestamp:
Aug 28, 2015, 10:05:13 AM (9 years ago)
Author:
figaro
Comment:

Further cleanups

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v125 v126  
    33= Project management ideas
    44
    5 Trac is strong in basic, individual and small-team task management but lacks features for heavy-duty project management such as in Microsoft Project, Project Manager Workbench, etc. This page discusses those missing features and how they can best be realized.
    6 
    7 In Trac, a "project" is sometimes synonymous with "installation". As used on this page, it is a set of related tasks and deadlines. Perhaps a software project has a Design Phase, an Alpha Release, a Beta Release, and a General Release. Each phase would have a milestone with a target date and tickets to complete the work for that phase.
    8 
    9 == Related research
    10 
    11 Scheduling activities in a project is an area of active research in [http://en.wikipedia.org/wiki/Operations_research Operations Research] (cf. [http://books.google.com/books?id=pHetPl2LOYgC&lpg=PA153&ots=rKKZ7Lv2On&dq=pslib%20project%20scheduling&pg=PP1 Project Scheduling]) and has been proven to be [http://en.wikipedia.org/wiki/NP-hard NP hard]. It should be noted that it is an ''optimal'' solution that is hard compute. Most research strives to get 2-3% improvement out of a well-defined, complex project. If you have a small or dynamic project or if your estimates are routinely off by 5-10%, you won't see the benefit of such high-powered scheduling.
    12 
    13 There are several variations on the problem.
    14 
    15  ''RCPSP'' :: Resource-Constrained Project Scheduling Problem
    16 
    17  ''RCMPSP'' :: Resource-Constrained Multi-Project Scheduling Problem
    18 
    19  ''m_PRCPSP'' :: Preemptable RCPSP. A RCPSP where each task may be broken (preempted) ''m'' times during scheduling. Generally, ''m'' is limited to 1 both for simplicity of the algorithm and because there is real cost in practical task switching.
    20 
    21 A range of techniques have been brought to bear on RCPSP:
    22 
    23  * Exact solutions. Attempts to find an optimal schedule. Due to the polynomial nature of the problem these are only possible or practical for a small number of activities (e.g., a few dozen).
    24 
    25  * Heuristic approximations. Attempts to find a good solution in reasonable time for a realistic number of tasks (e.g., hundreds).
    26 
    27  * Metaheuristics. More abstract approaches such as genetic algorithms, tabu search, simulated annealing, ant colony optimization, and particle swarm optimization.
    28 
    29 All of these algorithmic approaches also have other dimensions such as the number of threads that are used, the method they use to prioritize activities, etc. To be practical for implementation as a Trac plugin, it seems likely our implementation should not require heavy-weight, opaque abstractions or multiple threads. Furthermore, we desire an algorithm which can ''update'' a schedule as part of a ticket change listener rather than having to completely recompute a schedule for each, individual change.
    30 
    31 [http://129.187.106.231/psplib/ PSPLIB] provides a standard set of program scheduling problems to test the various algorithms performance against one another and the optimal solution.
    32 
    33 Kolisch and Hartmann[[FootNote(Kolisch, R. & Hartmann S. "Experimental investigation of heuristics for resource-constrained project scheduling: An update" European Journal of Operational Research 174 (2006): 23-27.)]] tested dozens of algorithms and variations using the PSPLIB data.
    34 
    35 Other papers of note include:
    36 
    37  * [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             
    38 
    39   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 ...
    40 
    41  * [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               
    42 
    43   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 ...
    44 
    45  * [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           
    46 
    47 And others at [http://portal.acm.org/results.cfm?coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 ACM.org].
    48 
    49 = Requirements and Definitions
     5Trac is strong in basic, individual and small-team task management, but lacks features for heavy-duty project management such as in [https://products.office.com/en-us/project/project-and-portfolio-management-software Microsoft Project] and [http://sourceforge.net/projects/openworkbench/ Open Workbench]. This page discusses those missing features and how they can best be realized.
     6
     7In Trac, a "project" is sometimes synonymous with "installation". On this page it is a set of related tasks and deadlines. Perhaps a software project has a Design Phase, an Alpha Release, a Beta Release and a General Release. Each phase would have a milestone with a target date and tickets to complete the work for that phase.
     8
     9== Requirements and Definitions
    5010
    5111Project management support software should help us answer a few basic questions:
     
    6828Some 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.
    6929
    70 == Properties
    71 
    72 A project management system must track properties of (information about) tasks, resources, and milestones.
    73 
    7430=== Task Properties
    7531
    7632Answering the questions listed above requires recording certain properties of a task:
    7733
    78  Original Work Estimate:: The amount of work believed to be needed to complete the task as of before the task was started. This is ''not'', necessarily, the time it will take to complete the task (duration). The task may be unassigned (and will take forever to complete), may have a resource assigned only part-time (so it will take longer to complete than the amount of work indicates), or have multiple resources assigned (so it may take less time to complete than the amount of work indicates). Typically work will be expressed in hours of effort of a resource.
     34 Original Work Estimate:: The amount of work believed to be needed to complete the task as of before the task was started. This is ''not'' necessarily the time it will take to complete the task (duration). The task may be unassigned (and will take forever to complete), may have a resource assigned only part-time (so it will take longer to complete than the amount of work indicates), or have multiple resources assigned (so it may take less time to complete than the amount of work indicates). Typically work will be expressed in hours of effort of a resource.
    7935
    8036 Current Work Estimate:: The total time the task is expected to take, as of now. Like Original Work Estimate, but may be modified.
     
    9248 Task Hierarchy:: A "Work Breakdown Structure" is often used to give a hierarchical organization of all tasks on a project. For example, interior painting of a new house might be broken down into paint the living room, paint the dining room, etc. In a WBS, task 1.1.2 would have subtask 1.1.2.1 and 1.1.2.2. We propose to express the hierarchy but not force explicit numbering. We propose that each task have a single parent, which is the next level up in a WBS.
    9349
    94 ==== Dependencies
     50=== Dependencies
    9551
    9652Task dependencies can be quite complex. Project management generally involves four types of dependencies between tasks or activities:
     
    10460  Start-to-Finish (SF):: Task B cannot finish until Task A starts. 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.
    10561
    106 While useful, the FF and SF dependencies are somewhat more esoteric than the others and implementation may be deferred.
     62While useful, the FF and SF dependencies are not commonly used and implementation may be deferred.
    10763
    10864'''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.
     
    12682There 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 far 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.
    12783
    128 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, their dependencies, their duration (scaled by resource availability), and milestones. [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, suggest that a Gantt chart is a fundamental requirement for project management but scheduling tasks is even more fundamental and a necessary precondition for producing a Gantt chart.
     84The 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. [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, suggest that a Gantt chart is a fundamental requirement for project management, but scheduling tasks is even more fundamental and a necessary precondition for producing a Gantt chart.
    12985
    13086Consider a grossly-simplified project to design a new electronic device. This project might have the following tickets:
     
    158114||6||Assemble units||8h||2,3,4,5||
    159115
    160 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 man-days) and we can take nine 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, many more tasks and manual inspection is impractical.
     116For 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 man-days) and we can take nine 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.
    161117
    162118We 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.
     
    319275 [wiki:GanttChartPlugin GanttChart]:: is a very simple Gantt chart implemented in a formatted text region. It is manually edited, not data-driven.
    320276
    321  [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.
     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).
    322278
    323279 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.
    324280
    325 Pale Purple's [http://virtual-planner.palepurple.co.uk/ Virtual Planner] is an alternative visualization tool.
    326 
    327 ActiveState's [http://www.activestate.com/press-releases/activestate-introduces-firefly-new-hosted-project-management-and- Firefly] was shut down in [http://www.activestate.com/assembla January 2011].
     281Pale Purple's [http://github.com/palepurple Virtual Planner] is an alternative visualization tool.
    328282
    329283=== Dependencies
     
    584538
    585539'' When I was typing that, I had in my mind the concept of how the TypedTicketWorkflowPlugin works. An .ini setting with additional data in the .ini value(s) that modify who/how that particular thing works. Not sure if that concept is something that can be applied here. Maybe something like the following:[[BR]]
    586 {{{
     540{{{#!ini
    587541[pm-config]
    588 calc-end-date=custom
    589 calc-end-date.provider=CustomCalPlugin
    590 calc-end-date.params=%s
     542calc-end-date = custom
     543calc-end-date.provider = CustomCalPlugin
     544calc-end-date.params = %s
    591545}}}
    592546''or maybe something like this?''
    593 {{{
     547{{{#!ini
     548[pm-config]
    594549calc-end-date = custom
    595 calc-end-date.format =dd-MMM-yyyy
     550calc-end-date.format = dd-MMM-yyyy
    596551calc-end-date.provider = ValuePropogationPlugin
    597552calc-end-date.params = method:max,query:parent=self
     
    602557''I specifically was of the line of thought that I would like to pull some of these values directly from my requirements specifications somehow, hence the lean toward some sort of configurable "provider" for the entries, as I have no idea how I would "pull" the data from the requirements at this point, other data from calculation and projections using different projection methods, as well as "override" capability where data is entered by hand sometimes.  -- JW, 03 Aug. 2011''
    603558
    604 == More Feed Back Here ==
    605 
    606 [[FootNote]]
     559== References and Related research
     560
     561Scheduling activities in a project is an area of active research in [http://en.wikipedia.org/wiki/Operations_research Operations Research] (cf. [http://books.google.com/books?id=pHetPl2LOYgC&lpg=PA153&ots=rKKZ7Lv2On&dq=pslib%20project%20scheduling&pg=PP1 Project Scheduling]) and has been proven to be [http://en.wikipedia.org/wiki/NP-hard NP hard], which requires enumerating all solutions to get to the optimal solution. If you have a small or dynamic project or if your estimates are routinely off by 5-10%, you won't see the benefit of mathematically optimal scheduling.
     562
     563There are several variations on the problem:
     564
     565 ''RCPSP'' :: Resource-Constrained Project Scheduling Problem
     566
     567 ''RCMPSP'' :: Resource-Constrained Multi-Project Scheduling Problem
     568
     569 ''m_PRCPSP'' :: Preemptable RCPSP. A RCPSP where each task may be broken (preempted) ''m'' times during scheduling. Generally, ''m'' is limited to 1 both for simplicity of the algorithm and because there is real cost in practical task switching.
     570
     571A range of techniques can be used for RCPSP:
     572
     573 * Exact solutions. Attempts to find an optimal schedule. Due to the polynomial nature of the problem these are only possible or practical for a small number of activities (e.g., a few dozen).
     574
     575 * Heuristic approximations. Attempts to find a good solution in reasonable time for a realistic number of tasks (e.g., hundreds).
     576
     577 * Metaheuristics. More abstract approaches such as genetic algorithms, tabu search, simulated annealing, ant colony optimization and particle swarm optimization.
     578
     579All of these algorithmic approaches also have other dimensions such as the number of threads that are used, the method they use to prioritize activities, etc. To be practical as a Trac plugin, the implementation should not require heavy-weight, opaque abstractions or multiple threads. Furthermore, we desire an algorithm which can ''update'' a schedule as part of a ticket change listener rather than having to completely recompute a schedule for each, individual change.
     580
     581[http://129.187.106.231/psplib/ PSPLIB] provides a standard set of program scheduling problems to test the various algorithms performance against one another and the optimal solution. [http://www.sciencedirect.com/science/article/pii/S0377221705002596 Kolisch and Hartmann] tested dozens of algorithms and variations using the PSPLIB data.
     582
     583Other papers of note include:
     584
     585 * [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
     589 * [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
     593 * [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           
     594
     595And others at [http://portal.acm.org/results.cfm?coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 ACM.org].
     596
     597
    607598----
    608 = Old design notes =
     599= Old design notes
    609600
    610601(I'm reworking these into a better flow for the whole document.)