24.04.2014 (Foliensatz USE4EIS) - Abkürzungen: EIS, UML, OCL, USE - Kontext und Aufgaben (Validation, Verifikation) von USE - (Einstieg) Konzepte OCL: UML CD, Wahrheitswerte, Objekte, Kollektionen, Navigation, Kollektionsoperationen - UML-Tools mit OCL - USE-Features (im Screenshot): Projektbrowser, Projektbrowser-Detail, Sequenzdiagramm, Klassendiagramm, OCL-Ausdruck, Klassenausprägung - textuelle Darstellung von Klassen, Assocs und OCL-Constraints - OCL-Operationsdefinition, Invariante (Integritätsbedingung), Vor- und Nachbedingung - erste Kollektionsliterale und -Operationen (includes, forAll) - Sequenzdiagramme, Lebenslinien, Nachrichten(-arten), Ein-/Ausblenden von Details 08.05.2014 (Foliensatz USE4EIS) - Durchlaufen/Animieren von Kommandofolgen (Validation) - SeqDia, ObjDia, Klassenausprägung - SeqDia, OCL-Anfrage, Klassenausprägung - SeqDia, nur OCL-Anfrage - Kollektionsoperationen select, collect (Einstieg) - collect mit Ergebnistyp Bag(T) (analog zu SQL select-from-where VS select-distinct-from-where) - Kommandofolge mit Vor- und Nachbedingungen - Klassenausprägung, OCL-Anfrage - Einstieg OCL-Typsystem (OclAny > Person, String, Gender, ...; Person > Studi, Prof; Studi, Prof, String, Gender, ... > OclVoid) - ungültiges ObjDia (negativer Testfall) - Objektdiagramm-Erzeugung mit und Konzepte von ASSL - Invarianten-Window, Evaluation-Browser, Log-Window - grösseres gültiges ObjDia, OCL-Anfragen - Schlussfolgerung, Konsequenz aus Model (im Bsp Bigamiefreiheit) 15.05.2014 (Foliensatz/Paper: 'Teaching Touch Transformations', Ergänzung) - Bsp für eine Library in unterschiedliche Formulierungen - informelle Beschreibung - 6 Lösungen als USE-Modell - alle USE-Modelle verwenden Invarianten (Invs) und Pre- und Postconditions (Prepos) - MaxInvsMinPrepos: Einschrängungen werden durch Invarianten gemacht, sofern dies möglich ist; Pre- und Postconditions nur für Einschränkungen, die nicht als Invarianten formulierbar sind; insbesondere Postconditions mit @pre; maximale Forderungen in Invs, minimale Forderungen in den Prepos - Vorstellung Bsp-Klassendiagramm, Bsp-Sequenz- und Objektdiagramm, CMD-Protokoll mit Tuple-Abfragen - Einstieg: Tupel in OCL - Diskussion: Invariante noDoubleBorrowings; möglich zu formulieren in User, Copy, ODER(!) Book; kein zwingend notwendiger Kontext für diese Forderung - MaxPrepos: Transformation der Invarianten in Vorbedingungen von Operationen; Einschränkungen werden bei den Operationen, die die jeweilige Invariante verletzen könnten, als zusätzliche Preconditions formuliert - Bsp: noDoubleBorrowings muss in 2 Operations-Preconditions überprüft werden; nameIsKey nur in User::init 22.05.2014 (Foliensatz/Paper: 'Teaching Touch Transformations', Ergänzung) - Assoc2Attr: Klassendiagramm, Transformation der Assoziationen in objekt- und kollektions-wertige Attribute - Invarianten zur Sicherstellung der Inversität der Attribute - RelDB1NF: Klassendiagramm, Set- und Tupel-Typen - geschachtelte Strukturen; Systemzustand als Term mit komplexem Typ - Invs2Super: Faktorisierung der 3 Key-Invarianten in abstrakte Klasse Keyed; Konkretisierung von keyValue(), comparableTo(...); Invariante differentObjectsDifferentKeys - OCL-Feature: oclIsTypeOf(...) - CompFrame: Begriff Frame-Condition; Bsp: unerwartete Manipulation von Objekt ada durch Objekt bob mit erfüllter Postcondition - Operation doNothing() - Frame-Conditions für User::init(...) 05.06.2014 (Foliensatz: Syntax und Semantik von UML-Klassendiagrammen) - Klassendiagramm, Objektdiagramm - Klasse, Attribut, Operation, Sichtbarkeit (+,-,#), tagged Value, Stereotyp Objektfeature vs. Klassenfeature (z.B. Objektattribut vs. Klassenattribut) - Assoziation (binär, ternär, reflexiv), Assoziationsname, Rollenname, Multiplizität - Assoziationsklasse, qualifizierte Assoziation - Aggregation, Komposition - Generalisierung, (overlapping, disjoint), (complete, incomplete) - abstrakte Klasse - Transformation von fortgeschrittenen UML-Konzepten in einen UML-OCL-Kern, i.w. binäre Assoziationen plus OCL - binäre Multiplizität als OCL-Einschränkung - ternäre Multiplizität als OCL-Einschränkung - ternäre Assoziation als Klasse und binäre Assoziationen plus OCL-Einschränkung - Assoziationsklasse als ternäre Assoziation plus OCL-Einschränkung - qualifizierte Assoziation als Assoziationsklasse plus OCL-Einschränkung 12.06.2014 (Foliensatz: Kollektionsoperationen in OCL) - OCL-Kollektionen: Set, Bag, OrderedSet, Sequence - Eigenschaften von including: Kommutativität, Absorption - Operationen: Signatur, insbesondere Rückgabetyp (Auswahl:) - including, excluding - includes, excludes, includesAll, excludesAll - size, isEmpty, notEmpty - select, reject, collect - one, sortedBy - iterate - Umrechnung von Operationen auf iterate - geschachtelte Kollektionen 19.06.2014 (Foliensatz: closure) - iterate - Java-ähnliche, imperative Definition - Besonderheiten auf Set(T) und Bag(T) für nicht-kommutative ITEREXPR - closure - Berechnung des transitiven, reflexiven Abschlusses einer Relation - Definition auf Set(T) und OrderedSet(T) - Erweiterung auf Bag(T) und Sequence(T) durch Konvertierung - Beispiele 26.06.2014 (Foliensatz: Navigation in OCL, Metamodellierung) - dot-shortcut - collect vs. collectNested im Zusammenhang mit flatten - Verwendung von Rollennamen - `single-valued roles' vs. `collection-valued roles' - Überblick und Beispiele (Bsp Employee-Department-Project) zu - OCL-Kollektionsarten - OCL-Kollektionsoperationen - Metamodell für ER- und Relationenmodell und der Transformation - Syntax für ER-Schemata - Definition der Syntax durch Klassen, Assoziationen, Attribute und Invarianten - Bsp Friendship/Facebook - Verletzung der syntaktischen Regeln (keine key-Attribute für Entity, key-Attribute für Relationship, nicht-eindeutige Namen innerhalb eines Entity) 03.07.2014 (Foliensatz: Metamodellierung) - Metamodell für ER-Schemata - Erfülltsein bzw. Verletzung der Invarianten - key-Attribute für Entity (entityKeyNotEmpty) - key-Attribute für Relationship (relshipKeyEmpty) - Metamodell für ER-States - Klassen/Konzepte: ErState, Instance, Link, AttrMap, Value - Invariante: keyMapUnique - Scenarios mit zwei ER-States: Diana-moves-from-Wembley-to-Windsor, Diana-moves-and-marries - ad-hoc Beispiel für Verletzung von keyMapUnique - Klasse Trans (= Klasse für Transformation zwischen ER- und relationalem Modell) - Invarianten für Klasse Trans (nur zwischen Syntax-Teilen) - forEntityExistsOneRelSchema - forRelshipExistsOneRelSchema - forRelSchemaExistsOneEntityXorRelship - Invariante Attr::linkedToOneOfEntityRelshipRelSchema 10.07.2014 (Foliensatz: Fallstudie TollCollect) - Klasendiagramm, Objektdiagram, State machines, Sequenzdiagramm - Kommunikationsdiagramme - Objekte - Nachrichten - Nachrichtennummer - Kommunikationsrichtung - Selektion von Objekten im Kommunikationsdiagramm mit OCL (- USE ModelValidator)