Software Engineering

advertisement
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
Download