Module 1 Introduction to Software Engineering Lawrence Chung








































- Slides: 40

Module 1: Introduction to Software Engineering Lawrence Chung Software Engineering: Introduction 1

Objectives l What is Software Engineering? l Why Software Engineering? l How to do Software Engineering? Lawrence Chung Software Engineering: Introduction 2

What is Software Engineering? Software Engineering = Software + Engineering l What is Software? Software = Soft + ware Any examples? l 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 1 st 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 5. Minimized Scope 6. Standard Software Infrastructure overran original estimates: canceled before completion -Time overrun averaged 63% - Cost overrun averaged 45% 49% 23% Lawrence Chung 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 Standish Group, ‘ 01 (www. standishgroup. com) “The definition of insanity is. Engineering: doing the. Introduction same thing over and Lawrence Chung Software 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/CIS 3300/handouts/Sci. Am. Sept 1994. 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”: q Over budget q Schedule slippage q 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 Detailed Design Implementation Release Lawrence Chung Quality Assurance Requirements Analysis Maintenance BCFH - models/languages, 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 l The 8 9 10 11 12 13 14 15 16 17 woes of the craft: Bugs!!! l Bugs get harder as testing progresses l The fundamental problem: fixing a bug has a 20%-50% chance of introducing another l The product gets obsolete upon or even before completion l Worse: must use others’ programs! l 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 l Optimism: All programmers are optimists, believing in happy endings and fairy god-mothers. l Because programming tasks are usually chained end-to-end, the probability that each will go well is very small. l 7 8 9 10 11 12 13 l Man-month: 14 15 16 17 18 19 20 Cost vary as a product: men · months. l Progress does not: communication overhead! l Overhead: intercommunication and training. l 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 l Debugging is “ 99% complete” most of the time l 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). l Complexity l l l 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: l l l communication among team members enumerating (much less understanding) of all possible states of the program management problems: l l l 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 l 12 13 14 15 16 17 18 19 20 What was right and still is: l 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 … l Professional Organizations: IEEE: TSE, ICRE, … ACM: TOSEM … l Lawrence Chung Software Engineering: Introduction 31

Introduction to SE - Summary Why Software Crisis due to Communication and Complexity l Inherent complexity l What l Engineering (large) software, bcfh How l 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