Softwaretechnik (Medieninformatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 Überblick UML-Diagramme 6 Objektorientiertes Design 7 Test 8 Dokumentation und Wartung 9 Projektmanagement und -organisation Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 11 Softwaretechnik (Medieninformatik) Überblick: Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 12
Was ist Softwaretechnik? Bisher behandelten wir die sog. Kleinen Die Softwaretechnik, auch Software Engineering genannt, befasst sich mit der Großen Was sind die Unterschiede? Codelänge Zweck Anzahl Entwickler Anwender Kosten Lebenserwartung Zuverlässigkeit/Qualität Kleinen 50 - einige Tausend Zeilen Lösung eines begrenzten Problems 1 bis wenige oft der Entwickler unbedeutend meist kurz mäßig wichtig, leicht erreichbar 10 000 Zeilen aufwärts Komplexes Anwendungssystem 5 bis 100 oder mehr meist EDV-Unerfahrene sehr hoch 10-20 Jahre Großen oft überlebenswichtig (für Anwender und Entwickler), schwer erreichbar Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 13 Definition Softwaretechnik Softwaretechnik ist die ingenieurmäßige Entwicklung von Softwaresystemen mit entsprechenden Methoden und Werkzeugen Definition in Pomberger/Blaschek: Softwaretechnik... behandelt die Herstellung großer Programmsysteme erforscht die dazu erforderlichen wissenschaftlichen Methoden entwickelt Werkzeuge zur Unterstützung der Herstellung, Dokumentation und Wartung großer Programmsysteme Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 14
Definition in Pomberger/Blaschek (fortgesetzt) Softwareentwicklung ist eine anspruchsvolle Tätigkeit. Der gesunde Programmiererverstand reicht nicht aus Notwendig sind Beherrschung technischer Fähigkeiten und methodisches Vorgehen Zusammenfassende Definition: Software Engineering ist die praktische Anwendung wissenschaftlicher Erkenntnisse für die wirtschaftliche Herstellung und den wirtschaftlichen Einsatz qualitativ hochwertiger Software Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 15 Vergleich mit Architekt und Bauingenieur oder Maschinenbauer Pläne, Konstruktionszeichnungen, Bau bzw. Fertigung nur nach genau spezifizierenden Plänen Dadurch sind ganz unterschiedliche Entwicklungstechniken bei der Kleinen oder Großen notwendig... Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 16
Programmieren im Kleinen vs. im Großen Entwicklungstechniken Vorplanung Koordination und Kommunikation Dokumentation Benutzeroberfläche Kleinen oft überflüssig, Entwicklung am Bildschirm (trial and error) unnötig wenig reicht einfache Oberfläche für EDV-Profi Großen wesentlicher Teil der Entwicklungsarbeit mit wachsender Teamgrößen zunehmend schwieriger. Kommunikation mit Auftraggeber ausführlich, auf verschiedenen Ebenen (technisches Handbuch, Benutzerhandbuch, etc.) bedienungssicher und verständlich für EDV-Laien Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 17 Programmieren im Kleinen vs. im Großen Entwicklungstechniken (fortgesetzt) Test Wartung Portabilität Kleinen meist einfach durch Hinsehen kaum nötig, einfach meist Nutzung auf nur einem Rechner Gro-ßen verschiedene Verfahren (Codeinspektion, Läufe mit Testdaten), Testbarkeit muss schon bei Implementierung berücksichtigt werden wegen großer Lebensdauer sehr wichtig, wegen umfangreicher Programme sehr schwierig wichtig bei verschiedenen Rechnerplattformen. Entwicklungs- und Zielrechner können unterschiedlich sein. Hardware kann veralten Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 18
Softwaretechnik (Medieninformatik) Überblick: Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 19 Wie bei den anderen Ingenieurs-Disziplinen wird auch die Softwareentwicklung in verschiedenen Phasen durchgeführt. Altes heute überholtes Wasserfall-Modell: Voruntersuchung Analyse Design Implement., Test Abnahme & Einf. Betrieb & Wartung Am Ende der 3 ersten Phasen stehen entsprechende Validierungen bevor es weiter geht Die 4. und 5. Phase schließen mit Komponenten-, Integrationsund Systemtests Während des Betriebs unterliegt das System einer ständigen Re- Validierung Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 20
Wirtschaftliche Aspekte Die letzte Phase gehört nicht mehr zur eigentlichen Software- Entwicklung. Der Aufwand für Wartung und Pflege übertrifft jedoch meistens den für die eigentliche Entwicklung erheblich. Hierbei bedeutet Wartung die Beseitigung von Fehlern, Pflege die Hinzufügung von Erweiterungen oder Änderungen. Eisbergeffekt Analyse Design Implementierung Test und Einführung Sytementwicklung Wartung und Pflege Systemnutzung Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 21 Wirtschaftliche Aspekte (fortgesetzt) Fehlerentdeckung und behebung Relativer Aufwand zur Behebung des Fehlers 1000 100 10 1 Phase der Fehlerentdeckung Analyse Design Codierung Integration Einführung Wartung 64% aller Fehler werden in den Analyse- und Designphasen gemacht, der Rest bei der Implementierung (Codierung). Dennoch hat immer noch die Codierung eine zu hohe Aufmerksamkeit bei Softwareentwicklern. Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 22
Software-Lebenszyklus Das Ganze nennt man den Software-Lebenszyklus (software life cycle) Hinzu kommen noch Managementtechniken (Personalführung, Terminplanung, Kostenkontrolle) Für jede dieser Phasen gibt es bestimmte Methoden, die zur Erreichung der Phasenziele eingesetzt werden können Einige der Methoden haben sich mittlerweile als de-facto Standards etabliert und durchgesetzt. Die gängigsten sollen in dieser Vorlesung vorgestellt werden Für diese gängigsten Methoden gibt es mittlerweile Werkzeugunterstützung Computergestützte Systeme, um diese Methoden anzuwenden, die Ergebnisse darzustellen und zu dokumentieren Integrierte Software-Engineering Werkzeuge reichen die Ergebnisse einer Phase an die nächste weiter und erlauben somit ein einheitliches und ganzheitliches Vorgehen : CASE-Tools Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 23 Softwaretechnik (Medieninformatik) Überblick: Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 24
Ende 60er Bedarf für Softwaretechnik neben der reinen Programmierung erstmals voll erkannt Vorher sind zahlreiche große Programmentwicklungen (möglich durch verbesserte Hardwareeigenschaften) gescheitert Arbeiten von Dijkstra 1968 (u.a. gegen Verwendung von GOTO) und Royce 1970 (Software-Lebenszyklus), Top-Down-Entwurf, graphische Veranschaulichungen (Nassi- Shneiderman Diagramme) Mitte 70er Top-Down-Entwurf für große Programme nicht ausreichend, zusätzlich Modularisierung erforderlich Entwicklung der Begriffe Abstrakter Datentyp, Datenkapselung und Information Hiding Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 25 Ende 70er Bedarf für präzise Definition der Anforderungen an ein Softwaresystem: Structured Analysis Design Technique (SADT) von Ross/Schoman, graphische Darstellung Structured Analysis (SA) von De Marco/Constantine: Datenflussdiagramme Entity Relationship Model (ERM) von Chen Structured Design (SD) von Yourdon/Constantine Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 26
80er Jahre Vom Compiler zur Entwicklungsumgebung (Editor, Compiler, Linker, symbolischer Debugger, Source Code Control Systems) Tools zur Unterstützung mehrerer Phasen des Software-Lebenszyklus, auf PCs und Workstations Weiterentwicklung der Modularisierung und der Datenkapselung zur objektorientierten Programmierung Kopplung von Daten und Methoden, einheitliche Behandlung als Objekte, die miteinander kommunizieren, Vererbung von Eigenschaften Sprachen Smalltalk, Eiffel, C++, Turbo-Pascal ab Version 5.5 Real-Time System Specification (RT) von Hatley/Pirbhai Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 27 90er Jahre Objektorientierte Programmierung nimmt zu (wieder ausgehend von der Implementierung) Neue Programmiersprache Java. Anwendungs-Rahmenwerke (Application Frameworks) zur Vereinfachung von Design und vor allem Programmierung. Geeignete Analyse- und Entwurfsmethoden entstehen (Coad/Yourdon, Rumbaugh, Booch, Jacobson und andere) Standard ausgehend von OMT von Rumbaugh mit Weiterentwicklung von Booch und Jacobson entwickelt sich... Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 28
1995 zunächst als Unified Method (UM) von Booch und Rumbaugh, dann kommt Jacobson hinzu (Use Cases). 3 Amigos definieren die Unified Modeling Language (UML) als Quasi- Standard. 1997 in der Version 1.1 bei der OMG zur Standardisierung eingereicht und angenommen Pflege der UML durch die OMG Revision Task Force (RTF). Im Herbst 1998 wurde UML 1.3 freigegeben. UML ist jedoch keine Entwicklungmethode, nur eine Beschreibungssprache 1999 Entwicklungsmethode: Unified Process (UP) und Rational Unified Process (RUP) Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 29 Heute CASE-Methoden und Tools orientieren sich an der UML Aufbauend auf Analyse und Design erzeugen Codegeneratoren Programmgerüste Haupttätigkeiten bei Softwareentwicklung sind Analyse und Design, alles andere versucht man zu automatisieren (?) Der klassische Programmierer : Bald überflüssig?! Nein!!! Algorithmen und Geschäftsprozesse muss man immer noch programmieren Tools können aber viele Routinearbeiten abnehmen Reverse Engineering Round Trip Engineering Prof. Dr. Björn Dreher Softwaretechnik (Medieninformatik) 30