Editing
Informatiker FA M222 Zusammenfassung
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
= OO-Grundlagen = == Was heisst modellgetriebene Architektur (MDA) == MDA ist eines der grossen Themen bei OMG (www.omg.org). Das Ziel von OMG ist es , mittels MDA die GeschĂ€ftslogik von der darunter liegenden Technik zu entkoppeln *Systeme sollen klug durchdacht werden *System in Modellen darlegen *Jedes Modell adressiert eine bestimmte Thematik und die Modelle bauen aufeinander auf. *Im Idealfall kann das ganze System als Modell beschrieben und dann mit einem Generator erstellst werden. *'''Wichtiger Anspruch''': Modell muss durch Mensch und Maschine gelesen werden können. MDA Modellebenen: *M3: Metadatenebene *M2: Beschreibung der Sprache oder Notation *M1: Hier modelliert der Entwickler *M0: Ebene der Laufzeitinstanzen Um die einzelnen Modelle als XMI speichern zu können, entwickelte die OMG die XMI. XMI = gemeinsames Format fĂŒr Import- und Export unterschiedlicher Tools. '''Modelltransformationskette:''' [[Image:Modelltransformationskette.gif]] *'''CIM-Modell''' (Computational Independent Modell): enthĂ€lt vor allem die fachlichen Anforderungen (unabhĂ€ngig von der Technik) *'''PIM''' (Plattform Independent Modell): bildet vor allem das Analysemodell unabhĂ€ngig von der zukĂŒnftigen Plattform *'''PSI''' (Platform Specific Implementation): reprĂ€sentiert den eigentlichen Code *'''PM''' (Platform Model) beschreiben die Quell- und Zielplattform als Metamodelle und die dazugehörenden Transformationsregeln. Damit z.B. eine Klasse aus dem Fachklassenmodell eine Tabelle im physischen Datenmodell ergibt. Eine Transformation von Modellen bzw. Code-Generierung heisst '''Forward-Engineering'''. Wenn aus dem Code ein Design-Modell erstellt wird, heisst dies '''Reverse-Engineering'''. == Welches sind die Grundelemente von OO? == === Das Objekt === *Ein Objekt ist immer einmalig und hat somit eine klare IdentitĂ€t. (auf Programmebene eindeutig durch die Speicheradresse identifiziert) *Ein bestimmtest laufendes Exemplar eines Objektes entspricht einer Instanz *Objekte haben Eigenschaften (Attribute), Methoden (Funktionen) *können auf Ereignisse (Events) reagieren. *Objekte können Nachrichten austauschen [[Image:222-1.gif]] *Zugriffsmöglichkeiten sind klar geregelt *Alle sichtbaren (public) Methoden bilden die '''Schnittstelle''' gegenĂŒber der Umwelt *Das Verbergen der inneren Funktionsweise wird '''Kapselung''' (Encapsulation) genannt. Ein Objekt hat eine definierte Lebensdauer (Life-Cycle): *Geburt: Kreieren (Instantiieren, Create) eines Objektes *Leben: eine aktive Instanz *Tod: zerstören (Destroy) des Objektes === Die Klasse === *Die Verallgemeinerung wird '''Klasse''' genannt. *Im Modell wird eine Generalisierung der gleichartigen Objekte vorgenommen, womit die Klassen entstehen [[Image:222-3.gif]] *Klassen wiesen untereinander Beziehungen auf. *Die Beziehungen werden Assoziation genannt und beschreiben den KardinalitĂ€t (MultiplizitĂ€t) zwischen der Menge der Objekte Im folgenden Beispiel hat eine Firma mindestens einen Mitarbeiter, kann aber auch beliebig viele haben. [[Image:222-4.gif]] '''Umgekehrte Richtung''': Ausgehend von der Oberklasse vererben sich die Eigenschaften und Methoden auf die Unterklasse. Dabei handelt es sich um eine '''Spezialisierung''', da die Unterklasse eine immer speziellere AusprĂ€gung ausweist. [[Image:222-5.gif]] *Klassen welche nicht mehr weiter generalisiert sind, werden Basisklasse, Wurzelklasse oder RootClass genannt. *ĂŒbergeordnete Klassen werden Oberklasse (Superclass) oder Vaterklasse genannt. *Spezialisierte Klassen sind Unterklassen oder Sohnklassen (Childclass) Klassen bei denen keine Instantiierung von Objekten erlaubt sind, sind abstrakte Klassen. '''Binding''': *Statisches Binding: Der methodenaufruf ist fix programmiert und bei der Kompilierung bekannt. *SpĂ€tes Binding: Die Methodenaufrufe werden nach dem Kompilieren aber vor der Laufzeit bekannt. *Dynamisches Binding: Die Methodenaufrufe werden erst bei der Laufzeit zugeordnet. Beim Polymorphismus ist der Methodenaufruf erst wĂ€hrend der Laufzeit bekannt: [[Image:222-6.gif]] Bei der Mehrfachvererbung vererbt eine Klasse Eigenschaften aus zwei oder mehreren Klassen (wird nicht von allen Sprachen unterstĂŒtzt). Werden nur die Signatur (Schnittstelle) vererbt, so implementieren die Entwickler ĂŒber Interface-Klassen. Klassen, deren Instanzen nicht Objekte sonder wieder Klassen sind, werden Metaklassen genannt. Der Einsatz von Metaklassen ist eher in der Entwicklung eines Frameworks anzusiedeln und braucht einen hohen Grad an Abstraktionsvermögen der teilnehmenden Entwickler. == Wie sieht ein typisches OO-Vorgehen aus? == Projektvorgehensmodelle helfen, das Risiko eines Projekt-Crashes zu minimieren. Sie bilden Teile der konstruktiven QualitĂ€tssicherungsmassnahmen, damit Fehler vermieden werden und Projektziele nicht aus den Augen zu verlieren: '''Projekt-Zieldreieck: Termine, Kosten, QualitĂ€t''' [[Image:222-7.gif]] Projekte werden in Phasen abgewickelt. Die meisten Phasenmodelle bestehen aus folgenden Phasen: *Vorstudie: Projektumschreibung, ist das Projekt sinnvoll *Fachkonzept: Anforderungen aufnehmen und fachliche Spezifikation, was soll mit dem Projekt abgedeckt werden. *DV-Konzept (Datenverarbeitungskonzept): EDV-technischer Entwurf, wie wird das System gebaut. *Realisierung: Programmierung, Beschreibung,m eigentlicher Bau des Systems *EinfĂŒhrung: Schulung, Installation, Going Live Aus diversen GrĂŒnden hat sich jedoch ein Vorgehen in kleinen ĂŒberblickbaren Schritten bewĂ€jhrt. Daraus entstanden die folgenden Modelle: *Spiralmodell *Ration Unified Process (IBM) *oose Engineering Process (OEP) *Extreme Programming (XP) XP ist ein Vertreter der agilen Softwareentwicklung. Diese beinhaltet folgend vier Thesen um Software, schnell, flexibel und wendig zu entwickeln: *Personen und deren Interaktionen gehen Prozessdefinitionen und Werkzeugen vor *Gut funktionierende Software nĂŒtzt mehr als ausgedehnte Dokumentation *Enge fachliche Zusammenarbeit mit dem Kunden bringt das Projekt weiter als ausgedehnte Vertragsverhandlungen *Auf Ănderungen reagieren ist wichtiger als den ursprĂŒnglichen Plan einzuhalten === Prinzipen des OO-Vorgehens === *'''OO-Projekte werden iterativ in ĂŒberschaubaren Inkrementen entwickelt'''. *'''OO-Projekte werden von der Benutzeranforderung her getrieben'''. *'''OO-Projekte werden architekturzentriert und modellbasiert entwickelt'''. (Weil der zugrunde liegende GeschĂ€ftsprozess vermutlich lĂ€nger lebt als die verwendete IT-Technologie muss die Lösung Technologie unabhĂ€ngig entwickelt werden.) === Phasen - Meilensteine === Aus dem natĂŒrlichen Ablauf eines Projektes ergeben sich vier Hauptphasen: *'''1.Phase: Einstieg (Inception'''). Hier geht es darum den Fachbereich zu verstehen. Der GeschĂ€ftsprozess wird beleuchtet und eventuell einem Business Process Reengineering unterzogen. Der Anwender legt die wichtigsten Anforderungen und EinschrĂ€nkungen dar. Eine erste Architekturskizze zeigt mögliche Realisierungswege auf. Das gesamte Projekt wird geplant und die Kosten-Nutzen Ăberlegungen dienen als Basis fĂŒr den Go-Nogo Entscheid. *'''2. Phase: Ausarbeitung (Elaboration)'''. Die Detail werden weiter ausgearbeitet. Die Anforderungen sollte vollstĂ€ndig vorhanden sein. Der Schwerpunkt liegt im Analyse/Design-Prozess, in welchem die Architektur, der gesamte Entwurf und ein Prototyp entsteht. *'''3. Phase: Konstruktion (Construction)'''. Das System wird gebaut. die Komponenten werden entwickelt und integriert. Ziel ist ein lauffĂ€higes und getestetes System. 4. Phase: Ăberleitung: (Transition). Das fertige System wird in dir Produktivumgebung gebracht. Dies beinhaltet die Schulung, Installation und weiter Anpassungs- und Testarbeiten. === Iteration (Wiederholung) === In jeder Phase sind eine bis mehrere Iterationen zu planen. Eine Iteration ergibt als Resultat einen definierten geprĂŒften Zustand. === Prozesse - TĂ€tigkeiten === Die einzelnen Prozesse beschreiben je Phase und Iteration welche TĂ€tigkeiten ausgefĂŒhrt werden und welche Resultate (Artefakte) erwartet werden. Unified Prozess: [[Image:222-8.gif]] In den einzelnen Disziplinen sind die Module des Fachausweises zu erkennen: GeschĂ€ftsmodellierung, Anforderungen definieren, Analyse und Entwurf, Realisierung, Test + QS, EinfĂŒhrung, Projektmanagement, Change- und Configmanagement. === Artefakte - Lieferobjekte === Die Resultate werden ja nach Vorgehensmodell unterschiedlich benannt. Der Begriff Artefakt zeigt auf den gegensatdn (das eigentliche Resultat) hin. WĂ€hrend Lieferobjekt eher auf die Verantwortung appelliert, was zu liefern ist. Ein Artefakt kann sowohl ein Dokument als auch eine lauffĂ€hige Komponente sein. === Rollen - Projektmitarbeiter === Die wichtigsten Rollen in einem Softwareentwicklungsprojekt: [[Image:222-9.gif]] === ZeitschĂ€tzungsverfahren === Zuerst muss man sich ein Bild ĂŒber die nachfolgend aufgefĂŒhrten '''Einflussfaktoren''' machen: *Innovationsgrad des Projektes und deren zugrunde liegenden Techniken *QualitĂ€t, VollstĂ€ndigkeit und Klarheit der Aufgabenstellung *QualitĂ€t, Motivation und Grösse des Projektteams *QuantitĂ€t der zur VerfĂŒgung stehenden Ressourcen *Projektorganisation (FĂŒhrungsstil, Kompetenten, Informationswege) *Handhabung des Change Managements *KomplexitĂ€t der Schnittstellen bzw. Systemintegration *... Die wichtigste Komponenten ist die Erfahrung mit dem Teams selbst. Wer fĂŒr ein neu zusammengestelltes Team eine ZeitschĂ€tzung abgeben muss, soll immer auf den grossen Unsicherheitsfaktor hinweisen. UnabhĂ€ngig von einer bestimmten Technik ist der SchĂ€tzvorgang ein iterativer Prozess, welcher wĂ€hrend der ganzen Projektdauer fĂŒr die noch ausstehende TĂ€tigkeiten eine periodische ĂberprĂŒfung und Korrektur benötigt. == Wie ist die Unified Modelling Laguage (UML) aufgebaut? == Die "Three Amigos" entwickelten in den neunziger Jahren ein gemeinsame Modellierungssprache welche nun von der OMG als Standard weiter gepflegt wird. Das Hauptziel der UML ist es, eine einfache und fĂŒr alle Beteiligten verstĂ€ndliche Modellierungssprache anzubieten. UML deckt vie GrundbedĂŒrfnisse der Systementwicklung ab: *Visualisierung *Spezifizieren *Dokumentieren *Programmieren (mittels bidirektionalen Konvertern können Klassencode erstellt oder aus bestehendem Programmcode wieder Diagramme erstellt werden.) === UML-Werkzeuge === === Architektur-Sichten === [[Image:222-10.gif]] === UML Sprachelemente === Folgender Aufbau ist in den Metadefinitionen festgelegt: *Struktur (statische Aspekte) **Klassen mit dem Klassendiagramm, Paketdiagramm und Objektdiagramm **Komponenten mit dem Komponentendiagramm **Kompositionsstruktur mit dem Kompositionsstrukturdiagramm und Kollaborationsdiagramm **Physische Verteilung von Artefakten mit dem Verteildiagramm *Verhalten (dynamische Aspekte) **AktivitĂ€t, Aktion mit dem AktivitĂ€tendiagramm **Interaktion mit den Integrationsdiagrammen **Zustandsautomat mit dem Zustandsdiagramm **Anwendungsfall mit dem Anwendungsfalldiagramm *Erweiterung durch eigene Profile **Erweiterung des Metamodells durch spezielle eigene Elementgruppen wir z.B. J2EE-Profile, MS .NET mit Web-Services und COM Profile. *OCL - Object Constraint Language = Artefakte im Analyseprozess = *Die Analyse nimmt die Informationen aus den beiden vorangegangenen Prozessen der GeschĂ€ftsmodellierung und der Anforderungsaufnahmen *Daraus wird die Beschreibung erstellt WAS im neuen System gelöst werden soll. Dies bedingt eine Teamarbeit folgender Personen: *Systemanalytiker *DomĂ€nenexperten (Anwenden) *Evtl. berate fĂŒr Spezialgebiete (z.B. Datenschutz) *Prototypenentwickler Dadurch entsteht eine Systembeschreibung welche nach und nach komplettiert wird. == Was beinhaltet die Systembeschreibung? == *Ausgangssituattion (Auslöser, Umfeld, Organisation) *aktuelle Schwachstellen *Zielsetzungen der neuen Lösung *Beschreibung der Aufbau-Organisation *Abriss des aktuellen Systems und dessen Integration (ergibt RĂŒckschlĂŒsse ĂŒber die Schnittstellen) *zu berĂŒcksichtigende gesetzliche Regelungen *Projket-Begriffsverzeichnis == Welche Modelle werden wĂ€hrend der Analyse erstellt? == Die Modellierung verfolgt mehrere Zwecke: *eindeutige Kommunikation zwischen den Beteiligten *grafische Visualisierung von komplexen ZusammenhĂ€ngen *Möglichkeiten geben, Modelle auf VollstĂ€ndigkeit, Konsistenz und Machbarkeit hin zu prĂŒfen. '''Modelle''': *Das '''Anwendungsfalldiagramm''' basiert auf der IST-Situation der Business-Prozesse und den Anforderungen an das System. Hier wird die Frage beantwortet wie das System genutzt wird. *Im '''Basismodell''' spĂŒrt der Analyst die Objekte auf. Aus den Objekten entstehen Klassen inkl. ersten Eigenschaften und Methoden. Das Basismodell ist Voraussetzung fĂŒr das statische Analysemodell. *Im '''statischen Analysemodell''' werden die Basismodell gefunden Element in Beziehung gesetzt. Weiter werden Generalisierungen vorgenommen (Klassen zu Oberklassen) *Im '''dynamischen Analysemodell'''l werden die Interaktionen der Element dargestellt (zeitliche Ablauffolgen und AbhĂ€ngigkeiten, mögliche ParallelitĂ€t, Synchronisation von AktivitĂ€ten, sowie Austausch von Nachrichten. == Wie sieht das Prototyping in der Analysephase aus? == *Der Anwender wird beim Erstellen der Analyseprototyp einbezogen *Dieses '''partizipative Protoptyping''' hat den Vorteil, dass grundlegenden FehlĂŒberlegungen in den MaskenablĂ€ufen und den wichtigsten Inhalten schon sehr frĂŒh ausgemerzt werden können. *FĂŒr die Entwicklung können spezielle Autorentools oder Entwicklungsumgebungen eingesetzt werden (z.B. Rapid Application Development Tools) *Die Maskendetail interessieren in dieser Phase noch nicht. Deshalb wird von einem '''Low-Fidelity-Wegwerf-Prototyp''' gesprochen. *Meistens werden unterschiedliche Varianten erstellt um die beste Variante zu finden. = Anwendungsfallmodell = *Das Anwendungsfallmodell ist eine Black-Box-Betrachtung *Aus jedem GeschĂ€ftsprozess werden die GeschĂ€ftsfĂ€lle (Business cases) identifiziert. Diese lassen sich in GeschĂ€ftsanwendungsfĂ€llen beschreiben und enthalten die Stereotyp-Bezeichnung "business". *Der Analytiker trĂ€gt die jeweiligen AnwendungsfĂ€lle zusammen und vervollstĂ€ndigt sie mit dem DomĂ€nenexperten. Die Anforderungen lasse sich in 3 Gruppen einteilen: *Rahmenbedingungen (Projektumfeld, verfĂŒgbare Infrastruktur, Firmenstandards, gesetzliche Vorgaben) *nicht-funktionale Anforderungen (Perfomanz, Benutzerfreundlichkeit, Robustheit, Wartbarkeit, ..) *funktionale Anforderungen (was soll das System leisten) == Wie werden AnwendungsfĂ€lle erstellt? == '''1. Schritt: Informationen vervollstĂ€ndigen.''' *Mit DomĂ€nenexperten, dem Management, den Kunden, Lieferanten Prozess-Owner und anderen WissenstrĂ€gern werden die Details durchgegangen. '''2. Schritt: potenzielle Akteure finden.''' *Welches sind die Kunden im betreffenden GeschĂ€ftsprozess? *Welche internen Stellen sind beteiligt? *zu welchen internen Stellen finden ein Datenaustausch statt? *zu welchen externen Stellen finden ein Datenaustausch statt? Die gefunden Akteure können in einem nĂ€chsten Teilschritt zu gleichen Gruppen zusammengefasst und einheitliche Namen gegeben werden. z.B. beim Seminarhotel *Kunden *Mitarbeiter *externe IT-Systeme *interne IT-Systeme '''3.Schritt: AnwendungsfĂ€lle identifizieren''' *Ein Anwendungsfall besteht aus einer Folge zu AktivitĂ€ten welche durch ein bestimmtest Ereignis ausgelöst wird. *Meistens ist ein Akteur beteiligt fĂŒr welchen mindestens ein sichtbares Ergebnis entsteht. *Ein Anwendungsfall kann also durch ein auslösendes Ereignis und ein erhaltenes Resultat identifiziert werden. '''4. Schritt: Akteure und AnwendungsfĂ€lle verbinden.''' *Hier erfolgt ein erster Entwurf des Anwendungsfalldiagramms. Ausgehend von den definierten AnwendungsfĂ€llen wird der auslösende Akteure verbunden. So entsteht die Grundlage um an den AnwendungsfĂ€llen weiter zu arbeiten (im Normalfall CASE-Tool unterstĂŒtzt). '''5. Schritt: Akteure und AnwendungsfĂ€lle beschreiben und komplettieren''' Es wird eine Beschreibung mit folgenden Eigenschaften und Inhalten erstellt: *muss von allen Beteiligten verstanden werden (also nicht EDV-technisch verfasst) *Akteure *Vor/Nachbedingungen *Ergebnisse *Ablauf *immer aus Sicht des GeschĂ€ftstreibenden beschreiben *auf logische Abfolge der AnwendungsfĂ€lle achten '''6. Schritt. Beziehungen zwischen AnwendungsfĂ€llen modellieren''' *gleichartige AktivitĂ€tsabfolgen suchen *wenn vorhanden, dann als einen eigenen Anwendungsfall herausnehmen und in den anderen AnwendungsfĂ€llen mit einer "include"-Beziehung verwenden. '''7. Schritt. Sicht ĂŒberprĂŒfen''' *interagiert jeder Use Case unmittelbar oder mittelbar mit mindestens einem Akteur? *EnthĂ€lt kein Diagramm mehr als 10 Use Cases? *Sind die Namen intuitiv verstĂ€ndlich? *Ist die Beschreibung fĂŒr Anwender verstĂ€ndlich? *Sind die Begriffe konsistent? *Sind die Use Cases weder zu mĂ€chtig noch zu klein? *Ist die Beschreibung des Ablaufs nicht zu detailliert? *Ist die Anwendung und nicht ein Dialogablauf beschrieben? *sind alle Aspekte abgedeckt? *Gibt es kein WidersprĂŒche? == Wie werden Anwendungsfalldiagramme erstellt? == *Ein entsprechend angeschriebenes Rechteck reprĂ€sentiert das zukĂŒnftige '''Informationssystem'''. *Die AnwendungsfĂ€lle sind innerhalb des Systems zu platzieren. *'''Akteure''' sind ausserhalb des Systems *Die AnwendungsfĂ€lle werden mit einer durchgezogenen Linie mit den Akteuren verbunden. Die Linien nennt man '''Assoziationen'''. *Die Akteure sind mit der in dieser Situation relevanten Rolle angeschrieben. *Die AnwendungsfĂ€lle sollten mit einer prĂ€gnanten Bezeichnung versehen sein (Substantiv und Verb wie z.B. Reservation durchfĂŒhren) [[Image:222-11.gif]] [[Image:Anwendungsfalldiagramm.gif]] *Akteure können Personen, OE oder andere fimeninterne oder firmenextern Informationssystem sein. *Neben StrichmĂ€nnchen dĂŒrfen auch andere Stereotypen verwendet werden. *fĂŒr ein anderes System hat sich das Knoten-Symbol der Verteildiagramms durchgesetzt. '''Assoziationen:''' *eine einfache Assoziation bedeutet eine bidirektionale Kommunikation zwischen dem Akteur und dem System (durchgezogene Linie ohne Pfeil) *ist die Navigierbarkeit nur auf einen Seite gegeben, so wird dies mit einem offenen Pfeil und einem Kreuz am anderen Ende angedeutet (siehe Beispiel Rechnung an Kunde). *Vor- bzw. Nachbedingungen werden mit einer gestrichelten Linie und offenem Pfeil gezeichnet. Siehe Beispiel: Check-Out nur möglich wenn Check-In durchgefĂŒhrt wurde. *Spezielle AnwendungsfĂ€lle können generalisiert werden. Alle Beziehungen des generellen Anwendungsfalles gelten dann automatisch fĂŒr den speziellen. Die Beziehung wird durchgezogener und geschlossenem, gefĂŒllten Pfeil gezeichnet. Siehe Beispiel "Reservation vornehmen" "Seminarreservation vornehmen". *Gleiche AblĂ€ufe dĂŒrfen in separate AnwendungsfĂ€lle ausgelagert werden. Mit der Stereotype-Bezeichnung "include" können diese hinzugefĂŒgt werden. Dadurch werden Redundanzen vermieden. das Modell wird ĂŒbersichtlicher und besser wartbar. *"extend" ist Ă€hnlich wie "include". Es kann aber eine Bedingung angegeben werden welche dann an einem "extension point" andockt. [[Image:222-12.gif]] [[Image:Include-extend.png]] == Wie werden AnwendungsfĂ€lle beschrieben? == *Die Beschreibung soll möglichst kurz und prĂ€gnant sein. *fĂŒr alle Beteiligten verstĂ€ndlich *Aus Sicht der GeschĂ€ftstreibenden Die einzelnen Teile der Beschreibung: *Name *Spezialisierung von *Kurzbeschreibung *Akteure *Auslöser *Vorbedingung *Eingehende Information *Ergebnisse *Nachbedingungen *Ablauf *Kategorie (PrimĂ€r = notwendiges, hĂ€ufiges Verhalten / SekundĂ€r = notwendiges, seltenes Verhalten / Optional: nicht notwendiges Verhalten) == Vom Anwendungsfall zum Testfall == Es ist sinnvoll bereits in dieser Phase die TestfĂ€lle und die Akzeptanzkriterien zu beschreiben. Diese können direkt aus den AnwendungsfĂ€llen abgeleitet werden. = Statisches Analysemodell = *Die AnwendnungfsfĂ€lle und das Pflichtenheft bilden den Input zum statischen Analysemodell. *Dieses konzentriert sich auf die Sichtweise des Aufbaus und die Struktur des Systems. *Objekte bzw. Klassen mit ihren Attributen sind zu identifizieren *Ebenso die Beziehungen zwischen den Klassen. *Der Analytiker stellt die Resultate in einem UML-Klassendiagramm dar == Welchem Zweck dienen CRC-Karten (Class - Responsibility - Collaborator)? == Auf den CRC-Karten werden in Arbeitssitzungen die Informationen gesammelt und auf einer Pin-Wand in der richtigen Beziehung platziert. Die erhaltenen Infos fliessen in die eigentliche Modellierung ein. [[Image:222-13.gif]] *Unter "Responsibility" werden die Verantwortlichkeiten eingetragen. *Collaborator" spricht die Beziehungen zu den anderen Klassen an. Durch Beantworten folgender Fragen ergeben sich die ersten Klassen: *Mit welchen Personen arbeitet das System zusammen? *Welche Dinge sind im GeschĂ€ftsprozess involviert oder beschrieben? *Welche Artikel bzw. Leistungen werden dem Kunden geliefert? *Welche Papiere, Dokumente werden erstellt? *Welche Informationen fliessen in das System? Die Beziehungen: *Welche fachlichen Beziehungen bestehen zwischen den Objekten? *wie viele Objekte einer Klasse sind an einer Beziehung beteiligt? == Wie werden Pakete geformt? == Ein Namensraum ist ein paketierbares Modellelement welches andere Element enthĂ€lt. Pakete können ganz unterschiedlich Elemente enthalten. Pakete helfen Ordnung in die Anwendungen zu bringen. Gleichartige Artefakte lassen sich so bequem in ein entsprechendes Pakte versorgen. Man kann Elemente auch anderen Paketen wieder zugĂ€nglich machen. Vier unterschiedliche Festlegungen der Sichtbarkeit: *public: (+) fĂŒr alle sichtbar *private: (-) nur fĂŒr die eigene Klasse sichtbar *protected: (#) nur fĂŒr die eigene Klassen und die Unterklassen sichtbar. *package: (~) nur innerhalb des gleichen Paketes sichtbar Pakete können andere Pakete importieren. Dazu gibt es folgende beiden Möglichkeiten: *"import": die Elemente des anderen paketes werden importiert. Wenn das importierende Pakete von einem anderen Paket importiert wird, werden auch die von diesem Paket importierten Pakete ebenfalls impoirtiert. *"acccess": Damit greift man nur auf die Elemente zu, ohne diese weiter zu exportieren. Beide werden als AbhĂ€ngigkeit gezeichnet, das heiĂt in der Form einer gestrichelten Linie mit einer offenen Pfeilspitze. Zu beachten ist, dass das importierte Paket am Ende mit der Pfeilspitze gezeichnet wird. [[Image:222-14.gif]] == Wie sieht ein Analyseklassenmodell aus? == Die Klassen mit den wichtigsten Attributen, den Assoziationen mit deren MultiplizitĂ€t (KardinalitĂ€t) sowie den Verebungsstrukturen werden identifiziert. === Klasse === *Bezeichnung soll eine natĂŒrliche Identifikation ermöglichen *eindeutige Bezeichnung im ganzen Modell *keine Leerzeichen im Namen oder andere Sonderzeichen (ausser _) *Zusammengesetzte Namen sollten mit GrossKlein-Schreibung abgegrenzt werden. *diese Regeln gelten auch fĂŒr Pakete, Attributs und Operationsbezeichnungen Namen von abstrakten Klassen werden kursiv geschrieben. In Handzeichnung sollte aber besser den Constraint {abstract} angegeben werden. In UML wird die Klasse als Rechteck gezeichnet: [[Image:222-15.gif]] === Attribute === *bilden die Eigenschaften einer Klasse *Name soll möglichst selbsterklĂ€rend sein. *jedes Attribut weist einen Attributswert je Instanz auf *Klassenattribute weisen hingegen einen Attributswert fĂŒr die gesamte Menge der Objekte auf. Diese sind unterstrichen. *Ein von anderen Attributswerten abgeleitetes Attribut beginnt mit einem Slash. FĂŒr das Design werden diese Attribute meist gestrichen, da sie sich errechnen lassen. [[Image:222-16.gif]] *Jedes Attribut weist eine Sichtbarkeit aus *der Typ des Attributes zeigt die Art der darin enthaltenen Daten auf. Primitiver Datentyp (string, int), AufzĂ€hlungsdatentyp (Enum), Komplexer Datentyp (Objekt) Beispiel AufzĂ€hlungsdatentyp: [[Image:222-17.gif]] *Im Design stehen die Typen der jeweiligen Plattform zur VerfĂŒgung (Java, .NET, ...) *Attribute können bei den Instantiierung einen Initalwert erhalten. Dazu wird mit einem Gleichheitszeichen der Wert zugewiesen. Ohnen diese Anaben enthalten die Attribate den Leerwer (Null-Value) *Attribute welche nur gelesen werden dĂŒrfen, haben das Merkmal {readonly} Bei Attributen welche mehrere Werte enthalten können, wird die MultiplizitĂ€t in eckigen Klammen angegeben. Die Listen können wir folgt beschrieben bzw. eingeschrĂ€nkt werden: *{bag}: beliebige Liste von Werten *{unique}: jeder Attributswert darf nur einmal vorkommen. *{ordered}: die Liste der Werte ist sortiert. KĂŒnstliche SchlĂŒsselattribute dĂŒrfen in der Analyse noch nicht festgelegt werden. Dies ist Design-Arbeit. Auch Fremd-SchlĂŒsse sind noch nicht festzulegen. Durch die Assoziation wurd die Navigierbvarkeit sichergestellt. Die Syntax der Attributsdefinition lautet: '''[sichtbarkeit][/][:typ[multiplizitĂ€t][=initialwert][{eigenschaftswert}]''' === Operationen === *Erst wĂ€hrend der Erstellen des dynamischen Analysemodells vervollstĂ€ndigt der Analytiker die Operationen mit den dazu gehörenden Parametern. *Der Namen und die Parameter bilden die Signatur *Die Menge aller Operationen bilden das Verhalten der Klasse *Operationen enthalten die selben Sichtbarkeitshinweise wie die Attribute. Die Paramter sind in der Klammer mit Komma abgetrennt. Ohne spezielle Angaben sind dies Eingabeparameter. Ansonsten: *in: Eingabewert (Default) *out: RĂŒckgabewert *inout: beides Den Parametern ist der Typ (mit Doppelpunkt) beizufĂŒgen. Zusicherungen welche das System beim Aufruf bzw. beim Abschluss der Operation einhalten muss, werden mit OCL in geschweiften Klammern (Constraints) angegeben: *Vorbedingung: {pre: KundenNr ist gĂŒltig} *Invariante (Zusicherung wĂ€hrend AusfĂŒhrung): {inv: Objekt ist fĂŒr Dritte gesperrt} *Nachbedingung: {post: Ănderung ist persistiert) Sofern eine Operation einen Typ besitzt, entspricht dies dem Typ des RĂŒckgabeparameter. Je nach Verantwortlichkeit der Aufgabe welche die Operation hat, werden folgenden Arten unterschieden: *Konstruktor *Destruktor *Setter *Getter *Link (Aufbauen Objektbeziehung) *Unlink *Getlink *Query (Dateninhalt abfragen. Mit/ohne Berechnung) *Update (speichern, persititieren) Die Syntax der Operation lautet: '''[sichtbarkeit] name (parameterliste) [:typ] {constraints}''' === Assoziationen (Beziehungen) === *zeigen die Beziehungen zwischen Klassen auf *werden mit einer ausgezogenen einfachen Linie dargestellt *im Analyseklassendiagramm sind diese zu benennen. *Wenn die Leserichtung nicht von oben nach unten oder nicht von links nach rechts geht, muss diese mit einem kleinen ausgefĂŒllten Pfeil angegeben werden. *Am Ende der Assoziation besteht die Möglichkeit die Rolle anzugeben welche dies entsprechende Klasse in dieser Beziehung hat. Die MultiplizitĂ€t definiert die gĂŒltige KardinalitĂ€t. Beispiel: *Eine Firma ist Kunde des Seminarhotels *Die Firma fĂŒhrt ein Seminar durch an welchem 3 Mitarbeiter teilnehmen. *Die KardinalitĂ€t ist in diesem Fall 3 *Da wir keine Begrenzung der Anzahl vorgeben, ist die MultiplizitĂ€t 1..*. GĂŒltige MultiplizitĂ€ten sind in positiven ganzzahligen Werten anzugeben. Ein Von-bis-Wert ist mit zwei Punkten ".." anzugeben. Sobald der Wert 0 möglich ist, ist diese Beziehung optional. Beispiele: *1 *0..1 *1..3, 7 *1..* *0..* ist gleichbedeutend wie * '''Beispiel:''' [[Image:222-18.gif]] kann wie folgt gelesen werden: *Ein Kunde besteht aus mindestens einer Person, kann aber aus beliebig vielen Personen bestehen. *Genau eine Person ist die Kontaktperson beim Kunden. Ein '''Objektdiagramm''' zeigt konkrete '''Instanzen''' mit deren Beziehungen aus. Es hilft konkrete Situationen darzustellen. Das obige Beispiel sieht als Objektdiagramm z.B. wie folgt aus: [[Image:222-19.gif]] '''Navigierbarkeit:''' *werden mit einem offenen Pfeil bzw. dem Kreuz modelliert. *wenn nichts angegeben ist, ist sie bidirektional. *Die Navigierbarkeit muss im Design bei unidirektionalen (nur ein Weg) explizit modelliert werden. Entsprechend werden die dazu notwendigen Link-Operationen gebildet. Wie im Beispiel angegeben, macht es keinen Sinn, vom Hotelzimmer her zu wissen wer dies prĂ€ferenziert. [[Image:222-20.gif]] Wenn ein Objekt eine Beziehung zu einem Objekt der gleichen Klasse hat, spricht man von einer '''reflexiven Assoziation'''. Im folgenden Beispiel können Personen Mitarbeiter oder Vorgesetzte sein. Jeder Mitarbeiter hat genau einen Vorgesetzten und jeder Vorgesetzte hat 1 bis 10 "Untergebene". [[Image:Reflexive-Assoziation.gif]] '''noch ein Beispiel:''' [[Image:222-21.gif]] *Wenn man eine 1:1-Beziehung hast, muss dies ĂŒberprĂŒft werden. *Wenn die eine Klasse nur eine ErgĂ€nzung bildet, mĂŒssen diese in der Analysephase zu einer Klasse zusammengefasst werden. *Nur wenn eine separate ObjektidentitĂ€t vorhanden ist, darf eine 1:1-.Beziehung angewendet werden. Beispiel: Klasse Ehemannen und Ehefrau. '''Aggregation:''' *Ein Stockwerk besteht aus diversen RĂ€umen. *Die RĂ€ume sind Teil des Stockwerkes. Eine solche Beziehung wird mit UML in einer '''Aggregation'''. Am Assoziationsende ist beim Ganzen ein nicht ausgefĂŒllter Rhombus. Die Aggregation wird in der Analysephase gerne angewendet, im Design jedoch weggelassen, da eine Implementierung nicht stattfindet. [[Image:222-22.gif]] anderes Beispiel: Restaurant und Stuhl. Stuhl kann auch ohne Restaurant leben. '''Komposition''': *wenn die einzelnen teile nicht ohne die Existenz des Ganzen leben können, handelt es sich um eine Komposition. *wird mit einem gefĂŒllten Rhombus dargestellt. *hat im Gegensatz zur Aggregation einen direkten Einfluss auf das Design. *es muss sichergestellt sein, dass beim Löschen des Ganzen auch die dazugehörenden teile gelöscht werden, bzw. dass wĂ€hrend der Existenz des Teiles das dazu gehörende Objekt des Ganzen auch vorhanden ist. [[Image:222-23.gif]] '''Zusicherungen:''' Zwischen Assoziationen kann es AbhĂ€ngigkeiten geben. Diese werden mittels Zusicherungen (Constraints) modelliert. Beide Beziehungen werden mit einer gestrichelten Linie verbunden und die Zusicherung in Klammern geschrieben: *OCL Ausdruck *or: keine, nur eine oder beide Beziehungen dĂŒrfen vorhanden sein. *xor: es darf nur eine Beziehung vorhanden sein. *and: es mĂŒssen beide Beziehungen vorhanden sein. [[Image:222-24.gif]] '''Assoziationsklasse:''' *Es kommt vor, dass Bezeihungen ebenfalls Attribute und Operationen haben. *Damit werden diese Assoziationen zu Assoziationsklassen. *Im Analyseklassenmodell wird dies mit einer Klasse, welche eine gestrichelte Linie zur Assoziation aufweist, dargestellt. *jede konkrete Beziehung bildet somit ein Objekt mit den entsprechenden Attributswerten. *FĂŒr das Design-Modell muss dieses Konstrukt jedoch in 2 Beziehungen und einer normalen Klasse aufgelöst werden. [[Image:222-25.gif]] anderes Beispiel: [[Image:Assoziationsklasse.gif]] === Generalisierung === *schon in anderen Kapiteln erwĂ€hnt. *UML-Notation: ein geschlossener Pfeil der zur Oberklasse zeigt. '''Beispiel eines Analyseklassediagramms:''' [[Image:222-27.gif]] === Verwendung von visuellen Stereotypen === [[Image:222-26.gif]] === Wie prĂ€zisieren wir ein Modell mit OCL === *Visuelle Modelle haben grenzen *z.B. wenn man modellieren will, dass nur Personen des gleichen Kunden in das gleiche Hotelzimmer bewohnen sollen. Mit OCL lassen sich Modelle mit EinschrĂ€nkungen und PrĂ€zisierungen ergĂ€nzen. OCL ist eine seiteneffektfreie Sprache. Es können keine Werte geĂ€ndert werden. Ă€hnlich SQL "select". In Bezug auf MDA bietet OCL die Voraussetzung, damit ein Modell vollstĂ€ndig und eindeutig auf einer hohen Abstraktionsebene definiert werden kann. OCL-Befehle weisen immer einen '''Kontext''' auf, der eine Zuordnung auf ein konkretes Modellelement enthĂ€lt: *Classifier (wie z.B. Klasse, Akteur, ...) *Feature eines Classifiers wie Attribut oder Operation. '''Beispiele''': Festlegen, dass die verantwortliche Person mindestens 18 Jahre alt sein muss: ''context: Kunde inv: self.Kontaktperson.Alter >= 18'' "inv" steht fĂŒr Invariant, was mit einer "immer zutreffenden Zusicherung" ĂŒbersetzt werden kann. === PrĂŒfung des Modells === Folgende Fragen helfen bei der ĂberprĂŒfung des statischen Analysemodells um die QualitĂ€t zu steigern *Sind die Namen aussagekrĂ€ftig (Klasse, Attribute, Operationen)? *korrektes Abstraktionsniveau *es dĂŒrfen keine Reports, BenutzeroberflĂ€chen oder Implementierungsdetails als Klassen modelliert sein. *sind die nötigen Rollen spezifiziert? *Liegen unberechtigte 1:1 Beziehungen vor? *etc... == Wie helfen Analysemuster Lösungen zu finden? == FĂŒr immer wieder auftauchende Problemstellungen wurden Musterkataloge geschaffen. Beispiele: [[Image:222-28.gif]] [[Image:222-29.gif]] = Dynamisches Analysemodell = *Die Dynamik des System wird beschrieben. *wird auch '''Interaktionsmodell''' genannt (weil dargestellt wird wie die Objekte interagieren) *Der Schwerpunkt liegt auf de Innensicht (White Box). Im Gegensatz zum Anwendungsfallmodell (Black-Box-Betrachtung) == Wie werden ProzessablĂ€ufe als AktivitĂ€tendiagramm modelliert? == *Sobald ein Anwendungsfall einige Bedingungen und NebenlĂ€ufigkeiten hat, ist eine verbale Beschreibung nicht mehr geeignet. *Stattdessen kommt das AktivitĂ€tendiagramm zum Zug (grafische Darstellung) *Das AktivitĂ€tendiagramm kann auch fĂŒr die Beschreibung des gesamten GeschĂ€ftsprozess verwendet werden(z.B. anstelle vom BPMN) '''Beispiel eines einfachen AktivitĂ€tendiagramm:''' [[Image:222-30.gif]] (AktivitĂ€t = ganzes / Aktion = Teilschritt bzw. kleinste ausfĂŒhrbare Einheit) *genau ein Startknoten *ein oder mehrere Endknoten *Jede Aktion muss ein Ausgang haben. *Bedingung bei Entscheidungsknoten muss gemĂ€ss UML-Regel in eckigen Klammern stehen) *Alternativ kann Bedingung in einer Notiz angegeben werden. '''Beispiel parallele KontrollflĂŒsse:''' [[Image:222-31.gif]] *Splitting- bzw. Synchronisationsbalken dĂŒrfen auch waagrecht sein *erst wenn alle Zweige beim Synchronisationsbalken ankommen, lĂ€uft der Prozess weiter. *Ausnahme: paralleler Kontrollfluss kann beendet werden. '''Objekte / Pins / Buffers''' *In UML 2.0 steht neu die Möglichkeit der Modellierung eines Objektflusses zur VerfĂŒgung. Objekte welches als Parameter ĂŒbergeben werden oder Aktionen welche Objekte erzeugen werden als Pin visualisiert. *Der "centralBuffer" bildet eine Zwischenspeicher fĂŒr Objekte. *Der "datastore" ist die Endablage von Objekten. Im folgenden Beispiel werden auch Konnektoren gezeigt: [[Image:222-32.gif]] '''Ereignisse''': Im folgenden Beispiel sind folgende Ereignisse zu sehen *normales Ereignis, d.h. ein Signal aus einem Ereignis empfangen *Zeitereignis *Ausnahmeereignis *Ein Ereignis auslösen, d.h. ein Signal senden [[Image:222-33.gif]] '''AktivitĂ€tsbereiche''': *Mit AktivitĂ€tsbereichen kann dargestellt werden wer fĂŒr eine Aktion verantwortlich ist. *Diese dĂŒrfen horizontal oder vertikal angebracht werden. *Nicht mehr als AktivitĂ€tsbereiche verwenden. *Alternativ können die AktivitĂ€tsbereiche mit Klammern angegeben werden. [[Image:222-34.gif]] '''Dekompositionen''' *Wenn sich hinter einer Aktion ein komplexer Ablauf verbirgt, kann dies mit einem gabelĂ€hnlichen Symbol unten rechts angezeigt werden. *Diese Aktion ist dann ein Aufruf zu einer eigenstĂ€ndigen AktivitĂ€t *So können Dekompositionen auf unterschiedlichen Ebenen modelliert werden [[Image:222-35.gif]] '''Strukturelemente''' *FĂŒr den Einsatz in der Designphase stehen auch Strukturelemente von Selektionen und Iterationen zur VerfĂŒgung [[Image:222-36.gif]]
Summary:
Please note that all contributions to HallerWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
HallerWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information