\chapter{Einleitung}

\section{Zweck}

Dieses Dokument beschreibt den Entwicklungsprozess nach dem wir in unserem Projekt vorgehen.


\section{Definitionen und Abkürzungen}

Die verwendeten Begriffe sind im Projekt-Glossar erklärt. Bei Bedarf kann dort nachgeschlagen werden.

\textbf{Workflow}
Aufeinander folgende Aktivitäten die ein messbares Ergebnis erzeugen.
%The sequence of activities performed in a business that produces a result of observable value to an individual actor of the business.

\textbf{Entwicklungsprozess}
Definiertes Vorgehensmodell zur Erstellung einer Software. Ein Entwicklungsprozess soll die Softwareentwicklung übersichtlicher gestalten und die Komplexität beherrscbar machen.

\textbf{Zyklus}
Ein kompletter Durchlauf der vier Phasen: Konzeption (Inception), Entwurf (Elaboration), Konstruktion (Construction) und Übergabe (Transition).
%One complete pass through the four phases: inception, elaboration, construction and transition. The span of time between the beginning of the inception phase and the end of the transition phase.

\textbf{Iteration}
Eine geplante Abfolge von Aktivitäten mit einem messbaren Ergebnis, die in einem Release enden (intern oder extern).
%A distinct sequence of activities with a base-lined plan and valuation criteria resulting in a release  (internal or external).

\textbf{Phase}
Die Zeit zwischen zwei bedeutenden Projekt-Meilensteinen. Während einer Phase werden, eine festgelegte Menge an Aufgaben bearbeitet, Artefakte erstellt und die Entscheidung gefällt, ob man in die nächste Phase einsteigt, oder nicht.
%The time between two major project milestones, during which a well-defined set of objectives is met, artifacts are completed, and decisions are made to move or not move into the next phase.

\textbf{RUP}
Der Rational Unified Process (RUP) ist ein objektorientiertes Vorgehensmodell zur Softwareentwicklung und ein kommerzielles Produkt der Firma Rational Software. Der RUP ist ein iterativer Entwicklungsprozess.


\textbf{Iterativer Entwicklungsprozess}
Ein Entwicklungsprozess, der in Iterationen unterteilt ist. Dies ermöglicht Flexibilität, Risiken werden frühzeitig erkannt und es wird berücksichtigt, dass sich Anforderungen während eines Projektes oftmals ändern.

\textbf{Manntag}
Ein Manntag ist die Menge an Arbeit, die eine Person durchschnittlich an einem Arbeitstag (8 Stunden) schafft. Man verwendet diesen Begriff, um Schätzungen für die Gesamtmenge an Arbeit für die Erledigung einer Aufgabe zu errechnen.

\textbf{Release}
%Die fertige und veröffentlichte Version einer Software wird als Release bezeichnet.
%A subset of the end-product that is the object of evaluation at a major milestone. A release is a stable, executable version of product, together with any artifacts necessary to use this release, such as release notes or installation instructions. A release can be internal or external. An internal release is used only by the development organization, as part of a milestone, or for a demonstration to users or customers. An external release (or delivery) is delivered to end users. A release is not necessarily a complete product, but can just be one step along the way, with its usefulness measured only from an engineering perspective. Releases act as a forcing function that drives the development team to get closure at regular intervals, avoiding the "90\% done, 90\% remaining" syndrome. See also prototype, baseline.


\section{Verweise}






%%%%%%%%%%%%%%
\chapter{Entwicklungsprozess}
\section{Überblick}

Wir werden unser Projekt nach dem Rational Unified Process (kurz RUP) entwickeln.

Der RUP ist ein dynamischer und iterativer Entwicklungsprozess, der das Projekt in zwei Dimensionen betrachtet.
Er ist ausführlich spezifiziert und umfangreich dokumentiert. (http://www-306.ibm.com/software/awdtools/rup/).

An sich ist der RUP für große Projekte, mit vielen Mannjahren, ausgelegt. Wir haben uns trotzdem für den RUP entscheiden, da wir ihn in der Vorlesung Softwaretechnik 1 ausführlich behandelt hatten und wir dieses Theoriewissen nun in der Praxis anwenden wollen.


\section{Anpassungen}

Es gilt also diesen mächtigen und umfangreichen Entwicklungsprozess für unser klares Projekt abzuspecken und anzupassen. Dies ist natürlich nicht ganz einfach, da unsere 85 Manntage realistischerweise eher einer einzelnen Iteration entsprechen, als den drei Zyklen, die wir für uns geplant haben.
Wir werden deshalb ein paar Ungenauigkeiten bei unserem Verhalten im Kauf nehmen; versuchen aber natürlich, uns möglichst nah an die Leitlinie RUP zu halten.

Wir werden drei Zyklen des Projekts durchführen. Insgesamt soll das Projekt sechs Zyklen umfassen, von denen die letzten drei Zyklen aber nur grob geplant werden.
Jeder Zyklus wird circa vier Wochen umfassen (18 Manntage). An dessen Ende ein Release steht.
Iterationen innerhalb der Zyklen werden wir, aufgrund der kurzen Zyklen, außen vor lassen.

Die einzelnen Phasen (zweite Dimension) in den Zyklen versuchen wir, so gut es geht, zu berücksichtigen.






\chapter{Projektplanung}

siehe \emph{Projektplan} diesbezüglich





\chapter{Kern-Workflows}


\subsection{Geschäftsprozessmodellierung}
(Business Modeling)

Dokumentation der relevanten Geschäftsprozesse in Use Cases, mit dem Ziel eines gemeinsamen Verständnisses zwischen Entwicklern und Anwendern.

\paragraph{Artefakte}
\begin{itemize}
	\item Glossary
	\item Use-Case
	\item Use-Case Model
	\item Vision
\end{itemize}



\subsection{Anforderungen}
(Requirements)

Ermitteln, was das System leisten soll. Die funktionalen Anforderungen sollen erfasst werden.

\paragraph{Artefakte}
\begin{itemize}
	\item Use-Case
	\item Use-Case Model
	\item Vision
\end{itemize}



\subsection{Analyse \& Design}
(Analysis \& Design)

Aufbau und Technologie des Systems festlegen.

\paragraph{Artefakte}
\begin{itemize}
	\item Software Architecture Document
\end{itemize}



\subsection{Implementierung}
(Implementation)

Systemteile entwickeln und zusammenfügen.

\paragraph{Artefakte}


\subsection{Test}
(Testing)

Funktionsweise des Systems gegen die Anforderungen prüfen.

Da wir eine neue Technologie erkunden, macht Test keinen wirklichen Sinn. Unser Ziel ist es, in kurzer Zeit möglichst viele Bereiche und Möglichkeiten zu erkunden. Dabei würde Testing nur bremsen. Unser Hauptaugenmerk ist es vorran zu kommen, nicht komplett fehlerfreie Ergebnisse zu liefern, deshalb verzichten wir komplett auf diesen Workflow.



\subsection{Verteilung}
(Deployment)

Auslieferung des Systems an den Kunden und Inbetriebnahme. Schulung der Benutzer.

\paragraph{Artefakte}




\section{Unterstützungs-Workflows}

\subsection{Konfigurations- \& Änderungsmanagement}
(Configuration \& Changemanagement)

Verwaltung der zum Projekt gehörenden Daten. Versionierung und Konsistenz.

\paragraph{Artefakte}
\begin{itemize}
	\item Project Repository
\end{itemize}


\subsection{Projektmanagement}
(Projectmanagement)

Zwischen konkurrierenden Zielen vermitteln. Auf Risiken reagieren.

\paragraph{Artefakte}
\begin{itemize}
	\item Software Development Plan
	\item Iteration Plan % FIXME
\end{itemize}


\subsection{Entwicklungsumgebung}
(Environment)

Bereitstellung von Hardware, Software und Know-How.

\paragraph{Artefakte}
\begin{itemize}
	\item Development Case
	\item Tools
	\item User Interface Guidlines % FIXME
\end{itemize}



