software engineering lecturer: giuseppe santucci · 2015. 5. 15. · cocomo ii reuse • the main...

70
Effort estimation Software Engineering Lecturer: Giuseppe Santucci 1

Upload: others

Post on 28-Aug-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Effort estimation

Software Engineering

Lecturer: Giuseppe Santucci

1

Page 2: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Effort estimation goals

Effort estimationRequirementsCostEffortTime

Cocomo.2

Page 3: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Steps

• Requirements--> Function points (FP)

• FP --> LOC

• LOC --> Time / Effort

• Effort --> Cost

Cocomo.3

Page 4: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Some general considerations

4

Page 5: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Overview

Requirements

UFP LOC computation

•ER DFD

UML

•Text

•Prototype

•…

COCOMO

LOC

Cost

computation

Effort

Delivery Time

$

Market

Project parameters

Project parameters

5

AFP

Page 6: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Some statistics

Page 7: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Some statistics

7

Page 8: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Effort estimation from LOC

8

Page 9: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

• M: Effort, Cost:

Man time required to develop the project. Unit: man-day, man-month, man-year

• T: Delivery Time:

Required time (years, months, weeks ) to deliver the workingsoftware

• Manpower:

Effort across the time: it represents the number of people workingduring the project execution. Manpower= Effort/Delivery time

What is estimated

Cocomo.9

Page 10: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

CoCoMo: Constructive Cost Model (Bohem 1981)http://csse.usc.edu/csse/research/COCOMOII/cocomo_downloads.htm

• Estimates effort M and optimal T

• Relies on statistics

• Waterfall model (!)

• Three different models

• Basic formula : M=aSb T=cMd (S represents KLOC)

• Provides an effort indication on four phases: analysis and planning, design, development, integration and test

• http://sunset.usc.edu/csse/research/COCOMOII/cocomo_main.html

Cocomo.10

Page 11: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Adjusting parameters

• Estimate the context in which the software is developed

• Several parameters

• (Very low-low-nominal-high-very high-extra high)

Cocomo.11

Page 12: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

COCOMO: 1981 formulas

Cocomo.12

Page 13: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Assumptions and definitions

• S: only lines of codes developed within the project

• T : it encompasses design-coding-integration and test. Requirement analysis is not considered.

• MM =

– 19 days of 8 hours

– 152 hours

• Stable requirements

Cocomo.13

Page 14: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Example

• Organic model

• S=32K

• MM = 2.4(32)1.05 = 91 MM

• T = 2.5(91)0.38 = 14 months

• People = 91/14 = 6.5

• Productivity = 32K/91 = 0.352 kloc/month !

18.5 loc / day !!!!

Cocomo.14

Page 15: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

M distribution(organic)

Cocomo.15

Page 16: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

T distribution

Cocomo.16

Page 17: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Example: development phaseMM = 2.4(32)1.05 = 91 MM

T = 2.5(91)0.38 = 14 months• Mdev ?

• Tdev ?

• How many people ?

• Mdev = 0.62 * 91 = 56 Man-month

• Tdev = 0.55 *1 4 = 7.7 months

• Peopledev = 56/7.7 = 7.3

• Linear interpolation for values not in the table

Cocomo.17

Page 18: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Gantt

Design

DevelopmentInt. & test

Cocomo.18

Page 19: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Some considerations about Cocomo1981

• hp1: waterfall model

• hp2: stable requirements

• hp3: adequate personnel

• hp4: project management

• Error <20% on 68% of estimates

Cocomo.19

Page 20: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Cocomo II

20

Page 21: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Cocomo II

• Motivations

– New lifecycle sw models

– Reuse

– Different levels of estimation precision

Cocomo.21

Page 22: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Estimation precision

22

Page 23: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Cocomo II models

• Early Design model– Suitable for the project initial phase

– Little detail (estimation through FP)

– 7 adjusting factors

• Post-Architecture model– for development and maintenance phases

– More detail and information (FP and reuse)

– 17 adjusting factors

• The two models share 5 scaling drivers for computing the exponents factor

Cocomo.23

Page 24: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

PMnominal= A SE

E = B + 0.01

TDEV=C(PMadjusted)F SCED/100

F = D + 0.2 x 0.01 = D+0.2(E-B)

E denotes scale economy and diseconomy

In Cocomo 1981 E={1.05, 1.12, 1.20} (only diseconomies)

In Cocomo II: E= ranges between 0.91 a 1.226

5

1i

iw

Cocomo II formulas6+SCED or 16+SCED

Cocomo.24

5

1i

iw

E=1.226

E=1

E=0.91

Page 25: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Actual calibration

A=2.94

B=0.91

C=3.67

D=0.28

Cocomo.25

PMnom= 2.94 SE

E=0.91+

TDEV = 3.67 (PMadjusted)F

F = 0.28 +0.2 x 0.01

Page 26: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

The 5 scale factors

26

Page 27: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Scale factors

Cocomo.27

Page 28: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

PRECedenteness & Development FLEXibility

Cocomo.28

The PREC and FLEX scale factors are largely intrinsic to a project and uncontrollable

Page 29: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Architecture/Risk RESoLution

Product

Design

Review

Component

Off

The

Shelf

Cocomo.29

Page 30: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

TEAM Cohesion

Cocomo.30

Page 31: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Process MATurity

• Based on CMMI

• Two calculation methods:

– CMMI level (1-, 1+, 2, 3, 4 , 5)

– Implementation % of the 18 key process areas

Cocomo.31

Page 32: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

KPA Implementation %

32

Page 33: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Numerical values

33

Page 34: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

The SCED+16 / SCED+6 adjusting factors

34

Page 35: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Pmnom adjusting

Early Design model

Post-Architecture

model

Cocomo.35

Page 36: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

SCED + Adjusting factors

Cocomo.36

Page 37: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

• RELY: REquired software reliabiLitY(0.82-0.92-1.0-1.10-1.26-n/a)

This is the measure of the extent to which the software must perform its intendedfunction over a period of time. If the effect of a software failure is only slightinconvenience then RELY is low. If a failure would risk human life then RELY is veryhigh

• DATA: DATA base size (n/a-0.90-1.0-1.14-1.28-n/a)

Product

Cocomo.37

Page 38: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

• CPLX: product ComPLeXity (0.73-0.87-1.0-1.17-1.34-1.75)

Product

Cocomo.38

Page 39: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

• CPLX: product ComPLeXity (0.73-0.87-1.0-1.17-1.34-1.75)

Product

Cocomo.39

Page 40: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

• RUSE: developing reusable software (n/a-0.95-1.0-1.07-1.15-1.24)

• DOCU: level of required documentation (0.81-0.91-1.0-1.11-1.23-n/a)

– Several software cost models have a cost driver for the level of required documentation. In COCOMO II, therating scale for the DOCU cost driver is evaluated in terms of the suitability of the project’s documentation toits life-cycle needs. The rating scale goes from Very Low (many life-cycle needs uncovered) to Very High (veryexcessive for life-cycle needs).

Product

Cocomo.40

Page 41: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

System• TIME: execution TIME constraint (n/a-n/a-1.0-1.11-1.29-1.63)

• STOR: main STORage constraint (n/a-n/a-1.0-1.05-1.17-1.46)

Cocomo.41

Page 42: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

System• PVOL - Platform volatility (n/a-0.87-1.0-1.15-1.30-n/a)

Cocomo.42

Page 43: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Personnel• ACAP - Analyst CAPability (1.42-1.19-1.0-0.85-0.71-n/a)

• PCAP - Programmer CAPability (1.34-1.15-1.0-0.88-0.76-n/a)

• APEX - Application EXPerience (1.22-1.10-1.0-0.88-0.81-n/a)

• PLEX – Platform EXPerience (1.19-1.09-1.0-0.91-0.85-n/a)

• LTEX: Language and tool EXPerience (1.20-1.09-1.0-0.91-0.84-n/a)

• PCON – Personnel continuity(1.29-1.12-1.0-0.90-0.81-n/a)

Cocomo.43

Page 44: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Project• TOOL - use of software TOOLs (1.17-1.09-1.00-0.90-0.78-n/a)

• SITE - Multisite development (1.22-1.09-1.0-0.93-0.86-0.80)

Cocomo.44

Page 45: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Project• SCED - SChEDule constraints (1.43-1.14-1.0-1.00-1.10-n/a).

Cocomo.45

Page 46: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Summary

46

Page 47: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Variability!!!

• Best case:• 0,82*0,9*0,73*0,95*0,81*1*1*0,87*0,71*0,76*0,81*0,81*0,85*0,84=

0,09

• Worst case:• 1,26*1,28*1,74*1,24*1,23*1,63*1,46*1,3*1,42*1,34*1,29*1,22*1,19*1,2*1,17*1,22*1,43=

115

Cocomo.47

Page 48: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

7 vs 17

Affects both M and T

Cocomo.48

Page 49: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

M and T

PMnom= 2.94 SE

Cocomo.49

SCED

Page 50: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Reuse

How to estimate the effort for reusing existing modules

50

Page 51: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

The cost of reuse

Cocomo.51

Page 52: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Cocomo II reuse• The main idea is to model the effort for adapting an existing module

(ASLOC lines of code) as the required effort for developing a newmodule: ESLOC = Equivalent Source Line of Code

• Cocomo uses a non linear model based two aspects:

1. The inherent complexity of adapting the software– SU : Software Understanding (as percentage)– AA: Assessment and Assimilation– UNFM: Programmer Unfamiliarity

2. The percentage of modification AAF: Adaptation Adjusting Factor– DM, percentage of modified design – CM, percentage of modified code– IM, percentage of modification to the original integration effort

required for integrating the reused software

Cocomo.52

Page 53: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

SU : Software Understanding

Penality percentage53

Page 54: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

AA: Assessment and Assimilation

Assessment and Assimilation (AA) effort needed to

a) determine whether a reused software module is

appropriate to the application, and

b) to integrate its description into the overall product description

54

Page 55: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

UNFM: Programmer Unfamiliarity

programmer’s relative unfamiliarity

with the software

55

Page 56: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Equivalent SLOC2 distinct formulas, driven by relative modification

of size AAF

56

Automated

translation

Page 57: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

AAM range

57

Page 58: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

ExampleSoftware module (ASLOC=8k) to browse, on the

Web, a relational table– Code well written and documented SU=20– Easy to evaluate and to integrate in

the overall documentation AA=2– No familiarity with the code UNF=1.0– 10% percentage of modified design DM=10– 20% percentage of modified code CM=20– 35 %percentage of modification to the

original integration effort required for integrating the reused software IM=35

Cocomo.58

Page 59: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Example (2)SU=20 AA=2 UNFM=1.0 DM=10 CM=20 IM=35

AAF= 0.4 (10)+0.3 (20) +0.3 (35)=20.5 (AAF<= 50)

AAM= [2+20.5(1+0.02x20x1.0)]/100= 0,307

ESLOC=8 x 0,307=2,456 KLOC

Cocomo.59

Page 60: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Backfiring

60

Page 61: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

BACKFIRING

Cocomo.61

Page 62: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

BACKFIRING

Cocomo.62

Page 63: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

BACKFIRING

Cocomo.63

Page 64: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

BACKFIRING

Cocomo.64

Page 65: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

LOC estimation

65

Page 66: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Invoice database

• 51 Fp

• C language

• Coefficiente di backfiring del C :128

• LOC=51*128=6528=6.5 KLOC

All parameters are set to NOMINAL

Page 67: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

SLOC within Cocomo SW

67

Page 68: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

UFP/LOC

Cocomo.68

Page 69: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Other sources

69

http://www.qsm.com/reso

urces/function-point-

languages-table

Page 70: Software Engineering Lecturer: Giuseppe Santucci · 2015. 5. 15. · Cocomo II reuse • The main idea is to model the effort for adapting an existing module (ASLOC lines of code)

Proposed methodology

Requirements

UFP LOC computation

•ER DFD

UML

•Text

•Prototype

•…

COCOMO

LOC

Cost

computation

Effort

Delivery Time

$

Market

Project parameters

(only once)

70