• Keine Ergebnisse gefunden

Introduction on Software Cost Estimation

N/A
N/A
Protected

Academic year: 2021

Aktie "Introduction on Software Cost Estimation"

Copied!
18
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Introduction on Software Cost Estimation

Rolf Hintermann

(2)

Content of this presentation

• History of software cost estimation

• Overview

• Estimation process

• Conclusion

(3)

1940‘s – beginning of the computer era

• Computers

• A few of them in use

• Applications

• A few of them in use

• Small in size

• Typically one developer

• „cheap“ to develop

history

(4)

Today

• Computers

• A lot of them in use

• Applications

• A lot of them in use

• Large in size

• Many developers

• „expensive“ to develop

history

(5)

Why does software cost so much?

history

(6)

Why does software cost so much?

Compared to what?

history

(7)

Why does software cost so much?

What have we done to make it possible for today‘s software to cost so little?

history

(8)

History of the software cost estimation industry

• Before 1970: rules of thumb, simple algorithms

• Around 1970: Idea of automated tools

• Around 1975: Function points

• 1977: PRICE-S, first commercial tool

• 1979: SLIM, second commercial tool

• 1981: COCOMO

history

(9)

History of the software cost estimation industry

• 1981: paper on function points published world wide

• 1982: deMarco function points

• 1983: Mark II function points

• 1984: revision of IBM‘s function point metric

• 1985: SPQR/20

• 1986: IFPUG founded in Toronto, Canada

history

(10)

History of the software cost estimation industry

• Until today: A lot of new commercial tools have been released

history

(11)

Time and purpose of estimates

• When tendering for a project

• During development process

overview

(12)

General problems of software cost estimation

• Changing requirements

• Output of developers

• Underestimation of non-coding work

overview

(13)

Key factors

Personnel

Technology

Processes

Environment Software Quality and Productivity

overview

(14)

Objectives of the estimate

• Size of all deliverables

• Staff needed

• Schedule

• Effort

• Costs to develop

• Costs for maintenance and enhancement

• Quality

• Reliability

overview

(15)

Estimation steps as proposed by Jones

• Analyze the requirements

• Start with sizing

• Identify the activities to be included

• Estimate software defect potentials and removal methods

• Estimate staffing requirements

• Adjust assumptions based on capabilities and experience

• Estimate effort and schedules

• Estimate development costs

• Estimate maintenance and enhancement costs

Estimation process

(16)

Estimation steps as proposed by Boehm

• Establish objectives

• Plan for required data and resources

• Pin down software requirements

• Work out as much detail as feasible

• Use several independent techniques and sources

• Compare and iterate estimates

• Followup

Estimation process

(17)

Reasons for underestimating

• Fantasy factor

• Omitting some cost factors

conclusion

(18)

Discussion

conclusion

Referenzen

ÄHNLICHE DOKUMENTE

In this exercise, we implement Euclid’s algorithm for finding the greatest common divisor of two natural numbers that you have come across in your linear algebra class. This will

In the last lecture, you saw the implementation of a class for representing larger integers, BiggerInt, with an implemen- tation of the BiggerInt *add class member function.. a)

• a two-dimensional array of type double** (i.e. an array of pointers to arrays of type double) with the first index being the row index and the second index being the column

An vielen Türen hängen Plakate mit Rätseln, deren Lösung eine Zahl zwischen eins und

In this exercise we introduce the so called O-notation that is used to compare the efficiency of algorithms, in particular for arbitrarily large inputs. Definition 1 Let g : N → N be

In the naïve approach we iteratively find the largest power of 2 which is less than or equal to the number we want to convert, place a 1 at the corresponding position of the

Remark: Remember that you have to use the g++ comiler: g++ rational.cc -o rational To view your data type, add a class member function like. void

The algorithm is very inefficient as the number of recursive calls to Fib(n) grows exponentially in n. It is much more efficient to compute the Fibonacci numbers iteratively, as