Stephan Kleuker. Grundkurs Software-Engineering mit UML

Stephan Kleuker Grundkurs Software-Engineering mit UML "Ausgezeichnete, praxisorientierte Orientierung am ModelIierungsprozess der UML." Prof. Dr. ...
7 downloads 0 Views 833KB Size
Stephan Kleuker Grundkurs Software-Engineering mit UML

"Ausgezeichnete, praxisorientierte Orientierung am ModelIierungsprozess der UML." Prof. Dr. Herbert Fischer, FH Deggendorf "Besonders gut gefallen mir die Beispiele und die gute Veranschaulichung." Prof. Dr. Hubert Schuele, PFH Göttingen "Man erhält schnell einen überblick über die verschiedenen Methoden des Software-Designs."

Prof. Dr.-Ing. Dirk Benyoucef, HS Furtwangen

"Der Autor stellt die UML nicht wie in einigen anderen Werken als Selbstzweck dar, sondern flicht sie konsequent in den Gesamtzusammenhang des SoftwareEngineering ein."

Prof. Dr. Carsten Dorrhauer, BA Stuttgart

"Systematische und kompakte Einführung in alle Phasen des Software Engineerings mit UML einschließlich der Oualitätssicherung und Testen, die ich meinen Studierenden nur empfehlen kann."

Professor Dr. Rainer Hoch, DHBW Mannheim

"Ausführliche gut verständliche Erklärungen, die perfekt mit Lehrmaterialien und Übungsaufgaben abgestimmt sind." Professor Dr.-Ing. Grit Behrens, FH Wiesbaden "Die Kombination aus Grundlagen des Projektmanagements und Anwendung von UML macht das Buch einzigartig. Andere Bücher beleuchten sicherlich die einzelnen Themen jeweils gründlicher, aber nur hier findet man eine gelungene Mischung die die gemeinsame Anwendung erklärt." Michael Lindemann, Bundeswehr "Die Thematik wird fundiert und umfassend dargestellt, wobei der Autor durchweg einen starken Praxisbezug herstellt. / ... / Positiv hervorzuheben sind zudem die ergänzenden Materialien, die im Internet bereitgestellt werden. / .../ Fazit: Unter dem Strich ein empfehlenswertes Werk mit hohem Nutzwert für die Lehre und Praxis." Professor Dr. Benno Schmidt, HS Bochum

www.viewegteubner.de

--'

Stephan Kleuker

Grundkurs Software-Engineering mit UML Der pragmatische Weg zu erfolgreichen Softwareprojekten 2., korrigierte und erweiterte Auflage Mit 184 Abbildungen STUDIUM

11 VIEWEG+ TEUBNER

Bibliografische lnformationd der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.

Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Der Autor übernimmt infolgedessen keine Verantwortung und wird keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. Höchste inhaltliche und technische Qualität unserer Produkte ist unser Ziel. Bei der Produktion und Auslieferung unserer Bücher wollen wir die Umwelt schonen: Dieses Buch ist auf säurefreiem und chlorfrei gebleichtem Papier gedruckt. Die Einschweißfolie besteht aus Polyäthylen und damit aus organischen Grundstoffen, die weder bei der Herstellung noch bei der Verbrennung Schadstoffe freisetzen.

1. Auflage 2008 2., korrigierte und erweiterte Auflage 2011 Alle Rechte vorbehalten © Vieweg+Teubner Verlag Lektorat: Christel Roß

I Springer Fachmedien Wiesbaden GmbH I Maren Mithöfer

2011

Vieweg +Teubner Verlag ist eine Marke von Springer Fachmedien. Springer Fachmedien ist Teil der Fachverlagsgruppe Springer Science+Business Media. www.viewegteubner.de Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: KünkelLopka Medienentwicklung, Heidelberg Druck und buchbinderische Verarbeitung: STRAUSS GMBH, Mörlenbach Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier. Printed in Germany ISBN 978-3-8348-1417-3

Vorwort Das Ziel dieses Buches ist es, ein Meilenstein in der systematischen Ausbildung von Software-Entwicklern zu sein und Lösungsansätze für die unterschiedlichen Herausforderungen des Software-Engineerings zu zeigen. In einer Zeit, in der immer neue Technologien entwickelt werden, zeigt dieses Buch die Fundamente der Entwicklung, die sich langfristig als ingenieurmäßige Vorgehensweisen etabliert haben. Erfahrenen Entwicklern und anderen an IT-Projekten beteiligten Personen kann dieses Buch helfen, sich intensiver mit aktuellen Ansätzen zu beschäftigen und so an der kontinuierlichen Weiterentwicklung des Software-Engineerings teilzunehmen. Für die Lektüre des Buches ist es sinnvoll, einen ersten Grundkurs in einer objektorientierten Programmiersprache wie Java, C# oder C++ abgeschlossen zu haben, da die grundlegenden Begriffe wie Klasse, Objekt, Vererbung und Polymorphie nur kurz aufgefrischt werden. Der Inhalt dieses Buches basiert auf den Erfahrungen des Autors als Systemanalytiker und Systemberater für recht unterschiedliche komplexe Software-Systeme, die in verschiedenen Vorlesungen zunächst an der Fachhochschule Nordakademie in Elmshorn und dann an der Fachhochschule Wiesbaden erfolgreich an InformatikStudierende weitergegeben wurden. Den beteiligten Studierenden sei auf diese Weise besonders gedankt, da sie mit ihren Ideen und vielfältigen Fragestellungen sehr zur Abrundung der Veranstaltungen und dieses Buches beigetragen haben. Sie haben mir weiterhin gezeigt, dass der Spaß an der Informatik häufig mit dem Spaß an selbst entwickelter Software zusammenhängt, die auf Basis gelernter Grundlagen zusammen mit der individuellen Kreativität zum Laufen gebracht wird. Software-Engineering ist in diesem Zusammenhang ein Hilfsmittel, das keine Energie in das erneute Entwickeln bereits etablierter Lösungen fließen lässt, sondern die Kreativität für neue Herausforderungen kanalisiert. Software-Engineering wird dabei als die Wissenschaft der systematischen Entwicklung von Software, beginnend bei den Anforderungen bis zur Abnahme des fertigen Produkts und der anschließenden Wartungsphase definiert, deren Ziel die Verknüpfung etablierter Lösungsansätze mit neuen Technologien ist. Als wichtiges Hilfsmittel wird dazu in diesem Buch die Unified Modeling Language (UML) vorgestellt, die es ermöglicht, Entwicklungsergebnisse in solch einer Form festzuhalten, dass sie leicht von anderen IT-Professionals gelesen und weiter bearbeitet werden können. Das Buch folgt dem Ablauf eines IT-Projektes, ausgehend von den Anforderungen und der besonderen Herausforderung, mit dem Kunden über das gleiche Ziel zu reden, über die erste Modellierung zur systematischen Erfassung dieser Anforderungen. Die schrittweise Optimierung dieser Modelle und die unterschiedlichen

V

Vorwort Randbedingungen der Implementierung werden diskutiert. Es wird gezeigt, wie Ergebnisse so aufbereitet werden, dass andere Entwickler die Ideen des eigentlichen Autoren nachvollziehen können. Generell stehen dabei die ingenieurmäßigen Überlegungen, wie man Erfahrungen aus erfolgreichen Projekten auf die Anwendbarkeit im eigenen Projekt überprüfen und dann auch übertragen kann, im Mittepunkt. Dem querschnittlichen Thema Qualitätssicherung ist ein eigenes Kapitel gewidmet. Aus meinen Praxiserfahrungen folgt auch, dass eine gute Software-Entwicklung zwar die Grundlage eines erfolgreichen Projekts ist, es aber vielfältige Randbedingungen gibt, die von der Entwicklungsumgebung bis zum Miteinander der Projektmitglieder gehen, die den Projekterfolg beeinflussen. Diese Randbedingungen werden in diesem Buch im abschließenden Kapitel diskutiert. Zu jedem Kapitel gibt es eine Liste von möglichen Risiken, die man zur Überprüfung eigener Projekte nutzen sollte. Jedes Kapitel schließt mit zwei Arten von Aufgaben ab. Im ersten Aufgabenteil werden Wiederholungsfragen gestellt, die man nach intensiver Lektüre des vorangegangenen Kapitels beantworten können sollte. Die Lösungen zu diesen Aufgaben kann man selbst im Buch nachschlagen. Der zweite Aufgabenteil umfasst Übungsaufgaben, in denen man gezielt das angelesene Wissen anwenden soll. Diese Übungsaufgaben sind in verschiedenen Lehrveranstaltungen erfolgreich eingesetzt worden. Die Bilder, Spezifikationen, Programme und Lösungsvorschläge zu den Aufgaben dieses Buches sowie weitere Information können von der Web-Seite

http://home.edvsz.fh-osnabrueck.de/skleuker/SoftwareEngineering.html oder den Informationsseiten des Verlages zum Buch herunter geladen und unter Berücksichtigung des Copyrights genutzt werden. In diesem Buch benutze ich verkürzend ohne Hintergedanken bei Einzahlen wie Leser oder Entwickler die männliche Form. Natürlich möchte ich mit diesem Buch auch die weiblichen ~ Leserinnen ansprechen. Zum Abschluss wünsche ich Ihnen viel Spaß beim Lesen. Konstruktive Kritik wird immer angenommen. Bedenken Sie, dass das Lesen nur ein Teil des Lernens ist. Ähnlich wie in diesem Buch kleine Beispiele eingestreut sind, um einzelne Details zu klären, sollten Sie sich mit den hier vorgestellten Ideen hinsetzen und meine, aber vor allem selbst konstruierte Beispiele durchspielen. Sie runden das Verständnis des Themas wesentlich ab. Wiesbaden, Mai 2008

VI

Stephan Kleuker

Vorwort

Danksagung Ein Buch kann nicht von einer Person alleine verwirklicht werden. Zu einer gelungenen Entstehung tragen viele Personen in unterschiedlichen Rollen bei, denen ich hier danken möchte. Mein erster Dank geht an meine Ehefrau Frau Dr. Cheryl Kleuker, die nicht nur die erste Kontrolle der Inhalte und Texte vorgenommen hat, sondern mir erlaubte, einen Teil der ohnehin zu geringen Zeit für die Familie in dieses Buchprojekt zu stecken. Dank gilt meinem Kollegen Prof. Dr. Sven Eric Panitz von der Fachhochschule Wiesbaden, der sich eine Vorversion dieses Buches kritisch durchgelesen hat und interessante Anregungen lieferte. Viele Studierende, die Veranstaltungen zum Thema Software-Entwicklung bei mir gehört haben, trugen durch ihre Fragen und Probleme wesentlich zu der Herangehensweise an die Themen des Buches bei. Abschließend sei Sybille Thelen, Günter Schulz, Andrea Broßler, Albrecht Weis und den weiteren Mitarbeitern des Verlags Vieweg+Teubner für die konstruktive Mitarbeit gedankt, die dieses Buchprojekt erst ermöglichten.

Ergänzung zur zweiten Auflage Neben dem fast immer sehr positiven Feedback zur ersten Auflage, habe ich viele Anregungen zur Erweiterung des Buches und zur Korrektur einiger Tippfehler erhalten. Neben den Studierenden der Hochschule Osnabrück und anderer Hochschulen, gilt mein besonderer Dank für Anregungen meinen Kollegen Prof. Dr. Grit Behrens, Prof. Dr. Theo Gervens, Ralf Neugebauer, Prof. Dr. Andreas Terstegge, Prof. Dr. Frank Thiesing und Prof. Dr. Michael Ülschen. Es konnten zwar nicht alle Erweiterungswünsche berücksichtigt werden, dafür wurden aber dann einige Verweise auf weitere Ansätze und Vertiefungsmöglichkeiten ergänzt, damit der Umfang dieses Buches nicht gesprengt wird. Hinweise auf gewünschte Ergänzungen, unklare Formulierungen und Tippfehler werden immer gerne entgegen genommen. Die Korrekturen sind auf der Web-Seite zum Buch online erhältlich. Für die kompetente und freundliche Betreuung der zweiten Auflage möchte ich mich bei Dr. Christel Roß und den weiteren Mitarbeitern des Verlags Vieweg+Teubner bedanken. Osnabrück,September2010

Stephan Kleuker

VII

Inhaltsverzeichnis 1 Was ist Software-Engineering?

1

2 ProzessmodelIierung

7

2.1 Unternehmensprozesse

8

2.2 Prozessmodellierung mit Aktivitätsdiagrammen

10

2.3 Risikomanagement

17

2.4 Risikoanalyse Prozessmodellierung

20

2.5 Aufgaben

20

3 Vorgehensmodelle

23

3.1 Phasen der Software-Entwicklung

24

3.2 Wasserfallmodell

26

3.3 Prototypische Entwicklung

27

3.4 Iterative Entwicklung

28

3.5 Iterativ-inkrementelle Entwicklung

30

3.6 Allgemeines V-Modell

31

3.7 Das V-Modell der Bundesrepublik Deutschland

32

3.8 Rational Unified Process

39

3.9 Agile Vorgehensmodelle

42

3.10 Scrum

45

3.11 Extreme Programming

46

3.12 Risikoanalyse Vorgehensmodell

48

3.13 Aufgaben

48

4 Anforderungsanalyse

51

4.1 Stakeholder und Ziele

51

4.2 Klärung der Hauptfunktionalität (Use Cases)

58

4.3 Beschreibung typischer und alternativer Abläufe

67

4.4 Ableitung funktionaler Anforderungen

71

IX