ATSBA: Advanced Technologies Supporting Business Areas Software Engineering 1 Introduction 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 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. 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.] 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] 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] 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); } }); 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. 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 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) Design Phase Object-oriented design (OOD) UML-Modelling Implementation / Programming Phase Structured programming Object-oriented programming (OOP) 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 Quality Management Software ergonomics Software metrics (measurement of characteristics of software) Documentation System documentation Operating instructions Business processes 10
1.3 Overview Software-Engineering This model is describing the phases in a software engineering project. Software development: In different phases the SW is developed gradually (ideal case). Requirements Specification Design Programming Software Idea Requirements Specification Functional Specification Specification / Analysis Phase Data analysis Process analysis System analysis Structured Analysis Object-oriented Analysis (OOA) Design: Technical Concepts - client/server - Distributed -Web -DBs... Documentation Documentation Rollout Deployment Finalized Software Documentation Programming Languages: Java, C, C++, C#... Software deployment Scripting: Software installation XML, HTML...... DB Languages: Testing SQL...... Testing Maintenance Installed Software Documentation 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 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. 12