Softwaretechnik Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6 Objektorientiertes Design 7 Test 8 Dokumentation und Wartung 9 Projektmanagement und -organisation Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 17 Softwaretechnik Überblick: Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 18
Was ist Softwaretechnik? Bisher behandelten wir die sog. Programmierung im Kleinen Die Softwaretechnik, auch Software Engineering genannt, befasst sich mit der Programmierung im Großen Was sind die Unterschiede? Codelänge Programmierung im Kleinen 50 - einige Tausend Zeilen Programmierung im Großen 10 000 Zeilen aufwärts Zweck Anzahl Entwickler Anwender Kosten Lebenserwartung Zuverlässigkeit/Qualität Lösung eines begrenzten Problems 1 bis wenige oft der Entwickler unbedeutend meist kurz mäßig wichtig, leicht erreichbar Komplexes Anwendungssystem 5 bis 100 oder mehr meist EDV-Unerfahrene sehr hoch 10-20 Jahre oft überlebenswichtig (für Anwender und Entwickler), schwer erreichbar Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 19 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 (Allgemeine Informatik) 20
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 (Allgemeine Informatik) 21 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 Programmierung im Kleinen oder Großen notwendig... Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 22
Programmieren im Kleinen vs. im Großen Entwicklungstechniken Vorplanung Programmierung im Kleinen oft überflüssig, Entwicklung am Bildschirm (trial and error) Programmierung im Großen wesentlicher Teil der Entwicklungsarbeit Koordination und Kommunikation Dokumentation unnötig wenig reicht mit wachsender Teamgrößen zunehmend schwieriger. Kommunikation mit Auftraggeber ausführlich, auf verschiedenen Ebenen (Anforderungen, technisches Handbuch, Benutzerhandbuch, etc.) Benutzeroberfläche einfache Oberfläche für EDV-Profi bedienungssicher und verständlich für EDV-Laien Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 23 Programmieren im Kleinen vs. im Großen Entwicklungstechniken (fortgesetzt) Test Wartung Portabilität Programmierung im Kleinen meist einfach durch Hinsehen kaum nötig, einfach meist Nutzung auf nur einem Rechner Programmierung im 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. Entwicklungsund Zielrechner können unterschiedlich sein. Hardware kann veralten Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 24
Softwaretechnik (Allgemeine Informatik) Überblick: Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 25 Wie bei den anderen Ingenieurs-Disziplinen wird auch die Softwareentwicklung in verschiedenen Phasen durchgeführt. Altes heute überholtes Wasserfall-Modell (1970er Jahre): 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 (Allgemeine Informatik) 26
Wasserfall-Modell Nachteile: Voruntersuchung Analyse Design Implement., Test Abnahme & Einf. Betrieb & Wartung Monolithisch: Das ganze System wird auf einmal konstruiert Auftraggeber nur zu Anfang involviert Großer Zeitunterschied zwischen Projektbeginn und Auslieferung Auftraggeber ist erst wieder beim Testen beteiligt Kein Feedback während der Konstruktion Keine Aufteilung, um Komplexität zu vermindern Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 27 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 (Allgemeine Informatik) 28
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 (Allgemeine Informatik) 29 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 (Allgemeine Informatik) 30
Andere Software-Lebenszyklus Modelle Das Boehm sche Spiralmodell Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 31 Das Boehm sche Spiralmodell (1988) 4 Phasen (Quadranten) Im Zuge einer evolutionären Softwareentwicklung mehrfach durchlaufen Pro Umlauf werden nur bestimmte Produkte entwickelt Bauen auf Produkten voriger Umläufe auf Jeder Umlauf eine Teil des Prozesses Machbarkeit Systemanforderungen Systementwurf Implementierung und Test Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 32
Das Boehm sche Spiralmodell (1988) Jede Windung hat 4 Segmente (Phasen) Ziele aufstellen Ziele dieses Durchlaufs Alternativen, Restrisiken Risiken einschätzen und verringern Bewertung, Lösungsstrategien Prototyp, Simulation, Benutzer befragen Entwicklung und Validierung Erstellung der geplanten Produkte Planung der nächsten Phase Aufgrund der Ergebnisse der Reviews Kunden-Evaluierung Hat bereits den Charakter eines iterativen Modells Letzter Umlauf ist eigentliche Erstellung des Systems Nach Beseitigung aller Risiken Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 33 Andere Modelle Das V-Modell Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 34
Das V-Modell Enge Verknüpfung zwischen Entwicklung und Testen Konstruktionsphasen und Teststufen Links Konstruktiver Teil der Anwendungsentwicklung Verifikation gegen vorherige Aktivität Rechts Integrativer Teil Ergebnisse der Programmierung werden schrittweise zu dem Gesamtsystem integriert Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 35 Softwaretechnik (Allgemeine Informatik) Überblick: Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 36
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 (Allgemeine Informatik) 37 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 (Allgemeine Informatik) 38
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 (Allgemeine Informatik) 39 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 (Allgemeine Informatik) 40
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 UML 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 (Phasenmodell), nur eine Beschreibungssprache 1999 Entwicklungsmethode: Unified Process (UP) und Rational Unified Process (RUP) Prof. Dr. Björn Dreher Softwaretechnik (Allgemeine Informatik) 41 Heute CASE-Methoden und Tools orientieren sich an der UML Aktueller Stand 2006: UML 2.1 Aufbauend auf Analyse und Design erzeugen Codegeneratoren Programmgerüste Haupttätigkeiten bei Softwareentwicklung sind Analyse und Design, vieles 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 (Allgemeine Informatik) 42