scope of software engineering

46
1.1/46 Scope Of Software Engineering

Upload: emery-pena

Post on 02-Jan-2016

79 views

Category:

Documents


9 download

DESCRIPTION

Scope Of Software Engineering. Prologue…. ‘Have you any idea what happened to our computers!. Pay $0.00 bill, …, Pay the $0.00 bill within 30 days…, …, Pay the $0.00 bill or possible legal action …, Paying the $0.00 bill ,. ,. Prologue - (Cont’d)…. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Scope  Of  Software  Engineering

1.1/46

Scope Of

Software Engineering

Page 2: Scope  Of  Software  Engineering

1.2/46Prologue…

• ‘Have you any idea what happened to our computers!

• Pay $0.00 bill,

• …,

• Pay the $0.00 bill within 30 days…,

• …,

• Pay the $0.00 bill or possible legal action …,

• Paying the $0.00 bill ,

Page 3: Scope  Of  Software  Engineering

1.3/46Prologue - (Cont’d)…

• On Nov, 11, 1979 the US Worldwide Military Command and Control System (WWMCCS) computer network reported that the Soviet Union has launched missiles aimed towards the US…,

• Actually, a simulated attack was interpreted as the real thing!

,

Page 4: Scope  Of  Software  Engineering

1.4/46Prologue - (Cont’d)…

• 30% of software development projects fail,

• 70% of the remainder – Are over budget by 189%– Behind schedule by 222%,

• More than 50% of this trouble is caused by inadequate requirements definition ,

352 companies, 8000 Projects. Source: The Standish Group, 1995352 companies, 8000 Projects. Source: The Standish Group, 1995

Page 5: Scope  Of  Software  Engineering

1.5/46Prologue - (Cont’d)…• Why SW Projects Fail?

Page 6: Scope  Of  Software  Engineering

1.6/46Prologue - (Cont’d) …

• SW engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the users’ needs ,

• Furthermore, the SW must be easy to modify when the users’ needs change.

Page 7: Scope  Of  Software  Engineering

1.7/46discipline

• Discipline – training; punishment; method, system,

• Self discipline - ability to apply oneself to complete a task

or

Self discipline isthe ability to do what needs to be done,at the time it needs to be done,whether you like doing it or not.

Page 8: Scope  Of  Software  Engineering

1.8/46Overview

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm ,

• Terminology.

Page 9: Scope  Of  Software  Engineering

1.9/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 10: Scope  Of  Software  Engineering

1.10/46Historical Aspects …

• 1968 NATO Conference, Garmisch, Germany,

• Aim: to solve the “Software Crisis” ,

• Software is delivered:– Late,– Over budget,– With residual (שרידי, משקעי )

faults.

Page 11: Scope  Of  Software  Engineering

1.11/46Historical Aspects (Cont’d) …

• Few actual questions:

• What really happened on 1/1/2000 0:0?,

• Why was windows 2000 so late?(And why, on its release day, some 64,000 bugs were announced?) ,

• How did NASA lose MARS?

Page 12: Scope  Of  Software  Engineering

1.12/46Historical Aspects (Cont'd) …

• Why cannot bridge-building techniques be used to build operating systems?,

• Compare:

• Attitude to collapse,

• Accumulated experience,

• Complexity ,

• Maintenance (can you please rotate in 90°?).

Page 13: Scope  Of  Software  Engineering

1.13/46Historical Aspects - Conclusions

• Software engineering is not “engineering”,

• No silver bullet [brooks 1987],

• What silver bullets are used for?

Page 14: Scope  Of  Software  Engineering

1.14/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 15: Scope  Of  Software  Engineering

1.15/46Economic Aspects

• Coding method CMnew is 10% faster than currently used method CMold. Should it be used?,

• Common sense answer: “of course!”,

• Software engineering answer:

• Cost of introducing CMnew to the organization,

• Cost of shifting to CMnew : training, (and not working, learning curve),

• Consider the effect of CMnew on maintenance ,

• Consider the client response.

Page 16: Scope  Of  Software  Engineering

1.16/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 17: Scope  Of  Software  Engineering

1.17/46Maintenance Aspects

• Software life cycle,

• The way we produce software, including:

• The life-cycle model,

• The individuals ,

• CASE tools.

Page 18: Scope  Of  Software  Engineering

1.18/46Life-cycle Model

1. Requirements phase – דרישות ,

2. Specification ( & Planning) phase – אפיון ,

3. Design phase – תיכון ,

4. Implementation phase – יישום, מימוש ,

5. Integration phase – שילוב ,

6. Maintenance phase – תחזוקה ,

7. Retirement – פרישה .

System

Analysis,

Page 19: Scope  Of  Software  Engineering

1.19/46Relative Cost of Each Phase

• 1976–1981 data,

• Maintenance constitutes 67% of total cost:

Page 20: Scope  Of  Software  Engineering

1.20/46Relative Cost of Each Phase

דרישות%2

אפיון%5 תכן

%6

קידודובדיקות

%12

שילוב%8

אחזקה%67

2%דרישות 5%אפיון

6%תכן

Page 21: Scope  Of  Software  Engineering

1.21/46Comparative Relative Cost of Each Phase

Page 22: Scope  Of  Software  Engineering

1.22/46Good and Bad Software

• Good software is maintained — bad software is discarded ,

• Effect of CMnew on maintenance.

Page 23: Scope  Of  Software  Engineering

1.23/46Different Types of Maintenance

• Corrective maintenance [about 20%],

• Enhancement: — תחזוקת הגברה, שיפור, חיזוק

• Perfective maintenance [about 60%] ,תחזוקת השלמה —e.g.: additional functionality or decreased response time ,

• Adaptive maintenance [about 20%] תחזוקת התאמה — . (Responding to an ever-changing environment).

Page 24: Scope  Of  Software  Engineering

1.24/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 25: Scope  Of  Software  Engineering

1.25/46Specification VS. Maintenance Faults

• 60 to 70 percent of faults are specification and design faults,

• Data of Kelly, Sherif, and hops [1992]:– 1.9 faults per page of specification,– 0.9 faults per page of design,– 0.3 faults per page of code ,

Page 26: Scope  Of  Software  Engineering

1.26/46Cost to Detect and Correct a Fault

Page 27: Scope  Of  Software  Engineering

1.27/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 28: Scope  Of  Software  Engineering

1.28/46Team Programming Aspects

• SW products might be huge:– We can build products that are too large to be

written by one person in the available time,

• Teams:– Interface problems,– Meetings ,

• Communication is cheap:– International teams,– Different working hours ,– Cultural differences.

Page 29: Scope  Of  Software  Engineering

1.29/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 30: Scope  Of  Software  Engineering

1.30/46The Object-oriented Paradigm …

• The structured paradigm had great successes initially– It started to fail with larger products (> 50,000 LOC),

• Maintenance problems (today, up to 80% of effort) ,

• Reason: structured methods are – Action oriented

(finite state machines, data flow diagrams); or – Data oriented

(entity-relationship diagrams) ,– But not both.

Page 31: Scope  Of  Software  Engineering

1.31/46The Object-oriented Paradigm (Cont'd)

• Both data and actions are of equal importance,

• Object: – Software component that incorporates both data and

the actions that are performed on that data ,

• Example:– Bank account

data: account balanceactions: deposit, withdraw, determine balance.

Page 32: Scope  Of  Software  Engineering

1.32/46Structured VS. Object-oriented Paradigm

• Information hiding,

• Responsibility-driven design ,

• Impact on maintenance, development.

Page 33: Scope  Of  Software  Engineering

1.33/46Key Aspects of Object-oriented Solution

• Conceptual independence:– Encapsulation – כימוס,

• Physical independence: – Information hiding,

• Impact on development:– Physical counterpart (מקביל, דומה) ,

• Impact on maintenance:– Independence effects.

Page 34: Scope  Of  Software  Engineering

1.34/46Responsibility-driven Design

• Also called “Design by Contract”,

• Example:

• Send flowers to your aunt Tel Aviv:– Call 1-800-203040,– Where is 1-800-203040?,– Which Tel-Aviv City florist does the delivery?,– Information hiding ,

• Object-oriented paradigm:– “Send a message by a method [action] of an object“.

Page 35: Scope  Of  Software  Engineering

1.35/46Transition From Analysis to Design

• Structured paradigm:– Jolt ( טלטול) between analysis (what) and design (how) ,

• Object-oriented paradigm:– Objects appear from the very beginning.

Page 36: Scope  Of  Software  Engineering

1.36/46Analysis / Design “Hump”

• Systems analysis:– Determine what has to be done,

• Design:– Determine how to do it,

– Architectural design — determine modules ,

– Detailed design — design each module.

Page 37: Scope  Of  Software  Engineering

1.37/46Removing the “Hump”

• Object-oriented analysis:– Determine what has to be done,

– Determine the objects,

• Object-oriented design:– Determine how to do it ,

– Design the objects.

Page 38: Scope  Of  Software  Engineering

1.38/46In More Detail 

• Objects enter here:

Page 39: Scope  Of  Software  Engineering

1.39/46Warning

• Do not use the object-paradigm to enhance a product developed using the structured paradigm.Water and oil do not mix ,

• Exception: if the new part is totally disjoint– Example: adding a GUI (graphical user interface).

Page 40: Scope  Of  Software  Engineering

1.40/46

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 41: Scope  Of  Software  Engineering

1.41/46Terminology …

• Software, program, system, product, 

• Methodology – the science of methods,paradigm – model or pattern,we will use both for: ‘collection of techniques for carrying out the product life-cycle’,

• Client, developer, user ,

Cont’d

Page 42: Scope  Of  Software  Engineering

1.42/46Terminology (Cont’d) …

• Bug: – “A bug crept into the code”

Instead of

– “I made a mistake” ,

• Whose responsibility is it?

Page 43: Scope  Of  Software  Engineering

1.43/46Object-oriented Terminology …

• Data component of an object:– State variable,– Instance variable (java),– Field (C++),– Attribute (generic) ,

• Action component of an object:– Member function (C++) ,– Method (generic).

Page 44: Scope  Of  Software  Engineering

1.44/46Object-oriented Terminology (Cont’d)

• C++: A member is either:– An attribute (“field”), or ,– A method (“member function”) ,

• Java: A field is either:– An attribute (“instance variable”), or a– Method.

Page 45: Scope  Of  Software  Engineering

1.45/46Summary

• Historical aspects,

• Economic aspects,

• Maintenance aspects,

• Specification and design aspects,

• Team programming aspects,

• The object-oriented paradigm,

• Terminology.

Page 46: Scope  Of  Software  Engineering

1.46/46

Scope Of

Software Engineering

The End