Changes between Version 128 and Version 129 of ProjectManagementIdeas


Ignore:
Timestamp:
Sep 3, 2015, 4:57:49 PM (9 years ago)
Author:
figaro
Comment:

Further cosmetic changes, updated links, removed out-of-context academic references.

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v128 v129  
    1313 * When will my project be done? That is, what is the forecast completion date?
    1414 * How much Earned Value has the project achieved?
    15  * How do incurred costs compare to [https://en.wikipedia.org/wiki/Earned_value_management Earned value] (Cost Performance Factor).
     15 * How do incurred costs compare to [https://en.wikipedia.org/wiki/Earned_value_management Earned value] (Cost Performance Factor)?
    1616 * Am I on schedule? That is, is the percent complete for the overall project where it should be at this time?
    1717 * What tasks are on the critical path? That is, what tasks have a positive or negative effect on the overall schedule if they are early or late?
     
    3434 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.
    3535
    36  Current Work Estimate:: The total time the task is expected to take, as of now. Like Original Work Estimate, but may be modified.
     36 Current Work Estimate:: The total time the task is expected to take, as of now. Like Original Work Estimate, but may be modified over the course of the project.
    3737
    3838 Expended effort:: The amount of work expended against this task so far.
     
    6666=== Resource Properties
    6767
    68 In general a project resource may be many things such as a person working on a task (a carpenter or a software developer) or a source of supplies needed for a task (cement or paint or computer systems).
    69 
    70 A resource may have a name and typically has some availability. An employee may have responsibilities in two departments and only be available for certain work 50% of the time or a vendor may only be able to supply a certain amount of cement or paint or CPU cycles.
     68In general a project resource may be many things such as a person working on a task (a carpenter or a software developer) or a source of supplies needed for a task (timber or computer systems).
     69
     70A resource may have a name and typically has some availability. An employee may have responsibilities in two departments and only be available for certain work 50% of the time or a vendor may only be able to supply a certain amount of timber or CPU cycles.
    7171
    7272=== Milestone 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 precondition 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:
     
    158158== Calendar
    159159
    160 The schedule above isn't accurate unless we have a 7-day work week. If we assume that the work week is Monday to Friday with Saturday and Sunday off, firmware has to finish Friday, May 8 and schematic has to finish Friday, May 1 so the project must begin April 29. Applying calendar information, our task list looks like the following:
     160The schedule above isn't accurate unless we have a 7-day work week. If we assume that the work week is Monday to Friday, firmware has to finish Friday, May 8 and schematic has to finish Friday, May 1, so the project must begin April 29. Applying calendar information, our task list looks as follows:
    161161
    162162||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''||
     
    183183 * package design can proceed independently
    184184 * assembly can't be done until the circuit boards and packaging are ready
    185  * the product can't ship until it's assembled and has firmware.
     185 * the product can't ship until it's assembled and has firmware
    186186 * the overall project will take 9 calendar days
    187187
     
    309309[http://www.simpleprojectmanagement.com/planner/home.html Planner] is an open source project management program.
    310310
    311 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.
     311Gnome Office has a [https://wiki.gnome.org/action/show/Apps/Planner Planner], which is also [https://github.com/GNOME/planner forked].
    312312
    313313[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 is forked as [http://www.web2project.net/ Web2Project].
     
    317317[http://www.atlassian.com/software/jira/ Jira] sounded promising but doesn't seem to have scheduling. Their chart examples don't include a Gantt.
    318318
    319 [http://www.basecamphq.com/ Basecamp] is popular and promising:
     319[http://www.basecamphq.com/ Basecamp] is popular and promising, but it is also commercial and doesn't support Gantt charting capabilities:
    320320
    321321  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.
    322322
    323 But it is also commercial, which doesn't help the Trac community. The description above makes it sound like we shouldn't expect a Gantt chart in Basecamp. I don't see automatic scheduling. They have a nice feature where you can subscribe to milestone updates via iCalendar.
     323There is no automatic scheduling either. They have a nice feature where you can subscribe to milestone updates via iCalendar.
    324324
    325325Also:
    326326
    327327 * [http://www.openworkbench.org/ Open Workbench] is a Microsoft Windows-based application not suitable for integration with a web-based tool like Trac.
    328  * [http://openproj.org/openproj OpenProj] also appears to be a desktop application. However, their [http://openproj.org/wiki/index.php/Available_Views views] page may guide development of PM output for Trac.
    329  * [http://www.ganttproject.biz/ GanttProject]'s website isn't very informative, but it appears to be a desktop application.
     328 * [http://www.ganttproject.biz/ GanttProject] is a desktop application developed in Java.
    330329
    331330== Microsoft Project Task Properties
     
    405404An IProjectTask has the following properties:
    406405
    407  id:: Numeric ID (Inherent in Trac)
    408  work:: Man-hours of work to complete task
    409  risk:: Relative risk. An integer from 0 to 100. How likely it is that ''work'' is accurate. Zero means no risk; ''work'' is certain to be accurate.
     406 id:: Numeric ID, inherent in Trac.
     407 work:: Person-hours of work to complete task.
     408 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.
    410409 priority:: Relative priority. An integer.
    411  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.)
    412  resource:: Name of resource assigned to this task
     410 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.
     411 resource:: Name of resource assigned to this task.
    413412 percentEffort:: How much of ''resource's'' time is spent on the task.
    414413 duration:: How long will ''resource'' take to complete ''work'' with ''percentEffort''. For example, a 16-hour task with 50% effort will take 4 days.
    415  assignedStart:: An explicit, user-specified constraint on when the task must start (a date)
    416  assignedFinish:: An explicit, user-specified constraint on when the task must finish (a date)
     414 assignedStart:: An explicit, user-specified constraint on when the task must start. A date.
     415 assignedFinish:: An explicit, user-specified constraint on when the task must finish. A date.
    417416 computedStart:: The result of scheduling this task based on constraints. Equals ''assignedStart'' if that field is set.
    418417 computedFinish:: The result of scheduling this task based on constraints. Equals ''assignedFinish'' if that field is set.
     
    432431
    433432 * Finding related tasks
    434   * Finding predecessors (immediate and indirect)
    435   * Finding successors (immediate and indirect)
    436   * Finding descendants (children and further generations)
    437   * Finding ancestors (immediate and further generations)
    438   * Finding all related tickets (predecessors, successors, descendants, ancestors, and possibly those that share a resource)
     433  * Finding predecessors (immediate and indirect).
     434  * Finding successors (immediate and indirect).
     435  * Finding descendants (children and further generations).
     436  * Finding ancestors (immediate and further generations).
     437  * Finding all related tickets (predecessors, successors, descendants, ancestors, and possibly those that share a resource).
    439438  * Finding all the tickets due in a time range, ''begin''..''end''.
    440439   * If ''begin'' is not specified, all due by a ''end''.
    441    * If ''end'' is not specified, all that start on or after ''begin''
    442  * Manipulating task relationships
     440   * If ''end'' is not specified, all that start on or after ''begin''.
     441 * Manipulating task relationships:
    443442  * Reparent B as a child of A (removing any existing parent). If A is `None`, remove B's current parent, if any.
    444443  * Link B as a successor of A (same as making A a predecessor of B). Other dependencies are unchanged.
     
    560559Scheduling 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.
    561560
    562 There are several variations on the problem:
    563 
    564  ''RCPSP'' :: Resource-Constrained Project Scheduling Problem
    565 
    566  ''RCMPSP'' :: Resource-Constrained Multi-Project Scheduling Problem
    567 
    568  ''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.
    569 
    570 A range of techniques can be used for RCPSP:
    571 
    572  * 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).
    573 
    574  * Heuristic approximations. Attempts to find a good solution in reasonable time for a realistic number of tasks (e.g., hundreds).
    575 
    576  * Metaheuristics. More abstract approaches such as genetic algorithms, tabu search, simulated annealing, ant colony optimization and particle swarm optimization.
    577 
    578 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 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.
    579 
    580 [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.
    581 
    582 Other papers of note include:
    583 
    584  * [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             
    585  * [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               
    586  * [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           
    587 
    588 And others at [http://portal.acm.org/results.cfm?coll=ACM&dl=ACM&CFID=42032534&CFTOKEN=18432343 ACM.org].
     561To 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.
    589562
    590563----