Wednesday, July 5, 2023

Software Estimation Techniques [Use-Case Points]

 Estimation determines how much money, effort, resources, and time it will take to build a specific system or product. 

Project scope must be understood before the estimation process begins. 

A Use-Case is a series of related interactions between a user and a system that enables the user to achieve a goal.

Use-Cases are a way to capture functional requirements of a system. The user of the system is referred to as an ‘Actor’. Use-Cases are fundamentally in text form.

The Use Case Points (UCP) method can be used to estimate software development effort based on a use-case model and two sets of adjustment factors relating to the environmental and technical complexity of a project. The question arises whether all of these components are important from the effort estimation point of view.


The Use-Case Points counting process has the following steps:

1) Calculate unadjusted UCPs

1.1) Determine Unadjusted Use-Case Weight

1.2) Determine Unadjusted Actor Weight

1.3) Calculate Unadjusted Use-Case Points

2) Adjust for technical complexity

3) Adjust for environmental complexity

4) Calculate adjusted UCPs




1.1) How to determine Unadjusted Use-Case Weight?

Transaction is equivalent to a step in the Use-Case. Find the number of transactions by counting the steps in the Use-Case.

Classify each Use-Case as Simple, Average or Complex based on the number of transactions in the Use-Case. Also, assign Use-Case Weight as shown in the following table:




Karner originally proposed ignoring transactions in the extensions part of a use case. However, this was probably largely because extensions were not as commonly used in the use cases he worked with during the era when he first proposed use case points (1993). 

Extensions clearly represent a significant amount of work and need to be included in any reasonable estimating effort.

So, from previous figure, we can say that we have 10 transactions.

but, Counting the number of transactions in a use case with extensions requires a small amount of caution. That is, you cannot simply count the number of lines in the extension part of the template and add those to the lines in the main success scenario.

So, we can consider step 2a1, 2b1, and 2c1 is just a notification as a result of step 2 and count them all as one transaction. So, we just have 8 transactions. and because any use case has more than 7 steps consider as complex, we will give it 15 point.

Repeat this process for each use case in the project. The sum of the weights for each use case is known as the Unadjusted Use Case Weight, or UUCW. next table shows how to calculate UUCW for a project with 40 simple use cases, 21 average, and 10 complex




1.2) How to determine Unadjusted Actor Weight?

The transactions (or steps) of a use case are one aspect of the complexity of a use case, the actors involved in a use case are another. An actor in a use case might be a person, another program, a piece of hardware, and so on. Some actors, such as a user working with a straightforward command-line interface, have very simple needs and increase the complexity of a use case only slightly. Other actors, such as a user working with a highly interactive graphical user interface, have a much more significant impact on the effort to develop a use case. To capture these differences, each actor in the system is classified as simple, average, or complex, and is assigned a weight in the same way the use cases were weighted.

In Karner’s use case point system, a simple actor is another system that is interacted with through an API (Application Programming Interface). An average actor may be either a person interacting through a text-based user interface or another system interacting through a protocol such as TCP/IP, HTTP, or SOAP. A complex actor is a human interacting with the system though a graphical user interface GUI. This is summarized, and the weight of each actor type is given, in Table 3.


Each actor in the proposed system is assessed as either simple, average, or complex and is weighted accordingly. The sum of all actor weights in known as Unadjusted Actor Weight (UAW). This is shown for a sample project in Table 4.




1.3) How to calculate Unadjusted Use-Case Points?

Combining the Unadjusted Use Case Weight (UUCW) and the Unadjusted Actor Weight (UAW) gives the unadjusted size of the overall system. This is referred to as Unadjusted Use Case Points (UUCP).

Unadjusted Use-Case Points (UUCP) = UUCW + UAW

Using our example, UUCP is calculated as:

UUCP= 560 + 40 = 600


2) How to adjust for technical complexity?

Consider the 13 Factors that contribute to the impact of the Technical Complexity of a project on Use-Case Points and their corresponding Weights as given in the following table
Notes:
1) Distributed System: higher number means complex architect.
2) Response time/performance: higher number means increase importance for response time.
3) End user efficiency: higher number means project is critical to the end-user to complete his work.
4) Complex internal processing: zero means simple sql query, higher means complex calculations.
5) Code must be reusable: higher number means higher level of planning will be required.
6) Easy to install: higher number means more easy is required.
7) Easy to use: higher number means more usability required.
8) Portable: more supported platforms/OS, more rate required.
9) Easy to change: more changes expected more rating.
10) Concurrent: more Concurrent users means more rating.
11) special security: more custom security, (row level, column level , role level), means more rating.
12) direct access for third parties: more access means more rating.
13) Special user training facilities: the longer time for training required the more rating.

For each of the 13 Factors, you need to rate from 0 (irrelevant) to 5 (very important).

Technical Complexity Factor (TCF) = 0.6 + (0.01 * TFactor) 


3) How to adjust for environmental complexity?

Consider the 8 Environmental Factors that could affect the project execution and their corresponding Weights as given in the following table


Notes:
1) Familiar with the project, higher number means higher level of experience.
2) Application experience, for new application, rate will be 0, for update existing system, rate will be 5
3) Object-oriented experience: higher number means higher OO experience.
4) Lead analyst capability: higher number means good analysis.
5) Motivation: higher number means higher motivation. 
6) Stable requirements: higher number means less changes expected.
7) Part-time staff: higher number means most of stuff are part time.
8) Difficult programming language: higher number means harder lang to our stuff.

Environmental Factor (EF) = 1.4 + (-0.03 × EFactor)


5) How to calculate final Use Case Point (UCP )?

UCP = UUCP × TCF × EF

.


6) How to convert UCP to Man hours?

Karner originally proposed a ratio of 20 hours per use case point.

Schneider and Winters (1998) proposed a different approach, we need to calculate n1, and n2 first

  • n1= count of environment factor below 3 for items F1-F6
  • n2= count of environment factor above 3 for items F7-F8

  • if n1+n2 <=2   ====================> need 10-20 Man hrs per UCP
  • else if   n1+n2 between 3,4   ==========> need 14-28 Man hrs per UCP
  • else if   n1+n2 >4   =================> need 18-36 Man hrs per UCP
Consider that developer work 30 hours per weeks, 6 hours per day, 75% utilization.

The rest of their time will be sucked up by corporate overhead—answering email, attending meetings, and so on.




Summary



Notes: A better approach will often be to break the use case into a set of user stories and estimate the user stories in either story points or ideal time (Cohn 2005).








Reference

Estimating With Use Case Points by Mike Cohn, mike@mountaingoatsoftware.com

https://www.cs.cmu.edu/~jhm/DMS%202011/Presentations/Cohn%20-%20Estimating%20with%20Use%20Case%20Points_v2.pdf


https://www.youtube.com/watch?v=cAfWvYSQIHA


https://www.tutorialspoint.com/estimation_techniques/estimation_techniques_use_case_points.htm#


Sizing Sheet

Web
http://groups.umd.umich.edu/cis/tinytools/cis375/f17/team9-use-case-pts/Use_Case_Point_Calculator/

Excel
https://www.researchgate.net/file.PostFileLoader.html?id=550b927bef97130f038b4660&assetKey=AS%3A273739168583683%401442275911540