Software Engineering (SE) 1) Einführung Prof. Dr. Anja Metzner Hochschule Augsburg, Fakultät für Informatik Kontakt: anja.metzner@hs-augsburg.de Studiengang WiBac 4 (Stand: 15.03.2014), Hochschule Augsburg, 2014
Literatur Begleitend zum Unterricht Ian Sommerville: Software Engineering, 6. Auflage, Pearson Studium, Addison- Wesley, 2001 Bernd Oestereich: Die UML-Kurzreferenz für die Praxis, Oldenbourg, 2001 Literatur Roger S. Pressman: Software Engineering, A Practitioner s Approach, 4. Auflage, The McCraw-Hill Companies Inc., 1997 Helmut Balzert: Lehrbuch der Software-Technik (Band 1): Software-Entwicklung, Spektrum Akademischer Verlag, 2000 Helmut Balzert: Lehrbuch der Software-Technik (Band 2): Software-Management, Software-Qualitätssicherung, Unternehmensmodellierung, Spektrum Akademischer Verlag (1998) Christine Rupp et al.: Requirements-Engineering und Management, 3.Auflage, Hanser, 2004 Jeckle, Rupp, Hahn, Zengler, Queins: UML 2 glasklar, 1.Auflage, Hanser, 2003 Rumbaugh/Jacobson/Booch: The Unified Modeling Language Reference Manual, Auflage: Bk&CD-Rom, Addison-Wesley Professional, 1998 Peter Liggesmeyer: Software-Qualität: Testen, Analysieren und Verifizieren von Software, Spektrum Akademischer Verlag, 2002 2
Literatur 3
Gliederung Einführung 1. Überblick und Terminologie 2. Geschichtlicher Überblick und Software Krise 3. Modellbildung 4. Software Ingenieur 5. Ziele der Vorlesung 4
1. Überblick und Terminologie Aufgabe 1 Ziel ist es einen Turm zu erstellen. Verwendet werden dürfen alle Materialien, die Ihnen derzeit zur Verfügung stehen. Insbesondere Papier, Stifte, Schere, Tesafilm und was Sie sonst so dabei haben. Auftraggeber ist Ihre Professorin. Für diese Aufgabe haben Sie ab jetzt 15 Minuten Zeit. Wichtig: Wer die Lösung der Aufgabe schon kennt, der meldet sich bitte und setzt aus, ohne den anderen Kommilitonen die Lösung zu verraten! 5
1. Überblick und Terminologie 6
1. Überblick und Terminologie Was ist Software Engineering? 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 Gegenstand des Software Engineering ist die ingenieurmäßige Entwicklung komplexer Softwaresysteme hoherqualität unter Berücksichtigung der einzusetzenden Arbeits- und Zeitressourcen 7
1. Überblick und Terminologie Der Software Lebenszyklus Planungsphase Definitionsphase Problemdefinition Anforderungen Spezifikation zeitlicher Ablauf Designphase Implementationsphase Abnahme- und Einführungsphase Entwurf (Modell) System Design SW Entwicklung Verifkation und Testen Wartungsphase 8
1. Überblick und Terminologie Software (SW) computer programs, procedures, rules, and possibly associated documentation and data pertaining to the operation of a computer system IEEE Standard Glossary of Software Engineering Softwaresystem: Ein System dessen Subsysteme und Komponenten aus Software bestehen Software-Produkt: Ein Produkt ist ein in sich abgeschlossenes, i. A. für einen Auftraggeber bestimmtes Ergebnis eines erfolgreich durch-geführten Projekts (oder Herstellungsprozesses). SW-Produkt: Produkt, das aus Software besteht Main() { } Microsoft Office 9
1. Überblick und Terminologie... Gebietseinordnung Elektrotechnik Software Engineering Maschinenbau... Physik Informatik Psychologie Betriebswirtschaft... Mathematik Ingenieurwissenschaften Grundlagenwissenschaften Hilfswissenschaften M. Broy, D. Rombach: Software Engineering. Wurzeln, Stand und Perspectiven, in: Informatik Spektrum 25:6, pp. 438-451, 2002 10
1. Überblick und Terminologie SW Eigenschaften Welche Eigenschaften erschweren die Erstellung von SW? 11
1. Überblick u. Terminologie Schwierigkeitenbei der SW Entwicklung gibt es viele; Diese sind unter anderem: Kommunikationsprobleme mit Usern Arbeitsabläufe werden durch SW oft verändert SW Varianten SW Einsatz in verschiedenen Umgebungen Abhilfe: Standards, Methoden und Werkzeuge Beispiel: Beispiel: Beispiel: 12
1. Überblick u. Terminologie CASE Tools CASE: (engl.) Computer Aided SW Engineering Tools: Einsatz von Werkzeugen Beispiele Visual Paradigm (Visual Paradigm International) Rational Rose (Rational) Enterprise Architekt (Sparx)... Inhalte: im Mittelpunkt steht die Modellierung UML (Unified Modeling Language) Transformation in verschiedene Programmiersprachen Datenstrukturen Reverse Engineering Generierung von Prototypen 13
2. Geschichtlicher Überblick und SW Krise agile Modelle V-Modell Wasserfallmodell, Spiralmodell 14
2. SW-Krise Phänomen: tratt erstmals Mitte der 60er auf Erstmalig: Kosten für SW > Kosten der HW Folge: erste große SW-Projekte scheiterten Grund: die bisher genutzten Techniken konnte nicht mit dem Umfang und der Komplexität der SW mithalten Auf einer NATO Tagung (1968) wurde das Phänomen diskutiert und als Reaktion der Begriff des Software Engineering eingeführt 15
2. SW-Krise Standish Group CHAOS Studie über 40.000 IT-Projekte, 1994-2000 Kostenüberschreitungen bleiben die Regel http://www.standishgroup.com 16
2. SW-Krise Schlussfolgerungen aus der Software-Krise Früher war SW-Entwicklung ähnlich wie der Bau von Häusern OHNE Architekten, Pläne und Maschinen,. SW-Entwicklung ist keine (nicht nur) kreative Kunst SW-Entwicklung ist hauptsächlich eine ingenieurmäßige Wissenschaft mit wohldefinierter Vorgehensweise => Aus Fehlern anderer Lernen! 17
3. Modellbildung Girl and globe Quibeldey-Cirkel, Objekt-Paradigma, 1994, S. 15 18
3. Modellbildung Poppers 3 Welten Sir Karl Raimund Popper (*1902; 1994) war ein österreichisch-britischer Philosoph, der mit seinen Arbeiten u.a. zur Erkenntnistheorie beitrug 19
3. Modellbildung Bedeutung von Modellen für SE Terminologische Unterscheidung zwischen Realität und Modellen ist wichtig Reales Objekt und Modell-Objekt (z.b. repräsentiert durch OO Klasse) wird unterschieden Modelle sind nötig damit wir Menschen komplexe Abläufe verstehen Vereinfachung, Abstraktion Je ähnlicher ein Modell einem realem Objekt wird, desto besser ist das Modell Abwägungen zwischen Kosten/Zeit und Nutzen sind notwendig 20
3. Modellbildung Überblick UML (Unified Modeling Language) Diagrammarten UML-Diagramme Strukturdiagramme Verhaltensdiagramme Klassendiagramme Objektdiagramme Komponenten -diagramme Use Casediagramme Aktivitätsdiagramme Zustandsdiagramme Kompositionsstrukturdiagramme Paketdiagramme Verteilungsdiagramme Interaktionsdiagramme Sequenzdiagramme Interaktionsübersicht Kommunikationsdiagramme Zeitdiagramme 21
4. Der Software Engineering Spezialist Bezeichnung für einen Menschen der systematisch SW entwirft und implementiert Aufgaben und Kenntnisse des SW-Ingenieurs: SW-Produkt: Anwendungsgebiet Bedienung u Ergonomie (Zukunfts-) Pläne Ressourcen: Team HW/SW Plattformen Hilfsmittel (Tools) SW-Prozess: Prozessablauf Methoden SW-Entwicklung Wiederverwendung Projekt: Projektformen Projektmanagement Schätzverfahren 22
5. Ziele der Vorlesung Vorschau Vorlesung Kapitel 2: Phasenübergreifendes Kapitel 3: Planungsphase Kapitel 4: Definitionsphase Kapitel 5: Designphase Kapitel 6: Implementierungsphase Kapitel 7: Abnahme- und Einführungsphase Kapitel 8: Wartungs- und Pflegephase SW Lebenszyklus 23
5. Ziele der Vorlesung Was ist Software Engineering und warum ist die Erstellung von qualitativ hochwertiger Software so schwer? Ingenieurstätigkeit zur Softwareerstellung SW ist immateriell und die Modellbildung schwierig Verstehen und beherrschen der einzelnen Phasen bei der Entstehung von Software Phasen: Problemanalyse, Anforderungsdefinition, System- und Softwareentwurf, Implementierung, Integration und Systemtests, Betrieb und Wartung Studieren einer breiten Auswahl wichtiger und nützlicher Verfahren die dazu beitragen Software mit Qualität zu produzieren Beispiele: Vorgehensmodelle, Requirement Engineering, UML, SW-Architekturen, Testverfahren, Managementmethoden, Wartung und Weiterentwicklungstechniken... 24