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