Module 1: Introduction to Software Engineering Lawrence Chung Software Engineering: Introduction 1 Objectives What is Software Engineering? Why Software Engineering? How to do Software Engineering? Lawrence Chung Software Engineering: Introduction 2 What is Software Engineering? Software Engineering = Software + Engineering What is Software? Software = Soft + ware Any examples? What is Engineering? Engineering = Engine-er-ing Any examples? Is this an Engineering discipline? If yes, why? If not, why not? Is this for an Engineer or a scientist? Lawrence Chung Software Engineering: Introduction 3 What is Software Engineering? A historical definition: “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines …” [Fritz Bauer, at the 1st NATO Conference on Software Engineering, 1969] IEEE definition: “Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.” A shorter definition: BCFH Lawrence Chung Software Engineering: Introduction 4 Why Software Engineering? 9 software projects totaling $96.7 million: Where The Money Went [Report to Congress, Comptroller General, 1979] Delivered, but never successfully used 45% Used as delivered 2% Usable w. rework 3% Used w. extensive rework, but later abandoned 20% Lawrence Chung Paid for, but not delivered 30% Software Engineering: Introduction Why? Software hurts Requirements design 5 What Factors Contribute to Project Success? Standish Group, ‘01 (www.standishgroup.com) Project Success Factors The CHAOS Ten 1. Executive Management Support 28% 2. User Involvement 3. Experienced Project Manager completed on time and on budget 4. Clear Business Objectives overran original estimates: -Time overrun averaged 63% - Cost overrun averaged 45% canceled before completion 49% 23% Lawrence Chung 5. Minimized Scope 6. Standard Software Infrastructure 7. Firm Basic Requirements 8. Formal Methodology 9. Reliable Estimates 10. Other Software Engineering: Introduction 6 What Factors Contribute to Project Failure? The CHAOS Ten The CHAOS Ten Standish Group, ‘01 (www.standishgroup.com) “The definition of insanity isEngineering: doing the same thing over and Lawrence Chung Software Introduction over again and expecting a different result.” [Albert Einstein] 7 Why Software Engineering? What do software engineers do? Non-productive Activities 30% Work alone 20% Interaction 50% programming ≠ software engineering personal activity team activity small, clear problem large, nebulous problem Lawrence Chung Software Engineering: Introduction 8 Why Software Engineering? http://www.cis.gsu.edu/~mmoore/CIS3300/handouts/SciAmSept1994.html http://techdirt.com/articles/20060818/1613226.shtml Are you aware of any other mishaps? Lawrence Chung Software Engineering: Introduction 9 Why Software Engineering? Major symptoms of the “software crises”: Over budget Schedule slippage Poor quality Major causes of the “software crises”: The "software crises" came about when people realized the major problems in software development were … caused by communication difficulties and the management of complexity” [Budd] Lawrence Chung Software Engineering: Introduction 10 Why SE? Lawrence Chung Software Engineering: Introduction 11 How to Do Software Engineering? Software Lifecycle Review Systems Engineering Project Planning Architectural Design Quality Assurance Requirements Analysis Maintenance Detailed Design Implementation BCFH - models/languages, Release Lawrence Chung processes/methodologies, tools, … Software Engineering: Introduction 12 To be discussed later on… Lawrence Chung Software Engineering: Introduction 13 How to do SE? Lawrence Chung Software Engineering: Introduction 14 How to do SE? Lawrence Chung Software Engineering: Introduction 15 The Tar Pit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 The woes of the craft: Bugs!!! Bugs get harder as testing progresses The fundamental problem: fixing a bug has a 20%-50% chance of introducing another The product gets obsolete upon or even before completion Worse: must use others’ programs! 18 19 20 Lawrence Chung Software Engineering: Introduction 16 Genesis 11:1-9 Acts 2:1-4 The Tower Of Babel Let's become famous by building a city with a tower that reaches up to heaven (verse four). Let's go down and confuse their speech right away, and make it so that they will not understan d each other's speech. (verses five through seven). Lawrence Chung Software Engineering: Introduction 17 Why Did the Tower of Babel Fail? Bad communication in software projects is the root of all evil. Lawrence Chung Software Engineering: Introduction 18 The Mythical Man-Month 1 2 3 4 5 6 All programmers are optimists, believing in happy endings and fairy god-mothers. Because programming tasks are usually chained end-to-end, the probability that each will go well is very small. 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Optimism: Man-month: Cost vary as a product: men · months. Progress does not: communication overhead! Overhead: intercommunication and training. Lawrence Chung Software Engineering: Introduction 19 Brook’s Law Adding manpower to a late software project makes it later. Lawrence Chung Software Engineering: Introduction 20 Hatching a Catastrophe Poor Project planning, estimation, control Coding is “90% finished” for half of the total coding time Debugging is “99% complete” most of the time Lawrence Chung Software Engineering: Introduction 21 No Silver Bullet – Essence and Accident in Software Engineering “There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity” (1986). Complexity enormous number of states (orders of magnitude more than in hardware), so conceiving, describing and testing is hard increases non-linearly with its size introduces a lot of difficulties: communication among team members enumerating (much less understanding) of all possible states of the program management problems: conceptual integrity is hard to achieve learning curve: personnel turnover becomes disaster others Lawrence Chung Software Engineering: Introduction 22 The M-MM after 20 years 1 2 3 4 Answers questions like: What do you now think was 6 wrong when written? What is now obsolete? 7 What is really new in the software engineering 8 9 world? 5 10 11 12 13 14 15 16 17 18 19 20 What was right and still is: Conceptual integrity is the more important factor in ease of use [There are other factors. Consider Macintosh vs. MS-DOS]. It is the central question addresses by M-MM and is central to product quality. Lawrence Chung Software Engineering: Introduction 23 How to do SE? Lawrence Chung Software Engineering: Introduction 24 How to do SE? Lawrence Chung Software Engineering: Introduction 25 How to do SE? Lawrence Chung Software Engineering: Introduction 26 How to do SE? Lawrence Chung Software Engineering: Introduction 27 How to do SE? Lawrence Chung Software Engineering: Introduction 28 How to do SE? Lawrence Chung Software Engineering: Introduction 29 Why speak about management rather than technical issues? Lawrence Chung Software Engineering: Introduction 30 How to do SE? News Groups: comp.software-eng comp.software.testing … Professional Organizations: IEEE: TSE, ICSE, ICRE, … ACM: TOSEM … Lawrence Chung Software Engineering: Introduction 31 Introduction to SE - Summary Why Software Crisis due to Communication and Complexity Inherent complexity What Engineering (large) software, bcfh How BCFH languages, concepts, models, tools Lawrence Chung Software Engineering: Introduction 32 Lawrence Chung Software Engineering: Introduction 33 Lawrence Chung Software Engineering: Introduction 34 Lawrence Chung Software Engineering: Introduction 35 Lawrence Chung Software Engineering: Introduction 36 Lawrence Chung Software Engineering: Introduction 37 Lawrence Chung Software Engineering: Introduction 38 Lawrence Chung Software Engineering: Introduction 39 Introduction to SE - Points to Ponder 1. 2. 3. 4. 5. 6. 7. Programming = software engineering? What does BCFH really mean? Can you define it completely? What are the similarities, and differences, between Civil Engineering and Software Engineering? What are the differences between a notation and a methodology? Can we use C# for analysis? Can you prove you and I communicate with each other perfectly? Are you a scientist or an engineer? Lawrence Chung Software Engineering: Introduction 40