topic 1 what is software engineering? · 2011. 3. 27. · ewsd: electronic dial system digital 1960...
TRANSCRIPT
1
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)
DAAD Project“Joint Course on Software Engineering”
Topic 1What is Software Engineering?
DAAD project „Joint Course on Software Engineering“ © 2
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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, ...
2
DAAD project „Joint Course on Software Engineering“ © 3
The subject of ...
compiler construction
database
software engineering
translation of higher-level programminglanguages to machine-level languages
management of complex and structured
volumes of data
?
DAAD project „Joint Course on Software Engineering“ © 4
Areas of software engineering:What belongs to it ?
„Programming is a comparatively small component of the softwareengineering field. Some of the other parts (including for example, software specification and design) are equally important.“
Project Management
Softwarespecification
User documentation
User interfacedesign
Softwaredesign
Programming Testing
Hardwareconsiderations
Software EngineeringThe World
M. Pont: Software Engineering with C++ and CASE Tools, Addison-Wesley 1996
3
DAAD project „Joint Course on Software Engineering“ © 5
Areas of software engineering:from textbooks, research subjects, conferences:
(unordered, partly overlapping)
life cycle modelssoftware processes (CMM, ISO 9000)configuration managementeffort estimationproject managementquality managementcleanroom software engineeringreverse engineeringprogram comprehension(program understanding)software metricssoftware architecturesoftware maintenance
requirements engineeringsoftware specificationreuseprogram verificationsoftware documentationknowledge-based SEsystematic testingprototypingCASE toolsprogramming languages for SE object-orientation (analysis, design, programming, test)extreme programmingpair programming
DAAD project „Joint Course on Software Engineering“ © 6
Computer-Zeitung 25/96 (20. June 96)
Software DevelopmentRemains a Mixture of MethodsSoftware development as science and as a practical activity have something in common: heterogeneity.
Software DevelopmentRemains a Mixture of MethodsSoftware development as science and as a practical activity have something in common: heterogeneity.
4
DAAD project „Joint Course on Software Engineering“ © 7
Software Engineeringpreliminary 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“ © 8
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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, ...
5
DAAD project „Joint Course on Software Engineering“ © 9
Questioning of young computer scientists working in practiceby the German Society of Informatics in 1993
importance of subareas of informatics (most important areas first)
3.593.353.263.103.103.092.99 2.962.812.602.562.502.422.412.362.362.322.312.271.871.681.641.641.581.531.371.301.271.151.131.061.040.880.850.810.810.810.63
team workproject managementsoftware engineeringleadershipdatabasesrhetoricscommunication systems / computer netsquality assurancedata structures and efficient algorithmsoperating systemssoftware ergonomicsbusiness management algorithmic fundamentals / complexitymathematical and logical fundamentalsdistributed systemsscientific work methodsdata securityinformation systemsconcepts of programming languagescomputer architecturelegal fundamentalsdisposition systemsanalysis and assessment of computer systemsgraphics and visualization systemsmodeling and simulationformal languages and automatonreal-time systemsmultimediainformatics and societyfundamentals of electronicsmachine-level programmingCIMexpert systemsfundamentals of artificial intelligenceelectrical measurementimage processingapplications of artificial intelligencepattern recognition
scoresubareas of informatics
DAAD project „Joint Course on Software Engineering“ © 10
Questioning in 1993 (detail)
3.593.353.263.103.103.092.99 2.962.812.602.562.502.422.412.362.362.322.312.271.87
team workproject managementsoftware engineeringleadershipdatabasesrhetoricscommunication systems / computer netsquality assurancedata structures and efficient algorithmsoperating systemssoftware ergonomicsbusiness management algorithmic fundamentals / complexitymathematical and logical fundamentalsdistributed systemsscientific work methodsdata securityinformation systemsconcepts of programming languagescomputer architecture
scoresubareas of informatics
activities duringsoftware development
subareas of software engineering
6
DAAD project „Joint Course on Software Engineering“ © 11
Süddeutsche Zeitung No. 120 /page V1/1
25.5.1996
Tasks of software engineers in the mirror of job offers
Project manager
As a project manager you are responsible of the realization of complex application projects for our customers in industry and management.
The major goal is a satisfied customer based on an economically accomplished project ...
Project manager
As a project manager you are responsible of the realization of complex application projects for our customers in industry and management.
The major goal is a satisfied customer based on an economically accomplished project ...
DAAD project „Joint Course on Software Engineering“ © 12
3
Computer Zeitung 16.10.97
Your tasks:
• analysis of technical requirements• design of the application• programming• test and quality assurance• installation in the target environment
Your tasks:
• analysis of technical requirements• design of the application• programming• test and quality assurance• installation in the target environment
Your profile:
• experience in COBOL• knowledge of:
UNIX, Open VMS, OS/400• SQL and Database, e.g. Oracle• commercial knowledge
Your profile:
• experience in COBOL• knowledge of:
UNIX, Open VMS, OS/400• SQL and Database, e.g. Oracle• commercial knowledge
7
DAAD project „Joint Course on Software Engineering“ © 13Süddeutsche Zeitung 15.12.96
Software developerYour tasks are:• analysis of requirements of a given system• feasibility analysis and effort estimation• technical specification• extension of existing software modules• regression testing and software update procedures
Software developerYour tasks are:• analysis of requirements of a given system• feasibility analysis and effort estimation• technical specification• extension of existing software modules• regression testing and software update procedures
DAAD project „Joint Course on Software Engineering“ © 14
Software
software =
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 usagein 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
programs, data, documentation
8
DAAD project „Joint Course on Software Engineering“ © 15
Complexity of software
The distinguishing characteristics of industrial-strength 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)
DAAD project „Joint Course on Software Engineering“ © 16
Increasing complexity of software
MOI: millions of object-code instructionsEWSD: electronic dial system Digital
1960 1970 1980 1990 200060 MOI
50 MOI
40 MOI
30 MOI
20 MOI
10 MOI
EWSD forBB-ISDN
SPACESHUTTLE
APOLLOEWSD-APSWM4.2
LUNARMISSIONCONTROL
GEMINI
MERCURY
EWSD-APSDBP-14
7% annual increaseof productivity
9
DAAD project „Joint Course on Software Engineering“ © 17
But: „software solutions demandhigh precision“ (Denert, p. 4)
software is …
• error prone• behaves in another way than expected
• finished too late• more expensive than planned
• not applicable
very often: project breakup
DAAD project „Joint Course on Software Engineering“ © 18
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).
10
DAAD project „Joint Course on Software Engineering“ © 19
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“ © 20
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 30lines 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%
11
DAAD project „Joint Course on Software Engineering“ © 21
Questions: statistics concerning software development (2): (Mynatt: Software Engineering, p. 1)
6. The cost of owning and maintaining of software is typically a) one half b) just c) twice times as expensive as developing the software.
7. Most errors found by users in software are the result ofa) programmer errorb) problems in the problem statement or understanding
the problem statement c) clerical errorsd) errors in the design
8. What is the amount of programming during software development ? a) 99% b) 70% c) 50% d) 20% e) 10%
9. In software development today, a system would be considered large if it contained at least a) 10.000 b) 30.000 c) 50.000 d) 100.000 Mynatt,
1990
DAAD project „Joint Course on Software Engineering“ © 22
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 timesb) increase to 2 timesc) unchanged
12
DAAD project „Joint Course on Software Engineering“ © 23
Importance of software industry
3000
2500
2000
1500
1000
500
world-wide volume in billion US$
800 8001100
13201620
2850 2900
military &
defense
engine
building
carindustry
chemical
industry
textile
industry
IT&T
Source: G.Koch, European IT Conference (EITC), Brüssel, June 1994
tourism
DAAD project „Joint Course on Software Engineering“ © 24
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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, ...
13
DAAD project „Joint Course on Software Engineering“ © 25
How large is software ?classification of software according to its size:small: up to 2000 lines of codemiddle: 2000 – 100.000large: 100 000 – 1.000.000very 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“ © 26
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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, ...
14
DAAD project „Joint Course on Software Engineering“ © 27
Historysoftware crisis:notion since the middle of the 60th in the middle of the 60thsoftware costs become larger than hardware costs (picture)
NATO conferences 1968, 69:definition of the notion software engineering
big advantagesbut: also today we have a software crisessoftware costs (world-wide)1985: 140 billion of dollars1995: 435(comparison: budget of Germany 1992: 430 billions of DM)(Balzert, Yourdon)
DAAD project „Joint Course on Software Engineering“ © 28
Hardware costs and software costs100
80
60
40
20
1955 1960 1969 1976 1985
Hardware
Software
15
DAAD project „Joint Course on Software Engineering“ © 29
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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“ © 30
Definitions of software engineering1. „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).
16
DAAD project „Joint Course on Software Engineering“ © 31
Software engineering is not a special field of computer science
What it is not
compiler construction
computer communication
database
artificial intelligence
.
.
.
software engineering
Ludewig, SEUH 97, p. 11 f.
software-engineering
compiler construction
computer
communica
tion
data
base
artif
icia
l int
ellig
ence
..
.
What it really is
DAAD project „Joint Course on Software Engineering“ © 32
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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, ...
17
DAAD project „Joint Course on Software Engineering“ © 33
Student software development
„Normal“ student view of software life cycle
Modesitt, LNCS 750, p 42
Read theproblem
(day 1)
Code
(day 1 ... n - 2)
Debug
(day n - 1)
Document
(day n - ε)
Hand in
(day n)
DAAD project „Joint Course on Software Engineering“ © 34
Distribution of project activities as a function of project size
0%10%20%30%40%50%60%70%80%90%
100%
1024
051
2025
6012
80 640
320
160 80 40 20 10
project size (function points)
coding
defect removal
paperwork
management andsupport
Yourdon, 1993, p. 151
18
DAAD project „Joint Course on Software Engineering“ © 35
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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“ © 36
Software development in practicereal customerbefore programming: negotiations with customers to clarify requirements often changes of wishes of the customers misunderstandingscomplex task - complex program error-prone software high-pressure deadlinesteam workbig volume of documents:see next slideprogramming only 20 % of all activities of a project long-run usage (10 ... 25 years) modifications of software after delivery (new wishes, new hardware ...)
19
DAAD project „Joint Course on Software Engineering“ © 37
Software documents(Sommerville, Software Engineering, 5th ed., p. 17)
Final system plus documentationAcceptance testingSystem test reportSystem testing
Integration test reportFinal user manual
Integration testingModule test reportModule testingUnit test reportUnit testingProgram codeCoding
Design specificationUnit test plan
Detailed design
Interface specificationIntegration test plan
Interface design
Architectural specificationSystem test plan
Architectural design
Functional specificationAcceptance test planDraft user manual
System specificationRequirements documentRequirements definition
Feasibility studyOutline requirements
Requirements analysisOutput documentsActivity
DAAD project „Joint Course on Software Engineering“ © 38
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
20
DAAD project „Joint Course on Software Engineering“ © 39
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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“ © 40
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 study5. To go into depth: assignments6. Awareness of problems of SE7. 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 ...
21
DAAD project „Joint Course on Software Engineering“ © 41
Software engineering in special coursesPart I: Introduction to SEPart II: Requirements engineering11. Basic concepts of state-oriented
view12. Basic concepts of scenario-based
view13. Object-oriented analysis14. Formal specification and program
verificationPart III: Design17. Object-oriented designPart IV: Implementation and testing19. Systematic testingPart VI: Advanced problems21. Software metrics23. Reverse engineering24. Quality of software development
process and its standardization
24. Software ergonomics25. Project management
Requirements Engineering (SEI, Pittsburgh, USA)Petri nets (Reisig, HU)
Formal methods of SWdevelopment (SEI, Pittsburgh, USA)
Object oriented SW development(with UML) (Fischer, HU; DMI - NS)
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“ © 42
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 softwared) History of software engineeringe) Several definitions of software engineeringf) 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, ...
22
DAAD project „Joint Course on Software Engineering“ © 43
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“ © 44
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.
23
DAAD project „Joint Course on Software Engineering“ © 45
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
DAAD project „Joint Course on Software Engineering“ © 46
most importantinternational conference
24
DAAD project „Joint Course on Software Engineering“ © 47
DAAD project „Joint Course on Software Engineering“ © 48
25
DAAD project „Joint Course on Software Engineering“ © 49
DAAD project „Joint Course on Software Engineering“ © 50
26
DAAD project „Joint Course on Software Engineering“ © 51
DAAD project „Joint Course on Software Engineering“ © 52
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 Defensethrough 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.[...]
27
DAAD project „Joint Course on Software Engineering“ © 53
SEI: Software Engineering InstituteDetail: Management Practices
DAAD project „Joint Course on Software Engineering“ © 54
ESI: European Software Institute(Homepage: http://www.esi.es)
28
DAAD project „Joint Course on Software Engineering“ © 55
Joint MSc studies in SE - perun.im.ns.ac.yu/msc-se/