Forum OpenACS Development: Re: dotWRK: Project Manager

Collapse
Posted by Torben Brosten on

Jade, in short, you answer your own question. Your "idea of categorizing tasks in order to get statistical info that can be used for forecasting" (as summarized by Jeroen).

I also agree that:

we should categorize projects too (optionally of course), so that a yearly project could be compared somehow to the last year's project.

Categorizing projects would also be very useful for tracking project progress ie. comparing current status with the original project plan; and for improving estimates ie. comparing project plan with project performance data.

Using the proposed copy-project function mentioned earlier in this thread, a "project plan" version could be created, then copied to create an "implemented project version X", which gets revised during project implementation. Then a "final-completed" copy could be made from the terminated project.

To visualize this, for a moment, consider a dotProject database as a 2 dimensional spreadsheet (should dotProjects be so simple!). Large spreadsheets usually go through a few revisions by "copying" the spreadsheet to a new name, where an additional report-spreadsheet summarizes and compares values.

General resources tracking

The following explanation extends beyond the scope of general resources tracking. My intention is to provide context for further discussion.

A WBS does not formally have an assigned sequence of events (dependencies) within a project. Though developing an ordered list is possible in some cases. Sequential order is determined through scheduling and building the activity networks. The WBS refers to activities (action), whereas the Resource Type refers to either "action by" or "action on" objects; The only exception are labor Resource Types, which consist of skill-based action descriptions, such as "inspecting", "installing", "welding" etc.

Tracking resources by price is a way of cost estimating, where resource categories and the WBS are associated with payments (or parts thereof). For example, a construction remodeling company might write a check to a supplier for $5,000. In the books, the payment would be associated with a collection of expenditures resembling the associated itemized invoice(s). Each expenditure would then be related to a job-site, WBS code, resource type, and date purchased.

Expense Ledger
item ref   : item to             : project : WBS              : Resource type                  
20020418.5 : Supplier Corp       : SR2101  : 24.576.10.1.6.12 : FramedStructure.Windows(2.8.1) 
20020418.6 : Sub & Daughters : SR2101  : 24.576.10.1.6    : *                              

However, costs do not let you know how resources are being used compared to the project plan. Continuing the above example, installing windows may have been budgeted at $5000. The actual cost may have been $5000 with labor taking a few extra hours and using less quality materials (or maybe left out some materials or used less qualified labor etc.). Project managers need more detail.

Earned Value Analysis offers that detail. Resources are tracked by units consumed. Scheduling complies with any consumption or resource availability constraints. Labor resources are consumed by time (hours). Materials consumed by "unit" sometimes linear foot, each, square-meter etc. Machinery might be rented by the day. A fabrication company might have a start-up fee for each day's work (cost/day) etc.

Essentially, each consumption or task can be made of other consumptions and tasks. Continuing the example:

Payment ref 20030418.5 to Supplier Corp.
QTY : item absolute ref : project : WBS              : Resource type                           
  5 : 20x20vinyl window : SR2101  : 24.576.10.1.6.12 : FramedStructure.Windows(2.8.1)           
 12 : 4 x 6 headers     : SR2101  : 24.576.10.1.6.12 : FramedStructure.Windows.headers(2.8.1.2) 

Payment ref 20030418.6 to Sub-contractor & Daughters Co.
QTY : item absolute ref    : project : WBS              : Resource type                  
5   : 2 hrs install window : SR2101  : 24.576.10.1.6.12 : house.labor.carpentry(2.3.4)
0.5 : window inspect       : SR2101  : 24.576.10.1.6.10 : house.labor.inspection(2.3.19) 

"item absolute ref" could refer to a line of a bill of materials ie. bill of resources which could consist of other "child" bill of resources --this option is especially useful for manufacturing project management and product development.

Using Earned Value Analysis, various useful reports can be made based on WBS, resource usage (by category), and project. One can track schedule, costs, and budget variances to manage projects. Deviation from any of these 3 can significantly affect the project.

The WBS is likely to vary in depth (resolution) --depending on the level of detail of each job(project) --which varies by price, size and other factors. So, reporting should be able to provide statistical analysis at choice depths. For instance, some remodeling jobs might be replacing nonstandard windows with standard windows. "Standard windows" might be one categorization. "Custom windows" might be another categorization. Labor would be a resource associated by WBS, resource category/task/role, and project. For estimating purposes, it might be useful to know the rate for replacing all windows, versus installing windows in new installations. Collecting this flexible level of data can help answer these and many other questions while not compromising operational demands.

With PERT, resource scheduling is priority; Schedules are built to minimize the critical path (and time) resulting in fastest completion time of project.

If project performance is higher priority than speed, other heuristics can be used to determine resource allocation. The "minimum slack first" prioritizes by ordering activities with least amount of slack first. Secondary sort is commonly "shortest task first". Some researchers (references follow) conclude this sorting method is most consistent in finding "best" allocation of resources, while minimizing scheduling delays, and resource scheduling conflicts for other projects.

  • Fendley, LG "Towards the Development of a Complete Multiproject Scheduling System" Journal of Industrial Engineering. Oct 1968
  • Kurtulus, I and EW Davis. "Multi-Project Scheduling: categorization of heuristic rules performance." Management Sci, Feb 1982.
  • Kurtulus, I and SC Narula. "Multi-Project Scheduling: Analysis of Project Performance" IEEE Transactions on Engineering Mgmnt, Mar 1985.

PS. At some point it would be helpful to have dotProject (and the categorization package) include ability to import/export categorization trees via xml or soap.

the data model

Analyzing the general resource tracking, I see 3 separate categorization trees: Project, WBS, and Resource Type --each built from top-down, with increasing detail or depth-- and a bill of materials (BOM) tree --where part A is made of parts B, C, D and labor E and F.

At first, I was really concerned how the 3 separate categorization trees would impact scalability for dotProject. However, since these lists remain fairly stable over time, I think each of these trees can translate to a simple table with columns: reference, reference title, and perhaps reference abbreviation --if needing to integrate with existing alternate reference system.

Project categorization table example
Reference : Title
1         : planning
1.1       : progress, rev.0
1.2       : progress, rev.1
1.3       : progress, rev.2
1.4       : final

WBS table example
Reference   : Title
1           : Super WBS
1.1         : Construction WBS
1.2         : Space Shuttle WBS
1.3         : Open-air production WBS
1.24.576    : Job SR2101 Remodeling WBS
1.24.576.10 : renovate exterior walls

Resource categorization table example
Reference : Title
1         : Other, Super catch-all
1.2       : House
1.2.8     : FramedStructure
1.2.8.1   : Windows
1.2.8.1.2 : headers
1.2.3     : labor
1.2.3.4   : carpentry
1.2.3.19  : inspection

The BOM's tree could similarly convert to a flat table, for example as engineering design phases out and production/assembly is phased in. Of course, many projects wouldn't generate a BOMS tree anyway, but it's value in dotProject would be significant.

These general ideas apply to a majority of projects I have encountered. I believe they are applicable to many others too. Please let me know if I haven't presented this clearly, as I think careful consideration of these topics now could significantly reduce changes to dotProject later.