meillo@0: % V. 1.0 meillo@0: \documentclass[a4paper,12pt,titlepage,DIV12,parskip]{scrreprt} meillo@0: \setlength{\parskip}{3mm} %abstand abs\"{a}tze und listen meillo@0: \usepackage{setspace} meillo@0: \usepackage[utf8]{inputenc} meillo@0: \usepackage{ngerman} meillo@0: \usepackage[pdftex]{graphicx} meillo@0: \usepackage[table]{xcolor} meillo@0: %\usepackage{SIunits} meillo@0: \usepackage{ragged2e,array} meillo@0: \usepackage{wrapfig} meillo@0: \usepackage[footnotesize]{caption2} meillo@0: \usepackage{supertabular} meillo@0: \usepackage{chngcntr} meillo@0: \usepackage{longtable} meillo@0: %\usepackage{lastpage} meillo@0: \usepackage{caption2} meillo@0: \usepackage[right]{eurosym} meillo@0: %\usepackage{float} meillo@0: \usepackage[ngerman]{varioref} meillo@0: %\usepackage{enumitem} meillo@0: \usepackage[colorlinks,linkcolor=black,urlcolor=blue,bookmarks,bookmarksopen,bookmarksnumbered]{hyperref} meillo@0: meillo@0: %PDF Infos meillo@0: \pdfinfo{ meillo@0: /Title (development-case.tex) meillo@0: /Subject (Development Case) meillo@0: %/Creator (TeX / pdfTeX) meillo@0: %/Producer (Christoph Galler) meillo@0: /Author (markus schnalke) meillo@0: /CreationDate (D:20080113090000) meillo@0: /ModDate (D:20080113090000) meillo@0: } meillo@0: meillo@0: %neues Kommando fuer Breitenangabe in der Tabelle mit vorgegebener Breite: meillo@0: \newcommand{\preserveBackslash}[1]{\let\temp=\\#1\let\\=\temp} meillo@0: \newcolumntype{R}[1]{>{\preserveBackslash\RaggedLeft}p{#1}} meillo@0: % Font Familie meillo@0: \renewcommand{\familydefault}{\sfdefault} meillo@0: %\nofiles meillo@0: % Fuer tabellenkopf meillo@0: \newcommand{\hoehe}{\parbox[1pt][2em][c]{0cm}{}} meillo@0: meillo@0: \definecolor{gray09}{gray}{0.9} meillo@0: \definecolor{gray07}{gray}{0.7} meillo@0: meillo@0: %Counternummerierung \"{a}ndern -> 1.1 2.1 3.1 etc. meillo@0: \counterwithin{section}{chapter} meillo@0: meillo@0: % Name f\"{u}r autoref bei figure Umgebungen: Abbildung x.z meillo@0: \renewcommand{\figureautorefname}{Abbildung} meillo@0: \renewcommand{\chapterautorefname}{Kapitel} meillo@0: \renewcommand{\sectionautorefname}{Unterkapitel} meillo@0: \renewcommand{\tableautorefname}{Tabelle} meillo@0: meillo@0: meillo@0: % Textkoerperhoehe meillo@0: \setlength{\headsep}{0.6cm} meillo@0: \addtolength{\textheight}{0.9cm} meillo@0: \setlength{\footskip}{0.9cm} meillo@0: meillo@0: % Kopf- und Fu{\ss}zeile meillo@0: \setlength{\headheight}{2cm} meillo@0: \usepackage[automark]{scrpage2} meillo@0: \automark[section]{section} meillo@0: \setheadwidth{15.8cm} meillo@0: \ihead{\headmark} meillo@0: \ihead{Online Seminarbuchungssystem} meillo@0: \chead{{\color{blue}\color{black}\rule[-10pt]{18.4cm}{0.1pt}\color{black}}} meillo@0: \ohead{\headmark} meillo@0: \setfootwidth[-74pt]{18.3cm} meillo@0: \setfootsepline[foot]{.1pt} meillo@0: \ifoot{} %~~~~~~~~~~~~~~~~~~~\footnotesize Christoph Galler} meillo@0: \cfoot{} meillo@0: \ofoot{\footnotesize Seite \thepage} % ~von \pageref{LastPage}} meillo@0: \renewcommand*{\chapterpagestyle}{scrheadings} meillo@0: \renewcommand*{\indexpagestyle}{scrheadings} meillo@0: \pagestyle{scrheadings} meillo@0: meillo@0: % Kapitel nicht zu tief beginnen meillo@0: \renewcommand*\chapterheadstartvskip{\vspace*{0cm}} meillo@0: meillo@0: meillo@0: \begin{document} meillo@0: meillo@0: % meillo@0: % Titelei meillo@0: % meillo@0: \begin{titlepage} meillo@0: \vspace*{-0cm} meillo@0: {\hspace*{11cm}\includegraphics*[scale=0.5]{pictures/png/logo_hsu_klein}} meillo@0: \begin{center} meillo@0: \vspace*{1.9cm} meillo@0: {\normalsize\textsc{Gruppe 2: Rui Gu, Wei Zhu, Veysel Imamoglu, Dimitar Dimitrov, \\Karl Oppermann, Nathalie Hrycej, Markus Schnalke, Christoph Galler}} \par meillo@0: \vspace*{0.6cm} meillo@0: \Large \textbf{Online-Seminarbuchungssystem} \par meillo@0: \Huge \textbf{Development Case} \par meillo@0: \vspace*{0.8cm} meillo@0: \Large \textbf{Verfasser: Markus Schnalke} \par meillo@0: {\large{} \par meillo@0: \vspace*{0.7cm} meillo@0: {\textsc{Ulm, \today}}} \par meillo@0: \vspace*{5cm} meillo@0: {\normalsize\textsc{Betreut durch: \\ meillo@0: Prof. Dr. Klaus Baer \\ meillo@0: Hochschule Ulm \\ meillo@0: Prittwitzstra{\ss}e 10\\ meillo@0: 89075 Ulm\\}} meillo@0: \end{center} meillo@0: \vfill meillo@0: \end{titlepage} meillo@0: meillo@0: % \addsec{Bitte beachten} meillo@0: Version vom \today: Das Dokument befindet sich noch im Aufbau, \"{A}nderungen sind dadurch jederzeit M\"{o}glich. meillo@0: \addsec{Version dieses Dokuments} meillo@0: \begin{tabular}{|p{1.5cm}|p{3.cm}|p{1.6cm}|p{2cm}|p{1.4cm}|p{4cm}|} meillo@0: \hline meillo@0: \multicolumn{5}{|l}{\parbox[0pt][3.4em][l]{12cm}{\vspace{0.2cm}\large Dokument: \textbf{Name des Dokumentes} \newline \emph{ Online-Seminarbuchungssystem}}} & \multicolumn{1}{r|}{\parbox[0pt][3.4em][r]{1.9cm}{\includegraphics*[scale=0.25]{pictures/png/logo_hsu}}} \\ meillo@0: \hline\hline meillo@0: \hoehe{\textbf{Version}} & \textbf{Person} & \textbf{Aktion} & \textbf{Datum} & \textbf{Status} & \textbf{Kommentar} \\ meillo@0: \hline\hline meillo@6: 0.1 & Markus Schnalke & E & 2007-11-27 & O & Erste Version \\ \hline meillo@6: 0.2 & Markus Schnalke & AE & 2008-01-13 & O & Neue Struktur des Dokuments \\ \hline meillo@6: 0.3 & Markus Schnalke & AE & 2008-01-14 & O & Glossar erstellt \\ \hline meillo@6: 0.4 & Markus Schnalke & AE & 2008-01-16 & O & Struktur überarbeitet; Glossar ausgelagert \\ \hline meillo@0: \end{tabular} meillo@0: {\footnotesize\vspace*{-0.1cm}Aktion: E – Erstellung; AE – \"{A}nderung; QS – Review; AB – Abnahme} \par meillo@0: {\footnotesize\vspace*{-0.4cm} Status: O – Offen; D – Diskussion; A – Akzeptiert} meillo@0: \clearpage meillo@0: meillo@0: % Inhaltsverzeichnis meillo@0: \setcounter{tocdepth}{3} meillo@0: %\renewcommand\contentsname{"Uberblick} meillo@0: \tableofcontents meillo@0: meillo@0: \clearpage meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: % Content meillo@4: meillo@4: meillo@4: meillo@4: \chapter{Einleitung} meillo@4: meillo@6: \section{Zweck des Dokuments} meillo@4: meillo@4: Dieses Dokument beschreibt den Entwicklungsprozess nach dem wir in unserem Projekt vorgehen. meillo@4: meillo@4: meillo@4: \section{Definitionen und Abkürzungen} meillo@4: meillo@4: Die verwendeten Begriffe sind im Projekt-Glossar erklärt. Bei Bedarf kann dort nachgeschlagen werden. meillo@4: meillo@6: % Im Glossar sind: Workflow Entwicklungsprozess Zyklus Iteration Phase RUP Iterativer Entwicklungsprozess Manntag Release meillo@4: meillo@4: meillo@6: \section{Verweise auf andere Artefakte} meillo@4: meillo@6: \begin{itemize} meillo@6: \item \textbf{Glossar}: Dort werden die verwendeten Fachbegriffe erklärt. meillo@6: \item \textbf{Software Development Plan}: Der \emph{Development Case} ist ein Unterdokument des \emph{Software Development Plan}s. meillo@6: \item \textbf{Projekt Plan}: Die konkrete zeitliche Planung. meillo@6: \item meillo@6: \item meillo@6: \item meillo@6: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: %%%%%%%%%%%%%% meillo@4: \chapter{Entwicklungsprozess} meillo@6: meillo@4: \section{Überblick} meillo@4: meillo@6: Wir werden unser Projekt nach dem \emph{Rational Unified Process} (kurz RUP) entwickeln. meillo@4: meillo@4: Der RUP ist ein dynamischer und iterativer Entwicklungsprozess, der das Projekt in zwei Dimensionen betrachtet. meillo@6: Er ist ausführlich spezifiziert und umfangreich dokumentiert. (\texttt{http://www-306.ibm.com/software/awdtools/rup/}). meillo@4: meillo@6: An sich ist der RUP für große Projekte, mit vielen Mannjahren, ausgelegt. Für unser kleines Projekt (85 Manntage) ist er eher weniger gut geeignet. 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. meillo@4: meillo@6: Um einen Entwicklungsprozess für ein Projekt anzuwenden, muss er für eben dieses Projekt angepasst werden. Als Daumenregel kann man sagen: Je aufwändiger ein Prozess ist, desto stärker wird er auf ein spezifisches Projekt zurecht geschneidert werden müssen. meillo@6: meillo@6: Wir haben also diesen mächtigen und umfangreichen Rational Unified Process für unser kleines Projekt abgespeckt und angepasst. Diese Anpassungen betreffen dabei natürlich beide Dimensionen, die zeitliche (Zyklen, Phasen, Iterationen) und die inhaltliche (Workflows). meillo@6: meillo@6: Wie unsere Adaptation des RUP genau aussieht, das beschreibt diese Dokument. meillo@6: meillo@6: meillo@6: \section{Der RUP auf einen Blick} meillo@6: meillo@6: Natürlich kann man diesen umfassenden Entwicklungsprozess nicht in einem Bild komplett abbilden, jedoch zeigt die nachfolgende Grafik doch sehr schön, wie die Entwicklung im Bezug auf die zwei Dimensionen aussieht. Dieser Übersichtplan, soll primär eine greifbare Vorstellung des Prozesses geben. Sie kann quasi als ``Landkarte'' für die in diesem Dokument beschriebene ``Landschaft'' zur Hilfe genommen werden. meillo@6: meillo@6: \begin{figure}[htb] meillo@6: \centering meillo@6: \includegraphics[width=10cm]{pictures/png/RationalUnifiedProcess.png} meillo@6: \caption{Übersicht über einen Zyklus des RUP} meillo@6: \label{fig:rationalunifiedprocess} meillo@6: \end{figure} meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: %%%%%%%%%%%%%% meillo@6: \chapter{Zeitliche Dimension} meillo@4: meillo@4: \section{Anpassungen} meillo@4: meillo@6: Wir werden drei Zyklen des Projekts durchführen. Insgesamt wird das Projekt mehr als diese drei Zyklen umfassen. Unser Team aber nur eben diese ersten drei Zyklen durchführen. meillo@4: meillo@6: Jeder Zyklus wird circa vier Wochen umfassen (18 Manntage). An dessen Ende jeweils ein Release stehen wird. (Näheres zu den Releases findet sich im \emph{Project Plan}.) meillo@4: meillo@6: Iterationen innerhalb der Zyklen werden wir, auf Grund der kurzen Zyklen, komplett außen vor lassen. meillo@4: meillo@6: Die einzelnen Phasen in den Zyklen versuchen wir, so gut es geht, zu berücksichtigen. meillo@4: meillo@4: meillo@4: meillo@6: \subsection{Probleme und Konsequenzen} meillo@4: meillo@6: Der RUP ist sehr umfangreich und meillo@6: 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. meillo@4: meillo@6: 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. meillo@4: meillo@6: Dabei muss allerdings auch bedacht werden, dass pro Phase ganz grob nur etwa 4 Manntage (d.h. circa 4 Stunden pro Person) zur Verfügung stehen. Wenn man auch an die unterschiedlichen Arbeitszeiten der einzelnen Personen denkt, so dürfte klar sein, dass wir unserem Konzept, dem RUP, nur annäherungsweise folgen können. meillo@4: meillo@4: meillo@4: meillo@6: \section{Konkrete Projektplanung} meillo@4: meillo@6: Die konkrete Planung der einzelnen Zyklen und ihrer Meilensteine befindet sich im \emph{Projekt Plan}. Dieser gibt eine zeitliche und inhaltliche Komplettübersicht über das Projekt. meillo@4: meillo@6: Zudem ist nach dem RUP auch ein \emph{Iterations Plan} definiert, in dem ausgehend von der aktuellen Iteration, jeweils die nächste geplant wird. Dieses Artefakt existiert bei uns nicht, da wir keine Iterationen haben. Wir haben unseren \emph{Iterations Plan} mit dem \emph{Projekt Plan} verschmolzen. meillo@4: meillo@4: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: %%%%%%%%%%%%%%%%%%%% meillo@6: \chapter{Inhaltliche Dimension} meillo@6: meillo@6: Diese zweite Dimension beschreibt die inhaltliche Seite der Entwicklung. Hier wird genau festgelegt, \emph{wer} \emph{wie} \emph{was} \emph{wann} macht. meillo@6: meillo@6: Dabei gibt es vier Elemente: meillo@6: \begin{itemize} meillo@6: \item Arbeiter, das \emph{Wer}. Der \emph{Arbeiter} ist eine Rolle, die jemand inne hat. Eine einzelne Person, oder eine Gruppe kann eine solche Rolle haben. Andererseits kann auch eine Person mehrer Rollen haben. In jedem Fall muss klar sein, wer welche Rolle hat. Diese Information findet sich bei uns im \emph{Organigramm}. meillo@6: \item Aktivität, das \emph{Wie}. Eine Aktivität ist ein bestimmte Arbeitseinheit, die ein bestimmter Arbeiter erledigen soll. Üblicherweise soll dabei ein Artefakt erstellt oder aktualisiert werden. meillo@6: \item Artefakt, das \emph{Was}. Ein Artefakt ist Information, die von einem Prozess verwendet, verändert oder produziert wird. Artefakte sind häufig Diagramme, Quellcode, Textdokumente und ähnliches. meillo@6: \item Workflow, das \emph{Wann}. Ein Workflow ist eine Aneinanderreihung von Aktivitäten, die ein Ergebnis von messbarem Wert erzeugen. Im Worflow werden die ersten drei Elemente (Arbeiter, Aktivität und Artefakt) zu einer konkret wertschaffenden Struktur zusammengebaut. meillo@6: \end{itemize} meillo@6: meillo@6: \section{Kern-Workflows} meillo@6: meillo@4: \subsection{Geschäftsprozessmodellierung} meillo@4: (Business Modeling) meillo@4: meillo@4: Dokumentation der relevanten Geschäftsprozesse in Use Cases, mit dem Ziel eines gemeinsamen Verständnisses zwischen Entwicklern und Anwendern. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@6: \item Glossar meillo@6: \item Business Use-Cases meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@4: \subsection{Anforderungen} meillo@4: (Requirements) meillo@4: meillo@4: Ermitteln, was das System leisten soll. Die funktionalen Anforderungen sollen erfasst werden. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Use-Case meillo@6: \item Use-Case Modell meillo@4: \item Vision meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@4: \subsection{Analyse \& Design} meillo@4: (Analysis \& Design) meillo@4: meillo@6: Aufbau und Technologie des Systems festlegen. Festlegung wie wird das System realisiert wird. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Software Architecture Document meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@4: \subsection{Implementierung} meillo@4: (Implementation) meillo@4: meillo@6: Systemteile entwickeln und zusammenfügen. Komponententests. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: meillo@4: meillo@4: \subsection{Test} meillo@4: (Testing) meillo@4: meillo@6: Test des Zusammenspiels der Komponenten. Funktionsweise des Systems gegen die Anforderungen prüfen. meillo@4: meillo@4: 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. meillo@4: meillo@4: meillo@4: meillo@4: \subsection{Verteilung} meillo@4: (Deployment) meillo@4: meillo@4: Auslieferung des Systems an den Kunden und Inbetriebnahme. Schulung der Benutzer. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: \section{Unterstützungs-Workflows} meillo@4: meillo@4: \subsection{Konfigurations- \& Änderungsmanagement} meillo@4: (Configuration \& Changemanagement) meillo@4: meillo@4: Verwaltung der zum Projekt gehörenden Daten. Versionierung und Konsistenz. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Project Repository meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: \subsection{Projektmanagement} meillo@4: (Projectmanagement) meillo@4: meillo@4: Zwischen konkurrierenden Zielen vermitteln. Auf Risiken reagieren. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Software Development Plan meillo@6: \item Risikoliste meillo@4: \item Iteration Plan % FIXME meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: \subsection{Entwicklungsumgebung} meillo@4: (Environment) meillo@4: meillo@4: Bereitstellung von Hardware, Software und Know-How. meillo@4: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Development Case meillo@4: \item Tools meillo@4: \item User Interface Guidlines % FIXME meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@0: meillo@0: \appendix meillo@6: %\chapter{Glossar} meillo@6: \chapter{Quellen} meillo@2: \begin{itemize} meillo@2: \item Dokumentation zum \emph{Rational Unified Process} meillo@2: \item Skript von Herrn Baer zur Vorlesung \emph{Softwaretechnik 1} an der Hochschule Ulm meillo@2: \item http://wikipedia.org meillo@6: \item \emph{Rational Unified Process - Best Practices for Software Development Teams} meillo@2: \end{itemize} meillo@2: meillo@6: Anmerkung zur \ref{fig:rationalunifiedprocess}: This image is from the Rational Unified Process (software product) version 2003.06.12.01. This image is copyright by Rational Software Corporation, now a division of IBM. meillo@6: meillo@0: meillo@0: meillo@0: \end{document} meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: %%%%%%%% HowTo %%%%%%%%%% meillo@6: meillo@6: % picture block meillo@6: \begin{figure}[h] meillo@6:  \includegraphics[scale=0.65]{pictures/png/logistiksicht_v6} meillo@6:  \caption{Logistiksicht für SAP} meillo@6:  \label{fig:logistiksicht} meillo@6: \end{figure} meillo@6: meillo@6: % picture inline meillo@6: \begin{wrapfigure}[11]{r}[0pt]{6.4cm} meillo@6:  \centering %OPTIONAL meillo@6:  \includegraphics[scale=0.7]{pictures/png/werkdresden} meillo@6:  \caption{OptiBoard Werk Dresden} meillo@6: \end{wrapfigure} meillo@6: meillo@6: % tabellen meillo@6: \begin{table}[h] meillo@6: \centering meillo@6: \begin{tabular}{p{4cm}|p{3cm}|p{3.3cm}} meillo@6:  \rowcolor{gray07} \textbf{Teil} & \textbf{Menge} & \textbf{Einheit}\\ meillo@6:  \hline meillo@6:  \rowcolor{white}  LED-Block          & 105 & Stück\\ meillo@6:  \rowcolor{gray09} Feder              & 105 & Stück\\ meillo@6:  \rowcolor{white}  Platine            & 1   & Stück\\ meillo@6:  \rowcolor{gray09} Chip               & 1   & Stück\\ meillo@6:  \rowcolor{white}  Kabel              & 1   & Stück\\ meillo@6:  \rowcolor{gray09} Kunststoffgranulat & 350 & Gramm\\ meillo@6: \end{tabular} meillo@6: \caption{Mengenübersichtstückliste OptiBoard Pro} meillo@6: \label{tbl:mengenPro} meillo@6: \end{table}