Why is software engineering worth studying q Demand















- Slides: 15
Why is software engineering worth studying? q Demand for software is growing dramatically u Software costs are growing per system u Many projects have cost overruns u Many projects fail altogether u Software engineering seeks to find ways to build systems that are on time and within budget 0
Demand for larger software systems q What growth pattern do you see in the following? F 4 fighter had no digital computer and software (Early 70’s). u F 16 A had 50 digital processors and 135 KLOC (Late 70’s). u F 16 D had 300 digital processors and 236 KLOC (Late 80’s). u u B-2 has over 200 digital processors and 5000 KLOC. q Software components are growing exponentially 1
Software development costs What can you infer from the graph? Hardware costs vs. Software costs Hardware 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 growing • Size of the software applications is also increasing • Hence “the software crisis” Time 2
State of the practice What can you infer from this chart? 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 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. 3
What can you infer from this chart? Cost overrun Successful Cancelled Source: 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. 4
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 5
Software development process has stages q Requirements analysis and definition: u Establish the application’s goals and constraints in consultation with users q Design: u Establish the system’s architecture q Implementation and unit testing: Realize the design as a set of programs or program units u Unit testing verifies that each unit meets its specification u q Integration and system testing: u Integrate the program units and test as a complete system q Maintenance: u Correct errors, improve implementation, and enhance the system’s services as new requirements are discovered 6
Relative costs to fix errors: What can you infer from this graph? Maintenance Testing Implementation Design Requirements Cost to fix an error increases as it is found later and later in the software lifecycle 7
What is the primary driver of software costs? What can you infer from the following graphic? 3% 8% 7% 15% 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 8
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 9
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 10
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 11
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 12
What software engineering is and is not. . q Software engineering is concerned with “engineering” software systems, that is, building and modifying software systems: on time, u within budget, u meeting quality and performance standards, u delivering the features desired/expected by the customer. u q Software engineering is not… Just building small or new systems. u Hacking or debugging until it works. u Easy, simple, boring or even pointless! u 13
Summary q Critical aspects of our day to day lives depend on software, yet software development lacks the rigor and discipline of mature engineering disciplines: u Too many projects get delayed, costs and schedules slip q Software engineering seeks to bring discipline and rigor to the building and maintenance of software systems u Study of software engineering focuses on three key elements: process, methods and tools q Why is important to consider alternative models of the software development process? 14