Vorgabe: Einfaches technisches System mit
Kundenanforderungen,
technischen Anforderungen,
ersten Analyseergebnissen und einem
vorläufigen Architektur-Klassendiagramm.
Dazu sind folgende Aufgaben zu lösen:
Anforderungsmängel finden
das Klassendiagramm vervollständigen
fünf weitere UML-Diagramme erstellen
zwei Entwurfsmuster und eine sonstige Entwurfsmaßnahme einsetzen
Zuletzt folgen acht Wissensfragen, die nichts mit dem Projekt zu tun haben.
Eigene Notizen
Jedes Wort im Text genau auf Auswirkungen auf Methoden/Attribute prüfen. Beispiel "Taste.LeuchteAn()".
Jedes Element muss seinen Auftraggeber über eine "fertig"-Meldung benachrichtigen (wichtig für Sequenzdiagramme und Zustandsdiagramme)
Benutzerinteraktionen werden ins Sequenzdiagramm aufgenommen. Beispiel: Benutzer drückt Taste.
Software Engineering befasst sich mit Techniken und Methoden
das Softwareprodukt möglichst fehlerfrei und möglichst nahe an den tatsächlichen Wünschen des Anwenders orientiert zu erstellen,
ständige Änderungen der Anforderungen zu bewältigen,
die zu jeder Zeit von jedem Entwickler zu bewältigende Komplexität klein zu halten,
eine geregelte und effiziente Zusammenarbeit aller Beteiligten zu ermöglichen und
dies alles in einem rationellen und planbaren Kosten- und Zeitrahmen zu realisieren.
Software Engineering ist die zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. (Prof. Helmut Balzert)
Software Engineering ist Programmierung unter mindestens einer der folgenden beiden Bedingungen (Parnas):
Auf Software Engineering kann verzichten, wer alleine ein Programm für der einmaligen alleinigen Gebrauch entwickelt!
Anwender können ihre Anforderungen im Vorfeld nicht erkennen! (V-Modell XT: Auftraggeber muss alle Anforderungen im Vorfeld formulieren; V-Modell 97 und RUP: Anforderungserfassung ist Aufgabe des Auftragnehmers)
Durchschnittswerte: Anforderungen ändern sich monatlich um 2%, ausgelieferte Software erfüllt lediglich 61% der Anforderungen, 67% der Kosten eines Projekts beruhen auf falschen Anforderungen
Anforderungen basieren auf Wünschen → Wünsche basieren auf Anwendungsfällen
Möglichkeiten, Anforderungen/Anwendungsfälle zu finden, siehe Tabellen S. 70 und 71 (z.B. Brainstorming, Workshop, Interview, Reviews etc.)
Ein Anwendungsfall ist eine vollständige Systemfunktion aus der Sicht des Anwenders, vom auslösenden Ereignis bis zum Vorliegen des gewünschten Ergebnisses. Dabei muss das auslösende Ereignis keine Anwenderaktion sein; es kann auch von einem anderen System oder aus der Systemumgebung stammen. Entsprechend kann das erwünschte Ergebnis eine Ausgabe an den Anwender, an ein anderes System oder an die Systemumgebung sein. Interne Ereignisse des Systems werden nicht betrachtet. Für jeden Anwendungsfall wird eine Bezeichnung aus einem Objekt und einem Verb gewählt. Dabei ist es nicht festgelegt, ob der Name aus Sicht des Anwenders oder des Systems formuliert wird; meist ist eine Mischung für die Verständlichkeit sinnvoll, z.B. "Getränk wählen", "Getränk zubereiten".
Stakeholder ist jede Person, Gruppe oder Institution, die an dem zu entwickelnden Produkt oder dessen Herstellungsprozess in irgend einer Weise – positiv oder negativ – interessiert ist. (Liste möglicher Stakeholder S. 81)
Volere-Template und -Klassifizierung S. 81
nicht-funktionale Anforderungen können die Systemarchitektur stärker beeinflussen als funktionale
Anforderungen an Anforderungen (S. 83)
Verfälschung von Anforderungen
Mögliche Verfälschungen (S. 85)
Template
Requirements Management
Requirements Engineering (Erfassung, Qualitätssicherung und Definition)
Requirements Tracing (Sicherstellen, dass im Laufe des Entwicklungsprozesses keine Anforderung verloren geht, und dass alles, was realisiert wird, auf einer Anforderung basiert)
Change Management (Umgang mit Anforderungsänderungen, Versionierung)
Requirements Documentation (Strukturierte Verwaltung aller Anforderungen mit Abhängigkeiten, Beziehungen, Versionen und Zugriffsrechten).
Warum Aufwandsermittlung?
Einflussgrößen (S. 88): z.B. Programmtyp, Qualität des Programmierers, Programmiersprache, Organisation etc.
Methoden
Analogieschätzung
Delphi-Methode
Faktorenschätzung
COCOMO (S. 89)
Function Points (S. 90)
Use Case Points
Aufgabe jeder Softwareentwicklung ist es, die Lücke zwischen den Anforderungen einerseits und einem von einem Prozessor ausführbaren Code andererseits zu schließen. Die objektorientierte Analyse hat dabei die Teilaufgabe, aus den Erkenntnissen der Anforderungsanalyse ein objektorientiertes System zu modellieren, das in der Lage ist, die Anforderungen zu erfüllen.
The organizational structure of a system. An architecture can be recursively decomposed into parts that interact through interfaces, relationships that connect parts, and constraints for assembling parts… Parts that interact through interfaces include classes, components and subsystems. (RUP)
Assoziation, Aggregation, Komposition (S. 99)
Generalisierung / Spezialisierung (S. 100)
Programmiere auf eine Schnittstelle hin, nicht auf eine Implementierung
Mealy-Automat: Aktionen im Zustandsübergang, Moore-Automat: Aktionen beim Betreten eines Zustands
Aktionen (z.B. Setzen/Testen eines Flags, Ein-/Ausschalten eines Relais) sind atomar, d.h. sie benötigen theoretisch keine Zeit → Zustandsübergänge benötigen keine Zeit
Aktivitäten (z.B. Öffnen einer Türe, komplexe Berechnung) benötigen Zeit → finden nur in Zuständen statt
Erweiterter Endlicher Automat: kann außer seinem Zustand weitere Daten verwalten, in Aktionen ändern und seine Transitionen davon abhängig machen (diese Möglichkeit sollte aber nur für Zählvariable und Flags genutzt werden)
History (S. 120)
Entwicklung eines Zustandsautomaten (S. 120)
Suche alle Nachrichten, die dem Objekt gesendet werden können (am einfachsten in Sequenzdiagrammen), und alle zeitgesteurten Ereignisse.
Suche alle External Inputs, die das Objekt empfangen kann. External Inputs sind Ereignisse, die keine Nachrichten sind, z.B. Eingangsgrößen eines Sensors.
Suche alle unterscheidbaren Zustände des Objekts. Ein Zustand ist eine Situation, in der das Objekt in Ruhe ist oder eine Aktivität ausübt und dabei auf etwas wartet.
Überprüfe gleich erscheinende Zustände darauf, ob sie wirklich gleich sind; sie sind es nicht, wenn sie auf neue Ereignisse unterschiedlich reagieren. Häufig zeigt sich dabei, dass eine zusätzliche Nachricht erforderlich ist, um einen Zustandsübergang auszulösen.
Prüfe, ob sich mehrere Zustände nur durch den Wert einer Zählvariablen oder eines Flags unterscheiden; denn könnte ein Erweiterter Endlicher Automat sinnvoll sein.
Zeichne den ersten Zustands-Übergangs-Graphen.
Prüfe, ob ein Event in mehreren Zuständen einen Übergang in denselben Zielzustand bewirkt; dann könnte ein Composite State sinnvoll sein.
Ergänze die Aktionen. Prüfe bei jeder Aktion, ob sie den Richtlinien für entry- oder exit-Aktionen genügt, sonst ordne sie auf der Transition an.
Überprüfe Transitionen, die in den alten Zustand zurückführen, daraufhin, ob sie die entry- und exit-Aktionen durchlaufen sollen oder nicht.
Definiere den Startzustand und ergänze den Initial Pseudostate und evtl. erforderliche Aktionen zur Initialisierung.
SDL
State-Event-Matrix
Alle geplanten State-Event-Kombinationen eintragen. Dann Leerfelder füllen:
Die Kombination kann auftreten und wurde einfach vergessen. Sie wird nachgetragen.
Die Kombination kann auftreten, das Event kann aber nicht verarbeitet werden und muss aufbewahrt werden – Eintrag "defer".
Die Kombination kann auftreten, soll aber ignoriert werden; Feld wird mit "–" markiert.
Die Kombination kann in fehlerfreiem Betrieb nicht auftreten, ist also ein Hinweis auf einen Fehler; Feld wird zunächst mit "e" markiert.
Behavior State Machine (steuert das Verhalten eines Objekts)
Protocol State Machine (unterscheidet zulässige von unzulässigen Nachrichtensequenzen, mögliche Spezifizierung von Constraints)
A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.
Trennung von Schnittstelle und Implementierung
Komposition anstatt Vererbung
Einrichten nicht konkreter Klassen (Kapselung von Algorithmen)
Wiederverwendbare Klassen erzeugen
Wiederverwendbare Komponenten nutzen
Protokolle definieren, Protokollklassen einrichten
Root-Klassen definieren
Objektbeziehungen konkretisieren
Performance verbessern
Schnittstellen zu DMC und HIC vorbereiten
Gerätetreiber definieren
Virtuelle Maschinen konstruieren
Kopplung: Wissen der Objekte über ihre Umgebung
Kohäsion: Verantwortlichkeit der Objekte
Weighted methods per class (WMC)
Depth in inheritance tree (DIT)
Number of immediate children (NOC)
Coupling between objects (CBO)
Response for a class (RFC)
Lack of cohesion in methods (LCOM)
Weitere
Number of message sends (NOM)
Number of Instance Methods (NIM, = WMC mit Einheitsgewicht 1)
Number of Methods Added (NMA)
Number of Methods Overridden (NMO)
Number of Operators Overloaded
Number of Parametrized Classes
Number of Objects Composed
Kapselung der Speicherorganisation
Zugriffsverriegelung und Datenkonsistenz
Klassenmodell der DMC → Object Server
* wie sie heißt,
welche Aufgabe sie hat,
durch welche Ereignisse oder durch welchen Zeitablauf sie gestartet wird,
welche Priorität sie besitzt,
welche Services welcher Objekte sie aufruft,
auf welchem Weg sie Informationen erhält oder weitergibt (Nachrichtenparameter, Mailbox, Pipe, Buffer…).
Die UML unterscheidet aktive und nicht aktive Objekte: Ein aktives Objekt besitzt einen eigenen Thread of Control, ein nicht aktives Objekt liegt im Thread eines aktiven und kann von ihm aufgerufen werden. In einem objektorientierten System ist also ein aktives Objekt der Kern einer Task.
Interrupts
Polling
Ausgabe
"Run to Completion" (RTC) ist das in der UML 2 definierte Verhalten eines nebenläufigen Zustandsautomaten: Ein Zustandsautomat befindet sich vom Start bis zum Ende einer Transition im "Run to Completion Step"; dieser darf durch eine neue Anforderung an dasselbe Objekt nicht unterbrochen werden, da der Zustand des Objekts während einer Transition undefiniert ist. Zum Run to Completion Step gehören auch Methoden nicht aktiver Objekte, die von der Transition aufgerufen werden.
SDL ist eine formale Sprache mit dem Ziel der Spezifikation und Beschreibung des Verhaltens von Telekommunikationssystemen (insbesondere in den Funktionsbereichen Anrufbearbeitung, Wartung, Fehlerbehandlung, Systemkontrolle sowie beim Entwurf von Datenkommunikationsprotokollen). Aufgrund ihrer Eigenschaften ist SDL generell zur Verhaltensspezifikation von Echtzeitsystemen geeignet. Die Sprache ist in grafischer und textueller Notation definiert. SDL enthält eine Reihe von Konzepten wie Typen-, Instanzen-, Kommunikations- und Sichtbarkeitskonzept und dynamische Semantik. Aufgrund ihrer formal korrekten Syntax und Semantik sind SDL-Spezifikationen zur automatischen Konsistenzprüfung geeignet.
Statische Analyse
Korrektheitsbeweis
Test
Auswahl der Testdaten
Testüberdeckung
OO-Test (S. 183)
Test abstrakter und abgeleiteter Klassen
Integrationstest
Test zyklischer Kommunikation
Test in der Multitasking-Plattform
Testwerkzeuge
Testlogbuch
Ein Prozess(modell) besteht aus
Vorgehensmodell
wann und unter
welchen Voraussetzungen
welches Produkt durch
welche Aktivität mit
Methodenzuordnung
Rollenzuordnung
Internationaler Standard des Bundesinnenministeriums
Stellt die Anforderungen an das System (Hard- und Software) in den Vordergrund
Submodelle
Dokumente werden von Aktivitäten erzeugt
Rollen und Rollenzuordnung (S. 21)
Jeder Aktivität werden Methoden (Elementarmethoden S. 24) und Werkzeuge zugeordnet
Szenarien
Inkrementelle Entwicklung (Regelfall)
Grand Design (Traditionelles Vorgehen)
Einsatz von Fertigprodukten
Objektorientierte Entwicklung
Entwicklung wissensbasierter Systeme
Software-Pflege und -Änderung
Durch Tailoring wird aus dem V-Modell das Projekthandbuch erstellt (S. 30)
Nachteile: schwerfällig, ausufernde Dokumentation, Tailoring/Erstellen des Projekthandbuchs ist Handarbeit (Fehlerquelle)
Seit 2004 verbindlich für Aufträge des Bundes
Vorgehensbausteine kapseln Rollen, Produkte und Aktivitäten (entsprechen etwa den Submodellen des V-Modells 97) → Weltkarte (S. 34)
Durchführungsstrategien (entsprechen Szenarien des V-Modells 97) (ggf. getrennte Strategien für AG und AN)
Agile Entwicklung
Komponentenbasierte Entwicklung
Auftraggeberprojekte
Grand Design
Objektorientierte Entwicklung
Entwicklung wissensbasierter Systeme
Entscheidungspunkte
Methoden und Werkzeuge
Rollen
Nachteile
Wust von unstrukturierten Texten
Wichtige Workflows/Rollen fehlen oder sind schwer auffindbar
Anforderungen werden als gegeben vorausgesetzt
Ausschließlich für objektorientierte Softwareentwicklung mit der UML geeignet
iterativ (alle Aktivitäten werden mehrfach durchlaufen) und inkrementell (jede Iteration bring einen Mehrwert)
Use-Case-getrieben
Architekturzentriert
Phasen
Inception
Elaboration
Construction
Transition
Workflows (entsprechen insgesamt dem Submodell SE des V-Modells 97)
Business Modeling
Requirements
Analysis and Design
Implementation
Test
Deployment
80% rule
Timeboxing
Nachteile
Spezialisierung des RUP für kommerzielle Client-/Server-Anwendungen: Object Engineering Process von Bernd Oesterreich
Agile Manifesto (S. 52)
Extreme Programming
Crystal Methodenfamilie
Process Maturity Levels
initial
repeatable
managed (defined)
measured (managed)
optimized (optimizing)
Capability Maturity Model
Key Process Areas → erreichen Ziele
Common Features → richten sich an Implementierung und Institutionalisierung
Key Practises → beschreiben Infrastruktur und Aktivitäten
Capability Maturity Model Integration
modulares Konzept → Integration neuer Entwicklungsdisziplinen
staged representation → CMM
continuous representation → Bewertung einzelner Prozessbereiche
Prozessbereiche (mit Zielen ab S. 60)
Process Management
Project Management
Engineering
Support
Standard CMMI Appraisal Method for Process Improvement
Software Process Improvement and Capability dEtermination
Bootstrap
-
Six Sigma
Review
Statische Analyse
Konstruktive Maßnahmen
Total Quality Management (TQM) bezeichnet die durchgängige, fortwährende und alle Bereiche einer Organisation (Unternehmen, Institution, etc.) erfassende aufzeichnende, sichtende, organisierende und kontrollierende Tätigkeit, die dazu dient, Qualität als Systemziel einzuführen und dauerhaft zu garantieren. (S. 68)
Use Cases
Aufwandsschätzung
Eigene Aufzeichnungen zur Vorlesung durchgehen
Lernziele des Skripts anschauen
Praktikumsunterlagen anschauen
Aufgaben zum Übungsprojekt Handhabungsautomat lösen
Wiki-Eintrag drucken/speichern
Entwurfsmuster genauer anschauen
Informationen zu zyklomatischer Komplexität und Berechnung von LCOM
Infos zu COCOMO II
UML-Diagrammtypen detaillierter anschauen
Bei der Nürnberger U3 werden unter den Türen vor dem Öffnen Trittbretter ausgefahren, um den Spalt zwischen Wagen und Bahnsteig zu überbrücken. Nach zwei Jahren Entwicklungszeit zeigte sich, dass alles vergeblich war, da der Spalt unterschiedliche Breite haben kann. Was ist hier falsch gemacht worden?
Versuchen Sie, an einem Fahrkartenautomaten der VAG ein "Tagesticket Plus Preisstufe 4" zu lösen, und protokollieren Sie Ihren Arbeitsablauf.
Wieso hat auch der Hersteller einer Software Qualitätsanforderungen?
Der Hersteller sorgt nach der Auslieferung der Software auch für deren Support und Weiterentwicklung. Die Kosten hierfür übersteigen die Entwicklungskosten im Allgemeinen deutlich (Wert aus der Literatur: Faktor 1,5). Der Hersteller sollte also sicherstellen, dass seine Software wartungsfreundlich und leicht erweiterbar ist. Des Weiteren hat der Hersteller durchaus einen Ruf zu verlieren, wenn er qualitativ minderwertige Software herstellt.
Sie entwickeln für die "Ich-AG" eines Freundes ein einfaches Buchhaltungsprogramm. Was halten Sie dabei von Software Engineering?
An einem großen Projekt arbeiten 150 Softwareentwickler. Wie ist das möglich?
Durch Berücksichtigung der Pronzipien des Software-Engineerings: Modularisierung, Tests, Arbeitsteilung, detailliertes Design etc.
Angenommen, Sie lesen in der Zeitung, dass ein neues Softwareprojekt in drei Jahren abgeschlossen sein und 15 Mio. € kosten soll. Mit welchen Ergebnissen müssen
Sie rechnen?
Was regelt ein Prozess?
Was ist eine Rolle?
Was macht ein Vorgehen nach dem Wasserfallmodell riskant und teuer?
Wodurch unterscheidet sich das ursprüngliche V-Modell nach Boehm von einem Wasserfallmodell?
Was bedeutet das "V" im V-Modell 97?
Versuchen Sie, in den V-Modellen 97 und XT etwas zu finden, was dem Requirements Workflow des RUP entspricht.
V-Modell 97: Unterpunkte von SE 1: z.B. Anforderungen an die Qualität definieren, Randbedingungen definieren etc. Das Ergebnis von SE 1 sind die Anwenderanforderungen.
V-Modell XT: Die Anforderungen müssen komplett vom AG geliefert werden.
Ist es nach der aktuellen Weltkarte der Vorgehensbausteine des V-Modell XT möglich, einen Prozess für ein sicherheitsrelevantes System zu definieren, das weder
HW noch SW enthält und keine Anforderungsfestlegung benötigt?
Nein. Systemsicherheit erfordert alle drei genannten Komponenten.
Wann soll im RUP die erste Version der Architektur vorliegen?
Am Ende der Elaboration-Phase.
Was unterscheidet den OEP vom RUP?
Ausrichtung auf kommerzielle Systeme
Timeboxing wird durch Timepacing (feste Abfolge von Terminen innerhalb einer Iteration) ersetzt
Wo findet sich das Deployment Diagram der UML in den V-Modellen 97 und XT wieder?
Führen Sie für Ihre Projektarbeit des Studiengangs ein "Standardisiertes Vortailoring" des V-Modells 97 durch.
Was ist ein "System Metaphor", zu welchem Vorgehensmodell gehört es, und zu welchem Ziel soll es beitragen?
Ein grober Überblick über das zu erstellende Gesamtsystem, das zu einem einheitlichen Verständnis bei den Beteiligten führen soll (Extreme Programming).
Um den Termin halten zu können, verordnet der Projektleiter seinen Programmierern für die nächsten vier Wochen 20% Überstunden. Welchen Erfolg kann er erwarten?
Überstunden wirken sich allerhöchstens kurzfristig aus. Auf längere Sicht führt die Mehrarbeit zu nachlassender Leistung bei den Mitarbeitern.
Sie erhalten als Auftragnehmer vom Auftraggeber eine vollständige Anforderungsspezifikation. Womit müssen Sie nach zwei Jahren Entwicklungsdauer rechnen?
Ca. 2% der Die Anforderungen ändern sich pro Monat, d.h. nach 2 Jahren sind nur noch knapp die Hälfte der Anforderungen gültig.
Was hat TestDrivenDevelopment mit Wiederverwendung zu tun?
Da die Testumgebung einen zusätzlichen Klienten für die zu testenden Komponenten darstellen, wird gleich sichergestellt, dass die Komponente mit mehreren (unterschiedlichen) Klienten kooperieren kann, was ein Nachweis für die Wiederverwendbarkeit ist.
Was ist erforderlich, damit wiederverwendbare Komponenten auch wiederverwendet werden?
Wiederverwendung muss durch einen Software-Reuse-Prozess unterstützt werden.
Arbeiten Sie sich anhand der gegebenen Links in Scrum ein und definieren Sie eine Variante, die zu den besonderen Randbedingungen Ihrer Projektarbeit passt.
Ein Bekannter erzählt Ihnen, seine Firma sei soeben nach CMM Level 1 zertifiziert worden. Was meinen Sie dazu?
Ihre Firma beginnt plötzlich, Trainingsprogramme für ihre Mitarbeiter einzurichten. Was könnte der Grund sein?
Wieso ist CMMI für eine kontinuierliche Prozessverbesserung besser geeignet als CMM?
Warum wurde Bootstrap entwickelt, und warum wurde die Entwicklung eingestellt?
Bootstrap wurde für eruropäische Firmen quasi als Konkurrenzprodukt zu CMM entwickelt, ist aber inzwischen von SPICE abgelöst.
Worin besteht die Verwandtschaft zwischen CMMI, SPICE und Bootstrap und der Unterschied zu CMM?
Die Kosten eines Projekts wurden auf 5 Mio. € geschätzt; im Angebot stehen aber 6,2 Mio. €. Welche Berechnung könnte dahinter stehen?
Ein Softwarehaus, das auch Unteraufträge vergibt, möchte sich nach CMM zertifizieren lassen. Worauf muss es besonders achten?
Welche Reifegrade kennt
ISO 9003?
Woran denken Sie, wenn Sie SCAMPI hören?
Wo ist von Stakeholdern die Rede?
Hat es einen Sinn, auch für nicht-objektorientierte Programmierung C++ anstatt C einzusetzen?
Kann man ein Peer Review auch als konstruktive Maßnahme bezeichnen, und warum (nicht)?
Wie viele Teilnehmer erfordert ein Structured Walkthrough mindestens?
6: Autor, Moderator, Schriftführer, 3 Reviewer (Wartungsprophet, Normenreiter, Benutzervertreter)
Ihr Abteilungsleiter will an Reviewsitzungen teilnehmen. Darf er das?
Welche Techniken zur Spezifikation von Use Cases kennen Sie?
Wann ist eine Anforderung rechtlich irrelevant?
Welche Einflüsse könnten welche Stakeholder auf den Getränkeautomaten haben?
"Das Bezahlen kann durch Druck auf die Rückgabetaste abgebrochen werden; der Kunde erhält daraufhin sein eingeworfenes Geld zurück." Welche Fehler hat diese Anforderung? Formulieren Sie sie neu (dabei können es mehrere werden)!
Für ein neuartiges Embedded System wurden 200 RFP gezählt. Es soll in C implementiert werden. Mit welchem Entwicklungsaufwand ist zu rechnen, und wie lange dauert die Entwicklung?
Was ergibt sich mit derselben Anzahl von RFP für eine einfache Datenbankapplikation in
SQL?
Welcher Ihnen aus XP bekannte Begriff taucht oben in der Delphi-Methode auf?
Was bedeutet MVC?
Welche Elementarmethode des V-Modells '97 hat mit Verantwortlichkeit zu tun?
Welche Objekte liefert eine Textanalyse des Satzes "Bei jedem Münzeinwurf wird der Wert der Münze vom Münzprüfer erkannt.", und warum?
Was ist der Unterschied zwischen Assoziation, Aggregation und Komposition?
Was stellt das nebenstehende Bild dar, und was fehlt hier eigentlich?
Die UML kennt zur Strukturierung von Modellelementen auch noch das Package. Warum ist es zur Architekturmodellierung nicht geeignet?
Was ist ein Persistence Tier?
Was kann ein Node enthalten?
Welche Arten von Interfaces unterscheidet die UML 2?
Was ist ein Combined Fragment?
Was ist eine Execution Specification?
Was bedeutet no-wait?
Warum wurde das Kollaborationsdiagramm der UML 1 in Kommunikationsdiagramm umbenannt?
Was ist in Abb. 5-83 fehlerhaft?
Was ist eine interne Transition?
Was bewirkt ein defer?
Welchen Vorteil bringt die Verwendung einer State-Event-Matrix?
Wer ist schuld, wenn eine Precondition nicht erfüllt ist?
Wer ist schuld, wenn eine Postcondition nicht erfüllt ist?
Wo lässt sich im Getränkeautomaten sinnvoll das Interpretermuster einsetzen?
Erstellen Sie ein Klassendiagramm des Entwurfsmusters "Zustand" für den Kassierer nach Abb. 5-86.
Erstellen Sie ein Sequenzdiagramm für die Systemgenerierung nach dem Klassenmodell aus Abb. 5-61. Ergänzen Sie evtl. erforderliche Set-Methoden.
Ermitteln Sie CBO und RFC für die Klassen Auftragsannahme, Kassierer und Zubereiter aus Abb. 5-60 und Abb. 5-61.
Nehmen Sie an,
MS Word hat in einem großen Dokument mit automatischer Silbentrennung ein Wort falsch getrennt, und Sie wollen das in Ordnung bringen. Schreiben Sie dazu ein Szenario und versuchen Sie, dieses durchzuführen.
Erweitern Sie das Beobachtermuster (Abb. 5-102) zu einem MVC-Muster.
Überarbeiten Sie das Klassenmodell aus Abb. 5-61 so, dass die Grundsätze der MVC-Architektur eingehalten werden.
Entwerfen Sie ein Klassendiagramm für ein Aktives Objekt für Methodenaufruf mit no-wait-Semantik.
Ergänzen Sie das Diagramm aus Abb. 5-114 links um HW-Schnittstellen.
Wodurch unterscheiden sich CCM, COM und EJB?
Ihr Klassendiagramm enthält eine Mehrfachvererbung. Für die Implementierung ist Java vorgesehen. Was können Sie tun?
Der Codegenerator von Enterprise Architect erzeugt seltsame Präprozessor-Direktiven. Was bedeuten diese?
Erzeugen Sie im Enterprise Architect ein einfaches Klassendiagramm mit fünf mal zwei Klassen und zwischen jeweils zwei Klassen
eine explizit einseitig navigierbare Assoziation
eine einseitig navigierbare, einseitig undefinierte Assoziation
eine beidseitig undefinierte Assoziation
eine explizit beidseitig navigierbare Assoziation
ein Interface für eine der Klassen und explizit einseitig navigierbare Assoziationen in einer Richtung auf die Klasse, in der anderen auf das Interface und vergleichen Sie den generierten Code bei verschiedenen Optionseinstellungen.
Der Enterprise Architect kann auch ein objektorientiertes Programm einlesen und daraus ein Klassendiagramm erzeugen. Testen Sie, wie gut das funktioniert, und
von welchen Einstellungen die Qualität abhängt.
Was bedeutet RTC?
Was bedeuten PIM und PSM?
Unter welchen Umständen kann man auf ein PSM verzichten?
Wandeln Sie den Zustandsautomaten aus Abb. 5-86 in SDL um.
Zeichnen Sie zu Abb. 5-129 unten ein Objektdiagramm (d.h. mit alle Exemplaren der Klassen) mit ausgefüllten Feldern der Pattern-Objekte.
Vergleichen Sie die Vor- und Nachteile von Statischer Analyse, Black-Box- und White-Box-Test.
Was hat Abschnitt 5.10.3 mit Abb. 5-140 zu tun?
Wozu dient ein Regressionstester?
Was haben der Elchtest und die letzten französischen Atomwaffentests miteinander zu tun?
In einem Softwareprodukt wurden am ersten Testtag 250, am zweiten 130, am dritten 65, am vierten 30 und am fünften 15 Fehler gefunden. Wie viele Fehler sind voraussichtlich noch enthalten?
Eine Rechteckklasse CRect ist gekennzeichnet durch ihre linke, obere, rechte und untere Begrenzung. Sie hat u.a. einen Konstruktor CRect(int links, int oben, int rechts, int unten) und eine Methode point_in_me(int x, int y), die feststellt, ob sich eine Koordinate x/y innerhalb ihrer Grenzen befindet.
Erstellen Sie eine Äquivalenz- und Grenzwertklassenanalyse für point_in_me.
Was kann beim Konstruktor schief gehen, und wie lässt sich das erkennen?
Eine abgeleitete Klasse CResRect hat eine neue Methode resize(int dx, int dy).
Was muss bei ihr getestet werden, und warum?
Planen Sie einen Überdeckungstest für den Zustandsautomaten des Kassierers aus Abb. 5-86.
Zu welchen Klassen müssen für den obigen Test Simulationsklassen entwickelt werden, wenn die echten Klassen noch nicht vorliegen?
Wie lässt sich dieser Aufwand vermeiden?
Die Nachrichten "entriegeln" und "schliessen" in Abb. 5-137 kommen vom Triebwagen. Warum ist das ein Testproblem, und was kann man dagegen tun?
Das Subsystem Kassierer nach Abb. 5-62 soll so implementiert werden, dass es bottom-up testbar ist. In welcher Reihenfolge müssen seine Klassen und eventuell erforderlichen Simulationsklassen erstellt werden, damit alles Erstellte möglichst bald testbar ist?
Die Funktionalität einer Klasse Stack (Stapelspeicher) ist wie folgt definiert:
void push(int wert) legt die Zahl wert "oben auf den Stapel".
int top() liefert den obersten Wert des Stapels
void pop() vernichtet den obersten Wert des Stapels
bool empty() liefert die Information, ob der Stapel leer ist
void clear() löscht den gesamten Inhalt.
Wie sieht eine Äquivalenzklassenanalyse für diese Klasse aus?
Die Funktion void sort(int &a, int &b, int &c), die die Werte a, b und c aufsteigend sortieren soll, wurde so implementiert:
void sort(int &a, int &b, int &c)
{
int t;
if(a > b)
{ t = a; a = b; b = t; }
if(b > c)
{ t = a; a = c; c = t; }
if(a > b)
{ t = a; a = b; b = t; }
}
Welchem Umstand verdankt Microsoft einen wesentlichen Marktvorteil?