Module 1 Introduction to Software Engineering Lawrence Chung

  • Slides: 40
Download presentation
Module 1: Introduction to Software Engineering Lawrence Chung Software Engineering: Introduction 1

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

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?

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

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

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

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.

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%

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:

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

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

Why SE? Lawrence Chung Software Engineering: Introduction 11

How to Do Software Engineering? Software Lifecycle Review Systems Engineering Project Planning Architectural Design

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

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 14

How to do SE? Lawrence Chung Software Engineering: Introduction 15

How to do SE? Lawrence Chung Software Engineering: Introduction 15

The Tar Pit 1 2 3 4 5 6 7 l The 8 9

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

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

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

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

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

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

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

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 24

How to do SE? Lawrence Chung Software Engineering: Introduction 25

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 26

How to do SE? Lawrence Chung Software Engineering: Introduction 27

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 28

How to do SE? Lawrence Chung Software Engineering: Introduction 29

How to do SE? Lawrence Chung Software Engineering: Introduction 29

Why speak about management rather than technical issues? Lawrence Chung Software Engineering: Introduction 30

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

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

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 33

Lawrence Chung Software Engineering: Introduction 34

Lawrence Chung Software Engineering: Introduction 34

Lawrence Chung Software Engineering: Introduction 35

Lawrence Chung Software Engineering: Introduction 35

Lawrence Chung Software Engineering: Introduction 36

Lawrence Chung Software Engineering: Introduction 36

Lawrence Chung Software Engineering: Introduction 37

Lawrence Chung Software Engineering: Introduction 37

Lawrence Chung Software Engineering: Introduction 38

Lawrence Chung Software Engineering: Introduction 38

Lawrence Chung Software Engineering: Introduction 39

Lawrence Chung Software Engineering: Introduction 39

Introduction to SE - Points to Ponder 1. 2. 3. 4. 5. 6. 7.

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