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