Grundlagen der Softwaretechnik Info 2 - GdS § 1 Einführung in die Objektorientierung Lernziele – Verstehen, warum Softwareentwicklung benötigt wird – Wissen, was unter objektorientierter Softwareentwicklung zu verstehen ist – Die Unterschiede zur klassischen Softwareentwicklung verstehen – Erklären können, warum Objektorientierung sinnvoll ist – Wissen, welche objektorientierten Konzepte es gibt – Erklären können, was eine Entwicklungsmethode ist – Erklären können, wie sich die Phasen Analyse und Entwurf voneinander unterscheiden – Wissen, was die Unified Modeling Language ist © 2015 IAS, Universität Stuttgart 16 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 17 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Was ist Software ? Definitionen Software (engl., eigtl. »weiche Ware«), Abk. SW, Sammelbezeichnung für Programme, die für den Betrieb von Rechensystemen zur Verfügung stehen, einschl. der zugehörigen Dokumentation. (Brockhaus Enzyklopädie) Software, die zum Betrieb einer Datenverarbeitungsanlage erforderlichen nichtapparativen Funktionsbestandteile. (Fremdwörter-Duden) Software: Computer programs, procedures, rules, and possibly associated documentation and data pertaining to the operation of a computer system. (IEEE Standard Glossary of Software Engineering Terminology) © 2015 IAS, Universität Stuttgart 18 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Software aus unterschiedlichen Sichten (Live-Mitschrieb) © 2015 IAS, Universität Stuttgart 19 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Was ist GUTE Software ? – Gute Software ist qualitativ hochwertig und wird den Bedürfnissen des Anwenders gerecht. Diskussion Denken Sie an ein Programm, das Sie wirklich gerne anwenden. – In welcher Hinsicht halten Sie es für ein qualitativ hochwertiges System? – Gibt es Gründe, warum es nach den hier aufgestellten Aussagen kein qualitativ hochwertiges System ist? – Welche Punkte beeinflussen Ihre Einstellung dazu am meisten? Alternativ: Denken Sie an ein Programm, das zwar sehr erfolgreich ist, das Sie selbst aber ungern anwenden. Stellen Sie hierzu die gleichen Fragen. © 2015 IAS, Universität Stuttgart 20 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Gute Software hat u.a. folgende Eigenschaften (Live-Mitschrieb): Vorschlag: Einteilung in 3 Kategorien: – Funktionalität nützlich und nutzbar: Gute Software erleichtert und verbessert das Leben der Anwender – Qualität zuverlässig: Gute Software leistet das Geforderte, hat keine Ausfälle verfügbar: Lauffähigkeit auf verfügbarer Hardware & Betriebssystem sicher: Keine verbotenen Effekte, Verhinderung von Gefahren – Wirtschaftlichkeit flexibel: Es ist wichtig, Software später noch verändern zu können (Wartung) kostengünstig: in Anschaffung und Unterhalt ergonomisch: leichte Bedienbarkeit, leichte Erlernbarkeit © 2015 IAS, Universität Stuttgart 21 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Warum braucht man Softwareentwicklung? Fundamentales Problem bei der Erstellung von Software: Es gibt eine Grenze, wie viel ein Mensch zu einer gegebenen Zeit verstehen kann. Sehr kleine Systeme können unter Umständen mit der SHIT-Methode bewältigt werden. SHIT= Software vom Hirn ins Terminal Software zeichnet sich im Allgemeinen durch Komplexität aus: – Technische Komplexität: Abhängigkeiten sind für eine Einzelperson nicht überschaubar. Software ist für die Dauer ihres Lebenszyklus Änderungen unterworfen. Entfernung vom ursprünglichen Konzept – Soziale Komplexität: Vielfach Einbettung von SW in soziales Umfeld Entwicklung von Software im Team Expertenwissen Informationsaustausch Methoden & Konzepte für die Entwicklung von Software erforderlich © 2015 IAS, Universität Stuttgart 22 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Wozu braucht man Softwareentwicklung ? Anforderungsbeschreibung Implementierung © 2015 IAS, Universität Stuttgart Systemanalyse Abnahme Entwurf Wunsch des Benutzers 23 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Beispiel für fehlerhafte Software Mars Global Surveyors: Raumsonde der NASA zur Erforschung des Planeten Mars und seiner Umlaufbahn. – Im November 2006 routinemäßige Anweisung zur Neuausrichtung der Solarpaneele – Eingabe fehlerhafter Daten zur Sondenausrichtung (Eingabe falscher Speicheradressen) – Drehung der Sonde, sodass einer der Akkus direkt dem Sonnenlicht ausgesetzt war – Erwärmung der Bordelektronik, die als Überladung interpretiert wurde – Automatische Abschaltung der Aufladung durch Solarzellen – Innerhalb weniger Stunde vollständige Entladung der Akkumulatoren – Seitdem ist der Kontakt zur Sonde abgebrochen Ursache: – Eingabe fehlerhafter Daten war möglich – Ausgelöste Software-Routineprozeduren zur Problembehebung waren nicht effektiv © 2015 IAS, Universität Stuttgart 24 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Vergleich mit der Herstellung anderer industrieller Güter – Software ist immateriell nicht greifbar – Software wird nicht durch physikalische Gesetze begrenzt – Herstellung vieler Exemplare ist trivial – Software unterliegt keinem Verschleiß – Software altert, für Software gibt es keine Ersatzteile Softwareklau Verschärfung der Probleme – Die Komplexität von Programmen nimmt ständig zu – Umfang und Lebensdauer nehmen zu – Neue Anwendungen werden für den Rechnereinsatz erschlossen – Die Softwareentwicklung ist integraler Bestandteil der Systementwicklung – Immer mehr Entwickler sind mit der Pflege von Altsystemen beschäftigt 2/3 aller Softwarekosten © 2015 IAS, Universität Stuttgart 25 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Beispiel: Zunehmende Qualitätsanforderungen – 50% der Ausfälle im industriellen Sektor auf Grund von Software-Fehlern – Entwicklung der gefundenen Defekte pro 1000 Zeilen Quellcode 20% 0,1%-Defektniveau bedeutet: – pro Jahr 20.000 fehlerhafte Medikamente – pro Woche 500 Fehler bei Operationen – pro Tag 18 Flugzeugabstürze 0,1% 1977 – pro Stunde 22000 Schecks falsch gebucht 2007 Beispiel: Zunehmende Entwicklungsdauer Jahre Entwicklungszeit 7,5 6 5 4 3 2 1 4,2 4,5 2,3 1975 1985 2000 Technische Programme © 2015 IAS, Universität Stuttgart 0,8 1 1975 1985 2000 Kommerzielle Programme 26 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Was ist Softwaretechnik? Definition : Softwaretechnik ist der Einsatz qualifizierter Methoden, Werkzeuge und Entwicklungsprozesse zum Erstellen und Betreiben von Software mit dem Ziel, • einerseits die Softwarekosten bei der Entwicklung, Wartung und Erweiterung von Programmsystemen zu senken, • andererseits zum Erreichen einer höheren Systemqualität – Systematische Entwicklung von Software erfolgt in der Regel nach einem vorgegebenen Ablauf Entwicklungsprozess – Festlegung von: Arbeitsschritten Zu erstellenden Dokumenten Zusammenarbeit zwischen unterschiedlichen Entwicklern Reihenfolge der Bearbeitung © 2015 IAS, Universität Stuttgart 27 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Das Wasserfallmodell des Entwicklungsprozesses Problem Was soll entwickelt werden ? Analyse Entwurf Wie soll es ablaufen? Wie soll es strukturiert werden ? Implementierung Wurde richtig programmiert ? Test Betrieb © 2015 IAS, Universität Stuttgart 28 1.1 Wozu braucht man Softwareentwicklung ? Info 2 - GdS Wie unterstützt Softwaretechnik die Erstellung von (guter) Software? – Durch Prozesse für eine strukturierte Vorgehensweise bei der Entwicklung Zuerst „Was“ und dann „Wie“ – Durch Methoden und Konzepte zur Abstraktion der Problemstellung Modell ist Abbild der Wirklichkeit Aufteilung in überschaubare Teilprobleme – Durch Werkzeuge zur Entwicklerunterstützung Beherrschung der Komplexität Was kann Softwaretechnik nicht? – Systematische Softwareentwicklung ergibt nicht automatisch gute Software – Es werden lediglich Methoden und Abläufe vorgegeben, die die Erstellung von guter Software unterstützen Video: Warum braucht man Softwaretechnik? © 2015 IAS, Universität Stuttgart 29 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu 1.1 Was gehört alles zu Software? Antwort – Das Softwareprodukt selbst – Lastenheft – Systembeschreibung – Prototyp – Konfigurationsverwaltung – Entwurfsdokumentation – Testdokumentation – usw. © 2015 IAS, Universität Stuttgart 30 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 31 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Methoden der Softwareentwicklung Aufgabe: Komplexität des Gesamtsystems beherrschen Prinzip: Zerlegung (Dekomposition) Zerlegung des Problems in kleinere, handhabbare Teilbereiche, die relativ isoliert voneinander behandelt werden können Eingrenzung des Problembereichs 3 Teilproblem 2 Teilproblem 1 4 5 Verschiedene Ansätze - Zerlegung nach unterschiedlichen Gesichtspunkten – funktionsorientierte Zerlegung – datenorientierte Zerlegung – objektorientierte Zerlegung © 2015 IAS, Universität Stuttgart 32 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Beispiel: Warenautomat (1) Anforderungen an die zu erstellende Software: 1. Kunde wählt Waren Der Kunde wählt über ein Eingabefeld einzelne Waren und die gewünschte Menge aus. Auf einer Anzeige wird ihm der Preis für die gewählte Menge der Ware und die Gesamtsumme angezeigt. Kunde kann Auswahl korrigieren 2. Kunde signalisiert, dass er mit der Auswahl zu Ende ist Betätigt der Kunde den Auswahl-bestätigen-Knopf, zeigt ihm der Automat den zu zahlenden Betrag an und aktiviert die Geldeingabe. 3. Kunde gibt Geld ein und erhält Waren Der Kunde gibt das Geld in Form von Münzen oder Scheinen ein. Wenn der notwendige Betrag erreicht oder überschritten ist, sperrt der Automat die Geldeingabe und gibt die Waren in der Warenausgabe aus. Anschließend gibt der Automat, falls erforderlich, das Wechselgeld aus. © 2015 IAS, Universität Stuttgart 33 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Beispiel: Warenautomat (2) 4. Betreiber definiert die Preise der Waren Der Betreiber gibt über eine Tastatur die Warenart und den Verkaufspreis ein. Existiert die Warenart schon, so wird der Preis geändert, sonst wird die neue Warenart mit Preis aufgenommen. 5. Betreiber füllt Waren auf Nachdem der Betreiber den Automaten mit Waren neu bestückt hat, gibt er über die Tastatur Warenart und Menge der hinzugefügten Waren ein. 6. Automat erzeugt Tagesbericht Um Mitternacht erzeugt der Automat einen Bericht, welcher vom Betreiber online abgefragt werden kann. Der Bericht enthält Zeitpunkt und Gesamtpreis jedes Verkaufs. Und für jeden Verkauf die verkaufte Ware mit Warenart, Menge und Preis. © 2015 IAS, Universität Stuttgart 34 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Funktionsorientierte Zerlegung – Historisch älteste Zerlegungsmethode – Beschreibung der Funktionen und Aktionen innerhalb der Anwendung – Abstraktion (Modellbildung) durch Betrachtung der zu erfüllenden Aufgabe – Ergebnis ist Top-Down-Zerlegung der Funktionen des geplanten Systems Beispiel: Warenautomat (Teilausschnitt) Warenautomat Warenauswahl Eingabe Ware, Anzahl Anzeige Gesamtbetrag Merke Verkauf Nachteil: Geldeingabe Geldeingabe aktiv Münzeingabe Ausgabe Geldeingabe sperren Warenausgabe Geldausgabe Scheineingabe Datenstrukturen stehen im Hintergrund © 2015 IAS, Universität Stuttgart 35 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Datenorientierte Zerlegung – Betrachtung der Datenstrukturen und -transformationen der Anwendung – System wird nach Daten zerlegt, die in dem System gespeichert und verarbeitet werden müssen. – Bsp.: Entity-Relationship-Modell Beispiel: Warenautomat (Teilausschnitt) Daten Warenautomat Warenbestand Warenart Anzahl Preis Nachteil: Gewählte Waren Warenart Preis Verkaufsbericht Datum GesamtUhrzeit preis Menge Verkaufsposition Datum Uhrzeit Menge Warenart Preis Funktionen stehen im Hintergrund © 2015 IAS, Universität Stuttgart 36 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Funktionsorientierte/Datenorientierte Zerlegung – Analyse der Aufgabenstellung nach zwei gegensätzlichen Gesichtspunkten – Ergänzen sich gegenseitig – Funktions- und Datenorientierte Zerlegung gehören zu den so genannten Strukturierten Methoden = Strukturierte Entwicklung – Strukturierte Analyse (SA) Datenflussdiagramme (funktionsorientiert) Entity-Relationship-Diagramme (datenorientiert) 1.1 Eingabe Ware & Anzahl – Strukturierter Entwurf (SD/MD) Strukturdiagramme für Funktionsaufruf Module im Sinne von Datenabstraktion 1.2 Anzeige Gesamtbetrag Warenauswahl Gewählte Waren Nächste Eingabe Ware Eing.Anzahl © 2015 IAS, Universität Stuttgart Gewählte Waren ... Eing. speichern 37 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Nachteile der strukturierten Entwicklung – Entspricht nicht der menschlichen Denkweise – Geringe Abstraktionstiefe – Strukturbruch zwischen Entwicklungsphasen durch unterschiedliche Darstellungen Warenauswahl 1.1 Eingabe Ware & Anzahl Gewählte Waren Gewählte Waren 1.2 Anzeige Gesamtbetrag Nächste Eingabe Ware Eing.Anzahl ... Eing. speichern – Umfangreiche Modelle sind schwierig zu lesen und zu ändern – Produkte (Dokumentation, Modelle, Programme) sind weniger flexibel bei Änderungen und Erweiterungen – Rein funktionaler Entwurf führt zu schlecht wartbaren Programmen – Keine Unterstützung der Wiederverwendung © 2015 IAS, Universität Stuttgart 38 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Objektorientierte Entwicklung Definition : Bei der objektorientierten Softwareentwicklung werden die in der realen Welt vorkommenden Gegenstände und Begriffe als Objekte betrachtet. Realität Modell © 2015 IAS, Universität Stuttgart Fahrrad besitzt Mensch liest Buch 39 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Beispiel für objektorientierte Betrachtung (Live-Mitschrieb) Züge Gleise Fortbewegung Abstraktion Steuerungsobjekte Realität Gleisabschnitt Status Belegen Freigeben © 2015 IAS, Universität Stuttgart < Befindet sich auf Zug Nr. Anfahren Bremsen 40 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Merkmale der objektorientierten Entwicklung – Nicht nur Daten und Funktionen werden beschrieben, sondern auch ihr Zusammenhang sowie Beziehungen zu ihrer Umwelt (andere Objekte) – Ergebnisse der Phasen Analyse, Entwurf und Implementierung werden objektorientiert in derselben Notation erstellt – Verwendung derselben Konzepte in den Entwicklungsphasen: Analyse - Object-Oriented Analysis Entwurf - Object-Oriented Design Implementierung - Object-Oriented Programming (OOA) (OOD) (OOP) Softwareentwicklung “aus einem Guss” © 2015 IAS, Universität Stuttgart 41 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Beispiel: Warenautomat funktionsorientierte Zerlegung datenorientierte Zerlegung – objektorientierte Zerlegung Funktionen und Daten werden zusammengefasst Objekt Objektname: Attribute des Objekts Ware: Ware – – – Methoden des Objekts Ware: – – © 2015 IAS, Universität Stuttgart Warenname Vorher Daten Preis Anzahl verfügbare Einheiten Was ist Dein Preis Vorher Funktionen Berechne neue Anzahl (aufgrund Anzahl verkaufte Einheiten) 42 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Beispiel: Objekte des Warenautomats < verkauft Objekt Ware Warenname Preis Anzahl verfügb. Einh. Objekt Automat Warenbestand Verkäufe Gib Preis() Berechne neue Anzahl() Gib Waren aus() Fülle Waren auf() Gib Rückgeld() Drucke Verkaufsbericht() < besteht aus < hat Objekt Verkauf Zeitpunkt Gesamtpreis Warenliste Füge Ware hinzu() Bezahlen() © 2015 IAS, Universität Stuttgart 43 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Vorteile der objektorientierten Softwareentwicklung – Strukturen, Zusammenhänge und Abhängigkeiten der realen Welt werden besser erfasst Visuelle Modellierung Objekte, Klassen und Pakete – Bessere Durchgängigkeit, evolutionäre Entwicklung wird unterstützt Dieselben Konzepte und Notationen in allen Phasen Kein Strukturbruch zwischen Analyse und Entwurf – Vergleichsweise einfache Integration von Änderungen – Verkapselung in Klassen und Geheimnisprinzip unterstützen die Wartbarkeit – Vererbungskonzept unterstützt Erweiterbarkeit – Bessere Wiederverwendbarkeit der Arbeitsergebnisse © 2015 IAS, Universität Stuttgart 44 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Wie kam es zu objektorientierten Entwicklungsmethoden? – Idee der Objektorientierung ca. 30 Jahre alt – Zu Beginn objektorientierte Programmiersprachen (OOP) Smalltalk-80 C++ Java Palo Alto Research Center der Firma Xerox ANSI / ISO - Standard Sun Microsystems / heute: Oracle Objektorientierte Analyse und Entwurf (OOA und OOD) – Erste objektorientierte Analyse- und Entwurfsmethoden Anfang 90er Jahre – Zu Beginn: viele unterschiedliche Methoden und Notationen z.B. Booch, Yourdon, Jacobson, Rumbaugh, Shlaer, Mellor – Methoden auf bestimmte Anwendungsbereiche spezialisiert – Heute: Standardisierung der Notation (Booch, Jacobson, Rumbaugh) Unified Modelling Language (UML) © 2015 IAS, Universität Stuttgart 45 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Historie der Softwareentwicklungsmethoden Agentenorientiert Komponentenbasiert Objektorientiert Strukturiert / Funktionsorientiert Programmieren als Kunst Basteln 1950 1960 Systematisches Neuentwickeln 1970 © 2015 IAS, Universität Stuttgart 1980 1990 Konfigurieren 2000 2010 Selbstorganisation 2020 46 1.2 Von der klassischen zur objektorientierten Softwareentwicklung Info 2 - GdS Zusammenfassung: Unterschiede zwischen strukturierter und objektorientierte Entwicklung Strukturierte Entwicklung Objektorientierte Entwicklung Orientierung Mehr technisch orientiert Entspricht menschlicher Denkweise Methodenansatz Trennung von Daten und Operationen Einheiten aus Daten und Operationen (Klassen) Abstraktionsmöglichkeiten Modellierung auf den Lösungsbereich bezogen Modellierung stärker auf den Problembereich bezogen Methodische Durchgängigkeit Strukturbruch zwischen Entwicklungsphasen durch unterschiedliche Darstellungen Die selben Konzepte in allen Entwicklungsphasen Entwicklungsunterstützung Geringere Flexibilität bei Änderungen und Erweiterungen Evolutionäre (schrittweise) Entwicklung wird unterstützt Stabilität Bei Anpassungen erhebliche Änderungen des Programmgefüges notwendig Änderungen eher lokal begrenzt durch Kapselung von Daten und Operationen © 2015 IAS, Universität Stuttgart 47 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu 1.2 Wie unterscheiden sich die Betrachtungsweisen einer Problemstellung bei der strukturierten und der objektorientierten Entwicklung? Antwort Strukturierte Objektorientierte Entwicklung Entwicklung Betrachtung real vorkommender Gegenstände und Begriffe Problem wird nach den Gesichtspunkten der Funktionalität bzw. der benötigten Daten zerlegt Nicht nur Daten und Funktionen, sondern auch ihr Zusammenhang sowie Beziehungen zur Umwelt werden berücksichtigt © 2015 IAS, Universität Stuttgart 48 1.3 Objektorientierte Methoden Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 49 1.3 Objektorientierte Methoden Info 2 - GdS Was ist eine Methode? Definition : Eine Methode beschreibt die systematische Vorgehensweise zur Erreichung eines bestimmten Ziels (griech.: methodos). [H. Balzert] Eine Methode besteht aus: Methode Konzepte z.B. Klasse, Vererbung Methodische Vorgehensweise Notation Grafik Text Methodische Schritte Methodische Regeln Beispiele UML Konkrete Beispiele © 2015 IAS, Universität Stuttgart Abstrakte Beispiele (Muster) 50 1.3 Objektorientierte Methoden Info 2 - GdS Konzepte – Grundkonzepte In allen Phasen vorhanden (Analyse, Entwurf, Implementierung) OO- Programmiersprache unterstützt alle Grundkonzepte – Weitere Konzepte für Analyse und Entwurf Modellierung zusätzlicher Aspekte eines Systems OO-Grundkonzepte Objekt Attribut Botschaft Klasse Operation Vererbung Assoziation Anwendungsfall Paket Szenario Zustandsautomat OOA/D-Konzepte © 2015 IAS, Universität Stuttgart 51 1.3 Objektorientierte Methoden Info 2 - GdS Notation – Text Anforderungen: A1: Das System soll .... Beispiel: Pflichtenheft A2: Außerdem muss es... A3: Und schließlich soll es... – Grafik Beispiel: Klassendiagramm Beispiel: Zustandsautomat – Dokumentationsstandards Festlegung, wie Text- und Grafikelemente verwendet werden © 2015 IAS, Universität Stuttgart 52 1.3 Objektorientierte Methoden Info 2 - GdS Methodische Vorgehensweise Problem Analyse OOAModell Entwurf OODModell Implementierung – Methodische Schritte Vorgegebene Reihenfolge von Tätigkeiten bei Analyse und Entwurf Unterschiedliche Anzahl vorgegebener Schritte Für unterschiedliche Anwendungsbereiche – Methodische Regeln Große Anzahl vorhanden (implizit oder explizit) Anwendung erfolgt situationsspezifisch Keine feste Reihenfolge festgelegt – Beispiele Helfen auf vorhandenes Wissen zurückzugreifen Konkrete Beispiele Abstrakte Muster (Pattern) © 2015 IAS, Universität Stuttgart 53 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu 1.3 Wodurch wird bei der objektorientierten Softwareentwicklung die gute Durchgängigkeit von der Analyse bis zur Implementierung erreicht ? Antwort Verwendung derselben Grundkonzepte in allen Entwicklungsphasen f Verwendung grafischer Notation f Weil zuerst ein Pflichtenheft erstellt wird Verwendung der gleichen Notation in Analyse und Entwurf f Durch vorgegebene Reihenfolge der Tätigkeiten bei Analyse und Entwurf © 2015 IAS, Universität Stuttgart 54 1.4 Objektorientierte Analyse Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 55 1.4 Objektorientierte Analyse Info 2 - GdS Was versteht man unter Analyse ? Definition : Das Ziel der Analyse ist es, die Wünsche und Anforderungen eines Auftraggebers an ein neues Softwaresystem zu ermitteln und zu beschreiben. [H. Balzert] – Erstellen eines Modells der Problemstellung – Modell soll konsistent, vollständig, eindeutig und realisierbar sein – Aspekte der Implementierung werden bewusst ausgeklammert (Annahme über “perfekte Technologie”) – Festlegen was das System tun soll, aber noch nicht wie es realisiert werden soll © 2015 IAS, Universität Stuttgart 56 1.4 Objektorientierte Analyse Info 2 - GdS Probleme bei der Analyse – Anforderungen des Auftraggebers sind in der Regel unklar widersprüchlich fallorientiert – Auftraggeber hat keine vollständige Vorstellung des zukünftigen Systems Mögliche Lösung: Prototyp – Der Systemanalytiker muss sich dem Auftraggeber verständlich machen, nicht umgekehrt! – Ziel: Verstehen des Problems und Beschreibung in einem OOA-Modell Objektorientierte Analyse – Ausgangspunkt der OOA sind Objekte, die in der realen Welt existieren Dinge, Personen, Begriffe, Ereignisse, ... Beispiele: Motor, Kunde, Auftrag, Bezahlung – Darstellung der Objekte und ihrer Beziehungen untereinander – OOA - Modell beschreibt Struktur und Semantik des Problems © 2015 IAS, Universität Stuttgart 57 1.4 Objektorientierte Analyse Info 2 - GdS Produkte in der Analysephase – Pflichtenheft Beschreibung des Leistungsumfanges – OOA-Modell Beschreibung der fachlichen Lösung (Fachkonzept) – Prototyp der Benutzungsoberfläche Visualisierung des Fachkonzepts Pflichtenheft – Einstiegsdokument in das Projekt – Textuelle Beschreibung dessen, was das zu realisierende System leisten soll – Beschreibt das System aus Sicht des Auftraggebers – Weniger detailliert als OOA-Modell © 2015 IAS, Universität Stuttgart 58 1.4 Objektorientierte Analyse Info 2 - GdS OOA-Modell – Fachliche Lösung des zu realisierenden Systems – Umsetzung der Anforderungen aus dem Pflichtenheft – Modellierung mit grafischer Notation Das OOA-Modell besteht aus ... beschreibt Struktur des Systems – statischem Modell Benötigte Klassen und ihre Eigenschaften Beziehungen zwischen Klassen des Modells Vererbungsstruktur – dynamischem Modell beschreibt Verhalten des Systems Aufgaben und Funktionsabläufe Kommunikation zwischen Objekten © 2015 IAS, Universität Stuttgart 59 1.4 Objektorientierte Analyse Info 2 - GdS OOA-Modell - Beispiel: Verwaltung von studentischen Arbeiten Statisches Modell Dynamisches Modell Person :Studentische_Arbeit Name Telefon Email :Student :Professor anmelden Student() erfassen() Professor Student Titel Fachgebiet Matrikelnr. Studiengang erfassen() Betreuer Diplomand abschliessen() set Abschluss() Studentische_Arbeit Lfd.Nr. Thema Abschluss anmelden Student() abschließen() © 2015 IAS, Universität Stuttgart 60 1.4 Objektorientierte Analyse Info 2 - GdS Prototyp der Benutzungsoberfläche – Ablauffähiges Programm – Besteht aus Fenstern, Dialogen, Menüs usw. – Enthält keine Daten oder Funktionalität – Bildet Attribute des OOA-Modells auf Programmoberfläche ab – Dient zur Kommunikation und Diskussion mit Fachexperten und Benutzern Prototyp - Beispiel: Verwaltung studentischer Arbeiten Neu Student Name Vorname Matrikelnr. Nachname Studiengang Arbeitstitel Telefon Email OK © 2015 IAS, Universität Stuttgart Abbrechen Übernehmen Liste ... 61 1.4 Objektorientierte Analyse Info 2 - GdS Erstellung des OOA-Modells – Systemanalytiker hat die Aufgabe, den Auftraggeber zu verstehen sowie die Anforderungen zu präzisieren und zu überprüfen – Diskussion in einem Team aus Systemanalytiker, Fachexperten und zukünftigen Benutzern (ca. 2-5 Personen) – OOA-Modell erstellen – Prototyp wird aus OOA-Modell abgeleitet Bei Bedarf mehrere Iterationen Diskussion OOA-Modell Prototyp Video: Anforderungen ermitteln in der Analysephase © 2015 IAS, Universität Stuttgart 62 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu 1.4 Warum ist es wichtig, in der Analyse von allen Implementierungsdetails zu abstrahieren? Antwort f Weil Implementierungsdetails im Prototyp beschrieben werden Gefahr, dass OOA-Modell auf eine spezielle Umgebung abgestimmt ist f Implementierungsdetails können mit objektorientierten Konzepten nicht dargestellt werden Lösung wird zu stark von der verwendeten Technologie eingeschränkt Weil dadurch das Verständnis des Problems gefördert wird © 2015 IAS, Universität Stuttgart 63 1.5 Objektorientierter Entwurf Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 64 1.5 Objektorientierter Entwurf Info 2 - GdS Was versteht man unter Entwurf? Definition : Die Aufgabe des Entwurfs ist es, die in der Analysephase spezifizierte Anwendung auf einer Plattform unter den geforderten technischen Randbedingungen zu realisieren. [H. Balzert] – Beschreibung des Systems auf höherer Abstraktionsebene als der Programmcode – Erstellung des OOD-Modells – Stark mit der Implementierung verknüpft – Festlegen wie das System realisiert werden soll © 2015 IAS, Universität Stuttgart 65 1.5 Objektorientierter Entwurf Info 2 - GdS OOD-Modell – OOD-Modell entsteht aus OOA-Modell durch Verfeinerung und Ergänzung – OOD-Modell soll ein Abbild des späteren Programms sein – Jede Klasse des OOD-Modells kann direkt in einer OOProgrammiersprache implementiert werden Verwendung der gleichen Namen wie im Programm Das OOD-Modell besteht wie das OOA-Modell aus... – statischem Modell beschreibt die Architektur des Systems enthält alle Klassen des Programms Pakete zur Modellierung von Teilsystemen – dynamischem Modell Beschreibung der Kommunikation zwischen den Objekten © 2015 IAS, Universität Stuttgart 66 1.5 Objektorientierter Entwurf Info 2 - GdS Entwurfsziele beim objektorientierten Entwurf – Berücksichtigung bestimmter Entwurfsziele bei der Erstellung des OODModells Beispiel: – Entwurfsziel: Trennung von Fachkonzept, Benutzungsoberfläche und Datenhaltung – Realisierung durch: Drei-Schichten-Architektur – Einfluss durch: verwendetes GUI (Graphical User Interface) verwendete Form der Datenhaltung © 2015 IAS, Universität Stuttgart 67 1.5 Objektorientierter Entwurf Info 2 - GdS Zusammenhang zwischen OOA und OOD – Ausgangspunkt des OOD-Modells ist OOA-Modell – Verfeinerung und Erweiterung, so dass Abbildung in Programm möglich ist – Gleiche Konzepte, gleiche Notation – OOD-Modell besteht auch aus statischem und dynamischem Modell – Dynamisches OOD-Modell besonders wichtig, da es komplexe Kommunikationsbeziehungen übersichtlich darstellt, die anhand des Programmcodes nur schwer nachvollziehbar sind © 2015 IAS, Universität Stuttgart 68 1.5 Objektorientierter Entwurf Info 2 - GdS Abgrenzung von Analyse und Entwurf Analyse OOA-Modell Pflichtenheft a/b Prototy p OK Entwurf OOD-Modell Fachkonzept Relat. DB Datenhaltung OO DB Benutzungsoberfläche Klassenbibliotheken Netzverteilung C++ bzw. Java-Programme © 2015 IAS, Universität Stuttgart 69 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu 1.5 Warum ist es sinnvoll, die fachliche Funktionalität einer Anwendung, deren Benutzungsschnittstelle und die Datenhaltung strikt zu trennen? Antwort Gründe für Trennung: – Bessere Änderbarkeit und Erweiterbarkeit – Oft betreffen Änderungen nur die Benutzungsoberfläche oder nur die Datenhaltung © 2015 IAS, Universität Stuttgart 70 1.6 Die Unified Modeling Language Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 71 1.6 Die Unified Modeling Language Info 2 - GdS Was ist die UML (Unified Modeling Language)? – Standardisierte Modellierungssprache zur Beschreibung von objektorientierter Analyse und Entwurf – (Überwiegend) grafische Notation – Abbildungen und Diagramme zur Darstellung der unterschiedlichen Modelle, die während eines Entwicklungsprozesses entstehen – Mittel zur Dokumentation und Kommunikation zwischen Entwicklern – Für Modellierung statischer und dynamischer Aspekte – Nicht fest mit einem bestimmten Entwicklungsprozess verknüpft Warum eine vereinheitlichte Modellierungssprache? – Anforderungen an eine Modellierungssprache Ausdrucksstärke, Anwendbarkeit, Eindeutigkeit, Toolunterstützung – Vorteile einer einheitlichen Modellierungssprache Bessere Einarbeitung neuer Mitarbeiter Bessere Lesbarkeit der Dokumentation © 2015 IAS, Universität Stuttgart 72 1.6 Die Unified Modeling Language Info 2 - GdS Historie der UML UML 2.4.1 2011 UML 2.2 2008 UML 2.0 2005 UML 1.4 2000 Erweiterung Industrialisierung UML 1.3 1998 Standardisierung UML 1.1 1997 UML 1.0 1996 UML 0.91 1995 Unified Method 0.8 Weitere Methoden und Einflüsse © 2015 IAS, Universität Stuttgart Booch‘93 OMT - 2 Booch‘91 OMT - 1 Rumbaugh Vereinigung OOSE Jacobson 73 1.6 Die Unified Modeling Language Info 2 - GdS Beschreibungsmittel der UML Die Unified Modeling Language enthält verschiedene Beschreibungsmittel zur Beschreibung der unterschiedlichen Aspekte eines Systems oder einer Software. – Die wichtigsten Diagramme sind: Für statische Aspekte: Klassendiagramm Objektdiagramm Für dynamische Aspekte: Use-Case-Diagramm Sequenzdiagramm Zustandsdiagramm Kommunikationsdiagramm Aktivitätsdiagramm © 2015 IAS, Universität Stuttgart 74 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu 1.6 Was ist durch die UML definiert ? Antwort Notation und Symbole für Elemente objektorientierter Modelle f Entwicklungsprozess und Vorgehensweise f Welche Klassen für ein System benötigt werden Bedeutung der grafischen Symbole Aufbau und Struktur objektorientierter Diagramme © 2015 IAS, Universität Stuttgart 75 Info 2 - GdS § 1 Einführung in die Objektorientierung 1.1 Wozu braucht man Softwareentwicklung? 1.2 Von der klassischen zur objektorientierten Softwareentwicklung 1.3 Objektorientierte Methoden 1.4 Objektorientierte Analyse 1.5 Objektorientierter Entwurf 1.6 Die Unified Modeling Language 1.7 Zusammenfassung © 2015 IAS, Universität Stuttgart 76 § 1 Einführung in die Objektorientierung Info 2 - GdS Zusammenfassung § 1 – Die Erstellung von Software unterscheidet sich von der Herstellung anderer industrieller Güter – Systematische Softwareentwicklung ist notwendig, um die Komplexität moderner Software beherrschbar zu machen – Die Softwareentwicklung erfolgt nach einem vorgegebenen Ablauf, einem Entwicklungsprozess, der in unterschiedliche Phasen gegliedert ist. – Eine (objektorientierte) Methode setzt sich aus Konzepten, einer Notation und einer methodischen Vorgehensweise zusammen. – In der Analyse wird ein Fachkonzept des zu realisierenden Systems erstellt. – Das OOA-Modell beschreibt die wesentlichen Merkmale des Problems, aber noch keine technische Lösung. – Aufgabe des Entwurfs ist es, das Fachkonzept auf einer Plattform unter den geforderten technischen Randbedingungen zu realisieren. – Das OOD-Modell ist ein Abbild des späteren objektorientierten Programms. © 2015 IAS, Universität Stuttgart 77 § 1 Einführung in die Objektorientierung Info 2 - GdS Frage zu § 1 Weshalb wird in der Analysephase ein Prototyp der Benutzungsoberfläche erstellt ? Antwort Gründe für Erstellung eines Prototyps: – Validierung der „wahren“ Kundenwünsche – Anschauliches Darstellungsmittel – Diskussionsgrundlage mit Auftraggeber © 2015 IAS, Universität Stuttgart 78 § 1 Einführung in die Objektorientierung Info 2 - GdS Vorbereitungsfragen zu § 1 Frage 1: Welche der folgenden Aussagen über UML treffen zu? (WS 05/06) Antwort UML ist ein Software-Entwicklungsprozess. UML beschreibt Diagramme und Notationen. UML ist als Modellierungssprache für Menschen gedacht. UML ist eine Entwurfsarchitektur. UML ist abhängig von der verwendeten Programmiersprache. © 2015 IAS, Universität Stuttgart 79