This wiki is locked. Future workgroup activity and specification development must take place at our new wiki. For more information, see this blog post about the new governance model and this post about changes to the website.

EMS 1.0 Primer - Initiating a Project - Act 2. Estimation

Initiating a project: Act 1. Setup, Act 2. Estimation, Act 3. Completion, Investment Risk, Summary

Software Estimation Tools

The most reliable way for a develop organization to estimate new projects is to base the estimate on similar past projects. Software estimation tools use predictor models that are calibrated on a set of past projects, either from a standard industry pool or from the projects performed by the development organization itself. We will discuss the process of calibrating software estimation tools in another scenario, Calibrating an Organization.

BrainTwistors Corp. uses a very simple software estimation tool, Guestimator 101, which also implements EMS 1.0. Guestimator 101, like PfGenius, is a consumer of EMS 1.0 services. Guestimator 101 is a desktop application intended for software development organizations that use a single implementation technology, that use teams composed of a uniform combination of experienced and novice developers, and that execute projects within a relatively small range of sizes and durations. This makes project execution fairly predictable. Guestimator 101 maintains a database of past projects with their effort, size, duration, and other measurements. It can be used to predict the effort given assumptions about size, duration, etc. as:

effort = f(size, duration, ...)

where f is a function internal to Guestimator 101. Guestimator 101 does a statistical analysis of the historial project database and computes the value of effort that fits the data the best.

Note that a realistic software estimation tool would take into account many more factors in addition to size and duration. Factors such as the complexity of the software, the experience of the development team, the stability of the requirements, and the quality of the development tools have a significant impact on the effort. Furthermore, these project assumptions are not known with absolute precision, nor is the prediction given with certainty. The assumptions, and therefore the predications, all have uncertainties. We express these uncertainties by using probability distributions for the assumptions and predictions. We'll discuss this topic in Investment Risk.

Estimating Effort

At BrainTwistors Corp., Syd Ethan is a veteran software estimator and a power user of Guestimator 101. He receives the workflow notification from PfGenius saying that the Tsunami 1.0 project proposal is ready to be estimated. The notification contains a URI that identifies the project proposal resource:

http://braintwistors.example.com/Project/4201

Syd copies the Tsunami 1.0 project proposal URI from the notification, launches Guestimator 101 on his desktop, invokes the "Open Proposal" command and pastes in the URI when prompted by the dialog box.

Using EMS 1.0

In EMS 1.0, the tool that contains the project assumptions, e.g. MetricServer, is the service provider and the tool that computes the estimate, e.g. Guestimator 101, is the service consumer. The consumer sends a GET request to the provider to retrieve the project scenarios. The consumer then computes the estimate, typically under the interactive control of a person skilled in software estimation and the use of the software estimation tools. When the estimate is complete, the consumer sends the estimate in a POST request to the provider.

Guestimator 101 must retreive the information about the project and its scenarios from MetricServer and display them to Syd so he can create the estimates. This is accomplished by several GET requests. Guestimator 101 first GETs the project URI and receives the Project 4201 resource.

The Project 4201 resource has an ems:projectList property whose value is the ProjectList URI. Guestimator 101 next GETs that URI and receives the ProjectList resource.

The ProjectList? resource has an ems:service property whose value it the Service URI. Guestimator 101 next GETs that URI and receives the Service resource.

The ScenarioList Resource

The Service resource contains properties that link to all the other List URIs. In particular, it contains an ems:scenarioList property whose value is the ScenarioList? URI. However, Guestimator 101 does not simply GET that resource since it contains all the Scenario resources in MetricServer? . Instead, Guestimator 101 filters the ScenarioList? using a query parameter that gives only those Scenario resources that are for Project 4201. The full details of query parameters are specified in EMS 1.0 Query Syntax and Semantics. The following URI selects the scenarios defined for the project whose identifier is 4201:

 http://braintwistors.example.com/ems10/Scenario?oslc:where=ems:project{dc:identifier=4201}

Here is the result of the GET for the above query:

Listing of ScenarioList Resource for Project 4201
<?xml version="1.0"?>
<ems:ScenarioList xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" xmlns:ems="http://open-services.net/software-metrics/"
   rdf:about="http://braintwistors.example.com/ems10/Scenario">
   <dc:title>BrainTwistors Corp. Scenario List Queried by
      ems:project{dc:identifier=4201}</dc:title>
   <dc:description>
      This is the list of all Scenario resources contained in
      the BrainTwistors Corp. MetricServer web application that satisfy the
      query ems:project{dc:identifier=4201}.
      </dc:description>
   <ems:service rdf:resource="http://braintwistors.example.com/ems10" />
   <ems:memberScenario rdf:resource="http://braintwistors.example.com/ems10/Scenario/5721" />
</ems:ScenarioList>

Note that only Scenario 5721 is included in the result since it is the only scenario that is defined for Project 4201. In general, it may be useful to consider several alternate scenarios, produce estimates for each of them, and select the one that produces the best business value.

Finally, Guestimator 101 GETs the Scenario 5721 resource and presents the results. Syd in now able to proceed with the estimation task.

Create the Estimate

Next, Syd works with Guestimator 101 to estimate the effort for the project. The Guestimator 101 historical project database yields an effort estimate of 25 person-months:

effort = f(50,000 ESLOC, 6 months, ...)
= 25 person-month

Syd is satisified with this result and invokes the "Send Estimate" command in Guestimator 101 to send the estimate back to MetricServer.

The EstimateList Resource

In EMS 1.0, a new instance resource of a given type is created by POSTing a representation of the instance to a List resource for that type. The Service resource contains an ems:estimateList property whose value is the EstimateList URI. The EstimateList URI in MetricServer is:

http://braintwistors.example.com/ems10/Estimate 

The Estimate Resource

Guestimator 101 POSTs the estimate to the EstimateList URI. The following listing shows the representation of the Estimate resource:

Listing of ASAP Estimate Resource Representation
<?xml version="1.0"?>
<ems:Estimate xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" xmlns:ems="http://open-services.net/software-metrics/">
   <dc:title>Deliver Tsunami 1.0 ASAP Estimate by Guestimator 101
   </dc:title>
   <dc:description>
      Guestimator 101 predicts 25 person-months.
   </dc:description>
   <ems:scenario rdf:resource="http://braintwistors.example.com/ems10/Scenario/5721" />
   <ems:predicts>
      <ems:MeasureDistribution>
         <dc:title>Total Effort</dc:title>
         <ems:metric rdf:resource="http://open-services.net/software-metrics/cost#effort" />
         <ems:unitOfMeasure
            rdf:resource="http://open-services.net/software-metrics/units#person-month" />
         <ems:distribution>
            <ems:PointEstimate>
               <ems:numericValue>25</ems:numericValue>
            </ems:PointEstimate>
         </ems:distribution>
      </ems:MeasureDistribution>
   </ems:predicts>
   <!--
      Other properties of this resource have been omitted for brevity.
   -->
</ems:Estimate>

MetricServer creates the new Estimate resource and returns its URL:

http://braintwistors.example.com/ems10/Estimate/6648

GETing this URL gives the following:

Listing the Estimate 6648 Resource
<?xml version="1.0"?>
<ems:Estimate xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" xmlns:ems="http://open-services.net/software-metrics/"
   rdf:about="http://braintwistors.example.com/ems10/Estimate/6648">
   <dc:title>Deliver Tsunami 1.0 ASAP Estimate by Guestimator 101
   </dc:title>
   <dc:description>
      Guestimator 101 predicts 25 person-months.
   </dc:description>
   <dc:identifier>6648</dc:identifier>
   <ems:estimateList rdf:resource="http://braintwistors.example.com/ems10/Estimate" />
   <ems:scenario rdf:resource="http://braintwistors.example.com/ems10/Scenario/5721" />
   <ems:predicts>
      <ems:MeasureDistribution>
         <dc:title>Total Effort</dc:title>
         <ems:metric rdf:resource="http://open-services.net/software-metrics/cost#effort" />
         <ems:unitOfMeasure
            rdf:resource="http://open-services.net/software-metrics/units#person-month" />
         <ems:distribution>
            <ems:PointEstimate>
               <ems:numericValue>25</ems:numericValue>
            </ems:PointEstimate>
         </ems:distribution>
      </ems:MeasureDistribution>
   </ems:predicts>
   <!--
      Other properties of this resource have been omitted for brevity.
   -->
</ems:Estimate>

Syd launches PfGenius in his web browser and verifies that the estimate was received and looks correct. He then changes the Tsunami 1.0 project proposal into the "Software Estimate Done" state. This state transition causes a notification to be sent back to Pedro so he can complete the business case.

Summary Sequence Diagram

The following sequence diagram summarizes Act 2:

estimating-act2.png

The next step is for Pedro to review the estimate and include it in the business case.

Next: Act 3. Completion

Previous: Act 1. Setup

Comments

Add your comments here:

 
Topic attachments
I Attachment Action Size Date Who Comment
pngpng estimating-act2.png manage 35.4 K 03 Dec 2009 - 16:42 ArthurRyman Sequence Diagram for Initiating - Act 2 Estimating
Edit | Attach | Print version | History: r15 | r13 < r12 < r11 < r10 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r11 - 07 Apr 2010 - 19:23:22 - ArthurRyman
 
This site is powered by the TWiki collaboration platform Copyright � by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Contributions are governed by our Terms of Use
Ideas, requests, problems regarding this site? Send feedback