Introduction: What is Software Engineering?

advertisement
ATSBA: Advanced Technologies Supporting Business Areas
Software Engineering
1 Introduction
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
1
1 Introduction - What is Software Engineering?
1 Introduction - What is Software Engineering?
– 1.1 Definitions
– 1.2 Why is it so difficult to develop software?
– 1.3 Overview Software Engineering
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
2
1.1 Definitions
Software:
– Software designates all non-physical function components of a computer. This covers
above all computer programmes as well as the data intended for the use with
computer programmes.
– Software is frequently put in contrast to hardware, which designates the physical
carrier, on which software exists.
Software can be differentiated in:
– System software, which is necessary for the tidy functioning of the computer (in
particular the operating system and additional programs such as virus protection
software), and
– Application software, which supports the user during the execution of his tasks and
supplies thereby the actual, direct use.
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
3
1.1 Definitions
Software Engineering / Software-Technique:
– The software technology (also software design, software engineering) as a
subsection of computer science concerns itself with the standardised engineered
production of software and the associated processes.
– There is a multiplicity of definitions for the term software engineering, here a quote
from Helmut Balzert, from his text book on software technology:
– Software engineering is „the goal-oriented supply and systematic use of
principles, methods and tools for the engineered production and use of extensive
software systems.“
– Software engineering covers a multiplicity of subsections, which in their whole
accompany the entire software development process, from planning up to testing
and rollout.
[Wikipedia; http://de.wikipedia.org; Stand: 19.10.04]
[Helmut Balzert; Lehrbuch der Software-Technik: Software-Entwicklung; Band 1, 2. Auflage; Spektrum Akademischer Verlag, Heidelberg 2001.]
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
4
1.2 Why is software so difficult to develop?
Important software errors:
– 1. Ariane 5, Explosion: Data conversion of a too large number, 1996
–…
– The Role of Software in Spacecraft Accidents, Nancy Leveson, http://sunnyday.mit.edu/papers.html, 2004
– German toll system unusable, 2003
– Due to a software problem euros could be taken off at all banks - with the exception of the postal bank -with
arbitrary pin codes, without debiting the savings account with the sum taken off. ATM gives any amount of Euro
for arbitrarily PINcode, 2002
– Green Party Convent fails. By rounding error and erronous use of Excel the wrong number of delegates is
computed, 2002
– Mars Climate Orbiters, Loss; Mixture of pounds and kilograms, 1999
– Pentium Prozessor, Division Algorithm; incomplete entries in a look-up-table, 1994
– Sleipner Offshore Platform. Sinking caused by the wrong use of FE-code NASTRAN, 1991
– AT&T long distance service fails for nine hours. Wrong BREAK statement in C-Code, 1990
– Airbus downing during Iran-conflict. Pattern recognition software, 1988
– .......
– See [T. Huckle; http://www5.in.tum.de/~huckle/bugse.html; dates 19.10.04/29.9.09]
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
5
1.2 Why is software so difficult to develop?
It is disputed whether the developing process of software is so well understood as to
allow an „engineered production“: Critics argue that software is nothing else than
„executable knowledge“. Knowledge, however, cannot be manufactured (like for instance
a bridge or a building), but is developed during a creative process. A direction of the
software technology (Agile software development) uses very flexible methods, which
stress the creativity of the individual developer and set aside the administrative aspects.
Critics argue that above all the violently discussed procedural models (waterfall model,
V-model etc.) and modelling languages (UML) in the software technique science hide the
provisional, supporting ad-hoc-character and slow down the development process
unnecessarily. Thus, these methods restrain, so the critics, the creativity and the
problem solving capacity of the developer.
It is disputed whether the software crisis can be solved by software technology or rather
by more robust, more structured programming languages and development tools.
[Wikipedia; http://de.wikipedia.org; Stand: 19.10.04]
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
6
1.2 Why is software so difficult to develop?
Errors in software are not obviously recognizably, whereas in technical products
they obviously are.
public class Frame1 extends JFrame {
JPanel contentPane;
JButton fahrenheitButton = new JButton();
JTextField fahrenheitTextField = new JTextField();
/**Construct the frame*/
public Frame1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
/**Component initialization*/
private void jbInit() throws Exception {
fahrenheitButton.setText("To Fahrenheit");
fahrenheitButton.setBounds(new Rectangle(36, 104,
140, 27));
fahrenheitButton.addActionListene
r(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
fahrenheitButton_actionPerformed(e);
}
});
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
7
1.2 Why is software so difficult to develop?
Reasons, why software is difficult to develop:
– Software and its functionality become more and more complex.
– The surrounding field and the software development actually become ever more
agile.
– The requirements of the users regarding software often change already during its
development.
– Software products become more and more complex with each new version.
– Big software products consists of several million programming lines.
– Software is often more easily and faster changeable than a technical product. Only
the source text has to be changed.
– Software is an immaterial product, that means it is not tangible.
–…
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
8
1.2 Why is software so difficult to develop?
Reasons, why software is difficult to develop:
– Software ages differently fast, depending on its employment. That means it has to be
renewed or exchanged after a certain time.
– The spare parts for software look differently and are differently used than in technical
products, e.g. patches.
– Software has to be often downward compatible to most diverse versions, so that it
becomes ever more complex.
– Software must run on most diverse platforms (PC, mobile phone, washing
machine…).
– It is difficult to indicate fitting measures for software, thus to measure the software, its
impact and its development.
– Software is not limited by physical laws. i.e. one can carry out arbitrary computations
and simulations, which do no correspond to reality
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
9
1.3 Overview software engineering
Requirements Phase
– Requirements Engineering
– Product requirement specifications
– Estimation of work load
Specification / Analysis Phase
– Data analysis
– Process analysis
– System analysis
– Structured Analysis
– Object-oriented Analysis (OOA)
Test, Integration and Maintenance Phase
– Code review
– Unit tests
– Integration tests
– System tests
– Load test
Software Management
– Project management
– Managing the life-cycle of software
– Life-cycle models
– Re-use and re-engineering
Design Phase
– Object-oriented design (OOD)
– UML-Modelling
Quality Management
– Software ergonomics
– Software metrics (measurement of characteristics of
software)
Implementation / Programming Phase
– Structured programming
– Object-oriented programming (OOP)
Documentation
– System documentation
– Operating instructions
– Business processes
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
10
1.3 Overview Software-Engineering
Software development: In different phases the SW is developed gradually (ideal case).
Requirements
This model is
describing the
phases in a
software
engineering
project.
Specification
Requirements
Specification
Software
Idea
Functional
Specification
Design
Documentation
Specification / Analysis Phase
Data analysis
Process analysis
System analysis
Structured Analysis
Object-oriented Analysis (OOA)
Programming
Documentation
Design: Technical Concepts
- client/server
- Distributed
- Web
- DBs
...
Rollout
Deployment
Maintenance
„Finalized Software“ „Installed Software“
Documentation
Documentation
Programming Languages:
Software deployment
Java, C, C++, C# ...
Software installation
Scripting:
...
XML, HTML ...
Testing
DB Languages:
SQL...
...
Testing
Software
Product
Software management:
A corresponding SW-project controls the individual steps of the SW development
SW development project
Software quality management:
Corresponding processes guarantee the quality of the whole SW development
Quality control of the SW development processes and the SW product
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
11
Learning Targets
To be able to …
– explain the meaning of the terms: software, system software, application
software, etc.
– name the meaning of software and the difficulties in software development.
– explain what the discipline „Software Engineering“ comprises.
© Prof. Dr. Rolf Dornberger
-
ATSBA: Advanced Technologies Supporting Business Areas
24.03.2011
12
Download