From 84775f274f419f451eec02803b65096c356074c7 Mon Sep 17 00:00:00 2001 From: Robert Jeutter Date: Tue, 9 Mar 2021 11:33:57 +0100 Subject: [PATCH] neues Dokument --- README.md | 2 +- Softwaretechnik - Cheatsheet.pdf | Bin 0 -> 233170 bytes Softwaretechnik - Cheatsheet.tex | 4385 ++++++++++++++++++++++++++++++ Softwaretechnik - MindMap.pdf | Bin 178999 -> 0 bytes Softwaretechnik - MindMap.tex | 402 --- 5 files changed, 4386 insertions(+), 403 deletions(-) create mode 100644 Softwaretechnik - Cheatsheet.pdf create mode 100644 Softwaretechnik - Cheatsheet.tex delete mode 100644 Softwaretechnik - MindMap.pdf delete mode 100644 Softwaretechnik - MindMap.tex diff --git a/README.md b/README.md index 0c976f3..f7c509f 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Unterlagen zu Informatik Vorlesungen der TU Ilmenau - [Praktikum A2](Rechnerarchitekturen%201%20-%20Praktikum%20A2.pdf) - [Rechnerarchitekturen 2](Rechnerarchitekturen%202.md) - [Softwaretechnik](Softwaretechnik.md) - - [MindMap](Softwaretechnik%20-%20MindMap.pdf) (work in progress) + - [Zusammenfassung](Softwaretechnik%20-%20Cheatsheet.pdf) (work in progress) - [Seminar](Softwaretechnik%20-%20Seminar.pdf) (work in progress) - [Beispiel Flowchart](Softwaretechnik%20Flowchart.tex) - [Stochastik](Stochastik.md) diff --git a/Softwaretechnik - Cheatsheet.pdf b/Softwaretechnik - Cheatsheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d7230e1e877a9874d253e0db5a89943b85f4a11b GIT binary patch literal 233170 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%0Di57WF?6M>rrB%4OJ^0NqVH=T4^JUdIy!9GRFjb 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

0r=k#i4m7l?A!9)w^3~-Eq#FiHcNif)EzO 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 literal 0 HcmV?d00001 diff --git a/Softwaretechnik - Cheatsheet.tex b/Softwaretechnik - Cheatsheet.tex new file mode 100644 index 0000000..8d80be6 --- /dev/null +++ b/Softwaretechnik - Cheatsheet.tex @@ -0,0 +1,4385 @@ +\documentclass[a4paper]{article} +\usepackage[ngerman]{babel} +\usepackage{multicol} +\usepackage{calc} +\usepackage{ifthen} +\usepackage[landscape,left=1cm,top=1cm,right=1cm,nohead,nofoot]{geometry} +\usepackage{amsmath,amsthm,amsfonts,amssymb} +\usepackage{color,graphicx,overpic} +\usepackage{listings} +\usepackage[compact]{titlesec} %less space for headers +\usepackage{mdwlist} %less space for lists +\usepackage[utf8]{inputenc} +\usepackage{tikz} +\usepackage{pdflscape} +\usepackage{verbatim} +\usetikzlibrary{mindmap, arrows,shapes,positioning,shadows,trees} +\tikzstyle{every node}=[draw=black,thin,anchor=west, minimum height=2em] +\usepackage[hidelinks,pdfencoding=auto]{hyperref} + +\pdfinfo{ + /Title (Softwaretechnik - Cheatsheet) + /Creator (TeX) + /Producer (pdfTeX 1.40.0) + /Author (Robert Jeutter) + /Subject () +} +% Information boxes +\newcommand*{\info}[4][16.3]{ + \node [ annotation, #3, scale=0.65, text width = #1em, inner sep = 2mm ] at (#2) { + \list{$\bullet$}{\topsep=0pt\itemsep=0pt\parsep=0pt + \parskip=0pt\labelwidth=8pt\leftmargin=8pt + \itemindent=0pt\labelsep=2pt} + #4 + \endlist + }; +} + +% This sets page margins to .5 inch if using letter paper, and to 1cm +% if using A4 paper. (This probably isn't strictly necessary.) +% If using another size paper, use default 1cm margins. +\ifthenelse{\lengthtest { \paperwidth = 11in}} + { \geometry{top=.5in,left=.5in,right=.5in,bottom=.5in} } + {\ifthenelse{ \lengthtest{ \paperwidth = 297mm}} + {\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} } + {\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} } + } + +% Redefine section commands to use less space +\makeatletter +\renewcommand{\section}{\@startsection{section}{1}{0mm}% + {-1ex plus -.5ex minus -.2ex}% + {0.5ex plus .2ex}%x + {\normalfont\large\bfseries}} +\renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}% + {-1explus -.5ex minus -.2ex}% + {0.5ex plus .2ex}% + {\normalfont\normalsize\bfseries}} +\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}% + {-1ex plus -.5ex minus -.2ex}% + {1ex plus .2ex}% + {\normalfont\small\bfseries}} +\makeatother + +% Define BibTeX command +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +% Don't print section numbers +\setcounter{secnumdepth}{0} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt plus 0.5ex} +% compress space +\setlength\abovedisplayskip{0pt} +\setlength{\parskip}{0pt} +\setlength{\parsep}{0pt} +\setlength{\topskip}{0pt} +\setlength{\topsep}{0pt} +\setlength{\partopsep}{0pt} +\linespread{0.5} +\titlespacing{\section}{0pt}{*0}{*0} +\titlespacing{\subsection}{0pt}{*0}{*0} +\titlespacing{\subsubsection}{0pt}{*0}{*0} + +%Tikz global setting +\tikzset{ + topic/.style={ + text centered, + text width=5cm, + level distance=1mm, + sibling distance=5mm, + rounded corners=2pt + }, + subtopic/.style={ + yshift=1.5cm, + text centered, + text width=3cm, + rounded corners=2pt, + fill=gray!10 + }, + theme/.style={ + grow=down, + xshift=-0.6cm, + text centered, + text width=3cm, + edge from parent path={(\tikzparentnode.205) |\item (\tikzchildnode.west)} + }, + description/.style={ + grow=down, + xshift=-0.5cm, + right, + text centered, + edge from parent path={(\tikzparentnode.200) |\item (\tikzchildnode.west)} + }, + level 1/.style={sibling distance=5.5cm}, + level 1/.append style={level distance=2.5cm}, +} + +% Turn off header and footer +\pagestyle{empty} +\begin{document} + +\raggedright +\begin{multicols}{3}\scriptsize + % multicol parameters + % These lengths are set only within the two main columns + %\setlength{\columnseprule}{0.25pt} + \setlength{\premulticols}{1pt} + \setlength{\postmulticols}{1pt} + \setlength{\multicolsep}{1pt} + \setlength{\columnsep}{2pt} + + Gute Software ist schwer herzustellen + \begin{itemize*} + \item Entspricht Kundenwünsche, Vollständigkeit + \item Funktioniert Korrekt + \item Kosten- und Termintreue bei der Erstellung + \item weitere nicht-funktionale Qualitätsforderungen + \begin{itemize*} + \item Benutzerfreundlichkeit, Ergonomie + \item Sicherheit + \item Zuverlässigkeit, Fehlertoleranz + \item Performanz + \item Ressourcen-Effizienz, Skalierbarkeit, Übertragbarkeit + \item Wartbarkeit, Änder- und Erweiterbarkeit + \end{itemize*} + \end{itemize*} + + Softwaretechnik + \begin{itemize*} + \item Technische Disziplin der Software Herstellung + \item Zielorientierte Bereitstellung uns systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen [Balzert] + \end{itemize*} + + Wie kann man Software besser entwickeln? + \begin{itemize*} + \item Ingenieursmäßige Herangehensweise + \begin{itemize*} + \item Verwendung bekannter Prinzipien und Methoden + \item Systematische Vorgehensweise + \end{itemize*} + \item Verwendung von: + \begin{itemize*} + \item Abstraktion, Modelle, Notation, Simulation + \item Wiederverwendung:Muster, Komponenten, Framework + \end{itemize*} + \item Organisation + \begin{itemize*} + \item Arbeitsteilung, Integration, Planung + \end{itemize*} + \item Verwendung von Werkzeugen + \begin{itemize*} + \item IDE (Integrated Development Environment) + \item Versionierung, Bugtracker, Modellierungswerkzeug + \end{itemize*} + \end{itemize*} + + \section{Modellierungskonzepte} + > Modell: ist eine Abstraktion eines Systems mit der Zielsetzung, das Nachdenken über ein System zu vereinfachen, indem irrelevante Details ausgelassen werden [Brügge] + $\rightarrow$ Beschreibung eines Ausschnitts der Realität + + \begin{itemize*} + \item erstellen einer Abstraktion + \item abbilden signifikanter Eigenschaften + \item Deskriptiv/präskriptiv (real oder geplant) + \item Sichtweise auf ein System (Struktur, Verhalten, Zustand,...) + \item heißt Weglassen + \item setzt Verstehen voraus + \item ist nicht automatisierbar + \end{itemize*} + + Verschiedene Modelle: + \begin{itemize*} + \item Analysemodell + \item Entwurfsmodell + \item Implementierung (-smodell) + \item Vorgehensmodell + \item Produktmodell + \item Dokumentation, Alternativen-Auswahl + \end{itemize*} + + Modelle für: + \begin{itemize*} + \item Sichten + \item Funktionen + \item Daten + \item Algorithmen + \item Systemumgebung + \item Dynamisches Verhalten + \item Objektorientierte Modelle + \end{itemize*} + + \subsection{Klassische Modelle} + \begin{itemize*} + \item Funktionen: + \begin{itemize*} + \item Funktionsbaum + \begin{itemize*} + \item Hierarchische Dekomosition der Fkt + \item nummerieren der Ebenen/Funktionen möglich + \item Bsp: Abonnement Verwaltung + \end{itemize*} + \item Blockschaltbild + \begin{itemize*} + \item eingebettetes System, HW/SW + \end{itemize*} + \end{itemize*} + \item Daten + \begin{itemize*} + \item Data Dictionary + \begin{itemize*} + \item Verzeichnis von Daten mit Strukturinformationen + \item Backus-Naur-Form, kontextfreie Grammatik + \end{itemize*} + \item Entity Relationship Diagram + \begin{itemize*} + \item Daten und ihre Beziehungen + \end{itemize*} + \end{itemize*} + \item Systemumgebung + \begin{itemize*} + \item Datenflussdiagramm + \begin{itemize*} + \item Fluss und Transformation von Daten zwischen Funktionen, Speichern und Schnittstellen + \item kein Kontrollfluss + \end{itemize*} + \end{itemize*} + \item Algorithmen + \begin{itemize*} + \item Entscheidungstabelle + \begin{itemize*} + \item Regelbasierte Beschreibung + \item Bedingung + \item Aktionen + \item Reduktionsregeln + \end{itemize*} + \item Pseudocode + \begin{itemize*} + \item von Programmiersprache abstrahierende, detaillierte Beschreibung eines Algorithmus + \end{itemize*} + \item Programmablaufplan + \begin{itemize*} + \item Grafische Beschreibung des Kontrollflusses + \item DIN 66001 + \item Unstrukturiert + \end{itemize*} + \item Struktogramm + \begin{itemize*} + \item Nassi-Shneidermann-Diagramm + \item keine Sprünge + \end{itemize*} + \end{itemize*} + \item Dynamisches Verhalten (diskrete Zustände und atomare zustandübergänge) + \begin{itemize*} + \item Zustandsautomat + \begin{itemize*} + \item Verhalten mit Zuständen und -übergängen + \item Automatenmodelle und -theorie + \item Ggf zerlegung oder kommunizierende Automaten + \end{itemize*} + \item Flow-Chart + \item Ereignisgesteuerte Prozesskette (EPK) + \begin{itemize*} + \item Geschäftsprozesse + \item BPM + \end{itemize*} + \item Petri-Netz (ggf. mit Zeitmodell) + \begin{itemize*} + \item Grafische Beschreibung von Nebenläufigkeit und Synchronisation + \end{itemize*} + \end{itemize*} + \item Objektorientierte Modelle + \begin{itemize*} + \item Klassendiagramme + \item UML + \end{itemize*} + \end{itemize*} + + + \subsection{Objektorientierung} + \begin{itemize*} + \item bessere Strukturierung für komplexe Zusammenhänge + \item Abstraktere Sichtweise + \item Grundprinzip: Zerlegung; Teile und Herrsche + \item ein System besteht aus vielen Objekten + \item ein Objekt hat + \begin{itemize*} + \item definiertes Verhalten + \begin{itemize*} + \item Menge genau definierter Operationen + \item Operation wird beim Empfang einer Nachricht ausgeführt + \end{itemize*} + \item inneren Zustand + \begin{itemize*} + \item Zustand des Objekts ist Privatsache + \item Resultat einer Operation hängt vom aktuellen Zustand ab + \end{itemize*} + \item eindeutige Identität + \begin{itemize*} + \item Identität ist unabhängig von anderen Eigenschaften + \item Mehrere verschiedene Objekte mit identischem Verhalten und identischem inneren Zustand im gleichen System möglich + \end{itemize*} + \end{itemize*} + \item Klasse + \begin{itemize*} + \item Gleichartige Objekte mit ggf. verschiedenen Zuständen + \item Verhaltensschema - Operationen + \item Innere Struktur - Attribute + \end{itemize*} + \end{itemize*} + + Vorteile der Objektorientierung + \begin{itemize*} + \item Zuständigkeitsbereiche + \begin{itemize*} + \item Daten, Operationen und Zustand: lokal und gekapselt + \end{itemize*} + \item Klare Schnittstellen + \begin{itemize*} + \item Definiertes Objektverhalten, Nachrichten + \end{itemize*} + \item Hierarchie + \begin{itemize*} + \item Vererbung und Polymorphie (Spezialisierung), Klassenschachtelung + \end{itemize*} + \item Baukastenprinzip + \begin{itemize*} + \item Benutzung vorgefertigter Klassenbibliotheken, Anpassung durch Spezialisierung (mittels Vererbung) + \end{itemize*} + \end{itemize*} + + + \subsection{Unified Modeling Language} + \begin{itemize*} + \item Grafisches Beschreibungsmittel für Aspekte des Softwareentwurfs diskreter Systeme + \item Spezifikation, Entwurf, Visualisierung, Konstruktion, Dokumentation von Software + \item Für OO-Softwareentwicklung und -prozess geeignet + \item UML ist weder Methode noch Prozess + \end{itemize*} + + Warum UML? + \begin{itemize*} + \item Objektorientierung ist zur Zeit das vorherrschende Modellierungs-Paradigma, Industrie-Standard + \item Kombination von Struktur-, Verhaltens-, Interaktions-, und Verteilungsmodellen + \item Für Analyse, Entwurf, Implementierung und Test einsetzbar + \item Gute Werkzeugunterstützung für Editieren, Versionierung, Codegenerierung + \item Erweiterbarkeit der UML mit Stereotypen und Tags + \item Semi-formale Modelle, z.T. verschiedene Interpretationen + \item Offenheit: Erweiterung mit stereotypes, tags, constraints + \end{itemize*} + + Nachteile UML + \begin{itemize*} + \item UML ist in vielen Facetten nicht präzise festgelegt + \item Werkzeuge für Transformation, Analyse etc. fehlen noch + \item UML ist keine „kleine Sprache“: Lernaufwand notwendig + \item Komponenten sind nicht adäquat darstellbar + \item Sprachen wie die UML werden erlernt durch Übung! + \item Aber: LV SWT ist kein kompletter UML-Kurs + \end{itemize*} + + \paragraph{Überblick über Modelle} + \begin{itemize*} + \item 14 Diagrammarten + \item Struktur-Diagramme + \begin{itemize*} + \item Klassen-, Objekt-, Komponenten-, Kompositions-Struktur-, + \item Paket- und Verteilungsdiagramm + \item Profildiagramm - zur UML-Erweiterung + \end{itemize*} + \item Verhaltens-Diagramme + \begin{itemize*} + \item Use-Case-, Aktivitäts- und Zustandsdiagramms + \item Interaktionsdiagramme: Sequenz-, Kommunikations-, Timing- und Interaktionsübersichts-Diagramm + \end{itemize*} + \end{itemize*} + + \paragraph{Use-Case-Diagramm} + \begin{itemize*} + \item Beschreiben Systemfunktion aus Benutzersicht (Was, nicht Wie) + \item Erste Anforderungsspezifikation (requirements) + \item Planbare Einheiten als Inkremente für die Entwicklung + \item Keine Modellierung eines Ablaufs! + \item Erstellen von Testfällen (test case generation) + \item Grundelemente + \begin{itemize*} + \item Anwendungsfall: Use Case + \item Beteiligte: Aktor + \end{itemize*} + \item Verfeinerung mittels Use-Case-Realisierung notwendig + \begin{itemize*} + \item Textuelle Beschreibung + \item Verhaltensdiagramme + \end{itemize*} + \end{itemize*} + + \paragraph{Klassendiagramm} + \begin{itemize*} + \item Modellierung der Struktur (Aufbau) eines Systems + \item Modellierung von statischen Aspekten + \item Modellierung der Struktur von Daten + \item Klasse im Mittelpunkt + \begin{itemize*} + \item Aufbau: Attribute, Operationen + \item Beziehungen zueinander: Assoziationen, Vererbung + \end{itemize*} + \item Verbreitetstes und bekanntestes Diagramm der UML + \end{itemize*} + + \paragraph{Objektdiagramm} + \begin{itemize*} + \item Struktur des Systems zur Laufzeit zu einem Zeitpunkt + \item Tatsächliche Zusammenhänge und Belegungen von Attributen von Objekten zu einem Zeitpunkt + \item Eine detaillierte Sicht auf einen Aspekt + \begin{itemize*} + \item Keine vollständige Beschreibung (zu komplex) + \item Für kompliziertere Abhängigkeiten (z.B. Rekursion) + \end{itemize*} + \item Objektdiagramm für alle Arten von Exemplaren + \begin{itemize*} + \item z.B.: Klasse (Objekt), Komponente, Knoten, ... + \end{itemize*} + \item Keine Exemplare von Operationen -> Ablauf -> Verhaltensdiagramme / Interaktionsdiagramme + \item Kein Verlauf der Wertebelegung über die Zeit + \end{itemize*} + + \paragraph{Paketdiagramm} + \begin{itemize*} + \item Gliederung (Strukturierung) des Systems in Teile (Pakete) + \item Zuordnung von Elementen zu einem Paket + \item Bildung von Hierarchien (Enthält-Beziehung) + \item Abhängigkeiten zwischen den Paketen + \begin{itemize*} + \item "Include" von Quellcode-Dateien (<>) + \end{itemize*} + \item Anwendung: + \begin{itemize*} + \item Zum Grobentwurf von Systemen + \item Definition von Schichten + \end{itemize*} + \end{itemize*} + + \paragraph{Komponentendiagramm} + \begin{itemize*} + \item Strukturierung des Systems durch Komponenten + \item Komponente: Modulare, austauschbare Einheit (Substitution) + \item Modellierung der Abhängigkeiten zwischen Komponenten + \item Modellierung der inneren Struktur von Komponenten + \item Definition von Schnittstellen + \end{itemize*} + + \paragraph{Kompositionsstrukturdiagramm} + \begin{itemize*} + \item Teile-Ganzes-Strukturen -> Kompositionsstruktur + \item Strukturell statische Kompositionsstrukturen: + \begin{itemize*} + \item Kurzschreibweise bei vielen Kompositionen + \item Modellierung des Aufbaus komplexer Systeme + \end{itemize*} + \item Strukturell dynamische Kompositionsstrukturen: + \begin{itemize*} + \item Notwendige Strukturen zur Realisierung eines Verhaltens + \item Definition von Rollen, zur Lösung wiederkehrender Probleme -> Modellierung von Mustern + \end{itemize*} + \item Starke Verwandtschaft mit dem Klassendiagramm + \item Spezialisierte Kompositionsbeziehung -> erweiterte Semantik + \end{itemize*} + + \paragraph{Aktivitätsdiagramm} + \begin{itemize*} + \item Modellierung von + \begin{itemize*} + \item Kontrollflüssen + \item Datenflüssen + \item Parallelem Verhalten + \item Verzweigungen, bedingten und gewichteten Abläufen + \end{itemize*} + \item Geschäftsprozessmodellierung möglich + \item Abstrakte und detaillierte Verhaltensbeschreibung möglich + \item Grundlage zur Codegenerierung + \item Zur Verfeinerung von + \begin{itemize*} + \item Use-Cases + \item Operationen / Interaktionen + \item anderen Aktionen und Aktivitäten + \end{itemize*} + \end{itemize*} + + \paragraph{Interaktionsdiagramme} + \begin{itemize*} + \item Modellierung von + \begin{itemize*} + \item Kommunikation zwischen Kommunikationspartnern (Lebenslinie) + \item Operationen (Modellierung eines Programms) + \item Informationsaustausch / Nachrichten + \end{itemize*} + \item Gemeinsames Grundkonzept der Interaktionsdiagramme + \item Sehr detaillierte Diagramme + \begin{itemize*} + \item Meist nicht zur vollständigen Beschreibung eines Systems + \item Betrachtung eines wichtigen Teilaspekts + \end{itemize*} + \item Grundlage zur Codegenerierung + \end{itemize*} + + \paragraph{Sequenzdiagramm} + \begin{itemize*} + \item Genaue zeitliche Abfolge von Nachrichten + \item Umfangreichstes Interaktionsdiagramm + \item Kontrollelemente möglich (Schleifen, Verzweigungen) + \end{itemize*} + + \paragraph{Kommunikationsdiagramm} + \begin{itemize*} + \item Kommunikationsbeziehungen der Kommunikationspartner stehen im Vordergrund + \item Welche Komponenten arbeiten wie zusammen, um eine Funktion zu erfüllen + \end{itemize*} + + \paragraph{Timing-Diagramm} + \begin{itemize*} + \item Genaue zeitliche Darstellung von Zustandsübergängen + \item Kommunikation abhängiger Zustandsautomaten + \item Modellierung einzelner Interaktion + \end{itemize*} + + \paragraph{Prinzipieller Aufbau} + \begin{itemize*} + \item Zeitlicher Verlauf senkrecht + \item Kommunikationspartner waagerecht (unsortiert) + \item Lebenslinie + \begin{itemize*} + \item Rechteck mit gestrichelter senkrechter Linie + \item Start, Ende und Dauer der Ausführung einer Operation + \item Rekursive Aufrufe möglich + \end{itemize*} + \item Ereignisspezifikation + \begin{itemize*} + \item Stelle des Sendens / Empfangens der Nachricht + \item Definition der Reihenfolge des Auftretens + \item Trace: Folge von Sende- und Empfangsereignissen + \end{itemize*} + \end{itemize*} + + \paragraph{Weitere Elemente des Sequenzdiagramms} + \begin{itemize*} + \item Nachrichten ohne Sender + \begin{itemize*} + \item z.B. am Beginn einer Interaktion + \end{itemize*} + \item Verlorene Nachrichten (ohne Empfänger) + \begin{itemize*} + \item Nachricht ohne dargestellten Empfänger + \item z. B. am Ende einer Interaktion + \end{itemize*} + \item Erzeugen von Lebenslinien + \begin{itemize*} + \item Gestrichelte Linie mit geöffnetem Pfeil + \item Keine Rückgabenachricht + \item Zeitliche Einrückung des Rechtecks + \end{itemize*} + \item Zerstören von Lebenslinien + \begin{itemize*} + \item Durchgezogene Linie mit Dreieckende + \item Kann Rückgabenachricht erzeugen + \end{itemize*} + \end{itemize*} + + \paragraph{Nachrichten in Interaktionsdiagrammen} + \begin{itemize*} + \item Ereignis des Sendens bzw. Empfangens von Nachrichten + \item Typen: + \begin{itemize*} + \item Operationsaufruf (synchron / asynchron) + \item Antwort Nachricht + \item Signal (asynchron), Create-/ Delete Message + \end{itemize*} + \item Operationsaufruf: Parameterliste muss kompatibel sein + \item Nachrichtentypen + \end{itemize*} + + \paragraph{Zustandsdiagramm} + \begin{itemize*} + \item Modellierung des (vollständigen?) Verhaltens + \begin{itemize*} + \item Zustände von Klassen / Objekten / Komponenten + \item Übergänge zwischen den Zuständen + \item Ereignisse, die Zustandswechsel auslösen + \end{itemize*} + \item Modellierung von endlichen Automaten (Zustandsmaschinen) + \begin{itemize*} + \item Deterministische + \item Nichtdeterministische + \end{itemize*} + \item Verfeinerung von Zuständen möglich + \item Modellierung von verteilten Systemen / parallelem Verhalten + \item Grundlage zur Codegenerierung + \end{itemize*} + + + \section{Analyse} + \begin{itemize*} + \item Einordnung in den Projektablauf + \item Was ist eine Anforderung? + \begin{itemize*} + \item Merkmal, Eigenschaft, Bedingung oder Einschränkung eines Systems + \item Notwendig für die Akzeptanz vom Kunden + \item Definition (IEEE 610.12-1990) + \begin{itemize*} + \item Dokumentierte Darstellung einer Fähigkeit oder Eigenschaft + \item von Anwender benötigt zur Problemlösung bzw. um Ziel zu erreichen + \item Muss von System oder Komponente erfüllt werden, um Vertrag oder Standard zu erfüllen + \end{itemize*} + \end{itemize*} + \end{itemize*} + + \begin{itemize*} + \item Funktionale Anforderungen - Was soll es tun? + \begin{itemize*} + \item „...Legt eine vom Softwaresystem oder einer seiner Komponenten bereitzustellende Funktion oder Service dar“ [Balzert] + \item Was leistet das System + \item Welche Funktionen bietet es + \item Wie interagiert es mit der Umgebung + \item Anforderungen an: + \begin{itemize*} + \item Verhalten + \item Struktur + \item (Alternativ: Statik, Dynamik, Logik) + \end{itemize*} + \end{itemize*} + \item Nichtfunktionale Anforderungen - Wie? + \begin{itemize*} + \item „...legen qualitative oder quantitative Eigenschaften des Softwareprojektes oder einer Komponente fest“ [Balzert] + \item Auch Bezeichnet als: + \begin{itemize*} + \item Quality of Service + \item Qualitätsanforderungen + \end{itemize*} + \item Arten - FURPS (ISO 9126): + \begin{itemize*} + \item Functionality (Funktionalität) + \item Usability (Benutzbarkeit) + \item Reliability (Zuverlässigkeit) + \item Performance (Effizienz) / Portability (Übertragbarkeit) + \item Supportability (Änderbarkeit/ Wartbarkeit) + \end{itemize*} + \end{itemize*} + \end{itemize*} + + \begin{itemize*} + \item Funktionalität + \begin{itemize*} + \item Angemessen, Genauigkeit + \item Sicherheit: Vertraulichkeit, Informationssicherheit, Datenintegrität, Verfügbarkeit + \item (Nicht ausreichend spezifizierte funktionale Anforderung) + \end{itemize*} + \item Benutzbarkeit + \begin{itemize*} + \item Verständlichkeit, Erlernbarkeit, Bedienbarkeit, Attraktivität + \end{itemize*} + \item Zuverlässigkeit + \begin{itemize*} + \item Reife (Fehler-Anzahl), Fehlertoleranz, Wiederherstellbarkeit + \end{itemize*} + \item Effizient/ Leistungsanforderungen + \begin{itemize*} + \item Zeitverhalten, Verbrauchsverhalten, Wirtschaftlichkeit + \end{itemize*} + \item Portabilität + \begin{itemize*} + \item Anpassbarkeit, Installierbarkeit, Koexistenz, Austauschbarkeit + \end{itemize*} + \item Wartbarkeit + \begin{itemize*} + \item Analysierbarkeit, Änder\item und Erweiterbarkeit, Stabilität (bei Änderungen), Testbarkeit + \end{itemize*} + \item Weitere: + \begin{itemize*} + \item Konformität zu Konventionen und Bestimmungen + \item Interoperabilität zu anderen Systemen + \item Implementierungsanforderungen + \item Schnittstellenanforderungen + \item Skalierbarkeit (Änderungen des Problemumfangs) + \item Betriebliche und rechtliche Rahmenbedingungen + \item Liefer\item und Verpackungsanforderungen + \end{itemize*} + \end{itemize*} + + \paragraph{Nichtfunktionale Anforderungen} + Schwierigkeit nichtfunktionaler Anforderungen + \begin{itemize*} + \item Hängen oft von Verhalten ab: daher komplex und nicht direkt sichtbar + \item „Das Auto hat vier Räder“ (Struktur) + \item „Wenn der Blinker betätigt wird, blinkt das Auto dreimal wenn die Zündung an ist; ansonsten wird das Standlicht einseitig eingeschaltet“ (Korrektes Verhalten) + \item „Das Motorsteuergerät darf innerhalb von 5 Jahren und 150.000km Laufleistung höchstens mit 0.1\% Wahrscheinlichkeit ausfallen“ (Zuverlässigkeit) + \end{itemize*} + + Umgang mit nichtfunktionalen Eigenschaften + \begin{itemize*} + \item Nicht direkt „by construction“ zu realisieren + \item Naive Herangehensweise: Ignorieren! + \begin{itemize*} + \item Entwerfen und Implementieren der Software ohne Berücksichtigung nichtfunktionaler Eigenschaften + \item Testen der nichtfunktionalen Eigenschaften + \item Wenn nicht erfüllt: Entwurf und Implementierung ändern! + \end{itemize*} + \item Funktioniert nur bei sehr einfachen Systemen, bzw. wenn nichtfunktionale Eigenschaften nicht wichtig sind! + \end{itemize*} + + Sinnvoller Umgang mit nichtfunktionalen Eigenschaften + \begin{itemize*} + \item Untersuchung der Projektrisiken bereits in der Analysephase + \begin{itemize*} + \item größte Risiken zuerst betrachten! + \item Immer fragen: Geht das so überhaupt? + \item Festlegungen des Entwurfs möglichst früh gegen Anforderungen prüfen - aber wie? + \end{itemize*} + \item Modellbasierter Entwurf + \begin{itemize*} + \item Modellierung des Systems und seiner Umwelt + \item Bewertung des Modells (Simulation) + \item Lehrveranstaltungen Systementwurf, KIS, LTS + \end{itemize*} + \end{itemize*} + + Randbedingungen + \begin{itemize*} + \item „... Eine Randbedingung ist eine organisatorische oder technologische Vorgabe, die die Art und Weise einschränkt, wie das betrachtete System realisiert werden kann.“ + \item Werden nicht umgesetzt + \item Schränken Lösungsraum ein + \item Beispiele: + \begin{itemize*} + \item Kosten + \item Durchlaufzeit: Time to Market + \item Vorgaben durch Marketing und Vertrieb + \item Technische Randbedingungen (nichtfunktionale Anforderung) + \end{itemize*} + \end{itemize*} + + %![Analysebaum von Sommerville](Assets/Softwaretechnik1_Analyseformen1.png) + %![Analysebaum von Sommerville](Assets/Softwaretechnik1_Analyseformen2.png) + + Geforderte (Meta-)Eigenschaften + \begin{itemize*} + \item Vollständig: alle Szenarien sind beschrieben + \item Konsistent: keine Widersprüche + \item Eindeutig: nur eine Interpretation möglich + \item Korrekt: genaue und richtige Darstellung + \item Realistisch: unter geg. Einschränkungen implementierbar + \item Überprüfbar: durch Tests am Endprodukt nachweisbar + \item Rückverfolgbar: Auswirkungen bis zur Implementierung nachvollziehbar (Testfälle, Auswirkung von Änderungen) + \item Klassifizierbar (Risiko, Priorität, Dringlichkeit, Nutzen ...) + \item Validierung mit dem Kunden + \end{itemize*} + + \begin{itemize*} + \item Requirements Engineering + \begin{itemize*} + \item Ermittlung, Analyse und Verwaltung von Anforderungen + \item Ausgangspunkt: Projektidee + \end{itemize*} + \item Anforderungsermittlung + \begin{itemize*} + \item requirements elicitation, requirements definition + \item Bestimmen und dokumentieren der Anforderungen an das geplante System + \item Beteiligt: Entwickler, Kunde, Benutzer + \item Ergebnis: Anforderungsspezifikation - Glossar, Vertrag, Lastenheft + \end{itemize*} + \item Anforderungs-Analyse + \begin{itemize*} + \item requirements analysis, system modeling + \item Beschreibung im Detail und formal strukturiert + \item Beteiligt: Entwickler + \item Ergebnis: funktionale Spezifikation - Produktdefinition, Analysemodell, Pflichtenheft + \end{itemize*} + \end{itemize*} + + %![Anforderungsentwicklung von Balzert](Assets/Softwaretechnik1_Anforderungsentwicklung.png) + + %| | Anforderungsermittlung | Systemmodellierung | + %| -\item | -\item | -\item | + %| Ergebnis | Anforderungsspezifikation im Lastenheft, Glossar, Lastenheft | funktionale Spezifikation in Produktdefinition, Analysemodell, Pflichtenheft | + %| Notation | Text | Text + (semi-) formales Modell | + %| Kommunikation | mit dem Kunden | zwischen Entwicklern | + %| Sichtweise | des Anwenders | äußere Systemaspekte | + %Vor allem: Kommunikationsleistung! + + Bedeutung: + \begin{itemize*} + \item Falsche Anforderungen führen zu falschem System + \item Frühe Fehler im Entwicklungsprozess sind teuer! + \end{itemize*} + + Fehlerentstehung und Fehlerquellen bei Anforderungserfassung + \begin{itemize*} + \item 83\% sprachliche Fehler (Un- bzw. Missverständlich) + \item 75\% Logische Fehler (Widersprüchlichkeit, Redundanz) + \item 73\% Inhaltliche Fehler (Falsche Sachverhalte, Unvollständig) + \end{itemize*} + + \subsection{Ermiteln von Anforderungen} + Woher kommen Anforderungen? + \begin{itemize*} + \item Ausgangspunkt + \begin{itemize*} + \item Projektidee, schriftliche Skizze + \item Kurz und knapp + \item Stichpunkte der wichtigsten Funktionen + \item Lastenheft (falls schon existiert) + \end{itemize*} + \item Interessenhalter (stakeholder) + \begin{itemize*} + \item Identifizieren, Wichtigkeit bewerten (berücksichtigen?) + \item Ansprechpartner? Interessen und Erwartungen + \item Fachexperten, Verantwortliche, Betroffene + \end{itemize*} + \end{itemize*} + + Beteiligte Rollen + \begin{itemize*} + \item Endbenutzer + \begin{itemize*} + \item Aufnahme Ist-Zustand, Domänenwissen, Anforderungen + \end{itemize*} + \item Kunde + \begin{itemize*} + \item Definiert Ziel des Systems, Vertragsverhandlung + \end{itemize*} + \item Konfigurationsmanager + \begin{itemize*} + \item Revisionsgeschichte der Dokumente, Nachvollziehbarkeit + \end{itemize*} + \item Architekt + \begin{itemize*} + \item Integration von Anwendungsfall- und Objektmodellen + \end{itemize*} + \item Analytiker + \begin{itemize*} + \item Modelliert das System und erstellt Anwendungsfälle + \end{itemize*} + \item Redakteur + \item Prüfer + \end{itemize*} + + Wie ermittelt man Anforderungen? + \begin{itemize*} + \item Problem: Entwickler müssen sich in Begriffs- und Denkwelt des Kunden einarbeiten, sonst Kommunikationsprobleme + \item Systematische Vorgehensweise + \item Kommunikation mit Kunden + \item Geschäftsprozess (business process) + \begin{itemize*} + \item fachlicher Ablauf, der Wert oder Kosten verursacht + \end{itemize*} + \item Akteur (actor) + \begin{itemize*} + \item Benutzer, Schnittstelle nach außen + \end{itemize*} + \item Szenario (scenario) + \begin{itemize*} + \item Interaktion mit System als Ablauf + \end{itemize*} + \item Anwendungsfall (use case) + \begin{itemize*} + \item Automatisierter Arbeitsschritt, vom System ausgeführt + \end{itemize*} + \item Interviews mit Fachanwendern + \begin{itemize*} + \item Mitschrift, später strukturierter Text und Tabelle + \end{itemize*} + \item Strukturierte Spezifikation + \begin{itemize*} + \item Vorlagen / sprachliche Anforderungsschablonen + \item Formulare + \item Reduzierung sprachlicher Mehrdeutigkeiten + \end{itemize*} + \item Anwendungsfalldiagramm (Use-Case-Diagramm) + \begin{itemize*} + \item Arbeitsschritt eines Geschäftsprozesses, der durch das System ausgeführt wird + \item Anforderungen an das System modellieren - was soll das System leisten + \item Systemgrenzen / Systemkontext festlegen + \item Systembeteiligte modellieren + \item Planbare Einheiten als Schritte für die Entwicklung + \item Verwendung bereits ab Projektbeginn + \item Keine Modellierung eines Ablaufs! + \end{itemize*} + \item Umgang mit Szenarien und Anwendungsfällen + \begin{itemize*} + \item Zunächst nur zum Verständnis kurz aufstellen + \item Systemgrenze definieren + \item Beschreibungen verfeinern + \item Änderungen mit Kunden abstimmen + \item Prototypen nur zur visuellen Unterstützung + \item Benutzungsschnittstelle erst beginnen, wenn funktionale Anforderungen in etwa klar sind + \end{itemize*} + \end{itemize*} + + Leitfaden für Anwendungsfälle + \begin{itemize*} + \item Benennen mit Verbalphrasen, die Anwendersicht beschreiben (Simuliere) + \item Akteure mit Substantiven benennen (Anwender) + \item Systemgrenzen klären. Arbeitsschritte von Akteuren und System kennzeichnen + \item Schritte im aktiven Stil beschreiben (Auto bremst) + \item Ursächliche Beziehung zwischen Folgeschritten + \item 1 Anwendungsfall = 1 vollständige Transaktion + \item Normalfall darstellen; Ausnahmen gesondert beschreiben + \item Nicht die Benutzungsschnittstelle beschreiben (statt dessen visuellen Prototypen verwenden) + \item Übersichtlichkeit (max. 2-3 Seiten), sonst zerlegen + \end{itemize*} + + \begin{itemize*} + \item Typische Probleme + \begin{itemize*} + \item Kommunikations- und Verständnisprobleme + \item Viele verschiedene Beteiligte + \item Kunden wissen nicht, was sie genau wollen und was geht + \item Verwendung von Fachsprachen + \item Widersprüchliche Anforderungen, verschiedene Interessen + \item Nicht-technische organisatorische, historische oder rechtliche Rahmenbedingungen + \item Zusätzliche Beteiligte können auftauchen + \item Anforderungen ändern sich während der Entwicklung + \end{itemize*} + \item Anforderungsänderungen + \begin{itemize*} + \item Sind die Regel + \end{itemize*} + \item Tätigkeiten der Anforderungsanalyse + \begin{itemize*} + \item Anforderungen strukturieren + \item Eigenschaften der Anforderungen bestimmen + \item Anforderungen priorisieren + \item Anforderungen in Textform, Grafiken, Modellen dokumentieren + \item Anforderungen modellieren + \item Anforderungen auf inhaltliche Qualität prüfen + \item Auf Übereinstimmung mit den Zielen prüfen + \begin{itemize*} + \item Ziel Abnahme der Anforderung + \end{itemize*} + \item Hängt mit Analyse des Systems zusammen + \end{itemize*} + \item Anforderungen strukturieren + \begin{itemize*} + \item Unterteilung + \begin{itemize*} + \item Funktional, Nichtfunktional + \item Muss, Kann,... oder Haupt- und Nebenanforderung + \end{itemize*} + \item Hierarchische Zerlegung + \begin{itemize*} + \item Unterteilen, Verfeinern + \end{itemize*} + \item Ordnung festlegen, eindeutig Nummerieren + \begin{itemize*} + \item auf Einmaligkeit achten + \end{itemize*} + \item Beziehungen festhalten + \item Verwendung von Werkzeugen + \begin{itemize*} + \item MS-Project, Doors, Git issues, Trac, Bugzilla, MKS,... + \item Modellierungswerkzeuge + \end{itemize*} + \end{itemize*} + \item Eigenschaften bestimmen + \begin{itemize*} + \item Wahl der Eigenschaften firmen- bzw. projektspezifisch + \item Wichtige Eigenschaften + \begin{itemize*} + \item Identifikationsnummer + \item Kurzbezeichnung + \item Beschreibung (Text, ggf. Grafik, Modell) + \item Aufwand + \item Priorität der Anforderung + \item Bearbeitungsstatus / Restaufwand + \item Zugeordnet (wer ist verantwortlich / bearbeitet) + \item Querverbindungen zu anderen Anforderungen + \item Ggf. zusätzliche Dokumente oder Bemerkungen + \item Stabilität der Anforderung (Änderungswkt.) + \item Kritikalität der Anforderung: Schäden bei Fehlern? + \item Entwicklungsrisiko: Erfolgsaussichten der Umsetzung + \item Abnahmekriterien / Erfüllungsnachweis durch? + \item Anforderungstyp: Funktional, nicht funktional ,... + \item Anforderungssicht: Dynamik, Statik, Logik, Struktur, Funktion + \item Mögliche Konflikte + \item Autor + \item Quelle: Wer möchte die Anforderung umgesetzt haben? + \item Status der Beschreibung: Idee, grober Inhalt, detailliert + \item Anforderungsversion + \end{itemize*} + \end{itemize*} + \item Anforderungen priorisieren + \begin{itemize*} + \item MuSCoW-Priorisierung + \item Muss-, Kann-, Optional, Nicht (Abgrenzungskriterien) (must, should, could, won‘t) + \item Ad-hoc: Stakeholder priorisiert Anforderungen + \item Priorisierungsmatrix / Kosten-Wert-Analyse + \begin{itemize*} + \item Eigenschaften bewerten (Punkte vergeben) + \item Werte gewichten + \item Priorität berechnen $\text{Prioritäten} = \frac{\text{Nutzen} - \text{Nachteil}}{\text{Kosten} + \text{Risiko}}$ + \end{itemize*} + \item Kano-Klassifikation + \begin{itemize*} + \item Basiseigenschaften: Werden vorausgesetzt (fehlen stört, wenig zusätzliche Zufriedenheit) + \item Leistungseigenschaften: Sonderwünsche + \item Begeisterungseigenschaften: Wird nicht erwartet + \item Abfragen per Fragenkatalog + \end{itemize*} + \item Reihenfolge festlegen + \end{itemize*} + \end{itemize*} + + + %![Kano Klassifikation von Balzert](Assets/Softwaretechnik1_Kano1.png) + %![Kano Klassifikation von Balzert](Assets/Softwaretechnik1_Kano2.png) + + \subsection{Objektorientierte Analyse und Systemmodellierung} + \begin{itemize*} + \item Übersicht + \begin{itemize*} + \item Aufgabe: Systemmodell erstellen, funktionale Spezifikation + \item Beschreibung der Systembenutzung und des Verhaltens + \item Was, nicht wie - Implementierungsaspekte ausklammern + \begin{itemize*} + \item Nicht: Datenhaltung, Verteilung, Technologien, Architektur, .. + \end{itemize*} + \item Zusammenhang mit Anforderungsspezifikation + \item OO: Modell des Anwendungsbereichs + \end{itemize*} + \item Analysemodell + \begin{itemize*} + \item Korrekt, vollständig, konsistent und nachprüfbar + \item Struktur und Verhalten + \item Verschiedene Sichten (OO, Strukturiert, ...) + \end{itemize*} + \item Eingangsdokumente + \begin{itemize*} + \item Lastenheft, Anforderungsspezifikation + \end{itemize*} + \item Typische Ergebnisse + \begin{itemize*} + \item Funktionales Modell + \begin{itemize*} + \item Geschäftsprozesse und Anwendungsfälle + \end{itemize*} + \item Objektmodell + \item Dynamisches Modell - Systemverhalten + \begin{itemize*} + \item Zustands- und Sequenzdiagramme + \end{itemize*} + \item Vor- und Nachbedingungen von Systemoperationen + \item Prototyp / Spezifikation Benutzungsschnittstelle + \item Pflichtenheft + \end{itemize*} + \item Objektorientierte Analyse nach [Brügge / Dutoit] + \begin{itemize*} + \item Verdeutlicht iterativen Ablauf + \item Unterteilung des Analysemodells in: + \begin{itemize*} + \item Funktionales Modell (Anwendungsfälle) + \item Objektmodell (Klassen und Objektdiagramme) + \item Dynamisches Modell (Zustands- und Sequenzdiagramme) + \item Unterscheidung der Objekttypen + \end{itemize*} + \end{itemize*} + \end{itemize*} + + %![Analyse nach Brügge/Dutoit](Assets/Softwaretechnik1_Bruegge1.png) + %![Analyse nach Brügge/Dutoit](Assets/Softwaretechnik1_Bruegge2.png) + + \begin{itemize*} + \item Heuristik Sprache $\rightarrow$ OO-Modell + \item Objektarten im Systemmodell + \begin{itemize*} + \item Entitätsobjekte - vom System verwaltete Informationen + \item Grenzobjekte - Interaktion zwischen System und Akteuren + \item Steuerungsobjekte - Durchführung der Anwendungsfälle + \end{itemize*} + \item Identifizierung von Entitätsobjekten + \begin{itemize*} + \item Begriffe, die klargestellt werden müssen + \item Wiederkehrende Substantive in Anwendungsfällen + \begin{itemize*} + \item Heuristiken + \end{itemize*} + \item Reale Objekte, die das System kennen muss + \item Reale Prozesse, die das System verfolgen muss + \item Anwendungsfälle + \item Datenquellen und -senken + \item Artefakte, mit denen der Nutzer interagiert + \end{itemize*} + \item Identifizierung von Grenzobjekten + \begin{itemize*} + \item Elemente der Benutzungsschnittstelle + \item Formulare für Eingaben + \item Nachrichten, Rückmeldungen + \item Endgeräte + \item In der Begriffswelt des Anwenders bleiben! + \item Schnittstellen grafisch skizzieren bzw. Prototyp! + \end{itemize*} + \item Identifizierung von Steuerungsobjekten + \begin{itemize*} + \item Koordination von Grenz- und Entitätsobjekten + \item Abarbeitung von Anwendungsfällen + \begin{itemize*} + \item Reihenfolge von Schritten + \item Informationen übernehmen und weiterleiten + \item Oft ein Steuerungsobjekt pro Anwendungsfall + \end{itemize*} + \item Beispiel: Simulationsszenario + \item Verhaltensmodell sinnvoll! Im folgenden: dynamische Modelle + \end{itemize*} + \end{itemize*} + + \begin{itemize*} + \item Abläufe der Anwendungsfälle modellieren + \begin{itemize*} + \item Ziel - Objekte finden + \item Klassen identifizieren + \item Verhalten / Operationen finden + \end{itemize*} + \item Use Case durch Interaktion verfeinern + \begin{itemize*} + \item einfacher kurzer Ablauf: textuelle Beschreibung, Aktivitätsdiagramm + \item Ablauf mit Verzweigungen, Parallelitäten: Aktivitätsdiagramm (Kontrollflussmodellierung) + \item datengetriebener Ablauf: Aktivitätsdiagramm (Objektflussmodellierung) + \item Interaktion zwischen den Objekten wichtig: Kommunikationsdiagramm, Aktivitätsdiagramm (Aktivitätsbereiche), Sequenzdiagramm + \item zeitliche Abfolge steht im Mittelpunkt: Sequenzdiagramm + \item Zustandswechsel / zeitliche Abfolge von Zuständen: Zustandsdiagramm / Timing-Diagramm + \item komplexe Abläufe mit Verzweigungen und Parallelitäten: Interaktionsübersichtsdiagramm + \item komplexe Abläufe ohne Verzweigungen und Parallelitäten: weitere Verfeinerung durch Use-Case-Diagramm + \item komplexer strukturierter Ablauf: Kollaboration aus dem Kompositionsstrukturdiagramm + \end{itemize*} + \end{itemize*} + + Dynamische UML-Modelle + \begin{itemize*} + \item Abläufe + \begin{itemize*} + \item Aktivitätsdiagramm (activity diagram) + \item Kommunikationsdiagramm (communication diagram) + \item Sequenzdiagram (sequence diagram) + \item Zeitdiagramm (timing diagram) + \end{itemize*} + \item Zustandsabhängiges Verhalten von Objekten + \begin{itemize*} + \item Zustandsautomat (state chart diagram) + \end{itemize*} + \end{itemize*} + + \begin{itemize*} + \item Aktivitätsdiagramm + \begin{itemize*} + \item Aktion - einzelner Schritt + \item Aktivität + \begin{itemize*} + \item Beschreibt einen Ablauf / repräsentiert ein Verhalten + \begin{itemize*} + \item Beinhaltet eine Folge Aktionen, Kontroll- oder Objektknoten + \end{itemize*} + \item Schachtelung von Aktivitäten und Aktionen + \begin{itemize*} + \item Aktionen in Aktivitäten enthalten + \item Aktionen durch Aktivitäten verfeinerbar + \end{itemize*} + \item Aktivitäten beschreiben / verfeinern + \begin{itemize*} + \item Aktionen, Use Cases, Interaktionen, Operationen ... + \end{itemize*} + \item Ein- und Ausgabeparameter in Form von Objekten + \begin{itemize*} + \item Parameterknoten entsprechend Pins der aufrufenden Aktion + \item Alternativ: Parameterangabe mit Name und Typ + \end{itemize*} + \item Angabe von Vor- und Nachbedingungen möglich + \item Optional: Parameter unter Aktivitätsnamen + \end{itemize*} + \end{itemize*} + \end{itemize*} + + \begin{itemize*} + \item Verfeinerung der Aktionen durch Aktivitäten + \item Aktion durch Interaktionen verfeinern + \begin{itemize*} + \item Detaillierte Diagramme + \item Meist entwurfsnah + \end{itemize*} + \item Verfeinerung der Aktionen durch StateChart + \item Objekte zusammenstellen und klassifizieren + \begin{itemize*} + \item Toolunterstützung (Möglichkeiten stark toolabhängig) + \item Objekte Ergebnis der Verhaltensmodellierung + \item Ergebnis Verhaltensdiagramm: Operationen der Klassen + \item Klassen generalisieren / spezialisieren $\rightarrow$ Klassenhierarchie + \end{itemize*} + \item Übergang zum Entwurf + \begin{itemize*} + \item Klassenstruktur festlegen + \end{itemize*} + \item Spezifikation von Benutzungsschnittstellen + \begin{itemize*} + \item Skizzieren, Prototyp generieren, Spezialwerkzeuge + \item Klassen und Operationen in Funktionen + \item Gestaltung MMI, style guides, Standards + \end{itemize*} + \end{itemize*} + + \subsection{Dokumentation von Anforderungen} + \begin{itemize*} + \item Lastenheft + \begin{itemize*} + \item Gesamtheit der Forderungen eines Auftraggebers (AG) an die Lieferungen und Leistungen eines Auftragnehmers (AN), manchmal Vertragsbasis + \item Muss-Kriterien, Kann-Kriterien, Abgrenzungskriterien + \end{itemize*} + \item Pflichtenheft + \begin{itemize*} + \item Entwurf aus AN-Sicht, Umsetzung des Lastenhefts + \item Meist Vertragsbasis + \end{itemize*} + \item Inhalt Anforderungsspezifikation + \begin{itemize*} + \item Zielsetzung + \item Allgemeine Beschreibung + \begin{itemize*} + \item Umgebung, generelle Funktion, Restriktionen, Benutzer + \end{itemize*} + \item Spezifische funktionale Anforderungen + \begin{itemize*} + \item möglichst quantitativ (z.B. Tabellenform) + \item eindeutig identifizierbar (Nummern) + \end{itemize*} + \item Spezifische nicht-funktionale Anforderungen + \begin{itemize*} + \item z.B. Antwortzeit, Speicherbedarf, HW/SW-Plattform + \item Entwicklungs- und Produkt-Standards + \end{itemize*} + \item Qualitäts-Zielbestimmung + \item Zu erwartende Evolution des Systems, Versionen + \item Abkürzungsverzeichnis, Glossar, Index, Referenzen + \end{itemize*} + \end{itemize*} + + + Pflichtenheft (Beispiel) + \begin{enumerate} + \item Einleitung, Zielbestimmung + \item Übersicht + \begin{itemize*} + \item Einsatzbereich, Zielgruppen + \item Produkt-Umgebung + \item Produkt-Funktionen + \item Restriktionen + \item Annahmen und Abhängigkeiten + \item Vorhandenes System (ggf.) + \end{itemize*} + \item Vorgeschlagenes System + \begin{itemize*} + \item Übersicht + \item Funktionale Anforderungen + \item Benutzungsschnittstelle + \item Nichtfunktionale Anforderungen + \item Systembeschreibung + \begin{itemize*} + \item Szenarien + \item Anwendungsfälle + \end{itemize*} + \end{itemize*} + \item Glossar + \end{enumerate} + + + \section{Grobentwurf} + \subsection{Einführung} + Systementwurf - Aufgabe + \begin{itemize*} + \item Sicht des geplanten Systems von innen (Entwickler) + \item Wie sollen vereinbartes Verhalten und Funktionen (Analysemodell) intern realisiert werden? + \item Von Spezifikation von Anforderungen und Funktionen -> Vorbereitung der Implementierung + \item Formal: Transformation des Analysemodells in ein Systementwurfsmodell + \item System(grob)entwurf, Feinentwurf/Objektentwurf + \end{itemize*} + + Teile und herrsche + \begin{itemize*} + \item Grobentwurf + \begin{itemize*} + \item Entwurfsziele identifizieren + \item Grobe Systemstruktur festlegen (Architektur) + \item Zerlegung in Subsysteme, Spezifikation + \begin{itemize*} + \item Schichten, Pakete, Komponenten + \end{itemize*} + \item Bewerten der Zerlegung anhand der Entwurfsziele + \item Schnittstellen festlegen + \end{itemize*} + \item Feinentwurf + \begin{itemize*} + \item Subsysteme im Detail entwerfen + \begin{itemize*} + \item Strukturierung der Komponenten + \item Klassen, Objekte, Funktionen, Datenstrukturen + \item Verhalten, Algorithmen - Teillösungen + \end{itemize*} + \end{itemize*} + \end{itemize*} + + + \subsection{Systemzerlegung} + Vorgehen + \begin{itemize*} + \item Zerlegung eines Systems in Subsysteme + \item Betrachtung der Lösungsdomäne! + \item Subsysteme weiter zerlegen bis Komplexität ausreichend klein ist z.B. für Arbeitspakete + \end{itemize*} + + Was macht ein Subsystem aus? + \begin{itemize*} + \item Schnittstellen, Funktionen, „Verantwortung“ + \item Was bietet es an? + \item Was benutzt es? + \item Was tut es intern? + \end{itemize*} + + Operation + \begin{itemize*} + \item Name und Parameter + \item Funktion, Prozedur, Methode, Eintrittspunkt ... + \end{itemize*} + + Dienst: Satz von Operationen, die bereitgestellt werden + + Abhängigkeiten von Subsystemen + \begin{itemize*} + \item Subsysteme untereinander: Kopplung (coupling) + \item Maß für die Abhängigkeit von Subsystemen + \end{itemize*} + + Möglichst lose Kopplung + \begin{itemize*} + \item Änderungen in einem beteiligten Subsystem haben geringe Auswirkungen (Stabilität) + \item Erleichtert Wartbarkeit und Arbeitsteilung + \end{itemize*} + + Mittel zur Verringerung der Kopplung + \begin{itemize*} + \item Zusätzliche Unterteilung in Subsysteme + \item Aber: dann größere Komplexität! + \end{itemize*} + + Abhängigkeiten von Subsystemen + %| Kopplungsart | Bemerkung | + %| -\item | -\item | + %| Datenkopplung (gemeinsame Daten) | Möglichst vermeiden! Wenn nicht möglich, Verwaltung zentralisieren und Zugriff über Schnittstelle | + %| Schnittstellenkopplung (gegenseitiger Aufruf) | Akzeptabel | + %| Strukturkopplung (gemeinsame Strukturelemente) | Vermeiden! (z.B. keine Vererbung über Paketgrenzen hinweg) | + + \begin{itemize*} + \item Elemente eines Subsystems: Kohäsion (cohesion) + \item Maß für Zusammengehörigkeit der Elemente + \item Möglichst hohe Kohäsion + \begin{itemize*} + \item Enge Beziehung oder ähnliche Aufgaben der Elemente + \item Erleichtert Verständnis, Wartung und Anpassung + \end{itemize*} + \item Mittel zum Erreichen hoher Kohäsion + \begin{itemize*} + \item Datenkapselung, Objektorientierung + \item Benutzung geeigneter Patterns (Kapitel 5) + \end{itemize*} + \end{itemize*} + + Metriken für modulare Entwürfe + \begin{itemize*} + \item Fan-in / fan-out-Metrik [S.Henry, D. Kafura 1981]: + \begin{itemize*} + \item Fan-in: Anzahl der Stellen, wo Kontrollfluss auf das betrachtete Modul M übergeht (Aufrufe von Funktionen / Prozeduren in M) + Anzahl globaler Variablen, die in M zugänglich sind + \item Fan-out: Anzahl von Stellen, an denen M andere Module aufruft + Anzahl der globalen Variablen, die von M verändert werden + \end{itemize*} + \item Heuristik Kopplung / Kohäsion + \begin{itemize*} + \item Hoher Fan-out bedeutet hohe Kopplung, minimieren + \item Hoher Fan-in kann auf geringe Kohäsion von M hindeuten + \end{itemize*} + \end{itemize*} + + Komplexität beherrschen: "Wenn Du es nicht in fünf Minuten erklären kannst, hast Du es entweder selbst nicht verstanden oder es funktioniert nicht." [Rechtin, Maier: The Art of Systems Architecting 2000] + + Vorgehen: Heuristiken und Erfahrungen + \begin{itemize*} + \item „Erfahrung ist die härteste Lehrerin. Sie gibt Dir zuerst den Test und anschließend den Unterricht.“ [Ruth 1993] + \item „Ein Architekt der zu Beginn seiner Arbeit vollständige und konsistente Anforderungen benötigt, mag ein brillanter Entwickler sein - aber er ist kein Architekt“ [Rechtin 2000] + \item „Das Leben von Software-Architekten besteht aus einer langen und schnellen Abfolge suboptimaler Entwurfs-entscheidungen, die teilweise im Dunkeln getroffen werden.“ [Kruchten2001] + \end{itemize*} + + Wie organisiert man Subsysteme? + \begin{itemize*} + \item Innerhalb einer Verfeinerungsstufe: fachlich orientierte Zerlegung + \item Mehrfache Zerlegung: Hierarchie-Graph der Verfeinerung + \end{itemize*} + + Schicht + \begin{itemize*} + \item Gruppe von Subsystemen in der Zerlegungshierarchie + \item Verwandte Dienste + \item Ähnlicher Abstraktionsgrad + \item Abhängigkeit nur von darunter liegenden! + \end{itemize*} + + \begin{itemize*} + \item Geschlossene Schichtenarchitektur + \begin{itemize*} + \item Beispiel: OSI-Modell für Kommunikationssysteme + \end{itemize*} + \item Offene Schichtenarchitektur + \begin{itemize*} + \item Beispiel: Java Swing auf X11-Plattform + \end{itemize*} + \end{itemize*} + + Prinzipien des OO-Entwurfs + \begin{itemize*} + \item So-einfach-wie-möglich-Prinzip (KISS) + \item Fehler berücksichtigen (Strukturierung, Kapselung, Modularisierung, Wiederverwendung) + \item Entwerfen nach Verantwortlichkeiten + \item Hohe Kohäsion / Geringe Kopplung + \item Zyklische Abhängigkeiten vermeiden + \item Auf Schnittstellen konzentrieren + \begin{itemize*} + \item Abhängigkeiten nur von Schnittstellen + \item Abtrennung von Schnittstellen (eher viele kleine als eine große) + \item Umkehr der Abhängigkeiten (dependency inversion-Prinzip) + \end{itemize*} + \item Offen / Geschlossen Prinzip + \end{itemize*} + + Zyklische Abhängigkeiten vermeiden + \begin{itemize*} + \item Änderungen wirken sich auf beide Komponenten aus + \item Probleme beim Löschen und Initialisieren + \item Auflösen durch + \begin{itemize*} + \item Gemeinsame Klassen in separates Paket + \item Gemeinsame Schnittstellen definieren + \end{itemize*} + \end{itemize*} + + Symptome schlechten Designs + \begin{itemize*} + \item Starrheit + \begin{itemize*} + \item Einfache Änderungen schwierig realisierbar + \item Einfache Änderungen führen zur Modifikation einer Vielzahl von Komponenten + \end{itemize*} + \item Zerbrechlichkeit + \begin{itemize*} + \item Änderungen an einer Stelle führen zu Fehlern an völlig anderer Stelle + \end{itemize*} + \item Schlechte Wiederverwendbarkeit + \begin{itemize*} + \item Komponenten können Aufgrund spezieller Anhängigkeiten kaum wiederverwendet werden + \end{itemize*} + \end{itemize*} + + Wann ist ein Entwurf „gut“? + \begin{itemize*} + \item Korrekt + \begin{itemize*} + \item Erfüllung der Anforderungen + \item Wiedergabe aller Funktionen des Systemmodells + \item Sicherstellung der nichtfunktionalen Anforderungen + \end{itemize*} + \item Verständlich und präzise, gut dokumentiert + \item Anpassbar + \item Hohe Kohäsion innerhalb der Komponenten + \item Schwache Kopplung zwischen den Komponenten + \item Wiederverwendung + \item Kriterien gelten auf allen Ebenen des Entwurfs! (Architektur, Subsysteme, Komponenten) + \end{itemize*} + + \subsection{Architekturmodelle} + \begin{itemize*} + \item Modellierung mit UML + \begin{itemize*} + \item Bisher: logische Sicht + \item Technisch: Organisation in Paketen, Namensraum, Import + \end{itemize*} + \item Paketdiagramm + \begin{itemize*} + \item Gliederung (Strukturierung) des Systems in Teile + \item Zuordnung von Elementen zu einem Paket + \item Hierarchien und Abhängigkeiten zwischen den Paketen + \item Anwendung: Definition von Schichten + \end{itemize*} + \item Enthält-Beziehung + \begin{itemize*} + \item Definiert, in welchem Paket ein Element enthalten ist + \item Ermöglicht qualifizierten Zugriff auf enthaltene Elemente + \item Löschen des Pakets bewirkt Löschen beinhalteter Elemente + \item Definition von Sichtbarkeit / Zugriffsrechte + \begin{itemize*} + \item Auswirkung auf weitere Enthält-Beziehung + \item '+' - public (default) + \item '-' - private + \end{itemize*} + \end{itemize*} + \item Paket- / Element-Import + \begin{itemize*} + \item Unqualifizierter Zugriff auf Elemente eines anderen Namensraums (Paketes) + \end{itemize*} + \item Komponentendiagramm + \begin{itemize*} + \item Komponente - modulare, austauschbare Einheit + \item Strukturierung des Systems durch Komponenten + \item Modellierung der + \begin{itemize*} + \item Abhängigkeiten zwischen Komponenten + \item inneren Struktur von Komponenten + \end{itemize*} + \item Definition von Schnittstellen + \item Verwendung von Elementen aus Klassen- und Objektdiagramm + \item Stärkere dynamische Sicht -> kein Verhalten + \item Komponente <> + \begin{itemize*} + \item Kapselt Funktionalitäten (Physisch gruppierte Klassen) + \item „Spezialisierte“ Klasse (Vererbung, Exemplare möglich) + \item Stellt Funktionalitäten über Schnittstellen bereit + \item Definiert benötigte Schnittstellen + \item Enthält Klassen oder weitere Komponenten + \item Modulares Element: Substitution (Austauschbarkeit) steht im Vordergrund + \end{itemize*} + \item Black-Box-Darstellung + \begin{itemize*} + \item Zur Verfügung gestellte Funktionalität `<>` + \item Benötigte Funktionalität `<>`‚ + \end{itemize*} + \item White-Box-Darstellung + \begin{itemize*} + \item Interner Aufbau der Komponente `<>` + \item Artefakte `<>`‚ Realisierende physische Einheit (z.B.: .dll) + \end{itemize*} + \end{itemize*} + \end{itemize*} + + Schnittstellen / Interfaces + \begin{itemize*} + \item Definition Diagrammunabhängig + \begin{itemize*} + \item Meist Klassendiagramm + \end{itemize*} + \item Ähnlich Semantik einer Klasse + \begin{itemize*} + \item Nur public-Attribute und Operationen + \end{itemize*} + \item Definiert Verpflichtung zur Implementierung von + \begin{itemize*} + \item Operationen + \item Merkmale -> Attribute dürfen definiert werden + \item Verpflichtungen (z.B.: Vor- / Nachbedingungen) + \end{itemize*} + \item Meist abstrakte Klassen mit abstrakten Operationen + \item Abstrakt - muss überschrieben werden + \item Notation + \begin{itemize*} + \item Stereotyp: <> + \item Meist kursiv geschrieben, da abstrakte Klasse + \end{itemize*} + \end{itemize*} + + Schnittstellenrealisierung, Implementierungsbeziehung + \begin{itemize*} + \item Schnittstellen werden realisiert, nicht instanziiert + \item Schnittstellenkonform + \begin{itemize*} + \item Klasse realisiert alle Attribute und Operationen + \end{itemize*} + \item Schnittstelle kann von anderen Schnittstellen erben + \item Keine Schnittstellenrealisierung zwischen zwei Interface-Klassen -> Generalisierung verwenden + \item Darstellung + \begin{itemize*} + \item Gestrichelte Linie mit nicht gefülltem Dreieck an der Seite der Superklasse + \item Alternativ: Lollipop-Darstellung + \end{itemize*} + \end{itemize*} + + + \subsection{Softwarearchitekturmuster} + \begin{itemize*} + \item Wiederverwendung auf sehr hoher Abstraktionsstufe + \item Falls geplante Anwendung passt, anwenden! + \end{itemize*} + + Schichten-Architektur (layers) + \begin{itemize*} + \item Problem + \begin{itemize*} + \item Komplexität: Strukturierung des Systems, unterschiedliche Abstraktionsebenen + \item Änderungen sollen möglichst lokal bleiben + \item Teilsysteme sollen austauschbar, wiederverwendbar und getrennt entwickelbar sein + \item Schnittstellen sollen stabil sein + \end{itemize*} + \item Lösung + \begin{itemize*} + \item Zuordnung von Subsystemen zu horizontalen Schichten gleicher Abstraktionsebene + \item Komponenten einer Schicht bieten Dienste der darüber liegenden Schicht an + \end{itemize*} + \end{itemize*} + + Client-Server (Klient/Anbieter) + \begin{itemize*} + \item Client (front-end) + \begin{itemize*} + \item Benutzungsschnittstelle + \item Einbindung in Geschäftsprozesse + \item Entkoppelt von Netztechnologie und Datenhaltung + \end{itemize*} + \item Server (back-end) + \begin{itemize*} + \item Datenhaltung, evtl. Fachlogik + \end{itemize*} + \item Genauer: Two-tier client/server architecture + \item Asynchroner Kontrollfluss + \item Aufteilung Funktionen Client / Server + \begin{itemize*} + \item Mehr Funktionen im Server: + \begin{itemize*} + \item zentrale Verwaltung, Wartungsaufwand geringer, Portabilität, einfache Client-Hardware (Net PC) + \item „Thin Client“ - nur GUI + \end{itemize*} + \item Mehr Funktionen im Client: Flaschenhals Server wird entlastet, individuellere Client-Funktionen + \begin{itemize*} + \item „Fat Client“ - Teil der Anwendung im Client + \end{itemize*} + \item Entscheidet mit über Umsetzung (Java Script, ...) + \end{itemize*} + \end{itemize*} + + Three-Tier / Four-Tier Architecture: Client/Server mit weiterer Aufteilung ähnlich Repository + + Bewertung Client-Server + \begin{itemize*} + \item Vorteile + \begin{itemize*} + \item Leicht verständlich + \item Änderungen bleiben lokal + \item Geringere Kopplung zwischen den Schichten + \item Schichten austauschbar und wiederverwendbar + \item Getrennte Entwicklung der Schichten möglich + \item Vorhandene / stabilere Schnittstellen + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Geringere Performance + \item Zusätzlicher Verwaltungs- oder Datenoverhead + \item Manche Änderungen führen zu Änderungen in allen Schichten (z.B. neues Datenfeld) + \end{itemize*} + \end{itemize*} + + Pipes and Filters + \begin{itemize*} + \item Datenstrom- oder Kontrollflussorientiertes System + \item Lose verbundene Berechnungskomponenten + \item Kombination der Berechnungskomponenten nur vom Typ der Ein- und Ausgabedaten abhängig + \item Leicht erweiterbar System gewünscht + \item Parallele Verarbeitung vorteilhaft + \item Verwendung von globalen Steuerungskontrollstrukturen (Parallelisierung, Verzweigung, Schleifen) gewünscht + \item Vorteile + \begin{itemize*} + \item Stark entkoppelte Komponenten + \item Hohe Flexibilität gegenüber Änderungen \& Erweiterungen + \item Hoher Wiederverwendungsgrad der Komponenten + \item Unabhängige Entwicklung der Komponenten + \item Leichte Parallelisierung der Berechnungen möglich + \item Überprüfung der Datenkompatibilität dynamisch / statisch + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Schwierige Fehlerbehandlung, kein expliziter Kontrollfluss + \item Fehler durch inkompatible Datentypfehler erst zur Laufzeit + \item Häufig zusätzliche Datenkonvertierungen notwendig + \end{itemize*} + \end{itemize*} + + + Plug-In Architektur (Microkernel) + \begin{itemize*} + \item Zielstellung + \begin{itemize*} + \item Stabile, verbreitete Standard-Anwendung (Kern) + \item Funktionalität soll durch Komponenten leicht erweiterbar sein + \item Dritte sollen Komponenten leicht erstellen können + \end{itemize*} + \item Lösung + \begin{itemize*} + \item Möglichst schlanker zentraler Kern + \item Plugin-Manager verwaltet Komponenten: Laden, Entladen, Zugriffskontrolle, Konfiguration + \end{itemize*} + \item Plugin + \begin{itemize*} + \item Komponente mit Standard-Schnittstelle + \item Erweitert Funktionalität (extension point) + \end{itemize*} + \item Vorteile + \begin{itemize*} + \item Robustes Verhalten + \item Trennung der Zuständigkeiten + \item Erweiterbar, Austauschbar, Wiederverwendbar + \item Geringe Kopplung zu den Komponenten + \item Anpassung an eigene Bedürfnisse möglich + \item Leichte Aufteilung der Entwicklung der Arbeitspakete + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Höherer initialer Aufwand + \item Verwaltungsoverhead zur Laufzeit + \item Versionsverwaltung der Komponenten nötig + \item Abhängigkeiten unter den Komponenten schwierig realisierbar + \item Geschickte Definition der Extension Points nötig + \end{itemize*} + \end{itemize*} + + Repository (Depot, blackboard) + \begin{itemize*} + \item Zentrale Datenhaltung + \begin{itemize*} + \item Datenbankmanagementsystem, Dateisystem + \end{itemize*} + \item Anwendungen tauschen Daten nur über Repository aus + \item Kontrollfluss z.B. über Signale oder Semaphore + \item Gut für datenintensive Verarbeitungsaufgaben geeignet + \end{itemize*} + + Peer-to-peer + \begin{itemize*} + \item Gleichberechtigte Partner, “Föderation” + \item Verteilte kommunizierende Subsysteme + \item Orts- und Umgebungsunabhängigkeit + \end{itemize*} + + Model-View-Controller (MVC) + \begin{itemize*} + \item Modell / Sicht / Steuerung + \item Trennung verschiedener Aufgabengebiete: + \begin{itemize*} + \item Model: verwaltet Domänenwissen, Daten und Zustand; häufig Datenbank + \item View: Darstellung, Anzeige, GUI + \item Controller: Steuerung der Interaktion, Nutzerbefehle + \end{itemize*} + \item Erlauben Austausch von Anzeige- und Speichersystem + \item Kontrollfluss + \begin{itemize*} + \item Controller steuert + \item View wird über Datenänderungen benachrichtigt (callback) + \end{itemize*} + \item Geeignet für interaktive Systeme + \item Problem + \begin{itemize*} + \item Lose Kopplung zwischen verschiedenen Komponenten + \item Daten werden in verschiedenen Sichten dargestellt + \item Realisierung von GUI‘s + \end{itemize*} + \item Lösung durch drei Komponenten + \begin{itemize*} + \item Daten (Model) enthält die Kernfunktionalität / Durchführung der Geschäftsprozesse, kapselt und Speichert die Daten + \item Sichten bzw. Dialoge (View) stellt die Daten für den Anwender in unterschiedlicher Art dar + \item Logik bzw. Steuerung (Controller) Realisiert die Interaktion mit dem Benutzer, übernimmt die Eingaben vom View und ändert die Daten im Modell, legt die Darstellungsart der Sichten fest + \end{itemize*} + \item Vorteile + \begin{itemize*} + \item Unabhängige Entwicklung der Komponenten + \item Änderung der Oberfläche ohne Änderung des Modells + \item Unterschiedliche Oberflächen für das selbe Modell + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Performance + \item Erhöhter initialer Entwicklungsaufwand + \end{itemize*} + \end{itemize*} + + + \subsection{Frameworks} + Was ist ein Framework? + \begin{itemize*} + \item A framework is a set of prefabricated software building blocks that programmers can use, extend, or customize for specific computing solutions [Taligent] + \item Ein framework (Rahmenwerk, Anwendungsgerüst) ist eine Menge von zusammengehörigen Klassen, die einen abstrakten Entwurf für eine Problemfamilie darstellen [nach Pomberger/Blaschek] + \end{itemize*} + + Ziele + \begin{itemize*} + \item Wiederverwendung von Code, Architektur, Entwurfsprinzipien und Verhaltensschema + \item Ähnliche Benutzungsschnittstelle + \end{itemize*} + + Klassifikation I + \begin{itemize*} + \item Anwendungs-Framework (application framework) + \begin{itemize*} + \item Gibt Systemarchitektur für typische Anwendungsstruktur vor + \item GUI-Framework: Motif, Qt, Swing, ... + \end{itemize*} + \item Bereichsspezifisches Framework (domain framework) + \begin{itemize*} + \item Expertenwissen für Anwendungsbereich + \item für typische Anwendungen u.a. in den Bereichen Luftfahrt, Produktion, Finanzwesen, Automotive, ... + \item Beispiel: AUTOSAR + \end{itemize*} + \item Infrastrukturgerüst (support framework) + \begin{itemize*} + \item Gerätetreiber, Anpassung an Hardware + \item Middleware: DCOM, Java RMI, CORBA, WebSphere, ... + \end{itemize*} + \end{itemize*} + + Klassifikation II + \begin{itemize*} + \item Offene Programmgerüste (white box) + \begin{itemize*} + \item Erweiterbarkeit durch Vererbung und dynamische Bindung + \item Funktionen konkretisieren durch Ableitung von Basisklassen des Programmgerüsts und Überschreiben vordefinierter Methoden + \end{itemize*} + \item Geschlossene Programmgerüste (black box) + \begin{itemize*} + \item Erweiterbarkeit durch Definition von Schnittstellen für Module, die für eine konkrete Anwendung in das Gerüst eingesetzt werden können + \item Wiederverwendung durch Komponenten, die sich an Schnittstellen halten; Aufruf über Delegation + \end{itemize*} + \end{itemize*} + + + Webframeworks - Angular JS + \begin{itemize*} + \item Clientseitiges Webframework von Google + \item Frei verwendbar (Open Source) + \item Erstellung von Single-Page-Webanwendungen + \item Model View Prinzip + \end{itemize*} + + \begin{itemize*} + \item Vorteile + \begin{itemize*} + \item Weitergabe von Expertenwissen + \item Durchdachtes Design: langfristige Aufwandsersparnis + \item Wartungsaufwand reduziert, systematische Tests möglich + \item Prinzipiell sehr hohe Produktivität möglich + \item Erleichtert Integration und Konsistenz verwandter Anforderungen + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Erstellung und Einarbeitung aufwändig + \item Zusätzlicher Dokumentations- und Wartungsaufwand + \item Fehlersuche erschwert durch Overhead des Frameworks + \item Kombination verschiedener Frameworks sehr schwierig + \end{itemize*} + \end{itemize*} + + \subsection{Systemarchitektur und Verteilung} + Systemarchitektur + \begin{itemize*} + \item Aufbau und Elemente der Ablaufumgebung, Hardware + \item Häufig enger Zusammenhang mit Softwarearchitektur + \begin{itemize*} + \item Architekturmuster + \item Ablaufmuster + \end{itemize*} + \item Besonders bei eingebetteten Systemen + \item Systemarchitektur hat Einfluss auf Softwarearchitektur + \begin{itemize*} + \item Grenzobjekte, Schnittstellen, ... + \end{itemize*} + \item Gute Systemarchitektur? + \begin{itemize*} + \item Nichtfunktionale Anforderungen + \item Modellierung und Simulation, Lastmessungen + \end{itemize*} + \end{itemize*} + + Typische Strukturen + \begin{itemize*} + \item Zentralrechner (mainframe) mit Terminals + \item Server und einfache Stationen + \item PCs und Server + \item Kommunikationsverbindungen, Sensoren, Speicher, ... + \end{itemize*} + + + \begin{itemize*} + \item Blockdiagramm + \begin{itemize*} + \item Klassisches Beschreibungsmittel für Systemaufbau + \item Nicht Teil von UML + \end{itemize*} + \item Konfigurationsdiagramm + \begin{itemize*} + \item meistverbreitetes Hilfsmittel zur Beschreibung der physikalischen Verteilung von System-Komponenten + \item Nicht Teil von UML + \end{itemize*} + \item Verteilungsdiagramm (UML deployment diagram) + \begin{itemize*} + \item Darstellung der Hardwaretopologie + \item Zuordnung von Artefakten zu Hardwareeinheiten (Knoten) + \begin{itemize*} + \item Verteilung von Systembestandteilen auf Hardware + \end{itemize*} + \item Kommunikationsverbindung und Abhängigkeiten zwischen Knoten + \item Relativ spät im Projekt Installation / Wartung des Systems + \end{itemize*} + \end{itemize*} + + \subsection{Globaler Kontrollfluss} + Globaler Kontrollfluss + \begin{itemize*} + \item Ablaufsicht der Architektur + \begin{itemize*} + \item Definition nebenläufiger Systemeinheiten (z.B. Prozesse) + \item Steuerung der Abfolge von Einzelfunktionen + \item Synchronisation und Koordination + \item Reaktion auf externe Ereignisse + \item Darstellung z.B. durch Sequenzdiagramme + \end{itemize*} + \item Nebenläufigkeit auf Architekturebene + \begin{itemize*} + \item Threads , Prozesse, verteiltes System + \item Asynchroner Nachrichtenaustausch + \end{itemize*} + \item Einfluss auf Architektur / abhängig von Architektur! + \item Ablaufmuster + \begin{itemize*} + \item Zentral + \begin{itemize*} + \item Call/Return (prozedural, synchron) + \item Master/Slave (nebenläufig mit zentraler Steuerung) + \end{itemize*} + \item Dezentral + \begin{itemize*} + \item Ereignisgesteuert (event-driven) + \item interrupts + \item publish-subscribe (ähnlich observer) + \item (selective) broadcast + \item Datenflussgesteuert (data flow architecture) + \end{itemize*} + \end{itemize*} + \end{itemize*} + + \subsection{Sonstiges} + Ablauf des OO-Systementwurfs [B. Oesterreich] + \begin{itemize*} + \item Schichtenmodell definieren + \item Verteilungsmodell definieren + \item Fachliches Subsystemmodell definieren + \item Ablaufverantwortlichkeiten definieren + \item Komponentenspezifisches Klassenmodell entwickeln + \item Komponentenschnittstelle entwerfen + \item Zustandsmodelle weiterentwickeln + \item Objektfluss modellieren + \item Interaktionsmodelle entwickeln, Attribute definieren + \item Dialoge spezifizieren + \item Design-Diskurs + \item Testgetriebene Entwicklung + \end{itemize*} + + Weitere Aufgaben beim Grobentwurf + \begin{itemize*} + \item Entwurf einer persistenten Datenverwaltung + \begin{itemize*} + \item Dateisystem, Datenbank + \end{itemize*} + \item Sicherheit + \begin{itemize*} + \item Zugriffskontrolle + \item Fehlertoleranz (Daten und Hardware) + \item Protokollfunktionen + \end{itemize*} + \item Kontrollfluss + \begin{itemize*} + \item Ausnahmen + \item Starten, Initialisieren und Beenden der Anwendung + \item „Randanwendungsfälle“ + \end{itemize*} + \end{itemize*} + + Notwendigkeit der Architekturdokumentation + \begin{itemize*} + \item Quellcode aufgrund niedrigen Abstraktionsniveaus ungünstig für Dokumentation + \item Überblick und Arbeitsteilung + \item Lebensdauer von Systemen länger als geplant + \item Fehler und Probleme leichter finden und beseitigen + \item Neue Anforderungen mit angemessenem Aufwand erfüllen + \item Vereinfachung der Wartung, Pflege, Erweiterung, Wiederverwendung + \end{itemize*} + + \subsection{Dokumentation} + \begin{itemize*} + \item Grundprinzipien + \begin{itemize*} + \item Verständlich aus Sicht des Lesers formulieren (Glossar) + \item Das Warum beschreiben (Entwurfsentscheidungen) + \item Annahmen, Voraussetzungen, Randbedingungen dokumentieren + \item Wiederholungen vermeiden + \item Notation erklären oder Standards verwenden (UML) + \begin{itemize*} + \item Legende hinzufügen + \end{itemize*} + \item Auf Zweckdienlichkeit prüfen, Reviews durchführen (Inhalt, Qualität) + \item Verschiedene Sichten für verschiedene Zielgruppen + \end{itemize*} + \end{itemize*} + + \section{Feinentwurf} + + %| Analyse-Modell | Entwurfs-Modell | + %| -\item | -\item | + %| Fachliche Domäne | Lösungsdomäne | + %| Teilweise unvollständig in Attributen und Operationen | Vollständige Angabe aller Attribute und Operationen | + %| Datentypen und Parameter können noch fehlen | Vollständige Angabe von Datentypen und Parametern | + %| Noch kaum Bezug zur Realisierungssprache | Auf Umsetzung in gewählter Programmiersprache bezogen | + %| Keine Überlegungen zur Realisierung von Assoziationen | Navigationsangaben, Qualifikation, Ordnung, Verwaltungsklassen | + %| | Entscheidung über Datenstrukturen, Anbindung GUI | + + Schließen der Lücke zwischen Grobentwurf und Implementierung + \begin{itemize*} + \item Identifizieren und Entwerfen von Klassen der Lösungsdomäne + \item Identifikation und Verwendung von Entwurfsmustern + \item Detaillierte Beschreibung der Klassen + \item Beschreibung von Schnittstellen + \item Iterativer Prozess! + \begin{itemize*} + \item Verbesserung des Entwurfs - Refactoring + \item Optimieren des Entwurfsmodells zur Erfüllung nichtfunktionaler Anforderungen + \end{itemize*} + \end{itemize*} + + Objektorientierter Feinentwurf + \begin{itemize*} + \item Ausgangspunkt + \begin{itemize*} + \item Grobdefinition der Architektur, Zerlegung in Subsysteme (evtl. unter Verwendung von Standardarchitekturen) + \item Verteilungskonzept + \item Ablaufmodell + \end{itemize*} + \item Ergebnis + \begin{itemize*} + \item OO-Modell für jedes Subsystem der Architektur + \item OO-Modell für unterstützende Subsysteme unter Berücksichtigung gewählter Technologien + \item Spezifikationen der Klassen + \item Spezifikationen von externen Schnittstellen + \end{itemize*} + \end{itemize*} + + \subsection{Klassen- und Objektentwurf} + \begin{itemize*} + \item Klassen der Lösungsdomäne + \begin{itemize*} + \item Klassen, die nicht durch objektorientierte Analyse der Anwendungsdomäne entstehen + \end{itemize*} + \item Entstehungsgründe + \begin{itemize*} + \item Architektur von Software und System + \item nichtfunktionale Anforderungen + \item Beispiele: Kommunikation, Fehlertoleranz, Adapter, Datenhaltung, Effizienz, Benutzerschnittstellenobjekte, Middleware, ... + \item Sichtbare (Grenz- und Steuerungsobjekte) werden schon in der Analyse identifiziert + \end{itemize*} + \end{itemize*} + + Klassen identifizieren (responsibility-driven design (Wirfs-Brock, McKean)) + > Verantwortlichkeits-Prinzip: Sichtweise: Objekte und Klassen sind nicht nur Behälter für Verhalten und Daten, sondern erfüllen in Zusammenarbeit mit anderen Objekten bestimmte Aufgaben eigenverantwortlich + + Responsibility-Driven Design - Begriffe + \begin{itemize*} + \item Sichtweise auf Softwaresystem + \item Application = set of interacting objects + \item Object = implementation of role(s) + \item Role = set of related responsibilities + \item Responsibility = obligation to perform a task or know information + \item Collaboration = interaction of objects or roles + \item Contract = agreement outlining collaboration terms + \end{itemize*} + + Arten von Rollen + + \begin{itemize*} + \item Information holder | knows and provides information | + \item Structurer | maintains relationship between objects and information about relationships | + \item Service provider | performs work, offers computing services | + \item Coordinator | reacts to events by delegating tasks to others | + \item Controller | makes decisions and directs other’s actions | + \item Interfacer | transforms information and requests between system parts | + \end{itemize*} + + Hilfsmittel: CRC-Karten + \begin{itemize*} + \item Candidate (or class), Responsibility, Collaboration + \item Informelles Mittel zum + \begin{itemize*} + \item Finden, + \item Beschreiben und + \item iterativen Verändern von Klassen + \end{itemize*} + \end{itemize*} + + Ein Objekt + \begin{itemize*} + \item implementiert eine Schnittstelle und beeinflusst andere Objekte + \item wird in drei Teilen entworfen + \begin{itemize*} + \item Öffentliche Schnittstelle + \item Art und Weise der Benutzung + \item Innere Details der Funktionsweise + \end{itemize*} + \item Kohärenz: zusammengehörende Verantwortlichkeiten in einer Klasse konzentrieren! + \end{itemize*} + + + \subsection{Entwurfsprinzipien} + \begin{itemize*} + \item Kapselung + \begin{itemize*} + \item Probleme: Zugriff auf private oder ebenen-fremde Attribute + \item Verwenden von get- und set-Operationen + \item Zusicherungen einhalten + \item Zugriffe zentralisieren + \item Verbalisierung + \item Zugriffsbeschränkung + \end{itemize*} + \item Zerlegung + \begin{itemize*} + \item Teile und Herrsche + \item Zerlegen in Komponenten + \item Verantwortlichkeitsprinzip: Komponente ist klar für eine Aufgabe verantwortlich + \item Eigenschaften und Schnittstellen im Klassendiagramm + \item Beziehungen zwischen Klassen: Assoziationen + \item Aggregation + \begin{itemize*} + \item „besteht aus“, „ist Teil von“ oder „Ganzes-/Teile-Beziehung“ + \item Schwache Bindung der Teile mit dem Ganzen + \item Notation: ungefüllte Raute am Ganzen + \end{itemize*} + \item Komposition + \begin{itemize*} + \item Wie Aggregation, jedoch stärkere Bindung + \item Teil nur einem Ganzen zugeordnet + \item Nur Multiplizität von 1 oder 0..1 möglich! + \item Gefüllte Raute am Ganzen + \end{itemize*} + \item Polymorphie + \begin{itemize*} + \item Reaktion auf eine Nachricht abhängig vom Typ des Objektes + \item Variablen können Objekte verschiedener Klassen aufnehmen (Voraussetzung: Typ der Variablen ist eine gemeinsame Basisklasse der (davon) abgeleiteten Klasse(n) der Objekte) + \item Überladen von Operationen + \item gleicher Operationsname, unterschiedliche Signatur + \item abstrakte Operationen: Virtuelle Operationen ohne Implementierung + \item abstrakte Klasse: Klasse mit abstrakten Operationen + \item Folgen: + \item von abstrakten Klassen können keine Objekte angelegt werden (Implementierung fehlt) + \item Abgeleitete Klassen müssen Operation implementieren, damit Objekte angelegt werden können + \end{itemize*} + \end{itemize*} + \end{itemize*} + + Vererbung im Entwurf + \begin{itemize*} + \item In der Analyse: Klassifikation von Objekten, Taxonomie, Spezialisierung/Verallgemeinerung, Organisation von Klassen in Hierarchien + \item Verringerung von Redundanz und damit Inkonsistenzen + \begin{itemize*} + \item Funktionalität nur einmal implementieren! + \item Spezifikations-Wiederverwendung + \item Implementierungs-Wiederverwendung + \end{itemize*} + \item Verbesserung der Erweiterbarkeit + \begin{itemize*} + \item Abstrakte Schnittstellen einsetzen! + \end{itemize*} + \end{itemize*} + + Vererbung oder Assoziation + \begin{itemize*} + \item Schlüsselwort Vererbung: ist ein + \item Schlüsselwort Assoziation: besteht aus, ist Teil, hat,... + \item Vererbung: Unterscheidungsmerkmal definierbar (Diskriminator) + \item Vermeide Vererbung, wenn es Alternativen gibt + \item Mehrfachvererbung + \begin{itemize*} + \item Problem: Unabhängige Aspekte der Vererbungshierarchie + \item Vermeidung: abstrakte Klassen oder Komposition + \end{itemize*} + \end{itemize*} + + Abstrakte Klassen + \begin{itemize*} + \item Nur Unterklassen, keine Instanzen + \item Attribute in Unterklassen füllen + \item Notation: Kursiv oder Stereotyp <> + \end{itemize*} + + Offen / Geschlossen-Prinzip [Meyer 1988] + \begin{itemize*} + \item Erweiterbarkeit eines Entwurfs + \item Offen für Erweiterungen, + \begin{itemize*} + \item z.B. durch Vererbung / Polymorphie + \item Virtuelle Operationen verwenden + \item Verändert vorhandenes Verhalten nicht + \item Erweiterung um zusätzliche Funktionen oder Daten + \end{itemize*} + \item Geschlossen für Änderungen + \begin{itemize*} + \item private Attribute + \item Möglichst protected Operationen + \end{itemize*} + \item Beschränkung der Erweiterbarkeit + \begin{itemize*} + \item Keine Einschränkungen der Funktionalität der Basisklasse! + \end{itemize*} + \end{itemize*} + + Liskovsches Ersetzungsprinzip + \begin{itemize*} + \item Wenn S eine Unterklasse von T ist, dann können Objekte des Typs T in einem Programm durch Objekte des Typs S ersetzt werden, ohne die Funktion des Programms zu verändern. [Barbara Liskov 1987] + \item Engere Definition als „ist-ein“-Beziehung + \item Kein unerwartetes Verhalten eines Objektes eines Subtyps + \item Methoden, die Objekte der Basisklasse erwarten, müssen auch mit Objekten der abgeleiteten Klasse funktionieren + \item Zusicherungen der Basisklasse müssen von der abgeleiteten Klasse erfüllt werden! + \end{itemize*} + + Gesetz von Demeter (LoD) + \begin{itemize*} + \item Gesetz von „schüchternen“ Objekten + \item Objekte sollen nur mit Objekten in ihrer unmittelbaren Umgebung kommunizieren + \item Aus einer Methode M dürfen (sollten) nur Nachrichten an Objekte gesendet werden, die ... + \begin{itemize*} + \item unmittelbarer Bestandteil des Objekts von M sind (super) + \item M als Argument übergeben wurden + \item direkt in M erzeugt wurden + \item (oder sich in globalen Variablen befinden) + \end{itemize*} + \item Als Metrik überprüfbar + \end{itemize*} + + Ein Objekt sollte + \begin{itemize*} + \item Nur Methoden aufrufen, die zur eigenen Klasse gehören + \item Nur Methoden von Objekten aufrufen, die: + \begin{itemize*} + \item Von Attributen referenziert werden + \item Als Parameter übergeben wurden + \item Selbst erzeugt wurden + \end{itemize*} + \end{itemize*} + + + \subsection{Entwurfsmodelle} + Klassendiagramm + \begin{itemize*} + \item Eigenschaften + \begin{itemize*} + \item Modellierung der statischen Struktur (Aufbau) + \item Modellierung der Struktur von Daten + \item Klasse im Mittelpunkt (Aufbau, Beziehungen zueinander) + \item Wichtigstes und bekanntestes Diagramm der UML! + \end{itemize*} + \item Elemente des Klassendiagramms + \begin{itemize*} + \item Klasse (Attribute, Operationen) + \item Vererbung / Realisierung + \item Assoziationen + \item Beziehungen / Abhängigkeiten + \end{itemize*} + \item Attribute + \begin{itemize*} + \item Klassenattribut: "X" static - statisch, nur einmal pro Klasse vorhanden + \item Sichtbarkeit + \item "+" public - im Namensraum sichtbar + \item "\#" protected - nur in abgeleiteten Klassen sichtbar + \item "~" package - im Paket sichtbar + \item "-" private - nur in der Klasse selbst sichtbar + \item Ableitung "/" derived - abgeleitetes Attribut + \end{itemize*} + \item Weitere Eigenschaften + \begin{itemize*} + \item readOnly - nach Initialisierung nicht änderbar + \item composite - Aggregation: Composition + \item redefines X - überschreibe Attr. der Oberklasse + \item subsets X - Teilmenge + \item union - Attribut ist Vereinigung der subsets + \item unique - Elemente eindeutig (Schlüsselattribut) + \item ordered - Elemente sind geordnet (unordered) + \item sequence - Speicherung der Elemente als Liste + \item bag - Elemente sind Multimenge + \end{itemize*} + \item Parameterlisten + \begin{itemize*} + \item in: Eingangsparameter + \item out: Ausgangsparameter + \item inout: Eingangs- und Ausgangsparameter + \item return: Rückgabewert + \end{itemize*} + \item Beziehungen + \begin{itemize*} + \item navigierbar/unspezifiziert/nicht-navigierbar + \item ungerichtete/gerichtete Relation/assoziation + \end{itemize*} + \end{itemize*} + + Aktive Klassen + \begin{itemize*} + \item Reagieren nicht nur, sondern werden von sich aus aktiv + \item Z.B. Steuerobjekte + \item Als Thread oder Prozess realisiert + \end{itemize*} + + \subsection{Schnittstellen} + \begin{itemize*} + \item Vereinbarung über Art des Aufrufs + \begin{itemize*} + \item Homogenität gleicher Funktionen + \item Enthält: + \item Spezifikation von Operationen + \item keine Implementierung ( Java, nicht UML!) + \item keine Attribute + \item In Java außerdem anstelle von Mehrfachvererbung + \end{itemize*} + \item Schnittstellen in UML + \begin{itemize*} + \item Funktion ähnlich abstrakter Klasse + \item Meist für technische Aspekte + \item Notation: Stereotyp <> oder grafisch (lollipop notation) + \end{itemize*} + \item Verträge („design by contract“) + \begin{itemize*} + \item Schnittstelle sagt bisher nichts über Effekt der Klasse aus + \item Vollständige Beschreibung wäre Programm? + \item Vereinfachte Beschreibung für Abfolgen: + \item Vorbedingung: Prädikat, das vor Aufruf gelten muss <> + \item Nachbedingung: Prädikat, das nach Aufruf gelten muss <> + \item Invariante: Prädikat, das immer gilt <> + \item Jeweils Einschränkungen! + \end{itemize*} + \end{itemize*} + + Protokollrollen - Dynamisches Verhalten von Schnittstellen + \begin{itemize*} + \item Ohne Sicht auf innere Implementierung (anders als beim Objektlebenszyklus) + \item Protokoll = Kollaboration von Protokollrollen (protocol, protocol role) + \item Modell: Zustandsautomat + \begin{itemize*} + \item Genauer: Spezialisierung + \item Beschreibung der Synchronisation von Objekten + \end{itemize*} + \end{itemize*} + + \subsection{Entwurfsmuster} + \begin{itemize*} + \item Warum Wiederverwendung? + \begin{itemize*} + \item Geringerer Aufwand + \item Das Rad nicht noch einmal neu erfinden + \item Verwenden üblicher, aus Erfahrung gewachsener Strukturen + \end{itemize*} + \item ... und warum nicht? + \begin{itemize*} + \item Aufwand für Anpassung kann hoch sein! + \item Einarbeiten in teilweise komplexe Schnittstellen + \item Abhängigkeit von externen Komponenten, Zwang zu späterer Portierung + \end{itemize*} + \end{itemize*} + + > Was ist ein Entwurfsmuster? Eine schematische Lösung für eine Klasse verwandter Probleme (Höhere Ebene: Architekturmuster) + \begin{itemize*} + \item Wie helfen Muster im Entwurf? + \begin{itemize*} + \item Identifizieren von Klassen (Anwendungs- und Lösungsdomäne) + \item Regeln sind abstrakt oder an realen Objekten orientiert + \item Muster: Arten von Rollen bzw. Lösungshinweise für typische Strukturierungsaufgaben + \item Änderbarkeit und Lesbarkeit des Entwurfs verbessern + \end{itemize*} + \item Arten von Entwurfsmustern + \begin{itemize*} + \item Erzeugungsmuster + \item Strukturmuster + \item Verhaltensmuster + \end{itemize*} + \item Erzeugungsmuster + \begin{itemize*} + \item Factory Method, Fabrikmethode: + \item Implementierungsvarianten; Erzeugung von Objekten wird an Unterklassen delegiert + \item Abstract Factory, Abstrakte Fabrik: + \item Schnittstelle zur Erzeugung von Familien verwandter Objekte + \item Prototype, Prototyp: + \item Objekterzeugung durch Vorlage und Kopie + \item Builder, Erbauer: + \item Trennung von Erzeugung und Repräsentation komplexer Objekte, für Erzeugung unterschiedlicher Repräsentationen + \item Singleton: + \item Sicherstellung, dass nur ein Objekt einer Klasse erzeugt wird, die einen globalen Zugriff bietet + \end{itemize*} + \end{itemize*} + + Strukturmuster + \begin{itemize*} + \item Adapter + \begin{itemize*} + \item Anpassung der (inkompatiblen) Schnittstelle einer Klasse oder eines Objekts an eine erwartete Schnittstelle + \end{itemize*} + \item Bridge, Brücke + \begin{itemize*} + \item Abstraktion (Schnittstelle) von Implementierung entkoppeln, um beide unabhängig zu ändern; Impl.-Klasse nur als Verweis + \end{itemize*} + \item Decorator, Dekorierer + \begin{itemize*} + \item Objekt dynamisch um Zuständigkeiten erweitern (Alternative zur Bildung von Unterklassen) + \end{itemize*} + \item Facade, Fassade + \begin{itemize*} + \item Einheitliche Schnittstelle zu einer Schnittstellenmenge, vereinfacht Zugriff + \end{itemize*} + \item Flyweight, Fliegengewicht + \begin{itemize*} + \item Gemeinsame Nutzung kleiner Objekte zur effizienten Verwendung großer Mengen davon (Speicheraufwand) + \end{itemize*} + \item Composite, Verbund, Kompositum + \begin{itemize*} + \item Zusammenfügen verschiedener Objekte zur Repräsentation von Teil-Ganzes-Beziehungen; Objekte und Kompositionen können einheitlich behandelt werden, Baumstruktur + \end{itemize*} + \item Proxy, Stellvertreter + \begin{itemize*} + \item Kontrollierter Zugriff auf Objekt durch vorgeschaltetes Stellvertreterobjekt + \item Gründe: Schutz, entfernter Zugriff (remote proxy), smart pointer, Erzeugung on demand + \end{itemize*} + \end{itemize*} + + Adapter + \begin{itemize*} + \item Vorteile + \begin{itemize*} + \item Kommunikation unabhängiger Softwarekomponenten + \item Einfache Erweiterung um zusätzliche Funktionalität + \item Austausch der Komponente durch Änderung des Adapters leicht möglich + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Zusätzlicher Adaptierungsschritt benötigt Zeit + \item Schlechte Wiederverwendbarkeit der Adapter + \end{itemize*} + \item Bekannte Verwendung, Spezialfälle + \begin{itemize*} + \item Fassade: Adapter eines Teilsystems + \item Proxy: erweitert die Funktionalität bei gleicher Schnittstelle + \item Brücke: keine Anpassung, sondern vorherige Strukturierung + \end{itemize*} + \end{itemize*} + + Verhaltensmuster + \begin{itemize*} + \item Command, Befehl + \begin{itemize*} + \item Befehl / Operation als Objekt kapseln (Parameterübergabe, Operations-Warteschlangen, logging, Rückgängig machen) + \end{itemize*} + \item Observer, Beobachter + \begin{itemize*} + \item 1-zu-n-Beziehung zwischen Objekten, so dass die Änderung des zentralen Objekts zu einer Benachrichtigung und Aktualisierung der n (abhängigen) Zustände führt + \end{itemize*} + \item Visitor, Besucher + \begin{itemize*} + \item Beschreibung und Kapselung einer zu definierenden Operation, die auf einer Objektmenge ausgeführt wird + \end{itemize*} + \item Interpreter + \begin{itemize*} + \item Repräsentation der Grammatik einer Sprache sowie Interpreter zur Analyse von Sätzen der Sprache + \end{itemize*} + \item Iterator + \begin{itemize*} + \item Sequentieller Zugriff auf die Elemente einer Sammlung ohne Kenntnis der Implementierung der Sammlung + \end{itemize*} + \item Memento + \begin{itemize*} + \item Internen Zustand eines Objekts erfassen und speichern, um Objektzustand wiederherstellen zu können + \end{itemize*} + \item Template Method, Schablonenmethode + \begin{itemize*} + \item Beschreibung des Skeletts eines Algorithmus mit Delegation der Einzelschritte an Unterklassen; Teilschritte können von Unterklassen geändert werden + \end{itemize*} + \item Strategy, Strategie + \begin{itemize*} + \item Ermöglicht Austausch verschiedener Implementierungen einer Aufgabe ohne Beeinflussung der sie benutzenden Objekte + \end{itemize*} + \item Mediator, Vermittler + \begin{itemize*} + \item Objekt, welches das Zusammenspiel einer lose gekoppelten Objektmenge in sich kapselt. Vermeidet direkten Bezug der Objekte untereinander und ermöglicht unabhängige Änderung des Zusammenspiels + \end{itemize*} + \item State, Zustand + \begin{itemize*} + \item Ermöglicht Objekt, sein Verhalten abhängig von seinem inneren Zustand zu ändern, als ob es die Klasse wechselt + \end{itemize*} + \item Chain of Responsibility, Zuständigkeitskette + \begin{itemize*} + \item Vermeidet direkte Kopplung von Auslöser und Empfänger einer Anfrage bzw. Operation. Mehrere Objekte werden nacheinander benachrichtigt, bis die Anfrage erledigt ist + \end{itemize*} + \end{itemize*} + + Bewertung Observer + \begin{itemize*} + \item Vorteile + \begin{itemize*} + \item Entkopplung von Komponenten und Schichten möglich + \item Broadcast und selective Broadcast möglich + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Bei vielen Beobachtern: Benachrichtigung aufwendig + \item Unerwartete Änderung, Änderungskaskaden und Rekursion + \item Abmelden der Beobachter vor dem Löschen + \end{itemize*} + \item Bekannte Verwendung, Spezialfälle + \begin{itemize*} + \item Verwendung im Model-View-Controller Muster + \item Qt: Signal / Slot-Prinzip ähnlich + \end{itemize*} + \end{itemize*} + + Anwendung von Entwurfsmustern + \begin{itemize*} + \item Untersuche Anwendbarkeit und Konsequenzen + \item Analysiere Struktur, Teilnehmer und Kollaborationen + \item Wähle aus dem Anwendungskontext Namen für Teilnehmer + \item Spezifiziere die teilnehmenden Klassen + \begin{itemize*} + \item Deklariere Schnittstellen, Vererbung und Variablen + \item Identifiziere existierende Entwurfsklassen, die durch das Muster beeinflusst werden + \end{itemize*} + \item Wähle anwendungsspezifische Namen für Operationen + \item Implementiere Operationen entsprechend den Verantwortlichkeiten und Kollaborationen des Musters + \end{itemize*} + + \subsection{Klassenbibliotheken und Komponenten} + Klassenbibliotheken + \begin{itemize*} + \item Zusammenfassung von Modulen, Klassen, etc. + \item Mit einem bestimmten (abstrakten) Zweck + \begin{itemize*} + \item Abstrakte Datenverwaltung, Templates + \item Grundlegende System-Aufgaben + \item Untere Kapselungs-Schicht des Laufzeitsystems oder der Programmierumgebung + \item Numerische Routinen, Simulation, ... + \end{itemize*} + \item Wird in Anwendung eingebunden (importiert), API + \begin{itemize*} + \item Objekte instanziieren oder Klassen ableiten + \end{itemize*} + \item Meist passiv: Kontrollfluss wird von Anwendung gesteuert + \item Beispiele: stdlib, MFC, GNU scientific library, Java 3D, IPP + \end{itemize*} + + Komponentenbasierte Entwicklung + \begin{itemize*} + \item Bausteinorientierte Programmierung (component-ware) + \item Softwareentwicklung: Konstruktion aus vorgegebenen Bausteinen + \item Entsprechung für Wiederverwendung: Generische Bausteine (components) + \begin{itemize*} + \item Anpassbar, zusammensetzbar + \end{itemize*} + \item Werkzeuggestützte bzw. grafische Kompositionsmechanismen + \item Beispiele: Java Beans, Enterprise Java Beans (EJBs), Microsoft COM+ + \item Komponenten-Entwicklung oft auch projektspezifisch + \item Warum Komponenten + \begin{itemize*} + \item Monolithische, proprietäre Software führt zunehmend zu Problemen + \item Zunehmend verteilte Anwendungen mit offener Struktur und Internet-Anbindung + \item Zusammensetzen der Funktionalität aus standardisierten Elementen, die über offene Schnittstellen kommunizieren + \item Komponenten sollen Flexibilität bei sich ändernden Anforderungen erhöhen + \item Weg aus der „Software-Krise“? + \end{itemize*} + \item Eigenschaften von Komponenten + \begin{itemize*} + \item müssen von ihrer Umgebung und anderen Komponenten unabhängig und getrennt sein + \item Kontextabhängigkeiten: benötigte Komponenten-Infrastruktur und Systemressourcen + \item Kapseln ihre angebotenen Funktionen + \item Werden immer als ganze Einheit eingesetzt; alle Bestandteile sind enthalten (Archiv-Datei) + \item Sind nicht von Kopien ihrer selbst unterscheidbar + \item Klare Spezifikation der Schnittstelle nötig; explizit definierte Interaktionen mit Komponenten und Umgebung + \item Komposition durch Dritte: Endbenutzer, Komponenten-Hersteller und Komponenten-Integrator; meist nur kompilierter Code verfügbar + \end{itemize*} + \end{itemize*} + + Komponenten für Client/Server-Architekturen + \begin{itemize*} + \item Wichtige Aspekte + \begin{itemize*} + \item Transaktionen + \item Sicherheit + \item Ressourcenverwaltung + \item Persistenz + \end{itemize*} + \item Komponentenkonzept für Server-Komponenten + \begin{itemize*} + \item meist unsichtbare Komponenten + \item standardisierte Realisierung der wichtigen Eigenschaften für Client/Server-Anwendungen + \item Realisierung: Enterprise Java Beans (EJBs) innerhalb eines Java Enterprise Edition Servers + \end{itemize*} + \end{itemize*} + + \subsection{Dokumentation} + Dokumentation des Feinentwurfs + \begin{itemize*} + \item Möglichkeiten + \begin{itemize*} + \item Eigenständiges Dokument + \item Erweiterung des Lastenhefts / Grobkonzepts + \item Eingebettet in den Quellcode (Werkzeug, z.B. Javadoc) + \end{itemize*} + \item Inhalt + \begin{itemize*} + \item Ähnlich Grobkonzept + \item Zusätzlich detaillierte Modelle + \item Abwägungen des Objektentwurfs + \item Klassenschnittstellen + \end{itemize*} + \end{itemize*} + + \section{Implementierung} + Aufgaben der Implementierung + \begin{itemize*} + \item Aus Spezifikationen Programm(code) erzeugen + \item Aufbauend auf Ergebnissen des Feinentwurfs + \begin{itemize*} + \item Algorithmen konzipieren + \item Datenstrukturen realisieren + \item Umsetzen in konkreter Programmiersprache + \item Dokumentation + \item Untersuchung des Zeit- und Speicherbedarfs + \item Test und Verifikation + \end{itemize*} + \item „Programmieren im Kleinen“ + \end{itemize*} + + \subsection{Konventionen und Werkzeuge} + Konventionen beim Programmieren + \begin{itemize*} + \item (Coding Rules, -conventions, -standards) + \item Regeln für verständliche Programme + \begin{itemize*} + \item „wie“ sollte Quellcode formal und strukturell gestaltet sein + \item Bezeichner, Einrückungen, Dokumentation, Dateien, ... + \item Strukturierung: Block, Methode, Klasse, Package + \end{itemize*} + \item Firmenspezifische Regeln + \begin{itemize*} + \item Festlegung Entwurfsprinzipien (z.B. keine Mehrfachvererbung) + \end{itemize*} + \end{itemize*} + + Namenskonventionen + \begin{itemize*} + \item Klasse + \begin{itemize*} + \item (mit) Substantiv, „UpperCamelCase“ + \item Beispiele: Account, StandardTemplate + \end{itemize*} + \item Methode + \begin{itemize*} + \item (mit) Verb, Imperativ (Aufforderung), „lowerCamelCase“ + \item Beispiele: checkAvailability(), getDate() + \end{itemize*} + \item Attribut, Variable + \begin{itemize*} + \item (mit) Substantiv, „lowerCamelCase“ + \item Beispiele: anzahlAutos, fensterBreite + \end{itemize*} + \item Konstante + \begin{itemize*} + \item Nur Großbuchstaben, Worte mit "\_" zusammengesetzt + \item Standardpräfixe: "MIN\_", "MAX\_", "DEFAULT\_", ... + \item Beispiele: NORTH, BLUE, MIN\_WIDTH, DEFAULT\_SIZE + \end{itemize*} + \end{itemize*} + + Formatierungs-Richtlinien + \begin{itemize*} + \item Entsprechend Schachtelungstiefe einrücken, aber nicht zu weit + \item Einheitliche Verwendung von Leerzeilen und Leerzeichen + \item Einheitliche Dateistruktur verwenden + \begin{itemize*} + \item Eine .java-Datei pro Klasse + \item Ein Verzeichnis für jedes package + \end{itemize*} + \item Werkzeuge: source beautifier, oft in IDEs enthalten + \item Editor: syntax highlighting + \item Navigationswerkzeuge + \begin{itemize*} + \item Auf- und Zuklappen, Inhaltsverzeichnis, tagging + \item doxygen, Eclipse etc. + \end{itemize*} + \end{itemize*} + + Änderungsfreundlicher Code + \begin{itemize*} + \item Wahl von Variablen, Konstanten und Typen orientiert an der fachlichen Aufgabe, nicht an der Implementierung: + \begin{itemize*} + \item `typedef char name [NAME\_LENGTH]` + \item `typedef char firstName [FIRST\_NAME\_LENGTH]` + \end{itemize*} + \item Symbolische Konstanten statt literaler Werte verwenden, wenn spätere Änderung denkbar + \item Algorithmen, Formeln, Standardkonzepte in Methoden/Prozeduren kapseln + \item Übersichtlichkeit: Zusammenhängende Einheit nicht größer als Editorfenster (40-60 Zeilen, 70 Zeichen breit) + \item Strukturierte Programmierung (Regeln je nach Schärfe) + \begin{itemize*} + \item Kein goto verwenden (in anderen Sprachen als Java) + \item switch nur mit break-Anweisung nach jedem Fall + \item break nur in switch-Anweisungen verwenden + \item continue nicht verwenden (Effekt ähnlich goto) + \item return nur am Ende zur Rückgabe des Werts + \end{itemize*} + \item Übersichtliche Ausdrücke + \begin{itemize*} + \item Seiteneffektfreie Ausdrücke, schlecht: y += 12*x++; + \end{itemize*} + \item Variablen möglichst lokal und immer private deklarieren + \item Wiederverwendung "äußerer" Namen vermeiden + \end{itemize*} + + Werkzeuge + \begin{itemize*} + \item Integrated Development Environments (Eclipse, KDevelop) + \item Compiler, Linker; Build / Make; Versionskontrolle (git, svn) + \end{itemize*} + + \subsection{Code-Qualität} + Portierbarer Code + \begin{itemize*} + \item Code, den man ohne Änderungen in ein anderes System (Compiler, Betriebssystem, Rechner) übertragen kann + \begin{itemize*} + \item Kein implementierungsabhängiges Verhalten! + \end{itemize*} + \item ANSI C++ Standard ist nicht vollständig definiert + \begin{itemize*} + \item Ist das Verhalten nicht festgelegt, unterscheidet der ANSI C++ Standard zwischen: + \item Implementierungsabhängigem, unspezifiziertem oder undefiniertem Verhalten + \item Code, welcher auf implementierungsabhängigem, unspezifiziertem oder undefiniertem Verhalten basiert, ist + \item Nicht portabel und somit häufig verboten + \item Wird unter Umständen ungewollt wegoptimiert + \end{itemize*} + \end{itemize*} + + Implementierungsabhängiges Verhalten + \begin{itemize*} + \item Compiler übersetzen bestimmte Sprachkonstrukte unterschiedlich, Ergebnis unterscheidet sich + \item Voraussetzung: + \item Verhalten ist konsistent festgelegt und dokumentiert + \item Kompilierung von standardkonformem Code ist erfolgreich + \item Beispiel: Speichergröße von Integer-Typen + \item char kann signed oder unsigned sein: Nicht damit rechnen! + \item 32 Bit System ist wie erwartet + \item 16 Bit System: Multiplikation wird mit int durchgeführt -> Überlauf -> undefiniertes Verhalten + \end{itemize*} + + \begin{itemize*} + \item Unspezifiziertes Verhalten: + \item Wie implementierungsabhängiges Verhalten + \item Compiler muss sich für ein bestimmtes Verhalten entscheiden + \item Muss nicht dokumentiert sein + \item Beispiel: Evaluierungsreihenfolge von Funktionsargumenten `tuWas(zuerstDas(),oderDochLieberDas());` + \item Undefiniertes Verhalten: + \item Keinerlei Vorgaben + \item Compiler muss mögliches Problem nicht melden + \item Keine Voraussage welches Resultat eintritt + \item Bereits die Kompilierung kann fehlschlagen + \item Oder das laufende Programm kann falsche Resultate liefern. + \item Effekt: „Bei mir läuft es aber!?“ + \item „undefiniertes Verhalten nutzen grenzt an Sabotage!“ + \end{itemize*} + + Sicherer Code mit const + \begin{itemize*} + \item Const Variable - Konstante + \begin{itemize*} + \item Stellt sicher, dass sich der Wert nicht verändert + \end{itemize*} + \item Const Parameter + \begin{itemize*} + \item Übergabeparameter ändert sich nicht innerhalb der Operation + \item Z.B. bei Übergabe komplexer Daten als Referenz bzw. Zeiger `long calcMeanValue(const image \&i){...}` + \end{itemize*} + \item Const Operationen + \begin{itemize*} + \item Sicherstellen, dass Operation das Exemplar nicht ändert + \item Aufruf der const Operation bei const Variablen möglich + \end{itemize*} + \item Verwende const wenn möglich + \end{itemize*} + + + \subsection{Dokumentation} + \begin{itemize*} + \item Selbstdokumentierende Programme? + \begin{itemize*} + \item 2001 Int. Obfuscated C Code Contest Winner, Short Program + \end{itemize*} + \end{itemize*} + + Integrierte Dokumentation + \begin{itemize*} + \item Verständlichkeit, Wartbarkeit - auch für Programmierer! + \item Code selbst sollte möglichst verständlich sein + \item Dokumentation in Programm schreiben und aktualisieren + \item Beschreibung der Bedeutung des Codes! + \item Als Konventionen festschreiben + \item Programmvorspann + \item Kurzbeschreibung Datei / Klasse / Funktion ... + \item Verwaltungsinformationen + \begin{itemize*} + \item Autor, Datum, Version, Projekt, ToDo, FixMe, ... + \item Zustand: geplant, in Bearbeitung, vorgelegt, akzeptiert + \end{itemize*} + \item Laufende Kommentare im Quellcode + \end{itemize*} + + Programmierer-Dokumentation + \begin{itemize*} + \item Als eigenes Dokument elektronisch oder gedruckt + \item Einstieg in Programmverständnis (z.B. Bachelor-Arbeit) + \item Konsistenz mit Quelltext? Verweise? + \item Technische Unterstützung: JavaDoc (Java), doxygen (C++) + \item Ergänztes Java-Programm: Dokumentation HTML, PDF, + \end{itemize*} + % ```js + % /** @author name Mustermann */ + % /** @param name description */ + % /** @return description */ + % ``` + + Benutzerdokumentation + \begin{itemize*} + \item Benutzer-Handbuch, Online-Dokumentation + \item Unterstützung ohne Support? + \item Vollständige und fehlerfreie Beschreibung der Benutzung + \begin{itemize*} + \item Beispiele, screen shots + \end{itemize*} + \item Arten: Tutorial, Beschreibung, + \end{itemize*} + + Benutzer-Unterstützungssysteme + \begin{itemize*} + \item Integrierte Hilfe (Suchfunktion, balloon help / tool tips) + \item Assistenz-System (Zustandsabhängige Anleitung) + \item Tutor-System zum Erlernen + \item Bug-Listen, Mailinglisten, Diskussionsforen + \end{itemize*} + + \subsection{Codegenerierung} + Bezug zwischen Modell und Programmcode + \begin{itemize*} + \item Vorwärtsmodellierung: Modell - Code + \item Rückwärtsmodellierung: Code - Modell + \begin{itemize*} + \item Außerdem: Modelltransformation, Refaktorisierung + \end{itemize*} + \item Idealfall: Automatische Übersetzung durch SW-Werkzeug (in beiden Richtungen) + \begin{itemize*} + \item „Modellbasierte Entwicklung“ + \end{itemize*} + \item Statisch: Beispiel Klassendiagramm - Quelltext der Klassen mit allen Vererbungsbeziehungen, Attributen und Methodensignaturen (Klassen-Stümpfe mit leeren Methodenrümpfen zum Ausfüllen) + \item Dynamisch: Beispiel Zustandsdiagramm - Quelltext der Zustandssteuerung einer Klasse + \end{itemize*} + + %![Codegenerierung](Assets/Softwaretechnik1_Codegenerierung.png) + + Weitere statische Transformationen + \begin{itemize*} + \item Abbildung von Assoziationen auf Sammlungen + \item Abbildung von Verträgen auf Ausnahmen + \item Abbildung von Objektmodellen auf Datenbankschemata + \item Abbildung von Entwurfsmustern auf Codefragmente + \end{itemize*} + + Optimierung des Entwurfsmodells + \begin{itemize*} + \item Grund: nichtfunktionale Eigenschaften + \item Zugriffspfade + \item Klassen in Attribute umwandeln + \item Verzögerung von Berechnungen + \item Zwischenspeicherung aufwändiger Ergebnisse + \end{itemize*} + + Codegenerierung aus StateCharts + \begin{itemize*} + \item Einfachste Möglichkeit: Switch (Case) Statement + \item Zustände werden durch Datenwerte repräsentiert + \begin{itemize*} + \item Aktueller Zustand: einzelne skalare Variable + \end{itemize*} + \item Jedes Ereignis wird durch Methode implementiert + \item Ausgehend von aktivem Zustand wird bei Eintreffen eines Ereignisses der entsprechende Programmcode ausgeführt + \item Abhängig von Zustandsvariable wird Aktion ausgeführt und der Folgezustand eingestellt + \item Wird in einer Klasse realisiert + \item Sinnvoll für einfache, “flache” Modelle + \begin{itemize*} + \item Sonst Logik für Hierarchie nötig + \end{itemize*} + \end{itemize*} + + Anpassung der Generierung + \begin{itemize*} + \item Verschiedene Zielsprachen (Java, C++, ...) + \item Model2Text-Transformationen + \begin{itemize*} + \item Verschiedene Generatoren, z.B. Eclipse Modelling Project + \end{itemize*} + \item Generierung aus dem Modellierungswerkzeug + \begin{itemize*} + \item Parametrisierung der Codegenerierung + \item Generierungsvorlagen + \end{itemize*} + \end{itemize*} + + Weitere Werkzeuge + \begin{itemize*} + \item Compiler-Compiler: Syntaxbeschreibung wird in lexikalische Analyse (tokenizer) und Syntaxanalyse-Programm transformiert (lex \& yacc / flex \& bison / antlr) + \item Codegenerierung für grafische Benutzungsoberflächen aus grafischer Beschreibung: GUI toolkits + \item XML-Parser + \begin{itemize*} + \item XSLT, DOM, SAX, ... + \end{itemize*} + \end{itemize*} + + \subsection{Implementierung aktiver Objekte} + Realisierung aktiver Entwurfsobjekte + \begin{itemize*} + \item Reagieren nicht nur (Methodenaufruf), sondern implementieren eigenes Verhalten + \item Aktive Klassen, z.B. Steuerobjekte + \end{itemize*} + + Arten von Programmabarbeitung + \begin{itemize*} + \item Sequentiell: es gibt immer genau einen nächsten Schritt, alle Schritte werden nacheinander ausgeführt + \item Parallel: Spezielle Hardware bzw. Mehrkernprozessor, mehrere Befehlsfolgen werden echt parallel bearbeitet + \item Quasi-parallel: Ein Prozessor arbeitet mehrere Befehlsfolgen in freier Einteilung ab + \item Nebenläufig: Oberbegriff für Parallel und Quasi-parallel + \begin{itemize*} + \item concurrent + \end{itemize*} + \end{itemize*} + + Vorteile + \begin{itemize*} + \item Höhere Geschwindigkeit + \item Kein aktives Warten auf Ereignisse + \item Getrennte Implementierung unabhängiger Aspekte + \end{itemize*} + + Ergebnisse eines Programms + \begin{itemize*} + \item Ein Programm, dessen Ablauf eindeutig vorherbestimmt ist, nennt man deterministisch (deterministic) + \item Ein Programm, das bei gleichen Eingaben gleiche Ausgaben produziert, heißt determiniert (determined) + \item Programme in üblichen Programmiersprachen sind sequentiell, deterministisch und determiniert + \item Grund: Herkömmliche Programmiersprachen sind durch das von-Neumann-Modell geprägt + \item Determinismus nicht notwendig für Determiniertheit! + \begin{itemize*} + \item Determiniertheit nebenläufiger Programme: Synchronisation + \item Vermeidung von Schreib/Schreib und Schreib/Lese-Konflikten + \end{itemize*} + \end{itemize*} + + Java Threads + \begin{itemize*} + \item Verwaltung durch die Java Virtuelle Maschine (JVM) + \item Realisierung der Threads ist je nach Implementierung der JVM unterschiedlich + \begin{itemize*} + \item Abbildung auf Betriebssystem-Threads (z.B. unter Windows weitverbreitet) + \item Realisierung durch die JVM (z.B. unter Unix und in Java-fähigen Browsern) + \item Nachteile: Keine Ausnutzung von Multiprozessorsystemen durch die VM; Zuteilungsstrategie für Threads ist in derzeitigen Implementierungen unterschiedlich + \end{itemize*} + \item Threads arbeiten immer im Adressraum der JVM (eigener Prozess) und sind außerhalb dieser nicht sichtbar + \end{itemize*} + + Erzeugung eines Threads + \begin{itemize*} + \item Unterklasse der Basisklasse „Thread“ bilden `class MyThread extends Thread` + \item Problem: keine Mehrfachvererbung, daher Alternative nötig (Beispiel: Applet): + \begin{itemize*} + \item Schnittstelle „Runnable“ implementieren + \item `class MyThread implements Runnable` + \end{itemize*} + \item Die vordefinierte Schnittstelle Runnable ist definiert als + % ```java + % public interface Runnable + % { public abstract void run(); } + % ``` + \end{itemize*} + + Starten eines Threads + \begin{itemize*} + \item Eine Klasse, die Runnable implementiert, muss wie Unterklassen von Thread immer eine run()-Methode definieren + \item Seiteneffekt der Runnable-Schnittstelle + \begin{itemize*} + \item Instanzen der Klasse werden nebenläufig zu den anderen laufenden Threads ausgeführt + \item Ausführung beginnt mit der Methode run () + \end{itemize*} + \item Ablauf + \begin{itemize*} + \item Thread-Objekt erzeugen + \item Thread starten mit t.start() + \item start() ruft implizit run() auf + \end{itemize*} + \end{itemize*} + + Synchronisation von Threads + \begin{itemize*} + \item Gezielte Einschränkung der Nebenläufigkeit + \item Gründe + \begin{itemize*} + \item Zugriffsbeschränkung, gegenseitiger Ausschluss + \item Abhängigkeiten, einseitige Synchronisation + \end{itemize*} + \item Methoden: Semaphore, Monitore, Schlossvariablen, ... + \end{itemize*} + + Java: Monitore + \begin{itemize*} + \item Zugriffsoperationen werden in Klassen zusammengefasst + \item Gegenseitiger Ausschluss: Spezifikation der betroffenen Zugriffsoperation als synchronized + \end{itemize*} + + \subsection{Verifikation und Testen} + Wie erreicht man qualitativ hochwertige Software? + \begin{itemize*} + \item Wissen, Erfahrung und Methodenkompetenz der Programmierer + \item Projektstruktur, klare Verantwortlichkeiten + \item Kosten- und Zeitdruck? Änderungen? + \item Programmier- und Testmethoden + \begin{itemize*} + \item pair programming, code reading etc. + \item Qualitätsverantwortlicher, automatisiertes Testen + \end{itemize*} + \item Technische Unterstützung + \begin{itemize*} + \item Z.B. Versionierung, Dokumentation, Testen, Entwicklungsumgebung + \end{itemize*} + \end{itemize*} + + Begriffe + \begin{itemize*} + \item Zuverlässigkeit: Maß für Übereinstimmung des Systemverhaltens mit Spezifikation + \item Grund für Unzuverlässigkeit: + \begin{itemize*} + \item Fehler (bug, fault): fehlerhafter Programmcode o.ä. + \begin{itemize*} + \item Der Begriff „Bug“: + \begin{itemize*} + \item Schon vor Computern als Begriff für Fehler benutzt + \item Motte im Relais des Computers Mark II Aiken (1947) + \end{itemize*} + \end{itemize*} + \end{itemize*} + \item Fehlerhafter Zustand (error): Fehler hat zur Laufzeit zu einem internen fehlerhaften Zustand geführt, der möglicherweise zu einem Ausfall führt + \item Störfall, Ausfall (failure): Abweichung vom spezifizierten Verhalten, meist mit negativen Folgen + \end{itemize*} + + Vergleich System / Systemmodell + \begin{itemize*} + \item Anspruch guter Software: System entspricht Systemmodell (Korrektheit) + \item Problem: System nicht vollständig automatisch erzeugbar! + \item Auswege + \begin{itemize*} + \item Fehlervermeidung (Inspektion, pair programming, ...) + \item Nachweis, dass System dem Modell entspricht - Verifikation + \item Überprüfen, ob System dem Modell entspricht - Testen + \item Fehlertoleranz (durch Redundanz) + \end{itemize*} + \end{itemize*} + + Verifikation + \begin{itemize*} + \item Mathematisch formaler Beweis, dass ein Programm einer Spezifikation genügt + \item Vorteil: wenn anwendbar, dann vollständiger Beweis + \item Problem: für viele (realistisch große) Fälle nicht anwendbar + \begin{itemize*} + \item Zu aufwändig + \item Umgebung muss ebenfalls verifiziert werden + \item Auch in der Theorie nicht immer entscheidbar: Halteproblem, Gödelscher Unvollständigkeitssatz + \end{itemize*} + \item Theoretische Informatik: Berechenbarkeitstheorie, formale Semantik; aktives Forschungsgebiet + \begin{itemize*} + \item model checking + \end{itemize*} + \end{itemize*} + + Testen + \begin{itemize*} + \item Systematischer Versuch, Defekte in der Software zu finden + \item Ingenieurtechnik zur Erhöhung des Vertrauens in Softwaresysteme, aber: unvollständig! + \begin{itemize*} + \item Kann nur die Anwesenheit von Fehlern nachweisen, aber nicht Korrektheit (Abwesenheit von Fehlern)! + \end{itemize*} + \item Aufgabe: Unterschiede zwischen Modell und System finden + \item Destruktiv im Gegensatz zu sonstigen SWE-Aufgaben + \begin{itemize*} + \item Daher sollten nicht (nur) Entwickler selbst testen + \end{itemize*} + \end{itemize*} + + Testplanung + \begin{itemize*} + \item Testen ist aufwändig, deshalb ist gute Planung nötig! + \item Testplanung sollte bereits mit der Anforderungsanalyse beginnen und im Entwurf verfeinert werden (V-Modell, Test-First-Ansatz)! + \item Typische Bestandteile einer Test-Spezifikation (Testdrehbuch) + \begin{itemize*} + \item Phasenmodell des Testprozesses + \item Zusammenhang zur Anforderungsspezifikation, z.B. dort festgelegte Qualitätsziele + \item Zu testende Produkte + \item Zeitplan für die Tests + \item Abhängigkeiten der Testphasen + \item Aufzeichnung der Testergebnisse + \item Hardware\item und Softwareanforderungen + \end{itemize*} + \end{itemize*} + + Arten von Tests + \begin{itemize*} + \item Komponententest: Fehler in einzelnen Objekten oder Subsystemen, losgelöst vom umgebenden System + \begin{itemize*} + \item Umgebung muss nachgebildet werden + \end{itemize*} + \item Integrationstest: Zusammenspiel von Komponenten + \begin{itemize*} + \item Vollständiges System: Systemtest; Szenarios + \end{itemize*} + \item Strukturtest: innere Zustände, Interaktionen + \item Funktionstest: Anforderungen aus Lastenheft + \item Leistungstest: nichtfunktionale Anforderungen + \item Benutzbarkeitstest: Fehler in der Benutzungsschnittstelle, Verständlichkeit, Akzeptanz bei Anwendern + \begin{itemize*} + \item Prototypen + \end{itemize*} + \item Akzeptanztest, Installationstest: Kunde, Abnahme + \end{itemize*} + + Komponententests + \begin{itemize*} + \item Überprüft Verhalten einer Systemkomponenten im Vergleich zur Spezifikation + \item Da Tests bereits frühzeitig stattfinden sollten, ist Umgebung meist nicht vollständig implementiert + \begin{itemize*} + \item Teststumpf (stub, dummy) simuliert aufgerufene Komponenten + \item Testtreiber simuliert aufrufende Komponenten + \end{itemize*} + \item Vorgehensweisen + \begin{itemize*} + \item Bottom-up + \item Top-down + \item Sandwich + \item Schichtenweises Testen + \end{itemize*} + \end{itemize*} + + Systematisches Testen + \begin{itemize*} + \item Testfall + \begin{itemize*} + \item Beschreibung, Name + \item Zu testende Komponente, Testgegenstand (Pfad, Aufrufart) + \item Eingabedaten (Testdaten) + \item Erwartete Ergebnisse („Orakel“) + \item Protokoll (erzeugte Ausgaben) + \item Bewertung des Ergebnisses + \end{itemize*} + \item Weitere Begriffe + \begin{itemize*} + \item Regressionstest: erneute Durchführung eines Tests anhand einer geänderten Version des Testgegenstands + \item Alphatest: Test eines Prototypen durch Benutzer + \item Betatest: Test der vollständigen Software durch Benutzer + \end{itemize*} + \end{itemize*} + + Funktionaler Test (black box test) + \begin{itemize*} + \item Testfallauswahl beruht auf Spezifikation + \item Ohne Wissen über inneren Aufbau + \item E/A-Zusammenhang + \end{itemize*} + + Äquivalenzklassen im funktionalen Test + \begin{itemize*} + \item Problem: alle Kombinationsmöglichkeiten der Eingangsdaten sind zu umfangreich für vollständigen Test + \item Mögliche Einschränkung: Bildung von Äquivalenzklassen der Eingangsdaten, für die ähnliches Verhalten erwartet wird + \item Basierend auf Anwendungsdomäne + \item Äquivalenzklasse = Teilmenge der möglichen Datenwerte der Eingabeparameter + \item Test je eines Repräsentanten jeder Äquivalenzklasse + \item Finden von Äquivalenzklassen + \begin{itemize*} + \item Zulässige / unzulässige Teilbereiche der Datenwerte + \item Unterteilung der Bereiche nach erwarteten Ausgabewerten + \end{itemize*} + \end{itemize*} + + Grenztests + \begin{itemize*} + \item Ergänzung von Äquivalenztests: Spezialfälle + \item Rand der Äquivalenzklasse + \item Außerdem: Sonderfälle, erwartete Problemfälle (technisch) + \end{itemize*} + + Strukturtest (white box test, glass box test) + \begin{itemize*} + \item Testfallauswahl beruht auf Programmstruktur + \item Wie erreicht man möglichst vollständige Abdeckung? + \item Kontrollflussorientiert + \begin{itemize*} + \item Anweisungsüberdeckung anhand Quellcode + \item Zweigüberdeckung und + \item Pfadüberdeckung anhand des Flussgraphen reduzierte Variante: bounded interior Pfadtest + \end{itemize*} + \item Datenflussorientiert + \begin{itemize*} + \item defines / uses-Verfahren: Abarbeitungspfade von Definition zu jeder Verwendung von Variable oder Objekt durchlaufen + \end{itemize*} + \item Zustandsorientiert + \end{itemize*} + + \subsection{Testaktivitäten und Werkzeuge} + Wann wird getestet? + \begin{itemize*} + \item Während der Implementierung! + \begin{itemize*} + \item Auch wenn Schreiben von Tests scheinbar unproduktiv ist + \item Tests sind unbeliebt, da Probleme aufgezeigt werden + \item Aber: spätes Testen erhöht Aufwand! + \end{itemize*} + \item Inkrementell, d.h. für jede überschaubare Änderung + \item Spezielle Vorgehensweise: test first-Ansatz + \end{itemize*} + + Wie wird getestet? Geplant, systematisch, möglichst automatisiert, dokumentiert, wiederholbar + + Testplanung + \begin{itemize*} + \item Iterative Erstellung eines Testplans / Testdrehbuchs + \item Aktivitäten - Festlegen von + \begin{itemize*} + \item Teststrategie (Testumfang, Testabdeckung, Risikoabschätzung) + \item Testziele und Kriterien für Testbeginn, -ende und -abbruch + \item Vorgehensweise (Testarten) + \item Testumgebung (Beschreibung) + \item Hilfsmittel und Werkzeuge zum Testen + \item Testspezifikation + \item Testorganisation (Termine, Rollen, Ressourcen) + \item Fehlermanagement (Werkzeugunterstützung) + \end{itemize*} + \item Ergebnis: Inhalt des Testplans + \end{itemize*} + + Testspezifikation + \begin{itemize*} + \item Auswahl der zu testenden Testfälle + \item Definition einzelner Testfälle + \begin{itemize*} + \item Grundlage: Anwendungsfälle, Anforderungen, Fehlermeldungen (Zuordnung notwendig) + \end{itemize*} + \item Aktivitäten + \begin{itemize*} + \item Testfallfindung und Testfalloptimierung + \item Testfälle beschreiben (was genau ist zu testen) + \item Randbedingungen finden (Abhängigkeiten zu anderen Testfällen) + \item Festlegen und Erstellen der Eingabedaten + \item Festlegungen zum Testablauf und zur Testreihenfolge + \item Festlegen Soll-Ergebnis + \item Festlegung der Bedingung(en) für 'Test erfüllt'; ... + \end{itemize*} + \end{itemize*} + + Testvorbereitung + \begin{itemize*} + \item Tätigkeiten im Vorfeld des Tests + \item Aktivitäten + \begin{itemize*} + \item Vorbereitung der Tests entsprechend Testplan + \item Bereitstellen der Dokumente (Testspezifikation) + \item Verfügbar machen von Werkzeugen (Fehlermanagement) + \item Aufbauen der Testumgebung(en) + \item Integration der Entwicklungsergebnisse in die Testumgebung (Software installieren, konfigurieren, ...) + \item Bereitstellung von Testdaten bzw. Eingabedaten in die Testumgebung + \item Benutzer und Benutzerrechte anlegen + \end{itemize*} + \end{itemize*} + + Testdurchführung + \begin{itemize*} + \item Durchführung der spezifizierten Tests + \begin{itemize*} + \item Manuell + \item Automatisiert + \end{itemize*} + \item Aktivitäten + \begin{itemize*} + \item Auswählen der zu testenden Testfälle + \item Bereitstellen der Testdaten + \item Starten, Überwachen, Abbrechen, Beenden + \item Erfassung des Ist-Ergebnisses zur Auswertung + \item Besondere Vorkommnisse dokumentieren + \item Umgebungsinformationen für den Testlauf archivieren, ... + \end{itemize*} + \end{itemize*} + + Testauswertung + \begin{itemize*} + \item Überprüfung der Ergebnisse + \item Vergleich Ist-Ergebnis mit Soll-Ergebnis + \item Entscheidung Testergebnis (ok / Fehler) + \item Bei Fehler: + \begin{itemize*} + \item Klassifizierung (z. B.: Fehlerursache, Fehlerschwere etc.) + \item Fehler reproduzieren! + \item Angemessene Fehlerbeschreibung und –erläuterung: Nur ausreichend dokumentierte Fehler sind gültig und können bearbeitet werden! + \item Fehler im Fehlermanagement eintragen (Bug report) + \item Testfall bleibt offen + \end{itemize*} + \end{itemize*} + + Bugbeschreibung + \begin{itemize*} + \item Möglichst genaue Beschreibung des Fehlers + \item Ziel ist die Reproduzierbarkeit des Fehlers + \item Zuordnung zu Projektplan: Meilenstein, Version + \item Fehlerklassifikation + \begin{itemize*} + \item defect: Fehler in einer bestehenden Funktionalität + \item enhancement / feature: Funktionale Anforderung oder Erweiterung der bestehenden Funktionalität + \item task: Allgemeine Aufgabe + \end{itemize*} + \item Priorität festlegen + \begin{itemize*} + \item Unterschiedliche Stufen + \item Festlegung innerhalb eines Unternehmens / Projektes + \end{itemize*} + \item Prioritäten von Fehlern (bugs) + \end{itemize*} + + %| Stufe | Bedeutung | Verhalten | + %| -\item | -\item | -\item | + %| blocker | Schwerwiegender Fehler. Führt zur Arbeitsunfähigkeit anderer (Entwicklung, QA, Produktion,...). | Verdrängt alle anderen Aufgaben! Muss sofort gelöst werden, um Arbeitsfähigkeit wieder herzustellen. | + %| critical | Schwerer Fehler. Eine grundlegende Funktionalität des Systems ist nicht gegeben. Fehler muss bis zur nächsten Version behoben werden. System kann nicht verwendet werden. | Alle anderen Fehler (außer blocker) werden später gelöst. Bis zum nächsten Release muss dieser Bug gelöst sein. | + %| major | „normaler“ Fehler. Es tritt ein Fehler innerhalb einer Funktion des Systems auf. Das System kann jedoch weiterhin verwendet werden. | Fehler wird normal eingeplant. | + %| minor | Kleiner Fehler. Fehler behindert nicht weiter die Funktionsfähigkeit des Systems. Einfacher Work-Around vorhanden? | Je nach Aufwand und Zeitplanung erledigen. | + %| trivial | Schönheitsfehler. Fehler stört während des Betrieb des Systems nicht. | Je nach Aufwand „zwischendrin“ erledigen. Alle anderen Bugs bevorzugt lösen. | + + Testabschluss + \begin{itemize*} + \item Zusammenfassen der Tests + \item Gesamtstatus dokumentieren und kommunizieren + \item Entscheidungen herbeiführen z.B.: Auslieferung? + \begin{itemize*} + \item Ziele erreicht - nächste Schritte (Auslieferung) + \item Tests vorzeitig beenden oder unterbrechen + \item Gründe dokumentieren + \item Vollständiger Nachtest oder Teiltest möglich? + \end{itemize*} + \item Unterlagen archivieren + \end{itemize*} + + Testautomatisierung + \begin{itemize*} + \item Automatische Code-Validierung + \begin{itemize*} + \item Statisch: lint (C), Compiler + \item Dynamisch: run-time checking, memory leaks etc. + \end{itemize*} + \item Beispiel: Test-Framework JUnit + \end{itemize*} + + Behebung funktionaler Fehler + \begin{itemize*} + \item Log-Ausschriften bzw. Signale + \item Debugger: Vorwärts / Rückwärts + \item Haltepunkte setzen: Bedingte Haltepunkte für Schleifen + \item Darstellung der Variablenbelegung, Werte setzen + \item Analyse des Aufruf-Stacks + \end{itemize*} + + Behebung nichtfunktionaler Fehler + \begin{itemize*} + \item Geschwindigkeit: profiling z.B. mit Eclipse TPTP + \item Aufrufe, Zeitverbrauch in Methoden usw. + \end{itemize*} + + Memory Leaks, JProbe + \begin{itemize*} + \item Runtime heap summary: Welche Objekte verbrauchen Speicher? + \item Reference graph: Wer referenziert diese Objekte, so dass sie nicht per garbage collection gelöscht werden? + \end{itemize*} + + \subsection{Softwareverteilung} + Softwareverteilung (deployment) + \begin{itemize*} + \item Prozess zur Installation von Software auf + \begin{itemize*} + \item Anwender-PC‘s, Servern, Maschinen in Produktion ... + \end{itemize*} + \item Steuerung der Installation der Software + \item Voraussetzungen für die Software schaffen + \begin{itemize*} + \item Schulungen planen und durchführen + \end{itemize*} + \item Softwareverteilung ist ein kritischer Prozess! + \begin{itemize*} + \item Fehler können zu vielen Störungen und Ausfällen führen + \end{itemize*} + \item Ziele + \begin{itemize*} + \item Automatische Installation, Konfiguration und Wartung einer großen Anzahl von Systemen mit geringem Aufwand + \item Erreichen eines störungsarmen und sicheren Betriebs + \item Möglichst einheitliche Softwareversionen auf allen Systemen + \end{itemize*} + \end{itemize*} + + Installationsarten + \begin{itemize*} + \item Erstinstallation + \item Software-Update (Software-Aktualisierung) + \begin{itemize*} + \item Aktualisierung der Software, Daten oder Konfiguration + \end{itemize*} + \item Hotfixes und Service Packs + \begin{itemize*} + \item Nur bestimmte Teile der Software werden aktualisiert + \item Meist nur Fehlerbehebung, keine neuen Features + \end{itemize*} + \item Upgrade + \begin{itemize*} + \item Erweitert eine Software deutlich um neue Funktionen + \end{itemize*} + \item Unbeaufsichtigte (automatische) Installation + \begin{itemize*} + \item Installation erfolgt ohne Benutzereingriff + \item Periodisch, durch Aufruf des Anwenders, beim Programmstart + \item Einstellungen in einem Skript festgelegt oder werden als Parameter übergeben + \end{itemize*} + \end{itemize*} + + Installationshilfsmittel + \begin{itemize*} + \item Installationsprogramm (Installer) + \begin{itemize*} + \item Windows: Windows Installer, InstallShield + \item Linux: RPM, Port, APT + \item MAC-OS: Installer, WarpIn + \end{itemize*} + \item Installations-Script + \item Installationsanweisung + \end{itemize*} + + Software-Rollout + \begin{itemize*} + \item Vorgang des Veröffentlichens und Verteilens von Softwareprodukten auf entsprechende Clients + \item Anzahl der Clients kann weit über 10.000 liegen! + \item Rollout abhängig von verschiedenen Kriterien (Vorherige Installation, Hardwarekonfiguration, Zeit, Kunde) + \item Rollout-Varianten + \begin{itemize*} + \item Zentral / Dezentral + \item Manuell (Benutzer löst Installation aus) + \item Automatisiert (ohne Benutzerinteraktion) + \end{itemize*} + \end{itemize*} + + Vollständige Verteilung (big bang) + \begin{itemize*} + \item Alle Installationen werden mit einem Mal installiert + \item Sehr hohes Risiko + \item Eventuelle Fehler führen zu vielen fehlerhaften Zuständen oder Störfällen - führt zu hohem Druck + \item Eventuelle Fehler müssen schnell gelöst werden (Provisorium) + \item Sehr kurze Einführungsphase + \item Rollback-Mechanismus sehr empfohlen + \end{itemize*} + + Rollback + \begin{itemize*} + \item Wiederherstellung des Ursprungszustands + \item Technische Realisierung muss ermöglicht werden + \end{itemize*} + + Pilotierte Einführung + \begin{itemize*} + \item Einführung für wenige ausgewählte Installationen + \item Sehr hohe Sicherheit + \item Festlegung der späteren Rollout-Schritte + \item Benötigt zusätzliche Zeit + \item Geringere Auftrittswahrscheinlichkeit von Fehlern + \end{itemize*} + + Schrittweise (iterative) Einführung + \begin{itemize*} + \item Einführung erfolgt schrittweise mit einer definierten Anzahl + \item von Installationen (Rampe - ramp-up) + \item Höhere Fehlerwahrscheinlichkeit -> Bessere Reproduzierbarkeit -> schnelleres Finden von Fehlern -> Erfahrungsgewinn + \item Begrenztes Risiko, mittlerer Zeitaufwand + \end{itemize*} + + \section{Vorgehensmodelle} + \subsection{Einführung} + Wie läuft Softwareerstellung ab? + \begin{itemize*} + \item (oder besser, wie sollte sie ablaufen?) + \item Aufgaben und Phasen siehe vorangegangene Kapitel + \item Wann wird was getan? Abhängigkeiten? + \begin{itemize*} + \item Sequentiell / nebenläufig, + \end{itemize*} + \item Prozessmodelle der Softwareentwicklung + \begin{itemize*} + \item Regelwerke, Erfahrungen, best practices für große Projekte + \item Aktives Entwicklungsgebiet + \end{itemize*} + \item Erweiterbar zum Software-Lebenszyklus mit Inbetriebnahme, Wartung, Außerdienststellung usw. + \end{itemize*} + + Softwareentwicklungsprozess/Vorgehensmodell + \begin{itemize*} + \item Methode zur Erstellung von Softwaresystemen + \item Systematisch, rational und schrittweise erfolgender Weg vom Problem zur Lösung + \item Ziel: Softwareentwicklungsprozess übersichtlich, plan- und strukturierbar + \item Zerlegung des Softwareentwicklungsprozesses in überschaubare Einheiten + \item Unternehmensspezifisch, anpassbar, erweiterbar + \begin{itemize*} + \item Eigene Varianten, evtl. projektabhängig + \item An spezielle Bedürfnisse des Informationsbereichs angepasst + \item Kein allgemeingültiges Vorgehen + \item Einsetzbar in verschiedenartigen Projekten + \end{itemize*} + \end{itemize*} + + Phasen + \begin{itemize*} + \item Überwiegend zeitliche Zerlegung + \item Zeitlich begrenzte Phasen + \item Auch inhaltlich und organisatorisch begrenzte Phasen möglich + \item Teilprozesse / Aktivitäten + \begin{itemize*} + \item Inhaltliche Zerlegung + \item Satz von Aufgaben + \item Verteilung der Teilprozesse / Aktivitäten auf verschiedene Phasen + \item Begleitet von unterstützenden, übergreifenden Aktivitäten + \end{itemize*} + \end{itemize*} + + Aufgabe + \begin{itemize*} + \item Erzeugt Arbeitsergebnis (Artefakt) + \item Verbraucht Ressourcen (z.B. Arbeitskraft, Zeit, Ausrüstung) + \end{itemize*} + + Arbeitsergebnis (oder Artefakt) + \begin{itemize*} + \item Dokument, Modell, System, Programmcode Lastenheft, Spezifikation, Glossar, Handbuch usw. + \item Intern zu lieferndes Ergebnis + \end{itemize*} + + Teilnehmer und Rollen + \begin{itemize*} + \item Verantwortungsbereich eines Teilnehmers (z.B. Kunde, Projektmanager, Entwickler, Architekt) + \item Rolle bearbeitet / enthält Satz von Aufgaben + \end{itemize*} + + Unterstützungsprozesse / -Aktivitäten + \begin{itemize*} + \item Projektmanagement + \begin{itemize*} + \item Projektplanung, -verfolgung und -steuerung + \item Risikomanagement + \end{itemize*} + \item Anforderungsmanagement + \begin{itemize*} + \item Im Gegensatz zur Anforderungsaufnahme und -analyse + \end{itemize*} + \item Qualitätsmanagement + \begin{itemize*} + \item Problem Management + \item Softwaremetriken (Messung von Softwareeigenschaften) + \item Statische + dynamische Analyse (Bestimmung von Schwachstellen) + \end{itemize*} + \item Konfigurationsmanagement + \begin{itemize*} + \item Versionsverwaltung, Änderungsmanagement + \end{itemize*} + \item Dokumentation + \end{itemize*} + + \subsection{Sequenzielle Modelle} + \begin{itemize*} + \item Wasserfallmodell + \begin{itemize*} + \item Abhängigkeiten zwischen Teilergebnissen + \item Ursprung in System- Hardwareentwicklung + \begin{itemize*} + \item Wurde für die SW-Entwicklung übernommen + \item Auch heute verbreitetes Vorgehen bei HW-Entwicklung + \end{itemize*} + \item Sequenzielles Phasenmodell (Abschluss der Phasen) + \item Stark Dokumentengetrieben (Ergebnisse der Phasen) + \item Unterteilung in abgeschlossene Phasen: + \begin{itemize*} + \item Analyse + \item Design/Entwurf + \item Implementierung + \item Test \& Integration + \item Einführung, Betrieb \& Wartung + \end{itemize*} + \item Alternativ: + \begin{itemize*} + \item Planung + \item Definition + \item Entwurf + \item Implementierung + \item Test \& Integration + \item Einsatz und Wartung + \end{itemize*} + \item Vorteile + \begin{itemize*} + \item Einfach und verständlich, bekannt und verbreitet + \item Erleichterte Planung und Steuerung + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Idealisierte Annahme rein sequentiellen Ablaufs + \item Starke Abhängigkeiten zwischen Teilergebnissen + \item Ungeeignet, falls Anforderungen zu Beginn unklar + \item Unflexibel gegenüber Änderungen + \item Erst sehr spät greifbare Ergebnisse + \end{itemize*} + \end{itemize*} + \item Erweitertes Wasserfallmodell + \begin{itemize*} + \item Verbesserung für Änderungen und Fehler - Rückschritte + \end{itemize*} + \item Alternative Arten von Phasenmodellen + \begin{itemize*} + \item Sequenziell + \begin{itemize*} + \item Phasen strikt nacheinander, Dokumenten-orientiert + \item Keine Änderungen abgeschlossener Artefakte + \end{itemize*} + \item Nebenläufig + \begin{itemize*} + \item Phasen laufen teilweise parallel für bessere Zeitnutzung + \item Weiterhin keine Änderungen fertiger Dokumente + \end{itemize*} + \item Inkrementell + \begin{itemize*} + \item Unterteilung des Produkts in Teile + \item Schnellere Auslieferung von Teilfunktionalität nach vollständiger Aufnahme der Anforderungen + \end{itemize*} + \item Alternative: Evolutionär + \begin{itemize*} + \item Anforderungen entwickeln sich im Projekt + \item Ausgelieferte Versionen ergeben neue Anforderungen + \end{itemize*} + \item V-Modell [Boehm] + \begin{itemize*} + \item Explizite Adressierung der Qualitätssicherung + %\item %![VModell](Assets/Softwaretechnik1_VModell.png) + \item Entwicklung des V-Modells in Deutschland + \begin{itemize*} + \item Leitfaden, in Bundesbehörden ab 1990er verbindlich + \item Version V-Modell 97 erweitert um Werkzeuganforderungen, Rollen und Submodelle der Beteiligten + \item Kritik: schlecht skalier\item und anpassbar, zu unflexibel, + \item bürokratisch, nicht an moderner OO-SWEntw. orientiert + \end{itemize*} + \item V-Modell XT (extreme tailoring) + \begin{itemize*} + \item Aktuelle Version ab 2004/05 + \item Einfache projektspezifische Anpassbarkeit + \item Assistent www.v-modell-xt.de (kleines Projekt ~40 Dok.!) + \item Überprüfbarer Projektfortschritt + \item AG/AN-Sichten und Schnittstellen, Ausschreibungen + \item Gesamter SW-Lebenszyklus + \end{itemize*} + \end{itemize*} + \end{itemize*} + \end{itemize*} + + + \subsection{Iterative Modelle} + Iterativer Entwicklungsprozess + \begin{itemize*} + \item Spezifikation, Entwurf und Implementierung müssen immer wieder verändert und angepasst werden + \item Häufiges Integrieren, Validieren und Testen + \item "You should use iterative development only on projects that you want to succeed." [Fowler] + \end{itemize*} + + Inkrementelle Entwicklung + \begin{itemize*} + \item Wenn möglich, sollte es immer einen lauffähigen (unvollständigen) Prototypen geben + \item Neue Funktionen sofort integrieren + \item Neue Versionen gegenüber Anforderungen Validieren + \end{itemize*} + + %![Spiralmodell](Assets/Softwaretechnik1_Spiralmodell.png) + Spiralmodell + \begin{itemize*} + \item Risikogetrieben: Größte Projektrisiken identifizieren und als erstes bearbeiten (Prototyp?) + \item Spirale = iterativer Zyklus durch dieselben Schritte + \item Ziele jedes Durchlaufs aus alten Ergebnissen ableiten + \item Kosten/Nutzen abwägen + \item Regelmäßige Überprüfung des Prozessmodells + \item Anpassbar + \item Hoher Management-Overhead, große Projekte + \end{itemize*} + + Unified Process + \begin{itemize*} + \item Vorgehensmodelle zur objektorientierten Softwareentwicklung + \begin{itemize*} + \item Ivar Jacobson, Grady Booch and James Rumbaugh: The Unified Software Development Process, (Rational/IBM), 1999 + \end{itemize*} + \item Phasen der Entwicklung + \begin{itemize*} + \item Anfang, Ausarbeitung, Erstellung, Überleitung + \item Unterteilung in Iterationen + \item Definition von Meilensteinen + \end{itemize*} + \item Definition von Kernprozessen, die in den Phasen ablaufen + \begin{itemize*} + \item Geschäftsprozessmodellierung, Anforderungsanalyse, Analyse \& Design, Implementierung, Test, Auslieferung + \item In unterschiedlichen Anteilen parallel ablaufend! + \end{itemize*} + \end{itemize*} + + Prinzipieller Ablauf des Unified Process + %![Unified Process](Assets/Softwaretechnik1_UnifiedProcess.png) + \begin{itemize*} + \item Haupteigenschaften des UP + \begin{itemize*} + \item Inkrementell, iterativ, evolutionär + \item Anwendungsgetrieben + \item Architekturzentriert + \item Risikoorientiert + \item Ereignisorientiert + \item Nutzt die UML als Notationssprache + \item Erweiterbar / Anpassbar + \end{itemize*} + \item Verbreitete Vertreter + \begin{itemize*} + \item Rational Unified Process - RUP (Rational / IBM) + \item Open Unified Process - OpenUP (Eclipse Foundation) + \item Object Engineering Process - OEP (oose GmbH) + \end{itemize*} + \item Vorteile + \begin{itemize*} + \item Vorteile der Eigenschaften (iterativ, inkrementell, anpassbar, ...) + \item Berücksichtigung des Risikos + \item Passend für objektorientiertes Paradigmas und UML + \item Tool-Unterstützung + \item Reaktion auf Änderungen möglich + \item Industriestandard + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Hoher Bürokratischer Aufwand -> Tailoring notwendig! + \item Relativ hohe „Lernkurve“ aller Beteiligten + \item Keine schnelle Reaktion auf Änderungen + \item Keine integrierte Qualitätssicherung + \end{itemize*} + \end{itemize*} + + \subsection{Agile Methoden} + \begin{itemize*} + \item Ausgangspunkt + \begin{itemize*} + \item Ziv's Unsicherheitsprinzip des Software Engineering: "Unsicherheit ist im Software-Entwicklungsprozess und den Produkten inhärent und unvermeidlich." (Ziv, 1996) + \item Humphrey's Prinzip der Anforderungsunsicherheit: "In einem neuen Software System werden die Anforderungen solange nicht komplett bekannt sein, bis die Anwender damit arbeiten." (Humphrey, 1995) + \item Wegner's Lemma: "Es ist unmöglich, ein interaktives System komplett zu spezifizieren." (Wegner, 1995) + \end{itemize*} + \item Ziele + \begin{itemize*} + \item geringer bürokratischer Aufwand + \item Hauptziel ist die Softwareentwicklung + \item nur wenige Regeln bzw. Verhalten definiert + \item sehr flexibel gehaltenes Vorgehen + \item stark Anwendungs- und Ereignisorientiert + \item iterativ / inkrementell / evolutionär + \item sehr schnelle Entwicklungsiterationen + \item meist Architekturzentriert + \item auch testgetriebenes Vorgehen möglich + \item Berücksichtigung sozialer Aspekte + \item Softwareentwicklung: Kreative Arbeit von Kreativen + \end{itemize*} + \end{itemize*} + + Das Agile Manifest (2001) + \begin{itemize*} + \item Individuen und Interaktionen bedeutender als Prozesse und Tools + \item Funktionierende Software bedeutender als übermäßige Dokumentation + \item Stetige Zusammenarbeit mit dem Kunden bedeutender als Vertragsverhandlung + \item Mut und Offenheit für Änderungen bedeutender als Befolgen eines Plans + \end{itemize*} + + Eigenschaften agiler Vorgehensmodelle + \begin{itemize*} + \item Team ist für Ergebnis verantwortlich und organisiert sich selbst + \item Kleine Teams 5-8 Personen + \item Definition von Richtlinien, Werten und Prinzipien + \item Beispiele für Werte + \begin{itemize*} + \item Kommunikation (Kommunikation statt Dokumentation) + \item Einfachheit (KISS „Keep it small and simple“) + \item Feedback + \item Mut + \item Respekt + \end{itemize*} + \item Beispiele für Prinzipien + \begin{itemize*} + \item Beidseitiger Vorteil + \item Fehlschläge hinnehmen + \item Ständige Verbesserungen + \item Ständige Lauffähigkeit des Codes + \item Kleine Schritte + \item Wiederverwendung bestehender / bewährter Lösungen + \end{itemize*} + \item Beispiele für Praktiken + \begin{itemize*} + \item Pair-Programing, Coding Rules + \item Kollektives Eigentum / Gemeinsamer Codebesitz + \item Testgetriebene Entwicklung + \item Ständiges Refactoring + \item Keine Überstunden + \end{itemize*} + \item Vorteile agiler Methoden + \begin{itemize*} + \item Geringer bürokratischer Aufwand + \item Besseres Arbeitsklima (Berücksichtigung Sozialer Aspekte) + \item Ständige Verfügbarkeit einer lauffähigen Version + \item Mögliche / nötige Einflussnahme des Kunden + \item „Freie“ Wahl der Prinzipien/Regeln + \item Vermeidung von Spezialistentum und individuellem Besitz + \end{itemize*} + \item Nachteile + \begin{itemize*} + \item Schwierigeres Projektmanagement + \begin{itemize*} + \item Chaotische Vorgehen + \item Schwere Planbarkeit des Ergebnisses + \end{itemize*} + \item Notwendige Beteiligung des Kunden + \item Ergebnis ist schwer vorherzusagen + \end{itemize*} + \end{itemize*} + + \paragraph{eXtreme Programming (XP)} + \begin{itemize*} + \item Beck 1999, aus Kritik an „monumentalen Modellen“ + \item Evolutionäre Entwicklung in kleinen Schritten + \begin{itemize*} + \item Möglichst einfaches Design + \end{itemize*} + \item Konzentration auf Programmcode als Analyseergebnis, Entwurfsdokument und Dokumentation + \item Weglassen von explizitem Design, ausführlicher Dokumentation und Reviews + \item Code wird permanent lauffähig gehalten (täglich) + \item Schnell und flexibel + \item Erfordert Disziplin der Teilnehmer + \item Rollen: Projektleiter, Kunde (verfügbar), Entwickler + \begin{itemize*} + \item Max. 5-10 Entwickler + \end{itemize*} + \item Kunde bestimmt Anforderung und Prioritäten + \begin{itemize*} + \item planning game; story cards (use cases) + \end{itemize*} + \item Implementierung in kleinen Schritten + \begin{itemize*} + \item pair programming, collective code ownership + \item Häufige Releases inkl. Integration + \item Refactoring bei Designänderungen + \item Programmier-Konventionen + \end{itemize*} + \item Regelmäßiges automatisiertes Testen + \begin{itemize*} + \item test-first Ansatz + \end{itemize*} + \item Morgendliches Meeting im Stehen ohne Diskussionen + \item 40h-Woche + \item XP + \begin{itemize*} + \item Sammlung von 12 "best practices" + \item Test-getrieben + \item Flexibel, effizient + \item Kleine Teams + \item Erfordert Disziplin der Teilnehmer + %\item %![XP](Assets/Softwaretechnik1_XP.png) + \end{itemize*} + \end{itemize*} + + \paragraph{Scrum} + \begin{itemize*} + \item [Ken Schwaber, Jeff Sutherland und Mike Beedle] + \item Haupteigenschaften + \begin{itemize*} + \item Iterativ / Inkrementell, Evolutionär + \item stark Anwendungs- und Ereignisorientiert + \item schnelle Entwicklungsiterationen + \end{itemize*} + \item Sprint + \begin{itemize*} + \item eine schnelle Iteration: Dauer ca. 30 Tage + \item Festlegung welche Features umgesetzt werden + \end{itemize*} + \item Product Backlog + \begin{itemize*} + \item Liste der gewünschten Features des Produkts + \item Vom Produkt-Owner priorisiert / Aufwand vom Team geschätzt + \item Jeder kann Einträge beisteuern + \end{itemize*} + \item Rollen + \begin{itemize*} + \item Product Owner + \begin{itemize*} + \item Erfasst Bedürfnisse der Kunden und Stakeholder + \item Pflegt Backlog, definiert, priorisiert Features pro Sprint + \end{itemize*} + \item Scrum Master + \begin{itemize*} + \item Berät das Team, Überprüft Einhaltung von Werten und Techniken, moderiert die Meetings + \item Schützt das Team vor äußeren Störungen + \item Repräsentiert Team gegenüber Management + \end{itemize*} + \item Scrum Team (ca. 5-9 Personen) + \begin{itemize*} + \item Team organisiert sich und die Aufgaben selbst + \item Team bedeutet: Zielgerichtet und funktionsübergreifend arbeiten, gemeinsames Ziel verfolgen, selbstloses Handeln, Teamentscheidungen vertreten + \end{itemize*} + \end{itemize*} + \end{itemize*} + + Sprint Backlog + \begin{itemize*} + \item Für die aktuelle Iteration ausgewählte Aufgaben + \begin{itemize*} + \item Aufgabe nicht länger als 2 Tage Aufwand + \end{itemize*} + \item Team-Mitglieder wählen Tasks aus - keine Zuweisung + \item Restaufwand wird täglich aktualisiert - Burndown Chart + \item Team-Mitglied kann Tasks hinzufügen, löschen, ändern + \item Darstellung an prominenter Stelle + \end{itemize*} + + Daily Meeting + \begin{itemize*} + \item ca. 15 Minuten + \item Kurze Statusmeldung, Was wurde geschafft? Was ist zu tun? Was behindert den Fortschritt? + \item Weiterführende Diskussionen erst im Anschluss + \end{itemize*} + + %![Scrum Vorgehen](Assets/Softwaretechnik1_ScrumVorgehen.png) + + Sprint Review-Meeting + \begin{itemize*} + \item Präsentation des Erreichten (Feature Demo) + \item Product Owner, Kunde usw. geben Feedback + \begin{itemize*} + \item Neue Anforderungen hinzufügen / Neu priorisieren + \item Qualitätsansprüche ändern + \end{itemize*} + \end{itemize*} + + Sprint-Retrospektive + \begin{itemize*} + \item Rückkopplungsschleife + \begin{itemize*} + \item Was war gut und was hat nicht funktioniert? + \item Was kann verbessert werden? + \end{itemize*} + \item Nach jedem Sprint + \item Diskussion der identifizierten Probleme + \item Identifikation von wenigen „Action Items“ + \end{itemize*} + + Burndown Chart + \begin{itemize*} + \item Darstellung der offenen und erledigten Aufwände / Tasks + %\item %![Burndown Chart](Assets/Softwaretechnik1_Burndownchart.png) + \end{itemize*} + + \subsection{Zusammenfassung} + \begin{itemize*} + \item Software-Entwicklungsmethode + \begin{itemize*} + \item Elemente + \begin{itemize*} + \item Darstellung - Notation und Semantik für Modelle, Diagrammtypen, Dokumentvorlagen (Artefakte) + \item Vorgehensmodell - Phasen, Arbeitsschritte + \item Verfahren - Regeln, Anweisungen, Aktivitäten (+Rollen) + \item Werkzeuge + \end{itemize*} + \item Industriestandards: RUP + UML + \item Öffentliche Auftraggeber: V-Modell + \item Firmenintern: eigene Varianten, evtl. projektabhängig + \item Weitere Themen + \begin{itemize*} + \item Reifegradbeurteilung CMMI, SPICE, ISO 9000 + \end{itemize*} + \end{itemize*} + \item Charakterisierung von Vorgehensmodellen + \begin{itemize*} + \item Sequenziell + \begin{itemize*} + \item Teilprozesse strikt nacheinander + \item Keine Änderungen abgeschlossener Artefakte + \end{itemize*} + \item Nebenläufig + \begin{itemize*} + \item Teilprozesse laufen teilweise parallel für bessere Zeitnutzung + \end{itemize*} + \item Dokumentgetrieben + \begin{itemize*} + \item Erstellung von Dokumenten (Artefakte) im Vordergrund + \item Festlegung der Dokumente pro Phase + \end{itemize*} + \end{itemize*} + \item Charakterisierung von Vorgehensmodellen + \begin{itemize*} + \item Iterativ + \begin{itemize*} + \item Definition einer sich wiederholenden Abfolge von Teil-Prozessen bzw. Aktivitäten + \item Schnelles Wiederholen dieser Abfolgen + \end{itemize*} + \item Inkrementell + \begin{itemize*} + \item Definition und Kontrolle des Fortschritts pro Iteration + \item Kleine Erweiterungen + \end{itemize*} + \item Evolutionäres Vorgehen + \begin{itemize*} + \item Schnelle Prototypen + \item Lauffähiger Prototyp jederzeit vorhanden + \item Toolunterstützung (Versionierung) + \end{itemize*} + \end{itemize*} + \item Charakterisierung von Vorgehensmodellen + \begin{itemize*} + \item Ereignisorientiert + \begin{itemize*} + \item Schnelle Reaktion auf Anforderungsänderungen + \item Keine starre Abfolge von Tätigkeiten / Prozessen + \item Voraussetzung: Prozesse laufen parallel ab + \end{itemize*} + \item Architekturzentriert + \begin{itemize*} + \item Starke Gewichtung der Architektur + \item Verwendung von Modellen, Mustern und vorhandenem Wissen + \end{itemize*} + \item Anwendungsgetrieben + \begin{itemize*} + \item Orientierung an den Anwendungsfällen + \item Umsetzen, was einem Anwendungsfall zugeordnet werden kann + \item Anwender steht im Mittelpunkt (User Stories) + \end{itemize*} + \item Risikoorientiert + \begin{itemize*} + \item Risiko der Entwicklung wird in Planung berücksichtigt + \item Risiko- / Nutzen-Analyse + \end{itemize*} + \item Test- / Qualitätsgetrieben + \begin{itemize*} + \item Qualität steht im Vordergrund + \item Test wird während oder sogar vor der Implementierungs-phase erstellt + \end{itemize*} + \item Erweiterbar / Anpassbar (tailoring) + \begin{itemize*} + \item Nur Rahmen des Vorgehens festgelegt + \item Konkretes Vorgehen wird an die Bedürfnisse angepasst + \item Grundlegende Eigenschaft von Vorgehensmodellen + \end{itemize*} + \end{itemize*} + \item Softwareprojekt im Sommersemester + \begin{itemize*} + \item Auswahl aus 3 Vorgehensmodellen + \begin{itemize*} + \item Klassisches Vorgehen + \item Unified Process + \item Agiles Vorgehen + \end{itemize*} + \end{itemize*} + \end{itemize*} + + \section{Projektmanagement} + + Was ist ein Projekt? + \begin{itemize*} + \item Merkmale von Projekten + \begin{itemize*} + \item Zielgerichtetes Vorhaben + \item Einmaligkeit + \item Zeitliche, finanzielle und personelle Rahmenbedingungen + \item Abgrenzung zu anderen Vorhaben + \item Projektspezifische Organisation + \item Komplexität (Unterteilung in abhängige Teilaufgaben nötig) + \end{itemize*} + \item Unsicherheit vor allem in den Frühphasen + \item Risiko durch unbekannte Aufgabe + \end{itemize*} + + Was ist Projektmanagement? + \begin{itemize*} + \item Überbegriff für planende und durchsetzende Aktivitäten zur Vorbereitung und Durchführung eines Projekts + \item Management des Problemlösungsprozesses + \begin{itemize*} + \item Nicht die Lösung selbst, eigene Disziplin + \end{itemize*} + \item Aufgaben + \begin{itemize*} + \item Problemabgrenzung + \item Zielfestlegung, Ablaufplanung + \item Planung und Bereitstellung personeller, finanzieller und sachlicher Ressourcen + \item Führen der Projektgruppe und Koordination der Aktivitäten + \item Steuerung und Überwachung des Projektablaufes + \item Zum großen Teil Planungs- und Kommunikationsleistung! + \end{itemize*} + \end{itemize*} + + \subsection{Projektplanung} + Planung des Projektablaufs + \begin{itemize*} + \item Zunächst wieder: Teile und Herrsche! + \item Projektstruktur + \begin{itemize*} + \item Teilung der Projektaufgabe in Arbeitspakete (work packages) und darin enthaltenen Aktivitäten (activities) + \item Einteilung möglich anhand Produktstruktur, fachlicher Struktur oder Phasenmodell des Entwicklungsprozesses + \end{itemize*} + \item Überblick weiterer Planungsaufgaben + \begin{itemize*} + \item Bestimmen der Abhängigkeiten + \item Ermitteln der nötigen Ressourcen + \item Schätzen der Aufwände + \item Zeitplan aufstellen + \item Meilensteine definieren + \end{itemize*} + \end{itemize*} + %![Projektstruktur](Assets/Softwaretechnik1_Projektstruktur.png) + + Ablaufplanung + \begin{itemize*} + \item Abhängigkeiten (Anordnungsbeziehungen) zwischen Vorgängen A und B: 4 Möglichkeiten + \begin{itemize*} + \item Ende-Anfang (Normalfolge) + \begin{itemize*} + \item B kann begonnen werden, sobald A beendet worden ist + \end{itemize*} + \item Anfang-Anfang (Anfangsfolge) + \begin{itemize*} + \item B kann begonnen werden, sobald A begonnen worden ist + \end{itemize*} + \item Anfang-Ende (Sprungfolge) + \begin{itemize*} + \item B kann beendet werden, sobald A begonnen worden ist + \end{itemize*} + \item Ende-Ende (Endfolge) + \begin{itemize*} + \item B kann beendet werden, sobald A beendet worden ist + \end{itemize*} + \end{itemize*} + \item Netzplantechnik + \begin{itemize*} + \item Planungsarten + \begin{itemize*} + \item Vorwärtsplanung (ab Startzeitpunkt) + \item Rückwärtsplanung (ab gewünschtem Projektende) + \end{itemize*} + \item Berechnete Daten für Vorgänge + \begin{itemize*} + \item Frühester und spätester Anfangszeitpunkt (FAZ / SAZ) + \item Frühester und spätester Endzeitpunkt (FEZ / SEZ) + \item Pufferzeiten, z.B. freier Puffer (Verzögerung ohne Verschiebung des Nachfolgers), Gesamtpuffer (Verzögerung ohne Gefährdung des Projektendes) + \item Notation unterschiedlich + \end{itemize*} + \item Allgemein + \begin{itemize*} + \item Kritischer Pfad (Verzögerung vergrößert Projektdauer) + \item Kritische Vorgänge: Teil des kritischen Pfades + \end{itemize*} + \end{itemize*} + \end{itemize*} + + Beispiel: + \begin{itemize*} + \item Arbeitspakete laut Pflichtenheft (z.B.: Use Case) + \item Aufgaben festlegen + \item Abhängigkeiten festlegen + \item Vorwärtsrechnung durchführen + \item Rückwärtsrechnung durchführen + \item Kritischer Pfad und Puffer finden + %\item %![Projektplanung](Assets/Softwaretechnik1_ProjektplanungBeispiel.png) + \end{itemize*} + + Aufwandsschätzung + \begin{itemize*} + \item Aus Erfahrungswerten systematisiert + \item Versuch, wichtige Einflussfaktoren zu erfassen + \begin{itemize*} + \item Metriken für Spezifikationen + \item Komplexität von Teilfunktionen + \item Menge der Funktionen + \item Anpassung durch individuelle Faktoren, z.B. abhängig von Erfahrung in der Projektorganisation + \end{itemize*} + \item Methoden + \begin{itemize*} + \item Function Point Analyse + \item CoCoMo + \end{itemize*} + \end{itemize*} + + \paragraph{Function Point Analyse} + \begin{itemize*} + \item Ursprung IBM Ende 1970er Jahre + \item Funktionsumfang und Schwierigkeitsgrad von Software + \item Verschiedene Verfahren + \begin{itemize*} + \item für Echtzeit- (Full Function Point Method) und „normale“ Software (Int. Function Point User Group, ISO14143) + \end{itemize*} + %\item %![FPA](Assets/Softwaretechnik1_FPA1.png) + \item Jeweils Anzahl x Gewicht + \item Summe aller Werte = Unadjusted Function Points (UFP) + \item Function Points = UFP x EG + \item Einflussgrad EG = 1 + 0.01 x SummeEinflussfaktoren + \item Einflussfaktoren: Einfluss auf Anwendungsentwicklung + %\item %![FPA2](Assets/Softwaretechnik1_FPA2.png) + \item Berechnung der Personen-Monate aus Erfahrungen vorangegangener Projekte + \begin{itemize*} + \item Aufwand, der von einer Person in einem Monat unter Idealbedingungen erledigt werden kann + \end{itemize*} + \item Umrechnung mit Tabelle (nichtlinearer Verlauf) + %\item %![FPA3](Assets/Softwaretechnik1_FPA3.png) + \end{itemize*} + + \paragraph{CoCoMo II} + \begin{itemize*} + \item Constructive Cost Model [Boehm2000] + \item Ausgangspunkt: geschätzte Anzahl Zeilen Quellcode + \begin{itemize*} + \item SLOC, source lines of code (zB. aus UFP schätzen) + \end{itemize*} + \item Aufwand Personen-Monate (PM) $PM = A * Size^E \prod_{i=1}^n EM$ mit $E=B+0,01*\sum_{j=1}^5 SF_j$ + \item Faktoren $A=2.94$ und $B=0.91$ (anpassbare Koeffizienten) + \item Effort multiplier $EM: n=6..16$, Tabelle nach Boehm + \begin{itemize*} + \item Beispiele: Komplexität, Wiederverwendbarkeit, ... + \item Werte $0,7 .. 3,0$ + \end{itemize*} + \item Scale factor SF: Fünf Einflüsse auf Rentabilität der Softwareentwicklung + \item Notwendige Entwicklungszeit (time to develop) $TDEV = C * PM^F$ mit $F = D + 0,2 * ( E - B )$ + \item Faktoren $C=3,67$ und $D=0,28$, anpassbar + \item Ressourcenplanung %![Ressourcenplanung](Assets/Softwaretechnik1_Ressourcenplanung.png) + \item Zeitplanung + \begin{itemize*} + \item Zeitplan aus Abhängigkeiten, Aufwänden und Ressourcen sowie festen Terminen + \item Darstellung als Gantt-Chart / Balkendiagramm + \end{itemize*} + \end{itemize*} + + \subsection{Projektdurchführung} + Projektorganisation + \begin{itemize*} + \item Teilnehmer: Personen, Rollen, Verantwortung, Teams + \item Linienorganisation: + \begin{itemize*} + \item hierarchisch %![hierarchisch](Assets/Softwaretechnik1_Organisation_hierarchisch.png) + \item Matrixorganisation %![matrix](Assets/Softwaretechnik1_Organisation_matrix.png) + \item Reine Projektorganisation: Mitarbeiter werden aus Organisation herausgelöst und Projektleiter unterstellt + \end{itemize*} + \end{itemize*} + + Projektmanager - Rolle und Aufgaben + \begin{itemize*} + \item Planung, Start, Kontrolle und Beenden des Projekts + \item Schnittstelle zur Umgebung des Projekts + \begin{itemize*} + \item Kunden, Unterauftragnehmer, interne Kontakte, Verträge + \end{itemize*} + \item Team zusammenstellen und steuern + \begin{itemize*} + \item 5-7 Mitglieder gemischter Qualifikation + \item Team von äußeren Aufgaben abschirmen + \item Teilaufgaben definieren, vergeben und koordinieren + \item Fortschritt kontrollieren und Probleme beseitigen + \end{itemize*} + \item Weitere Ressourcen bereitstellen + \item Notwendige Planänderungen erkennen und reagieren + \item Wichtiger Dienstleister für den Projekterfolg + \end{itemize*} + + Projektstart + \begin{itemize*} + \item Nach Abschluss der Planungsphase + \item Festlegung von ... + \begin{itemize*} + \item Arbeitsstil und interne Organisation + \item Aufgabenverteilung und Themen-Verantwortung + \item Erste Aufgaben, Verantwortliche und Termine + \item Einigung über Meilensteine und Termine + \item Art und Termine der Projekttreffen + \item Informationen und Kommunikationswege + \item Technische Infrastruktur (Versionskontrollsystem, Entwicklungsumgebung, Dokumentverwaltung, Rechnerzugang, verwendete PM-Software usw.) + \end{itemize*} + \item Starttreffen des Projekts (kick-off meeting) + \end{itemize*} + + Meetings / Projekttreffen + \begin{itemize*} + \item Regelmäßige Abstimmung der Projektteilnehmer + \begin{itemize*} + \item Außerdem zu wichtigen Meilensteinen + \end{itemize*} + \item Inhalt und Ablauf: geplant (Tagesordnung), Moderator + \begin{itemize*} + \item Protokoll des letzten Treffens korrekt? + \item Aktueller Stand + \item Bericht über individuelle Aufgaben + \item Planung des nächsten Termins + \end{itemize*} + \item Protokoll + \begin{itemize*} + \item Datum, Zeit, Ort, Teilnehmer, Moderator + \item Bezeichnung + \item Tagesordnung mit einzelnen Punkten + \item Kurz und knapp, neutral bei Diskussionen! + \end{itemize*} + \end{itemize*} + + Fortschrittskontrolle + \begin{itemize*} + \item Meilensteine + \begin{itemize*} + \item Klar definiertes Zwischenresultat zur Beurteilung des Projektfortschritts + \item Beispiele: Feinentwurfsdokument fertiggestellt und an Auftraggeber übergeben oder Paket XYZ implementiert und fertig getestet + \end{itemize*} + \item Besprechung in Projekttreffen + \begin{itemize*} + \item Besprechung des Status jedes Meilensteins / jeder Aufgabe + \item Welche Aufgaben sind bereits erledigt? + \item Welche Probleme sind aufgetreten / gelöst? + \item Verbleibender Aufwand - Terminverschiebung nötig? + \item Planung der nächsten Schritte (Aufgabe, Verantwortlicher, Termin) + \end{itemize*} + \end{itemize*} + + Meilenstein-Trendanalyse + \begin{itemize*} + \item Technik zur Fortschrittskontrolle + \item Überwachung des Projektfortschritts zur Erkennung von Terminverzögerungen + \item Bei Verzögerungen: + \begin{itemize*} + \item Ressourcen erhöhen + \item Termine verschieben + \item Funktionen reduzieren + \end{itemize*} + \end{itemize*} + + Wie viel Planung? + \begin{itemize*} + \item Planung ist wichtig, aber nicht übertreiben! + \item Aufwand und Detaillierungsgrad der Planung an Projektgröße und „echten“ Aufwand anpassen + \item Pläne müssen sich ändern können! + \begin{itemize*} + \item Projekte sind einmalig und daher unvorhersehbar + \end{itemize*} + \item Adaptiv planen: nächste Aufgaben genau, spätere grob + \item Einsatz von Projektmanagement-Software + \item Projektende + \begin{itemize*} + \item Abschlusstreffen + \item Bewertung von Ergebnis und Organisation - was kann in Zukunft besser gemacht werden? + \end{itemize*} + \end{itemize*} + +\end{multicols} + +\end{document} \ No newline at end of file diff --git a/Softwaretechnik - MindMap.pdf b/Softwaretechnik - MindMap.pdf deleted file mode 100644 index f6d961ee0d6549a7b356cdc3032b2f707d44a6ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178999 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

(*w?1$T4 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 Q3M&H>Gzp1_oGA4F0B(}5R{#J2 diff --git a/Softwaretechnik - MindMap.tex b/Softwaretechnik - MindMap.tex deleted file mode 100644 index c6dc9e9..0000000 --- a/Softwaretechnik - MindMap.tex +++ /dev/null @@ -1,402 +0,0 @@ -\documentclass{article} -\usepackage[utf8]{inputenc} -\usepackage{tikz} -\usetikzlibrary{mindmap} - -\pagestyle{empty} -\begin{document} - -\begin{tikzpicture}[mindmap, grow cyclic, every node/.style=concept, concept color=orange!40, - level 1/.append style={level distance=5cm,sibling angle=120}, - level 2/.append style={level distance=3cm,sibling angle=45}] - - \node{Modell} - child { node {Beschreibung eines Ausschnitts der Realität}} - child { node {Modelle} - child { node {Analysemodell}} - child { node {Entwurfsmodell}} - child { node {Implementierung (-smodell)}} - child { node {Vorgehensmodell}} - child { node {Produktmodell}} - child { node {Dokumentation, Alternativen-Auswahl}} - } - child { node {für} - child { node {Sichten}} - child { node {Funktionen}} - child { node {Daten}} - child { node {Algorithmen}} - child { node {Systemumgebung}} - child { node {Dynamisches Verhalten}} - child { node {Objektorientierte Modelle}} - }; -\end{tikzpicture} - - -\begin{tikzpicture}[mindmap, grow cyclic, every node/.style=concept, concept color=orange!40, - level 1/.append style={level distance=5cm,sibling angle=72}, - level 2/.append style={level distance=3cm,sibling angle=45}] - - \node{Klassische Modelle} - child [concept color=blue!30]{ node {Funktionen} - child { node {Funktionsbaum} - child { node {Hierarchische Dekomosition der Fkt}} - child { node {nummerieren der Ebenen/Funktionen möglich}} - child { node {Bsp: Abonnement Verwaltung}} - } - child { node {Blockschaltbild} - child { node {eingebettetes System, HW/SW}} - } - } - child { node {Daten} - child { node {Data Dictionary} - child { node {Verzeichnis von Daten mit Strukturinformationen}} - child { node {Backus-Naur-Form, kontextfreie Grammatik}} - } - child { node {Entity Relationship Diagram} - child { node {Daten und ihre Beziehungen}} - } - } - child { node {Systemumgebung} - child { node {Datenflussdiagramm} - child { node {Fluss und Transformation von Daten zwischen Funktionen, Speichern und Schnittstellen}} - child { node {kein Kontrollfluss}} - } - } - child { node {Algorithmen} - child { node {Entscheidungstabelle} - child { node {Regelbasierte Beschreibung}} - child { node {Bedingung}} - child { node {Aktionen}} - child { node {Reduktionsregeln}} - } - child { node {Pseudocode} - child { node {von Programmiersprache abstrahierende, detaillierte Beschreibung eines Algorithmus}} - } - child { node {Programmablaufplan} - child { node {Grafische Beschreibung des Kontrollflusses}} - child { node {DIN 66001}} - child { node {Unstrukturiert}} - } - child { node {Struktogramm} - child { node {Nassi-Shneidermann-Diagramm}} - child { node {keine Sprünge}} - } - } - child { node {Dynamisches Verhalten} - child { node {diskrete Zustände und atomare Zustandübergänge}} - child { node {Zustandsautomat} - child { node {Verhalten mit Zuständen und -übergängen}} - child { node {Automatenmodelle und -theorie}} - child { node {Ggf zerlegung oder kommunizierende Automaten}} - } - child { node {Flow-Chart}} - child { node {Ereignisgesteuerte Prozesskette (EPK)} - child { node {Geschäftsprozesse}} - child { node {BPM}} - } - child { node {Petri-Netz (ggf. mit Zeitmodell)} - child { node {Grafische Beschreibung von Nebenläufigkeit und Synchronisation}} - } - } - child { node {Objektorientierte Modelle} - child { node {Klassendiagramme}} - child { node {UML}} - }; -\end{tikzpicture} - -\begin{tikzpicture}[mindmap, grow cyclic, every node/.style=concept, concept color=orange!40, - level 1/.append style={level distance=5cm,sibling angle=90}, - level 2/.append style={level distance=3cm,sibling angle=45}] - - \node{Objektorientierung} - child { node {Grundprinzip: Teile und Herrsche}} - child { node {ein System besteht aus vielen Objekten}} - child { node {ein Objekt hat} - child { node {definiertes Verhalten}} - child { node {inneren Zustand}} - child { node {eindeutige Identität}} - } - child { node {Klasse} - child { node {Gleichartige Objekte mit ggf. verschiedenen Zuständen}} - child { node {Verhaltensschema – Operationen}} - child { node {Innere Struktur – Attribute}} - } - child { node {Vorteile} - child { node {Zuständigkeitsbereiche} - child { node {Daten, Operationen und Zustand: lokal und gekapselt}} - } - child { node {Klare Schnittstellen} - child { node {Definiertes Objektverhalten, Nachrichten}} - } - child { node {Hierarchie} - child { node {Vererbung und Polymorphie (Spezialisierung), Klassenschachtelung}} - } - child { node {Baukastenprinzip} - child { node {Benutzung vorgefertigter Klassenbibliotheken}} - child { node {Anpassung durch Spezialisierung (mittels Vererbung)}} - } - }; -\end{tikzpicture} - -\begin{tikzpicture}[mindmap, grow cyclic, every node/.style=concept, concept color=orange!40, - level 1/.append style={level distance=5cm,sibling angle=90}, - level 2/.append style={level distance=3cm,sibling angle=45}] - - \node{UML (Unified Modeling Language)} - child { node {Use-Case-Diagramm} - child { node {Beschreiben Systemfunktion aus Benutzersicht (Was, nicht Wie)}} - child { node {Erste Anforderungsspezifikation (requirements)}} - child { node {Planbare Einheiten als Inkremente für die Entwicklung}} - child { node {Keine Modellierung eines Ablaufs!}} - child { node {Erstellen von Testfällen (test case generation)}} - child { node {Grundelemente} - child { node {Anwendungsfall: Use Case}} - child { node {Beteiligte: Aktor}} - } - child { node {Verfeinerung mittels Use-Case-Realisierung notwendig} - child { node {Textuelle Beschreibung}} - child { node {Verhaltensdiagramme}} - } - } - child { node {Klassendiagramm} - child { node {Modellierung der Struktur (Aufbau) eines Systems}} - child { node {Modellierung von statischen Aspekten}} - child { node {Modellierung der Struktur von Daten}} - child { node {Klasse im Mittelpunkt} - child { node {Aufbau: Attribute, Operationen}} - child { node {Beziehungen zueinander: Assoziationen, Vererbung}} - } - child { node {Verbreitetstes und bekanntestes Diagramm der UML}} - } - child { node {Objektdiagramm} - child { node {Struktur des Systems zur Laufzeit zu einem Zeitpunkt}} - child { node {Tatsächliche Zusammenhänge und Belegungen von Attributen von Objekten zu einem Zeitpunkt}} - child { node {Eine detaillierte Sicht auf einen Aspekt} - child { node {Keine vollständige Beschreibung (zu komplex)}} - child { node {Für kompliziertere Abhängigkeiten (z.B. Rekursion)}} - } - child { node {Objektdiagramm für alle Arten von Exemplaren} - child { node {z.B.: Klasse (Objekt), Komponente, Knoten, ...}} - } - child { node {Keine Exemplare von Operationen -> Ablauf -> Verhaltensdiagramme / Interaktionsdiagramme}} - child { node {Kein Verlauf der Wertebelegung über die Zeit}} - } - child { node {Paketdiagramm} - child { node {Gliederung (Strukturierung) des Systems in Teile (Pakete)}} - child { node {Zuordnung von Elementen zu einem Paket}} - child { node {Bildung von Hierarchien (Enthält-Beziehung)}} - child { node {Abhängigkeiten zwischen den Paketen} - child { node {"Include" von Quellcode-Dateien (<>)}} - } - child { node {Anwendung:} - child { node {Zum Grobentwurf von Systemen}} - child { node {Definition von Schichten}} - } - } - child { node {Komponentendiagramm} - child { node {Strukturierung des Systems durch Komponenten}} - child { node {Komponente: Modulare, austauschbare Einheit (Substitution)}} - child { node {Modellierung der Abhängigkeiten zwischen Komponenten}} - child { node {Modellierung der inneren Struktur von Komponenten}} - child { node {Definition von Schnittstellen}} - } - child { node {Kompositionsstrukturdiagramm} - child { node {Teile-Ganzes-Strukturen -> Kompositionsstruktur}} - child { node {Strukturell statische Kompositionsstrukturen:} - child { node {Kurzschreibweise bei vielen Kompositionen}} - child { node {Modellierung des Aufbaus komplexer Systeme}} - } - child { node {Strukturell dynamische Kompositionsstrukturen:} - child { node {Notwendige Strukturen zur Realisierung eines Verhaltens}} - child { node {Definition von Rollen, zur Lösung wiederkehrender Probleme -> Modellierung von Mustern}} - } - child { node {Starke Verwandtschaft mit dem Klassendiagramm}} - child { node {Spezialisierte Kompositionsbeziehung -> erweiterte Semantik}} - } - child { node {Aktivitätsdiagramm} - child { node {Modellierung von} - child { node {Kontrollflüssen}} - child { node {Datenflüssen}} - child { node {Parallelem Verhalten}} - child { node {Verzweigungen, bedingten und gewichteten Abläufen}} - } - child { node {Geschäftsprozessmodellierung möglich}} - child { node {Abstrakte und detaillierte Verhaltensbeschreibung möglich}} - child { node {Grundlage zur Codegenerierung}} - child { node {Zur Verfeinerung von} - child { node {Use-Cases}} - child { node {Operationen / Interaktionen}} - child { node {anderen Aktionen und Aktivitäten}} - } - } - child { node {Interaktionsdiagramme} - child { node {Modellierung von} - child { node {Kommunikation zwischen Kommunikationspartnern (Lebenslinie)}} - child { node {Operationen (Modellierung eines Programms)}} - child { node {Informationsaustausch / Nachrichten}} - } - child { node {Gemeinsames Grundkonzept der Interaktionsdiagramme}} - child { node {Sehr detaillierte Diagramme} - child { node {Meist nicht zur vollständigen Beschreibung eines Systems}} - child { node {Betrachtung eines wichtigen Teilaspekts}} - } - child { node {Grundlage zur Codegenerierung}} - } - child { node {Sequenzdiagramm} - child { node {Genaue zeitliche Abfolge von Nachrichten}} - child { node {Umfangreichstes Interaktionsdiagramm}} - child { node {Kontrollelemente möglich (Schleifen, Verzweigungen)}} - child { node {Nachrichten ohne Sender} - child { node {z.B. am Beginn einer Interaktion}} - } - child { node {Verlorene Nachrichten (ohne Empfänger)} - child { node {Nachricht ohne dargestellten Empfänger}} - child { node {z. B. am Ende einer Interaktion}} - } - child { node {Erzeugen von Lebenslinien} - child { node {Gestrichelte Linie mit geöffnetem Pfeil}} - child { node {Keine Rückgabenachricht}} - child { node {Zeitliche Einrückung des Rechtecks}} - } - child { node {Zerstören von Lebenslinien} - child { node {Durchgezogene Linie mit Dreieckende}} - child { node {Kann Rückgabenachricht erzeugen}} - } - } - child { node {Kommunikationsdiagramm} - child { node {Kommunikationsbeziehungen der Kommunikationspartner stehen im Vordergrund}} - child { node {Welche Komponenten arbeiten wie zusammen, um eine Funktion zu erfüllen}} - } - child { node {Timing-Diagramm} - child { node {Genaue zeitliche Darstellung von Zustandsübergängen}} - child { node {Kommunikation abhängiger Zustandsautomaten}} - child { node {Modellierung einzelner Interaktion}} - child { node {Zeitlicher Verlauf senkrecht}} - child { node {Kommunikationspartner waagerecht (unsortiert)}} - child { node {Lebenslinie} - child { node {Rechteck mit gestrichelter senkrechter Linie}} - child { node {Start, Ende und Dauer der Ausführung einer Operation}} - child { node {Rekursive Aufrufe möglich}} - } - child { node {Ereignisspezifikation} - child { node {Stelle des Sendens / Empfangens der Nachricht}} - child { node {Definition der Reihenfolge des Auftretens}} - child { node {Trace: Folge von Sende-und Empfangsereignissen}} - } - child { node {Nachrichten in Interaktionsdiagrammen} - child { node {Ereignis des Sendens bzw. Empfangens von Nachrichten}} - child { node {Typen:} - child { node {Operationsaufruf (synchron / asynchron)}} - child { node {Antwort Nachricht}} - child { node {Signal (asynchron), Create-/ Delete Message}} - } - child { node {Operationsaufruf: Parameterliste muss kompatibel sein}} - child { node {Nachrichtentypen}} - } - } - child { node {Zustandsdiagramm} - child { node {Modellierung des (vollständigen?) Verhaltens} - child { node {Zustände von Klassen / Objekten / Komponenten}} - child { node {Übergänge zwischen den Zuständen}} - child { node {Ereignisse, die Zustandswechsel auslösen}} - } - child { node {Modellierung von endlichen Automaten (Zustandsmaschinen)} - child { node {Deterministische}} - child { node {Nichtdeterministische}} - } - child { node {Verfeinerung von Zuständen möglich}} - child { node {Modellierung von verteilten Systemen / parallelem Verhalten}} - child { node {Grundlage zur Codegenerierung}} - }; -\end{tikzpicture} - -\begin{tikzpicture}[mindmap, grow cyclic, every node/.style=concept, concept color=orange!40, - level 1/.append style={level distance=5cm,sibling angle=90}, - level 2/.append style={level distance=3cm,sibling angle=45}] - -\node{Analyse} -child { node {Anforderungen} - child { node {Funktional} - child { node {Was leistet das System}} - child { node {Welche Funktionen bietet es}} - child { node {Wie interagiert es mit der Umgebung}} - } - child { node {Nicht-Funktional} - child { node {qualitative oder quantitative Eigenschaften}} - child { node {Hängen oft von Verhalten ab}} - } - child { node {Arten der Funktionalität (ISO 9126)} - child { node {Functionality (Funktionalität)} - child { node {Angemessen}} - child { node {Genauigkeit}} - child { node {Sicherheit} - child { node {Vertraulichkeit}} - child { node {Informationssicherheit}} - child { node {Datenintegrität}} - child { node {Verfügbarkeit}} - } - } - child { node {Usability (Benutzbarkeit)} - child { node {Verständlichkeit}} - child { node {Erlernbarkeit}} - child { node {Bedienbarkeit}} - child { node {Attraktivität}} - } - child { node {Reliability (Zuverlässigkeit)} - child { node {Reife (Fehler-Anzahl)}} - child { node {Fehlertoleranz}} - child { node {Wiederherstellbarkeit}} - } - child { node {Performance (Effizienz)} - child { node {Zeitverhalten}} - child { node {Verbrauchsverhalten}} - child { node {Wirtschaftlichkeit}} - } - child { node {Portability (Übertragbarkeit)} - child { node {Anpassbarkeit}} - child { node {Installierbarkeit}} - child { node {Koexistenz}} - child { node {Austauschbarkeit}} - } - child { node {Supportability (Änderbarkeit/ Wartbarkeit)} - child { node {Analysierbarkeit}} - child { node {Änder-und Erweiterbarkeit}} - child { node {Stabilität (bei Änderungen)}} - child { node {Testbarkeit}} - } - child { node {Weitere} - child { node {Konformität zu Konventionen und Bestimmungen}} - child { node {Interoperabilität zu anderen Systemen}} - child { node {Implementierungsanforderungen}} - child { node {Schnittstellenanforderungen}} - child { node {Skalierbarkeit (Änderungen des Problemumfangs)}} - child { node {Betriebliche und rechtliche Rahmenbedingungen}} - child { node {Liefer-und Verpackungsanforderungen}} - } - } -} -child { node {Randbedingungen} - child { node {Werden nicht umgesetzt}} - child { node {Schränken Lösungsraum ein}} - child { node {Beispiele:} - child { node {Kosten}} - child { node {Durchlaufzeit: Time to Market}} - child { node {Vorgaben durch Marketing und Vertrieb}} - child { node {Technische Randbedingungen (nichtfunktionale Anforderung)}} - } -} -child { node {Geforderte (Meta-)Eigenschaften} - child { node {Vollständig}} - child { node {Konsistent}} - child { node {Eindeutig}} - child { node {Korrekt}} - child { node {Realistisch}} - child { node {Überprüfbar}} - child { node {Rückverfolgbar}} - child { node {Klassifizierbar (Risiko, Priorität, Dringlichkeit, Nutzen ...)}} - child { node {Validierung mit dem Kunden}} -} -; -\end{tikzpicture} - -\end{document}