% V. 1.0
\documentclass[a4paper,12pt,titlepage,DIV12,parskip]{scrreprt}
\setlength{\parskip}{3mm} %abstand abs\"{a}tze und listen
\usepackage{setspace}
\usepackage[utf8]{inputenc}
\usepackage{ngerman}
\usepackage[pdftex]{graphicx}
\usepackage[table]{xcolor}
%\usepackage{SIunits}
\usepackage{ragged2e,array}
\usepackage{wrapfig}
\usepackage[footnotesize]{caption2}
\usepackage{supertabular}
\usepackage{chngcntr}
\usepackage{longtable}
%\usepackage{lastpage}
\usepackage{caption2}
\usepackage[right]{eurosym}
%\usepackage{float}
\usepackage[ngerman]{varioref}
%\usepackage{enumitem}
\usepackage[colorlinks,linkcolor=black,urlcolor=blue,bookmarks,bookmarksopen,bookmarksnumbered]{hyperref}

%PDF Infos
\pdfinfo{
    /Title      (development-case.tex)
    /Subject    (Development Case)
    %/Creator    (TeX / pdfTeX)
    %/Producer   (Christoph Galler)
    /Author     (markus schnalke)
    /CreationDate   (D:20080113090000)
    /ModDate        (D:20080113090000)
}

%neues Kommando fuer Breitenangabe in der Tabelle mit vorgegebener Breite:
\newcommand{\preserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
\newcolumntype{R}[1]{>{\preserveBackslash\RaggedLeft}p{#1}}
% Font Familie
\renewcommand{\familydefault}{\sfdefault}
%\nofiles
% Fuer tabellenkopf
\newcommand{\hoehe}{\parbox[1pt][2em][c]{0cm}{}}

\definecolor{gray09}{gray}{0.9}
\definecolor{gray07}{gray}{0.7}

%Counternummerierung \"{a}ndern -> 1.1 2.1 3.1 etc.
\counterwithin{section}{chapter}

% Name f\"{u}r autoref bei figure Umgebungen: Abbildung x.z
\renewcommand{\figureautorefname}{Abbildung}
\renewcommand{\chapterautorefname}{Kapitel}
\renewcommand{\sectionautorefname}{Unterkapitel}
\renewcommand{\tableautorefname}{Tabelle}


% Textkoerperhoehe
\setlength{\headsep}{0.6cm}
\addtolength{\textheight}{0.9cm}
\setlength{\footskip}{0.9cm}

% Kopf- und Fu{\ss}zeile
\setlength{\headheight}{2cm}
\usepackage[automark]{scrpage2}
\automark[section]{section}
\setheadwidth{15.8cm}
\ihead{\headmark}
\ihead{Development Case}
\chead{{\color{blue}\color{black}\rule[-10pt]{18.4cm}{0.1pt}\color{black}}}
\ohead{\headmark}
\setfootwidth[-74pt]{18.3cm}
\setfootsepline[foot]{.1pt}
\ifoot{\hspace{2.6cm}\footnotesize Gruppe 2: Seminarverwaltungssystem (Topcased)}
\cfoot{}
\ofoot{\footnotesize Seite \thepage} % ~von \pageref{LastPage}}
\renewcommand*{\chapterpagestyle}{scrheadings}
\renewcommand*{\indexpagestyle}{scrheadings}
\pagestyle{scrheadings}

% Kapitel nicht zu tief beginnen
\renewcommand*\chapterheadstartvskip{\vspace*{0cm}}


\begin{document}

%
%   Titelei
%
    \begin{titlepage}
    \vspace*{-0cm}
    {\hspace*{11cm}\includegraphics*[scale=0.5]{pictures/png/logo_hsu_klein}}
    \begin{center}
        \vspace*{1.9cm}
        {\normalsize\textsc{Gruppe 2: Rui Gu, Wei Zhu, Veysel Imamoglu,
Dimitar Dimitrov, \\Karl Oppermann, Nathalie Hrycej, Markus Schnalke,
Christoph Galler}} \par
        \vspace*{0.6cm}
        \large \textbf{Modellgetriebene Softwareentwicklung auf Basis von
TOPCASED am Beispiel eines Seminarverwaltungssystems} \par
        \Huge \textbf{Development Case} \par
        \vspace*{0.8cm}
        {\Large{} \par
        \vspace*{0.7cm}
        {\textsc{Ulm, \today}}} \par
        \vspace*{4.5cm}
        {\normalsize\textsc{Betreut durch: \\
        Prof. Dr. Klaus Baer \\
        Hochschule Ulm \\
        Prittwitzstraße 10\\
        89075 Ulm\\}}
        \end{center}
        \vfill
 \end{titlepage}



%    \addsec{Bitte beachten}
      Version vom \today: Das Dokument befindet sich noch im Aufbau, \"{A}nderungen sind dadurch jederzeit M\"{o}glich.
      \addsec{Version dieses Dokuments}
      \begin{tabular}{|p{1.5cm}|p{3.cm}|p{1.6cm}|p{2cm}|p{1.4cm}|p{4cm}|}
        \hline
        \multicolumn{5}{|l}{\parbox[0pt][3.4em][l]{12cm}{\vspace{0.2cm}\large Dokument: \textbf{Development Case} \newline \emph{ Online-Seminarbuchungssystem}}} & \multicolumn{1}{r|}{\parbox[0pt][3.4em][r]{1.9cm}{\includegraphics*[scale=0.25]{pictures/png/logo_hsu}}} \\
        \hline\hline
        \hoehe{\textbf{Version}} & \textbf{Person} & \textbf{Aktion} & \textbf{Datum} & \textbf{Status} & \textbf{Kommentar} \\
        \hline\hline
        0.1 & Markus Schnalke & E & 2007-11-27 & O & Erste Version \\ \hline
        0.2 & Markus Schnalke & AE & 2008-01-13 & O & Neue Struktur des Dokuments \\ \hline
        0.4 & Markus Schnalke & AE & 2008-01-16 & A & Struktur überarbeitet \\ \hline
        0.4.1 & Karl Oppermann & QS & 2008-01-17 & A & Allgemeines Review \\ \hline
        0.5 & Markus Schnalke & AE & 2008-01-18 & A & Überarbeitung; Fachbegriffe jetzt englisch \\ \hline
        0.5.1 & Veysel Imamoglu & QS & 2008-01-18 & A & Rechtschreibkorrektur \\ \hline
        0.6 & Markus Schnalke & AE & 2008-01-21 & O &  \\ \hline
      \end{tabular}
{\footnotesize\vspace*{-0.1cm}Aktion: E – Erstellung; AE – \"{A}nderung; QS – Review; AB – Abnahme} \par
{\footnotesize\vspace*{-0.4cm} Status: O – Offen; D – Diskussion; A – Akzeptiert}
     \clearpage

    % Inhaltsverzeichnis
    \setcounter{tocdepth}{3}
      %\renewcommand\contentsname{"Uberblick}
    \tableofcontents

    \clearpage




%   Content



\chapter{Einleitung}

\section{Zweck des Dokuments}

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.



\section{Verweise auf andere Artefakte}

\begin{itemize}
	\item \textbf{Software Development Plan}
	\item \textbf{Glossary}
\end{itemize}





%%%%%%%%%%%%%%
\chapter{Entwicklungsprozess}

\section{Überblick}

Wir werden unser Projekt nach dem \emph{Rational Unified Process}$^{\ddagger}$ (kurz RUP) entwickeln.

Der RUP ist ein dynamischer und iterativer Entwicklungsprozess, der das Projekt in zwei Dimensionen (zeitlich und inhaltlich) betrachtet.

An sich ist der RUP für große Projekte, mit vielen Mannjahren, ausgelegt. Für unser kleines Projekt (90 Manntage) ist er eher weniger gut geeignet. Wir haben uns trotzdem für den RUP entschieden, da wir ihn in der Vorlesung ``Softwaretechnik 1'' ausführlich behandelt hatten und wir dieses Theoriewissen nun in der Praxis anwenden wollen.

Wir haben diesen mächtigen und umfangreichen Prozess für unser kleines Projekt abgespeckt und angepasst. Wie unsere Adaptation des RUP genau aussieht, das beschreibt dieses Dokument.


\section{Der RUP auf einen Blick}

Natürlich kann man diesen umfassenden Entwicklungsprozess nicht in einem Bild komplett abbilden, jedoch zeigt die nachfolgende Grafik sehr schön, wie die Entwicklung im Bezug auf die zwei Dimensionen aussieht. Dieser Übersichtplan, soll den Aufbau des Prozesses nochmal ins Gedächtnis rufen.

\begin{figure}[htb]
	\centering
	\includegraphics[width=9cm]{pictures/png/RationalUnifiedProcess.png}
	\caption{Übersicht über einen Zyklus im RUP$^{\ddagger}$ }
	\label{fig:rationalunifiedprocess}
\end{figure}








%%%%%%%%%%%%%%
\chapter{Zeitliche Dimension}

\section{Anpassungen}

Wir werden in unserem Projekt drei Zyklen durchführen. Jeder der drei Zyklen wird circa fünf Wochen (30 Manntage) umfassen. An dessen Ende jeweils ein Release stehen wird. (siehe \emph{Software Development Plan})

Die einzelnen Phasen in den Zyklen versuchen wir, so gut es geht, zu berücksichtigen. Es muss bedacht werden, dass pro Phase bei uns ganz grob nur etwa 4 Manntage (d.h. circa 4 Stunden pro Person) zur Verfügung stehen.

Iterationen innerhalb der Zyklen werden wir, auf Grund der kurzen Zyklen, komplett außen vor lassen.



Ein Beispiel um ein Gefühl für die Größenverhältnisse zu bekommen: Unsere 90 Manntage, entsprechen realistischerweise eher einer einzelnen Iteration, 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 nahe an die Leitlinie RUP zu halten.

%Wir finden es trotzdem wichtig, diesen Prozess zu wählen, weil die theoretischen Inhalte der Vorlesung ``Softwaretechnik 1'' sich erst durch ihre tatsächliche Anwendung im realen Projekt richtig verfestigen können.





\section{Konkrete Projektplanung}

Die konkrete Planung der einzelnen Zyklen und ihrer Meilensteine finden sich im \emph{Software Development Plan}.







%%%%%%%%%%%%%%%%%%%%
\chapter{Inhaltliche Dimension}

In der zweiten Dimension wird festgelegt, \emph{wer} (Rolle), \emph{wie} (Aktivität),  \emph{was} (Artefakt), \emph{wann} (Workflow) macht.



\section{Business Modeling}

\paragraph{Zweck}
Gemeinsames Verständniss zwischen Entwicklern und Anwendern schaffen

\paragraph{Wird erreicht durch}
Dokumentation der relevanten Geschäftsprozesse in Use Cases

%\paragraph{Anpassungen}
%Keine besonderen.

\paragraph{Wer} Fachliches Team, Kunde
\paragraph{Wie} im Gespräch
\paragraph{Was} Glossary

%\paragraph{Artefakte}
%\begin{itemize}
%	\item Glossary
%\end{itemize}



\section{Requirements}

\paragraph{Zweck}
Ermitteln, was das System leisten soll. Die funktionalen Anforderungen sollen erfasst werden.

\paragraph{Anpassungen}
Keine besonderen.

\paragraph{Artefakte}
\begin{itemize}
	\item Vision
	\item Use Cases
\end{itemize}



\section{Analysis \& Design}

\paragraph{Zweck}
Aufbau und Technologie des Systems festlegen. Festlegung wie wird das System realisiert wird.

\paragraph{Anpassungen}
Die Technologie und Teile der Umsetzung sind durch das Projekt vorgegeben und somit fix.

Zum jetzigen Zeitpunkt ist unser hauptsächliches Bestreben, uns in die neue Technologie einzuarbeiten. Was damit dann später architektonisch möglich ist, und wo Grenzen sitzen, ist noch unklar. Unsere Umsetzung dieses Workflows ist deshalb noch recht weitläufig und frei. Sobald unsere Kenntnis über die Möglichkeiten der Technologie groß genug ist, wird dieser Workflow zunehmend an Bedeutung gewinnen.

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




\section{Implementation}

\paragraph{Zweck}
Systemteile entwickeln und zusammenfügen. Komponententests.

\paragraph{Anpassungen}
In dieser frühen Phase des Projekts besteht dieser Workflow in erster Line aus der Entwicklung von Prototypen jeder Art (Modelle, Templates, etc). Mit diesen wollen wir die Technologie erforschen.

Konkrete Artefakte werden nicht erstellt, weil es zum jetzigen Stand nicht sinnvoll wäre nach festen Plänen vorzugehen. Unser Kenntnissstand ändert sich sehr schnell und wir wollen flexibel reagieren können.

\paragraph{Artefakte}
Momentan keine.



\section{Testing}

\paragraph{Zweck}
Test des Zusammenspiels der Komponenten. Funktionsweise des Systems gegen die Anforderungen prüfen.

\paragraph{Anpassungen}
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 voran zu kommen, nicht komplett fehlerfreie Ergebnisse zu liefern, deshalb verzichten wir komplett auf diesen Workflow. So können wir die dadurch verfügbaren Ressourcen an anderer Stelle effektiv nutzen.

Dies heißt aber keineswegs, dass wir ihn zum geeigneten Zeitpunkt nicht voll ausbauen werden.

\paragraph{Artefakte}
Noch keine.



\section{Deployment}

\paragraph{Zweck}
Auslieferung des Systems an den Kunden und Inbetriebnahme. Schulung der Benutzer.

\paragraph{Anpassungen}
Auch hier sparen wir um dafür die Entwicklung voran zu treiben.

\paragraph{Artefakte}
\begin{itemize}
	\item Release Notes (empfohlen) %FIXME rechtschreibung
\end{itemize}





\section{Configuration \& Changemanagement}

\paragraph{Zweck}
Verwaltung der zum Projekt gehörenden Daten. Versionierung und Konsistenz.

\paragraph{Anpassungen}
Alle Daten müssen im Project Repository abgelegt werden. Dieses soll die zentrale Informationsstelle sein.

Jeder Mitarbeiter darf an jeder Stelle des Projekts Änderungen durchführen.

% FIXME: Inhalte für Karl einfügen

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



\section{Projectmanagement}

\paragraph{Zweck}
Zwischen konkurrierenden Zielen vermitteln. Auf Risiken reagieren.

\paragraph{Anpassungen}
Keine besonderen.

\paragraph{Artefakte}
\begin{itemize}
	\item Software Development Plan
	\item Risklist
\end{itemize}



\section{Environment}

\paragraph{Zweck}
Bereitstellung von Hardware, Software und Know-How.

\paragraph{Anpassungen}
Keine besonderen.

\paragraph{Artefakte}
\begin{itemize}
	\item Development Case
\end{itemize}













    \appendix
    %\chapter{Glossar}
    \chapter{Quellen}
			\begin{itemize}
				\item Dokumentation zum \emph{Rational Unified Process} \\ (\texttt{http://www-306.ibm.com/software/awdtools/rup/})
				\item Skript von Herrn Baer zur Vorlesung \emph{Softwaretechnik 1} an der Hochschule Ulm
				\item http://wikipedia.org
				\item \emph{Rational Unified Process - Best Practices for Software Development Teams}
			\end{itemize}

			$\ddagger{}$ The image \ref{fig:rationalunifiedprocess} is from the Rational Unified Process (software product) version 2003.06.12.01. This image and the names ``Rational Unified Process'' and ``RUP'' are copyright by Rational Software Corporation, now a division of IBM.



\end{document}




%%%%%%%% HowTo %%%%%%%%%%

% picture block
\begin{figure}[h]
 \includegraphics[scale=0.65]{pictures/png/logistiksicht_v6}
 \caption{Logistiksicht für SAP}
 \label{fig:logistiksicht}
\end{figure}

% picture inline
\begin{wrapfigure}[11]{r}[0pt]{6.4cm}
 \centering %OPTIONAL
 \includegraphics[scale=0.7]{pictures/png/werkdresden}
 \caption{OptiBoard Werk Dresden}
\end{wrapfigure}

% tabellen
\begin{table}[h]
\centering
\begin{tabular}{p{4cm}|p{3cm}|p{3.3cm}}
 \rowcolor{gray07} \textbf{Teil} & \textbf{Menge} & \textbf{Einheit}\\
 \hline
 \rowcolor{white}  LED-Block          & 105 & Stück\\
 \rowcolor{gray09} Feder              & 105 & Stück\\
 \rowcolor{white}  Platine            & 1   & Stück\\
 \rowcolor{gray09} Chip               & 1   & Stück\\
 \rowcolor{white}  Kabel              & 1   & Stück\\
 \rowcolor{gray09} Kunststoffgranulat & 350 & Gramm\\
\end{tabular}
\caption{Mengenübersichtstückliste OptiBoard Pro}
\label{tbl:mengenPro}
\end{table}
