Zusammenfassung - Software Bakery
Transcription
Zusammenfassung - Software Bakery
HSLU Hochschule Luzern IT Konzepte und Modelle Modulzusammenfassung IT Systeme und Modelle The Software Bakery Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz 20. Januar 2014 Zu diesem Skript. Dieses Skript stützt sich auf die Vorlesungen im Fach IM bei A. Kurmann und M. Jud während des Herbstsemesters 2013 und verarbeitet die dort gehörten Inputs mit ausgewählten Aspekten aus diverser Fachliteratur. Die Kapitelüberschriften korrespondieren mit den entsprechenden Kapiteln der Vorlesungen. i TAKE CARE OF OUR ENVIRONMENT – PLEASE CONSIDER BEFORE YOU PRINT OUT. Inhaltsverzeichnis 1 Bestandteile eines Grobkonzepts 1.1 Das IT-Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IM 5 5 1.2 Themen eines Grobkonzepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Requirements Engineering & Management 7 2.1 Requirements Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Anforderungsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Sammeln der Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Ausarbeitung von Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5 Verwalten der Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6 Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3 Scope & Resultate 13 3.1 Scope (Gültigkeitsbereich) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Projektresultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Projekt- & Vorgehensmodell 14 4.1 Überblick über SoDa (Software Development Agile) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Scrum: agil, iterativ & inkrementell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.3 Planung von Software-Projekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.4 Meilensteine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.5 Projektstrukturplan (Projektphasen-Modell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.6 Rahmenplan und Erstellung der Inhalte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.7 Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.8 Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.9 Testen mit SoDa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.10 Projektcontrolling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 Modellierung 24 5.1 Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.2 Modellbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3 „3 Sichten“ der Modellierung: Daten-, Prozess- und Funktionssicht . . . . . . . . . . . . . . . . . . . . . . . 25 6 UML (Unified Modeling Language) 26 6.1 Ebenen der Modellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.2 Verhaltensdiagramme: Aktivitäten und Zustände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.3 Strukturdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.4 Interaktionsdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.5 Beziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7 Prozess-Modellierung 35 7.1 Einführung in Geschäftsprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.2 Modellierung von Prozessen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.3 Sprachen für die Prozessmodellierung: Beispiel EPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.4 Erweiterte EPK (eEPK): Rollen und Informationsobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8 Funktionsmodellierung 38 8.1 Objektorientierte Funktionsmodellierung: CRC-Karten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.2 Grundlagen der Dekomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.3 Dekomposition von DV-Systemen (Funktionale Zerlegung) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 9 Kontextdiagramm 42 10 Datenmodellierung 43 10.1 Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.2 Datenmodellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.3 Informations(struktur)modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.4 Entity-Relationship Modell (ER-Modell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 10.5 Vereinfachtes ER-Modell und Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 10.6 Beispiel eines Informationsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 11 Systemdesign 48 11.1 Einflussfaktoren & Vorgehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 11.2 Von der Idee zur Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.3 Heuristiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.4 Systemdesign kommunizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 11.5 Entwurf der Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 11.6 Architekturaspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Literatur The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz 60 Seite 4 1. Bestandteile eines Grobkonzepts IM 1.1. Das IT-Projekt Business-OE ’Business’ Benutzer ? Anforderung IT IT IT Ziel Konzeption Realisierung Einführung Voranalyse Nutzung / Nutzung / Einführung Einführung WAS ist das Problem? SOLLEN wir etwas tun? WAS sollen wir tun? Lohnt es sich? Machbar? Die rot geschrieben Punkte sollten unbedingt VOR dem eigentlichen Projektstart geklärt werden. Sie werden festgehalten in einem Grobkonzept. Der Projektstart soll erst erfolgen, sofern eine Motivation zur Lösung des Problems / der Aufgabe besteht. Dabei wird genau herauskristallisiert, WIESO am Projekt gearbeitet wird. Folgende Fragen stehen dabei im Zentrum: • Welche Informationen müssen in welcher Tiefe und Granularität vorhanden sein, damit man über ein Projekt entscheiden kann? • Welche Teile umfasst ein Grobkonzept? 1.2. Themen eines Grobkonzepts Im Grobkonzept werden in der Initialisierungsphase zwei Fragen geklärt: a) Was soll das System leisten? b) Wie sieht das System grob aus? 1.2.1 Struktur des Grobkonzepts Das Grobkonzept kann sec und einfach daherkommen (z.B. in Form von Slides, siehe Dokument „AlpineRe_Grobkonzept.pdf“). Folgende Punkte sollten allerdings darin enthalten sein: (A) VISION lierung der Ziele (aus der Sicht der Benutzer). SollAussage über das System. • Ausgangslage: Problemstellung und wichtigste Stakeholder • Ziel(e): Zustand / Situation nach dem Projekt • Scope: was gehört zum Projekt und was nicht (Gültigkeitsbereich, Abgrenzung, Einschränkungen) • Anforderungen: wichtigste Anforderungen zur Detail- The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz • Resultate: Arbeitsergebnisse, welche konstruiert werden. Diese beschreiben genauer, was der Auftraggeber oder die Benutzer „in die Hand“ kriegen. Resultate sind präzis und klar zu umschreiben. • Business Case / Nutzenanalyse: von den Zielen abgeleiteter Nutzen (Mehreinnahmen, Kostenreduktio- Seite 5 1.3 Ziele nen, Erfüllung externer Zwänge), bestehend aus ei- • Approach / Lösungsskizze (optionaõ): Wie gedenkt nem qualitativen (Beschreibung) und quantitativen man, mit dem Projekt die Probleme zu lösen. Dies (Berechnung) Teil. kann eine Optimierung eines Prozesses sein (B) PMP (PROJEKT MANAGEMENT PLAN) • Grobplanung (Aufwand und Zeit): a) grobe Zeitund Meilenstein-Planskizze, b) Aufwand- und Kosten- (C) SYSTEM-SPEZIFIKATION • Kontext-Diagramm: Übersicht über die Umsysteme und die Komplexität • Informationsmodelle: wichtigste Informationsobjekte und deren Zusammenhänge, welche eine zentrale Rolle spielen. • Prozesslandkarte / Prozesse (optional): Überblick schätzung • Projektorganisation & -struktur: Interessengruppen, Rollen und deren Besetzung über die zu automatisierenden Geschäftsprozesse erhalten. • Funktionale Zerlegung (Funktionsdiagramm): die wichtigsten Funktionen oder Funktionsblöcke eines IT-Systems, Sicht „von aussen“ • Systemdesign: physischer Aufbau (einzusetzende Software- und Hardwarekomponenten) → siehe Übung 2.2: Bestandteile eines Grobkonzepts 1.3. Ziele Definition 1: Ziel(e) Ziel(e) beschreiben einen Zustand / eine Situation. Dabei geht es um die Frage, WAS man mit dem Projekt erreichen will bzw. was NACH dem Projektende „besser“ oder „anders“ als vorher sein soll. → siehe Übung «AlpineRe_Grobkonzept.pdf»: Slide 4 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 6 2. Requirements Engineering & Management IM Requirements Engineering ist diejenige Disziplin, welche die Anforderungen an das Zielsystem aktiv durch ihren gesamten Lebenszyklus begleitet. Definition 2: Requirement Ein Requirement ist eine Anforderung. Über ein System oder einen Prozess soll eine Soll-Aussage entstehen, die etwas Wahrnehmbares für einen Beobachter oder ein Umsystem beschreibt (z.B. eine Leistung / ein Verhalten oder eine Eigenschaft). Anforderungen können im Projektverlauf ändern aufgrund von: • • • • veränderten Bedürfnissen von Kunden Veränderungen von Märkten / Aufkommen neuer Märkte Änderungen der Organisation (kundenseitig oder entwicklerseitig) neuen / geänderten politischen oder rechtlichen Randbedingungen Ziel des Requirements Management Merke: Anforderungen stabil halten und Veränderungen kon- 60% der Fehler passieren in der Analyse, in De- trolliert zulassen. sign und Implementierung aber nur 40%. Die Kosten der Fehlerbehebung steigen aber exponentiell mit dem Zeitpunkt der Entdeckung. Daraus leitet sich das Konfigurationsmanagement für Anforderungen ab. → siehe Übung 3.1: Aufgabe 1 Christof Ebert © 2009 Vector Consulting Services GmbH 2.1. Requirements Engineering Ebenen der Anforderungen Requirements Engineering dient den folgenden Zwecken: • Abstimmung mit den Anforderungen des Auftraggebers • zur „Baubarkeit“ des Systems (Anforderungen definieren den Zweck) • der Verfolgbarkeit möglicher Änderungen über das Projekt hinweg IM HS13, Kp 3 18 M. Jud Merke: Requirements Engineering → Verfolgbarkeit von Anforderungen → Spezifikation der Module → Testen des Systems The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 7 Aus einem STRAW’01 Paper von Bashar Nuseibeh 2.2 Anforderungsverwaltung Development of Requirements & Architecture 2.2. Anforderungsverwaltung Eine Anforderungsverwaltung sammelt und verwaltet die Anforderungen. Anforderungen und mögliche Lösungen stehen dabei in einem wechselseitigen Zusammenhang (siehe Bild). Die Wechselwirkung bzw. gegenseitige Beeinflussung ist dabei imminent. Requirements Engineering ist damit nicht einfach nur „die erste Stufe des Projektablaufs“, sondern vollzieht sich über das gesamte Projekt. Imkrementelle Vorgehensweisen1 erhöhen die Erfolgschancen dessen. Merke: IM HS13, Kp 3 M. Jud 25 Früh damit beginnen, Muster und Prototypen zu entwickeln und danach Feedbacks beim Kunden einholen! → siehe Übung 3.1: Aufgabe 2 Kontextdiagramm 2.3. Sammeln der Anforderungen Das Sys - 2.3.1 Systemkontexte Das Kontextdiagramm (siehe auch Kapitel 9) zeigt die Systemgrenzen eines Projekts auf. Die Anforderungen beschreiben damit also das System und seine Schnittstellen: a) Was muss ermittelt werden? Systemgrenze - System b) Wie sieht die Systemumgebung aus (Umsysteme)? c) Welche Schnittstellen sind nötig? Kontextdiagramme in UML - Kontextdiagramme können als Use Case-Diagramme (siehe Kapitel 2.6) in UML erstellt werden (siehe auch Vorschlag dazu im Kapitel 2.4). Als Quellen zur Ermittlung der Anforderungslisten gelten: • Stakeholder: Ansprechpartner beim Auftraggeber • bereits vorhandene Dokumentationen bzw. allgemein Dokumente • Gesetze und existierende Verordnungen Systemumgebung Umsystem(e) → siehe Übung 3.1: Aufgabe 4 1 IM HS13, Kp 3 siehe dazu auch Modul „Software Komponenten“, Kapitel 1 (Frühlingssemester 2013) The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz 29 Seite 8 Die das Sch 2.4 2.3.2 Ausarbeitung von Anforderungen Techniken Reihenfolge: Technik Zweck Nutzen Interview mindestens am Anfang, so früh wie mög- liefert viele nützliche Daten lich, oft wiederholen Fragebogen Fragen sind bekannt, zu befragende Klärung der „Lager“ Workshops bei komplexen Themen Szenarien durchspielen beim ersten Entwurf liefert nötige Details Prototyp Prosa-Spezifikation in abstrakter Form, Gefühl für das spätere System erfahren, direk- technisch, nicht primär für den Benutzer tes Feedback (z.B. GUI-Prototyp) Gruppe ist gross intensiv, aber eher aufwändig 100% verständlich Beobachten vor Ort falls Prozesse und das Umfeld für den reduziert das Risiko, implied needs zu überse- Auftragnehmer unbekannt sind, Einbli- hen, Missverständnisse minimieren cke ins Business und in die Prozesse des Kunden gewinnen → siehe Übung 3.2: Aufgabe 1 2.4. Ausarbeitung von Anforderungen Auf die Requirements sind zwei Gruppen angewiesen: • Auftraggeber Spezifikationen verstehen und abnehmen → nicht zu detailliert, nicht zu technisch • Entwickler müssen wissen, was zu bauen / entwickeln ist → muss detailliert und technisch sein Präsentiert werden diese Anforderungslisten einer Management-Gruppe, indem ein „Big Picture“ knapp die wichtigsten Eigenschaften und den Kontext eines Systems darstellt. Hier eignen sich UML Use-Cases (mit entsprechendem Stereotyp «requirement») zur Beschreibung von Requirements sehr gut (siehe Oestereich (2009, S. 41ff). → siehe Übung 3.2: Aufgabe 2 2.4.1 Kategorisierung von Anforderungen Merke: Dabei zählen qualitative Anforderungen (z.B. System uptime = 7 × 24) sowie funktionale (z.B. Use-Case-Diagramme) und nicht funktionale Anforderungen. Man unterscheidet die folgenden Anforderungen voneinander: • funktionale (Geschäftsregeln: Bedingungen, Zustand, Zusicherung) / nicht funktionale (Zuverlässigkeit, Wartbarkeit, Be- • Vorschriften, welche erfragt werden müssen • Annahmen / Tatsachen • hart (Sperrung nach Ablauf) / weich (einfach nutzbar) nutzbarkeit, Änderbarkeit, Übertragbarkeit, Effizienz) Alle Anforderungen sollen in einer Spezifikationsschablone (Tabelle) gesammelt werden (siehe hierzu Oestereich (2009, S. 41ff)). The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 9 2.5 Verwalten der Anforderungen Achtung: Anforderungen statt Lösungen formulieren! Anforderungen sollten NIE Lösungen beschreiben; auf eine Anforderung passen immer mehrere Lösungen! Beispiel. Lösung: „Die Händlerstammdaten müssen um ein Feld für einen dritten Mehrwertsteuersatz erweitert werden.“ Anforderung: „Das System muss Anträge mit einem von drei Mehrwertsteuersätzen abrechnen können.“ Quantifizierbare Anforderungen Qualitative Anforderungen sollen – wenn immer möglich! – quantifizierbar sein. Beispiel. „Das System muss schnell sein“ (→ nicht quantifizierbar!) „Antwortzeit in 95% der Fälle < 2 Sekunden“ (→ alles quantifizierbar!) → siehe Übung 3.1: Aufgabe 4 2.5. Verwalten der Anforderungen Aus: Vorlesung Requirements Enfineering I, Kapitel 14 Verwalten von Anforderungen, © 2006 Prof. Martin Gliz,, Uni Zürich Änderungsprozess Alle Anforderungen kommen in eine gemeinsame Datenbasis. Der Änderungsprozess sollte definiert sein, wie folgendes Musterbeispiel zeigt: • Geregeltes Prozedere • Entscheidung durch Steuerkomitee *) - Mitglieder: Vertreter von Auftraggeber und Auftragnehmer - Vorsitz: Projektleiter *) Synonyme: Lenkungsausschuss Change Control Board IM HS13, Kp 3 60 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz M. Jud Seite 10 2.6 Use Cases 2.6. Use Cases Anforderungen an ein System werden in folgende Punkte unterteilt: • Use- und Systemcases • nicht-funktionale Anforderungen • andere funktionale Anforderungen die nicht von den Usecases beschrieben sind 2.6.1 Formale Aspekte Use- und Systemcases werden in UML beschrieben (siehe dazu Kapitel 6.2.3). Normalerweise beinhaltet dies 1. ein Diagramm, welches die Aktoren und die Aktivität beschreibt 2. sowie eine textuelle Beschreibung. Die Diagramme sind nur notwendig für komplexe oder wichtige Usecases. Die textuelle Repräsentation kann jedoch immer erstellt werden. Eine Vorlage hierfür ist im Abschnitt 2.6.4 enthalten. 2.6.2 Namenskonventionen Lodging Damit die Usecases einheitlich und sauber dargestellt werClient den, sind folgende Konventionen einzuhalten: book room Portier • Usecase-Namen sind in englischer Sprache zu halten • Usecase-Namen bestehen aus wenigen Wörtern und allocate room beinhalten ein Verb sowie ein Nomen2 • Die Usecase-Bezeichner bestehen aus den zentralen Guest Acquiring Worten des Namens und sind in PascalCase zu halmanage room ten3 Marketing 2.6.3 Accounting Beschreibung der Aktoren Die Aktoren werden in tabellarischer Darstellung beschrieben. Aktore, die nicht verwendet werden, sind hierbei wegzulassen. Beispiel: Actor Description CIS User The CIS user is a person usually belonging to one of the client teams. Since CIS is a read-only system, any user might perform any action on the CIS system. 2.6.4 2 3 Usecase Template Bsp.: „create or edit data type“ Bsp.: „CreateEditDataType“ The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 11 2.6 Use Cases Attribute Description Name <name> Identifier <identifier> Type (Base|Included) Description ::= Eine kurze Beschreibung zum Usecase. Actors(s) { <actor-identifier> } Preconditions ::= Eine Aufzählung von Konditionen dier erfüllt sein müssen damit der Anwendungsfall Gültigkeit hat. Bspw.: „The user is authorized“ Basic flow ::= Beschreibt den Normalablauf des Usecases. Alt. flow 1 ::= Beschreibt einen möglichen alternativen Fluss. Zum Beispiel wenn der user die Aktion abbricht. Alt. flow n ::= Weitere alternative Flüsse. Postconditions ::= Eine Aufzählung von Konditionen die anschliessend an das Usecase zutreffen müssen. Non-functional Requirements ::= Nicht funktionale Anforderung wie bspw.: „Dieses Use-Case muss von 20 Benutzern parallel ausgeführt werden können“ Special considerations ::= Restriktionen der einzugebenden Daten. Create date ::= Erstellungsdatum (dd.mm.yyyy) des Usecases. Modification ::= Modifikationen und Änderungen des Usecases (dd.mm.yyyy <description>) The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 12 3. Scope & Resultate IM 3.1. Scope (Gültigkeitsbereich) Definition 3: Scope Der Scope definiert den Gültigkeitsbereich (Abgrenzung) eines Projekts. Dazu gehört in der Praxis vor allem die Auflistung, welche Bereiche nicht zu einem Projekt gehören (Einschränkungen, „constraints“). Der Scope wird meistens in Punkteform aufgelistet und in Stichworten kurz ausformuliert. → siehe Übung «AlpineRe_Grobkonzept.pdf»: Slide 5 3.2. Projektresultate Definition 4: Projektresultate Resultate beschreiben die Arbeitsergebnisse, welche das Projekt abzuliefern hat. Damit sind jene „Dinge“ gemeint, welche dem Auftraggeber bzw. Benutzer nach deren Vollendung zur Verfügung stehen. Resultate sind keine Aktivitäten! Das Projektcontrolling überprüft die Resultate; sobald alle Resultate vorliegen ist das Projekt beendet. Ziele → Hauptresultat → Teilresultat → Arbeitspaket Merke: Projektresultate sollen präzise / vollständig definiert und beschrieben sein für die Detaillierung der Arbeitspakete, die Aufwandschätzung, das Projekt-Controlling und -Reporting. Alle wichtigen Projektplanungs- und -Reporting-Instrumente hängen direkt von der klaren Formulierung der Resultate und Arbeitspakete ab. Die Ergebnisliste enthält eine Auflistung aller Arbeitsergebnisse, welche das Projektteam im Laufe der Projektarbeit erstellen wird. Sie wird sowohl für die Planung (Aufwand, Zeitbedarf) wie auch für die Ressourcenallokation (Fähigkeiten, Kapazität) verwendet. 3.2.1 Ergebnisraster Die Ergebnisse eines Projekts können (fast) immer in folgende Klassen unterteilt werden: 1. Applikationssoftware 4. Migration 2. Applikationsdokumentation 5. Rollout 3. Prozesse / BO 6. Projektmanagement-Ergebnisse Dabei kann für jede Klasse gefragt werden „Welche Resultate erzielen wir für 1., 2., 3., . . . , 6.?“. → siehe Übung «AlpineRe_Grobkonzept.pdf»: Slide 7 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 13 4. Projekt- & Vorgehensmodell IM 4.1. Überblick über SoDa (Software Development Agile) 4.1.1 Projektverständnis nach Jenny Jenny unterscheidet in Projekten zwischen Projektführung und Projektdurchführung. Vereinfacht kann man sagen, dass die Projektführung in allen Arten von Projekten die gleichen Aufgaben in unterschiedlicher Ausprägung umfasst. Demgegenüber ist die Projektdurchführung je nach Projektart ab einem gewissen Grad sehr spezifisch (unterschiedliche Vorgehensmodelle, Standards sowie Deliverables): • Projektführung → Allgemein die Planungsaktivitäten • Projektdurchführung → Konkrete Arbeiten und Arbeitspakete Abbildung 1: Projektverständnis nach Jenny – zwei Ebenen (Führung & Durchführung) 4.1.2 Projektführung Die Projektführung ist weitgehend unabhängig von der Art des Projektes. Allgemein kann der Ablauf gem. Abbildung 2 beschrieben werden. Abbildung 2: Phasen der Projektführung nach Jenny Insbesondere das Planen der Aufgaben sowie das Steuern und das Kontrollieren müssen bis zum Projektabschluss je nach Projektumfang periodisch oder fortlaufend gemacht werden und stellen somit keine einmalige Tätigkeiten dar. Es ist vorwiegend der Projektleiter, der diese Projektführungs- respektive die Managementtätigkeiten wahrnimmt. Das Element Projektführung hat zum Ziel, dass ein Projekt durchdacht und kontrolliert durchgeführt wird. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 14 4.1 4.1.3 Überblick über SoDa (Software Development Agile) Projektdurchführung Die Gliederung der Projektdurchführung in Phasen (vgl. Abb. 3) ist in der Regel ebenfalls unabhängig von der Art des Projektes. Abbildung 3: Phasen der Projektdurchführung nach Jenny Die Phasen (vgl. Abb. 3) sind lediglich eine zeitliche Anordnung und sagen nichts in Bezug auf den Inhalt aus. Oftmals befinden sich Meilensteine zwischen den Phasen um kritische Deliverables zu prüfen. Diese Abschnitte bilden eine Art „Schnittstelle“ zu anderen Branchen / Disziplinen. Jenny lässt die Freiheit der Gestaltung durch relativ „schwammige“ Überbegriffe. Dabei weisen die einzelnen Phasen je nach Projektart eine andere Charakteristik auf und stützen sich oft auf spezialisierte Vorgehensmodelle (vgl. Kap. 4.1.4). 4.1.4 Vorgehensmodelle 1. Klassische Modelle (Frühe Vorgehensmodelle) • Wasserfallmodelle Sequentielles Vorgehen, Phasen = Aktivitäten, Kontrolle der Aktivitätenergebnisse und Tests. • V-Modelle Sequentielles Vorgehen, Bezug zwischen analytischen und synthetischen Schritten, QS-Sicht: Verifikation und Validierung. Problem bei klassischen Modellen: Die Zusammenführung findet erst am Schluss der Sequenz statt (sequentieller Ablauf)! Innerhalb der Software-Entwicklungsbranche wäre es also von Vorteil andere Methoden nutzen zu können. Iterativ-Inkrementelles Vorgehen 2. Neuere Vorgehensmodelle. Besonders bei Software-Entwicklungsprojekten ist es meist nicht möglich bereits in derInsbesondere Initialisierungsphase alle Anforderungen vollständig zu erfassen. Zudem ist die Trennung zwischen bei Software-Entwicklungsprojekten ist es meist nicht möglich bereits in der Initialisierungsphase die Anforderungen vollständig zueher künstlich. Konzeption (SW-Design) und Realisierung (Programmierung) bei der Software-Entwicklung erfassen. Ein Vorgehen, wie bspw. in Scrum (Kapitel 4.2) beschrieben, erlaubt in mehreren Durchgängen die Anforderun- istund dieanzupassen Trennungund zwischen Konzeption (SW-Design) und Realisierung gen zuZudem ergänzen die Software schrittweise zu entwickeln (entwerfen & programmieren): (Programmierung) bei der Software-Entwicklung eher künstlich. Abbildung 4: „Erweiterung“ des Modells nach Jenny: die Konzeptions- und Realisierungsphase fallen in Projekten der Software-Entwicklung • – sinnvollerweise! – ganz oderbeispielsweise teilweise in iterativ abgewickelte Phasen. Ein Vorgehen, wie in Scrum beschrieben, erlaubt in mehreren Durchgängen die Anforderungen zu ergänzen und anzupassen und die Software schrittweise zu entwickeln (entwerfen & programmieren). Iterativ = „stete Wiederholungen“: die Aktivitäten des Entwicklungszyklus werden mehrmals durchlaufen, bereits Iterationen werden lauffähige Programmteile geschaffen (Prototypen). M. Jud IM HS13,in Kpfrühen 5a 9 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 15 4.2 Scrum: agil, iterativ & inkrementell • Inkrementell = „kontinuierlicher Funktionszuwachs“: die Releases erhalten mit jeder Iteration einen grösseren Funktionsumfang. Merke: In der Software-Entwicklung wird sinnvollerweise ein iterativ-inkrementelles Vorgehen angestrebt in Abstimmung an die Phasen von Jenny (Stichwort: Schnittstellen)a . a Um so die Zusammenarbeit mit anderen Disziplinen (falls beteiligt) sicherzustellen Top-Down-Prinzip Bottom-Up-Prinzip • Vom Groben zum Detail • Konzept auf oberer Ebene gilt als Orientierungshilfe • Es liegen sofort konkrete Lösungen vor • Verbesserung vorhandener Lösungen • Es liegen schnell Lösungen vor Durch wiederholtes Wechseln der Perspektive wächst das Problem-Verständis ständig4 . → siehe Übung 5.1: Aufgaben 1 – 4 4.2. Scrum: agil, iterativ & inkrementell Scrum basiert auf der Theorie der empirischen Prozesssteuerung und stützt sich auf die drei Säulen: Transparenz, Überprüfung und Anpassung. Es ist ein Framework, das die Entwicklung komplexer Produkte unterstützt und setzt sich zusammen aus sogenannten Scrum Teams, den zugehörigen Rollen, Ereignissen, Artefakten und Regeln. Jede Komponente des Frameworks dient einem bestimmten Zweck und ist wesentlich für die erfolgreiche Anwendung von Scrum. Scrum Teams liefern Produkte in regelmässigen Abständen (iterativ) und stufenweise erweiternd (inkrementell) aus. Dadurch werden die Gelegenheiten für Feedback maximiert. Die inkrementelle Lieferung „fertiger“ Produkte stellt sicher, dass immer eine potentiell gebrauchsfertige und nutzbare Version des Produktes zur Verfügung steht.5 SoDa als agiler Software-Entwicklungsprozess baut in seiner Konstruktion auf Scrum auf. 4.2.1 Sprints (siehe auch Kapitel 4.6.2) Der Sprint ist das Herz von Scrum. Sprints haben während eines Entwicklungsvorhabens eine gleichmässig feste Dauer während der ein fertiges, getestetes, nutzbares und potentiell auslieferbares Produktinkrement entwickelt wird. Sprints bestehen aus mehreren Teilen: • Sprint Planning • Daily Meeting Ziel ist der Informationsaustausch • Eigentliche Entwicklungsarbeit • Sprint Review (Abnahme) am Ende des Sprints • Sprint Retrospektive (Reflexion) zwischen Review und dem neuen Sprint Planning Sprints ermöglichen Vorhersagbarkeit durch regelmässige z.B. monatliche Überprüfung des Arbeitsfortschrittes sowie Anpassung der Planung und gegebenenfalls der Zielsetzung. 4 5 Dies wird auch JoJo genannt. Auch dann, wenn das Projekt vorzeitig abgebrochen wird – nie leere Hände! The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 16 4.3 4.2.2 Planung von Software-Projekten Rollen In SoDa-Projekten werden vier Rollen unterschieden: • Projektleiter/-in Schlüsselrolle in der Initialisierungs- und Einführungsphase: Rahmenplanung, Organisation, Meilensteine, Produkteinführung • Product Owner Schlüsselrolle in Konzeptions- und Realisierungsphase („oberster Produktentwickler“): Pflege & Priorisierung des ProductBacklog, Sprint-Planung & -Abnahme, im Idealfall für Kunden der Ansprechpartner, der das Produkt sehr gut kennt (in Realität aber oftmals ein eigener Mitarbeiter, welcher vorwiegend im Kundenkontakt steht und das Produkt genau kennengelernt hat), vertritt die Wirtschaftlichkeit des Produkts für die Firma • Scrum Master «servant leader» für das Team und den Product Owner: ist verantwortlich, dass Scrum gelingt, unterstützt das korrekte Vorgehen und stellt die Qualität sicher – schützt das Team und schaut, dass Scrumvorgaben eingehalten werden (z.B. dass der SprintBacklog nicht plötzlich noch wächst, da Kunde im laufenden Sprint ein Feature noch „reinquetschen“ will), nimmt Probleme auf und kümmert sich darum • Scrum Team Entwickler/innen, die selbstorganisiert und eigenverantwortlich in den Sprints die Software entwerfen, erstellen und testen (Backlog-Einträge umsetzen) 4.2.3 Product Owner etwas genauer 1. Verwaltung des ProductBacklog (laufend) • • • • Erfassen und klares Formulieren der Einträge im ProductBacklog ordnen der Einträge in eine zielführende Fertigstellungsreihenfolge Transparenz sicherstellen des ProductBacklog für alle Beteiligten fortlaufende Pflege („Grooming“) des ProductBacklogs 2. Sprintplanung (zu Beginn jedes Sprints) • mit dem Entwicklungs-Team den Inhalt des SprintBacklogs verhandeln und Zielkonflikte auflösen • Bei Bedarf den Umfang des SprintBacklogs nachverhandeln 3. Sprintabschluss (am Ende jedes Sprints) • ermitteln, was „done“ ist (Testplan) und das Inkrement freigeben • verbleibende Arbeit ermitteln und Fertigstellungsdatum hochrechnen Weitere Infos (z.B. bezüglich Artefakte) siehe Kap. 4.7.2. 4.3. Planung von Software-Projekten Um stets die Überschaubarkeit der Projektabwicklung gewährleisten zu können, braucht es eine klare Gliederung der bevorstehenden Gesamtaufgaben in einzelne plan- und kontrollierbare Teilaufgaben. Instrumente dazu sind: a) Projektstrukturplan: deckt Zusammenhänge auf, gewährt eine Übersicht, „Projektplan-Fundament“ b) Rahmenplan: gibt eine grobe Vorstellung des übergeordneten Projektablaufs (zeigt die Projektdauer und Meilensteine sowie Iterationen [Sprints] auf) 4.4. Meilensteine Definition 5: Meilenstein Ein geplanter Punkt im Projektablauf, an dem vorher festgelegte (Zwischen-) Ergebnisse vorliegen, die es erlauben den Projektfortschritt zu messen. Der Meilenstein ist erreicht, wenn die geforderten Artefakte vorliegen und ihre Überprüfung (Review / Test) erfolgreich war. Zwischen den Milestones liegen die Sprints: The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 17 4.5 Verteilung der Meilensteine Initialisierungs Phase Konzeptions Phase Projektstrukturplan (Projektphasen-Modell) Realisierungs Phase Einführungs Phase 1 2 3 4 5 Projekt Start Start Umsetzung SystemDurchstich Start Einführung Projekt Ende Zeit S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 MS Termin Deliverables 1 01. Jan. Auftrag GL «Start Initialisierungsphase» 2 15. Feb. Grobkonzept liegt vor / Auftrag GL «Start Umsetzung» 3 30. Juni System-Durchstich erfolgt / Projektziele revalidiert (GL) 4 10. Nov. Umsetzung abgeschlossen / Auftrag GL «Einführung» 5 31. Dez. Projekt-Abschluss liegt vor, durch GL abgenommen Für die Initialisierungsphase kann wenn nötig eine detaillierte Zu jedem Meilenstein gehören Artefakte wie z.B. Prototypen, Entwurfsdokumente, Testprotokolle, . . . . Arbeitsplanung gemacht werden. Bei einer fixen Sprintdauer von 4 Wochen ergeben sich hier 10 Sprints. Die detaillierte Zielsetzung und Arbeitsplanung für die Konzeptions- und 4.5. Projektstrukturplan (Projektphasen-Modell) Realisierungsphase erfolgt im Rahmen der Sprintplanung. Merke: IM FS13, Kp 5b M. Jud 15 Der Projektstrukturplan (PSP) gliedert das Projekt in zeitliche Phasen (Projektphasen nach Jenny) und ergänzt diese um die Aufgaben des Projektleiters (Vorbereitungstätigkeiten) als eigener Strukturast: Projektführung Initialisierung «Plans are nothing – Planning is everything.» 4.5.1 Konzeption Realisierung Einführung — Dwight D. Eisenhower Der „Cone of Uncertainty“ Zu Beginn eines Projekts ist es schwierig, Aufwände genau einzuschätzen. Der „Cone of Uncertainty“ versucht die (statistisch modellierte) Abschätzung von Ungewissheiten zu einem bestimmten Zeitpunkt innerhalb eines Projekts anzugeben. Dabei soll das Mass der Unsicherheiten bei einer Abschätzung zum Zeitpunkt des Projektbeginns mit Faktor 4 bzw. 1 4 beschrieben werden (siehe Grafik): die tatsächlich benö- tigte Zeit für ein Projekt könnte daher 4× bzw. 14 × so lang sein wie ursprünglich geschätzt. Die Ungewissheit („Uncertainty“) wird sich nie von selbst optimieren („blaue Hülle“); auf das Ziel hin (dicke Linie) muss aktiv gearbeitet werden. Unsicherheiten in Bezug auf die Genauigkeit der Einschätzungen nehmen während des Projektverlaufs stetig ab – und die Einschätzungen werden dadurch immer genauer, klarer und abgrenzbarer. 4.6. Rahmenplan und Erstellung der Inhalte Ziel des Rahmenplans Den Ablauf schon früh genug grob festhalten und richtig einschätzen zu können The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 18 4.6 Rahmenplan und Erstellung der Inhalte In Bezug auf die dauernd vorhandene Unsicherheit im Projektprozess (siehe „Cone of Uncertainty“) hilft eine zweistufige Vorgehensweise: (1) ein Rahmenplan und (2) eine rollende Detailplanung . 4.6.1 1. Stufe: Erstellung eines Rahmenplans (Initialisierungsphase) Merke: Wird durch den Projektleiter erstellt, basiert auf dem Projektphasenmodell (siehe Abbildung 3), enthält die wichtigsten Meilensteine und Termine. Der Rahmenplan wird nach aussen kommuniziert. Er soll möglichst stabil sein, da häufig andere Projekte vom Stand der aktuellen Entwicklung abhängig sind. Darin enthalten sind Projektdauer (geplanter Start- und Endtermin) sowie die Meilensteine (und deren Verteilung). Vorgehen bei der Rahmenplanung: 1. Endtermin festlegen (meist vorgegeben) 2. Starttermin setzen (aufgrund Ressourcenverfügbarkeit, Entscheide der GL) 3. Meilensteine definieren (Termine und Deliverables) 4. Iterationen planen (Sprintdauer ↔ Anzahl Sprints in Konzeption & Realisierung; je nach Einflussnahme / -notwendigkeit unterschiedlich) für die Planung: Konsequenzen für die Projektplanung Konsequenzen Die Komplettheit aller Requirements kommt erst nach unendlich langer Zeit. Darum („Daumenregel“, abgeleitet aus dem „Pareto-Prinzip“): – nach t = 14 → 12 (50%) der Ergebnisse erzielt (kurze Zwei wesentliche Initialisierungsphase muss genug Klarheit schaffen, um Konsequenzen ergeben sich aus ! rasch beginnen zu können) der 80/20 – Regel – nach t = 21 →> 54 (80%) der Ergebnisse erzielt (beim für die „mittleren Pfeiler“ (50% der Projektdauer) sollten über Projektplanung: mit der Umsetzung zu (Konzeption und Realisierung) 90% der Projektresultate vorliegen; ein funktionierender Prototyp [„System-Durchstich“] muss vorliegen!) 1.Die 100% vollständigen Requirements, die 100% perfekte 2. Stufe: Rollende Detailplanung (Erstellung in der Konzeptionsphase) Spezifikation sind erst nach unendlich langer Zeit zu haben. «gut genug» ist das Ziel: eine kurze Initialisierungsphase Merke: muss genug Klarheit schaffen, um mit der Umsetzung zu (Konzeption und Realisierung) rasch beginnen zu können. Der Product Owner priorisiert Anforderungen aus dem Backlog dauernd nach Geschäftsnutzen, Aufwandschätzung im Team, und erstellt eine detaillierte Sprint-Planung der jeweils nächsten 2 Iterationen. 2.Wenn der «mittlere Pfeiler» nach 50% der Projektdauer angesetzt wird, müssen nach Abschluss der Konzeptionsphase weit über 90% der Projektresultate vorliegen. Innerhalb des Rahmenplans werden die nächsten Iterationen im „Timeboxing“ (fixe Dauer, flexibler Inhalt) geplant: Ein funktionierender Prototyp «System-Durchstich» ist eine Mindestvorgabe für diesen Meilenstein! 4.6.2 IM FS13, Kp 5b 14 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz M. Jud Seite 19 Innerhalb des Rahmenplanes werden die nächstfolgenden Iterationen im «Timeboxing» (fixe Dauer, flexibler Inhalt) geplant. Rahmenplan undes Erstellung der Inhalte Dabei wird der unmittelbar bevorstehende Sprint detailliert4.6geplant und wird für den darauf folgenden Sprint eine Grobplanung gemacht: [Modul] [Kapitel] SoDa Sprintplanning IM FS13, Kp 5b siehe Arb M. Jud 18 Wichtig: die Sprintplanung wächst damit iterativ! Zu Beginn jedes Sprints erarbeitet der ProductOwner das neue Sprint-Ziel gemeinsam mit dem Team auf Basis • der Rahmenplanung Der SoDa-Sprintplan • der aktualisierten Risikobewertung und Der SoDa-Sprintplan enthält die Sprintziele (aktualisier- te Risikoliste [siehe Kapitel 11.1.4] , zu erledigende De- • des priorisierten liverables, . . . ) und das Initial Taskboard. plan t: Der Product Owner macht für jede Aufgabe im Product Backlog6 eine Schätzung des Aufwands und eine Priorisierung für den jeweiligen Sprint7 . Die am höchsten priorisierten User Stories werden in den Sprint Backlog8 übertragen und dann vom Entwicklungsteam während des Sprints be- Es wird geprüft, wie viele der höchst priorisierten ProductBacklog-Items arbeitet. ste (Stories) in das SprintBacklog übernommen werden können, so dass print prinzipiell erreicht werden Initial Taskboard den UserStories (→etc.) in der Software-Entwicklung: "Bedürfnis eines Anwenders" bzw. bewusst • einmit sinnvolles Sprintziel dneten Das Projekt-Lieferobjekten, Meilensteinen kurz gehaltene Spezifikation einer Software-Anforderung) enthält alle Aufgaben aus dem Sprint Backlog: • mit den verfügbaren Ressourcen [email protected] alte Schule • in der vorgesehenen Timebox erreicht werden kann. IM FS13, Kp 5b 19 ories , done» nung ories echen) User Story Example M. Jud As a student I want to see my marks online so that I know as soon as possible whether I have passed a course. • • • • Direct link to results can be sent / received by e-mail Swiss marking scale Unambiguous visualisation of pass / fail Results can be sorted by subject or exam date Der Product eine priorisierte Liste, die abgelegt. alles enthält, was entwickelt werden soll. Es ist nie vollständig, der Product Owner ist alleine für w erden im PBacklog M Pistals Anhang 6 www.bbv.ch die Eintragungen verantwortlich. 7 Die Auswahl basiert dabei auf der Priorität des Sprintziels, auf den verfügbaren Ressourcen und der vorgesehenen Timebox. 8 Der Sprint Backlog enthält eine Liste aller Aufgaben (Stories), die erledigt werden müssen: als Basis dienen die Items im Product Backlog mit der M. Jud 20Priorisierung. höchsten The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 20 4.7 Dokumentation Das Initial Taskboard enthält also alle Tasks (des Sprint Backlogs), die sich aus den für diesen Sprint ausgewählten ProductBacklog-Items ergeben, inkl. «definition of done»9 , Aufwand und Zuordnung sowie Abfolge im Sprint. Merke: Für die UserStories im Sprint Backlog wird immer eine Schätzung des erwarteten Aufwands und der erwarteten Dauer vorgenommen. Am Ende des Sprints muss immer „potentially shippable Software“ vorliegen. → siehe Übung 5.2: SoDa (Software Development Agile) 4.7. Dokumentation Hauptnutzung der Dokumentation Wissenssicherung, denn «eine Software lebt länger als wir denken» (Jud, 04.04.2013): 80% der Softwareentwicklung ist Pflege bestehender Systeme. Weiter hilft Dokumentationsarbeit beim Problemverständnis (z.B. Kundenanforderungen und Softwareanforderungen) und bei der Konsensbildung (z.B. Architekturmodelle und Projektpläne). Dokumente wie Softwarearchitektur sind bereits (Zwischen-) Produkte des Entwicklungsprozesses. 4.7.1 Was wird dokumentiert? Dokumentation: Was? – Für wen? Projektplanung Konfig.-Management Entwicklerinnen QS Planung Test- und Abnahmeplanung Entwurf Produkt Code Testprotokolle Anforderungen SoDa Dokumente SoDa ist agile Dokumentation. Agile Dokumentation . . . Für wen wird dokumentiert ? Was wird dokumentiert ? Prozess 4.7.2 • legt bewusst fest, was dokumentiert werden soll • ist inhaltlich aktuell und korrekt, dabei aber kompakt und gut strukturiert • leistet einen effektiven Beitrag zur Unterstützung der anderen Projektaufgaben Installation Kunden Betrieb IM FS13, Kp 5c M. Jud 4 Dabei werden folgende Dokumente gefordert: Projektebene Dokument Erstellungszeitpunkt Projektführung • Projektplan Erstellung in der Initialisierungsphase, Aktualisierung Projektdurchführung • Grobkonzept • Product Backlog • Sprint Backlog • Sprintplan • Sys Spezifikation • Testplan • Testprotokoll bei jedem Meilenstein 9 Initialisierungsphase Initialisierungsphase zu Beginn jeden Sprints zu Beginn jeden Sprints Initialisierungsphase, Ergänzung pro Inkrement im Projektplan, Ergänzung pro Inkrement pro Inkrement zu Beginn festgelegte Kriterien, wann eine User Story als «done» akzeptiert wird The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 21 4.8 Projektmanagement-Plan. Testen Zur Projektführung wird in der Initialisierungsphase ein Projektplan erstellt. Insbesondere das Kapitel „Projektführung“ wird bei jedem Meilenstein nachgeführt. Folgend die Inhalte eines ProjektmanagementPlans: • Projektorganisation – Konfigurationsmanagement – Organisationsplan, Rollen & Zuständigkeiten – Reviewplanung – Projektstrukturplan – Abnahmeplanung • Projektführung • Testplan – Rahmenplan – Testdesign & Abläufe – Projektkontrolle – Testfälle – Risikomanagement (siehe Kapitel 11.1.4) – Projektabschluss • Projektunterstützung – Tools für Entwicklung, Test und Abnahme • Anhänge – Sprintpläne – Meilensteinberichte – Reviewprotokolle 4.8. Testen Am V-Modell lassen sich die Zusammenhänge des Testens besonders gut zeigen: Zu jeder Disziplin (Anforderungen, Entwurf, Implementierung) gibt es eine Entsprechung auf der Test-Seite. Unterschied „Validierung“ und „Verifikation“ Validieren (haben wir das Richtige entwickelt?) und verifizieren (haben wir es richtig gemacht?) • Unit- / Komponententests / Funktionale Tests → Verifikation • Abnahmetests → Validierung Abnahme ist nicht nur dann, wenn die Entwicklung fertig ist – sondern auch dann, wenn ein Sprint zu Ende ist und ein neues Release bevorsteht. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 22 4.9 Testen mit SoDa Testen ist unumgänglich, denn je nach Statistik findet man mit jeder Testart und jedem Review etwa 33% bis 67% der Fehler, die in einer Software stecken. Die Komplexität von Software-Produkten erfordert einen Testentwurf nach Modellen. 4.9. Testen mit SoDa Da die 100%ige Abdeckung der Tests schon aus wirtschaftlicher Sicht nicht realisierbar ist, beschränkt man sich bei SoDa auf ein adäquates Soll, welches getestet wird. Dieses Soll setzt sich aus folgenden Punkten zusammen: • welche Konfigurationen (HW/Daten/SW) und Abläufe/Interaktionen bergen die grössten Risiken? • was ist Teil der Abnahme? • was sind anwendbare Vorschriften? Getestet wird opportunistisch, da es aufwändig ist. Tests, die sich ohne grossen extra Aufwand durchführen lassen, werden zusätzlich durchgeführt. Bei umfangreicheren Zusatztests wird das Delta zum adäquaten Soll ermittelt und nach Aufwand/Ertrag durchgeführt. Testen ist in SoDa eine Haupttätigkeit und kommt daher in allen Phasen des Softwareprojektes wieder vor (iterativ). In dieser Tätigkeit werden Tests für geeignete Einheiten (Komponenten/Subsysteme) realisiert und sichergestellt, dass diese bei einem Release vorher erfolgreich ausgeführt wurden. Tests werden für Kundenabnahmen verwendet und reduzieren so das Risiko des Entwicklers. Ausserdem wird der Aufwand für die Gesamtabnahme reduziert. Iterative Tests werden auf allen Ebenen (Unit, Komponenten, Subsysteme, Systeme) durchgeführt. Das iterative Vorgehen besteht nicht nur aus iterativen Tests und Abnahmen; auch Dokumente werden iterativ freigegeben um Konsistenz über die ganze Entwicklung sicherzustellen. Aus Sicht der Testtätigkeit sind folgende Dokumentationen wichtig: • Testplanung • Testprotokoll • Softwarefehlerverfolgung (Bsp. Bugzilla) → siehe Übung 5.1: Aufgabe 6 4.10. Projektcontrolling Bei der Analyse des Projektfortschritts steht die Frage nach dem jeweiligen Fertigstellungsgrad der durchzuführenden Entwicklungsarbeiten an zentraler Stelle. Das Problem beim Ermitteln des Fertigstellungsgrades liegt im Fixieren des fertigen Arbeitsvolumens. 4.10.1 Die Frage nach dem Restaufwand Grundsätzlich sollte ein Fertigstellungsgrad auf Basis der Werte „verbrauchter Aufwand“ und „geschätzter Restaufwand“ berechnet werden. Deshalb sollte der Projektleiter nicht nach dem Grad der Fertigstellung, sondern immer nach dem zu leistenden Restaufwand fragen: es geht also nicht um die Fragen nach „wieviel“ und „wie lange noch“, sondern nach „fertig oder nicht fertig“10 . In einem agilen, iterativ-inkrementellen Projekt lässt sich der Restaufwand nur für die aktuelle Iteration klar bestimmen: der ProductBacklog kann sich ja im Projektverlauf stets ändern, neue Anforderungen kommen dazu, bestehende werden geändert oder fallen weg. 10 „fertig“ bedeutet, dass der Code komplett integriert und auch getestet ist! The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 23 5. Modellierung IM Ein Modell . . . • • • • ist ein vereinfachtes Abbild der Realität dient einem bestimmten Zweck zeigt eine erwünschte „Genauigkeit“ auf nach einer gewissen Relevanz stützt sich auf einen Plan 5.1. Modelle Definition 6: Modell Konkretes oder gedankliches Abbild eines vorhandenen Gebildes oder Vorbild für ein zu schaffendes Gebilde in der Wahrnehmung der beteiligten Personen für einen bestimmten Verwendungszweck. Dabei wird dieses bewusst abstrahiert und gestaltet – nicht mit dem Ziel, das Original bestmöglichst nachzubauen. Es ist also immer mit Abstraktion verbunden und durch die Wahrnehmung der modellierenden Person(en) geprägt. Zu jedem Modell gehört eine Abbildung, welche die Details des Originals auf diejenigen des Modells abbildet. 5.1.1 Wozu Modelle? Somit: Gedankliches Hilfsmittel zum Gestalten, Bewerten Verwendungszweck oder Kritisieren eines geplanten Systems. Ermöglicht die Durchführung von Experimenten, die am am Original nicht • Verstehen eines Systems • Kommunizieren über ein System • Spezifikation von Anforderungen an ein geplantes durchgeführt werden sollen, können oder dürfen. Gebilde 5.2. Modellbildung Diese Schritte sind beim Vorgehen nötig: 1. Reflektieren: Worum geht es? Was lassen wir weg? Wie 3. Beschreiben: Gewonnene Informationen verstehen, soll das Modell aussehen? 2. Gewinnen: Infos gewinnen über den Sachverhalt ordnen, strukturiertes Modell erstellen: Entitätsmengen, Daten, Beziehungen, . . . (Workshops durchführen in Gruppen der Beteilig- 4. Validieren: Modelle (Zwischenergebnisse und fertiges ten), diskutieren, lesen, fragen, suchen, . . . Modellbildung (3) Modell) in Review-Workshops überprüfen lassen: „Entspricht das Modell dem, was wir wollen und brauchen?“ The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 24 5.3 „3 Sichten“ der Modellierung: Daten-, Prozess- und Funktionssicht 5.3. „3 Sichten“ der Modellierung: Daten-, Prozess- und Funktionssicht 5.3.1 Exkurs: Zweck der IT Zweck der IT Geschäftsprozess Die IT-Abteilung unterstützt die Geschäftsprozesse einer Einkauf Firma mit IT-Applikationen. Diese IT-Applikationen werden Prod. Vertrieb Unterstützt entwickelt und/oder betrieben von der IT-Abteilung und IT-Applikation (IT-Service) unterstützen die Geschäftsprozesse massgeblich. Dabei wird die IT-Abteilung in zwei Sparten aufgeteilt: stellt entwickelt Anforderungen betreibt a) die Entwicklung und b) den Betrieb: a) Entwicklung und Unterhalt von IT-Applikationen im IT-Entwicklung „entwickelt“ Rahmen von Projekten IT-Betrieb „betreibt“ b) Betrieb von IT-Services einer Unternehmung in geübergibt nügender Verfügbarkeit in einer Linienorganisation A. Kurmann SSM: Kapitel 3 5.3.2 4 3 Sichten einer Unternehmung: Daten-, Prozess- und Funktionssicht Sehr gute Einführung: http://www.leed.ch/history/eepk/ > ARIS-Haus Eine Unternehmung besteht typischerweise Sichten aus verschiedenen Sichten (siehe Bild links, vertikale Anordnung). Die Betrachtung aus verschiedenen Modellierung stützt sich dabei immer auf die Betrachtungsweise aus verschiedenen Sichten (weiteres Beispiel Bild rechts: „Architektur integrierter Informations-Systeme (ARIS)“) und deren Ebenen (Bild links, horizontale Schichtung): Prozesse Sichten und Beschreibungsebenen Die Ebene des „Fachlichen Konzepts“ (= formale vonDarstellung ARIS der entsprechenden Sicht) enthält jeweils in der. . . A. Kurmann IM Kapitel 7 23 • Organisationssicht → Organisationsstruktur bzw. einheiten: Organigramme (Strukturen & Beziehungen) • Funktionssicht → Notwendige Funktionen der Geschäftsprozesse und ihre Verbindung (Funktionshierarchiebäume) • Datensicht → Informationsobjekte (Umfelddaten, Ereignisse, Nachrichten): ER-Modellierung (S. 43) • Prozess- / Steuerungssicht → Verknüpfung aller Sichten & Ableitung / Beschreibung von Geschäftsprozessen: eEPK (S. 36) IM Kapitel 7 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz A. Kurmann 28 Seite 25 6. UML (Unified Modeling Language) IM UML ist heute die dominierende Sprache für die Softwaresystem-Modellierung: sie definiert wichtige Begriffe und legt mögliche Beziehungen zwischen diesen fest. Damit werden Arbeitsabläufe (Softwareentwickler) und Installationspläne (Systemingenieure) erstellt. → siehe Übung 8.2: UML 6.1. Ebenen der Modellierung Konzept-Ebene: Analyse / Domain / Requirements • Aktivitäts-Diagramme • DFD, Kontext-Diagramme Architektur-Ebene: Spezifikation • Komponenten, Parts, Ports • Datenfluss Implementations-Ebene: Programmierung • Sequenzdiagramme Abbildung 5: Modellierungsebenen UML-Diagramme sagen sowohl etwas aus über die Struktur („Strukturdiagramme“, linke Hälfte) sowie das Verhal- UML Metamodell: Diagramme ten („Verhaltensdiagramme“ und „Interaktionsdiagramme“, rechte Hälfte) von Software: UML Diagram Structure Diagram Class Diagram Behavior Diagram Component Diagram Object Diagram Composite Structure Diagram Activity Diagram Use Case Diagram Interaction Diagram Package Diagram Deployment Diagram Interaction Overview Diagram Sequence Diagram Communication Diagram IM HS13, Kp 8a State Machine Diagram 9 Timing Diagram M. Jud Abbildung 6: Metamodell von UML The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 26 6.2 Verhaltensdiagramme: Aktivitäten und Zustände 6.2. Verhaltensdiagramme: Aktivitäten und Zustände 6.2.1 Aktivitätsdiagramm Aktivitätsdiagramme modellieren das Verhalten von Systemen. Im Aktivitätsdiagramm werden Folgen von Aktionen (Abläufe), die zusammen eine Aktivität ergeben, dargestellt. Knoten sind durch Objekt- und Kontrollflüsse miteinander verbunden. Dabei unterscheidet man Aktions-, Objekt- und Kontrollknoten: Aktivitätsdiagramm Aktivität Parameter1: Typ Parameter2: Typ «precondition» Vorbedingung «postcondition» Nachbedingung Unterbrechbarer Aktivitätsbereich Signal {weight=5} (Partition B) Schritt 2 [Bed. 1] Eingangsparameter (Partition A) Schritt 1 Objektknoten [Zustand] (Partition A) Schritt 3 «datastore» Objektknoten Signal senden [Bed. 2] (Partition B) Schritt 4 [weiter] Ausgangsparameter [stopp] Schritt 4 Schritt 4.1 A B Schritt 4.3 Schritt 4.2 C {joinSpec = (A and B) or (A and C)} Teilung (Splitting) [x<0] Synchronisation (Und) Teilung und Synchronisation [x>0] Signal senden Zeitereignis empfangen [x<0] [x=0] Schritt 1 Schritt 1 Schritt 1 Objektfluss Oder-Semantik Kontrollfluss Und-Semantik Objektfluss Und-Semantik [x>=0] Entscheidung Reservierungswunsch aufnehmen Signal empfangen Spezifizierte Synchronisation Zusammenführung (Oder) Entscheidung und Zusammenführung Erzeuge Daten Abgebrochene Anfrage Ausnahme-Parameter (Exception) Partition A Partition B «parallel», «iterative» o.Ä. Mengenverarbeitung Reservierungswunsch Startknoten Eintrag {stream} Endknoten Eintrag {stream} Verarbeite Daten Ablaufende Eingangsmenge Einzelobjekt Mengenverarbeitung Einzelobjekt Ausgangsmenge Interaktionsübersicht sd Übersichtsdiagramm lifelines: x:Klasse1, y:Klasse2 Schritt 1 (Partition A) Schritt 1 Schritt 3 ref «datastore» Objektknoten Interaktionsverweis Schritt 2 [Abbruch] (Partition B) Schritt 2 (Partition A) Schritt 3 [ok] sd Interaktion y:Klasse2 x:Klasse1 P1 P2 Aktionsknoten P3 P4 P5 P6 P7 A Schritt 1 A nachricht() Schritt 2 © 2006 by oose.de GmbH Aktuelle Fassung, Info und Download: http://www.oose.de/uml Abbildung 7: Aktivitätsdiagramm UML-Notationsübersicht Teil 3/4 Signale (vgl. Oestereich, Kap. 2.5.4) erlauben z.B. die Synchronisation paralleler Prozesse. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 27 Unterpaket Komponentendiagramm 6.2 bereitgestellte Schnittstelle «component» Komponente Verhaltensdiagramme: Aktivitäten und Zustände «component» Komponente «component» Komponente genutzte Schnittstelle 6.2.2 «provided Zustandsdiagramm interfaces» Portname Port-B Schnittstelle X :Klasse A [1] Port-A Schnittstelle Multipledie Portsein Objekt im Laufe seines Lebens einnehmen «required interfaces» Ein Zustandsdiagramm zeigt eine Folge von Zuständen, kann und Schnittstelle Y Teil (part) Aktivitätsdiagramm aufgrund welcher Stimuli Zustandsänderungen stattfinden. (Oestereich, 2009) SSt-4 SSt-3 SSt-2 SSt-1 «realizations» 1 Klasse A :Klasse B Zustandsautomaten lassen sich mittels ZustandsdiagrammenAktivität modellieren: die Knoten beschreiben die Zustände (vgl. Klasse B «component» «precondition» Vorbed Nachb «artifact» Parameter1: Typ «artifacts» Komponentedie Zustandsübergänge komponente.jar als «postcondition» Oestereich, Kap. 2.6.1) während Kanten Parameter2: Typ (vgl. Oestereich, Kap. 2.6.2) dargestellt werden. komponente.jar «manifest» Zustandsdiagramme modellieren das dynamische Verhalten eines Systems und konzentrieren sich dabei auf die ReakUnterbrechbarer Aktivitätsbereich tionen dessen. Deshalb eignen sich diese sehr gut zurKommunikationsdiagramm Modellierung des Verhaltens von GUIs. (Kecher, 2011) Zustandsdiagramm Signal (Partition B) {weight=5} Obje [Zu Schritt 2 name {extended} Startzustand Seite 318 1:nachricht1() ereignis[bedingung]/aktion after(n Zeit) [x <= 0] [Bed. 2] fangen werden, finden die entsprechenden Symbole aus den entry/aktion do/aktion exit/aktion ereignis/aktion when(Zeit) :Lebenslinie Aktivitätsdiagrammen Anwendung. (Partition B) Schritt 4 Ausserden können gleich2:nachricht3() dem Aktivitätsdiagramm Entschei1.1:nachricht2() dungsrauten, Splitting und Synchronisation im Zustandsdia[weiter] [stopp] [x > 0] 1.2:nachricht3() gramm verwendet werden: Zustand {final} Sc 4 A abbruch Ausgangspunkt sd Protokollautomat {protocol} Zeitdiagramm Zustand 1 [x<0] [x>0] Zustand Lebenslinie x:Klasse2 [vorbedingung] aufruf() / [nachbedingung] Zustand A [x=0] Zeitbedingung {t..3*t} Teilung und Synchronisation nachricht2() nachricht1() t=now Entscheidung Zustand C Schri [x>=0] Zustandslinie Entscheidung und Zusammenführung (Oder){<10ms} © 2006 by oose.de GmbH Aktuelle Fassung, Info und Download: http://www.oose.de/uml Mengenverarbeitung Zeitskala UML-Notationsübersicht Teil 2/4Verarbeite Daten Erzeuge Daten Abgebrochene Anfrage Ausnahme-Parameter (Exception) Anwendungsfälle Objek Oder-Se Zusammenführung Abbildung 8: Zustandsdiagramm Reservierungswunsch Sek.: 0 1 2 e Spezifizierte Synchronisation [x<0] nachricht3() Zustand B Reservierungswunsch aufnehmen Sc C {joinSpec = (A and B) or (A and C)} Teilung Synchronisation (Splitting)Zustand 2 (Und) Zustand B Zeitdiagramm Zustand 6.2.3 Schritt 4 y:Klasse2 Endzustand state machine x:Klasse1 start2 H Zustand «datastore» Objektknoten sd Kommunikation (Partition A) EingangsWenn bei einem Zustandsübergang Signale gesendet oder empparameter Schritt 1 Zustand Seite 320 Zustand [Bed. 1] Eingangspunkt y:Klasse1 state machine Eintrag {stream} Eingangsmenge Eintrag {stream} Interaktionsü Partition A Partition B Anwendungsfalldiagramme (Use Case Diagrams) modellieren die Funktionalität eines SystemsEndknoten auf hohem AbstraktiStartknoten Ablaufende onsniveau aus Sicht des Anwenders (Black-Box-Sicht). Die Zusammenhänge zwischen einer Menge von Anwendungsfällen und den beteiligten Akteuren stehen im Zentrum (Oestereich, 2009): es werden nur die Anwendungsfälle definiert, die ein Anwender wahrnehmen kann und deren Schritt Ausführung ihm einen Nutzen bringt. 1 sd Übersichtsdiagra ref «datastore» Die Modellierung beschreibt, was für Anwendungsfälle das System anbietet und nicht, wie(Partition sie imA) SystemObjektknoten realisiert werden: Schritt 1 Schritt 3 Schritt 2 Merke: (Partition B) Schritt 2 (Partition A) Schritt 3 Die Anwendungsfalldiagramme beschreiben kein Verhalten und keine Abläufe. sd x:Kl Die Beschreibung der Anwendungsfälle (vgl. Oestereich, Kap. 2.1.7) ist P3 P4 wichtiger dabei P5 A selbst. Der alsSchritt das1 Diagramm AktionsAkteur (vgl. Oestereich, Kap. 2.1.13) hat eine wichtige Rolle P1 im Anwendungsfall-Diagramm. P2 knoten P6 P7 A Schritt 2 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz © 2006 by oose.de GmbH Aktuelle Fassung, Info und Download: http://www.oose.de/uml Seite 28 6.3 Strukturdiagramme Use Case Diagramme werden überwiegend während der Analyse und Definition im frühen Stadium eines Softwareprojekts eingesetzt. (Kecher, 2011) Anwendungsfalldiagramm Geschäftsanwendungsfall Anwendungsfall Geschäftsprozess Anwendungsfall Condition: {bedingung} extension point: ext. point ext. point «extend» «include» Abstrakter aktiver Geschäftspartner Systemanwendungsfall Spezialisierter Anwendungsfall Systemanwendungsfall «secondary» Sekundärer Anwendungsfall «secondary» Sekundärer Anwendungsfall «include» Stereotypisierte Klassen Akteur Passiver Geschäftspartner Konkreter aktiver Geschäftspartner Fremdsystem als Akteur Klassendiagramm Außenorientierter Geschäftsmitarbeiter «requirement» Anforderung «feature» EinFeature «include» Innenorientierter Geschäftsmitarbeiter Objektdiagramm «Stereotyp1, Stereotyp2» Abbildung 9: Anwendungsfälle in UML Paket::Klasse attribut Abstrakte Anwendungsfalldiagramm Klasse operation() Klasse Entity Objekt Boundary Control :Klasse Anforderungen (Requirements) werden grundsätzlichGeschäftswie Anwendungsfälle in Form von Ellipsen mit dem «Stereotyp1» Anwendungsfall anwendungsfall attribut = wert Aktive Geschäftsprozess Stereotyp «requirement» notiert. Klasse Anwendungsfall Objekt:Klasse ext. point Syntax für Attribute: Sichtbarkeit Attributname : Paket::Typ [Multiplizität Ordnung] = Initialwert {Eigenschaftswerte} Eigenschaftswerte: {readOnly}, {ordered}, {composite} Syntax für Operationen: Sichtbarkeit Operationsname (Parameterliste):Rückgabetyp {Eigenschaftswerte} attribut = wert Abstrakter aktiver 6.3. Strukturdiagramme Sichtbarkeit: Parameterliste: Richtung Name : Typ = Standardwert Geschäftspartner + public element Eigenschaftswerte: {query} # protected element Richtung: in, out, inout 6.3.1 Klassendiagramm – private element ~ package element «include» Parametrisierte Klasse<Parameter> Aktives Objekt System- i:Element Parametrisieranwendungsfall bare Klasse Systemanwendungsfall Spezialisierter Anwendungsfall Objekt «secondary» Sekundärer Anwendungsfall Ein Klassendiagramm (Class Diagram) beinhaltet die statischen Strukturbestandteile eines Systems, deren Eigen«include» schaften und Beziehungen. 2011) Vererbung Es fungiert als eine Art Bauplan für Objekte. (Kecher, Attributierte Assoziation Klasse1 Klasse1 Klasse2 Klasse2 Es gibt eine allgemeine Notation für Klassen (vgl. Oestereich, Kap. 2.2.1) und für spezielle Arten von Klassen wie Generics Stereotypisierte Akteur (vgl. Oestereich, Kap. 2.2.2), abstrakte Klassen (vgl. Oestereich, Kap. 2.2.3)Klassen und sog. aktive Klassen (vgl. Oestereich, Kap. «requirement» Passiver AssoziationsAnforderung Geschäftspartner klasse 2.2.4), die in einem Assoziation eigenen Thread laufen. Auch Enumerationen (vgl. Oestereich, Kap. 2.2.9) und Schnittstellen (vgl. OesteKlasse1 Klasse2 aktiver mit Klassendiagrammen dargestellt werden. Ein mächtiges Konzept der UML sind Stereotypen reich, Kap. Konkreter 2.2.10) können Geschäftspartner Fremdsystem Außenorientierter Innenorientierter als Akteur (vgl. Oestereich, Kap. 2.2.12) wie Entity, Control, Boundary. Geschäftsmitarbeiter Geschäftsmitarbeiter Aggregation Klasse1 gerichtete Assoziation Klassendiagramm Klasse2 «Stereotyp1, Stereotyp2» Paket::Klasse qualifizierte Assoziation Klasse1 Klasse2 Qualifizierer Abstrakte Klasse Klasse Klasse1 Realisierung Klasse2 Teil Ganzes Komposition attribut operation() Klasse1 «Stereotyp1» attribut = wert Obje Existenzabhängiges Teil Mehrgliedrige Entity Assoziation Control «inclu Boundary O Klasse2 Aktive Klasse Klasse3 Syntax für Attribute: UnabAbhängigkeit Abhängige hängige Sichtbarkeit Attributname : Paket::Typ [Multiplizität Ordnung] = Initialwert {Eigenschaftswerte} Klasse Klasse Eigenschaftswerte: {readOnly}, {ordered}, {composite} Multiplizität Syntax für Operationen: SichtbarkeitSchnittstelle Operationsname (Parameterliste):Rückgabetyp {Eigenschaftswerte} «Stereotyp» Anbieter Sichtbarkeit: + public element # protected element – private element "Stecker" ~ package element bereitgestellte Schnittstelle genutzte Schnittstelle "Buchse" Klasse1 Nutzer 1 Parametrisierte Klasse<Parameter> Leserichtung Beziehungsname Parameterliste: Richtung NameKlasse1 : Typ = Standardwert rolle Eigenschaftswerte: {query} Richtung: in, out, inout Anbieter «interface» Schnittstelle-A Klasse Vererbung Nutzer «interface» Schnittstelle-A Klasse2 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz © 2006 by oose.de GmbH Aktuelle Fassung, Info und Download: http://www.oose.de/uml * {ordered} Sichtbarkeit rolle A O Klasse2 i:Element Parametrisierbare Klasse «interface» Schnittstelle operation1() operation2() Klasse1 Notiz Attributierte Assoziation Seite 29 UML-Notationsübersicht Teil 1/4 Assoziations- «extend» «include» 6.3 er fall «secondary» Sekundärer «secondary» Anwendungsfall Sekundärer Anwendungsfall include» 6.3.2 Objektdiagramm Strukturdiagramme Wenn exemplarisch die Beziehungen zwischen einzelnen Objekten (statt allgemein zwischen den zu Grunde liegen«requirement» «feature» den Klassen) modelliert werden sollen, helfen Objektdiagramme (vgl. Oestereich, Kap. 2.4.1): ein Objektdiagramm (ObAnforderung EinFeature «include» ject Diagram) stellt eine Momentaufnahme der Objekte eines Systems dar, die nach dem Bauplan eines Klassendiagramms gebildet wurden. (Kecher, 2011) Objektdiagramm Objekt Boundary :Klasse ive sse Objekt:Klasse attribut = wert sierte ameter> Aktives Objekt i:Element trisierlasse Objekt Abbildung 10: Objektdiagramm Attributierte Assoziation 6.3.3 Klasse2 Komponentendiagramm AssoziationsEine Komponente ist eine spezielle Klasse, die eine austauschbare Einheit in einem System repräsentiert, deren Bestandteile klasse gekapselt sind. Die Funktionalität wird über Schnittstellen nach aussen zur Verfügung gestellt. (Oestereich, 2009) Komponentendiagramme eignen sich besonders für die Spezifikation von Softwarearchitekturen (Black-Box-Sicht). In der Phase des Entwurfs und Designs werden u.a. die Aufgaben grosser Softwaresysteme auf kleinere Subsysteme Aggregation Teil verteilt: Systeme, Subsysteme und deren Komponenten, d.h. die Laufzeitsicht, lassen sich hierarchisch mittels Kom- Komposition ponentendiagrammen (vgl. Oestereich, Kap. 2.4.2 / 2.4.3) beschreiben. Das Diagramm zeigt die Organisation und ExistenzAbhängigkeitenabhängiges der Komponenten und wird häufig parallel zu Verteilungsdiagrammen (siehe Kapitel 6.3.5) eingesetzt Teil (Kecher, 2011). Die linke Abbildung zeigt ein Beispiel für zwei Komponenten und von welchen Klassen sie realisiert werden: Mehrgliedrige Assoziation Klasse2 Klasse3 lizität Leserichtung «Stereotyp» Beziehungsname * {ordered} Sichtbarkeit rolle Klasse2 Eine Komponente wird als Rechteck notiert mit dem Schlüsselwort «component». Zusätzlich kann im rechten Bereich ein „Lego-Symbol“ eingezeichnet werden. «interface» Schnittstelle Notiz operation1() operation2() The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz UML-Notationsübersicht Seite 30 6.4 6.3.4 Interaktionsdiagramme Paketdiagramm Klassen, Anwendungsfälle und andere Modellelemente der Entwicklungssicht lassen sich hierarchisch in Paketdiagrammen (vgl. Oestereich, Kap. 2.4.4) zusammenfassen. Paketdiagramm Paket 1 Einsatz- un «merge» Paket 2 Paket Paket 1 Paket 1 «import» Paket 2 «access» Enthaltenes Unterpaket «database» Datenbank-Server «execut rdbms «artifact» Artefakt Paket 2 Paket «deployment specification» Deployment Spezifikation Enthaltenes Unterpaket Komponentendiagramm Abbildung 11: Paketdiagramm bereitgestellte Schnittstelle «component» Komponente 6.3.5 genutzte Schnittstelle Einsatz- und Verteilungsdiagramm (Deployment) «provided interfaces» Schnittstelle X «compone Kompone «component» Komponente Port-B :Klasse A [1] Wie die Komponenten eines Softwaresystems auf die Hardware verteiltPort-A werden kann mittels eines Deployment Multiple Ports «required interfaces» Diagramms (vgl. Oestereich, Kap. 2.4.6) beschrieben werden. Sie zeigen, welche Software (Komponenten, Objekte) Schnittstelle Y Teil (part) SSt-4 SSt-3 SSt-2 bestehen. SSt-1 auf welcher Hardware (Knoten)«realizations» laufen und welche Kommunikationsbeziehungen dort So definiert ein VerEinsatzund Verteilungsdiagramm aket 1 Klasse A «merge» Paket 2 also die Architektur teilungsdiagramm Klasse Beines verteilten Systems, wie sie zur Laufzeit vorgefunden wird. «component» Komponente «artifacts» komponente.jar aket 1 aket 1 «import» Paket 2 «access» «manifest» Client {OS = Windows XP} «database» Zustandsdiagramm Datenbank-Server myClientPrg.exe «executable» rdbms.exe «artifact» Artefakt Paket 2 state machine name {extended} Eingangspunkt1 Startzustand Paket «deployment specification» Deployment SpezifikationSeite 320 ereignis[bedingung]/aktion Zustand Seite 318 «artifact» komponente.jar after(n Zeit) Kommunikationsdiagramm 5 http/LAN sd «deploy» Kommunikation 1:nachricht1() Zustand :Lebenslinie «artifact» entry/aktion do/aktionArtefakt exit/aktion ereignis/aktion 2:nachricht3() when(Zeit) Abbildung 12: Deploymentdiagramm m gestellte nittstelle genutzte nittstelle [x <= 0] [x > 0] start2 umfasst auch Hardware und KommunikatiDie Definition beschränkt sich nicht auf Software-Umgebungen, sondern H onswege (Kecher, 2011). «component» Komponente 6.4. Interaktionsdiagramme Port-B 6.4.1 Zustand «component» Zustand Komponente {final} abbruch Endzustand :Klasse A [1] Port-A Multiple Ports Sequenzdiagramm Teil (part) Die Interaktion verschieden SSt-4 SSt-3 SSt-2zwischen SSt-1 Zustand Objekten Portname Zeitdiagramm Schnittstelle Ausgangspunkt sd Zeitdiagramm oder Rollen kann ablauffokussiert durch ein Sequenzdiagramm 1 ded} Objekten betont,«artifact» jedoch keine Informationen über Beziehungen der Objekte (Kecher, 2011). «manifest» komponente.jar state machine Protokollautomat {protocol} Zustand 1 nachricht2 Zustand Kommunikationsdiagramm [vorbedingung] aufruf() / [nachbedingung] The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Eingangs- Zustand Lebenslinie x:Klasse2 «component» Komponente y:Klasse1 (vgl. Oestereich, Kap. 2.7.2) modelliert werden. Dabei wird der zeitliche Ablauf des Nachrichtenflusses zwischen den Zustand 2 :Klasse B Zustand A Zustand B Zustand C nachricht1() Seite 31 t=now {<1 6.4 Interaktionsdiagramme Sequenzdiagramm sd Interaktion i:Integer sd x:Klasse1 Interaktion +lokalesAttribut:Typ z:Klasse3 ref Detailinteraktion y:Klasse2 x:Klasse1 nachricht() alt [i>0] y:Klas sync. Nachricht nachricht1() Antwort Zustand async. Nachricht [else] {i == 0} Lebenslinie nachricht2() Interaktionsverweis ref sd Zeitliche Zusicherungen x:Klasse1 Interaktionsverweis y:K Ausführung nachricht1() d=duration nachricht3() nachricht2() {0..12} t=now Selbstaufruf create {t..2*t} :KlasseX ObjektKonstruktion nachricht3() ObjektDestruktion Kompositionsstrukturdiagramm gerichtete Pfeile Nachricht bzw. Antwort, siehe dazu Abbildung 13 auf Seite 33 Observer Ausführungsbalken vertikaler Balken (→ Ausführung) gibt an, welche Rolle gerade aktiv ist Auto Lokale Attribute z.B. Schleifenzähler o.A. können oben links im Diagramm deklariert werden subject :Queue Erzeugen und Entfernen Erzeugen (Objektkonstruktion) durch eine Nachricht, die auf ein Rollensymbol trifft, angezeigt; vorne:Rad observe :scrollb Entfernen (Objektdestruktion) durch ein Kreuz am Ende des Steuerungsfokus. Zustände besagen, dass sich das Objekt zu diesem Zeitpunkt in dem genannten Zustand befindet antrieb Alternative Abläufe Es existieren vordefinierte Operatoren, beispielsweise alt, um alternative Abläufe und m :verschiedene Motor hinten:Rad /Rolle:Klasse Verzweigungen auszudrücken: Bedeutung Unified Modeling Language (UML) 2.1 - Notationsübersicht Operator Bed./Param. alt [bed. 1], [bed. 2], [sonst] «Stereotyp1, Stereotyp2» Paket::Klasse loop «interface» Schnittstelle minint, maxint, [bed.] Boundary «Stereotyp1» attribut = wert Abstrakte Klasse {abstract} Control Der Block wird als Schleife wiederholt für mind. minint-mal, Notiz Entity Kern-Geschäftsanwendungsfall i:Element Parametrisierbare Klasse Aktive Klasse Syntax für Attribute: Sichtbarkeit Attributname : Paket::Typ [Multiplizität Ordnung] = Initialwert {Eigenschaftswerte} Eigenschaftswerte: {readOnly}, {ordered}, {composite} Parametrisierte Klasse<Parameter> Multiplizität Leserichtung «Stereotyp» Beziehungsname 1 Klasse1 Multiplizität Ordnung * {ordered} «interface» Schnittstelle-A Anbieter «interface» Schnittstelle-A «business process» Geschäftsprozess (unterstützender ) Geschäftsprozess «derive» «derive» Schnittstelle-A Klasse2 Anbieter Abstrakter aktiver Geschäftspartner Systemanwendungsfall Spezialisierter Anwendungsfall nicht-navigierbares Assoziationsende Klasse1 Komposition Existenzabhängiges Teil Mehrgliedrige Assoziation Klasse1 Realisierung Klasse1 Klasse2 Stereotypisierte Klassen oose. oose Innovative Informatik GmbH, Straßenbahnring 7, 20251 Hamburg. Merke: Unterklasse2 Unterklasse3 Unterklasse5 Aktivität Parameter1: Typ Parameter2: Typ «precondition» Vorbedingung «postcondition» Nachbedingung Sponsoren Signal Eingangsparameter Paketdiagramm {weight=5} (Partition B) Schritt 2 :Klasse attribut = wert Unter www.o gibt es den U Enthaltenes Unterpaket Paket Startknoten (Partition A) Schritt 1 Objektknoten [Zustand] Endknoten Ablaufende (Partition A) Schritt 3 Signal empfangen «datastore» Objektknoten Signal senden [Bed. 2] Paket Objekt:Klasse {d..3*d} nachricht3() Unterbrechbarer Aktivitätsbereich Unterklasse6 [Bed. 1] Objektdiagramm y:Klasse2 nachricht2() {0..12} {t..2*t} :KlasseX Aktivitätsdiagramm Noch komprimierter ist unsere UML-Notationsübersicht auf einem Becher. Auch diesen können Sie bei uns bestellen: www.oose.de/becher Unter www.o können Sie n stehendes U beziehen. nachricht1() d=duration t=now create Sie können dieses Poster bei uns bestellen: www.oose.de/poster Diskriminator 3 Unterklasse1 x:Klasse1 nachricht3() Systemanwendungsfall «include» sd Zeitliche Zusicherungen Interaktionsverweis Wir unterstützen Sie mit Schulungen, Coaching, Beratung und Projektarbeit in den Bereichen Geschäftsprozesse, Analyse, Design, Architektur, Projektmanagement, Java/J2EE-Technologien, SystemsEngineering, Testen/Qualitätssicherung, Organisationsentwicklung, Soft-Skills und OO-Grundlagen. Generalisierung Diskriminator 1 Klasse2 Assoziationsklasse «include» Fremdsystem als Akteur Unterklasse4 Klasse1 nachricht2() ref «feature» EinFeature Innenorientierter Geschäftsmitarbeiter «requirement» Anforderung Innovative Informatik OberklasseB Diskriminator 2 OberklasseA y:Klasse2 Antwort async. Nachricht Klasse2 Qualifizierer Klasse2 Klasse3 «secondary» Sekundärer Anwendungsfall [else] {i == 0} Außenorientierter Geschäftsmitarbeiter Passiver Geschäftspartner Teil Ganzes x:Klasse1 nachricht1() Zustand «secondary» Sekundärer Anwendungsfall dieser Stelle eingebunden wird Nutzer Aggregation Klasse2 z:Klasse3 ref Detailinteraktion y:Klasse2 sync. Nachricht [i>0] Geschäftsentität Geschäftsanwendungsfall qualifizierte Assoziation Klasse1 Interaktion +lokalesAttribut:Typ x:Klasse1 alt «extend» Ausführung Klasse1 sd nachricht() ext. point «include» Unabhängige Klasse Abhängigkeit Abhängige Klasse Interaktion i:Integer Condition: {bedingung} extension point: ext. point Anwendungsfall Akteur Systemanwendungsfall Konkreter aktiver Geschäftspartner navigierbares Assoziationsende sd Dies ist ein Verweis auf ein weiteres Sequenzdiagramm, das an Klasse2 Sichtbarkeit rolle rolle Nutzer Klasse KernGeschäftsprozess Lebenslinie ref bereitgestellte Schnittstelle genutzte Schnittstelle Parameterliste: Richtung Name : Typ = Standardwert Eigenschaftswerte: {query} Richtung: in, out, inout «core business process» Kern-Geschäftsprozess aber maximal maxint-mal, falls die Bedingung [bed.] wahr ist Syntax für Operationen: Sichtbarkeit Operationsname (Parameterliste):Rückgabetyp {Eigenschaftswerte} Sichtbarkeit: + public element # protected element – private element ~ package element Sequenzdiagramm Anwendungsfall operation1() operation2() attribut operation() Anwendungsfalldiagramm Abstrakte Klasse Klasse UML 2.1 Verzweigung zu mehreren Möglichkeiten Klassendiagramm (Partition B) Schritt 4 Einer der führenden Fachverlage auf den Gebieten Mathematik, Informatik, Naturwissenschaften und Technik. Signal senden Ausgangsparameter Wenn eine Vielzahl der Ablaufmöglichkeiten ausgedrückt werden möchte, so verwendet man besser ein Aktivitäts[weiter] [stopp] Schritt 4 www.oldenbourg.de Enthaltenes Unterpaket Aktives Objekt Schritt 4.1 Objekt Objektverbindung (Link) Objekt1 «merge» Paket 1 Paket 2 Objekt2 Komponentendiagramm «import» Paket 1 1:nachricht1() :Klasse B hinten:Rad 1.1:nachricht2() state machine name {extended} ereignis[bedingung]/aktion Zustand [x <= 0] Übersichtsdiagramm H bereitgestellte Schnittstelle entry/verhalten do/verhalten exit/verhalten ereignis/verhalten «component» Komponente «manifest» [x<0] [x>0] observer :scrollbar [x>=0] Entscheidung Zeitdiagramm Einsatz- und Verteilungsdiagramm interaction Zeitdiagramm Zusammenführung (Oder) Schritt 1 Schritt 1 Schritt 1 «database» Datenbank-Server Zustand 2 Objektfluss Oder-Semantik Kontrollfluss Und-Semantik Objektfluss Und-Semantik «executable» rdbms.exe «artifact» Artefakt Zustand 1 Partition A Zustand Lebenslinie x:Klasse2 Zustand Reservierungswunsch aufnehmen Zustand A t=now http/LAN {<10ms} 1 Schritt 3 Eintrag {stream} Stream Eintrag Eintrag Verarbeite Daten Verarbeite Daten Ausnahme Schritt P1 P2 Aktionsknoten Schritt 2 (Partition B) Schritt 2 Schritt (Partition A) Schritt 3 Ausnahmebehandlung P3 P4 P5 P6 P7 Mengenverarbeitung «parallel», «iterative», «stream» 5 Client Zeitskala Eintrag {stream} Schritt 1 «deployment specification» Deployment Spezifikation Zustandslinie nachricht() Sek.: 0 1 2 Reservierungswunsch Abgebrochene Anfrage Ausnahme-Parameter (Exception) (Partition A) Schritt 1 nachricht3() nachricht1() Zustand B Zustand C Schritt 2 Objektfluß Schritt 2 Erzeuge Daten Partition B nachricht2() Protokollautomat {protocol} [vorbedingung] aufruf() / [nachbedingung] A Entscheidung und Zusammenführung Zeitbedingung {t..3*t} y:Klasse1 Zustand Schritt 2 Objekt [Zustand] Schritt 1 Erzeuge Daten SSt-2 SSt-1 [ok] state machine A [x<0] [x=0] subject :Queue «artifact» komponente.jar abbruch [Abbruch] Objekt [Zustand] Port-B SSt-4 SSt-3 Endzustand Schritt 2 Objekt [Zustand] Schritt 1 Port-A at(Zeitpunkt) Ausgangpunkt y:Klasse2 «datastore» Objektknoten Spezifizierte Synchronisation Schritt 1 «component» Komponente genutzte Schnittstelle [x > 0] Zustand {final} Interaktionsverweis Interaktion Teilung und Synchronisation start2 Geerbter Zustand interaction Übersichtsdiagramm lifelines: x:Klasse1, y:Klasse2 Synchronisation (Und) 1 Observer Eingangspunkt Zustand after(n Zeit) x:Klasse1 Teilung (Splitting) 2 /Rolle:Klasse Startzustand y:Klasse2 {joinSpec = (A and B) or (A and C)} 2 «artifacts» komponente.jar Zustandsdiagramm 1.2:nachricht3() sd antrieb m : Motor x:Klasse1 2:nachricht3() ref Schnittstelle Teil (part) «realizations» Klasse A Klasse B C Schritt 1 vorne:Rad :Klasse A [1] «required interfaces» Schnittstelle Y B Auto Portname «provided interfaces» Schnittstelle X Paket 2 interaction Kommunikation :Lebenslinie «component» Komponente «component» Komponente Paket 2 «access» Paket 1 Zeitereignis empfangen Kompositionsstrukturdiagramm A Kommunikationsdiagramm Schritt 4.3 Schritt 4.2 diagramm, ansonsten eine unübersichtliche, mehrfach verschachtelte Darstellung resultiert. «deploy» «artifact» Artefakt Eingangsmenge Einzelobjekt Mengenverarbeitung Einzelobjekt Ausgangsmenge myClientPrg.exe © Copyright 2006 by oose Innovative Informatik GmbH, Hamburg; Bezug dieses Posters über www.oose.de/poster Erfahrung nutzen, Ziele erreichen. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz © 2006 by oose.de GmbH Aktuelle Fassung, Info und Download: http://www.oose.de/uml oose. oose. Seite 32 Innovative Informatik Innovative Informatik UML 6.5 Beziehungen Observer: Definiert eine Abhängigkeit zwischen einem Objekt (ConcreteObject), dessen Beispiel: Observer-Pattern Status ändern kann (setState()), und einer Menge von Objekten (ConcreteObserver, ConcreteObserver2), die darüber informiert werden sollen: Paketdiagramm Paket 1 «merge» Einsatz- und Verteilungsdiagramm Paket 2 Paket Paket 1 Paket 1 «import» «access» Paket 2 Client {OS = Windows XP} «database» Datenbank-Server myClientPrg.exe «executable» rdbms.exe «artifact» Artefakt Paket 2 5 http/LAN 1 Enthaltenes Unterpaket Paket «deploy» «deployment specification» Deployment Spezifikation «artifact» Artefakt Enthaltenes Unterpaket Seite 7 Komponentendiagramm 6.4.2 «component» Kommunikationsdiagramm Komponente bereitgestellte Schnittstelle «component» Komponente «component» Komponente Die folgende Tabelle stellt die wichtigsten Elemente dergenutzte Sequenzdiagramme dar: Portname Schnittstelle Port-B kann rollenfokussiert durch ein Kommunikations«provided interfaces» Die Interaktion zwischen verschiedenen Objekten oder Rollen Schnittstelle X grafisches Element Bedeutung :Klasse A [1] Port-A Multiple Ports diagramm (vgl. Oestereich, Kap. 2.7.1) modelliert werden. Im Gegensatz zum Sequenzdiagramm setzt es den Fokus Schnittstelle auf «required interfaces» Schnittstelle Y Teil (part) die Kommunikationsbeziehungen der Objekte SSt-4 während einer Interaktion (Kecher, 2011). SSt-3 SSt-2 SSt-1 Eine «realizations» Lifeline: Klasse A Kommunikation zwischen bspw. Prozessen kann synchron oder asynchron Klasse B hiermit wird ein Teilnehmer an der Kommunikation «component» «artifact» «artifacts» beschrieben; Komponente komponente.jar komponente.jar «manifest» das kann ein Akteur, ein Objekt, ein String, ein Rechner, etc. kom1 1 :Klasse B ablaufen: • Bei synchronem Austausch müssen alle Partner zur gleichen Zeit an der Kommunikation teilnehmen. Beispiel: „Telefon“. sein Zustandsdiagramm Kommunikationsdiagramm • asynchrone Kommunikation erfolgt zeitversetzt. Beispiel: „E-Mail“. Ausführungssequenz (execution specification); state machine name {extended} Eingangszeigt an, dass der entsprechende Kommunikationspartner punkt aktivStartzustand ist; sd 1:nachricht1() aktiv ist er auch, wenn er auf eine Antwort wartet oder eine Zustand Seitenimmt 320 Nachricht entgegen Zustand synchrone Nachricht asynchrone Nachricht Antwort ereignis[bedingung]/aktion eine synchrone Nachricht: Seite 318 die Pfeilspitze after(n Zeit) ist ausgefüllt; when(Zeit) Kommunikation :Lebenslinie entry/aktion do/aktion exit/aktion ereignis/aktion x:Klasse1 1.1:nachricht2() 2:nachricht3() ein Methodenaufruf ist eine spezielle synchrone Nachricht <= 0] [x > 0] eine asynchrone [x Nachricht: die Pfeilspitze ist nicht ausgefüllt start2 H eine Antwortnachricht resultierend aus einem Methodenaufruf: Zustand die Linie ist gestrichelt; {final} die Darstellung von Antworten ist optional abbruch 1.2:nachricht3() y:Klasse2 Zustand Tab. 1. UML Elemente für Sequenzdiagramme Endzustand Abbildung 13: Kommunikationsdiagramm Zeitdiagramm 6.5. Beziehungen y:Klasse1 Das folgende Beispiel zeigt ein Kalkulationsobjekt, welches zwei synchrone Anfragen an ein Ausgangspunkt sd Datenbankobjekt schickt. Synchron sind diese Anfragen, weil die Kalkulation erst nach Erhalt der Zustand Nachricht fortgeführt werden kann. Am Ende der Kalkulation schickt das Objekt eine asynchrone Nachricht an ein Print Objekt. Diese Warteschlange des Objekts (diese kann auch von z.B. der Middleware für das Objekt zur Verfügung gestellt werden) speichert die Nachricht ab. Irgendwann wird das Print Objekt die Nachricht abholen undProtokollautomat den (print) Job ausführen. state machine {protocol} Zeitdiagramm Zeitbedingung {t..3*t} Zustand 2 Zustand 1 Zwischen den in einem UML Diagramm dargestellten Knoten (z.B. Klassen) kann es verschieden geartete Beziehungen nachricht2() geben: So lassen sich die Konzepte der Generalisierung bzw. Spezialisierung (vgl. Oestereich, Kap. 2.3.1) darstellen. Zustand Zustand nachricht3() Zustand A Lebenslinie x:Klasse2 [vorbedingung] aufruf()ist / die Assoziation (vgl. Oestereich, Kap. nachricht1() Die allgemeine Beziehung zwischen Klassen 2.3.2), die sich auch konkreter als [nachbedingung] Zustand B gerichtete Assoziation (vgl. Oestereich, Kap. 2.3.3), als Aggregation (vgl. Oestereich, Kap. 2.3.7) oder als Komposition (vgl. t=now Zustandslinie Oestereich, Kap. 2.3.8) modellieren lässt. Zustand C Sek.: 0 1 2 The Software Bakery©· 2006 Tobiasby Maestrini, oose.de Bruno GmbH Leupi, Marcel Burri, Ralph Kyburz Aktuelle Fassung, Info und Download: http://www.oose.de/uml {<10ms} Zeitskala Seite 33 UML-Notationsübersicht Teil 2/4 anwendungsfall Anwendungsfall anwendungsfall Sekundärer Anwendungsfall «secondary» Sekundärer Anwendungsfall «include» Passiver Geschäftspartner Konkreter aktiver Geschäftspartner Fremdsystem als Akteur Klassendiagramm Außenorientierter Geschäftsmitarbeiter «requirement» Anforderung attribut operation() «Stereotyp1» attribut = wert Entity Vererbung Assoziation Klasse1 Klasse1 gerichtete Assoziation Control Objekt Boundary Objekt:Klasse attribut = wert Parametrisierte Klasse<Parameter> Aktives Objekt i:Element Parametrisierbare Klasse Attributierte Assoziation Klasse1 Klasse2 Assoziationsklasse Klasse2 Aggregation Klasse2 Teil Ganzes Existenzabhängiges Teil qualifizierte Assoziation Qualifizierer Objekt Klasse2 Komposition Klasse1 :Klasse Aktive Klasse Parameterliste: Richtung Name : Typ = Standardwert Eigenschaftswerte: {query} Richtung: in, out, inout Klasse1 «include» Objektdiagramm Syntax für Attribute: Sichtbarkeit Attributname : Paket::Typ [Multiplizität Ordnung] = Initialwert {Eigenschaftswerte} Eigenschaftswerte: {readOnly}, {ordered}, {composite} Syntax für Operationen: Sichtbarkeit Operationsname (Parameterliste):Rückgabetyp {Eigenschaftswerte} Sichtbarkeit: + public element # protected element – private element ~ package element Beziehungen «feature» EinFeature Innenorientierter Geschäftsmitarbeiter «Stereotyp1, Stereotyp2» Paket::Klasse Abstrakte Klasse Klasse 6.5 Stereotypisierte Klassen Akteur Klasse2 Mehrgliedrige Assoziation Realisierung Klasse1 Klasse1 Klasse2 Klasse2 Klasse3 Abhängigkeit Abhängige Klasse Unabhängige Klasse Multiplizität Schnittstelle Anbieter "Stecker" bereitgestellte Schnittstelle genutzte Schnittstelle "Buchse" Nutzer Anbieter Klasse1 1 «interface» Schnittstelle-A «interface» Schnittstelle-A © 2006 by oose.de GmbH Abbildung 14: Assoziationen Aktuelle Fassung, Info und Download: http://www.oose.de/uml The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz * {ordered} Sichtbarkeit rolle rolle Klasse Nutzer Leserichtung «Stereotyp» Beziehungsname «interface» Schnittstelle operation1() operation2() Klasse2 Notiz UML-Notationsübersicht Teil 1/4 Seite 34 7. Prozess-Modellierung IM 7.1. Einführung in Geschäftsprozesse Betrieb = Einheit von zusammenwirkenden Personen und Produktionsmitteln zum Hervorbringen von Gütern und Leistungen. • zum Hervorbringen von Gütern und Dienstleistungen (Output) aus Eingangsmaterialien (Input) • für Dritte • mit dem Zweck der Erzielung eines Gewinns. Geschäftsprozesse in Unternehmen • Darstellung von Prozessen ... Definition 7: Geschäftsprozess Input Verarbeitung Output Ein Geschäftsprozess ist ein Ablauf von Aktivitäten, die der Erzeugung eines Produktes/einer Dienstleistung dienen. Er wird durch ein oder mehrere Ereignisse gestartet und durch ein oder mehrere Er- ... und Prozessketten eignisse abgeschlossen. Es liegt eine Organisationsstruktur zu Grunde. Definition eines Prozesses 1 A. Kurmann IM Kapitel 8 13 → siehe Übung 9.2: Tante Emma-Laden Ein von Prozess ist ein allgemeiner Ablauf mehrerer Schritte, 7.2. Modellierung Prozessen bei denen es sich um Aufgaben, Ausführungen, Arbeitsschritte oder Ähnliches handeln kann. Zwischen Definition 8: Prozess diesen Prozessabschnitten bestehen bestimmte Abhängigkeiten. Ein Prozess ist ein allgemeiner Ablauf mehrerer Schritte, bei denen es sich um Aufgaben, Ausführungen, Arbeitsschritte oder Ähnliches handeln kann. Zwischen diesen Prozessabschnitten bestehen bestimmte Abhängigkeiten. Beispiel: Urlaubsbeantragung Beispiel: IM Kapitel 8 Abbildung 15: Beispiel einer Urlaubsbeantragung (Prozess) A. Kurmann 25 Falls möglich sollten die einzelnen Prozess-Aktivitäten (Synonym: Funktion, Prozessschritt) parallelisiert werden. Damit spart man Zeit. Ein typischer Prozess umfasst: • • • • • Startereignis (Auslöser) – auch mehrere Aktivität(en) Sequenz Parallelität Abschlussereignis(se) – auch mehrere The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 35 7.3 Sprachen für die Prozessmodellierung: Beispiel EPK 7.3. Sprachen für die Prozessmodellierung: Beispiel EPK Ereignisgesteuerte Prozessketten (EPK) 7.3.1 Ereignisgesteuerte Prozessketten (EPK) Siehe Link: http://www.leed.ch/history/eepk/ Merke: Grundprinzip: auf eine Funktion folgt IMMER ein Ereignis – oder auf ein Ereignis IMMER eine Funktion! Hinweis: Wir unterscheiden für unsere Arbeit keine durch- Ereignisgesteuerte Prozessketten - Notation Antrag gestellt IM Kapitel 8 Antrag bearbeiten A. Kurmann Ereignis: Anfang oder Schlussereignis, Zwischenereignis Zustand des Prozess verändert sich gezogenen und gestrichelten Pfeile. 29 Funktion: Aktivität oder Prozessschritt Steuerfluss / Datenfluss: definiert Abhängigkeit zwischen Ereignissen und Funktionen V Konnektoren: Verzweigung oder Zusammenführung von Steuerflüssen UND V ODER X Exlusives ODER (XOR) IM Kapitel 8 A. Kurmann 30 → siehe Übung 9.4a: Urlaubsantrag 2.4.4 Verbotene Beziehungen Die beiden folgenden Verknüpfungen sind nicht erlaubt. Konnektoren 7.3.2 Beschreibung der verschiedenen Konnektoren 7.3.3 Verbotene Beziehungen Begründung: Von einem Ereignis läuft der Kontrollfluss zu mindestens zwei Funktionen. Welche Funktion ausgewählt wird, hängt von einem Entscheidungsprozess ab. Ein Ereignis kann aber keine Entscheidungen treffen ist eine Funktion! DieEntscheidung beiden treffen. folgenden Verknüpfungen sind generell bei (e)EPK nicht erlaubt: Ereignis 1 Ereignis 1 XOR Funktion 1 Funktion 2 Funktion 1 Funktion 2 Die ODER- / Exklusives ODER-Verzweigung funktioniert analog. Bei der ODER-Verzweigung können mind. 1, max. alle Ereignisse eintreffen. IM Kapitel 8 Begründung: Von einem Ereignis läuft der Kontrollfluss zu mindestens zwei Funktionen. Welche Funktion ausgewählt A. Kurmann 33 wird, hängt von einem Entscheidungsprozess ab. Merke: Ein Ereignis kann aber keine Entscheidung treffen – Entscheidungen treffen ist eine Funktion! The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 36 Erweiterte EPKs (eEPK) 7.4 Erweiterte EPK (eEPK): Rollen und Informationsobjekte 7.4. Erweiterte EPK (eEPK): Rollen und Informationsobjekte Um entsprechende Rollen und Informationsobjekte einer bestimmten Funktion zuordnen zu können, hält die erweiterte EPK (eEPK) die obige Notation bereit. IM Kapitel 8 A. Kurmann 36 → siehe Übung 9.4b: Kreditvergabe → siehe Übung 9.5: Bestellung ab Lager The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 37 8. Funktionsmodellierung IM 8.1. Objektorientierte Funktionsmodellierung: CRC-Karten Die CRC-Karten-Methode (CRC = Class – Responsibility – Collaboration) hilft bei der objektorientierten Funktionsmodellierung. Dabei identifiziert man zuerst alle Nomen und Verben in der Aufgabenstellung (bspw. mit der Verben/Nomen Methode). Anschliessend werden alle Nomen – die Klassen – auf eigene CRC-Karten geschrieben. Gleich darunter notiert man die Verantwortungen (Verben) dieser Karte und die Beziehungen zu anderen Karten. Nun spielt man alle erdenklichen Szenarios (Use Cases) durch und prüft ob alle Verantwortlichkeiten und Zusammenhänge notiert sind. Ist dies nicht der Fall, sollten diese ergänzt werden. Wichtig ist, dass man nicht von vornherein versucht Karten wegzulassen. Es kann sein, dass zusätzliche Karten beim Spiel hinzukommen. Beispiel einer CRC-Karte. Auf der Rückseite finden eine Die fertigen CRC-Karten können dann mehr oder weni- kurze Beschreibung dieser Karte sowie die enthaltenen Atger direkt als Klassen implementiert werden. tribute Platz. 8.2. Grundlagen der Dekomposition Die Grundidee der Funktionsmodellierung ist die Reduktion der Komplexität eines Informationssystems. Dies geschieht vortrefflich durch die Zerlegung dessen in einzelne, abgegrenzte Teileinheiten. Definition 9: Informationsmodell eines Software-Systems Ein Informationsmodell veranschaulicht das Software-System mit seinen Objekten sowie den Fluss der Informationen dazwischen. 8.2.1 Das Funktionsmodell Definition 10: Funktionsmodell eines Software-Systems Stellt das System dar als zusammengesetzte Bausteine, die eine klar eingrenzbare und beschriebene Funktionalität (Aktionen und Veränderungen der Daten) abdecken. Dies sind auf der Ebene der Systemarchitektur die Software-Systeme: • Subsysteme • Komponenten • Subkomponenten • Klassen • ... Merke: Ziel der Funktionsmodellierung ist also die Komplexitätsreduktion eines Systems durch die Zerlegung in einzelne Teileinheiten. Einzelne Teilsysteme sind Subsysteme, Komponenten, Subkomponenten und Klassen. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 38 8.2 Grundlagen der Dekomposition Abbildung 16: Funktionsbaum bzw. -hierarchie (links) sowie Funktion und Ereignis in EPK (rechts). 8.2.2 Grundprinzipien der Architektur Bei der Dekomposition werden die zwei Grundprinzipien unterschieden: 1. Separation of Concerns: Verantwortlichkeiten der jeweiligen Software-Subsysteme in undlagenTrennung der der Dekomposition a) fachliche Komponenten (senkrecht): basierend auf deren fachlichen Verantwortlichkeiten ie Trennung der erantwortlichkeiten Separation of Concerns“ ührt im Idealfall zu ner doppelten Modularisierung: fachliche Komponenten urch die Trennung der chlichen erantwortlichkeiten enkrechte Gliederung) Schichten oder durch die rennung der technischen erantwortlichkeiten waagerechte Schichtung) p 10-2 Separation of Concerns b) Schichten (waagrecht): basierend auf deren technischen Verantwortlichkeiten Präsentationsschicht Schnittst. Komp. 1 Anwendungskern Komp. 1 Pers. K 1 Datenzugriffsschicht Komp. 1 Schnittst. Komp. 2 Komp. 2 ... Pers. K 2 Komp. 2 ... Datenbank < Beispiel: 3-Schichten-Architektur Abbildung 17: Beispiel einer 3-Schichten-Architektur 9 2. Information Hiding: M. Jud Man zeigt einem Nutzer nur diejenigen Informationen, die er zur Erfüllung seiner Aufgabe braucht: a) OOP: Alle Daten sind „private“, Zugriff auf Daten von aussen nur über dedizierte Methoden b) Fassade, die den Zugriff auf ein ganzes Subsystem regelt und das Subsystem vor direktem Zugriff schützt c) Schichten-Architektur: Schicht n sieht nur Schicht n − 1, die anderen bleiben verborgen. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 39 Systementwicklung von Bedeutung, die verschiedene Aspekte von Funktionen modellieren. 8.3 Dekomposition von DV-Systemen (Funktionale Zerlegung) • Das Konzept der Funktion ist in etlichen Methoden der Systementwicklung von Bedeutung, die verschiedene Im Bereich technischer Datenverarbeitungs-Systeme (DV-Systeme) kennt man die Leittechnik-Pyramide. Dabei kommt Aspekte von Funktionen modellieren. jeder Ebene der Pyramide eine eigene Aufgabe in der Produktion zu, wobei es je nach betrieblicher Situation fliesIM HS13, Kp 10-2 8.2.3 6 Die Leittechnik-Pyramide sende Grenzen gibt. IM HS13, Kp 10-2 M. Jud 6 Unternehmensebene Betriebsleitebene Planen Planung Disposition (Prozess-) Leitebene Operation Steuerungsebene Sicherheit Feldebene Ebene Aufgaben Unternehmensebene Produktionsgrobplanung, Bestellabwicklung Betriebsleitebene Produktionsfeinplanung, Produktionsdatenerfassung, KPI- 11 Ermittlung , Material-Management, Qualitätsmanagement Bedienen und Beobachten, Rezeptverwaltung und Ausführung, (Prozess)leitebene Messwertarchivierung Steuerungsebene Steuerung, Regelung Feldebene Schnittstelle zum technischen Produktionsprozess über Ein- und Ausgangssignale 8.3. Dekomposition von DV-Systemen (Funktionale Zerlegung) Technische DV-Systeme werden meist entlang der Grenzen der elektrischen / mechanischen Systemkomponenten, welche diese steuern, zerlegt. Kriterien: • Sicherheit • „Intelligenz“ • Art der Kommunikation • Fehler- und Alarmierungspropagation → siehe Übung 10.2: Funktionale Zerlegung 8.3.1 Software-Kategorien Der erste Schritt bei der funktionalen Zerlegung eines Systems ist daher die Aufstellung von Software-Kategorien und die Analyse der Abhängigkeiten dazwischen. 11 Als Der Key Performance Begriff fasst alle Indicators werden betrieblichen Schlüsselkennzahlen Kenngrössen, die in bezeichnet, irgendeiner die Form die unternehmerische Erfolge bzw. Misserfolge Leistung widerspiegeln. abbilden, zusammen. (http://www.controllingportal.de/Fachinfo/Kennzahlen/Key-Performance-Indicators-KPI.html) The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 40 M. Jud 8.3 Dekomposition von DV-Systemen (Funktionale Zerlegung) Definition 11: Software-Kategorie Eine Software-Kategorie bestimmt in grober Übersicht, was das System tut, kann und weiss (im Sinne von „KnowHow“ eines bestimmten Gebietes). Techniken und Tools Die entstehenden Kategorien liefern bereits eine erste grobe Aufteilung des Systems in funktionale Bausteine (z.B. Komponenten). • Deployment-Diagramme unterstützen die Modellierung verteilter Systeme. Subsysteme und Komponenten 8.3.2 Deployment-Diagramme können Knoten zugeordnet werden. Die Kommunikationsverbindungen zwischen denSysteme: Knoten Deployment-Diagramme (siehe Kapitel 6.3.5) unterstützen die Modellierung verteilter Subsysteme und Komponenten können Knoten zugeordnet werden werden, Kommunikationsverbindungen undsich Abhängigkeiten zwischen kann dargestellt und bei Bedarf lassen den Elementen werden aufgezeigt. Abhängigkeiten zwischen den Elementen aufzeigen. :Web Server TCP/IP anOracleDB:DB Server :Oracle.Dll :Regist. App Database TCP/IP :Windows PC :Regist Applet :Browser Techniken und Tools 8.3.3 IM HS13, Kp 10-2 Komponenten-Diagramme M. Jud 25 • Komponentendiagramme unterstützen dieunterstützen Strukturierung von Systemen Komponentendiagramme die Strukturierung von Systemen in Subsysteme und Komponenten. in Subsysteme und Komponenten. System «subsystem» A «component» A1 «subsystem» B «component» A2 IM HS13, Kp 10-2 26 «component» B1 M. Jud → siehe Übung 10.3: Funktionale Zerlegung CIS The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 41 9. Kontextdiagramm IM Das Kontextdiagramm veranschaulicht in der Konzeptionsphase das Umfeld des zu realisierenden IT-Systems. Inbesondere wird klar abgegrenzt, was zum Aufgabenbereich des IT-Systems gehört und was nicht (Inhalte & Rollen). Weiter veranschaulicht es grob, welche Informationen in das System hinein fliessen und welche Informationen das System liefern kann. In der Praxis werden Kontextdiagramme durch Use Case-Diagramme12 (UML) ausgedrückt. Kontextdiagramm Das Kontextdiagramm zeigt auf, welche Schnittstellen der Umsysteme zum eigentlichen Projekt vonnöten sind und wie die Datenflüsse laufen. Die Architektur ist oft sehr komplex und somit oft teuer zu implementieren. Stammdaten CMS Kundentermine Outlook Client Manager User Dialog Marktdaten Factiva Treaty IUF Underwriter Performance pro Produktlinie SRS CIS Verträge GFS DB Tools Schadenszahlen Helpdesk CMP DWH Autorisierung Auswertung / Reports RBAM Archivdaten GroupManager Archive Abbildung 18: Beispiel eines Kontextdiagramms für CIS (Customer Information System). Dabei steht das System (bzw. dessen Grenzen) im Zentrum; links davon Inhalte (Systeme) und Informationsfluss, rechts die Akteure / Rollen. Die Pfeile in der Abbildung zeigen dabei die Flussrichtung der Information. Hier gibt es auch bidirektionale Verbindungen13 . Oftmals müssen auch die Systeme der Gegenseite für den Informationsfluss angepasst werden. Diese entstehenden Kosten «müssen» dann auch vom Projekt getragen werden. Merke: Anschliessend an die schematische Darstellung des Kontextdiagramms werden alle Schnittstellen und Datenflüsse sehr detailliert und einzeln dokumentiert. → siehe Übung 11.1: AlpineRe „Kontext-Diagramm“ 12 13 Dabei lässt man die eigentlichen Use Cases weg und zeigt nur Systemgrenze sowie beteiligte Inhalte (links) bzw. Akteure / Rollen (rechts) auf. diese sind oft teuer, da mehrere Systeme betroffen sind The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 42 10. Datenmodellierung 12.1 Einführung 10.1. Begriffe IM Begriffshierarchien Daten Angaben über Sachverhalte und Vorgänge auf- grund bekannter oder unterstellter Abmachungen in einer maschinell verarbeitbaren Form. (DIN 44 300) Datenbank selbständige, auf Dauer und für den flexiblen und sicheren Gebrauch ausgelegte Datenorganisation. Datenmodell Formale Beschreibung des Schemas, z. B. in Form eines Diagramms oder einer Datenstruktur. • Strukturierte Darstellung der Daten der Diskurswelt mit einem formalen Beschreibungsmittel Datenmodellierung Prozess, der sicherstellen soll, dass eiIM Kapitel 11 A. Kurmann ne Datenbasis zu jedem Zeitpunkt ein korrektes Abbild der Diskurswelt wiedergibt. Einführung: Datenmodell - Datenmodellierung 10.2. Datenmodellierung 1) Abbildung= 19: Datenmodell –Datenmodell Datenmodellierung 1) In der Praxis: Semantisches Logisches IM Kapitel 11 A. Kurmann 13 10.3. Informations(struktur)modell Definition 12: Informationsmodell Ein Informationsmodell ist eine grafische Darstellung und verbale Beschreibung von Informationsobjekten, ihren Beziehungen und Attributen. Ziel eines Informationsmodells ist es, eine abstrakte, vereinfachte Sicht der Realität darzustellen, welche trotzdem alle wichtigen Elemente und die relevanten Beziehungen wiedergibt. Das Informationsmodell schafft damit eine gemeinsame Sprache: es dient gleichzeitig als Ausgangspunkt für die spätere IT-Umsetzung (Datenmodell / Datenbankdefinition), als auch als Verständigungsbasis für alle Beteiligten. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 43 6 10.4 10.3.1 Entity-Relationship Modell (ER-Modell) Informationsobjekte Objekte der Warnehmung oder Vorstellung, • • • • • die vom Menschen beschrieben und unterschrieben werden können die in Bezug auf die gegebene Problemstellung relevant sind Merkmale charakterisieren die zugehörigen Informationsobjekte Gleichartige Merkmale werden als Ausprägungen einer gemeinsamen Merkmalsklasse verstanden Alle Merkmale, die einem Informationsobjekt zuzuordnen sind, werden als charakterisierende Merkmalskombination bezeichnet 10.3.2 12.2 Verknüpfungen zwischen Informationsobjektklassen: Schritt 3 Verknüpfung zwischen Informationsobjektklassen Verknüpfungstypen Verknüpfungstypen • Nach der Kardinalität: 1:1, 1:N oder M:N • Nach der Kardinalität: 1 : 1, 1 : N (bzw. 1 : mc) oder M : N (bzw. m : mc) oder anderen Verknüpfungskombinationen • Nach der Optionalität: feste oder optionale Verknüpfungen • Nach der Optionalität: feste oder optionale Verknüpfungen c Professoren Professoren 1 besetzen geben c mc Lehrstühle Vorlesungen sind Voraussetzung c mc für Testate Studenten mc hören mc Prüfungen Vorlesungen Abbildung 20: Verknüpfungstypen IM Kapitel 11 10.3.3 A. Kurmann 17 Vorgehen bei der Informationsstrukturierung • Definition der Informationsobjekte und ihrer Merkmale (Eigenschaften) • Definition der Informations-KLASSEN unter Berücksichtigung der – relevanten Informationsobjekte – der charakterisierenden und identifizierenden Merkmalsklassen und -kombinationen – vollständigen Auflistung der relevanten Merkmale • Definition der Verknüpfungen zwischen den ausgewählten Informationsklassen unter Berücksichtigung der – Qualifizierung der Verknüpfungen – Auflösung komplexer Verknüpfungsstrukturen 10.4. Entity-Relationship Modell (ER-Modell) • semantisches Datenmodell nach P. Chen (1976) • Grafische Darstellungsform verbreitet in verschiedenen Notationen – IDEF1X Federal Information Processing Standards – IE (Informations Engineering) nach James Martin (auch „Krähenfuss Notation“) • insbesondere Vorbereitung für logisches Datenmodell vom Typ Relationenmodell • Vielfache Erweiterung – EER (Erweitertes ER-Modell) mit Min-Max-Notation – SER (Strukturierte ER-Modell) mit Subtypen- und Generalisierungshierarchien The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 44 10.5 10.4.1 Vereinfachtes ER-Modell und Regeln Strukturelemente im ER-Modell • Eine Entity ist ein unterscheidbares Objekte der Realwelt, das ein reales Objekt oder eine gedankliche Abstraktion darstellen kann. • Ein Entity-Typ ist eine Zusammenfassung von gleichartigen Entities, welche die gleichen Eigenschaften besitzen. Entity-Typen stehen für Mengen von Objekten. • Die Eigenschaften eines Entity-Typs werden Attribute genannt. – Jedes Attribut hat einen bestimmten Wertebereich. – Ein Attribut oder eine Attributmenge, das jede Entity eines Entity-Typs eindeutig identifiziert, heisst Schlüssel bzw. Schlüsselkandidat. – Existieren mehrere Schlüssel für einen Entity-Typen, dann wird einer als Primärschlüssel ausgewählt und als solchen entsprechend bezeichnet (Unterstreichung). • Eine Beziehung (Relationship) ist eine Verknüpfung von zwei oder mehreren Entities. • Ein Beziehungstyp (Relationship-Typ) ist eine Zusammenfassung von gleichartigen Beziehungen, welche zwei EntityTypen miteinander verknüpfen. 12.3 Mögliche Beziehungen zwischen Entity-Typen 10.4.2 Mögliche Beziehungen zwischen Entity-Typen Schlitten Nikolaus Kind Schmutzli Abbildung 21: Beziehungstypen in der CHEN-Notation (links) und Beispiel in der Krähenfussnotation (rechts) A. Kurmann IM Kapitel 11 26 → siehe Übung 12.4: Weiterbildungszentrum 12.5 Das klassische ER-Modell wird zu... 10.5. Vereinfachtes ER-Modell und Regeln • Relationship-Typen weglassen, stattdessen die Be- Studenten zeichnung der Beziehungen der beiden Entitäten m hören > mc < wird gehört angeben (z.B. „hören >“, „< wird gehört“) • Definition der Attribute in einem separaten Dokument • kurze Beschreibung pro Entitätsmenge und Attribut Beziehungen werden häufig mit Verben benannt. Für die 2 Leserichtungen passen häufig Aktivund Passivform. (ebenfalls in separatem Dokument), siehe Beispiel zeichnet (Unterstreichung) wird gelesen ↓ liest ↑ „Informationsmodell“ im Kapitel 10.6 • das primäre Schlüsselattribut (primary key) wird ausge- Vorlesungen mc 1 Das Kapitel 10.6 enthält ein Informationsmodell mit allen beschriebenen Eigenschaften. IM Kapitel 11 Professoren A. Kurmann → siehe Übung 12.6: CMDB IT-Betrieb (die Übung zeigt eine Modellierung als vereinfachtes ER-Modell) The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 45 43 10.5 10.5.1 Vereinfachtes ER-Modell und Regeln Generalisierung 14 Das Prinzip der Generalisierung wird eingesetzt, um eine übersichtlichere und natürlichere Strukturierung der EntityUni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Typen zu erzielen. Gemeinsame Eigenschaften (Attribute und Beziehungen) ähnlicher Entity-Typen werden „herausfaktorisiert“ und einem gemeinsamen Obertyp zugeordnet. es unterschiedliche wobei die folgende am engsten an die E-R- die nicht allen UntertyDie beteiligten Entity-Typen sind dannStrategien, Untertypen dessich jeweiligen Obertyps. Eigenschaften, Modellierung hält: pen gemeinsam sind, bleiben beim entsprechenden Untertyp. Wir verwenden für die Kennzeichnung die Bezeichnung • Für jeden Entitätstypen E in der Generalisierungshierarchie gibt es eine is-a mit dem Raute-Symbol. Relation mit den Schlüsselattributen des Obertypen und den Attributen von E Fachgebiet Rang is_a WissMitarbeiter RaumNr UniAngestellter Professor Name PersNr UniAngestellte : {[PersNr, Name, RaumNr]} Professoren : {[PersNr, Rang]} WissMitarbeiter : {[PersNr, Fachgebiet]} 10.5.2 Eine Alternative wäre die Überführung des abgeleiteten Entitätstypen E in eine Relation, die als Attribute alle Attribute des Obertypen sowie die Attribute von E besitzt. In dieser Variante würden in der Relation des Obertyps nur Instanzen 11 Spezialisierunggespeichert, die zu keinem der Subtypen gehören. UniAngestellte : {[PersNr, Name, RaumNr]} Die Spezialisierung ist die inverse Operation zur Generalisierung. Professoren : {[PersNr, Name, RaumNr, Rang]} WissMitarbeiter : {[PersNr, Name, RaumNr, Fachgebiet]} Zusammenführen von Relationen Die direkte Überführung wie oben beschrieben liefert oft nicht die bestmöglichen Relationen. Oft kann man nun noch Relationen zusammenführen. Allgemein gilt: Relationen mit dem gleichen Schlüssel kann man zusammenfassen (aber auch nur diese). Ein binärer Beziehungstyp R zwischen Entitätentypen E und F, an dem mindestens einer der beiden beteiligten Entitätstypen (sagen wir E) mit Funktionalität 1 teilnimmt, kann mit der E entsprechenden Relation zusammengeführt werden. Dazu führt man eine Relation mit folgenden Attributen ein: • die Attribute von E • die Primärschlüsselattribute von F Merke: • die Attribute der Beziehung R Kennzeichnend ist die Vererbung von Eigenschaften (Untertypen erben von Obertypen). Praktikum Datenbanken / DB2 Seite 3 von 5 Woche 3: Relationenschemata, 1. Normalform → siehe Übung 12.7: AlpineRe „Informationsmodell“ (die Übung zeigt eine komplette Modellierung inkl. Dokumentation) 14 http://www2.tcs.informatik.uni-muenchen.de/lehre/lehrerausbildung/db_ermodell.pdf The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 46 Swiss Risk Trading and Reinsurance Company Schweizerische Risikohandels- und Rückversicherungsgesellschaft Projekt CIS Information Model 1. Übersicht mc 1 mc m Personal 1 Contract mc m m 1 nimmt teil > gehört zu > mc 1 mc Meeting 1 1 Client is-a m c hat Teilnehmer > m < gehört zu 1 Alpine®Re < Kontakt von < Neuigkeit von hat > Company mc FinancialInstrument mc NewsArticle m ClientContact Das vorliegende Business Information Model wurde aufgrund der verfügbaren Unterlagen als Basis für die Entwicklung des Prototypen/Proof of Concept erarbeitet. Diese Version ist noch nicht endgültig! c FrameClaim m 1 mc incomingPayment ContractSection Group teilnehmer > Die Einzelheiten zu den Informationsobjekten sind in den nachfolgenden Objektbeschreibungen zusammengestellt. Fallstudie Alpine Re Teil 1: Die Unternehmung 1/6 Swiss Risk Trading and Reinsurance Company Schweizerische Risikohandels- und Rückversicherungsgesellschaft ClientID Eindeutige Client-Nummer. Diese wird bei der Erfassung des Kontakts vergeben und bleibt anschliessend unverändert. Der Kontakt gehört zu einem bestimmten Client und arbeitet für diesen. Alpine®Re Anmerkungen Bezeichnung / Verschlagwortung Ansprechpartner des Clients in Frage kommen. Wichtige Attribute Bezeichner Rolle, welche der Kontakt gegenüber Alpine®RE einnimmt £ Ein ClientContact wird einem bestimmten Client zugeordnet Rolle Beziehungen NewsArticle [Kundenmitteilung] Nachrichtensendung, Nachrichten Bemerkung Verwandte Begriffe Eindeutige Nummer. Diese wird von der Factiva-DB erzeugt und bei der Erstellung eines neuen NewsArticles vergeben. Der Wert bleibt anschliessend unverändert. Definition Factiva_NewsID Bezeichnung / Verschlagwortung £ Ein NewsArticle kann mehreren Clients zugeordnet werden Headline FACTIVA besitzt die Möglichkeit, Mitteilungen für Kunden zielgerichtet zu erstellen. Diese werden in Form von News-Artikeln im CIS hinterlegt und bestimmten Kunden zugeordnet. Anmerkungen Wichtige Attribute Beziehungen FinancialInstrument [Zahlungsmittel] Wichtige Attribute Anmerkungen Definition Verwandte Begriffe £ siehe Diagramm Bezeichner FinanceInstrID Bezeichnung / Verschlagwortung Identifikation des FinancialInstruments Beispiel: ISIN, IBAN, Scheck Als FinancialInstrument gilt ein (1) bevorzugtes Zahlungsmittel, welches in Verbindung mit einem Client benützt wird. Geld, Währung, Valuta, Kapital, finanzielle Mittel Bemerkung Beziehungen Bemerkung Besprechung, Zusammenkunft, Treffen, Sitzung Informationen kommen aus vorhandenem CMS System. Meetings [Sitzung] Verwandte Begriffe Identifikation des Meetings Definition MeetingID 3/6 Ein Meeting ist ein Treffen zwischen einem oder mehreren Mitarbeitern und einem Client. An diesem werden gewisse Dinge geklärt, vereinbart und Verträge unterzeichnet. Anmerkungen Wichtige Fallstudie Alpine Re Teil 1: Die Unternehmung Seite 47 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Claim mc outgoingPayment < wird kategorisiert < underwriter von Im Modell sind vier Themenbereiche farblich unterschieden: Bereich Kundeninformation (gelb), Vertrag (grün), Schaden (blau) und Zahlung (rot). Nicht überraschend für ein Kunden Informationssystem ist der Bereich der Client Information der am stärksten detaillierte. Payment is-a < hat < beinhaltet gehört zu > < hat Beispiel eines Informationsmodells 10.6 10.6. Beispiel eines Informationsmodells 11. Systemdesign IM 11.1. Einflussfaktoren & Vorgehen Es gibt kein deterministisches Verfahren, das in jedem Fall zu guten Software-Architekturen führt. Wesentliche Schritte, die zu einem guten Systemdesign führen, sind: 1. Informationen sammeln 2. Systemidee entwickeln 3. Einflussfaktoren und Randbedingungen würdigen 4. Risiken identifizieren 5. Qualität explizit beschreiben 6. Lösungsstrategien entwickeln 11.1.1 Informationen sammeln Gute Lösungen lassen sich in der Regel auf bekannte Dinge zurückführen, völlig eigenständige Ansätze sind oft unnötig aufwändige Folgen mangelhafter Recherche und nicht wirklich genial. • Wie haben andere vor Ihnen ähnliche Probleme gelöst: – Lassen sich Ergebnisse anderer Projekte in der Organisation wieder verwenden? – Sind im Internet ähnliche Systeme beschrieben, kann man möglicherweise sogar geeignete Komponenten kaufen? – Passen Referenzarchitekturen, Architektur- oder Entwurfsmuster auf die Problemstellung? 11.1.2 Systemidee entwickeln Die Systemidee ist die Grundlage sowohl für die Abstimmung mit dem Kunden / Auftraggeber als auch mit dem Projektteam. Sie ist zudem die Basis für künftige weitere Entwurfsentscheidungen. • Systemidee: – Kernaufgabe Ein Satz, was das System macht + fünf Schlüsselbegriffe der Fachdomäne. – Nutzungsart und Nutzer Online / Decision Support / Batch / Embedded. Benutzergruppen und -oberflächen. – Schnittstellen Beziehungen zu andern Systemen, Daten und Mengen, Kontrolle, synchron / asynchron. – Datenhaltung Persistenz: wo / Datenvolumina / Integrität / Transaktionen / Sicherheit / Recovery. – Kontrolle event-driven / prozedural / parallel / regelbasiert. 11.1.3 Einflussfaktoren und Randbedingungen würdigen Ingenieure tendieren dazu, organisatorische und politische Faktoren zu unterschätzen. Das kann im Extremfall dazu führen, dass an sich lauffähige Systeme realisiert werden, die aber nie zum Einsatz kommen. Faktoren, die möglicherweise für das Systemdesign relevant sind: – Organisatorische und politische Faktoren: Die Politik – und nicht die Technik (!) – bestimmt, was in einem Projekt erreicht werden kann → politische Stakeholder identifizieren und deren Ziele verstehen. Vorgehen, Werkzeuge und Ressourcen sind meist durch die Organisation vorgegeben. – Technische Faktoren: vorhandene Hard- und Software-Infrastruktur, Frameworks, Libraries, Datenstrukturen, Schnitt- stellen und Methoden – System- bzw. Produktfaktoren: funktionale Anforderungen und Features / nicht-funktionale Anforderungen; z.B. Per- formance, Flexibilität etc. / geforderte Verfahren und Techniken / Abhängigkeit von anderen Systemen. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 48 11.1 11.1.4 Einflussfaktoren & Vorgehen Risiken identifizieren Entwurfsentscheidungen und Projektrisiken beeinflussen sich gegenseitig. Ein gutes Risikomanagement hilft Entwurfsentscheidungen so zu fällen, dass bestehenden Risiken aus dem Weg gegangen wird ohne dabei neue Risiken in Kauf zu nehmen. Typische Risiken in Softwareprojekten sind: • • • • • Unterschätzer Aufwand und Komplexität überschätzte Ressourcen-Verfügbarkeit (Personen und Sachen) Ungeeignete Ressourcen (Personen und Sachen) Unzuverlässige Basissysteme und Drittsysteme (Schnittstellen) Unvollständige, widersprüchliche und instabile Anforderungen 11.1.5 Qualität explizit beschreiben Qualität entsteht nicht von selbst – sie muss konstruiert werden. Qualitätsmerkmale sind Entwurfsziele. Qualitätsmerkmale wie Performance, Wartbarkeit und Verständlichkeit sind nur auf der Grundlage eines entsprechenden Systemdesigns erreichbar. Starke (2008) empfiehlt, Szenarien dafür einzusetzen und so Qualitätsmerkmale zu operationalisieren und praxisgerecht zu konkretisieren: Anwendungsszenarien: beschreiben geforderte Funktionalität und Performance Beispiel: Die Benutzeranfrage muss in 0.5 Sekunden beantwortet werden. Änderungsszenarien: beschreiben den Aufwand für absehbare Änderungen am System Beispiel: Die Portierung auf eine andere Plattform muss innert 50 Personentagen möglich sein. Stress- und Grenzszenarien: beschreiben, wie das System auf Extremsituationen reagiert Beispiel: Das redundante System muss für die Benutzer innert 5 Minuten wieder erreichbar sein. 11.1.6 Lösungsstrategien entwickeln Für die typischen Herausforderungen bei Softwareprojekten gibt es zwar keine „silver bullets“ (Brooks, 1986) aber immerhin erprobte Strategien bei. . . Mangel an Zeit, Budget und Erfahrung: Enge Kooperation mit dem Projektmanagement, Offenlegen der Risiken, Etap- pierung der Auslieferung, Anpassung der Anforderungen, und: „addig people to a late project makes it even later“. Performanceproblemen: Optimieren nur, wenn z.B. durch Profiler-Systeme „Bottlenecks“ identifiziert sind; zusätzliche oder leistungsfähigere Hardware ist billiger als Optimieren, ungünstige Verteilung und suboptimale Kommunikation sind Ressourcenfresser. Problemen mit Anpassbarkeit und Flexibilität: Subsysteme und Komponenten über Adapter, Fassaden, Proxies, ent- koppeln; explizite Interfaces vorsehen, Konfigurationsdaten in Dateien statt im Code. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 49 11.2 Von der Idee zur Struktur Begrifflichkeit und Strukturen aus: Starke G., Effektive Software-Architekturen, © 2008 Hanser Verlag München Einflussfaktoren & Vorgehen Aktivitäten 11.1.7 – Aktivitäten Einige der Aktivitäten aus deraus Abbildung links können par• Einige der Aktivitäten allel stattfinden – im Kopf oder auf verschiedene Personen Abbildung können parallel verteilt. In jedem Fall sollte regelmässig geklärt werden, stattfinden - in Ihrem Kopf welche Anforderungen und Einflussfaktoren sich geändert oderhaben. auf Darauf verschiedene hin sind eventuell bereits gefällte EntscheiPersonen verteilt. dungen zu überarbeiten und die Architektur eines Systems sogar anzupassen. • In jedem Fall klären Sie regelmässig, welche Anforderungen und Einflussfaktoren sich geändert haben. • Darauf hin müssen Sie eventuell Ihre Entscheidungen überarbeiten und die Architektur Ihres Einflussfaktoren & VorgehenSystems – Iterationen anpassen. 11.1.8 Iterationen Begrifflichkeit und Strukturen aus: Starke G., Effektive Software-Architekturen, © 2008 Hanser Verlag München (angepasst) IM HS13, Kp 13-1 • Sowohl IhrewieKunden Sowohl Kunden auch anderewie Projektbeteiligte ändern Anforderungen und Einflussfaktoren. Aufgrund dieser Änauch andere derungen muss sich das Systemdesign Projektbeteiligte ändern immer wieder den veränderten Gegebenheiten anpassen. Anforderungen und Einflussfaktoren. Merke: • Aufgrund dieser Architekturen, die sich an den wirklichen BedürfÄnderungen müssenorientieren, Sie nissen und Anforderungen entstehen Ihriterativ. Systemdesign immer wieder den veränderten Gegebenheiten anpassen. M. Jud 14 • Architekturen, die an den wirklichen Bedürfnissen und Anforderungen orientiert sind, entstehen iterativ. 11.2. Von der Idee zur Struktur IM HS13, Kp 13-1 11.2.1 15 M. Jud Komplexität „Everything should be as simple as possible, but not simpler.“ Albert Einstein natürliche Komplexität ist die Komplexität des zu Grunde liegenden Problems. Eine Software kann nicht einfacher sein als das Problem, welches sie löst. → beherrschen künstliche Komplexität kommt bei der Entwicklung dazu, trägt aber nichts zur Lösung des Problems bei. → vermeiden The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 50 11.3 Heuristiken „Wenn du es in fünf Minuten nicht erklären kannst, hast du es entweder selbst nicht verstanden, oder es funktioniert nicht.“ Eberhardt Rechtin, Mark Maier – The Art of Systems Architecting 11.3. Heuristiken Systementwurf ist keine exakte Wissenschaft; die Kombination von Grundsätzen der Zerlegung, Architekturmuster, Entwurfsprinzipien und Heuristiken kommt den Entwürfen der Entwicklung zugute. Merke: Heuristiken sind Regeln zum Umgang mit komplexen Aufgaben, entstanden aus verallgemeinerten und abstrahierten Erfahrungen. Darum können Heuristiken lediglich Hinweise geben auf dem Weg zum guten Systementwurf, aber ohne Erfolgsgarantie, denn Entwurf bleibt (zum Glück) eine kreative Tätigkeit. 11.3.1 Beispiele gängiger Heuristiken So einfach wie möglich (Umgang mit Komplexität). Das Konzept sollte so einfach wie möglich gehalten, unnötige Ele- mente eliminiert und so wenige Beziehungen wie möglich umgesetzt werden. Separation of Concerns (Entwerfen nach Verantwortlichkeit). Eine Komponente, ein Paket, eine Klasse und sogar eine Methode sollten nur für jeweils eine (!) klar definierte Aufgabe verantwortlich sein. Interface Segregation (auf Schnittstellen hin entwerfen). Klassen sollten – nur, wenn überhaupt erst nötig – ausschliess- lich von Schnittstellen und nicht von anderen Klassen abhängen. Robustness (Fehler berücksichtigen – Fehlertoleranz bezüglich Anwender-Hardware und SW-Fehlern). Softwareelemente sollten eine gewisse Fehlertoleranz berücksichtigen. Loose coupling, high cohesion (Lose Kopplung und hohe Kohäsion). Softwareelemente sollten nur lose untereinander gekoppelt, aber deren Verantwortung sehr stark eingeschränkt sein (siehe Separation of Concerns). Open Close (Offen-Geschlossen Prinzip – Erweiterbarkeit ohne Eingriff in den Code). Software sollte offen gegenüber Erweiterungen aber geschlossen gegenüber Änderungen sein: Code nicht anpassen, sondern erweitern (bspw. Methodenüberladung, Interfaceabstraktion)! Cyclic Redundancy (Keine zyklischen Abhängigkeiten (Wie sich zyklische Abhängigkeiten umgehen lassen). Die Klassen- Struktur sollte keine zyklischen Abhängigkeiten besitzen. Ist dies nicht möglich, dann dient ein Interface als Abstraktion (z.B.: Observer, siehe Observer-Pattern). Das „Liskov Substitutionsprinzip“ (Einschränkung der Vererbung). Jede Unterklasse sollten anstelle ihrer Oberklasse(n) einsetzbar sein. Vorsicht bei starker Polymorphie! Dependency Injection. Ist eine Klasse grundsätzlich nur vom Interface einer anderen Klasse abhängig, sollte sie diese (d.h. die implementierte Klasse) auch nicht erzeugen! Ein drittes Element (z.B.: eine Factory) soll diese Aufgabe übernehmen und die Instanz dann entsprechend übergeben. → siehe Übung 13.1: Heuristiken The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 51 11.4 Systemdesign kommunizieren 11.4. Systemdesign kommunizieren Beim Systementwurf werden wichtige Entscheidungen gefällt, die Einfluss auf Entwicklung, Betrieb und Wartung haben. Deshalb müssen Entwurfsentscheidungen den entsprechenden Stakeholders kommuniziert und erklärt werden. Mögliche Stakeholders dabei sind beispielsweise: • Auftraggeber / Nutzer • Entwicklungsteam • Betrieb und Wartung Da die Lebensdauer von IT-Systemen in der realen Welt oft Jahrzehnte beträgt, muss deren Architektur so dokumentiert werden, dass Generationen von Entwicklern das System verstehen und dieses an neue Bedürfnisse anpassen / erweitern können.15 Merke: Die Abstraktion (Abstraktionsniveau) muss immer an die Situation, in welcher der Entwurf gelten soll, angepasst werden («angepasste Flughöhe» wählen). Dementsprechend müssten beispielsweise Klassendiagramme unterschiedliche «Tiefen» aufweisen. 11.4.1 Reduktion der Komplexität: Einführung von Sichten In einer einzelnen Darstellung lässt sich die Vielschichtigkeit und Komplexität eines Systemdesigns nicht ausdrücken. Sichten erlauben die Konzentration auf bestimme Aspekte, indem sie von Details abstrahieren, welche für die gewählte Perspektive nicht von Bedeutung sind. Nach Starke (2008) existieren folgende vier Sichten: • Kontextsichten (siehe Kap. 11.5.1 bzw. 9): Einbettung System in Umgebung, Blackbox, Vogelperspektive, Vision, abstrakter als übrige Sichten. • Bausteinsichten (siehe Kap. 11.5.2): Interner Aufbau, zeigen statische Strukturen (Architekturbausteine, Subsysteme, Komponenten und deren Schnittstellen, sollte „top-down“ (ausgehend von einer Kontextsicht) entwickelt werden, letzte Verfeinerungsstufe der Zerlegung bildet der Quellcode. Übersicht der verschiedenen Sichten nach Starke (2008) • Laufzeitsichten (siehe Kap. 11.5.3): Beschreiben, wie Bausteine zur Laufzeit des Systems zusammenwirken, haben eine dynamische Struktur im Gegensatz zur statischen Betrachtungsweise (Bausteinsichten). • Verteilungssichten (siehe Kap. 11.5.4): Beschreiben Merke: Die Sichten zeigen alle das gleiche System, beleuchten aber unterschiedliche Aspekte daraus («Bausteine»). die Umgebung des Systems, Hardwarekomponenten wie Rechner, Prozessoren, Netztopologien und -protokolle & weitere Bestandteile der physischen Systemumgebung – wobei die Infrastruktursicht das System aus Betreibersicht zeigt. 15 Gegenteilig können Schulprojekte betrachtet werden: diese werden oft in geschützten Umgebungen für eine kurze Zeit – üblicherweise für 1-2 Semester – genutzt. Danach geraten diese wieder in Vergessenheit. Somit muss das System auch nicht durch mehrere Entwickler-Generationen gewartet und erweitert werden. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 52 11.5 Entwurf der Sichten 11.5. Entwurf der Sichten Sichten beeinflussen sich gegenseitig. Somit gibt es keine zwingende Reihenfolge für deren Entwurf. • Wenn ein bestehendes System erweitert oder umgebaut wird, ist die Bausteinsicht ein guter Ausgangspunkt. • Wenn Verantwortlichkeiten und Zusammenspiel der Komponenten unklar sind, so sollte man mit der Laufzeitsicht beginnen. • Wenn die Infrastruktur durch Randbedingungen eingeschränkt oder vorgegeben ist, entwirft man zuerst die Verteilungssicht. • Allgemein ist die Kontextsicht ein sinnvoller Einstieg. 11.5.1 Kontextsicht (siehe auch Kapitel 9) Kontextsichten stellen eine Abstraktion der übrigen Sichten, mit Fokus auf die Beziehungen des Systems zu seinem Umfeld, dar. • • • • • System als BlackBox Schnittstelen zu Anwendern, Nachbar- und Fremdsystemen, inkl. Daten & Steuerfluss TopLevel Use Cases Technische Umgebung (Infrastruktur: Kommunikationskanäle, Rechnersysteme, usw.) die Interaktionen mit wichtigen Stakeholdern Merke: Die Kontextsicht sollte vollständig sein in Bezug auf externe Schnittstellen, Nachbarsysteme und Nutzergruppen. Da in der Kontextsicht abstrakte Darstellungen der Baustein-, Laufzeit- und Verteilungssichten gezeigt werden, können auch deren jeweiligen Notationen verwendet werden: • • • • Darstellung «grosser» Systemstrukturen anhand Komponentendiagrammen (angereichert mit Paketen & Klassen) Schnittstellen in Komponentendiagrammen mit Ball und Socket Schnittstellen in Klassendiagrammen über Assoziationen zu anderen Systemen / Akteuren Anwendungsfälle oder Abläufe mit dynamischen UML-Diagrammen (Sequenz-, Kommunikations- oder Aktivitätsdiagramme) Stammdaten CMS Kundentermine Outlook Client Manager User Dialog Marktdaten Factiva Treaty IUF Underwriter Performance pro Produktlinie SRS CIS Verträge GFS DB Tools Schadenszahlen Helpdesk CMP DWH Autorisierung Auswertung / Reports RBAM Archivdaten GroupManager Archive Abbildung 22: Beispiel einer Kontextsicht in UML (links) bzw. als Kontextdiagramm (rechts, bekannt aus Kapitel 9 The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 53 11.5 11.5.2 Entwurf der Sichten Bausteinsicht Bausteinsichten unterstützen den Projektleiter und den Auftraggeber bei der Projektüberwachung. Zudem dienen sie der Zuteilung von Arbeitspaketen und fungieren als Referenz für Softwareentwickler. Die Bausteinsichten zeigen ebenfalls die Aufteilung der Funktionalität des Systems. Dies sind aus Entwicklungssicht Pakete und evtl. Klassen, sowie aus Systemsicht Subsysteme bzw. Komponenten. Beispiel 1: Aufbau einer modellartigen Bausteinsicht Merke: Die Bausteinsicht sollte vollständig sein in Bezug auf Schnittstellen & Abhängigkeiten der dargestellten Elemente. Vorgehen hierarchische Verfeinerung („top down“): 1. Subsysteme 2. Komponenten Verantwortlichkeiten und Schnittstellen von BlackBoxes. 3. Objekte Eine Verantwortlichkeit beschreibt den Zweck eines Bau- steins auf abstrakter Ebene: wozu dient er, welche Aufgabe erfüllt er? Schnittstellen können verschiedene Ausprägungen annehmen, etwa: • Aufruf/Rückgabe (call-return) • synchron-asynchron • push/pull • Benachrichtigung (event notification) Die Semantik dieser Beziehungen sollte immer angemessen dokumentiert werden. Auf der Ebene von Klassen und Objekten kann eine Schnittstelle durch Assoziationen und public-Methoden dargestellt werden. Auf Subsystemund Komponentenebene sind hingegen Ball und Socket sowie Ports sinnvolle Darstellungsformen. Abbildung 23: Bausteinsicht mit Ball, Socket und Ports The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 54 11.5 Entwurf der Sichten Bausteinsichten ermöglichen auch das Erkennen von Strukturen in Form von Whiteboxes. Zum Beispiel: • Ein Diagramm (UML Paket- oder Klassendiagramm), welches die innere Struktur dieser Whitebox zeigt. • Eine Liste der lokalen Blackbox-Bausteine. (Deren interne Struktur kann in einer weiteren Verfeinerungsebene dargestellt werden.) • Eine Liste der Abhängigkeiten und Beziehungen zwischen den lokalen Bausteinen. • Gründe, die zu dieser Struktur geführt haben. 11.5.3 Laufzeitsicht Laufzeitsichten zeigen, wie die Systembestandteile bei der Ausführung zusammenwirken. Spezielle Aspekte der Laufzeit werden dokumentiert. So beispielsweise: • Wie sich das System beim Hochfahren verhält (notwendige Startskripte, Abhängigkeit von externen Systemen, Datenbanken etc.) • Wie werden wichtige UseCases bearbeitet • Wie arbeiten wichtige Systemkomponenten zusammen Merke: Die Laufzeitsicht sollte Daten- und Kontrollflüsse zwischen den dargestellten Laufzeitelementen vollständig darstellen. Elemente der Laufzeitsichten sind Instanzen der Architekturbausteine, von denen zur Laufzeit Exemplare erzeugt werden (also z.B. Objekte oder Komponenten, aber nicht abstrakte Klassen oder logische Interfaces). Sinnvollerweise wird die Laufzeitsicht mit UML-Sequenz-, Aktivitäts- oder Kommunikationsdiagrammen dokumentiert. Diese können auf verschiedenen Abstraktionsebenen gezeichnet werden. 11.5.4 Verteilungssicht Verteilungssichten beschreiben die technische Infrastruktur, auf der das System abläuft. Wesentliche Elemente sind: • Knoten (Rechner vom Mainframe bis zum Mikrocontroller) • Kanäle (Kommunikationsverbindungen) • Komponenten (Software) Merke: In Verteilungssichten sollte die Ablaufumgebung des Systems wie Prozessoren, Speicher, Netzwerke, Router und Firewalls mit den beteiligten Protokollen beschrieben werden. In heterogenen, verteilten Systemlandschaften wird detailliert die technische Infrastruktur wie Netztopologien, Protokolle, Kapazitäten sowie Prozessoren und Speicherkapazitäten dokumentiert. Weiter sollten Angaben zur Verfügbarkeit gemacht werden. Zudem ist es wichtig, die Verteilungssicht mit den Mengengerüsten der beteiligten Daten abzugleichen: Genügt die verfügbare Hardware und genügt der Durchsatz der Kommunikationskanäle? Bei Bedarf können die Leistungsdaten und Parameter der beteiligten Elemente wie beispielsweise: • Speichergrössen • Kapazitäten • Mengengerüste dargestellt werden. Natürlich lassen sich auch Betriebsysteme oder andere externe Systeme darstellen (vgl. Abb. 24). The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 55 11.6 Architekturaspekte Abbildung 24: Darstellung einer Verteilungssicht mit möglichen Parametern → siehe Übung 13.2: Systemdesign 11.6. Architekturaspekte Unter Architekturaspekten versteht man Dinge, die Software-Architekten beim Systementwurf beschäftigt. Für viele dieser Aspekte gibt es daher typische (bewährte) Lösungsansätze, auf welchen man eine konkrete Lösung aufbauen kann. 1. Persistenz 7. GUI-Ergonomie 2. Geschäftsregeln 8. Internationalisierung 3. Legacy 9. Workflow-Management 4. Verteilung 10. Sicherheit 5. Kommunikation 11. Logging 6. GUI-Ablaufsteuerung 12. Fehlerbehandlung 11.6.1 Persistenz Sämtliche kommerziellen und viele technische SoftwareSysteme benötigen einen effizienten Zugriff auf persistent gespeicherte Daten. Problem: viele Änderungen am Quellcode beim Handling durch Objekte. Im einfachsten Fall stellt man den Fachklassen dedizierte Datenklassen zur Seite (JDBC / ADO / ...). Bei einer grossen Anzahl an Fachklassen – wenn bspw. vernetzte Objektstrukturen persistiert werden müssen bzw. die Abbildung auf die Datenbank(en) komplex ist – lohnt sich der Entwurf einer Persistenzschicht. Persistenzschichten vermitteln zwischen Anwendung und unterschiedlichen Speichersystemen. Fachklassen benutzen dann lediglich Methoden wie save(), read() oder delete(). The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 56 11.6 11.6.2 Architekturaspekte Geschäftsregeln Geschäftsregeln legen Abläufe in Abhängigkeit von bestimmten Bedingungen fest. Die Implementation dieser Fachlogik durch «if-then-else»-Konstrukte in den Fachklassen erschwert die Verständlichkeit und Wartbarkeit eines Systems. Alternativ kann man die Geschäftsregeln in einer Regelsprache beschreiben. Eine RuleEngine führt dann die Fachlogik auf den Geschäftsobjekten aus. 11.6.3 Legacy Insbesondere kommerzielle SW-Systeme werden in der Regel in einem Umfeld bestehender Anwendungen, d.h. in einem Legacy-Kontext entwickelt. Ein solcher Eingriff in die Legacy soll minimal invasiv gestaltet werden. Einen minimal invasiven Ansatz stellt die Integration über ein Gateway dar. So lassen sich die Details der Kommunikation mit dem Legacy-System kapseln und bei Bedarf auch weiteren Clients Zugang zum Altsystem schaffen. Alternativ kann ein Wrapper, der typischerweise auf der Legacy-Plattform realisiert wird, eine Schnittstelle zu deren Diensten anbieten. 11.6.4 Verteilung Aus verschiedensten Gründen kann es notwendig sein, dass ein Softwaresystem auf unterschiedlichen Rechnern abläuft. Entferne Methodenaufrufe sind ressourcenintensiv(er); verteilte Objekte benötigen eine komplexere Infrastruktur und die Fehlerbehandlung über Systemgrenzen hinweg ist aufwändiger. Tipps • • • • • 11.6.5 Verteilung nur wenn nötig (Komplexität) Verarbeitung möglichst nahe bei betroffenen Daten stabile Schnittstellen anstreben lieber höhere Serverbelastung als höherer Datentransfer Zusatzaufwand für Test und Deployment einplanen Kommunikation Beim Entwurf verteilter Systeme kommt der Kommunikation wegen der vielfältigen Möglichkeiten mit entsprechenden Vor- und Nachteilen grosse Bedeutung zu. Es stellen sich beispielsweise folgende Fragen bez. Kommunikation: • • • • • • • synchron oder asynchron stateful oder stateless direkt oder via Middleware Stil (RPC, publish/subscribe, broadcast, poll, usw.) nur TCP/IP oder zusätzlich IIOP, SOAP, HTTP, usw. Datenkodierung (little/big endian, Zeichensatz, usw.) Semantik (aktuelle Werte oder nur Deltas) 11.6.6 GUI-Ablaufsteuerung Der Programmablauf (User Führung16 ) kann durch eine geschickte GUI-Ablaufsteuerung besser unterstützt werden. Beispielsweise durch: • Frage/Antwort-Systeme – Formulare, Bildschirmmasken, aufeinander folgende Dialoge (im Hintergrund durch einen Zustandsautomaten repräsentiert) • Objektorientierte Oberflächen – Unterscheidung von Werkzeug, Verwendung und Material. 16 Ja, Papa The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 57 11.6 Architekturaspekte • MVC – Trennen von Verarbeitungslogik und Steuerungselementen (Model / View / Control); Sinnvoll pro unabhängiger Maske eigene MVC-Tripel vorzusehen. Bei Thin-Client Systemen wird MVC auf Server realisiert, wobei der Controller auf Anfrage des Clients die Views vorbereitet. 11.6.7 GUI-Ergonomie • Arbeitsmetaphern (Struktur der Arbeitsabläufe) • Interaktionsstile (Art der Darstellung) – Objektorientiert – wenn die Daten grafisch gut repräsentierbar sind, z.B. Textverarbeitung. – Frage/Antwort – wenn der Ablauf vom System vorgegeben ist, z.B. Install-Wizard – Formularbasiert – wenn (repetitiv) Daten erfasst bzw. abgefragt werden, z.B. Stammdatenverwaltung – Menü und Fenster – als Applikationsrahmen für die einzelnen Anwendungsfälle • Effektivität, Effizienz und Akzeptanz – Heuristiken, welche helfen können eine intuitive und den Erwartungen der Nutzer entsprechende Oberfläche zu designen. Abbildung 25: Heuristiken zum ergonomischen GUI-Design 11.6.8 Internationalisierung Je nach Markt sind nebst Sprache, Währung, gängiger Formatierung etc. auch rechtliche (z.B. Datenschutz) und kulturelle Aspekte zu beachten. Internationalisierung beeinflusst deshalb nicht nur die Architektur, sondern den gesamten Entwicklungsprozess. Wenn also das Businessmodell für einen grossen Markt ausgelegt ist, sollte dies bereits zukunftsorientiert gestaltet werden. 11.6.9 Workflow-Management Unter Workflow-Management versteht man die systemübergreifende Ablaufsteuerung und Koordination von SoftwareSystemen. Grundsätzlich können drei Lösungsansätze unterschieden werden: 1. Steuerung durch externes WMS bzw. BPMS 2. Manuelle Steuerung (mittels E-Mail oder Groupware) 3. Embedded Workflow mittels Zustandsautomat Dies ist stückzahlabhängig (Rasierer versus Einzelstück Maschinen) – bei geringen Stückzahlen sollte ein billiger Controller verbaut werden, da der Controller in diesem Kontext nur eine kleine Rolle. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 58 11.6 11.6.10 Architekturaspekte Sicherheit Insbesondere im Bereich eCommerce sind Sicherheitsaspekte von zentraler Bedeutung. Gesetzliche Vorgaben beschränken den Entscheidungsspielraum, z.B. Verschlüsselungsverbot vs. -pflicht. Oftmals stellen sich auch organisatorische Fragen, welche sich dann auf Einsatz von Firewalls, PKI, Hardware allgemein auswirken. Ziel der Sicherheit ist es Vertraulichkeit / Integrität /Authentizität / Autorisierung zu gewährleisten und die Verfügbarkeit sicherzustellen (bspw. Schutz vor DoS Attacken). Trennung durch OSI Schichten: • Netzwerk (Layer 3): z.B. VPN, für Anwendungen transparent • Transport (Layer 4): z.B. SSL, Anwendung kennt Zertifikate • Anwendung (Layer 7): z.B. S/MIME E-Mail Anwendungen 11.6.11 Logging Logging kann fachliche und/oder technische Protokollierung sein. Unter Tracing versteht man technische Protokollierung zu Debugging-Zwecken. Das „Rad“ muss man nicht neu erfinden, aber zu Projektbeginn ein geeignetes Framework festlegen!17 . Wichtig ist es, Loglevels und Kriterien zu definieren. Weiter erleichtert instrumentierter Code die Fehlersuche. Somit ist es von Vorteil wichtige Bereiche durch Logging zu „überwachen“18 . 11.6.12 Fehlerbehandlung Das Exception-Handling der Programmiersprache ersetzt nicht ein angemessenes Ausnahme- und Fehlerbehandlungskonzept! Typische Fragen, die man sich stellen sollte, sind beispielsweise Welche Ausnahmen- und Fehlerkategorien gibt es?, In welcher Form reagieren?, Wie sieht es mit der Testbarkeit der Fehlerbehandlung aus? Tipps • Fokus auf Schnittstellen, keine leeren Catch-Klauseln • Logging klar definieren 17 18 z.B. log4j Interaktionen an Benutzeroberflächen, Interaktion zwischen Subsystemen und Komponenten, usw. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 59 Literatur Literatur IM Kecher, C. (2011). UML 2. Das umfassende Handbuch (4. Aufl.). Bonn: Galileo Press. Oestereich, B. (2009). Die UML-Kurzreferenz 2.3 für die Praxis (5. Aufl.). München: Oldenbourg Verlag. The Software Bakery · Tobias Maestrini, Bruno Leupi, Marcel Burri, Ralph Kyburz Seite 60