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@8: \ihead{Development Case} 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@8: \ifoot{\hspace{2.6cm}\footnotesize Gruppe 2: Seminarverwaltungssystem (Topcased)} 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@8: {\normalsize\textsc{Gruppe 2: Rui Gu, Wei Zhu, Veysel Imamoglu, meillo@8: Dimitar Dimitrov, \\Karl Oppermann, Nathalie Hrycej, Markus Schnalke, meillo@8: Christoph Galler}} \par meillo@0: \vspace*{0.6cm} meillo@8: \large \textbf{Modellgetriebene Softwareentwicklung auf Basis von meillo@8: TOPCASED am Beispiel eines Seminarverwaltungssystems} \par meillo@0: \Huge \textbf{Development Case} \par meillo@0: \vspace*{0.8cm} meillo@8: {\Large{} \par meillo@0: \vspace*{0.7cm} meillo@0: {\textsc{Ulm, \today}}} \par meillo@8: \vspace*{4.5cm} meillo@0: {\normalsize\textsc{Betreut durch: \\ meillo@0: Prof. Dr. Klaus Baer \\ meillo@0: Hochschule Ulm \\ meillo@8: Prittwitzstraße 10\\ meillo@0: 89075 Ulm\\}} meillo@8: \end{center} meillo@0: \vfill meillo@0: \end{titlepage} meillo@0: meillo@8: meillo@8: 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@7: \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}}} \\ meillo@0: \hline\hline meillo@0: \hoehe{\textbf{Version}} & \textbf{Person} & \textbf{Aktion} & \textbf{Datum} & \textbf{Status} & \textbf{Kommentar} \\ meillo@0: \hline\hline meillo@8: 0.1 & Markus Schnalke & E & 2007-11-27 & O & Erste Version \\ \hline meillo@8: 0.2 & Markus Schnalke & AE & 2008-01-13 & O & Neue Struktur des Dokuments \\ \hline meillo@8: 0.4 & Markus Schnalke & AE & 2008-01-16 & A & Struktur überarbeitet \\ \hline meillo@7: 0.4.1 & Karl Oppermann & QS & 2008-01-17 & A & Allgemeines Review \\ \hline meillo@8: 0.5 & Markus Schnalke & AE & 2008-01-18 & A & Überarbeitung; Fachbegriffe jetzt englisch \\ \hline meillo@8: 0.5.1 & Veysel Imamoglu & QS & 2008-01-18 & A & Rechtschreibkorrektur \\ \hline meillo@8: 0.6 & Markus Schnalke & AE & 2008-01-21 & O & \\ \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@4: meillo@4: meillo@6: \section{Verweise auf andere Artefakte} meillo@4: meillo@6: \begin{itemize} meillo@9: \item \textbf{Software Development Plan} meillo@9: \item \textbf{Glossary} 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@9: Wir werden unser Projekt nach dem \emph{Rational Unified Process}$^{\ddagger}$ (kurz RUP) entwickeln. meillo@4: meillo@7: Der RUP ist ein dynamischer und iterativer Entwicklungsprozess, der das Projekt in zwei Dimensionen (zeitlich und inhaltlich) betrachtet. meillo@4: meillo@9: 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. meillo@4: meillo@9: 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. meillo@6: meillo@6: meillo@6: \section{Der RUP auf einen Blick} meillo@6: meillo@9: 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. meillo@6: meillo@6: \begin{figure}[htb] meillo@6: \centering meillo@9: \includegraphics[width=9cm]{pictures/png/RationalUnifiedProcess.png} meillo@9: \caption{Übersicht über einen Zyklus im RUP$^{\ddagger}$ } 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@9: 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}) meillo@4: meillo@9: 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. meillo@4: meillo@6: Iterationen innerhalb der Zyklen werden wir, auf Grund der kurzen Zyklen, komplett außen vor lassen. meillo@4: meillo@4: meillo@4: meillo@9: 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. meillo@4: meillo@9: %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@9: %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. meillo@7: meillo@7: meillo@4: meillo@4: meillo@4: meillo@6: \section{Konkrete Projektplanung} meillo@4: meillo@9: Die konkrete Planung der einzelnen Zyklen und ihrer Meilensteine finden sich im \emph{Software Development Plan}. meillo@4: meillo@4: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: meillo@6: %%%%%%%%%%%%%%%%%%%% meillo@6: \chapter{Inhaltliche Dimension} meillo@6: meillo@9: In der zweiten Dimension wird festgelegt, \emph{wer} (Rolle), \emph{wie} (Aktivität), \emph{was} (Artefakt), \emph{wann} (Workflow) macht. meillo@6: meillo@6: meillo@6: meillo@9: \section{Business Modeling} meillo@4: meillo@8: \paragraph{Zweck} meillo@9: Gemeinsames Verständniss zwischen Entwicklern und Anwendern schaffen meillo@8: meillo@9: \paragraph{Wird erreicht durch} meillo@9: Dokumentation der relevanten Geschäftsprozesse in Use Cases meillo@4: meillo@9: %\paragraph{Anpassungen} meillo@9: %Keine besonderen. meillo@4: meillo@9: \paragraph{Wer} Fachliches Team, Kunde meillo@9: \paragraph{Wie} im Gespräch meillo@9: \paragraph{Was} Glossary meillo@4: meillo@9: %\paragraph{Artefakte} meillo@9: %\begin{itemize} meillo@9: % \item Glossary meillo@9: %\end{itemize} meillo@4: meillo@9: meillo@9: meillo@9: \section{Requirements} meillo@4: meillo@8: \paragraph{Zweck} meillo@4: Ermitteln, was das System leisten soll. Die funktionalen Anforderungen sollen erfasst werden. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: Keine besonderen. meillo@8: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Vision meillo@9: \item Use Cases meillo@4: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@9: \section{Analysis \& Design} meillo@4: meillo@8: \paragraph{Zweck} meillo@6: Aufbau und Technologie des Systems festlegen. Festlegung wie wird das System realisiert wird. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: Die Technologie und Teile der Umsetzung sind durch das Projekt vorgegeben und somit fix. meillo@8: meillo@8: 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. meillo@8: 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@8: meillo@9: \section{Implementation} meillo@4: meillo@8: \paragraph{Zweck} meillo@6: Systemteile entwickeln und zusammenfügen. Komponententests. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: 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. meillo@8: meillo@8: 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. meillo@8: meillo@4: \paragraph{Artefakte} meillo@8: Momentan keine. meillo@8: meillo@4: meillo@4: meillo@9: \section{Testing} meillo@4: meillo@8: \paragraph{Zweck} meillo@6: Test des Zusammenspiels der Komponenten. Funktionsweise des Systems gegen die Anforderungen prüfen. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: 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. meillo@8: meillo@8: Dies heißt aber keineswegs, dass wir ihn zum geeigneten Zeitpunkt nicht voll ausbauen werden. meillo@8: meillo@8: \paragraph{Artefakte} meillo@8: Noch keine. meillo@4: meillo@4: meillo@4: meillo@9: \section{Deployment} meillo@4: meillo@8: \paragraph{Zweck} meillo@4: Auslieferung des Systems an den Kunden und Inbetriebnahme. Schulung der Benutzer. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: Auch hier sparen wir um dafür die Entwicklung voran zu treiben. meillo@8: meillo@4: \paragraph{Artefakte} meillo@8: \begin{itemize} meillo@8: \item Release Notes (empfohlen) %FIXME rechtschreibung meillo@8: \end{itemize} meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@9: \section{Configuration \& Changemanagement} meillo@4: meillo@8: \paragraph{Zweck} meillo@4: Verwaltung der zum Projekt gehörenden Daten. Versionierung und Konsistenz. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: Alle Daten müssen im Project Repository abgelegt werden. Dieses soll die zentrale Informationsstelle sein. meillo@8: meillo@8: Jeder Mitarbeiter darf an jeder Stelle des Projekts Änderungen durchführen. meillo@8: meillo@9: % FIXME: Inhalte für Karl einfügen meillo@9: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Project Repository meillo@4: \end{itemize} meillo@4: meillo@4: meillo@8: meillo@9: \section{Projectmanagement} meillo@4: meillo@8: \paragraph{Zweck} meillo@4: Zwischen konkurrierenden Zielen vermitteln. Auf Risiken reagieren. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: Keine besonderen. meillo@8: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@9: \item Software Development Plan meillo@7: \item Risklist meillo@4: \end{itemize} meillo@4: meillo@4: meillo@8: meillo@9: \section{Environment} meillo@4: meillo@8: \paragraph{Zweck} meillo@4: Bereitstellung von Hardware, Software und Know-How. meillo@4: meillo@8: \paragraph{Anpassungen} meillo@8: Keine besonderen. meillo@8: meillo@4: \paragraph{Artefakte} meillo@4: \begin{itemize} meillo@4: \item Development Case 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@9: \item Dokumentation zum \emph{Rational Unified Process} \\ (\texttt{http://www-306.ibm.com/software/awdtools/rup/}) 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@9: $\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. 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}