Rational Method Composer Estimating with Rational Method Composer and Rational Portfolio Manager Prepared by: Estimating in RMC/RPM Trevor Collins 6/21/2006, version 4 6/15/2005, vers 0.3 Page 1/19 Rational Method Composer Version History Date 4/21/2006 Version 1 5/12/2006 6/15/2006 2 3 6/21/2006 4 Estimating in RMC/RPM Description Initial Version. Distributed to RMC team and RMC/RPM integration team. Meta model information added. Details on SUMMIT estimating added initially as an appendix. Updated after review with engineering team 6/15/2005, vers 0.3 Author Trevor Collins Trevor Collins Trevor Collins Trevor Collins Page 2/19 Rational Method Composer Contents Version History ................................................................................................................................................. 2 Introduction ..................................................................................................................................................... 4 Estimating Overview ........................................................................................................................................ 4 Defining an estimating model............................................................................................................................... 4 Calculating Estimates .......................................................................................................................................... 4 Using estimates to develop a project plan ........................................................................................................... 5 Possible Estimating Models .............................................................................................................................. 5 SUMMIT QIF based approach ............................................................................................................................. 5 Use Case Model ................................................................................................................................................ 7 Actors ................................................................................................................................................................... 7 Process Engineer ............................................................................................................................................. 7 Project Manager ............................................................................................................................................... 7 Use Cases ............................................................................................................................................................ 8 Use Case: Maintain Estimating Model ........................................................................................................ 8 Apply Estimating Model to a process ............................................................................................................... 9 Use Case: Estimate Project .......................................................................................................................... 10 Overview......................................................................................................................................................... 10 Use Case: Plan Project ................................................................................................................................. 12 Overview......................................................................................................................................................... 12 Meta Model Information ................................................................................................................................. 13 Estimating Model................................................................................................................................................ 13 Estimating Parameter ........................................................................................................................................ 13 Estimating Parameter Value .............................................................................................................................. 14 Estimating Formula ............................................................................................................................................ 14 Task ................................................................................................................................................................... 14 Role Assignment ................................................................................................................................................ 14 Activity ................................................................................................................................................................ 14 Work Product ..................................................................................................................................................... 15 Task Descriptor .................................................................................................................................................. 15 Estimate Value ................................................................................................................................................... 15 Example ......................................................................................................................................................... 16 Example ......................................................................................................................................................... 16 Use Case: Maintain Estimating Model .......................................................................................................... 16 Find Actors and Use Cases............................................................................................................................ 16 Structure the Use Case Model ....................................................................................................................... 16 Prioritize Use Cases ....................................................................................................................................... 16 Process: Develop Use Case Model Capability Pattern ................................................................................. 17 Activity: Analyze Use Cases .................................................................................................................... 17 Use Case: Estimate Project .......................................................................................................................... 17 Process: Develop Use Case Model Capability Pattern ................................................................................. 17 Details on SUMMIT Estimating........................................................................................................................ 19 Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 3/19 Rational Method Composer Introduction The purpose of this document is to describe proposed estimating functionality for the Rational Method Composer and Rational Portfolio Manager toolset. The document is initially intended as a discussion document. It will be used to define the overall plan for estimating functionality in the toolset and to define an initial scope for implementation. It describes a full breadth of estimating functionality that we might eventually have in the toolset. The document includes an initial description of estimating and planning use cases. There are a lot of details in the way SUMMIT estimating is carried out that are not included. If we are going to re-engineer the full SUMMIT estimating functionality this will need to be reviewed and included in the use cases going forward. Estimating Overview There are three components of a complete estimating process: Defining an estimating model (at the process level) Calculating estimates (for a project) Plan project - use estimates to develop a project schedule Defining an estimating model There are many approaches that can be used for estimating or sizing a project. General estimating guidance is to use two or more estimating approaches for a project to provide checks and balances. This means that we should be able to define multiple estimating models and to allow multiple models to be used to generate estimates for a project. An estimating model can consist of: Estimating Parameters (Called QIFs in SUMMIT) Estimating Formulae involving the estimating parameters (could be applied to any level in a WBS, or to a Work Product). In SUMMIT, this is one or more QIFs with associated estimate ranges. Calculation Formula (used in SUMMIT to provide different calculations using the same set of QIFs) WBS estimate allocations – used to allocate the estimate for a parent to its children in a WBS Role / Resource estimate allocations An estimating model can be defined for a process. It makes sense to be able to define estimating models in RMC. SUMMIT has the ability to hold multiple sets of ‘Global QIF Counts’ for use with the same Route Maps (Delivery Processes). It is very easy to use one of these Global QIF Counts with a Route Map to create an initial (almost standard) set of estimates (but these are calculated using the Global QIF Counts, they are not ‘default’ estimate values). For RUP, SUMMIT has nine of these sets. A user can start with one of these sets and calculate estimates (again, very easily). Calculating Estimates Estimate calculations might use a: Top down approach – an estimate is calculated for a whole project, or for part of a project, and the estimates are allocated to activities and tasks in the project. Bottom-up approach – estimates are calculated for low level tasks or activities and summed up for higher level activities and the project Middle-out approach – an estimate is calculated for part of a project (e.g. RUP Elaboration phase) and this is ‘extended’ to create an estimate for the whole project The person calculating the estimates should have visibility into the underlying estimating model and be able to adjust the model as it is applied to his/her project. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 4/19 Rational Method Composer Estimates are calculated for a project or part of a project. It makes sense to have this functionality in a project based tool – RPM or a separate estimating component. However, if we define estimating models and initial Estimating Parameter counts in RMC, it would be useful to be able to run the models without leaving RMC. This suggests that the estimating functionality is provided in RMC or there is a common component that can be used in RMC or RPM. An additional consideration is to be able to calculate estimates for use with MS Project. This would also suggest having the estimating capability in RMC or a common component. The initial suggested approach for calculating estimates for a project is: Make a copy of the capability pattern or delivery process that will be used for the project Adjust the counts of the estimating parameters contained in an estimating model associated with the process Calculate the estimates Adjust and recalculate Export process with estimates to a project tool (RPM or MSP) Using estimates to develop a project plan Estimates are raw material for developing a project schedule. A project schedule takes many factors into account such as: Task and activity dependencies Working and non-working days Resource availability Resource balancing This functionality is provided in RPM and in project scheduling tools such as Microsoft project. It is possible that the estimates might need to be refined during the planning process. This implies either a round-trip between the estimator and the planner, or at least the ability to re-estimate. In addition, there will be several points during a project when estimates need to be generated. When running a RUP project, the project manager will want to have an overall high level project schedule and a detailed schedule for the current iteration, planning the next iteration at the end of the current one. This means calculating estimates many times during the life of a project. Possible Estimating Models The examples listed below are all task and activity based models. We also need work product based estimating models. This document does not currently address work product based estimating. SUMMIT QIF based approach Briefly, the SUMMIT QIF estimating approach is: Define a series of estimating parameters that have an influence on the size of a project. Define estimating formulae using these parameters for elements in the work breakdown structure for a process. The estimating formula is the association of one or more QIFs with a task. Each QIF has a low and high value for the number of hours the task will take to perform (rate) per QIF. Provide a number of ‘calculation options’ that can be used to calculate estimate values using the QIF counts for a project, the high and low ‘rates’, a ‘multiplier’ and an ‘adjustment. (The calculation option is chosen at the time of doing the estimates. The same option can be used for all elements in a WBS or different options can be chosen for each WBS element.) This approach can be used in a top-down or a bottom-up estimating approach. For top down, estimating formulae are provided at the overall process (project) level or for high level activities, such as Phase in RUP. For bottom-up, estimating formulae are defined for tasks or lower level activities. COCOMO (to be completed) Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 5/19 Rational Method Composer Function Points Function points is a way of calculating the overall size of a project. Function points are assigned for various project characteristics and a function point total is calculated. A ‘productivity’ measure is then applied to convert the function point total into an effort estimate. There are several Function Point models that have been developed. SUMMIT uses a Function Point model that dates back to 1992. Function points could be supported with a series of estimating parameters and formulae or we could ‘hard code’ the models since they should not be changed other than the productivity factor. Use Case Points Use Case Points are similar in concept to function points but counts use cases instead of the various ‘function’ counts. IGS Leap This is similar to the SUMMIT QIF top-down estimating approach. The estimating parameters are different, but the estimating process is similar. Comparison with past projects A simple way to estimate the size of a project is to compare it with similar past projects. This could be actual projects or one or more ‘idealized’ projects. If there is a project that matches your project, you might want to use the actual values from that project as your estimates, or factor those estimates in some way based on the differences between your project and the past project. A very simple way to support this type of estimating is to provide a set of estimates with a process along with a description of the project on which these estimates were based. Fixed Estimates A simple approach to provide estimating guidance in a process is to provide ‘default’ estimates – actual values that can be used as the starting point for estimating a specific project based on the process. We could treat this as a fundamental feature of the estimating functionality (i.e. provide the ability to provide default estimate values) or we could treat this as another form of estimating model (i.e. a very simple formula – no variables). Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 6/19 Rational Method Composer Use Case Model Actors Process Engineer The Process Engineer tailors and develops method elements and processes. He wants to be able to extend existing method frameworks with new or updated content, develop and package capability and delivery processes, as well as create configurations for distribution. The Process Engineer's skills required for the use cases specified include a deep understanding of the method content and process models that he wants to extend and work on as well as a solid understanding of the unified method architecture, in particular its extensibility mechanisms. The Process Engineer also wants to be able to define one or more estimating models to be used with the processes he/she develops. Project Manager The Project Manager plans and executes projects. His interest in processes is to use them to create projectspecific plans by reusing as much pre-manufactured plans and plan parts. He also wants to instantiate plans for his projects, i.e. to allocate resources and to plan for concrete work products. The Project Manager also needs support for estimating work effort for a project and measuring results of a project. The Project Manger skills required for the use cases include experience in the software development lifecycle, scope estimation, planning, time management, scheduling, project costing, and budget management, resource planning, resource management, and procurement. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 7/19 Rational Method Composer Use Cases Use Case: Maintain Estimating Model Overview The ideal situation would be to have a way to maintain all aspects of an estimating model, allowing a user to create and maintain models. In practice, there are likely to be unique elements to some models that cannot be generalized. We should focus on replacing and improving the existing SUMMIT estimating functionality initially and then extend to other estimating approaches. In addition, the existing SUMMIT features should be generalized where possible. We need to be able to define estimating models independent of tasks, activities and work products and be able to choose one or more estimating models to apply. For example, COCOMO and Function points may apply to software development projects but not to infrastructure projects. {Create Estimating Model} <Process Engineer> chooses to create a new Estimating Model and provides the following: Estimating Model Name Estimating Model Description There may be other information we will need for an estimating model. {Maintain Estimating Parameter} <Process Engineer> maintains a list of estimating parameters for an estimating model. The information for an estimating parameter is: Name Description Measurement units (Currently SUMMIT doesn’t use units – everything is in hours. Might want this as a future.) Default high rate (hours per estimating parameter) Default low rate (hours per estimating parameter) Default value Question – may use this in an estimating wizard We may want to be able to associate an estimating parameter with more than one estimating model. {Create Task Estimating Formula} As part of defining a Task, the <Process Engineer> does the following: Define task level estimating model details: Provide a ‘default estimate value for the task. This can be used to create an estimate for associated task descriptors when the ‘simple model’ estimating model is chosen to calculate an estimate. We might want to have high, medium and low values and to have calculation options that give different results using these values. Select an estimating model to apply to the task Create a formula to calculate the estimate when using the chosen estimating model o Select estimating parameter o Define formula (for SUMMIT model override default values for high and low rates) The formula could be a fixed value and not involve an estimating parameter. The formula can be ‘Allocate from parent’. Repeat for other estimating parameters. Note that SUMMIT allows multiple estimating parameters to be used in the formula for a task but the result can only be an addition - each Estimating Parameter has its own formula for a task and the results are added to get the overall task estimate. We should expand this to allow multiplication. Repeat for other estimating models Define the role/resource allocation factors: Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 8/19 Rational Method Composer For each role assigned to the task, specify a percentage allocation. The estimate value for the task will be distributed to resources based on the role allocation. The percentages must total 100. Apply Estimating Model to a process {Create Process Estimating Formula} As part of defining a Delivery Process or a Capability Pattern, the <Process Engineer>: Selects one or more estimating models to apply to the process Optionally creates an estimating formula for the process (in the same way as the estimating formula for a task is created). {Create Activity Estimating Formula} As part of defining an Activity the <Process Engineer> does the following: Select an estimating model to apply to the activity – from the estimating models applied to the parent process. Create a formula to calculate the estimate when using the chosen estimating model o Select estimating parameter o Define formula The formula could be a fixed value and not involve an estimating parameter. The formula can be ‘Allocate from parent’ or ‘Sum children’. Repeat for other estimating parameters. Note that SUMMIT allows multiple estimating parameters to be used in the formula for a task but the result can only be an addition - each Estimating Parameter has its own formula for a task and the results are added to get the overall task estimate. We should expand this to allow multiplication. Repeat for other estimating models Define the activity allocation factor. This is the percentage of the parent’s estimate that is allocated to the activity when doing top down estimating. {Modify Task Descriptor Estimating Formula} When a task is included in a process, its estimating formulae will be used as a default. The <Process Engineer> can override the: estimating formula estimating parameter high and low rates resource allocation factors Define the task allocation factor. This is the percentage of the parent’s estimate that is allocated to the task when doing top down estimating. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 9/19 Rational Method Composer Use Case: Estimate Project Overview To calculate estimates for a project, project specific information is applied to an estimating model and the appropriate calculations are made. The project manager can manipulate the results of the calculations to arrive at the final estimate. Prior to calculating estimates the project manager might customize the process for his/her project. {Select process for project} The <Project Manager> selects a Delivery Process or Capability Pattern to use as the basis for the project plan. {Customize process for project} The <Project Manager> customizes the selected process for a specific project. This is similar to creating or modifying a process except that it is likely to be a one-time customization for a specific project rather than for the purpose of creating a new process. {Select estimating model to use for project} A Delivery Process or Capability Pattern can have one or more estimating models associated with it. The <Project Manager> can choose to use one or more of the models to create estimates for the project. {Enter project values for estimating parameters} If an estimating model has estimating parameters associated with it, the <Project Manager> enters project specific values (counts) for these parameters. Repeat for each estimating model that has estimating parameters. {Calculate estimates} The <Project Manager> chooses to create estimates for the whole process or can select a range of activities to estimate. For example, the estimates might be for the Elaboration phase, or for an Elaboration phase iteration. The <Project Manager> selects an estimating model and chooses to calculate estimates. SUMMIT provides several calculation options when calculating estimates: a ‘multiplier’ that is specified for a project as whole an ‘adjustment’ that is specified for a project as whole Calculation option – a formula involving the high and low rates, estimating parameter count and the multiplier and adjustment SUMMIT allows the calculation options to be applied to the whole project, a range of WBS elements, or a single WBS element. The system calculates the estimates using the estimating model as follows: Calculate estimates for any process, activity or task estimating formulae Allocate parent level estimates to children This is done by sharing a parent estimate among its children using the children’s WBS Estimate Allocations Allocate task level estimates to roles Sum estimates through the work breakdown structure to the top level Repeat for each estimating model. If more than one model is used, the results of calculating each model should be retained and be visible to the project manager. {Review and refine estimates} If more than one estimating model is used to calculate estimates, the <Project Manager> reviews the estimates side by side. The <Project Manager> can modify an estimating model by: Adjusting an estimating formula Adjusting WBS estimate allocations Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 10/19 Rational Method Composer Adjusting resource allocations Re-calculating the estimating model These adjustments are made for the project only and do not change the underlying estimating models. The <Project Manager> can arrive at a final estimate by: Choosing the results of one of the estimating models Choosing the results of one of the estimating models and over-riding the estimates for one or more tasks and/or activities Creating a new set of estimates based on the results of two or more estimating models The project manager can record the reasoning for any changes that are made to the estimating models or the calculated values. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 11/19 Rational Method Composer Use Case: Plan Project Overview Planning a project is closely related to Estimate Project. However, these use cases have been separated to support a separation of tools. The result of Estimate Project is: a work breakdown structure with estimates for each element in the WBS resource level estimates for lowest level tasks This could then be used in RPM or MSP to create a project schedule. The expectation is that Plan Project is largely already supported in RPM and MSP. The steps in Plan Project are still to be detailed but include: Creating iterations and allocating higher level estimates across iterations Assigning resources in place of roles Defining the project calendar Defining resource availability Calculating project dates using estimates, predecessor relationships and resource availability Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 12/19 Rational Method Composer Meta Model Information This is an initial draft of meta model information for estimating. Process 1..1 0..n Estimating Model 0..n 0..n Estimating Parameter Value 0..n 1..1 1..1 1..n Task 0..1 0..n Estimating Parameter 1..n 0..n Estimating Formula 0..1 Task Descriptor 0..n 0..1 Work Product calculated using 0..1 Estimate Value Work Product Descriptor Activity Estimating Model An estimating model is a way of calculating estimates. An estimating model can be associated with any number of estimating parameters. These estimating parameters are used in formulae that define how to calculate an estimate for an activity, task or work product. These formulae are used to calculate estimate values. An estimating model can be associated with any number of processes. When an estimating model is associated with a process, it means that the estimating model can be used to create estimates for the process. In order to do this, activities and/or tasks and/or work products in the process must contain values or formulae associated with the estimating model. Attributes: Name Description Estimating approach (e.g top down, bottom up, - not sure if this is useful) Estimating Parameter An estimating parameter is a parameter that can be used in a formula to calculate estimates. Attributes: Name Description Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 13/19 Rational Method Composer Measurement units (Currently SUMMIT doesn’t use units – everything is in hours. Might want this as a future.) High rate (hours per estimating parameter) Low rate (hours per estimating parameter) Default Value Question – may use this in an estimating wizard Estimating Parameter Value When an estimating model is used to calculate estimates for a project, project specific values for each estimating parameter must be provided. We could hold a set of values for each process and use these as default values for the process. Attributes: Value Estimating Formula An estimating formula defines a way to calculate a value for an estimate using estimating parameters. In Summit each estimating formula is based on a single estimating parameter (QIF). When an estimate is calculated, each formula is evaluated and the results are summed to give the estimate. However, a formula could be constructed using the normal arithmetic functions and contain multiple estimating parameters. If we do this, we only need one formula per activity/task/work product per model. Attributes: Simple SUMMIT approach: o Estimating Parameter o High rate o Low rate o Multiplier (overrides process level value) o Adjustment overrides process level value) More complex o Not sure how to represent a multi-element formula Task A task may have a formula defined for each estimating model. When a task is included in a process, only the formula for the estimating models associated with the process will be used / available. We could have a default value or high, medium and low estimate values for a task. These could be used if no formula was provided. An alternative to this would be to have an estimating model that uses fixed values. The formulae for the model would not include estimating parameters, just values. Possible attributes: High estimate Medium estimate Low estimate Role Assignment If there is more than one role associated with a task as a performer or additional performer we need to hold an estimate allocation factor for each role. This is a percentage of the estimate for the task. If there is only a performing role, that role would be allocated 100% of the estimate. Activity An activity can be treated in the same way as a task. It can have a formula for an estimating model that would be used as a middle-up estimate and be allocated down to child activities or tasks. If a process has a formula for an estimating model, it would be a top down model. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 14/19 Rational Method Composer Work Product A work product may have a formula defined for each estimating model. When a work product is included in a process, only the formula for the estimating models associated with the process will be used / available. Task Descriptor A task descriptor can also have an estimating formula for each estimating model associated with the task descriptor’s process. A task descriptor formula can over-ride the corresponding base task’s formula. A task descriptor has an allocation factor that is used to share out a parent’s estimate among its child tasks. Possible attributes: Estimate allocation factor Estimate Value If we calculate estimates in RMC or want to hold a default estimate, we need to hold an estimate value for each activity and task descriptor for each estimating model associated with a process. This is effectively an extra column in the process WBS for the estimate value for each estimating model. If we calculate estimates in RMC or want to hold a default estimate, we need to hold an estimate value for each work product descriptor for each estimating model associated with a process. This is effectively an extra column in the work product usage for the estimate value for each estimating model. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 15/19 Rational Method Composer Example This is an initial, simple example. This will need to be further developed as we decide on the scope and approach we will use. Use Case: Maintain Estimating Model {Create Estimating Model} We will use the following estimating models: use case based top down use case based bottom up static value {Maintain Estimating Parameter} We will use the following estimating parameters: Name Complex Use Cases Unit Count Default Value n/a Simple Use Cases Count n/a Description Question How many complex use cases? How many simple use cases? These will be used in both the use case based top down and bottom up models. {Create Task Estimating Formula} Find Actors and Use Cases Estimating formulae Use Case Based TD Use Case Based BU static value Allocate from parent 2 * Complex Use Cases + Simple Use Cases 5 Role/Resource Allocation: System Analyst 100% Task Allocation Factor: 2 Structure the Use Case Model Estimating formulae Use Case Based TD Use Case Based BU static value Allocate from parent 2 * Complex Use Cases + Simple Use Cases 5 Role/Resource Allocation: System Analyst 100% Task Allocation Factor: 2 Prioritize Use Cases Estimating formulae Use Case Based TD Use Case Based BU Static Value Estimating in RMC/RPM Allocate from parent Complex Use Cases 2 6/15/2005, vers 0.3 Page 16/19 Rational Method Composer Role/Resource Allocation: System Analyst 50% Software Architect 50% Task Allocation Factor: 1 {Create Process Estimating Formula} Process: Develop Use Case Model Capability Pattern Estimating Models: Use Case Based TD Use Case Based BU Static Value 10*Complex Use Cases + 2*Simple Use Cases Sum children Sum children {Create Activity Estimating Formula} Activity: Analyze Use Cases Estimating Models: Use Case Based TD Use Case Based BU Static Value Allocate from parent Sum children Sum children Task Allocation Factor: 2 {Modify Task Descriptor Estimating Formula} No modifications Use Case: Estimate Project {Select process for project} Process: Develop Use Case Model Capability Pattern {Customize process for project} No customization. {Select estimating model to use for project} We’ll use all three estimating models associated with the process use case based top down use case based bottom up static value {Enter project values for estimating parameters} Name Complex Use Cases Simple Use Cases High Value 15 30 Low Value 5 20 Most Likely 10 25 {Enter Estimating Calculation Options} Multiplier Adjsutment Estimating in RMC/RPM 1 0 6/15/2005, vers 0.3 Page 17/19 Rational Method Composer {Calculate estimates} Choose to use most likely values. {Review and refine estimates} Develop Use Case Model Capability Pattern Analyze Use Cases Find Actors and Use Cases Structure the Use Case Model Prioritize Use Cases UC Top Down 150 150 60 60 30 UC Bot Up 100 100 45 45 10 Estimating in RMC/RPM 6/15/2005, vers 0.3 Static Value 12 12 5 5 2 Page 18/19 Rational Method Composer Details on SUMMIT Estimating A set of QIFs are associated with a ‘method’. This means, for example that there is a different set of QIFs for RUP, SUMMIT Systems Delivery, SUMMIT Program Management, etc.) For bottom-up estimating, each lowest level task has one or more QIFs associated with it. Also, each QIF has an ‘estimate range’ for each task. This range is expressed as a high and low effort value per QIF ‘unit’. These values are used differently in each of the ‘Estimating formula’ that can be used to calculate estimates. SUMMIT has predefined sets of QIF values. For RUP, these are for Complex, Moderate and Simple for each of the three RUP Route Maps – Small, Medium and Large projects. These ‘global QIF counts’ are held separate to route maps. Estimating in RMC/RPM 6/15/2005, vers 0.3 Page 19/19