Why is software engineering worth studying? Demand for software is growing dramatically Software...

15
Why is software engineering worth studying? Demand for software is growing dramatically Software costs are growing per system Many projects have cost overruns Many projects fail altogether Software engineering seeks to find ways to build systems that are on time and within budget

Transcript of Why is software engineering worth studying? Demand for software is growing dramatically Software...

Page 1: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Why is software engineering worth studying?

Demand for software is growing dramatically Software costs are growing per system Many projects have cost overruns Many projects fail altogether Software engineering seeks to find ways

to build systems that are on time and within budget

Page 2: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Demand for larger software systems

What growth pattern do you see in the following? F4 fighter had no digital computer and software (Early

70’s). F16A had 50 digital processors and 135 KLOC (Late 70’s). F16D had 300 digital processors and 236 KLOC (Late

80’s). B-2 has over 200 digital processors and 5000 KLOC.

Software components are growing exponentially

Page 3: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Software development costs

Software costs are increasing as hardware costs continue to decline.

•Hardware technology has made great advances•Simple and well understood tasks are encoded in hardware•Least understood tasks are encoded in software•Demands of software are growing•Size of the software applications is also increasing•Hence “the software crisis”

Software costs

Hardwarecosts

Time

Hardware costs vs. Software costs

What can you infer from the graph?

Page 4: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

State of the practice

Estimate Early On Time Delayed Canceled

13,000 6.06% 74.77% 11.83% 7.33%

130,000 1.24% 60.76% 17.67% 20.33%

1,300,000 0.14% 28.03% 23.83% 48.00%

13,000,000 0.00% 13.67% 21.33% 65.00%

Source: Patterns of software failures and successes, Capers Jones, 1996

•Delays common with mid- to –large projects.•Majority of the large projects are canceled.

What can you infer from this chart?

Page 5: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

What can you infer from this chart?

0

10

20

30

40

50

60

Cost overrun Successful CancelledSource: The Standish Group, 1994

•Successful projects (16.2%) - Delivered fully functional on time and on budget.•Challenged (52.7%) - Deliver less than full functionality, over-budget and late.•Impaired (31.1%) - Cancelled during development.

Page 6: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Software development costs and consequences

Failures resulting from software errors have varied consequences ranging from minor inconveniences to catastrophic loss of life & property:

•Air Traffic Control (FAA modernization): - $5.6 billion cost overrun. - 8 year delay. - 2 systems are canceled - Requirements for the third have been decreased by 48%.•US Navy Finance System: - 4 times cost overrun. - Canceled after 9 years.•Flaw in Therac-25 control system caused radiation overdoses - Consequences were injury and deaths

Page 7: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Software development process has stages

Requirements analysis and definition: Establish the application’s goals and constraints

in consultation with users

Design: Establish the system’s architecture

Implementation and unit testing: Realize the design as a set of programs or program units Unit testing verifies that each unit meets its specification

Integration and system testing: Integrate the program units and test as a complete system

Maintenance: Correct errors, improve implementation, and enhance

the system’s services as new requirements are discovered

Page 8: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Relative costs to fix errors:What can you infer from this graph?

0

10

20

30

40

50

60

70

80

Requir

em

en

ts

Desi

gn

Imple

menta

tion

Test

ing

Main

tenance

Cost

Cost to fix an error increases as it is found later and later in the software lifecycle

Page 9: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

What is the primary driver of software costs?

What can you infer from the following graphic?

3%8%

7%

15%

67%

Requirements -- 3%Design -- 8%Implementation -- 7%Testing -- 15%Maintenance -- 67%

•Most money and effort spent in testing and maintenance

•But: 85% of errors are introduced during requirements analysis and design

Page 10: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Why are software projects late?

Estimating techniques are poorly developed•Estimates are based on optimism: - Programmers are optimistic. - Assume “All will go well” with the project. - Don’t plan for slippage. - “This is the last bug.” - “It’s going to work this time!”

•Optimism could be because of the nature of creativity: - Conception of an idea and its implementation. - Medium of creation constrains our ideas. - In case of software the medium is infinitely malleable. - Expect a few problems in implementation.

Our techniques of estimating are poorly developed. More seriously they reflect an unvoiced assumption which is quite untrue, that is, that all will go well. -- Fred Brooks, The Mythical Man-Month

Page 11: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Why are software projects late? (contd..)

Does effort necessarily == progress?

• Is one man working six months equal to six men working one month?

• Unit of man-month implies that men and month are interchangeable.

- True only when a task can be partitioned among many workers with no communication between them. - For sequential tasks, more effort has no effect on the schedule. - Many tasks in software engineering have sequential constraints.

Our estimating techniques fallaciously confuse effort with progress,hiding the assumption that men and months are interchangeable. - Fred Brooks, The Mythical Man-Month

Page 12: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Why software projects are late? (contd..)

Managers do not monitor progress effectively

•Schedule slips day-by-day.•Day-by-day slips are harder to recognize,

harder to prevent and harder to make up.

How does a software project get to be a year late?..One day at a time! Fred Brooks, The Mythical Man-Month

Page 13: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Why are software projects late ? (contd..)

When we recognize slippage, should we add more people?•Most tasks require communication among workers.•Communication consists of: - Training. - Sharing information (intercommunication).•Training affects effort at worst linearly, with the number of people.•For n workers, intercommunication adds n(n-1)/2 to effort. - If each worker must communicate with every other worker.•Adding more people to an already late project is usually like “Adding gasoline to fire!”

Adding manpower to a late software project makes it later. Fred Brooks, The Mythical Man-Month

Page 14: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

What software engineering is and is not..

Software engineering is concerned with “engineering” software systems, that is, building and modifying software systems: on time, within budget, meeting quality and performance standards, delivering the features desired/expected by the customer.

Software engineering is not… Just building small or new systems. Hacking or debugging until it works. Easy, simple, boring or even pointless!

Page 15: Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.

Summary

Critical aspects of our day to day lives depend on software, yet software development lacks the rigor and discipline of mature engineering disciplines: Too many projects get delayed, costs and schedules slip

Software engineering seeks to bring discipline and rigor to the building and maintenance of software systems Study of software engineering focuses on three key

elements: process, methods and tools Why is important to consider alternative models of the

software development process?