1. What is Software Engineering

advertisement
Topic 1
What is Software Engineering?
DAAD Project
“Joint Course on Software Engineering”
Humboldt University Berlin, University of Novi Sad, University of Plovdiv,
University of Skopje, University of Belgrade, University of Niš, University of Kragujevac
Version: Oct. 27, 2005 (D Sep. 22, 2003)
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
2
1
The subject of ...
translation of higher-level programming
languages to machine-level languages
compiler construction
management of complex and
structured
volumes of data
database
software engineering
?
3
DAAD project „Joint Course on Software Engineering“ ©
Areas of software engineering:
What belongs to it ?
Project
Management
User
documentation
Software
specification
Software
design
Hardware
considerations
User interface
design
Programming
Testing
Software Engineering
The World
„Programming is a comparatively small component of the software
engineering field. Some of the other parts (including for example,
software specification and design) are equally important.“
M. Pont: Software Engineering with C++ and CASE Tools, Addison-Wesley 1996
DAAD project „Joint Course on Software Engineering“ ©
4
2
Areas of software engineering:
from textbooks, research subjects, conferences:
(unordered, partly overlapping)
life cycle models
software processes
(CMM, ISO 9000)
configuration management
effort estimation
project management
quality management
cleanroom software engineering
reverse engineering
program comprehension
(program understanding)
software metrics
software architecture
software maintenance
requirements engineering
software specification
reuse
program verification
software documentation
knowledge-based SE
systematic testing
prototyping
CASE tools
programming languages for SE
object-orientation (analysis,
design, programming, test)
extreme programming
pair programming
5
DAAD project „Joint Course on Software Engineering“ ©
Software
Software Development
Development
Remains
Remains aa Mixture
Mixture of
of Methods
Methods
Software
Softwaredevelopment
developmentas
asscience
scienceand
andas
asaapractical
practical
activity
activityhave
havesomething
somethinginincommon:
common:heterogeneity.
heterogeneity.
Computer-Zeitung 25/96 (20. June 96)
DAAD project „Joint Course on Software Engineering“ ©
6
3
Software Engineering
preliminary definitions
„Software engineering ... aims at the economical
development of high-quality software“
(Pagel / Six 1994, p. 49)
„SE is an engineering discipline concerned with
the practical problems of developing large
software systems“
(Sommerville 1992, 4. ed., p. v)
DAAD project „Joint Course on Software Engineering“ ©
7
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
8
4
Questioning of young
computer scientists
working in practice
by the German Society
of Informatics in 1993
importance of subareas of
informatics (most important
areas first)
subareas of informatics
team work
project management
software engineering
leadership
databases
rhetorics
communication systems / computer nets
quality assurance
data structures and efficient algorithms
operating systems
software ergonomics
business management
algorithmic fundamentals / complexity
mathematical and logical fundamentals
distributed systems
scientific work methods
data security
information systems
concepts of programming languages
computer architecture
legal fundamentals
disposition systems
analysis and assessment of computer systems
graphics and visualization systems
modeling and simulation
formal languages and automaton
real-time systems
multimedia
informatics and society
fundamentals of electronics
machine-level programming
CIM
expert systems
fundamentals of artificial intelligence
electrical measurement
image processing
applications of artificial intelligence
pattern recognition
score
3.59
3.35
3.26
3.10
3.10
3.09
2.99
2.96
2.81
2.60
2.56
2.50
2.42
2.41
2.36
2.36
2.32
2.31
2.27
1.87
1.68
1.64
1.64
1.58
1.53
1.37
1.30
1.27
1.15
1.13
1.06
1.04
0.88
0.85
0.81
0.81
0.81
0.63
9
DAAD project „Joint Course on Software Engineering“ ©
Questioning in 1993 (detail)
subareas of informatics
team work
project management
software engineering
leadership
databases
rhetorics
communication systems / computer nets
quality assurance
data structures and efficient algorithms
operating systems
software ergonomics
business management
algorithmic fundamentals / complexity
mathematical and logical fundamentals
distributed systems
scientific work methods
data security
information systems
concepts of programming languages
computer architecture
DAAD project „Joint Course on Software Engineering“ ©
score
3.59
3.35
activities during
3.26
3.10 software development
3.10
3.09
2.99
2.96
2.81
2.60
2.56
subareas of
2.50 software engineering
2.42
2.41
2.36
2.36
2.32
2.31
2.27
1.87
10
5
Tasks of software engineers in the mirror of job offers
Project
Projectmanager
manager
As
Asaaproject
projectmanager
manageryou
youare
are
responsible
responsibleof
ofthe
therealization
realizationof
of
complex
complexapplication
applicationprojects
projectsfor
for
our
ourcustomers
customersin
inindustry
industryand
and
management.
management.
The
Themajor
majorgoal
goalisisaasatisfied
satisfied
customer
customerbased
basedon
onan
an
economically
economicallyaccomplished
accomplished
project
project......
Süddeutsche Zeitung No.
120 /page V1/1
25.5.1996
11
DAAD project „Joint Course on Software Engineering“ ©
3
Your
Yourtasks:
tasks:
Your
Yourprofile:
profile:
••analysis
analysisof
oftechnical
technicalrequirements
requirements
••design
designof
ofthe
theapplication
application
••programming
programming
••test
testand
andquality
qualityassurance
assurance
••installation
installationin
inthe
thetarget
targetenvironment
environment
••experience
experiencein
inCOBOL
COBOL
••knowledge
knowledgeof:
of:
UNIX,
UNIX,Open
OpenVMS,
VMS,OS/400
OS/400
••SQL
SQLand
andDatabase,
Database,e.g.
e.g.Oracle
Oracle
••commercial
commercialknowledge
knowledge
Computer Zeitung
16.10.97
DAAD project „Joint Course on Software Engineering“ ©
12
6
Software
Softwaredeveloper
developer
Your
Yourtasks
tasksare:
are:
••analysis
analysisof
ofrequirements
requirementsof
ofaagiven
givensystem
system
••feasibility
feasibilityanalysis
analysisand
andeffort
effortestimation
estimation
••technical
technicalspecification
specification
••extension
extensionof
ofexisting
existingsoftware
softwaremodules
modules
••regression
regressiontesting
testingand
andsoftware
softwareupdate
updateprocedures
procedures
Süddeutsche Zeitung 15.12.96
DAAD project „Joint Course on Software Engineering“ ©
13
Software
software =
programs, data, documentation
properties of software:
• no wastage during the operation of software
• aging (software is permanently updated)
Æ after 10 years of usage and update there is no more original line
(Pagel, Six p. 35)
• long-run usage
Æ in the average 10 - 15 years (Wallmüller 90, p. 3)
up to 30 years (Hausi Müller)
• easy to copy (Æ errors too)
• hard to measure (metrics: quality, quantity)
• rather complex
DAAD project „Joint Course on Software Engineering“ ©
14
7
Complexity of software
The distinguishing characteristics of industrialstrength software is that it is intensely difficult, if
not impossible, for the individual developer to
comprehend all the subtleties of its design. Stated
in blunt terms, the complexity of such systems
exceeds the human intellectual capacity.
(Booch, Object-oriented Analysis and Design, p. 4)
15
DAAD project „Joint Course on Software Engineering“ ©
Increasing complexity of software
1960
1970
1980
1990
2000
60 MOI
50 MOI
SPACE
SHUTTLE
EWSD for
BB-ISDN
40 MOI
LUNAR
MISSION
CONTROL
30 MOI
EWSD-APS
WM4.2
20 MOI
APOLLO
10 MOI
GEMINI
EWSD-APS
DBP-14
7% annual
increase
of productivity
MERCURY
MOI: millions of object-code instructions
EWSD: electronic dial system Digital
DAAD project „Joint Course on Software Engineering“ ©
16
8
But: „software solutions demand
high precision“ (Denert, p. 4)
software is …
• error prone
• behaves in another way than expected
• more expensive than planned
• finished too late
• not applicable
Æ very often: project breakup
DAAD project „Joint Course on Software Engineering“ ©
17
Examples of software problems
Denver airport: could not be inaugurated (not opened) in 1994 –
the software for the luggage transport system did not work
Siemens: account software for medicaments developed for health
insurance funds was not ready in time
(consequential costs of 1 billion DM - Berliner Zeitung 22.05.96)
Deutsche Telekom: wrong calculation of phone rates for 1.1.96
(software error: no holiday rate – damage: hundreds of millions of DM)
F18 warplane: during an exercise in 1983 with new developed plane
software – crossing the equator the plane turned to the head.
The reason was a sign error in the program (Wallmüller 1990, p. 1).
DAAD project „Joint Course on Software Engineering“ ©
18
9
Examples of software problems – contd.
First space rocket to the Venus: in 1979 did not find the target:
in a Fortran program they used a point instead of a comma.
The loss: several hundreds millions of dollar (Wallmüller 1990, p. 1).
Therac 25 - computer-controlled radiation therapy machine:
between June 1985 and January 1987 6 people were overdosed (5 of
them died) as a result of missing software safety lock that should
prevent overdose (Berry, D.M., “Myths and realities of software
development”).
DAAD project „Joint Course on Software Engineering“ ©
19
Questions: statistics concerning software development (1):
(Mynatt: Software Engineering, p. 1)
1. The typical software development project takes
a) 1 - 5 b) 6 - 11 c) 12 - 23 d) 24 - 48 month.
2. For a medium-sized software system,
a) less than 10 b) 10 - 20 c) 21 - 30 d) more than 30
lines of executable source code are typically produced per day per
person during the entire period of development of the system.
3. The approximate number of errors found in every 1000 lines of
executable source code during development of a software system is:
a) less than 30 b) 30 - 40 c) 40 - 50 d) 50 - 60
4. The approximate number of errors found in every 1000 lines of
executable source code in a delivered software system is:
a) less than 4 b) 4 - 8 c) 8 - 12 d) more than 12
5. Approximately what percentage of software systems that begin
development are finally completed?
a) 90 - 100% b) 80 - 90% c) 70 - 80% d) 60 - 70%
DAAD project „Joint Course on Software Engineering“ ©
20
10
Questions: statistics concerning software development (2):
(Mynatt: Software Engineering, p. 1)
6.
7.
8.
9.
The cost of owning and maintaining of software is typically
a) one half b) just c) twice
times as expensive as developing the software.
Most errors found by users in software are the result of
a) programmer error
b) problems in the problem statement or understanding
the problem statement
c) clerical errors
d) errors in the design
What is the amount of programming during software development ?
a) 99% b) 70% c) 50% d) 20% e) 10%
In software development today, a system would be considered large
if it contained at least
Mynatt,
a) 10.000 b) 30.000 c) 50.000 d) 100.000
1990
DAAD project „Joint Course on Software Engineering“ ©
21
Question: defect rate
Defect rate
= number of errors in 1000 lines of code
Due to the increasing complexity of software, the
defect rate developed from 1977 to 1994
in the following way:
a) increase to 10 times
b) increase to 2 times
c) unchanged
DAAD project „Joint Course on Software Engineering“ ©
22
11
Importance of software industry
2850
2900
is m
ur
to
world-wide volume in billion US$
&T
IT
3000
2500
2000
1620
1500
1000
1100
800
1320
800
500
ile y
xt tr
te dus
in
l
ica
em try
ch dus
in
r
try
ca dus
in
ne
gi ing
en ld
i
bu
&
y
ar e
ilit s
m fen
de
Source: G.Koch, European IT Conference (EITC), Brüssel, June 1994
DAAD project „Joint Course on Software Engineering“ ©
23
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
24
12
How large is software ?
classification of software according to its size:
small: up to 2000 lines of code
middle: 2000 – 100.000
large: 100 000 – 1.000.000
very large: > 1 Mio.
(A. Macro, p. 70)
average size of software
in each of the 100 largest US companies:
35 Mio. lines of code
(Hausi Müller, p. 3-12)
e.g. USA, DoD:
1,4 billion lines of code
(distributed to 1.700 data centers)
operating costs for these systems:
9 billion dollar / year
(CACM, 5, 1994, p. 26)
DAAD project „Joint Course on Software Engineering“ ©
25
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
26
13
History
software crisis:
notion since the middle of the 60th
in the middle of the 60th
software costs become larger than hardware costs (picture)
NATO conferences 1968, 69:
definition of the notion software engineering
Æ big advantages
but: also today we have a software crises
software costs (world-wide)
1985: 140 billion of dollars
1995: 435
(comparison: budget of Germany 1992: 430 billions of DM)
(Balzert, Yourdon)
27
DAAD project „Joint Course on Software Engineering“ ©
Hardware costs and software costs
100
80
Hardware
60
40
Software
20
1955 1960
DAAD project „Joint Course on Software Engineering“ ©
1969
1976
1985
28
14
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
29
Definitions of software engineering
1. „Software engineering ... aims at the economical
development of high-quality software“
(Pagel / Six 1994, page 49)
2. „SE is an engineering discipline concerned with the
practical problems of developing large software systems“
(Sommerville 92, p. v).
3. „SE 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“ (IEEE Standard Glossary of
Software Engineering Terminology, 1990).
4. „Software engineering is a defined, step-by-step process
that facilitates the specification, design, implementation,
and testing of a software solution for a set of stated
requirements in the most expeditious and cost-effective
manner possible“ (Kehoe: ISO 9000-3, 1995, S. 11).
DAAD project „Joint Course on Software Engineering“ ©
30
15
Software engineering is not a special field
of computer science
What it is not
What it really is
compiler construction
.
.
.
computer communication
n
ile
lig
tel
n
i
l
ar
ic
tif
ia
database
.
.
.
co
m
pu
te
r
artificial intelligence
co
m
database
ce
en
m
un
ic
at
io
comp
softwareengineering
tion
s tr u c
r c on
software engineering
Ludewig, SEUH 97, p. 11 f.
DAAD project „Joint Course on Software Engineering“ ©
31
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
32
16
Student software development
Read the
problem
(day 1)
Code
Debug
(day 1 ... n - 2) (day n - 1)
Document
Hand in
(day n - ε)
(day n)
„Normal“ student view of software life cycle
Modesitt, LNCS 750, p 42
33
DAAD project „Joint Course on Software Engineering“ ©
Distribution of project activities
as a function of project size
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
coding
defect removal
paperwork
10
40
20
10
24
0
51
20
25
60
12
80
64
0
32
0
16
0
80
management and
support
project size (function points)
Yourdon, 1993, p. 151
DAAD project „Joint Course on Software Engineering“ ©
34
17
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
35
Software development in practice
real customer
before programming: negotiations with customers
to clarify requirements
often changes of wishes of the customers
misunderstandings
complex task - complex program
error-prone software
high-pressure deadlines
team work
big volume of documents:
see next slide
programming only 20 % of all activities of a project
long-run usage (10 ... 25 years)
modifications of software after delivery
(new wishes, new hardware ...)
DAAD project „Joint Course on Software Engineering“ ©
36
18
Software documents
(Sommerville, Software Engineering, 5th ed., p. 17)
Activity
Requirements analysis
Requirements definition
System specification
Architectural design
Interface design
Detailed design
Coding
Unit testing
Module testing
Integration testing
System testing
Acceptance testing
Output documents
Feasibility study
Outline requirements
Requirements document
Functional specification
Acceptance test plan
Draft user manual
Architectural specification
System test plan
Interface specification
Integration test plan
Design specification
Unit test plan
Program code
Unit test report
Module test report
Integration test report
Final user manual
System test report
Final system plus documentation
DAAD project „Joint Course on Software Engineering“ ©
37
Software documents
(IEEE standards)
Software Validation and Verification Plan (SVVP)
Software Quality Assurance Plan (SQAP)
Software Configuration Management Plan (SCMP)
Software Project Management Plan (SPMP)
Software Requirements Specification (SRS) (customer
oriented and developer oriented)
Software Design Document (SDD) (architecture and
detailed design)
Source code
Software Test Documentation (STD)
User's manual
DAAD project „Joint Course on Software Engineering“ ©
38
19
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
39
Goals of this course
(...and what we do not offer)
1. Introduction to SE
2. Overview of SE
notions, methods, tools
3. Interrelations between subareas (help for orientation)
4. Illustrating examples: continuous case study
5. To go into depth: assignments
6. Awareness of problems of SE
7. Current problems of SE
(metrics, reverse engineering, CMM, cleanroom SE,
extreme programming ...)
8. Experience with SW-tools
We do not offer: large project, customer,
negotiation, change of wishes, high-pressure deadlines ...
DAAD project „Joint Course on Software Engineering“ ©
40
20
Software engineering in special courses
Part I: Introduction to SE
Part II: Requirements engineering
11. Basic concepts of state-oriented
view
12. Basic concepts of scenario-based
view
13. Object-oriented analysis
14. Formal specification and program
verification
Part III: Design
17. Object-oriented design
Part IV: Implementation and testing
19. Systematic testing
Part VI: Advanced problems
21. Software metrics
23. Reverse engineering
24. Quality of software development
process and its
standardization
24. Software ergonomics
25. Project management
Requirements Engineering (SEI,
Pittsburgh, USA)
Petri nets (Reisig, HU)
Object oriented SW development
(with UML) (Fischer, HU; DMI - NS)
Formal methods of SW
development (SEI, Pittsburgh,
USA)
Software architecture (SEI)
Software test methods (Spillner,
Bremen)
CAME-Tools (Dumke, Magdeburg)
Software reengineering (Koschke,
Stuttgart)
PSP (SEI)
CMM (SEI)
Software ergonomics (Wandtke,
Inst. of psychology, HU)
Project Management (SEI,
Pittsburgh, USA; DMI, Novi Sad,
SCG)
DAAD project „Joint Course on Software Engineering“ ©
41
1. What is Software Engineering ?
a) Areas of software engineering (i.e., what belongs to it)
b) The importance of software engineering
in practice - problems of software development
c) On the size of software
d) History of software engineering
e) Several definitions of software engineering
f)
Problems of introducing software engineering in education
g) Differences between software development
in educational environment and in practice
h) Goals of this course
i)
Literature, articles, papers, ...
DAAD project „Joint Course on Software Engineering“ ©
42
21
Literature (1)
Textbooks:
• I. Sommerville: Software Engineering (742 pages),
6. ed. Addison-Wesley, 2001
• H. Balzert: Lehrbuch der Software-Technik,
Spektrum-Verlag, Vol. 1: 1996, Vol. 2: 1998 (769 pages),
Vol. 1 (2nd ed.): 2001 (1136 pages)
• B.-U. Pagel, H.-W. Six: Software Engineering.
Addison-Wesley (895 pages), 1994 (in German)
• E. Braude: Software Engineering, An Object-Oriented Perspective,
Wiley & Sons, 2001
• R. Pressman: Software Engineering, A Practitioner‘s Approach,
European Adaptation (840 pages), McGraw-Hill, 5th ed., 2000
• J. Marciniak: Encyclopedia of Software Engineering,
Vol. 1, 2 (1453 pages), Wiley & Sons, 1994
• IEEE Standards Collection, Software Engineering, 1994 Edition
DAAD project „Joint Course on Software Engineering“ ©
43
Parts of this presentation use
material from the textbook
Helmut Balzert, Software Technik
(Vol. 1), 2nd edition,
Spektrum Akademischer Verlag,
Heidelberg 2001.
In particular, topics
4 to 13 and 15 to 18 are
concerned.
DAAD project „Joint Course on Software Engineering“ ©
44
22
Literature (2)
Journals:
•
•
•
•
IEEE Transactions on Software Engineering
IEEE Software
ACM Software Engineering Notes
ACM Transactions on Software Engineering and Methodology
Conferences:
•
•
•
•
International Conference on Software Engineering
Conference on Software Engineering Education
Software Metrics Symposium
and many others
45
DAAD project „Joint Course on Software Engineering“ ©
most important
international
conference
DAAD project „Joint Course on Software Engineering“ ©
46
23
DAAD project „Joint Course on Software Engineering“ ©
47
DAAD project „Joint Course on Software Engineering“ ©
48
24
DAAD project „Joint Course on Software Engineering“ ©
49
DAAD project „Joint Course on Software Engineering“ ©
50
25
DAAD project „Joint Course on Software Engineering“ ©
51
SEI: Software Engineering Institute
(Homepage: http://www.sei.cmu.edu)
About the SEI - Welcome
The Software Engineering Institute (SEI) is a federally funded research
and development center sponsored by the U.S. Department of Defense
through the Office of the Under Secretary of Defense for Acquisition,
Technology, and Logistics [OUSD (AT&L)]. The SEI contract was
competitively awarded to Carnegie Mellon University in December 1984.
The SEI staff has extensive technical and managerial experience from
government, industry, and academia.
Mission
The U.S. Department of Defense established the Software Engineering
Institute to advance the practice of software engineering because quality
software that is produced on schedule and within budget is a critical
component of U.S. defense systems.
[...]
DAAD project „Joint Course on Software Engineering“ ©
52
26
SEI: Software Engineering Institute
Detail: Management Practices
DAAD project „Joint Course on Software Engineering“ ©
53
ESI: European Software Institute
(Homepage: http://www.esi.es)
DAAD project „Joint Course on Software Engineering“ ©
54
27
Joint MSc studies in SE - perun.im.ns.ac.yu/msc-se/
DAAD project „Joint Course on Software Engineering“ ©
55
28
Download