Apache OpenOffice (AOO) Bugzilla – Issue 57604
Prototype Requirement: Resource leveling
Last modified: 2017-05-20 09:12:06 UTC
This task is a part of issue 57601 "Requirements specification for project management tool prototype": http://www.openoffice.org/issues/show_bug.cgi?id=57601
Should use task priority in resource levelling. Ideally should point out when overtime or additional resources are needed to reach schedule dates.
I think we need to collate a lot of experience over classes of resources, and different methods of resource levelling. A machine tool represents a fixed capacity resource, which may have to be shared with other projects. The resource requirement will be a fixed number of hours, whose precise location in the plan is not within the gift of the plan-maker. A mathematical expert is a resource that cannot be duplicated by hiring, but which could be made to work overtime, whereas production workers can sometimes be duplicated by hiring but which might require a lead-time to do so. Mathematicians rarely do shift work; production workers regularly do. If a department has 12 programmers, it might not be possible to split a task between them to make it happen in 1/12 of the time - but splitting 24 or 36 tasks between them would be productive, but would require a packing problem solution to optimise usage. Some may be faster or better than others, so each instance of the programmer resource might benefit from a "software gain" representing different productivity, just as (suggested above) tasks might need a priority other than the defined chronological sequence to help with floating them across resource pools. Meeting rooms cannot be double-booked; they are perhaps analogous to a machine tool. But thier absence does not mean a meeting cannot take place: just that it might take longer or disrupt other tasks. Tasks can consume resources, such as metal, money, computing power, or government allocated carbon licences. Man-hours are regenerated weekly, gallons of water used for cooling might be recyclable by the hour, but tropical hardwood does not regenerate within the timescale of most projects.
I like bobharvey's comments. It takes the concept of resources beyond most pm tools (certainly MSP). Most of bobharvey's points can be readily addressed through resource calendars and resource allocations to tasks (just like MSP). However, bobharvey's idea of the efficiency or productivity of a resource is valuable and new I think. I would also add that a resource's productivity could vary over time: A mathematician doesn't think very well after 8 hours a day; a machine tool may be able to function 24 hours a day although its productivity may go down over time without maintenance. The idea of 12 programmers not able to write a program in 1/12th the time could be accomplished by having some indication of the degree to which a task can be crashed. This could be a field that is "max number of resources" (1=task can't be shared, n=task can be accomplished in 1/nth the time with n resources). However with this do we assume linear reduction in duration? e.g.: one person needs 100 hours to complete task X; with two people it can be done in 50 hours; with three people it can be done in 33 hours, etc. Maybe then we also need to include a "min duration" i.e., the minimum duration it would take to complete this task even with infinite resources; that way we could calculate some kind of logarythmic function. Also of course we need to account for the crash cost for a task. Also of course we need an attribute on a resource to indicate whether the resource is renewable, finite, or limited in various other ways (you can have this programmer up to a maximum of 20 days but no more than 10 hours/week).
Resource levelling should not be performed automatically, but on a by-task or by-resource basis. So that when the project manager sees a bottle-neck, he can decide where to allow overloading and where this is not possible (e.g. machines). Even a maximum overloading would be interesting (e.g. max. 10h working a day). In short: - per resource - characteristic "allow overloading" (for all tasks) - max load (120%, 10h/day) - per task and resource - same as above but only valid for a particular resource and task
I think the option to level automatically and fully should be there but perhaps offer an option of leveling for a specific resource or resource-by-resource. At all times the tool shall generate a report of what constraints and decisions were applied to a particular task when it was leveled. This provides a great tool for diagnosing what happened when a PM is surprised by a result. Perhaps even more than a report, but a 'active' log where the PM can click on a particular task or resource and see why it modified by a particular leveling decision.
I want to introduce a new revolution type of Resources Management, which may solve Resource Leveling problem and bring other benefit by the use of existing tool - Gantt Chart "Integrate Resource Management to Task Management" One project include 3 things: 1. **Raw Resources (Man Power, Material), e.g. Personal Man Power, Cost 2. Developed Resources (Man Power, Material), e.g. Invited Volunteer Group Power, Price, Investment 3. Tasks Most project software manage Tasks & Resources separately, but I think we should manage Resources as we manage Tasks! i.e. We should use same mechanism and Panel (Gantt Chart) to manage both Tasks & Resources. The advantages are obvious: 1. * "Resources Collection" (use raw resources to earn/exchange/build more/suitable Resoucres) is part of important TASK for each project usually, conceptually and practically should not be missed in Task Panel. 2. Enhance Resources Management by simplify the entire operation. Opeartions of Both Task & Resource management are unified. 3. Reources' time properties become easier & further controllable, benefited from Gantt Chart. 4. Two fields, "Precedent Task" & "Resources", could also be combined into One "Input" field. 5. Resouces leveling = Task Leveling naturally. For Example: Current Task Panel includes only: Precedent Task => Task ------------------------------------------------------------------- Task1 => Task2 Task2 => Task3 New Panel could be: Input Field => Output Field ------------------------------------------------------------------- Raw Resouces1 => Task1 Raw Resouces2 => Earn / Exchange / Develop Resources3 Developed Resources3 => Developed Resources4 Developed Resources4 => Task3 Task3 => Task4 Task4 => Task5 Remark: ** The Drop Down List of Input Field include Developed Resources & task items on Output Field automatically, for quickly input
Most to patwwh: Interesting way to look at the ressource/task leveling. Do you more info about this? Does it have a name? Do you have more illustrative examples showing the difference between traditional ways of leveling and this way?
I agree that we should allow Project Managers as a role, to distribute the Work Power provided by their available Personnel and the Machine Hours provided by available machines. So we need to make distinctions between the two available resources, Work Power and Machine Hours, and to set up plans accordingly, i.e. Off Work Hours by the Personnel due to Illness a/o Holiday, and also scheduled Maintenance Hours for the machines that we might manage in a given project using the OOPM. In that, OOPM should be flexible enough to provide for setting up calendars for each resource with clearly defined schedules for Off Work Hours due to Illness etc. and also for Maintenance Hours for machines and also Online Hours for machines as well. So, actually, we require multiple calendars that we will manage, even across timezone boundaries, given for example a scenario where we do software development on a more global basis. However, the OOPM can only assist when assigning resources such as Work Power a/o Machine Hours to a project or (multiple) tasks thereof. It cannot replace the common sense of the project manager, and, as far as I can see, most of what is displayed here, is simply based on common sense. I would propose that we keep the OOPM runtime and it's data model as open to extension as possible, so that individual organizations using the tool might always provide additional intelligence as to how individual organizations deal with the various resources defined for a project. And, given also the hint on project meetings, and the resource allocation for rooms and media, we should definitely include this with the OOPM.
As to the proposal of integrating resource allocation and actual project tasks and milestones into a single gantt chart, I would actually object. Management of such combined views is rather difficult to achieve and the visualization of such combined views cannot be achieved so that the PM or whoever looks at such a combined view can gather some intelligence from it. What I would propose is to allow a per resource gantt chart view of the allocated times. Welcome back to micro management ;-)
What we can achieve, though, is that we provide a list of links when clicking on a allocated time space, for example a task in a project. If we then would click on that tasks (or merely hover upon it), we would see a list of links that would provide us with the ability to quickly jump to either Personnel, or Machine or whatever currently assigned to that tasks, providing us with a gantt chart of that specific Person or Machine.
Regarding the requirement for including also other types of resources such as material/machines besides the actual WorkPower resource: What about an extensible resource schema, where every resource is classified by its mime type (reusing open standards here). We could then associate with that mime type different editors/viewers and also extensions to existing dialogs that would provide us with the possibility to post-pone much of what is provided here as input for the actual solution, given that we currently have only limited WorkPower at hand. We could then be using extensions registering with named extension points, see for example Eclipse and other projects on the web using such extension facilities.
Once again regarding the different types of resources, e.g. material/machine: Do we really want OOPM to also integrate functionality mostly found in ERPM systems? If so, we can provide for an extension capability that would then analyze the data model so that individual constraints imposed by for example machine allocation / material allocation must be met in order for a given task to complete. This I then would implement so that the user can enter a set of constraints using a standard dialog of some sort.
Regarding the comment by patwwh: Quote: > One project include 3 things: > 1. **Raw Resources (Man Power, Material), e.g. Personal Man Power, Cost > 2. Developed Resources (Man Power, Material), e.g. Invited Volunteer Group > Power, Price, Investment > 3. Tasks > > > The advantages are obvious: > 1. * "Resources Collection" (use raw resources to earn/exchange/build > more/suitable Resoucres) is part of important TASK for each project usually, > conceptually and practically should not be missed in Task Panel. > 2. Enhance Resources Management by simplify the entire operation. > Opeartions of Both Task & Resource management are unified. > 3. Reources' time properties become easier & further controllable, benefited > from Gantt Chart. > 4. Two fields, "Precedent Task" & "Resources", could also be combined into One > "Input" field. > 5. Resouces leveling = Task Leveling naturally. > > > For Example: > Current Task Panel includes only: > > Precedent Task => Task > ------------------------------------------------------------------- > Task1 => Task2 > Task2 => Task3 > > New Panel could be: > > Input Field => Output Field > ------------------------------------------------------------------- > Raw Resouces1 => Task1 > Raw Resouces2 => Earn / Exchange / Develop Resources3 > Developed Resources3 => Developed Resources4 > Developed Resources4 => Task3 > Task3 => Task4 > Task4 => Task5 Nice way of thinking about this, actually. However, this would be rather complicated in the ui to be solved, unless we clearly separate the individual concerns. Thinking about resource collections, I would rather group them, for example establishing TaskGroups (aka TaskForces when talking in military terms), which would actually be an external process, by having a separate dialog for managing such groups. This, however, could always also be integrated into the task edit dialog, BTW. As for the developed resources, I would definitely not include the volunteer work power with that resource, I would rather assign them to the above mentioned TaskGroup. Assigning a single person's WorkPower or an allocation of an arbitrary amount of the time represented by the WorkPower, even if it exceeds the actual limit imposed by for example the person's personal calendar settings (work day time etc.), could simply be integrated into the task editor for the person's in the TaskGroup, i.e. we would then display this as for example a table with editable fields, or even as draggable bars for the begin/end time of that person that is assigned to that task. We could even go for having Gantt-Charts, as you suggested, for editing the resource allocation for individual tasks, either in the project's Gantt-Chart or in the task viewer/editor.
Regarding jwrolf's comment: > Should use task priority in resource levelling. > Ideally should point out when overtime or additional resources are needed to > reach schedule dates. Assigning priorities to individual tasks is fine, however, and we are talking about principal human reasoning here, we might not actually point out that additional resources would be required for a single task to be achieved in time, lest we have Critical Path or other analysis methods available. What we can achieve though, is provide some hint by for example coloring a given task in the WBS or in the Gantt-Chart respectively, that is about to reach its scheduled end (time). We may not assume as to what is required for actually getting that task in line with the overall project schedule unless we add additional information to the data model and somewhat also human reasoning to the engine that would then evaluate such tasks. Any additional ideas are welcome.
Summing up both bobharvey's comment on resource allocation, resource efficiency and also resource experience and those of j6502: Most of this is also based on human reasoning. The PM should know who he is assigning to the individual tasks and take also into account that Person A is less experienced and therefore less productive than for example Person B. However, it may come out that Person B currently has a lot of private problems and thus becomes even more unproductive than said Person A. Which would lead the initial premise of having a higher experience ad absurdum. This, we might never automate, thus I would render it basically obsolete in that it might ever become implemented. Unless you are willing, though, to daily estimate the efficiency of one person and to also keep book of that person's overall development and to also adjust the required personal information on that person used for estimating/predicting overall task performance. We could automate the process of calculating a person's efficiency by the time that a single person assigned to a task commits the work and thus closes the tasks for herself. I.e. actual time spent vs. projected time. Let us know if that would suit your needs, i.e. evaluation of a single person's efficiency by the ratio of actual time spent on their assignment to a single task and the time scheduled for that assignment. Then, however, we still need to accumulate the overall time spent and allocated scheduled time for each person assigned to the tasks in the project. This would require some formula that would also take into account the priorities assigned to any of the tasks over time. But then again, you must always also take into account, that priorities assigned to individual tasks a/o individual personnel assignments being made to a single task, might change over time.
In addition to above requirement statements I would like to add further detail on task prioritizing. We should definitely allow the PM to prioritize individual tasks in individual sets of tasks schedule for example for a given milestone, having been defined as for example subtasks of that milestone. In addition to that we should also provide for assigning WorkOrder prioritization to individual personnel assignments of the persons in the implied TaskGroup. Having such an additional, on a per person basis, WorkOrder priorization would allow us to assign individual personnel' WorkPower in more detailed way so that we can re-allocate individual personnel WorkPower based on prioritization alone, without actually having to reassign/unassign them from given tasks. We could also implement a priority of 0 that then would put the person's interest in a given task on hold for as long as we require the person to suspend work on a given task. How about that? I think that this is actually what you had in mind, is it not?
Consider a data model for this issue that has a separate row for each resource assigned whether or not the displayed task shows this separation or not. Then when time is recorder it can be accumulated by resource and the leveling processes can be directed per resource as well. THink of this similar to an MSPROJ group of tasks with subordinate tasks for each resource assigned.
Further on the data model comment, if we add a column that describes the "Labor Profile or Percent of the task" that is expected from each assigned resource, we may be able to get better results on determining a "Critical Path".
Reset assignee on issues not touched by assignee in more than 1000 days.
obsolete