================================================
FILE: .project
================================================
VorlageFachinformatikernet.sourceforge.texlipse.builder.TexlipseBuildernet.sourceforge.texlipse.builder.TexlipseNature
================================================
FILE: .settings/org.eclipse.core.resources.prefs
================================================
#Fri Jan 27 09:15:13 CET 2012
eclipse.preferences.version=1
encoding/=UTF-8
================================================
FILE: .settings/org.eclipse.core.runtime.prefs
================================================
#Fri Jan 27 09:15:13 CET 2012
eclipse.preferences.version=1
line.separator=\n
================================================
FILE: .settings/org.eclipse.ltk.core.refactoring.prefs
================================================
#Fri Jan 27 09:15:16 CET 2012
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
================================================
FILE: .texlipse
================================================
#TeXlipse project settings
#Fri Jan 27 09:15:16 CET 2012
builderNum=2
outputDir=
makeIndSty=
bibrefDir=
outputFormat=pdf
tempDir=tmp
mainTexFile=Projektdokumentation.tex
outputFile=Projektdokumentation.pdf
langSpell=de
markDer=true
srcDir=
================================================
FILE: Abkuerzungen.tex
================================================
% !TEX root = Projektdokumentation.tex
% Es werden nur die Abkürzungen aufgelistet, die mit \ac definiert und auch benutzt wurden.
%
% \acro{VERSIS}{Versicherungsinformationssystem\acroextra{ (Bestandsführungssystem)}}
% Ergibt in der Liste: VERSIS Versicherungsinformationssystem (Bestandsführungssystem)
% Im Text aber: \ac{VERSIS} -> Versicherungsinformationssystem (VERSIS)
% Hinweis: allgemein bekannte Abkürzungen wie z.B. bzw. u.a. müssen nicht ins Abkürzungsverzeichnis aufgenommen werden
% Hinweis: allgemein bekannte IT-Begriffe wie Datenbank oder Programmiersprache müssen nicht erläutert werden,
% aber ggfs. Fachbegriffe aus der Domäne des Prüflings (z.B. Versicherung)
% Die Option (in den eckigen Klammern) enthält das längste Label oder
% einen Platzhalter der die Breite der linken Spalte bestimmt.
\begin{acronym}[WWWWW]
\acro{AO}{\textsc{Alte Oldenburger} Krankenversicherung AG}
\acro{API}{Application Programming Interface}
\acro{CSS}{Cascading Style Sheets}
\acro{CSV}{Comma Separated Value}
\acro{EPK}{Ereignisgesteuerte Prozesskette}
\acro{ERM}{En\-ti\-ty-Re\-la\-tion\-ship-Mo\-dell}
\acro{HTML}{Hypertext Markup Language}\acused{HTML}
\acro{IDE}{Integrated Development Environment}
\acro{MVC}[MVC]{Model View Controller}
\acro{NatInfo}[\textsc{NatInfo}]{Natural Information System}
\acro{Natural}[\textsc{Natural}]{Programmiersprache der Software AG}\acused{Natural}
\acro{ORM}{Object-Relational Mapping}
\acro{PHP}{Hypertext Preprocessor}
\acro{SDK}{Software Development Kit}
\acro{SQL}{Structured Query Language}
\acro{SVN}{Subversion}
\acro{UML}{Unified Modeling Language}
\acro{XML}{Extensible Markup Language}
\end{acronym}
================================================
FILE: Allgemein/Befehle.tex
================================================
% !TEX root = ../Projektdokumentation.tex
% Abkürzungen, ggfs. mit korrektem Leerraum
\newcommand{\bs}{$\backslash$\xspace}
\newcommand{\bspw}{bspw.\xspace}
\newcommand{\bzw}{bzw.\xspace}
\newcommand{\ca}{ca.\xspace}
\newcommand{\dahe}{\mbox{d.\,h.}\xspace}
\newcommand{\etc}{etc.\xspace}
\newcommand{\eur}[1]{\mbox{#1\,\texteuro}\xspace}
\newcommand{\evtl}{evtl.\xspace}
\newcommand{\ggfs}{ggfs.\xspace}
\newcommand{\Ggfs}{Ggfs.\xspace}
\newcommand{\gqq}[1]{\glqq{}#1\grqq{}}
\newcommand{\inkl}{inkl.\xspace}
\newcommand{\insb}{insb.\xspace}
\newcommand{\ua}{\mbox{u.\,a.}\xspace}
\newcommand{\usw}{usw.\xspace}
\newcommand{\Vgl}{Vgl.\xspace}
\newcommand{\zB}{\mbox{z.\,B.}\xspace}
% Befehle für häufig anfallende Aufgaben
\newcommand{\Abbildung}[1]{\autoref{fig:#1}}
\newcommand{\Anhang}[1]{\appendixname{}~\ref{#1}: \nameref{#1} \vpageref{#1}}
\newcommand{\includegraphicsKeepAspectRatio}[2]{\includegraphics[width=#2\textwidth,height=#2\textheight,keepaspectratio]{#1}}
\newcommand{\Zitat}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\citep{#2}}{\citep[#1]{#2}}}
\newcommand{\Autor}[1]{\textsc{#1}} % zum Ausgeben von Autoren
\newcommand{\itemd}[2]{\item{\textbf{#1}}\\{#2}} % erzeugt ein Listenelement mit fetter Überschrift
% fügt Tabellen aus einer TEX-Datei ein
\newcommand{\tabelle}[3] % Parameter: caption, label, file
{\begin{table}[htbp]
\centering
\singlespacing
\input{Tabellen/#3}
\caption{#1}
\label{#2}
\end{table}}
\newcommand{\tabelleAnhang}[1] % Parameter: file
{\begin{center}
\singlespacing
\input{Tabellen/#1}
\end{center}}
% einfaches Wechseln der Schrift, z.B.: \changefont{cmss}{sbc}{n}
\newcommand{\changefont}[3]{\fontfamily{#1} \fontseries{#2} \fontshape{#3} \selectfont}
% Verwendung analog zu \includegraphics
\newlength{\myx} % Variable zum Speichern der Bildbreite
\newlength{\myy} % Variable zum Speichern der Bildhöhe
\newcommand\includegraphicstotab[2][\relax]{%
% Abspeichern der Bildabmessungen
\settowidth{\myx}{\includegraphics[{#1}]{#2}}%
\settoheight{\myy}{\includegraphics[{#1}]{#2}}%
% das eigentliche Einfügen
\parbox[c][1.1\myy][c]{\myx}{%
\includegraphics[{#1}]{#2}}%
}
\definecolor{AOBlau}{rgb}{0, 0.28, 0.56}
% verschiedene Befehle um Wörter semantisch auszuzeichnen ----------------------
\newcommand{\Index}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\index{#2}#2}{\index{#1}#2}}
\newcommand{\Fachbegriff}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\textit{\Index{#2}}}{\textit{\Index[#1]{#2}}}}
\newcommand{\NeuerBegriff}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\textbf{\Index{#2}}}{\textbf{\Index[#1]{#2}}}}
\newcommand{\Ausgabe}[1]{\texttt{#1}}
\newcommand{\Eingabe}[1]{\texttt{#1}}
\newcommand{\Code}[1]{\texttt{#1}}
\newcommand{\Datei}[1]{\texttt{#1}}
\newcommand{\Assembly}[1]{\textsf{#1}}
\newcommand{\Klasse}[1]{\textsf{#1}}
\newcommand{\Methode}[1]{\textsf{#1}}
\newcommand{\Attribut}[1]{\textsf{#1}}
\newcommand{\Datentyp}[1]{\textsf{#1}}
\newcommand{\XMLElement}[1]{\textsf{#1}}
\newcommand{\Webservice}[1]{\textsf{#1}}
\newcommand{\Refactoring}[1]{\Fachbegriff{#1}}
\newcommand{\CodeSmell}[1]{\Fachbegriff{#1}}
\newcommand{\Metrik}[1]{\Fachbegriff{#1}}
\newcommand{\DesignPattern}[1]{\Fachbegriff{#1}}
================================================
FILE: Allgemein/Packages.tex
================================================
% !TEX root = ../Projektdokumentation.tex
% Anpassung an Landessprache ---------------------------------------------------
\usepackage{babel}
% Umlaute ----------------------------------------------------------------------
% Umlaute/Sonderzeichen wie äüöß direkt im Quelltext verwenden (CodePage).
% Erlaubt automatische Trennung von Worten mit Umlauten.
% ------------------------------------------------------------------------------
\usepackage[T1]{fontenc}
\usepackage{textcomp} % Euro-Zeichen etc.
% Schrift ----------------------------------------------------------------------
\usepackage{lmodern} % bessere Fonts
\usepackage{relsize} % Schriftgröße relativ festlegen
% Tabellen ---------------------------------------------------------------------
\PassOptionsToPackage{table}{xcolor}
\usepackage{tabularx}
% für lange Tabellen
\usepackage{longtable}
\usepackage{array}
\usepackage{ragged2e}
\usepackage{lscape}
\newcolumntype{w}[1]{>{\raggedleft\hspace{0pt}}p{#1}} % Spaltendefinition rechtsbündig mit definierter Breite
% Grafiken ---------------------------------------------------------------------
\usepackage[dvips,final]{graphicx} % Einbinden von JPG-Grafiken ermöglichen
\usepackage{graphics} % keepaspectratio
\usepackage{floatflt} % zum Umfließen von Bildern
\graphicspath{{Bilder/}} % hier liegen die Bilder des Dokuments
% Sonstiges --------------------------------------------------------------------
\usepackage[titles]{tocloft} % Inhaltsverzeichnis DIN 5008 gerecht einrücken
\usepackage{amsmath,amsfonts} % Befehle aus AMSTeX für mathematische Symbole
\usepackage{enumitem} % anpassbare Enumerates/Itemizes
\usepackage{xspace} % sorgt dafür, dass Leerzeichen hinter parameterlosen Makros nicht als Makroendezeichen interpretiert werden
\usepackage{makeidx} % für Index-Ausgabe mit \printindex
\usepackage[printonlyused]{acronym} % es werden nur benutzte Definitionen aufgelistet
% Einfache Definition der Zeilenabstände und Seitenränder etc.
\usepackage{setspace}
\usepackage{geometry}
% Symbolverzeichnis
\usepackage[intoc]{nomencl}
\let\abbrev\nomenclature
\renewcommand{\nomname}{Abkürzungsverzeichnis}
\setlength{\nomlabelwidth}{.25\hsize}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
\setlength{\nomitemsep}{-\parsep}
\usepackage{varioref} % Elegantere Verweise. „auf der nächsten Seite“
\usepackage{url} % URL verlinken, lange URLs umbrechen etc.
\usepackage{chngcntr} % fortlaufendes Durchnummerieren der Fußnoten
% \usepackage[perpage]{footmisc} % Alternative: Nummerierung der Fußnoten auf jeder Seite neu
\usepackage{ifthen} % bei der Definition eigener Befehle benötigt
\usepackage{todonotes} % definiert u.a. die Befehle \todo und \listoftodos
\usepackage[square]{natbib} % wichtig für korrekte Zitierweise
% PDF-Optionen -----------------------------------------------------------------
\usepackage{pdfpages}
\pdfminorversion=5 % erlaubt das Einfügen von pdf-Dateien bis Version 1.7, ohne eine Fehlermeldung zu werfen (keine Garantie für fehlerfreies Einbetten!)
\usepackage[
bookmarks,
bookmarksnumbered,
bookmarksopen=true,
bookmarksopenlevel=1,
colorlinks=true,
% diese Farbdefinitionen zeichnen Links im PDF farblich aus
anchorcolor=AOBlau,% Ankertext
citecolor=AOBlau, % Verweise auf Literaturverzeichniseinträge im Text
filecolor=AOBlau, % Verknüpfungen, die lokale Dateien öffnen
menucolor=AOBlau, % Acrobat-Menüpunkte
urlcolor=AOBlau,
% diese Farbdefinitionen sollten für den Druck verwendet werden (alles schwarz)
%linkcolor=black, % einfache interne Verknüpfungen
%anchorcolor=black, % Ankertext
%citecolor=black, % Verweise auf Literaturverzeichniseinträge im Text
%filecolor=black, % Verknüpfungen, die lokale Dateien öffnen
%menucolor=black, % Acrobat-Menüpunkte
%urlcolor=black,
%
%backref, % Quellen werden zurück auf ihre Zitate verlinkt
pdftex,
plainpages=false, % zur korrekten Erstellung der Bookmarks
pdfpagelabels=true, % zur korrekten Erstellung der Bookmarks
hypertexnames=false, % zur korrekten Erstellung der Bookmarks
linkcolor=black,
linktoc=all,
]{hyperref}
% Befehle, die Umlaute ausgeben, führen zu Fehlern, wenn sie hyperref als Optionen übergeben werden
\hypersetup{
pdftitle={\titel -- \untertitel},
pdfauthor={\autorName},
pdfcreator={\autorName},
pdfsubject={\titel -- \untertitel},
pdfkeywords={\titel -- \untertitel},
}
% zum Einbinden von Programmcode -----------------------------------------------
\usepackage{listings}
\usepackage{xcolor}
\definecolor{hellgelb}{rgb}{1,1,0.9}
\definecolor{colKeys}{rgb}{0,0,1}
\definecolor{colIdentifier}{rgb}{0,0,0}
\definecolor{colComments}{rgb}{0,0.5,0}
\definecolor{colString}{rgb}{1,0,0}
\lstset{
float=hbp,
basicstyle=\footnotesize,
identifierstyle=\color{colIdentifier},
keywordstyle=\color{colKeys},
stringstyle=\color{colString},
commentstyle=\color{colComments},
backgroundcolor=\color{hellgelb},
columns=flexible,
tabsize=2,
frame=single,
extendedchars=true,
showspaces=false,
showstringspaces=false,
numbers=left,
numberstyle=\tiny,
breaklines=true,
breakautoindent=true,
captionpos=b,
}
\lstdefinelanguage{cs}{
sensitive=false,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]",
morekeywords={
abstract,event,new,struct,as,explicit,null,switch
base,extern,object,this,bool,false,operator,throw,
break,finally,out,true,byte,fixed,override,try,
case,float,params,typeof,catch,for,private,uint,
char,foreach,protected,ulong,checked,goto,public,unchecked,
class,if,readonly,unsafe,const,implicit,ref,ushort,
continue,in,return,using,decimal,int,sbyte,virtual,
default,interface,sealed,volatile,delegate,internal,short,void,
do,is,sizeof,while,double,lock,stackalloc,
else,long,static,enum,namespace,string},
}
\lstdefinelanguage{natural}{
sensitive=false,
morecomment=[l]{/*},
morestring=[b]",
morestring=[b]',
alsodigit={-,*},
morekeywords={
DEFINE,DATA,LOCAL,END-DEFINE,WRITE,CALLNAT,PARAMETER,USING,
IF,NOT,END-IF,ON,*ERROR-NR,ERROR,END-ERROR,ESCAPE,ROUTINE,
PERFORM,SUBROUTINE,END-SUBROUTINE,CONST,END-FOR,END,FOR,RESIZE,
ARRAY,TO,BY,VALUE,RESET,COMPRESS,INTO,EQ},
}
\lstdefinelanguage{php}{
sensitive=false,
morecomment=[l]{/*},
morestring=[b]",
morestring=[b]',
alsodigit={-,*},
morekeywords={
abstract,and,array,as,break,case,catch,cfunction,class,clone,const,
continue,declare,default,do,else,elseif,enddeclare,endfor,endforeach,
endif,endswitch,endwhile,extends,final,for,foreach,function,global,
goto,if,implements,interface,instanceof,namespace,new,old_function,or,
private,protected,public,static,switch,throw,try,use,var,while,xor
die,echo,empty,exit,eval,include,include_once,isset,list,require,
require_once,return,print,unset},
}
================================================
FILE: Allgemein/Seitenstil.tex
================================================
% !TEX root = ../Projektdokumentation.tex
% Seitenränder -----------------------------------------------------------------
\setlength{\topskip}{\ht\strutbox} % behebt Warnung von geometry
\geometry{a4paper,left=25mm,right=25mm,top=33mm,bottom=25mm}
\usepackage[
automark, % Kapitelangaben in Kopfzeile automatisch erstellen
headsepline, % Trennlinie unter Kopfzeile
ilines % Trennlinie linksbündig ausrichten
]{scrlayer-scrpage}
% Kopf- und Fußzeilen ----------------------------------------------------------
\pagestyle{scrheadings}
% chapterpagestyle gibt es nicht in scrartcl
%\renewcommand{\chapterpagestyle}{scrheadings}
\clearscrheadfoot
% Kopfzeile
\renewcommand{\headfont}{\normalfont} % Schriftform der Kopfzeile
\ihead{\large{\textsc{\titel}}\\ \small{\untertitel} \\[2ex] \textit{\headmark}}
\chead{}
\ohead{\includegraphics[scale=0.2]{\betriebLogo}}
\setlength{\headheight}{18mm} % Höhe der Kopfzeile
%\setheadwidth[0pt]{textwithmarginpar} % Kopfzeile über den Text hinaus verbreitern (falls Logo den Text überdeckt)
% Fußzeile
\ifoot{\autorName}
\cfoot{}
\ofoot{\pagemark}
% Überschriften nach DIN 5008 in einer Fluchtlinie
% ------------------------------------------------------------------------------
% Abstand zwischen Nummerierung und Überschrift definieren
% > Schön wäre hier die dynamische Berechnung des Abstandes in Abhängigkeit
% > der Verschachtelungstiefe des Inhaltsverzeichnisses
\newcommand{\headingSpace}{1.5cm}
% Abschnittsüberschriften im selben Stil wie beim Inhaltsverzeichnis einrücken
\renewcommand*{\othersectionlevelsformat}[3]{
\makebox[\headingSpace][l]{#3\autodot}
}
% Für die Einrückung wird das Paket tocloft benötigt
%\cftsetindents{chapter}{0.0cm}{\headingSpace}
\cftsetindents{section}{0.0cm}{\headingSpace}
\cftsetindents{subsection}{0.0cm}{\headingSpace}
\cftsetindents{subsubsection}{0.0cm}{\headingSpace}
\cftsetindents{figure}{0.0cm}{\headingSpace}
\cftsetindents{table}{0.0cm}{\headingSpace}
% Allgemeines
% ------------------------------------------------------------------------------
\onehalfspacing % Zeilenabstand 1,5 Zeilen
\frenchspacing % erzeugt ein wenig mehr Platz hinter einem Punkt
% Schusterjungen und Hurenkinder vermeiden
\clubpenalty = 10000
\widowpenalty = 10000
\displaywidowpenalty = 10000
% Quellcode-Ausgabe formatieren
\lstset{numbers=left, numberstyle=\tiny, numbersep=5pt, breaklines=true}
\lstset{emph={square}, emphstyle=\color{red}, emph={[2]root,base}, emphstyle={[2]\color{blue}}}
\counterwithout{footnote}{section} % Fußnoten fortlaufend durchnummerieren
\setcounter{tocdepth}{3} % im Inhaltsverzeichnis werden die Kapitel bis zum Level der subsubsection übernommen
\setcounter{secnumdepth}{3} % Kapitel bis zum Level der subsubsection werden nummeriert
% Aufzählungen anpassen
\renewcommand{\labelenumi}{\arabic{enumi}.}
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}.}
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}}
% Tabellenfärbung:
\definecolor{heading}{rgb}{0.64,0.78,0.86}
\definecolor{odd}{rgb}{0.9,0.9,0.9}
================================================
FILE: Allgemein/Silbentrennung.tex
================================================
% Trennvorschläge im Text werden mit \" angegeben
% untrennbare Wörter und Ausnahmen von der normalen Trennung können in dieser
% Datei mittels \hyphenation definiert werden
================================================
FILE: Allgemein/natdin.bst
================================================
%% natdin.bst Vers. [3.1] 2006-01-02 mit PWD cite-multimode
%%
%% Aenderungen seit Vers. [3.0bx]:
%% a) Funktions-Zusaetze bei Autoren sind nun moeglich
%% b) Internetquellen ohne Zusatz "Online--Ressource" !
%% c) verbesserte INPROCEEDINGS, PROCEEDINGS-Funktionen
%% d) neue TECHREPORT und MANUAL-Funktionen
%% e) neue format.pages.book-Funktion
%% f) neue format.online.lastchecked-Funktion
%%
%%
%% K.F.Lorenzen (Copyright 1994-2006) email: lorenzen.marxen@t-online.de
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%% Mit diesem BibTex-style werden Literaturverzeichnisse nach dem deutschen
%% Standard DIN 1505, Teil 2 und 3 formatiert. Die label im Quellen-/
%% Literaturverzeichnis sind vom Typ 'Verfasser - Jahr' und
%% entsprechen den Zitatformen im Text. Es koennen alle von
%% Patrick W. Daly im natbib-Paket implementierten Zitierbefehle
%% genutzt werden. Eine Kurzbeschreibung liegt als Datei natnotes.pdf zusammen
%% mit der im Aufbau befindlichen Beschreibung des natdin-Stils
%% unter der URL http://www.haw-hamburg.de/pers/Lorenzen/bibtex.
%% Eine Anleitung zur Anwendung der Norm DIN 1505 findet sich unter der
%% URL http://www.bui.haw-hamburg.de/pers/klaus.lorenzen/ASP/litverz.pdf
%%
%% Es werden nun auch Elektronische Online / Offline Ressourcen wie
%% Internetquellen, CD-ROM usw. verarbeitet. Dazu kommen spezielle
%% Publikationsformen wie Patente, Normen, Karten, Fernsehaufzeichnungen,
%% Gesetzesstellen, Spiele u.a.
%
%% NATDIN.BST muss zusammen mit NATBIB.STY von Patrick W. Daly und der in
%% dieser Verteilung modifizierten Konfiguration NATBIB.CFG aufgerufen
%% werden. NATDIN.BST ist vorzugsweise in den ...\bibtex\bst - Pfad zu
%% stellen. Die jeweils individuelle Konfiguration NATBIB.CFG wird am
%% besten in das Verzeichnis der LaTex-Quelle selbst gelegt.
%%
%% Eine Muster-Konfiguration wird auf Vorschlag von Helge Baumann eingefuegt:
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% NATBIB.CFG in Verbindung mit natbib.sty Lorenzen, 2005-05-31
% diese Konfigurationsdatei wird zuletzt eingelesen und
% enthaelt die lokal gewuenschten Einstellungen fuer den
% Bibliographie-- und Zitierstil
%
% \newcommand{\bibstyle@natdin}%
% {\bibpunct{(}{)}{;}{a}{}{,~}
% \gdef\NAT@biblabelnum##1{\textbf{##1}\\}} %% \\ bewirkt Zeilenumbruch
% %% nach label-Ausgabe
%
% \bibstyle@natdin
%
% % Einzug der Belege nach der Einordnungsmarke
% \setlength{\bibhang}{7mm}
%
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%%
%% Zur Gewaehrleistung der Allgemeingueltigkeit von bib-files gelten
%% in den DIN-styles mit einer einzigen Ausnahme die in der Tex-Literatur
%% veroeffentlichten originalen Definitionen und Regeln fuer die
%% Publikationstypen (entry-types) und die bibliographischen Felder (fields).
%% Die Ausnahme bezieht sich auf den entry-type PROCEEDINGS und das Feld
%% address, fuer das Oren Patashnik dort die Sonderbedeutung "Konferenzort"
%% gewaehlt hatte. In den DIN-Stilen behaelt address auch hier seine normale
%% Bedeutung als "Verlagsort" bei!
%% In einigen entry-types werden zu Gunsten bibliographischer Vollstaendigkeit
%% mehr optionale Felder verwendet als seinerzeit von Patashnik angegeben.
%% Treten "Schoenheitsfehler" im fertig gesetzten output auf,
%% lassen sich diese so gut wie immer durch eine veraenderte
%% Erfassung im bib-inputfile beseitigen. Oren Patashnik empfiehlt, die
%% Definition der Felder weit auszulegen. Last but not least koennen
%% Sie im output-file < *.bbl > noch letzte Hand zur Korrektur ansetzen.
%% Wegen der meist langen Internetadressen kann es zu "unschoenen" Luecken
%% im Belegtext kommen. Dann muss mit \underfull hbox.... gekaempft werden.
%%
%% Die Darstellung von Internetadressen wird durch das Zusatzpaket
%% url.sty ver 3.1, 15-Mar-2004 von Donald Arseneau erheblich verbessert und
%% wird sehr empfohlen.
%%
%% HYPERREF-Paket: wird dieses Paket zusaetzlich geladen, werden im output
%% aktivierbare externe (URLs usw.) und interne (Dokumentbezogene) Links
%% gesetzt. Sehr gute Zusammenarbeit mit PDFLaTex u.a.
%
%% WARN- UND FEHLERMELDUNGEN
%% Ursache von Warnmeldungen sind meistens ausgelassene Felder oder
%% Erfassungs-"Fehler". Letztere haengen teilweise mit den gegenueber US-
%% Gepflogenheiten andersartigen bibliographischen Regeln nach DIN 1505
%% zusammen. Sie sind also in Wahrheit keine "Fehler" und duerfen fast immer
%% ignoriert werden. Dennoch pruefen Sie diese Warnungen, um heraus zu finden,
%% ob Publikationstyp (=entry-type) und "fields" eventuell unzulaessig
%% kombiniert worden sind.
%% Echte Fehler ("errors") duerften nur noch bei bibliographisch falscher
%% Erfassung auftreten. Pruefen Sie die Syntax, den entry-type und die fields.
%% Zu guter letzt: Qualitaetsmasstab ist einzig der DIN-konforme output!
%%
%% DANKSAGUNG
%% Hartmut Lueddecke, HAW Hamburg, hat viele Verbesserungsvorschlaege
%% in die frueheren Versionen eingebracht. Ihm danke ich herzlich.
%% Patrick W. Daly, dem Entwickler des Natbib-Stils, verdanke ich viele
%% Anregungen und den steten Ansporn, die DIN-Stile zu verbessern.
%% Helge Baumann hatte mit seiner Weiterentwicklung meines alten natdin.bst
%% zu dinat.bst (Vers. 2001) die volle Zitierkapazitaet des natbib-Pakets
%% eingefuehrt. Damit war ein deutlicher Zugewinn erreicht. Von ihm stammt
%% der in der vorliegenden natdin.bst-Version 3.0x neu eingefuehrte Befehl
%% \dinatlabel unter seinem von H. Baumann vergebenen Namen.
%% Viele an dieser Stelle ungenannt bleibende Anwender haben mich in
%% den vergangenen Jahren auf Fehler oder Verbesserungsmoeglichkeiten
%% aufmerksam gemacht und so diesen Stil mitentwickelt. Ihnen gilt mein
%% besonderer Dank. Ihr Feedback ist immer willkommen und eine Ermunterung.
%%
%% Klaus F. Lorenzen
%%
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%% version 0.99c for BibTeX versions 0.99c or later, LaTeX2e version
%% Copyright (C) 1985, all rights reserved.
%% Copying of this file is authorized only if either
%% (1) you make absolutely no changes to your copy, including name, or
%% (2) if you do make changes, you name it something other than
%% natdin.bst, natbib.sty
%% This restriction helps ensure that all standard styles are identical.
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%%
%% NEUE FELDER
%% Zur Erfassung von Internetquellen, E-mail u.a. gibt es folgende
%% neue Felder: doi, lastchecked (nach Gray), url, urn
%% Internetquellen (z.B. auch E-mail) werden vorzugsweise mit dem
%% BOOKLET-Typ erfasst.
%% Normen, Patente, Schutzrechte, Gesetzesstellen sind mit dem MISC-Typ
%% zu erfassen.
%%
ENTRY
{ address %% Verlagsort (immer!)
author %% persoenlicher Urheber eines Werkes oder am Zustandekommen
%% beteiligte Personen(=Mitarbeiter, Uebersetzer, Redakteur u.a.)
booktitle %% a) Gesamttitel eines mehrbaendigen Werkes
% %% b) Titel des Sammelwerks, das einzelne selbstaendige
% %% Beitraege mit eigenem Titel enthaelt ->incollection
chapter %% Kapitel in einem Buch (Monographie)
doi %%% Digital Object Identifier ->article
edition %% a) Auflagevermerk
% %% b) bei selbst. elektron. Quellen == Version ->booklet
editor %% Persoenl.Herausgeber oder Koerperschaftlicher Herausgeber
howpublished %% beliebiger Verlegervermerk: veroeffentlicht "von wem, wo"
institution %% Institution, die e.verlagsfreie Veroeffentlichung betreibt
isbn %% Standardnr fuer Buecher
issn %% - " - : Zeitschriften u. Serien
journal %% Titel einer Zeitschrift
key %% Zusaetzlich vergebener Sortierschluessel, mitunter notwend.
lastchecked %% neues Feld fuer das Datum des Online-Abrufs
% %% einer Internetquelle (n. GRAY )
month %% naehere Bestimmung des Erscheinungsjahres -> macro 's
note %% freies Eingabefeld fuer zusaetzliche Informationen z. Quelle
number %% Versch. Bedeutungen in Abhaengigkeit vom Eingabetyp:
% %% a) Bandnummer einer gezaehlten Reihe (series)
% %% b) Heftnummer einer Zeitschrift ->article
% %% c) Nummer eines Forschungsberichts ->techreport
organization %% a) Name der Organisation/des Organisators e. Tagung,Konferenz
% %% b) Name einer Firma/Gesellschaft, die ein ->manual herausgab
pages %% Umfangsangaben, meist Seitenzahlen
publisher %% Verlag
school %% Hochschule/Universitaet, die eine Dipl.-Arb./Dissertation veroeff.
series %% Titel e.Reihe, in der ein best. Buchtitel erschienen ist
title %% Titel einer (namentlich gekennzeichneten) Veroeffentlichung
type %% Zusatzfeld z.Kennzeichnung e.besonderen Publikationstyps
url %% neues Feld URL ( Uniform Resource Locator ):
% %% Serveradresse einer Internetquelle
urn %% neues Feld URN ( Uniform Resource Name ):
% %% Persistent Identifier einer Internetquelle
volume %% a) Zaehlung bei einem mehrbaendigen Werk ->book/->proceedings
% %% b) Jahrgang einer Zeitschrift ->article
year %% Erscheinungsjahr
}
{}
{ label extra.label sort.label short.list dinat.label}
%%%----------------------------------------------------------------------------
% Einige Standardvorgaben, die vom Benutzer veraendert werden koennen.
%%%----------------------------------------------------------------------------
% Abkuerzung ("... und andere") bei Mehrverfasserquellen:
FUNCTION { ua.etal } { " u.\,a." } %% evtl. auch in eckigen Klammern " [u.\,a.]"
%% oder lateinisch: FUNCTION { ua.etal } { " et~al." }
FUNCTION { und } { " und " }
%% oder ausgeschrieben: FUNCTION { und } { " und " }
% Einige elektronische Medien erhalten nach DIN 1505 eine "Ergaenzende Angabe"
% zusaetzlich zum materiellen Typ, z.B. CD ROM oder DVD u.a.:
FUNCTION { eress } { "Elektronische Ressource" }
%%%-----------------------------------------------------------------------------------
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
INTEGERS { after.firstblock }
INTEGERS { colon.after period.dash }
INTEGERS { zahl lang }
INTEGERS { len }
INTEGERS { longest.label.width last.extra.num number.label }
INTEGERS { nameptr namesleft numnames }
INTEGERS { ptr collation collrest }
STRINGS { longest.label last.label next.extra }
STRINGS { h s t u v w }
STRINGS { fkt }
%%---------------------------
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#4 'colon.after :=
#5 'period.dash :=
#6 'after.firstblock :=
}
FUNCTION {set.period.dash} %% Wenn ein ". - " die Satzteile trennen soll.!
{ output.state before.all =
'skip$
{ period.dash 'output.state := }
if$
}
FUNCTION {set.period.dash.check}
{ empty$
'skip$
'set.period.dash
if$
}
FUNCTION {set.colon.after} %%$$$ Wenn ein ": " d. Satzteile trennen soll!
{ output.state before.all =
'skip$
{ colon.after 'output.state := }
if$
}
%% Wenn ein " " die Satzteile trennen soll.!
FUNCTION {new.sentence}
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
%% neu 17/2/94 Wenn ein ", " die Satzteile trennen soll.!
FUNCTION { part.of.sentence }
{ output.state before.all =
'skip$
{ mid.sentence 'output.state := }
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {output.nonnull}
{ 's :=
output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
{ write$ }
{ output.state colon.after =
{ ": " * write$
newline$
"\newblock " write$
}
{ output.state period.dash =
{ ". -- " * write$
newline$
"\newblock " write$
}
{ output.state mid.sentence =
{ ", " * write$ }
{ output.state after.sentence =
{ " " * write$ }
{ output.state after.firstblock =
{ add.period$ write$
newline$
"\newblock " write$
}
{ write$
newline$
"\newblock " write$
}
if$
}
if$
}
if$
}
if$
}
if$
}
if$
after.block 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {format.date}
{ year duplicate$ empty$
{ "empty year in " cite$ * warning$
pop$ "" }
'skip$
if$
month empty$
'skip$
{ type$ "book" =
type$ "inbook" =
OR
'skip$
{ month " " * swap$ * }
if$
}
if$
%% ohne Extrabuchstabe beim Erscheinungsjahr
}
FUNCTION {format.edition.or.date}
{ edition empty$ year empty$ and
{ "" }
{ edition empty$
{ type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ " gesendet: " "-- " type * swap$ *
format.date *
}
{ "\,Version:\,"
format.date *
}
if$
}
{ "\,Version:\,"
format.date *
}
if$
}
{ year empty$
{ "\,Version:\," edition * }
{ "\,Version:\," edition * ", " *
format.date *
}
if$
}
if$
}
if$
}
FUNCTION {format.online.lastcheck}
{ lastchecked empty$
{ url empty$ doi empty$ urn empty$ and and
{ skip$ }
{ "" output }
if$
}
{ url empty$ doi empty$ urn empty$ and and
{ "there's a lastchecked date but no url, urn or doi in "
cite$ * warning$
}
{ part.of.sentence
lastchecked "Abruf: " swap$ * output
}
if$
}
if$
}
FUNCTION {format.maillist.lastcheck}
{ type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ format.online.lastcheck }
'skip$
if$
}
'skip$
if$
}
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ new.block "\url{http://dx.doi.org/" doi * "}" *
%% { new.block "\url{http://dx.medra.org/" doi * "}" *
}
if$
}
FUNCTION {format.url}
{ urn missing$
{ doi missing$
{ url empty$
{ "" }
{ type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ type$ "incollection" =
{ "" }
{ "\,Absenderadresse: \url{" url * "}" * }
if$
}
{ "\url{" url * "}" * }%% evtl. "URL" oder "<...>"
if$
}
{ "\url{" url * "}" * } %% evtl. "URL" oder "<...>"
if$
}
if$
}
{ format.doi }
if$
}
{ "\url{http://nbn-resolving.de/urn/resolver.pl?urn=" urn * "}" *
}
if$
}
FUNCTION {format.maillist.url}
{ url empty$
{ "" }
{ type empty$
{ "" }
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ "\url{" url * "}" * }
{ "" }
if$
}
if$
}
if$
}
FUNCTION {format.full.names}
{'s :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}" format.name$ 't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ ua.etal * }
{ und * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {author.editor.full}
{ author empty$
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
{ author format.full.names }
if$
}
FUNCTION {author.full}
{ author empty$
{ "" }
{ author format.full.names }
if$
}
FUNCTION {editor.full}
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
FUNCTION {make.full.names}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.full
{ type$ "proceedings" =
'editor.full
'author.full
if$
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[\scshape{}" write$
label write$
")" make.full.names duplicate$ short.list =
{ pop$ }
{ * }
if$
"]{" * write$
cite$ write$
"}" write$
newline$
"\dinatlabel{\upshape{}" dinat.label * "} " * %% Zeilenumbruch steht in NATBIB.CFG!
write$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ write$
newline$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "\emph{" swap$ * "}" * }
if$
}
FUNCTION { capitalize }
{ duplicate$ empty$
{ pop$ "" }
{ "\textsc{" swap$ * "}" * }
if$
}
FUNCTION {article.in.journal}
{ duplicate$ empty$
{ pop$ "" }
{ author missing$ title missing$ and
{ emphasize }
{ emphasize "{In: }" swap$ * }
if$
}
if$
}
FUNCTION {format.names}
{ 's :=
"" 'u :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{
s nameptr "{ll}" format.name$ 't :=
t capitalize 't :=
s nameptr "{ jj}" format.name$ 'w :=
s nameptr "{, ff}{ vv}{ jj}" format.name$ 'u :=
u text.length$ 'lang :=
#1 'zahl :=
"" 'v :=
{ zahl lang < }
{ u zahl #1 substring$ "~" =
{ v "" =
{ u #1 zahl #1 - substring$ 'v := }
'skip$
if$
v u zahl #2 substring$ * "." * w * 'v :=
}
'skip$
if$
zahl #1 + 'zahl := }
while$
v "" =
{ u 'v := }
'skip$
if$
t v * fkt * 't :=
nameptr #1 >
{ namesleft #1 >
{ " ; " * t * }
{ numnames #2 >
{ " " * }
'skip$
if$
t "\textsc{others}" = t "\textsc{others} (Hrsg.)" = or
{ ua.etal * }
{ " ; " * t * }
if$
}
if$ %% Ende der namesleft-Pruefung
}
't
if$ %% Ende der nameptr-Pruefung
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$ %% Ende von { namesleft #0 > } ganz oben
"" 'fkt := %% fkt wird zurueckgesetzt
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ author empty$
{ "empty author and editor in " cite$ * warning$ "" }
'skip$
if$
}
{ author empty$
{ " (Hrsg.)" 'fkt :=
editor format.names
}
{ " (Hrsg.)" 'fkt :=
" ; " * editor format.names *
}
if$
}
if$
}
%% 2005-11-11
FUNCTION { format.authors.organization }
{ type$ "misc" =
{ organization empty$
{ author empty$
{ "" }
{ author format.names " (Erfinder)" * }
if$
}
{ author empty$
{ organization }
{ author format.names " (Erfinder); " *
organization * " (Anmelder)" *
}
if$
}
if$
}
{ type$ "manual" =
{ organization empty$
{ format.authors }
{ author empty$
{ organization capitalize " (Hrsg.)" * }
{ author format.names }
if$
}
if$
}
'skip$
if$
}
if$
}
FUNCTION { format.editors.organization }
{ organization empty$
'skip$
{ type$ "misc" =
{ organization }
{ * " ; " * organization " (Veranst.)" *}
if$
}
if$
}
FUNCTION { format.tr.institution }
{ institution empty$
'skip$
{ institution capitalize }
if$
}
FUNCTION {format.ed.incoll}
{ editor empty$
{ "" }
{ " (Hrsg.)" 'fkt :=
editor format.names
format.editors.organization
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title } %% Text so wie er dasteht im Feld title
if$
}
FUNCTION {format.number}
{ number empty$
{ "" }
{ number " " * } %% Text so wie er im Feld number steht plus " "
if$
}
FUNCTION {format.digital.type}
{ type empty$
{ "" }
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ "" }
{ type } %% Typ einer digitalen Ressource in Form einer
%% "Ergaenzenden Angabe", so wie er dasteht;
%% Alternativ kann dieser Text auch in NOTE erfasst werden.
if$
}
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
%% Auflagenvermerke gibt man komplett, einschliesslich Abkuerzungen in
%% das Feld edition ein: ---> EDITION= { 3., erw. und verb. Aufl. }
%% oder fremdsprachlich: EDITION= { 2nd edition }
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ edition }
if$
}
FUNCTION {format.version.url}
{ url empty$ doi empty$ urn empty$ and and
{ type$ "techreport" =
{ format.edition }
{ "" }
if$
}
{ format.edition.or.date output format.url }
if$
}
FUNCTION {format.edition.or.version}
{ url empty$ doi empty$ urn empty$ and and
{ format.edition }
{ format.edition.or.date }
if$
}
FUNCTION {format.address.publisher.year}
{ publisher empty$
{ address empty$
{ year empty$
{ "" }
{ year }
if$
}
{ "there's an address but no publisher in " cite$ * warning$
address ", " * format.date *
}
if$
}
{ address empty$
{ year empty$
{ "neither address nor publication date in " cite$ * warning$
publisher
}
{ publisher ", " * format.date * }
if$
}
{ year empty$
{ address " : " * publisher * }
{ address " : " * publisher * ", " * format.date * }
if$
}
if$
}
if$
}
FUNCTION {format.howpublished}
{ url missing$ urn missing$ doi missing$ AND AND
{ howpublished empty$
{ address empty$
{ type empty$
{ "" }
{ type #-1 #4 substring$ "mail" =
{ "(gesendet: " new.sentence
format.date * ")" *
}
{ "" }
if$
}
if$
format.date *
}
{ address ", " * format.date * }
if$
}
{ address empty$
{ howpublished ", " * format.date * }
{ address " : " * howpublished * ", " * format.date * }
if$
}
if$
}
{ howpublished empty$
{ "" }
{ howpublished }
if$
}
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {format.btitle.vol}
{ number empty$
{ series empty$
{ volume empty$
{ title emphasize }
{ title emphasize ". Bd." * volume tie.or.space.connect }
if$
}
{ volume empty$
{ title emphasize }%% ein Buch, das zusaetzl. SERIES=Reihentitel besitzt
%% jetzt kommt d. Fall des mehrbaendigen Werkes mit Gesamttitel=SERIES
%% Zaehlung=VOLUME und Bandtitel=TITLE;
{ series emphasize ". Bd." * volume tie.or.space.connect
": " * "{\emph{" * title * "}}" * }
if$
}
if$%% series-test
}
{ title emphasize }%% wenn number ex., dann immer title-Feld
if$%% Ende number-test
}
FUNCTION {format.series.number.din}
{ volume empty$
{ number empty$
{ series empty$
{ "" }
{ "(" series * ")" * } %% d. Seriennr koennte auch gleich hier
%% im SERIES-Feld miterfasst werden
if$
}
{ series empty$
{ "(" number tie.or.space.connect ")" *
"there's a number but no series in " cite$ * warning$
}
{ "(" series * number tie.or.space.connect ")" * }
if$
}
if$
}
{ series empty$
{ "" }
{ type$ "proceedings" = %% Sonderfall, es darf VOLUME und NUMBER ex. !
type$ "inproceedings" = OR
{ number empty$
{ "(" series * ")" * }
{ "(" series * number tie.or.space.connect ")" * }
if$
}
{ "" }%% Ausstieg mit Nullstring, s. Kommentar
if$
}%% bei gezaehlten Reihen MUSS die Reihennr. im Feld NUMBER stehen!
if$ %% wenn also d. Feld VOLUME nicht leer ist, dann liegt ausser bei
%% Typ PROCEEDINGS/INPROCEEDINGS falsche
} %% Erfassung vor und es erfolgt d. Ausstieg mit d. Nullstring!
if$
}
FUNCTION {format.tr.series.or.number}
{ number empty$
{ series empty$
{ "" }
{ "(" series * ")" * }
if$
}
{ series empty$
{ "(" number * ")" * }
{ "(" series * number tie.or.space.connect ")" * }
if$
}
if$
}
FUNCTION {format.misc.series}
{ series empty$
{ "" }
{ "(" series * ")" * }
if$
}
FUNCTION { format.doi.urn }
{ urn empty$
{ doi empty$
{ "" }
{ "DOI" doi n.dashify tie.or.space.connect }
if$
}
{ "URN" urn n.dashify tie.or.space.connect }
if$
}
FUNCTION { format.isbn.issn }
{ isbn empty$
{ issn empty$
{ "" }
{ "ISSN" issn n.dashify tie.or.space.connect }
if$
}
{ "ISBN" isbn n.dashify tie.or.space.connect }
if$
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ url empty$
{ "S." pages n.dashify tie.or.space.connect }
{ pages }
if$
}
if$
}
FUNCTION {format.pages.book}
{ pages empty$
{ "" }
{ note empty$ isbn empty$ AND
{ "" pages n.dashify tie.or.space.connect " S" *
add.period$
}
{ "" pages n.dashify tie.or.space.connect " S" *
}
if$
}
if$
}
FUNCTION {format.pages.bkcollation}
{ pages empty$
{ "" }
{ "" pages n.dashify tie.or.space.connect }
if$
}
FUNCTION {format.bkpages.collat.check}
{ 's :=
#1 'ptr :=
s text.length$ 'collation :=
collation #1 =
{ format.pages.book }
{
collation 'collrest :=
{ collrest #0 > }
{ s ptr #2 substring$ 't :=
t "S." =
{ format.pages.bkcollation
#0 'collrest := }
{ ptr #1 + 'ptr :=
collrest #1 - 'collrest :=
#1 collrest =
{ format.pages.book }
{ skip$ }
if$
}
if$
}
while$
}
if$
}
FUNCTION {format.vol.year.num.pages}
{ volume field.or.null
year empty$
{ "there's no year in " cite$ * warning$ }
{ " (" year * ")" * * }
if$
month empty$
'skip$
{ ", " month * * }
if$
number empty$
'skip$
{ ", Nr. " number * * }
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ "" }
{ title missing$
{ ", " pages format.bkpages.collat.check * *}
{ ", " format.pages * *}
if$
}
if$
}
if$
}
FUNCTION {format.chapter.inbook}
{ duplicate$ empty$
{ pop$ "empty chapter in " cite$ * warning$ }
{ type empty$
{ "\emph{Kapitel\/} " swap$ tie.or.space.connect }
{ type " " * swap$ * }%% wenn keine bes. Abschnittsform gen. werden soll,
%% koennte e. kl. Zwischenraum gewaehlt werden, z.B. " \, "
if$
}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "Kapitel " }
{ url empty$
{ type }
{ "Kapitel " }
if$
}
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle.din}
{ booktitle empty$
{ "" }
{ editor empty$
{ volume empty$
{ "{In: }" booktitle emphasize * }%% n. Belieben fettes In:
{ "{In: }" booktitle emphasize * %% - " -
" Bd." volume tie.or.space.connect *
}
if$
}
{ volume empty$
{ "{In: }" format.ed.incoll * ": " * booktitle emphasize * }
{ "{In: }" format.ed.incoll * ": " * booktitle emphasize *
" Bd." volume tie.or.space.connect *
}
if$
}
if$
}
if$
}
FUNCTION {format.thesis.tr.type}
{ type empty$
'skip$
{ pop$
type
}
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "{In: }{\emph " journal * "}" * }%% n. Belieben fettes In:
if$
}
{ "{In: }" key * }%% s.o. fettes In:
if$
" {\textbf{\citep{" * crossref * "}" * "}" * "}" * ", " * format.pages *
}
FUNCTION {format.crossref.editor}
%vorher,Lue { editor #1 "{vv~}{ll}" format.name$ " (Hrsg.)" *
{ editor #1 "{ll}" format.name$ " (Hrsg.)" *
editor num.names$ duplicate$
#2 >
{ pop$ ua.etal * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ ua.etal * }
{ " ; " * editor #2 "{vv~}{ll}" format.name$ * " (Hrsg.)" * }
if$
}
if$
}
if$
}
FUNCTION {format.inbk.vol.title}
{ volume empty$
{ " In: " }
{ title empty$
{ " In: Bd." volume tie.or.space.connect
" von " *
}
{ "In: Bd." volume tie.or.space.connect ": " * title emphasize *
" (" * year * ") in " *
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ type$ "inbook" =
{ format.inbk.vol.title }
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
" "
}
{ ". -- Bd." volume tie.or.space.connect
" von " *
}
if$
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ "" * }%% dadurch kommt nach der Band Nr. gleich das label 2/6/99
%% { "{\emph{" * series * "}} {\textbf{siehe}} " * }
if$
}
{ key * }
if$
}
{ "" * }
if$
"{\textbf{\citep{" * crossref * "}" * "}" * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ "{In: }{\emph " booktitle * "}" * }%%
if$
}
{ "{In: }" }
if$
}
{ "{In: }" }
if$
"{\textbf{\citep{" * crossref * "}" * "}" * "}" * %% ", " * format.pages *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
set.colon.after
format.title "title" output.check
crossref missing$
{ journal article.in.journal output.nonnull
new.sentence
format.vol.year.num.pages output
format.url output
}
{ format.article.crossref output.nonnull }
if$
format.online.lastcheck
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
issn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors format.editors output.nonnull }
if$
set.colon.after
crossref missing$
{ format.btitle.vol "title" output.check }
{ format.btitle "title" output.check }
if$
format.edition output
format.address.publisher.year "publisher" output.check
new.sentence
crossref missing$
{ format.series.number.din output }
{ format.book.crossref output.nonnull }
if$
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
format.doi output
format.url output
new.block
isbn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors format.editors output.nonnull }
if$
set.colon.after
format.btitle "title" output.check
format.edition.or.version output
format.url output
format.online.lastcheck
format.howpublished output
series new.sentence.checka
format.series.number.din output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
type set.period.dash.check
format.digital.type output
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
note set.period.dash.check
note output
format.isbn.issn output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
chapter format.chapter.inbook output.nonnull
crossref missing$
{ author empty$
{ format.editors "\,{In:\,}" swap$ * "author and editor" output.check }
{ format.authors "\,{In:\,}" swap$ * output.nonnull }
if$
author empty$ editor empty$ AND
{ before.all 'output.state := }
{ set.colon.after }
if$
format.btitle.vol "title" output.check
format.edition output
format.address.publisher.year "publisher" output.check
new.sentence
format.series.number.din output
isbn set.period.dash.check
format.isbn.issn output
}
{ format.book.crossref output.nonnull
}
if$
part.of.sentence
format.pages output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
set.colon.after
format.title "title" output.check
format.version.url output
type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
'skip$
{ format.online.lastcheck }
if$
}
{ format.online.lastcheck }
if$
crossref missing$
{ format.in.ed.booktitle.din "booktitle" output.check
format.edition output
format.address.publisher.year "publisher" output.check
format.maillist.url output
format.maillist.lastcheck
new.sentence
format.series.number.din output
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
}
{ format.incoll.inproc.crossref output.nonnull }
if$
part.of.sentence
format.chapter.pages "pages" output.check
note set.period.dash.check
note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
set.colon.after
format.title "title" output.check
crossref missing$
{ format.in.ed.booktitle.din "booktitle" output.check
address empty$
{ organization new.sentence.checka
organization output
part.of.sentence
format.address.publisher.year output
}
{ format.address.publisher.year "publisher" output.check }
if$
new.sentence
format.series.number.din output
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
}
{ format.incoll.inproc.crossref output.nonnull }
if$
part.of.sentence
format.pages output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {conference} { inproceedings }%% nach Patashnik, wg US-Kompatibilitaet
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
{ title empty$
'skip$
{format.btitle "title" output.check }
if$
}
'skip$
if$
}
'skip$
if$
format.authors.organization output.nonnull
set.colon.after
format.btitle "title" output.check
format.edition "edition" output.check
author empty$ organization empty$ AND
{ address "address" output.check
part.of.sentence
}
{ organization empty$
{ address "address" output.check
part.of.sentence
}
{ address ": " * organization * output
part.of.sentence
}
if$
}
if$
format.date output
number empty$
'skip$
{ "(" number * ") " * output }
if$
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
format.doi output
format.url output
format.online.lastcheck
note set.period.dash.check
note output
fin.entry
}
%% Standard ist "Diplomarbeit", anderes mit TYPE="anderer Typ" erfassen!
%% z.B. TYPE={Hausarbeit}, TYPE={Diss.}, TYPE={Habil.}, TYPE={Magisterarb.}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
set.colon.after
format.btitle "title" output.check
address output
part.of.sentence
school "school" output.check
part.of.sentence
"Diplomarbeit" format.thesis.tr.type output.nonnull
part.of.sentence
format.date "year" output.check
format.url output
format.online.lastcheck
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
note set.period.dash.check
note output
fin.entry
}
FUNCTION {phdthesis} %% {mastersthesis}% ist identisch bis auf Standardwert, s.o.
{ output.bibitem
format.authors "author" output.check
set.colon.after
format.btitle "title" output.check
address output
part.of.sentence
school "school" output.check
part.of.sentence
"Diss." format.thesis.tr.type output.nonnull % koennte auch `Dissertation' sein
part.of.sentence
format.date "year" output.check
format.url output
format.online.lastcheck
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
note set.period.dash.check
note output
fin.entry
}
%% Normen, Vornormen, Schutzrechte (Patente) werden hiermit erfasst;
%% E-mail, (auch Internetressourcen moeglich; besser --> booklet-Fkt!)
%% das type-Feld uebernimmt eine wichtige Steuerfunktion:
FUNCTION {misc}
{ output.bibitem
type missing$ not
{ type duplicate$ #1 #4 substring$ "Norm" =
type #1 #4 substring$ "Vorn" = OR
{ " " *
format.number * output
new.sentence
format.date output
title empty$
{ skip$ }
{ add.period$ new.sentence }
if$
format.btitle "title" output.check
note set.period.dash.check
note output
}
{ duplicate$ #1 #6 substring$ "Schutz" =
{ " " * format.number * output
new.sentence
"(" * format.date ")" * output
add.period$ new.sentence
format.authors.organization add.period$ output
note output
}
%% wenn irgendein anderer Typ eingetragen ist
{ pop$ pop$ ""
title empty$
{ note empty$
{ url empty$
{ "there's no relevant field in " cite$ warning$
pop$ ""
}
{ format.url output }%%%
if$
}
{ note " " * output.nonnull }
if$
}
{ author empty$
{ editor empty$
{ organization empty$
{ skip$ }
{ format.editors.organization output.nonnull
set.colon.after
}
if$
}
{ format.editors format.editors.organization
output.nonnull set.colon.after
}
if$
}
{ format.authors format.editors output.nonnull
set.colon.after
}
if$
format.btitle output.nonnull
url empty$
{ format.edition output
format.howpublished output}
{ format.howpublished output
format.edition.or.version output
format.url output
}
if$
format.online.lastcheck
new.sentence
format.misc.series output
note set.period.dash.check
note output
}
if$
}
if$
}
if$
}
%% wenn es keinen type gibt
{ title empty$
{ note empty$
{ url empty$
{ "there's no relevant field in " cite$ warning$
pop$ ""
}
{ format.url output }%%% das waere e. reine URL
if$
}
{ note " " * output.nonnull
}
if$
}
{ author empty$
{ editor empty$
{ organization empty$
'skip$
{ format.editors.organization output.nonnull
set.colon.after
}
if$
}
{ format.editors format.editors.organization
output.nonnull set.colon.after
}
if$
}
{ format.authors format.editors output.nonnull
set.colon.after
}
if$
format.btitle output.nonnull
url empty$
{ format.edition output
format.howpublished output}
{ format.howpublished output
format.url output
format.edition.or.date output
format.online.lastcheck
}
if$
new.sentence
format.misc.series output
note set.period.dash.check
note output
}
if$
}
if$
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization empty$
{ "empty organization and editor in " cite$ * warning$ }
{ organization " (Veranst.)" * output }
if$
}
{ format.editors format.editors.organization output.nonnull }
if$
set.colon.after
format.btitle "title" output.check
volume empty$
'skip$
{ "{\textnormal{Bd.}}" volume tie.or.space.connect emphasize "volume" output.check }
if$
format.address.publisher.year "publisher" output.check
new.sentence
format.series.number.din output.nonnull
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
format.tr.institution output.nonnull }
{ format.authors format.editors output.nonnull }
if$
set.colon.after
format.title "title" output.check
institution empty$
'skip$
{ author empty$ editor empty$ AND
'skip$
{ institution new.sentence.checka
"/ " institution * output.nonnull
}
if$
}
if$
format.version.url output
format.online.lastcheck
format.address.publisher.year output
number new.sentence.checka
format.tr.series.or.number "number" output.check
"Forschungsbericht" format.thesis.tr.type set.period.dash.check
"Forschungsbericht" format.thesis.tr.type output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note "note" output.check
fin.entry
}
FUNCTION {unpublished} {misc}%% author, title, note muessen sein! howpublished
%% %% entfaellt natuerlich
FUNCTION {default.type} { misc }
MACRO {jan} {"Januar"}
MACRO {feb} {"Februar"}
MACRO {mar} {"M{\^^b a}rz"}
MACRO {apr} {"April"}
MACRO {mai} {"Mai"}
MACRO {may} {"Mai"}
MACRO {jun} {"Juni"}
MACRO {jul} {"Juli"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {okt} {"Oktober"}
MACRO {oct} {"Oktober"}
MACRO {nov} {"November"}
MACRO {dez} {"Dezember"}
MACRO {dec} {"Dezember"}
%%$$$ stillgelegte Beispiele fuer den Gebrauch von Kuerzeln (hier Zs-Titel).
%%MACRO {acmcs} {"ACM Computing Surveys"}
%%MACRO {acta} {"Acta Informatica"}
READ
FUNCTION {sortify}
{ purify$
"l" change.case$
}
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#2 >
{ pop$ ua.etal * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ ua.etal * }
{ und * s #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {author.key.label}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ author format.lab.names }
if$
}
FUNCTION {author.editor.key.label}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ year empty$
'key
{ editor format.lab.names }
if$
}
if$
}
{ author format.lab.names }
if$
}
FUNCTION {author.key.organization.label}
{ author empty$
{ key empty$
{ organization empty$
{ cite$ #1 #3 substring$ }
{ "The " #4 organization chop.word #3 text.prefix$ }
if$
}
{ key }
if$
}
{ author format.lab.names }
if$
}
FUNCTION {editor.key.organization.label}
{ editor empty$
{ key empty$
{ organization empty$
{ cite$ #1 #3 substring$ }
{ "The " #4 organization chop.word #4 text.prefix$ }
if$
}
{ key }
if$
}
{ key empty$%% das key-feld soll zwangsweise das label machen!
{ editor format.lab.names }
{ key }%%das ganze label
if$
}
if$
}
FUNCTION {calc.short.authors}
{ type$ "book" =
type$ "booklet" =
type$ "inbook" =
or or
'author.editor.key.label
{ type$ "proceedings" =
'editor.key.organization.label
{ type$ "manual" =
'author.key.organization.label
'author.key.label
if$
}
if$
}
if$
'short.list :=
}
FUNCTION {calc.label}
{ calc.short.authors
short.list
"("
*
%% year duplicate$ empty$
%% short.list key field.or.null = or
%% { pop$ "" }
%% 'skip$
%% if$
year field.or.null purify$ #1 #4 substring$
*
'label :=
short.list " " *
year field.or.null purify$ #1 #4 substring$ * 'dinat.label :=
}
FUNCTION {sort.format.names}
{ 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ nameptr #1 >
{ " " * }
'skip$
if$
s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
nameptr numnames = t "others" = and
{ ua.etal * }
{ t sortify * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {sort.format.title}
{ 't :=
"A " #2
"An " #3
"Der " #4
"Die " #4
"Das " #4
"Ein " #4
"Eine " #5
"The " #4 t chop.word
chop.word
chop.word
chop.word
chop.word
chop.word
chop.word
chop.word
sortify
#1 global.max$ substring$
}
FUNCTION {author.sort}
{ author empty$
{ key empty$
{ "to sort, need author or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {author.editor.sort}
{ author empty$
{ editor empty$
{ key empty$
{ "to sort, need author, editor, or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ editor sort.format.names }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {author.organization.sort}
{ author empty$
{ organization empty$
{ key empty$
{ "to sort, need author, organization, or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ "The " #4 organization chop.word sortify }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {editor.organization.sort.PWD}%% so war es in plainnat
{ editor empty$
{ organization empty$
{ key empty$
{ "to sort, need editor, organization, or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ "The " #4 organization chop.word sortify }
if$
}
{ editor sort.format.names }
if$
}
FUNCTION {editor.organization.sort}%%das key-Feld soll z. Sortieren ben. werden
{ key empty$
{ editor empty$
{ organization empty$
{ "to sort, need editor, organization, or key in " cite$ * warning$
""
}
{ "The " #4 organization chop.word sortify }
if$
}
{ editor sort.format.names }
if$
}
{ key sortify }
if$
}
FUNCTION {presort}
{ calc.label
label sortify
" "
*
type$ "book" =
type$ "booklet" =
type$ "inbook" =
or or
'author.editor.sort
{ type$ "proceedings" =
'editor.organization.sort
{ type$ "manual" =
'author.organization.sort
'author.sort
if$
}
if$
}
if$
" "
*
year field.or.null sortify
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.label :=
sort.label *
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {presort}
SORT
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'longest.label.width :=
#0 'last.extra.num :=
#0 'number.label :=
}
FUNCTION {forward.pass}
{ last.label label =
{ last.extra.num #1 + 'last.extra.num :=
last.extra.num int.to.chr$ 'extra.label :=
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
label 'last.label :=
}
if$
number.label #1 + 'number.label :=
}
FUNCTION {reverse.pass}
{ next.extra "b" =
{ "a" 'extra.label := }
'skip$
if$
extra.label 'next.extra :=
extra.label
duplicate$ empty$
'skip$
{ "{\natexlab{" swap$ * "}}" * }
if$
'extra.label :=
label extra.label * 'label :=
dinat.label extra.label * 'dinat.label :=
}
EXECUTE {initialize.longest.label}
ITERATE {forward.pass}
REVERSE {reverse.pass}
FUNCTION {bib.sort.order}
{ sort.label 'sort.key$ :=
}
ITERATE {bib.sort.order}
SORT
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" number.label int.to.str$ * "}" *
write$ newline$ newline$
"% this bibliography is generated by nd24.bst [3.0c2] from 2005-12-21"
write$ newline$ newline$
"\providecommand{\natexlab}[1]{#1}"
write$ newline$
"\providecommand{\url}[1]{\texttt{#1}}"
write$ newline$
"\makeatletter"
write$ newline$
"\newcommand{\dinatlabel}[1]%"
write$ newline$
"{\ifNAT@numbers\else\NAT@biblabelnum{#1}\fi}"
write$ newline$
"\makeatother"
write$ newline$
"\expandafter\ifx\csname urlstyle\endcsname\relax"
write$ newline$
" \providecommand{\doi}[1]{doi: #1}\else"
write$ newline$
" \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
================================================
FILE: Anhang/AnhangBenutzerDoku.tex
================================================
\subsection{Benutzerdokumentation}
\label{app:BenutzerDoku}
Ausschnitt aus der Benutzerdokumentation:
\begin{table}[htb]
\begin{tabularx}{\textwidth}{cXX}
\rowcolor{heading}\textbf{Symbol} & \textbf{Bedeutung global} & \textbf{Bedeutung einzeln} \\
\includegraphicstotab[]{weather-clear.png} & Alle Module weisen den gleichen Stand auf. & Das Modul ist auf dem gleichen Stand wie das Modul auf der vorherigen Umgebung. \\
\rowcolor{odd}\includegraphicstotab[]{weather-clear-night.png} & Es existieren keine Module (fachlich nicht möglich). & Weder auf der aktuellen noch auf der vorherigen Umgebung sind Module angelegt. Es kann also auch nichts übertragen werden. \\
\includegraphicstotab[]{weather-few-clouds-night.png} & Ein Modul muss durch das Übertragen von der vorherigen Umgebung erstellt werden. & Das Modul der vorherigen Umgebung kann übertragen werden, auf dieser Umgebung ist noch kein Modul vorhanden. \\
\rowcolor{odd}\includegraphicstotab[]{weather-few-clouds.png} & Auf einer vorherigen Umgebung gibt es ein Modul, welches übertragen werden kann, um das nächste zu aktualisieren. & Das Modul der vorherigen Umgebung kann übertragen werden um dieses zu aktualisieren. \\
\includegraphicstotab[]{weather-storm.png} & Ein Modul auf einer Umgebung wurde entgegen des Entwicklungsprozesses gespeichert. & Das aktuelle Modul ist neuer als das Modul auf der vorherigen Umgebung oder die vorherige Umgebung wurde übersprungen. \\
\end{tabularx}
\end{table}
================================================
FILE: Anhang/AnhangDoc.tex
================================================
\subsection{Entwicklerdokumentation}
\label{app:Doc}
\begin{center}
\includegraphics[page=1, width=0.9\textwidth]{doc.pdf}
\includegraphics[page=2, width=0.9\textwidth]{doc.pdf}
\end{center}
================================================
FILE: Anhang/AnhangEntwuerfe.tex
================================================
\subsection{Oberflächenentwürfe}
\label{app:Entwuerfe}
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{MockupModules.pdf}{0.7}
\caption{Liste der Module mit Filtermöglichkeiten}
\end{figure}
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{MockupModul.pdf}{0.7}
\caption{Anzeige der Übersichtsseite einzelner Module}
\end{figure}
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{MockupTag.pdf}{0.7}
\caption{Anzeige und Filterung der Module nach Tags}
\end{figure}
================================================
FILE: Anhang/AnhangLastenheft.tex
================================================
\subsection{Lastenheft (Auszug)}
\label{app:Lastenheft}
Es folgt ein Auszug aus dem Lastenheft mit Fokus auf die Anforderungen:
Die Anwendung muss folgende Anforderungen erfüllen:
\begin{enumerate}[itemsep=0em,partopsep=0em,parsep=0em,topsep=0em]
\item Verarbeitung der Moduldaten
\begin{enumerate}
\item Die Anwendung muss die von Subversion und einem externen Programm bereitgestellten Informationen (z.B. Source-Benutzer, -Datum, Hash) verarbeiten.
\item Auslesen der Beschreibung und der Stichwörter aus dem Sourcecode.
\end{enumerate}
\item Darstellung der Daten
\begin{enumerate}
\item Die Anwendung muss eine Liste aller Module erzeugen inkl. Source-Benutzer und -Datum, letztem Commit-Benutzer und -Datum für alle drei Umgebungen.
\item Verknüpfen der Module mit externen Tools wie z.B. Wiki-Einträgen zu den Modulen oder dem Sourcecode in Subversion.
\item Die Sourcen der Umgebungen müssen verglichen und eine schnelle Übersicht zur Einhaltung des allgemeinen Entwicklungsprozesses gegeben werden.
\item Dieser Vergleich muss auf die von einem bestimmten Benutzer bearbeiteten Module eingeschränkt werden können.
\item Die Anwendung muss in dieser Liste auch Module anzeigen, die nach einer Bearbeitung durch den gesuchten Benutzer durch jemand anderen bearbeitet wurden.
\item Abweichungen sollen kenntlich gemacht werden.
\item Anzeigen einer Übersichtsseite für ein Modul mit allen relevanten Informationen zu diesem.
\end{enumerate}
\item Sonstige Anforderungen
\begin{enumerate}
\item Die Anwendung muss ohne das Installieren einer zusätzlichen Software über einen Webbrowser im Intranet erreichbar sein.
\item Die Daten der Anwendung müssen jede Nacht \bzw nach jedem \acs{SVN}-Commit automatisch aktualisiert werden.
\item Es muss ermittelt werden, ob Änderungen auf der Produktionsumgebung vorgenommen wurden, die nicht von einer anderen Umgebung kopiert wurden. Diese Modulliste soll als Mahnung per E-Mail an alle Entwickler geschickt werden (Peer Pressure).
\item Die Anwendung soll jederzeit erreichbar sein.
\item Da sich die Entwickler auf die Anwendung verlassen, muss diese korrekte Daten liefern und darf keinen Interpretationsspielraum lassen.
\item Die Anwendung muss so flexibel sein, dass sie bei Änderungen im Entwicklungsprozess einfach angepasst werden kann.
\end{enumerate}
\end{enumerate}
================================================
FILE: Anhang/AnhangPflichtenheft.tex
================================================
\subsection{Pflichtenheft (Auszug)}
\label{app:Pflichtenheft}
\subsubsection*{Zielbestimmung}
\begin{enumerate}[itemsep=0em,partopsep=0em,parsep=0em,topsep=0em]
\item Musskriterien % Wikipedia: für das Produkt unabdingbare Leistungen, die in jedem Fall erfüllt werden müssen
\begin{enumerate}
\item Modul-Liste: Zeigt eine filterbare Liste der Module mit den dazugehörigen Kerninformationen sowie Symbolen zur Einhaltung des Entwicklungsprozesses an
\begin{itemize}
\item In der Liste wird der Name, die Bibliothek und Daten zum Source und Kompilat eines Moduls angezeigt.
\item Ebenfalls wird der Status des Moduls hinsichtlich Source und Kompilat angezeigt. Dazu gibt es unterschiedliche Status-Zeichen, welche symbolisieren in wie weit der Entwicklungsprozess eingehalten wurde \bzw welche Schritte als nächstes getan werden müssen. So gibt es \zB Zeichen für das Einhalten oder Verletzen des Prozesses oder den Hinweis auf den nächsten zu tätigenden Schritt.
\item Weiterhin werden die Benutzer und Zeitpunkte der aktuellen Version der Sourcen und Kompilate angezeigt. Dazu kann vorher ausgewählt werden, von welcher Umgebung diese Daten gelesen werden sollen.
\item Es kann eine Filterung nach allen angezeigten Daten vorgenommen werden. Die Daten zu den Sourcen sind historisiert. Durch die Filterung ist es möglich, auch Module zu finden, die in der Zwischenzeit schon von einem anderen Benutzer editiert wurden.
\end{itemize}
\item Tag-Liste: Bietet die Möglichkeit die Module anhand von Tags zu filtern.
\begin{itemize}
\item Es sollen die Tags angezeigt werden, nach denen bereits gefiltert wird und die, die noch der Filterung hinzugefügt werden könnten, ohne dass die Ergebnisliste leer wird.
\item Zusätzlich sollen die Module angezeigt werden, die den Filterkriterien entsprechen. Sollten die Filterkriterien leer sein, werden nur die Module angezeigt, welche mit einem Tag versehen sind.
\end{itemize}
\item Import der Moduldaten aus einer bereitgestellten \acs{CSV}-Datei
\begin{itemize}
\item Es wird täglich eine Datei mit den Daten der aktuellen Module erstellt. Diese Datei wird (durch einen Cronjob) automatisch nachts importiert.
\item Dabei wird für jedes importierte Modul ein Zeitstempel aktualisiert, damit festgestellt werden kann, wenn ein Modul gelöscht wurde.
\item Die Datei enthält die Namen der Umgebung, der Bibliothek und des Moduls, den Programmtyp, den Benutzer und Zeitpunkt des Sourcecodes sowie des Kompilats und den Hash des Sourcecodes.
\item Sollte sich ein Modul verändert haben, werden die entsprechenden Daten in der Datenbank aktualisiert. Die Veränderungen am Source werden dabei aber nicht ersetzt, sondern historisiert.
\end{itemize}
\item Import der Informationen aus \ac{SVN}. Durch einen \gqq{post-commit-hook} wird nach jedem Einchecken eines Moduls ein \acs{PHP}-Script auf der Konsole aufgerufen, welches die Informationen, die vom \ac{SVN}-Kommandozeilentool geliefert werden, an \acs{NatInfo} übergibt.
\item Parsen der Sourcen
\begin{itemize}
\item Die Sourcen der Entwicklungsumgebung werden nach Tags, Links zu Artikeln im Wiki und Programmbeschreibungen durchsucht.
\item Diese Daten werden dann entsprechend angelegt, aktualisiert oder nicht mehr gesetzte Tags/Wikiartikel entfernt.
\end{itemize}
\item Sonstiges
\begin{itemize}
\item Das Programm läuft als Webanwendung im Intranet.
\item Die Anwendung soll möglichst leicht erweiterbar sein und auch von anderen Entwicklungsprozessen ausgehen können.
\item Eine Konfiguration soll möglichst in zentralen Konfigurationsdateien erfolgen.
\end{itemize}
\end{enumerate}
\end{enumerate}
\subsubsection*{Produkteinsatz}
\begin{enumerate}[itemsep=0em,partopsep=0em,parsep=0em,topsep=0em]
\item{Anwendungsbereiche\\
Die Webanwendung dient als Anlaufstelle für die Entwicklung. Dort sind alle Informationen für die Module an einer Stelle gesammelt. Vorher getrennte Anwendungen werden ersetzt \bzw verlinkt.}
\item{Zielgruppen\\
\NI wird lediglich von den \ac{Natural}-Entwicklern in der EDV-Abteilung genutzt.}
\item{Betriebsbedingungen\\ % Wikipedia: physikalische Umgebung des Systems, tägliche Betriebszeit, ständige Beobachtung des Systems durch Bediener oder unbeaufsichtigter Betrieb
Die nötigen Betriebsbedingungen, also der Webserver, die Datenbank, die Versionsverwaltung, das Wiki und der nächtliche Export sind bereits vorhanden und konfiguriert. Durch einen täglichen Cronjob werden entsprechende Daten aktualisiert, die Webanwendung ist jederzeit aus dem Intranet heraus erreichbar.}
\end{enumerate}
================================================
FILE: Anhang/AnhangScreenshots.tex
================================================
\subsection{Screenshots der Anwendung}
\label{Screenshots}
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{tagliste.pdf}{1}
\caption{Anzeige und Filterung der Module nach Tags}
\end{figure}
\clearpage
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{modulliste.pdf}{1}
\caption{Liste der Module mit Filtermöglichkeiten}
\end{figure}
\clearpage
================================================
FILE: Anhang/AnhangTest.tex
================================================
\subsection{Testfall und sein Aufruf auf der Konsole}
\label{app:Test}
\lstinputlisting[language=php, caption={Testfall in PHP}]{Listings/tests.php}
\clearpage
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{testcase.jpg}{1}
\caption{Aufruf des Testfalls auf der Konsole}
\end{figure}
================================================
FILE: Anhang.tex
================================================
% !TEX root = Projektdokumentation.tex
\section{Anhang}
\subsection{Detaillierte Zeitplanung}
\label{app:Zeitplanung}
\tabelleAnhang{ZeitplanungKomplett}
\input{Anhang/AnhangLastenheft.tex}
\clearpage
\subsection{Use Case-Diagramm}
\label{app:UseCase}
Use Case-Diagramme und weitere \acs{UML}-Diagramme kann man auch direkt mit \LaTeX{} zeichnen, siehe \zB \url{http://metauml.sourceforge.net/old/usecase-diagram.html}.
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{UseCase.pdf}{0.7}
\caption{Use Case-Diagramm}
\end{figure}
\input{Anhang/AnhangPflichtenheft.tex}
\subsection{Datenbankmodell}
\label{app:Datenbankmodell}
ER-Modelle kann man auch direkt mit \LaTeX{} zeichnen, siehe \zB \url{http://www.texample.net/tikz/examples/entity-relationship-diagram/}.
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{database.pdf}{1}
\caption{Datenbankmodell}
\end{figure}
\clearpage
\input{Anhang/AnhangEntwuerfe.tex}
\clearpage
\input{Anhang/AnhangScreenshots.tex}
\input{Anhang/AnhangDoc.tex}
\clearpage
\input{Anhang/AnhangTest.tex}
\subsection{Klasse: ComparedNaturalModuleInformation}
\label{app:CNMI}
Kommentare und simple Getter/Setter werden nicht angezeigt.
\lstinputlisting[language=php, caption={Klasse: ComparedNaturalModuleInformation}]{Listings/cnmi.php}
\clearpage
\subsection{Klassendiagramm}
\label{app:Klassendiagramm}
Klassendiagramme und weitere \acs{UML}-Diagramme kann man auch direkt mit \LaTeX{} zeichnen, siehe \zB \url{http://metauml.sourceforge.net/old/class-diagram.html}.
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{Klassendiagramm.pdf}{1}
\caption{Klassendiagramm}
\end{figure}
\clearpage
\input{Anhang/AnhangBenutzerDoku.tex}
================================================
FILE: Befehle.tex
================================================
% Abkürzungen
\newcommand{\Versis}{\textsc{Versis}\xspace}
\newcommand{\NI}{NatInfo\xspace}
\newcommand{\AO}{\textsc{Alte Oldenburger} Krankenversicherung\xspace}
================================================
FILE: Bibliographie.bib
================================================
% This file was created with JabRef 2.4.2.
% Encoding: UTF8
@book{Rohrer2011,
address = {Solingen},
edition = {5.},
title = {Clevere Tipps für die Projektarbeit - {IT-Berufe:} Abschlussprüfung Teil A},
isbn = {3882347538},
url = {http://fiae.link/ClevereTippsFuerDieProjektarbeit},
publisher = {{U-Form-Verlag}},
author = {Rohrer, Anselm and Sedlacek, Ramona},
year = {2011}
}
@misc{Bundesgesetzblatt48,
title = {Verordnung über die Berufsausbildung im Bereich der Informations- und Telekommunikationstechnik},
url = {http://fiae.link/VerordnungITBerufe},
author = {{Regierung der Bundesrepublik Deutschland}},
month = jul,
year = {1997},
pages = {1741--1799}
}
@techreport{BMBF2000,
address = {Bonn},
type = {Abschlussbericht},
title = {Umsetzungshilfen für die neue Prüfungsstruktur der {IT-Berufe}},
shorttitle = {{BMBF2000}},
url = {http://fiae.link/UmsetzungshilfenITBerufe},
author = {{Bundesministerium für Bildung und Forschung}},
institution = {{Bundesministerium für Bildung und Forschung}},
month = jul,
year = {2000},
pages = {476}
}
@techreport{Grashorn2010,
address = {Vechta},
type = {Dokumentation zur Projektarbeit},
title = {Entwicklung von NatInfo -- Webbasiertes Tool zur Unterstützung der Entwickler},
author = {Dirk Grashorn},
institution = {{Alte Oldenburger Krankenversicherung AG}},
month = apr,
year = {2010},
}
@misc{MerkblattIHK,
address = {Oldenburg},
title = {Merkblatt zur Abschlussprüfung der IT-Berufe},
author = {{IHK Oldenburg}},
institution = {{Oldenburgische Industrie- und Handelskammer}},
month = may,
year = {2006},
url = {http://fiae.link/MerkblattDokuOldenburg},
}
@misc{BewertungsmatrikIHK,
address = {Darmstadt},
title = {Bewertungsmatrix für Fachinformatiker/innen Anwendungsentwicklung},
author = {{IHK Darmstadt}},
institution = {{IHK Darmstadt Rhein Main Neckar}},
month = mar,
year = {2011},
url = {http://fiae.link/BewertungsmatrixDokuDarmstadt},
}
@misc{ISO9126,
title = {{Software-Engineering} – Qualität von {Software-Produkten} – Teil 1: Qualitätsmodell},
author = {{ISO/IEC 9126-1}},
month = jun,
year = {2001}
}
@BOOKLET{phpDoc,
title = {{phpDocumentor-Website}},
author = {{phpdoc.org}},
lastchecked = {20.04.2010},
year = {2010},
owner = {grashorn},
timestamp = {2010.04.22},
url = {http://www.phpdoc.org/}
}
@BOOKLET{Symfony,
title = {Symfony - Open-Source PHP Web Framework},
author = {{Sensio Labs}},
lastchecked = {20.04.2010},
year = {2010},
owner = {grashorn},
timestamp = {2010.04.22},
url = {http://www.symfony-project.org/}
}
================================================
FILE: Deckblatt.tex
================================================
% !TEX root = Projektdokumentation.tex
\begin{titlepage}
\begin{center}
\includegraphics[scale=0.25]{LogoIHK.pdf}\\[1ex]
\Large{Abschlussprüfung \pruefungstermin}\\[3ex]
\Large{\ausbildungsberuf}\\
\LARGE{\betreff}\\[4ex]
\huge{\textbf{\titel}}\\[1.5ex]
\Large{\textbf{\untertitel}}\\[4ex]
\normalsize
Abgabetermin: \abgabeOrt, den \abgabeTermin\\[3em]
\textbf{Prüfungsbewerber:}\\
\autorName\\
\autorAnschrift\\
\autorOrt\\[5ex]
\includegraphics[scale=0.4]{\betriebLogo}\\[2ex]
\textbf{Ausbildungsbetrieb:}\\
\betriebName\\
\betriebAnschrift\\
\betriebOrt\\[5em]
\end{center}
\end{titlepage}
================================================
FILE: Erklaerung.tex
================================================
% !TEX root = Projektdokumentation.tex
\clearpage
\addsec{Eidesstattliche Erklärung}
% Hinweis: die eidesstattliche Erklärung ist ggfs. an die Richtlinie der IHK anzupassen
Ich, \autorName, versichere hiermit, dass ich meine \textbf{\betreff} mit dem
Thema
\begin{quote}
\textit{\kompletterTitel}
\end{quote}
selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe,
wobei ich alle wörtlichen und sinngemäßen Zitate als solche gekennzeichnet habe. Die Arbeit
wurde bisher keiner anderen Prüfungsbehörde vorgelegt und auch nicht veröffentlicht.\\[6ex]
\abgabeOrt, den \abgabeTermin
\rule[-0.2cm]{5.5cm}{0.5pt}
\textsc{\autorName}
================================================
FILE: Inhalt/Abnahmephase.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Abnahmephase}
\label{sec:Abnahmephase}
\begin{itemize}
\item Welche Tests (\zB Unit-, Integrations-, Systemtests) wurden durchgeführt und welche Ergebnisse haben sie geliefert (\zB Logs von Unit Tests, Testprotokolle der Anwender)?
\item Wurde die Anwendung offiziell abgenommen?
\end{itemize}
\paragraph{Beispiel}
Ein Auszug eines Unit Tests befindet sich im \Anhang{app:Test}. Dort ist auch der Aufruf des Tests auf der Konsole des Webservers zu sehen.
================================================
FILE: Inhalt/Analysephase.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Analysephase}
\label{sec:Analysephase}
\subsection{Ist-Analyse}
\label{sec:IstAnalyse}
\begin{itemize}
\item Wie ist die bisherige Situation (\zB bestehende Programme, Wünsche der Mitarbeiter)?
\item Was gilt es zu erstellen/verbessern?
\end{itemize}
\subsection{Wirtschaftlichkeitsanalyse}
\label{sec:Wirtschaftlichkeitsanalyse}
\begin{itemize}
\item Lohnt sich das Projekt für das Unternehmen?
\end{itemize}
\subsubsection{\gqq{Make or Buy}-Entscheidung}
\label{sec:MakeOrBuyEntscheidung}
\begin{itemize}
\item Gibt es vielleicht schon ein fertiges Produkt, dass alle Anforderungen des Projekts abdeckt?
\item Wenn ja, wieso wird das Projekt trotzdem umgesetzt?
\end{itemize}
\subsubsection{Projektkosten}
\label{sec:Projektkosten}
\begin{itemize}
\item Welche Kosten fallen bei der Umsetzung des Projekts im Detail an (\zB Entwicklung, Einführung/Schulung, Wartung)?
\end{itemize}
\paragraph{Beispielrechnung (verkürzt)}
Die Kosten für die Durchführung des Projekts setzen sich sowohl aus Personal-, als auch aus Ressourcenkosten zusammen.
In Absprache mit der Personalabteilung wird für einen Auszubildenden im dritten Lehrjahr ein Stundensatz von \eur{7,56} und für die anderen Mitarbeiter ein Stundensatz von \eur{25} angesetzt.
Für die Nutzung von Ressourcen\footnote{Räumlichkeiten, Arbeitsplatzrechner etc.} wird ein Stundensatz von \eur{15} angenommen.
Die Durchführungszeit des Projekts beträgt 70 Stunden.
Eine Aufstellung der Kosten befindet sich in Tabelle~\ref{tab:Kostenaufstellung} und sie betragen insgesamt \eur{2739,20}.
\tabelle{Kostenaufstellung}{tab:Kostenaufstellung}{Kostenaufstellung.tex}
\subsubsection{Amortisationsdauer}
\label{sec:Amortisationsdauer}
\begin{itemize}
\item Welche monetären Vorteile bietet das Projekt (\zB Einsparung von Lizenzkosten, Arbeitszeitersparnis, bessere Usability, Korrektheit)?
\item Wann hat sich das Projekt amortisiert?
\end{itemize}
\paragraph{Beispielrechnung (verkürzt)}
Bei einer Zeiteinsparung von 10 Minuten am Tag für jeden der 25 Anwender und 220 Arbeitstagen im Jahr ergibt sich eine gesamte Zeiteinsparung von
\begin{eqnarray}
25 \cdot 220 \mbox{ Tage/Jahr} \cdot 10 \mbox{ min/Tag} = 55000 \mbox{ min/Jahr} \approx 917 \mbox{ h/Jahr}
\end{eqnarray}
Dadurch ergibt sich eine jährliche Einsparung von
\begin{eqnarray}
917 \mbox{h} \cdot \eur{(25 + 15)}{\mbox{/h}} = \eur{36680}
\end{eqnarray}
Die Amortisationszeit beträgt also $\frac{\eur{2739,20}}{\eur{36680}\mbox{/Jahr}} \approx 0,07 \mbox{ Jahre} \approx 4 \mbox{ Wochen}$.
\subsection{Nutzwertanalyse}
\label{sec:Nutzwertanalyse}
\begin{itemize}
\item Darstellung des nicht-monetären Nutzens (\zB Vorher-/Nachher-Vergleich anhand eines Wirtschaftlichkeitskoeffizienten).
\end{itemize}
\paragraph{Beispiel}
Ein Beispiel für eine Entscheidungsmatrix findet sich in Kapitel~\ref{sec:Architekturdesign}: \nameref{sec:Architekturdesign}.
\subsection{Anwendungsfälle}
\label{sec:Anwendungsfaelle}
\begin{itemize}
\item Welche Anwendungsfälle soll das Projekt abdecken?
\item Einer oder mehrere interessante (!) Anwendungsfälle könnten exemplarisch durch ein Aktivitätsdiagramm oder eine \ac{EPK} detailliert beschrieben werden.
\end{itemize}
\paragraph{Beispiel}
Ein Beispiel für ein Use Case-Diagramm findet sich im \Anhang{app:UseCase}.
\subsection{Qualitätsanforderungen}
\label{sec:Qualitaetsanforderungen}
\begin{itemize}
\item Welche Qualitätsanforderungen werden an die Anwendung gestellt (\zB hinsichtlich Performance, Usability, Effizienz \etc (siehe \citet{ISO9126}))?
\end{itemize}
\subsection{Lastenheft/Fachkonzept}
\label{sec:Lastenheft}
\begin{itemize}
\item Auszüge aus dem Lastenheft/Fachkonzept, wenn es im Rahmen des Projekts erstellt wurde.
\item Mögliche Inhalte: Funktionen des Programms (Muss/Soll/Wunsch), User Stories, Benutzerrollen
\end{itemize}
\paragraph{Beispiel}
Ein Beispiel für ein Lastenheft findet sich im \Anhang{app:Lastenheft}.
================================================
FILE: Inhalt/Dokumentation.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Dokumentation}
\label{sec:Dokumentation}
\begin{itemize}
\item Wie wurde die Anwendung für die Benutzer/Administratoren/Entwickler dokumentiert (\zB Benutzerhandbuch, \acs{API}-Dokumentation)?
\item Hinweis: Je nach Zielgruppe gelten bestimmte Anforderungen für die Dokumentation (\zB keine IT-Fachbegriffe in einer Anwenderdokumentation verwenden, aber auf jeden Fall in einer Dokumentation für den IT-Bereich).
\end{itemize}
\paragraph{Beispiel}
Ein Ausschnitt aus der erstellten Benutzerdokumentation befindet sich im \Anhang{app:BenutzerDoku}.
Die Entwicklerdokumentation wurde mittels PHPDoc\footnote{Vgl. \cite{phpDoc}} automatisch generiert. Ein beispielhafter Auszug aus der Dokumentation einer Klasse findet sich im \Anhang{app:Doc}.
================================================
FILE: Inhalt/Einfuehrungsphase.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Einführungsphase}
\label{sec:Einfuehrungsphase}
\begin{itemize}
\item Welche Schritte waren zum Deployment der Anwendung nötig und wie wurden sie durchgeführt (automatisiert/manuell)?
\item Wurden \ggfs Altdaten migriert und wenn ja, wie?
\item Wurden Benutzerschulungen durchgeführt und wenn ja, Wie wurden sie vorbereitet?
\end{itemize}
================================================
FILE: Inhalt/Einleitung.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Einleitung}
\label{sec:Einleitung}
\subsection{Projektumfeld}
\label{sec:Projektumfeld}
\begin{itemize}
\item Kurze Vorstellung des Ausbildungsbetriebs (Geschäftsfeld, Mitarbeiterzahl \usw)
\item Wer ist Auftraggeber/Kunde des Projekts?
\end{itemize}
\subsection{Projektziel}
\label{sec:Projektziel}
\begin{itemize}
\item Worum geht es eigentlich?
\item Was soll erreicht werden?
\end{itemize}
\subsection{Projektbegründung}
\label{sec:Projektbegruendung}
\begin{itemize}
\item Warum ist das Projekt sinnvoll (\zB Kosten- oder Zeitersparnis, weniger Fehler)?
\item Was ist die Motivation hinter dem Projekt?
\end{itemize}
\subsection{Projektschnittstellen}
\label{sec:Projektschnittstellen}
\begin{itemize}
\item Mit welchen anderen Systemen interagiert die Anwendung (technische Schnittstellen)?
\item Wer genehmigt das Projekt \bzw stellt Mittel zur Verfügung?
\item Wer sind die Benutzer der Anwendung?
\item Wem muss das Ergebnis präsentiert werden?
\end{itemize}
\subsection{Projektabgrenzung}
\label{sec:Projektabgrenzung}
\begin{itemize}
\item Was ist explizit nicht Teil des Projekts (\insb bei Teilprojekten)?
\end{itemize}
================================================
FILE: Inhalt/Entwurfsphase.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Entwurfsphase}
\label{sec:Entwurfsphase}
\subsection{Zielplattform}
\label{sec:Zielplattform}
\begin{itemize}
\item Beschreibung der Kriterien zur Auswahl der Zielplattform (\ua Programmiersprache, Datenbank, Client/Server, Hardware).
\end{itemize}
\subsection{Architekturdesign}
\label{sec:Architekturdesign}
\begin{itemize}
\item Beschreibung und Begründung der gewählten Anwendungsarchitektur (\zB \acs{MVC}).
\item \Ggfs Bewertung und Auswahl von verwendeten Frameworks sowie \ggfs eine kurze Einführung in die Funktionsweise des verwendeten Frameworks.
\end{itemize}
\paragraph{Beispiel}
Anhand der Entscheidungsmatrix in Tabelle~\ref{tab:Entscheidungsmatrix} wurde für die Implementierung der Anwendung das \acs{PHP}-Framework Symfony\footnote{\Vgl \citet{Symfony}.} ausgewählt.
\tabelle{Entscheidungsmatrix}{tab:Entscheidungsmatrix}{Nutzwert.tex}
\subsection{Entwurf der Benutzeroberfläche}
\label{sec:Benutzeroberflaeche}
\begin{itemize}
\item Entscheidung für die gewählte Benutzeroberfläche (\zB GUI, Webinterface).
\item Beschreibung des visuellen Entwurfs der konkreten Oberfläche (\zB Mockups, Menüführung).
\item \Ggfs Erläuterung von angewendeten Richtlinien zur Usability und Verweis auf Corporate Design.
\end{itemize}
\paragraph{Beispiel}
Beispielentwürfe finden sich im \Anhang{app:Entwuerfe}.
\subsection{Datenmodell}
\label{sec:Datenmodell}
\begin{itemize}
\item Entwurf/Beschreibung der Datenstrukturen (\zB \acs{ERM} und/oder Tabellenmodell, \acs{XML}-Schemas) mit kurzer Beschreibung der wichtigsten (!) verwendeten Entitäten.
\end{itemize}
\paragraph{Beispiel}
In \Abbildung{ER} wird ein \ac{ERM} dargestellt, welches lediglich Entitäten, Relationen und die dazugehörigen Kardinalitäten enthält.
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{ERDiagramm.pdf}{0.6}
\caption{Vereinfachtes ER-Modell}
\label{fig:ER}
\end{figure}
\subsection{Geschäftslogik}
\label{sec:Geschaeftslogik}
\begin{itemize}
\item Modellierung und Beschreibung der wichtigsten (!) Bereiche der Geschäftslogik (\zB mit Kom\-po\-nen\-ten-, Klassen-, Sequenz-, Datenflussdiagramm, Programmablaufplan, Struktogramm, \ac{EPK}).
\item Wie wird die erstellte Anwendung in den Arbeitsfluss des Unternehmens integriert?
\end{itemize}
\paragraph{Beispiel}
Ein Klassendiagramm, welches die Klassen der Anwendung und deren Beziehungen untereinander darstellt kann im \Anhang{app:Klassendiagramm} eingesehen werden.
\Abbildung{Modulimport} zeigt den grundsätzlichen Programmablauf beim Einlesen eines Moduls als \ac{EPK}.
\begin{figure}[htb]
\centering
\includegraphicsKeepAspectRatio{modulimport.pdf}{0.9}
\caption{Prozess des Einlesens eines Moduls}
\label{fig:Modulimport}
\end{figure}
\subsection{Maßnahmen zur Qualitätssicherung}
\label{sec:Qualitaetssicherung}
\begin{itemize}
\item Welche Maßnahmen werden ergriffen, um die Qualität des Projektergebnisses (siehe Kapitel~\ref{sec:Qualitaetsanforderungen}: \nameref{sec:Qualitaetsanforderungen}) zu sichern (\zB automatische Tests, Anwendertests)?
\item \Ggfs Definition von Testfällen und deren Durchführung (durch Programme/Benutzer).
\end{itemize}
\subsection{Pflichtenheft/Datenverarbeitungskonzept}
\label{sec:Pflichtenheft}
\begin{itemize}
\item Auszüge aus dem Pflichtenheft/Datenverarbeitungskonzept, wenn es im Rahmen des Projekts erstellt wurde.
\end{itemize}
\paragraph{Beispiel}
Ein Beispiel für das auf dem Lastenheft (siehe Kapitel~\ref{sec:Lastenheft}: \nameref{sec:Lastenheft}) aufbauende Pflichtenheft ist im \Anhang{app:Pflichtenheft} zu finden.
================================================
FILE: Inhalt/Fazit.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Fazit}
\label{sec:Fazit}
\subsection{Soll-/Ist-Vergleich}
\label{sec:SollIstVergleich}
\begin{itemize}
\item Wurde das Projektziel erreicht und wenn nein, warum nicht?
\item Ist der Auftraggeber mit dem Projektergebnis zufrieden und wenn nein, warum nicht?
\item Wurde die Projektplanung (Zeit, Kosten, Personal, Sachmittel) eingehalten oder haben sich Abweichungen ergeben und wenn ja, warum?
\item Hinweis: Die Projektplanung muss nicht strikt eingehalten werden. Vielmehr sind Abweichungen sogar als normal anzusehen. Sie müssen nur vernünftig begründet werden (\zB durch Änderungen an den Anforderungen, unter-/überschätzter Aufwand).
\end{itemize}
\paragraph{Beispiel (verkürzt)}
Wie in Tabelle~\ref{tab:Vergleich} zu erkennen ist, konnte die Zeitplanung bis auf wenige Ausnahmen eingehalten werden.
\tabelle{Soll-/Ist-Vergleich}{tab:Vergleich}{Zeitnachher.tex}
\subsection{Lessons Learned}
\label{sec:LessonsLearned}
\begin{itemize}
\item Was hat der Prüfling bei der Durchführung des Projekts gelernt (\zB Zeitplanung, Vorteile der eingesetzten Frameworks, Änderungen der Anforderungen)?
\end{itemize}
\subsection{Ausblick}
\label{sec:Ausblick}
\begin{itemize}
\item Wie wird sich das Projekt in Zukunft weiterentwickeln (\zB geplante Erweiterungen)?
\end{itemize}
================================================
FILE: Inhalt/Implementierungsphase.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Implementierungsphase}
\label{sec:Implementierungsphase}
\subsection{Implementierung der Datenstrukturen}
\label{sec:ImplementierungDatenstrukturen}
\begin{itemize}
\item Beschreibung der angelegten Datenbank (\zB Generierung von \acs{SQL} aus Modellierungswerkzeug oder händisches Anlegen), \acs{XML}-Schemas \usw.
\end{itemize}
\subsection{Implementierung der Benutzeroberfläche}
\label{sec:ImplementierungBenutzeroberflaeche}
\begin{itemize}
\item Beschreibung der Implementierung der Benutzeroberfläche, falls dies separat zur Implementierung der Geschäftslogik erfolgt (\zB bei \acs{HTML}-Oberflächen und Stylesheets).
\item \Ggfs Beschreibung des Corporate Designs und dessen Umsetzung in der Anwendung.
\item Screenshots der Anwendung
\end{itemize}
\paragraph{Beispiel}
Screenshots der Anwendung in der Entwicklungsphase mit Dummy-Daten befinden sich im \Anhang{Screenshots}.
\subsection{Implementierung der Geschäftslogik}
\label{sec:ImplementierungGeschaeftslogik}
\begin{itemize}
\item Beschreibung des Vorgehens bei der Umsetzung/Programmierung der entworfenen Anwendung.
\item \Ggfs interessante Funktionen/Algorithmen im Detail vorstellen, verwendete Entwurfsmuster zeigen.
\item Quelltextbeispiele zeigen.
\item Hinweis: Wie in Kapitel~\ref{sec:Einleitung}: \nameref{sec:Einleitung} zitiert, wird nicht ein lauffähiges Programm bewertet, sondern die Projektdurchführung. Dennoch würde ich immer Quelltextausschnitte zeigen, da sonst Zweifel an der tatsächlichen Leistung des Prüflings aufkommen können.
\end{itemize}
\paragraph{Beispiel}
Die Klasse \texttt{Com\-par\-ed\-Na\-tu\-ral\-Mo\-dule\-In\-for\-ma\-tion} findet sich im \Anhang{app:CNMI}.
================================================
FILE: Inhalt/Projektplanung.tex
================================================
% !TEX root = ../Projektdokumentation.tex
\section{Projektplanung}
\label{sec:Projektplanung}
\subsection{Projektphasen}
\label{sec:Projektphasen}
\begin{itemize}
\item In welchem Zeitraum und unter welchen Rahmenbedingungen (\zB Tagesarbeitszeit) findet das Projekt statt?
\item Verfeinerung der Zeitplanung, die bereits im Projektantrag vorgestellt wurde.
\end{itemize}
\paragraph{Beispiel}
Tabelle~\ref{tab:Zeitplanung} zeigt ein Beispiel für eine grobe Zeitplanung.
\tabelle{Zeitplanung}{tab:Zeitplanung}{ZeitplanungKurz}\\
Eine detailliertere Zeitplanung findet sich im \Anhang{app:Zeitplanung}.
\subsection{Abweichungen vom Projektantrag}
\label{sec:AbweichungenProjektantrag}
\begin{itemize}
\item Sollte es Abweichungen zum Projektantrag geben (\zB Zeitplanung, Inhalt des Projekts, neue Anforderungen), müssen diese explizit aufgeführt und begründet werden.
\end{itemize}
\subsection{Ressourcenplanung}
\label{sec:Ressourcenplanung}
\begin{itemize}
\item Detaillierte Planung der benötigten Ressourcen (Hard-/Software, Räumlichkeiten \usw).
\item \Ggfs sind auch personelle Ressourcen einzuplanen (\zB unterstützende Mitarbeiter).
\item Hinweis: Häufig werden hier Ressourcen vergessen, die als selbstverständlich angesehen werden (\zB PC, Büro).
\end{itemize}
\subsection{Entwicklungsprozess}
\label{sec:Entwicklungsprozess}
\begin{itemize}
\item Welcher Entwicklungsprozess wird bei der Bearbeitung des Projekts verfolgt (\zB Wasserfall, agiler Prozess)?
\end{itemize}
================================================
FILE: Inhalt.tex
================================================
% !TEX root = Projektdokumentation.tex
\input{Inhalt/Einleitung}
\input{Inhalt/Projektplanung}
\input{Inhalt/Analysephase}
\input{Inhalt/Entwurfsphase}
\input{Inhalt/Implementierungsphase}
\input{Inhalt/Abnahmephase}
\input{Inhalt/Einfuehrungsphase}
\input{Inhalt/Dokumentation}
\input{Inhalt/Fazit}
================================================
FILE: LICENSE.md
================================================
[](http://creativecommons.org/licenses/by-sa/4.0/)
LaTeX-Vorlage zur IHK-Projektdokumentation für Fachinformatiker Anwendungsentwicklung von [Stefan Macke](http://fiae.link/LaTeXVorlageFIAE) ist lizenziert unter einer [Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz](http://creativecommons.org/licenses/by-sa/4.0/).
### _Lizenz_
DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
**1\. Definitionen**
1. Der Begriff "**Abwandlung**" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
2. Der Begriff "**Sammelwerk**" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
3. "**Verbreiten**" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Abwandlungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
4. Unter "**Lizenzelementen**" werden im Sinne dieser Lizenz die folgenden übergeordneten Lizenzcharakteristika verstanden, die vom Lizenzgeber ausgewählt wurden und in der Bezeichnung der Lizenz zum Ausdruck kommen: "Namensnennung", "Weitergabe unter gleichen Bedingungen".
5. Der "**Lizenzgeber**" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
6. "**Rechteinhaber**" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
7. Der Begriff "**Schutzgegenstand**" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
8. Mit "**Sie**" bzw. "**Ihnen**" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
9. Unter "**Öffentlich Zeigen**" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
10. "**Vervielfältigen**" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
11. "**Mit Creative Commons kompatible Lizenz**" bezeichnet eine Lizenz, die unter https://creativecommons.org/compatiblelicenses aufgelistet ist und die durch Creative Commons als grundsätzlich zur vorliegenden Lizenz äquivalent akzeptiert wurde, da zumindest folgende Voraussetzungen erfüllt sind:
Diese mit Creative Commons kompatible Lizenz
1. enthält Bestimmungen, welche die gleichen Ziele verfolgen, die gleiche Bedeutung haben und die gleichen Wirkungen erzeugen wie die Lizenzelemente der vorliegenden Lizenz; und
2. erlaubt ausdrücklich das Lizenzieren von ihr unterstellten Abwandlungen unter vorliegender Lizenz, unter einer anderen rechtsordnungsspezifisch angepassten Creative-Commons-Lizenz mit denselben Lizenzelementen, wie sie die vorliegende Lizenz aufweist, oder unter der entsprechenden Creative-Commons-Unported-Lizenz.
**2\. Schranken des Immaterialgüterrechts**
Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
**3\. Einräumung von Nutzungsrechten**
Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 3.e) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
1. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
2. Abwandlungen des Schutzgegenstandes anzufertigen, einschließlich Übersetzungen unter Nutzung jedweder Medien, sofern deutlich erkennbar gemacht wird, dass es sich um Abwandlungen handelt;
3. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten;
4. Abwandlungen des Schutzgegenstandes zu veröffentlichen, öffentlich zu zeigen und zu verbreiten.
5. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
1. **Unverzichtbare gesetzliche Vergütungsansprüche**: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
2. **Vergütung bei Zwangslizenzen**: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, verzichtet der Lizenzgeber für alle Fälle einer lizenzgerechten Nutzung des Schutzgegenstandes durch Sie auf jegliche Vergütung.
3. **Vergütung in sonstigen Fällen**: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre.
Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
**4\. Bedingungen**
Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
1. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.c) aufgezählten Hinweise entfernen. Wenn Sie eine Abwandlung vornehmen, müssen Sie auf die Mitteilung eines Lizenzgebers hin von der Abwandlung die in Abschnitt 4.c) aufgezählten Hinweise entfernen.
2. Sie dürfen eine Abwandlung ausschließlich unter den Bedingungen
1. dieser Lizenz,
2. einer späteren Version dieser Lizenz mit denselben Lizenzelementen,
3. einer rechtsordnungsspezifischen Creative-Commons-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts (z.B. Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 US),
4. der Creative-Commons-Unported-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts, oder
5. einer mit Creative Commons kompatiblen Lizenz
verbreiten oder öffentlich zeigen.
Falls Sie die Abwandlung gemäß Abschnitt (v) unter einer mit Creative Commons kompatiblen Lizenz lizenzieren, müssen Sie deren Lizenzbestimmungen Folge leisten.
Falls Sie die Abwandlungen unter einer der unter (i)-(iv) genannten Lizenzen ("Verwendbare Lizenzen") lizenzieren, müssen Sie deren Lizenzbestimmungen sowie folgenden Bestimmungen Folge leisten: Sie müssen stets eine Kopie der verwendbaren Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen, wenn Sie die Abwandlung verbreiten oder öffentlich zeigen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen der verwendbaren Lizenz oder die durch sie gewährten Rechte beschränken. Bei jeder Abwandlung, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise auf die verwendbare Lizenz und den Haftungsausschluss unverändert lassen. Wenn Sie die Abwandlung verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf die Abwandlung) keine technischen Maßnahmen ergreifen, die den Nutzer der Abwandlung in der Ausübung der ihm durch die verwendbare Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.b) gilt auch für den Fall, dass die Abwandlung einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt der verwendbaren Lizenz unterstellt werden muss.
3. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder auf ihm aufbauender Abwandlungen oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
1. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
2. den Titel des Inhaltes;
3. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
4. und im Falle einer Abwandlung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Abwandlung handelt.
Die nach diesem Abschnitt 4.c) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Abwandlung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
4. Die oben unter 4.a) bis c) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
5. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
**5\. Gewährleistung**
SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
**6\. Haftungsbeschränkung**
DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
**7\. Erlöschen**
1. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Abwandlungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
2. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
**8\. Sonstige Bestimmungen**
1. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
2. Jedes Mal wenn Sie eine Abwandlung des Schutzgegenstandes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
3. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
4. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
5. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) und b) angeboteten Lizenzen aus.
6. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
================================================
FILE: Listings/cnmi.php
================================================
allocateModulesToEnvironments($naturalInformations);
$this->allocateEmptyModulesToMissingEnvironments();
$this->determineSourceSignsForAllEnvironments();
}
private function allocateModulesToEnvironments(array $naturalInformations)
{
foreach ($naturalInformations as $naturalInformation)
{
$env = $naturalInformation->getEnvironmentName();
if(in_array($env, self::environments()))
{
$this->naturalModuleInformations[array_search($env, self::environments())] = $naturalInformation;
}
}
}
private function allocateEmptyModulesToMissingEnvironments()
{
if(array_key_exists(0, $this->naturalModuleInformations))
{
$this->naturalModuleInformations[0]->setSourceSign(self::SIGN_OK);
}
for($i = 0;$i < count(self::environments());$i++)
{
if(!array_key_exists($i, $this->naturalModuleInformations))
{
$environments = self::environments();
$this->naturalModuleInformations[$i] = new EmptyNaturalModuleInformation($environments[$i]);
$this->naturalModuleInformations[$i]->setSourceSign(self::SIGN_CREATE);
}
}
}
public function determineSourceSignsForAllEnvironments()
{
for($i = 1; $i < count(self::environments()); $i++)
{
$currentInformation = $this->naturalModuleInformations[$i];
$previousInformation = $this->naturalModuleInformations[$i - 1];
if($currentInformation->getSourceSign() <> self::SIGN_CREATE)
{
if($previousInformation->getSourceSign() <> self::SIGN_CREATE)
{
if($currentInformation->getHash() <> $previousInformation->getHash())
{
if($currentInformation->getSourceDate('YmdHis') > $previousInformation->getSourceDate('YmdHis'))
{
$currentInformation->setSourceSign(self::SIGN_ERROR);
}
else
{
$currentInformation->setSourceSign(self::SIGN_NEXT_STEP);
}
}
else
{
$currentInformation->setSourceSign(self::SIGN_OK);
}
}
else
{
$currentInformation->setSourceSign(self::SIGN_ERROR);
}
}
elseif($previousInformation->getSourceSign() <> self::SIGN_CREATE && $previousInformation->getSourceSign() <> self::SIGN_CREATE_AND_NEXT_STEP)
{
$currentInformation->setSourceSign(self::SIGN_CREATE_AND_NEXT_STEP);
}
}
}
private function containsSourceSign($sign)
{
foreach($this->naturalModuleInformations as $information)
{
if($information->getSourceSign() == $sign)
{
return true;
}
}
return false;
}
private function containsCatalogSign($sign)
{
foreach($this->naturalModuleInformations as $information)
{
if($information->getCatalogSign() == $sign)
{
return true;
}
}
return false;
}
}
?>
================================================
FILE: Listings/tests.php
================================================
comment('Empty Information');
$emptyComparedInformation = new ComparedNaturalModuleInformation(array());
$t->is($emptyComparedInformation->getCatalogSign(), ComparedNaturalModuleInformation::EMPTY_SIGN, 'Has no catalog sign');
$t->is($emptyComparedInformation->getSourceSign(), ComparedNaturalModuleInformation::SIGN_CREATE, 'Source has to be created');
$t->comment('Perfect Module');
$criteria = new Criteria();
$criteria->add(NaturalmodulenamePeer::NAME, 'SMTAB');
$moduleName = NaturalmodulenamePeer::doSelectOne($criteria);
$t->is($moduleName->getName(), 'SMTAB', 'Right modulename selected');
$comparedInformation = $moduleName->loadNaturalModuleInformation();
$t->is($comparedInformation->getSourceSign(), ComparedNaturalModuleInformation::SIGN_OK, 'Source sign shines global');
$t->is($comparedInformation->getCatalogSign(), ComparedNaturalModuleInformation::SIGN_OK, 'Catalog sign shines global');
$infos = $comparedInformation->getNaturalModuleInformations();
foreach($infos as $info)
{
$env = $info->getEnvironmentName();
$t->is($info->getSourceSign(), ComparedNaturalModuleInformation::SIGN_OK, 'Source sign shines at ' . $env);
if($env != 'SVNENTW')
{
$t->is($info->getCatalogSign(), ComparedNaturalModuleInformation::SIGN_OK, 'Catalog sign shines at ' . $info->getEnvironmentName());
}
else
{
$t->is($info->getCatalogSign(), ComparedNaturalModuleInformation::EMPTY_SIGN, 'Catalog sign is empty at ' . $info->getEnvironmentName());
}
}
?>
================================================
FILE: Meta.tex
================================================
% !TEX root = Projektdokumentation.tex
% Hinweis: der Titel muss zum Inhalt des Projekts passen und den zentralen Inhalt des Projekts deutlich herausstellen
\newcommand{\titel}{Entwicklung von NatInfo}
\newcommand{\untertitel}{Webbasiertes Tool zur Unterstützung der Entwickler}
\newcommand{\kompletterTitel}{\titel{} -- \untertitel}
\newcommand{\autorName}{Stefan Macke}
\newcommand{\autorAnschrift}{Meine Straße 1}
\newcommand{\autorOrt}{49377 Vechta}
\newcommand{\betriebLogo}{LogoBetrieb.pdf}
\newcommand{\betriebName}{\textsc{Alte Oldenburger} Krankenversicherung AG}
\newcommand{\betriebAnschrift}{Alte-Oldenburger-Platz 1}
\newcommand{\betriebOrt}{49377 Vechta}
\newcommand{\ausbildungsberuf}{Fachinformatiker für Anwendungsentwicklung}
\newcommand{\betreff}{Dokumentation zur betrieblichen Projektarbeit}
\newcommand{\pruefungstermin}{Sommer 2015}
\newcommand{\abgabeOrt}{Vechta}
\newcommand{\abgabeTermin}{23.04.2015}
================================================
FILE: PlantUML/BeispielDiagramm.puml
================================================
@startuml
'https://plantuml.com/class-diagram
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection
List <|-- AbstractList
Collection <|-- AbstractCollection
Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList
class ArrayList {
Object[] elementData
size()
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
@enduml
================================================
FILE: Projektdokumentation.tex
================================================
%-----------------------------------------------------------------------------------------
% Autor dieser Vorlage:
% Stefan Macke (http://fachinformatiker-anwendungsentwicklung.net)
% Permalink zur Vorlage: http://fiae.link/LaTeXVorlageFIAE
%
% Sämtliche verwendeten Abbildungen, Tabellen und Listings stammen von Dirk Grashorn.
%
% Lizenz: Creative Commons 4.0 Namensnennung - Weitergabe unter gleichen Bedingungen
% -----------------------------------------------------------------------------------------
\documentclass[
ngerman,
toc=listof, % Abbildungsverzeichnis sowie Tabellenverzeichnis in das Inhaltsverzeichnis aufnehmen
toc=bibliography, % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
footnotes=multiple, % Trennen von direkt aufeinander folgenden Fußnoten
parskip=half, % vertikalen Abstand zwischen Absätzen verwenden anstatt horizontale Einrückung von Folgeabsätzen
numbers=noendperiod % Den letzten Punkt nach einer Nummerierung entfernen (nach DIN 5008)
]{scrartcl}
\usepackage{luatex85}
\pdfminorversion=5 % erlaubt das Einfügen von pdf-Dateien bis Version 1.7, ohne eine Fehlermeldung zu werfen (keine Garantie für fehlerfreies Einbetten!)
\usepackage[utf8]{inputenc} % muss als erstes eingebunden werden, da Meta/Packages ggfs. Sonderzeichen enthalten
\input{Meta} % Metadaten zu diesem Dokument (Autor usw.)
\input{Allgemein/Packages} % verwendete Packages
\input{Allgemein/Seitenstil} % Definitionen zum Aussehen der Seiten
\input{Allgemein/Befehle} % eigene allgemeine Befehle, die z.B. die Arbeit mit LaTeX erleichtern
\input{Befehle} % eigene projektspezifische Befehle, z.B. Abkürzungen usw.
\begin{document}
% kann nach dem Lesen entfernt werden ---------------------------------------
\pagestyle{plain}
\input{Vorlage}
\cleardoublepage
\pagestyle{scrheadings}
% ---------------------------------------------------------------------------
\phantomsection
\thispagestyle{empty}
\pdfbookmark[1]{Eidesstattliche Erklärung}{ihkdeckblatt}
\includepdf{Bilder/DeckblattIHK}
\cleardoublepage
\phantomsection
\thispagestyle{plain}
\pdfbookmark[1]{Deckblatt}{deckblatt}
\input{Deckblatt}
\cleardoublepage
% Preface --------------------------------------------------------------------
\phantomsection
\pagenumbering{Roman}
\pdfbookmark[1]{Inhaltsverzeichnis}{inhalt}
\tableofcontents
\cleardoublepage
\phantomsection
\listoffigures
\cleardoublepage
\phantomsection
\listoftables
\cleardoublepage
\phantomsection
\lstlistoflistings
\cleardoublepage
\newcommand{\abkvz}{Abkürzungsverzeichnis}
\renewcommand{\nomname}{\abkvz}
\section*{\abkvz}
\markboth{\abkvz}{\abkvz}
\addcontentsline{toc}{section}{\abkvz}
\input{Abkuerzungen}
\clearpage
% Inhalt ---------------------------------------------------------------------
\pagenumbering{arabic}
\input{Inhalt.tex}
% Literatur ------------------------------------------------------------------
\clearpage
\renewcommand{\refname}{Literaturverzeichnis}
\bibliography{Bibliographie}
\bibliographystyle{Allgemein/natdin} % DIN-Stil des Literaturverzeichnisses
\input{Erklaerung}
% Anhang ---------------------------------------------------------------------
\clearpage
\appendix
\pagenumbering{roman}
\input{Anhang}
\end{document}
================================================
FILE: Quellen/DownloadDerReferenziertenQuellen.txt
================================================
Aufgrund der Größe der PDF-Dateien, werden die in der Vorlage verwendeten Quellen
separat zum Download angeboten. Sie können unter der folgenden URL heruntergeladen werden:
http://fiae.link/LaTeXVorlageFIAEQuellen
================================================
FILE: README.md
================================================
# LaTeX-Vorlage zur Projektdokumentation für Fachinformatiker Anwendungsentwicklung
Die Vorlage umfasst neben dem Layout und den obligatorischen Elementen wie Deckblatt, Verzeichnissen und Literaturangaben insbesondere eine Vorstrukturierung der üblicherweise geforderten Inhalte einer Dokumentation zur betrieblichen Projektarbeit inklusive einiger Beispiele für wichtige Inhalte wie z.B. Kostenkalkulation und Amortisationsrechnung. Obwohl viele Inhalte der Vorlage speziell auf Anwendungsentwickler zugeschnitten sind, dürfte die Vorlage auch für die anderen IT-Berufe (Fachinformatiker Systemintegration, IT-Kaufleute usw.) interessant sein, da die Vorgaben hinsichtlich der Projektarbeit größtenteils übereinstimmen.
Mehr Informationen und eine Beispieldokumentation auf Basis dieser Vorlage gibt es hier: [Vorlage für die Projektdokumentation][fiaevorlage].
[fiaevorlage]: http://fiae.link/LaTeXVorlageFIAE "Vorlage für die Projektdokumentation"
# Projektdokumentation kompilieren
In beiden Scripts gibt es eine Abfrage, mit der ausgewählt werden kann, ob PlantUML-Diagramme in PDF konvertiert werden sollen.
Hierzu müssen die PlantUML-Diagramme mit der Endung `.puml` im Ordner `PlantUML` liegen.
Darüber hinaus müssen dafür folgende Programme installiert sein:
1. Beliebige Java-Version; im PATH hinterlegt
2. Inkscape; im PATH hinterlegt
## Docker
1. Stelle sicher, dass Docker läuft.
2. Öffne die `./kompiliere_mit_Docker.ps1` in der PowerShell.
## Lokale MiKTeX-Installation
1. Öffne die `./kompiliere_mit_MiKTeX.ps1` in der PowerShell.
## IntelliJ
Anstelle der Scripte können in IntelliJ Run Configurations genutzt werden, die mit Importieren des Projekts geladen werden.
Zudem sind File Watchers hinterlegt, mit denen die Umwandlung von PlantUML-Diagrammen bei einer Änderung an diesen, im Hintergrund passiert. Damit dies funktioniert, wird das Plugin `File Watchers` benötigt.
# Lizenz
[](http://creativecommons.org/licenses/by-sa/4.0/)
LaTeX-Vorlage zur IHK-Projektdokumentation für Fachinformatiker Anwendungsentwicklung von [Stefan Macke](http://fiae.link/LaTeXVorlageFIAE) ist lizenziert unter einer [Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz](http://creativecommons.org/licenses/by-sa/4.0/).
================================================
FILE: Tabellen/Kostenaufstellung.tex
================================================
% Table generated by Excel2LaTeX from sheet 'Kostenaufstellung'
\begin{tabular}{lrlr}
\rowcolor{heading}\textbf{Vorgang} & \textbf{Zeit} & \textbf{Kosten pro Stunde} & \textbf{Kosten} \\
Entwicklungskosten & 70 \mbox{h} & $\eur{7,56} + \eur{15} = \eur{22,56}$ & \eur{1579,20} \\
\rowcolor{odd}Fachgespräch & 3 \mbox{h} & $\eur{25} + \eur{15} = \eur{40}$ & \eur{120} \\
Abnahmetest & 1 \mbox{h} & $\eur{25} + \eur{15} = \eur{40}$ & \eur{40} \\
\rowcolor{odd}Anwenderschulung & 25 \mbox{h} & $\eur{25} + \eur{15} = \eur{40}$ & \eur{1000} \\
\hline
\hline
\rowcolor{heading}\textbf{} & \textbf{} & \textbf{} & \textbf{\eur{2739,20}} \\
\end{tabular}
================================================
FILE: Tabellen/Nutzwert.tex
================================================
% Table generated by Excel2LaTeX from sheet 'Nutzwert'
\begin{tabular}{llllll}
\rowcolor{heading}\textbf{Eigenschaft} & \textbf{Gewichtung} & \textbf{Akelos} & \textbf{CakePHP} & \textbf{Symfony} & \textbf{Eigenentwicklung} \\
\textbf{Dokumentation} & 5 & 4 & 3 & 5 & 0 \\
\rowcolor{odd}\textbf{Reenginierung} & 3 & 4 & 2 & 5 & 3 \\
\textbf{Generierung} & 3 & 5 & 5 & 5 & 2 \\
\rowcolor{odd}\textbf{Testfälle} & 2 & 3 & 2 & 3 & 3 \\
\textbf{Standardaufgaben} & 4 & 3 & 3 & 3 & 0 \\
\rowcolor{heading}\textbf{Gesamt:} & \textbf{17} & \textbf{65} & \textbf{52} & \textbf{73} & \textbf{21} \\
\rowcolor{odd}\textbf{Nutzwert:} & & \textbf{3,82} & \textbf{3,06} & \textbf{4,29} & \textbf{1,24}\\
\end{tabular}
================================================
FILE: Tabellen/Zeitnachher.tex
================================================
% Table generated by Excel2LaTeX from sheet 'Zeitnachher'
\begin{tabular}{lrrr}
\rowcolor{heading}\textbf{Phase} & \textbf{Geplant} & \textbf{Tatsächlich} & \textbf{Differenz} \\
\textbf{Entwurfsphase} & 19 h & 19 h & \\
\rowcolor{odd}\textbf{Analysephase} & 9 h & 10 h & +1 h \\
\textbf{Implementierungsphase} & 29 h & 28 h & -1 h \\
\rowcolor{odd}\textbf{Abnahmetest der Fachabteilung} & 1 h & 1 h & \\
\textbf{Einführungsphase} & 1 h & 1 h & \\
\rowcolor{odd}\textbf{Erstellen der Dokumentation} & 9 h & 11 h & +2 h \\
\textbf{Pufferzeit} & 2 h & 0 h & -2 h \\
\hline
\hline
\rowcolor{odd}\textbf{Gesamt} & 70 h & 70 h & \\
\end{tabular}
================================================
FILE: Tabellen/ZeitplanungKomplett.tex
================================================
% Table generated by Excel2LaTeX from sheet 'ZeitplanungKomplett'
\begin{tabularx}{\textwidth}{Xrrr}
\rowcolor{heading}\textbf{Analysephase} & \textbf{} & \textbf{} & \textbf{9 h} \\
1. Analyse des Ist-Zustands & & 3 h & \\
\rowcolor{odd}1.1. Fachgespräch mit der EDV-Abteilung & 1 h & & \\
1.2. Prozessanalyse & 2 h & & \\
\rowcolor{odd}2. \gqq{Make or buy}-Entscheidung und Wirtschaftlichkeitsanalyse & & 1 h & \\
3. Erstellen eines \gqq{Use-Case}-Diagramms & & 2 h & \\
\rowcolor{odd}4. Erstellen des Lastenhefts mit der EDV-Abteilung & & 3 h & \\
\rowcolor{heading}\textbf{Entwurfsphase} & \textbf{} & \textbf{} & \textbf{19 h} \\
1. Prozessentwurf & & 2 h & \\
\rowcolor{odd}2. Datenbankentwurf & & 3 h & \\
2.1. ER-Modell erstellen & 2 h & & \\
\rowcolor{odd}2.2. Konkretes Tabellenmodell erstellen & 1 h & & \\
3. Erstellen von Datenverarbeitungskonzepten & & 4 h & \\
\rowcolor{odd}3.1. Verarbeitung der CSV-Daten & 1 h & & \\
3.2. Verarbeitung der SVN-Daten & 1 h & & \\
\rowcolor{odd}3.3. Verarbeitung der Sourcen der Programme & 2 h & & \\
4. Benutzeroberflächen entwerfen und abstimmen & & 2 h & \\
\rowcolor{odd}5. Erstellen eines UML-Komponentendiagramms der Anwendung & & 4 h & \\
6. Erstellen des Pflichtenhefts & & 4 h & \\
\rowcolor{heading}\textbf{Implementierungsphase} & \textbf{} & \textbf{} & \textbf{29 h} \\
1. Anlegen der Datenbank & & 1 h & \\
\rowcolor{odd}2. Umsetzung der HTML-Oberflächen und Stylesheets & & 4 h & \\
3. Programmierung der PHP-Module für die Funktionen & & 23 h & \\
\rowcolor{odd}3.1. Import der Modulinformationen aus CSV-Dateien & 2 h & & \\
3.2. Parsen der Modulquelltexte & 3 h & & \\
\rowcolor{odd}3.3. Import der SVN-Daten & 2 h & & \\
3.4. Vergleichen zweier Umgebungen & 4 h & & \\
\rowcolor{odd}3.5. Abrufen der von einem zu wählenden Benutzer geänderten Module & 3 h & & \\
3.6. Erstellen einer Liste der Module unter unterschiedlichen Aspekten & 5 h & & \\
\rowcolor{odd}3.7. Anzeigen einer Liste mit den Modulen und geparsten Metadaten & 3 h & & \\
3.8. Erstellen einer Übersichtsseite für ein einzelnes Modul & 1 h & & \\
\rowcolor{odd}4. Nächtlichen Batchjob einrichten & & 1 h & \\
\rowcolor{heading}\textbf{Abnahmetest der Fachabteilung} & \textbf{} & \textbf{} & \textbf{1 h} \\
1. Abnahmetest der Fachabteilung & & 1 h & \\
\rowcolor{heading}\textbf{Einführungsphase} & \textbf{} & \textbf{} & \textbf{1 h} \\
1. Einführung/Benutzerschulung & & 1 h & \\
\rowcolor{heading}\textbf{Erstellen der Dokumentation} & \textbf{} & \textbf{} & \textbf{9 h} \\
1. Erstellen der Benutzerdokumentation & & 2 h & \\
\rowcolor{odd}2. Erstellen der Projektdokumentation & & 6 h & \\
3. Programmdokumentation & & 1 h & \\
\rowcolor{odd}3.1. Generierung durch PHPdoc & 1 h & & \\
\rowcolor{heading}\textbf{Pufferzeit} & \textbf{} & \textbf{} & \textbf{2 h} \\
1. Puffer & & 2 h & \\
\hline
\hline
\rowcolor{heading}\textbf{Gesamt} & \textbf{} & \textbf{} & \textbf{70 h} \\
\end{tabularx}
================================================
FILE: Tabellen/ZeitplanungKurz.tex
================================================
% Table generated by Excel2LaTeX from sheet 'ZeitplanungKurz'
\begin{tabular}{lr}
\rowcolor{heading}\textbf{Projektphase} & \textbf{Geplante Zeit} \\
Analysephase & 9 h \\
\rowcolor{odd}Entwurfsphase & 19 h \\
Implementierungsphase & 29 h \\
\rowcolor{odd}Abnahmetest der Fachabteilung & 1 h \\
Einführungsphase & 1 h \\
\rowcolor{odd}Erstellen der Dokumentation & 9 h \\
Pufferzeit & 2 h \\
\hline
\hline
\rowcolor{odd}\textbf{Gesamt} & \textbf{70 h} \\
\end{tabular}
================================================
FILE: Vorlage.tex
================================================
% !TEX root = Projektdokumentation.tex
\section*{Über diese Vorlage}
Diese \LaTeX-Vorlage wurde von Stefan Macke\footnote{Blog des Autors:
\url{http://fachinformatiker-anwendungsentwicklung.net}, Twitter:
\Eingabe{@StefanMacke}} als Grundlage für die Projektdokumentationen der Auszubildenden zum Fachinformatiker mit Fachrichtung
Anwendungsentwicklung bei der \AO entwickelt. Nichtsdestotrotz dürfte sie ebenso für die anderen IT-Berufe\footnote{\zB IT-Kaufleute, Fachinformatiker
mit Fachrichtung Systemintegration \usw} geeignet sein, da diese anhand der gleichen Verordnung bewertet werden.
Diese Vorlage enthält bereits eine Vorstrukturierung der möglichen Inhalte einer tatsächlichen Projektdokumentation, die auf Basis der
Erfahrungen im Rahmen der Prüfertätigkeit des Autors erstellt und unter Zuhilfenahme von \citet{Rohrer2011} abgerundet wurden.
Sämtliche verwendeten Abbildungen, Tabellen und Listings stammen von \citet{Grashorn2010}.
Download-Link für diese Vorlage: \url{http://fiae.link/LaTeXVorlageFIAE}
Auch verfügbar auf GitHub: \url{https://github.com/StefanMacke/latex-vorlage-fiae}
\subsection*{Lizenz}
\begin{center}
\includegraphicsKeepAspectRatio{CC-Logo.pdf}{0.3}
\end{center}
Dieses Werk steht unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.
\footnote{\url{http://creativecommons.org/licenses/by-sa/4.0/}}
\begin{center}
\includegraphicsKeepAspectRatio{CC-Attribution.pdf}{0.07}
\includegraphicsKeepAspectRatio{CC-ShareAlike.pdf}{0.07}
\end{center}
\begin{description}
\item[Namensnennung] Sie müssen den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
\footnote{Die Namensnennung im \LaTeX-Quelltext mit Link auf \url{http://fiae.link/LaTeXVorlageFIAE} reicht hierfür aus.}
\item[Weitergabe unter gleichen Bedingungen] Wenn Sie das lizenzierte Werk \bzw den lizenzierten Inhalt bearbeiten
oder in anderer Weise erkennbar als Grundlage für eigenes Schaffen verwenden, dürfen Sie die daraufhin neu entstandenen
Werke \bzw Inhalte nur unter Verwendung von Lizenzbedingungen weitergeben, die mit denen dieses Lizenzvertrages identisch oder vergleichbar sind.
\end{description}
\subsection*{Inhalt der Projektdokumentation}
Grundsätzlich definiert die \citet[S.~1746]{Bundesgesetzblatt48}\footnote{Dieses
Dokument sowie alle weiteren hier genannten können unter
\url{http://fiae.link/LaTeXVorlageFIAEQuellen} heruntergeladen werden.} das Ziel der Projektdokumentation wie folgt:
\begin{quote}
"`Durch die Projektarbeit und deren Dokumentation soll der Prüfling belegen, daß er Arbeitsabläufe und Teilaufgaben zielorientiert unter
Beachtung wirtschaftlicher, technischer, organisatorischer und zeitlicher Vorgaben selbständig planen und kundengerecht umsetzen sowie
Dokumentationen kundengerecht anfertigen, zusammenstellen und modifizieren kann."'
\end{quote}
Und das \citet[S.~36]{BMBF2000} ergänzt:
\begin{quote}
"`Die Ausführung der Projektarbeit wird mit praxisbezogenen Unterlagen dokumentiert.
Der Prüfungsausschuss bewertet die Projektarbeit anhand der Dokumentation. Dabei
wird nicht das Ergebnis -- \zB ein lauffähiges Programm -- herangezogen, sondern
der Arbeitsprozess. Die Dokumentation ist keine wissenschaftliche Abhandlung,
sondern eine handlungsorientierte Darstellung des Projektablaufs mit
praxisbezogenen, d.h. betriebüblichen Unterlagen. Sie soll einen Umfang von
maximal 10 bis 15 DIN A 4-Seiten nicht überschreiten. Soweit erforderlich können in
einem Anhang \zB den Zusammenhang erläuternde Darstellungen beigefügt werden."'
\end{quote}
Außerdem werden dort die grundlegenden Inhalte der Projektdokumentation aufgelistet:
\begin{itemize}
\item Name und Ausbildungsberuf des Prüfungsteilnehmers
\item Angabe des Ausbildungsbetriebes
\item Thema der Projektarbeit
\item Falls erforderlich, Beschreibung/Konkretisierung des Auftrages
\item Umfassende Beschreibung der Prozessschritte und der erzielten Ergebnisse
\item Gegebenenfalls Veränderungen zum Projektantrag mit Begründung
\item Wenn für das Projekt erforderlich, ein Anhang mit praxisbezogenen Unterlagen und Dokumenten. Dieser Anhang sollte nicht
aufgebläht werden. Die angehängten Dokumente und Unterlagen sind auf das absolute Minimum zu beschränken.
\end{itemize}
In den folgenden Kapiteln werden diese geforderten Inhalte und sinnvolle Ergänzungen nun meist stichwortartig und \ggfs mit
Beispielen beschrieben. Nicht alle Kapitel müssen in jeder Dokumentation vorhanden sein. Handelt es sich \bspw um ein in sich
geschlossenes Projekt, kann das Kapitel~\ref{sec:Projektabgrenzung}: \nameref{sec:Projektabgrenzung} entfallen; arbeitet die
Anwendung nur mit \acs{XML}-Dateien, kann und muss keine Datenbank beschrieben werden \usw
\subsection*{Formale Vorgaben}
Die formalen Vorgaben zum Umfang und zur Gestaltung der Projektdokumentation können je nach IHK recht unterschiedlich sein.
Normalerweise sollte die zuständige IHK einen Leitfaden bereitstellen, in dem alle Formalien nachgelesen werden können,
wie \zB bei der \citet{MerkblattIHK}.
Als Richtwert verwende ich 15 Seiten für den reinen Inhalt. Also in dieser Vorlage alle Seiten, die arabisch nummeriert
sind (ohne das Literaturverzeichnis und die eidesstattliche Erklärung).
Große Abbildungen, Quelltexte, Tabellen \usw gehören in den Anhang, der 25 Seiten nicht überschreiten sollte.
Typographische Konventionen, Seitenränder \usw können in der Datei \Datei{Seitenstil.tex} beliebig angepasst werden.
\subsection*{Bewertungskriterien}
Die Bewertungskriterien für die Benotung der Projektdokumentation sind recht einheitlich und können leicht in Erfahrung
gebracht werden, \zB bei der \citet{BewertungsmatrikIHK}.
Grundsätzlich sollte die Projektdokumentation nach der Fertigstellung noch einmal im Hinblick auf diese Kriterien durchgeschaut werden.
================================================
FILE: kompiliere_mit_Docker.ps1
================================================
# Kompilierung der Projektdokumentation
# PlantUML Diagramme kompilieren und in Anhang verschieben
$answer = Read-Host "Sollen die PlantUML Diagramme kompiliert werden (y/n)?"
if ($answer -eq "y") {
Write-Output "Die Diagramme werden kompiliert"
Write-Output "Diagramme werden in SVG umgewandelt"
$files = Get-ChildItem -Path ".\PlantUML\" -Filter "*.puml"
foreach ($file in $files) {
& java -jar plantuml.jar -charset UTF-8 -svg $file.FullName
}
Write-Output "Diagramme wurden erfolgreich in SVG umgewandelt"
Write-Output "Diagramme werden in PDF umgewandelt"
$svgFiles = Get-ChildItem -Path ".\PlantUML\" -Filter "*.svg"
foreach ($svgFile in $svgFiles) {
$pdfName = ".\Anhang\" + [IO.Path]::GetFileNameWithoutExtension($svgFile.Name) + ".pdf"
& inkscape --export-filename=$pdfName $svgFile.FullName
}
Write-Output "Diagramme wurden erfolgreich in PDF umgewandelt"
Write-Output "Diagramme als SVG werden geloescht"
$svgFiles | ForEach-Object { Remove-Item $_.FullName }
Write-Output "Diagramme als SVG wurden erfolgreich geloescht"
} else {
Write-Output "Die Diagramme werden nicht kompiliert"
}
# Projektdokumentation.tex kompilieren
for ($i = 1; $i -le 2; $i++) {
Write-Output "Projektdokumentation.tex wird kompiliert"
& docker run -i --rm -w /data -v "${PWD}:/data" "texlive/texlive:latest" latexmk "-synctex=1" "-interaction=nonstopmode" "-file-line-error" "-pdf" "-outdir=./" "Projektdokumentation" -f
Write-Output "Projektdokumentation.tex wurde kompiliert"
}
# Projektdokumentation öffnen
$answer = Read-Host "Soll die Datei geoeffnet werden (y/n)?"
if ($answer -eq "y") {
Start-Process -FilePath ".\Projektdokumentation.pdf"
Write-Output "Datei wurde geoeffnet"
} else {
Write-Output "Script wird beendet"
}
================================================
FILE: kompiliere_mit_MiKTeX.ps1
================================================
# Kompilierung der Projektdokumentation
# PlantUML Diagramme kompilieren und in Anhang verschieben
$answer = Read-Host "Sollen die PlantUML Diagramme kompiliert werden (y/n)?"
if ($answer -eq "y") {
Write-Output "Die Diagramme werden kompiliert"
Write-Output "Diagramme werden in SVG umgewandelt"
$files = Get-ChildItem -Path ".\PlantUML\" -Filter "*.puml"
foreach ($file in $files) {
& java -jar plantuml.jar -charset UTF-8 -svg $file.FullName
}
Write-Output "Diagramme wurden erfolgreich in SVG umgewandelt"
Write-Output "Diagramme werden in PDF umgewandelt"
$svgFiles = Get-ChildItem -Path ".\PlantUML\" -Filter "*.svg"
foreach ($svgFile in $svgFiles) {
$pdfName = ".\Anhang\" + [IO.Path]::GetFileNameWithoutExtension($svgFile.Name) + ".pdf"
& inkscape --export-filename=$pdfName $svgFile.FullName
}
Write-Output "Diagramme wurden erfolgreich in PDF umgewandelt"
Write-Output "Diagramme als SVG werden geloescht"
$svgFiles | ForEach-Object { Remove-Item $_.FullName }
Write-Output "Diagramme als SVG wurden erfolgreich geloescht"
} else {
Write-Output "Die Diagramme werden nicht kompiliert"
}
# Projektdokumentation.tex kompilieren
for ($i = 1; $i -le 2; $i++) {
Write-Output "Projektdokumentation.tex wird kompiliert"
& pdflatex "-synctex=1" "-interaction=nonstopmode" "-file-line-error" "-output-directory=./" "Projektdokumentation"
Write-Output "Projektdokumentation.tex wurde kompiliert"
}
# Projektdokumentation öffnen
$answer = Read-Host "Soll die Datei geoeffnet werden (y/n)?"
if ($answer -eq "y") {
Start-Process -FilePath ".\Projektdokumentation.pdf"
Write-Output "Datei wurde geoeffnet"
} else {
Write-Output "Script wird beendet"
}
================================================
FILE: natbib.cfg
================================================
% in dieser Datei wird das Aussehen der Zitate und des Literaturverzeichnisses definiert
\newcommand{\bibstyle@natdin}%
{\bibpunct{[}{]}{;}{a}{}{,~} % Quellenangaben in eckige Klammern fassen
% nach dieser Definition wird das label (dinatlabel) fett geschrieben, dann Zeilenumbruch;
% darunter der bibliographische Beleg
\gdef\NAT@biblabelnum##1{\textbf{##1}\\}}
\bibstyle@natdin
% Einzug der Belege nach der Einordnungsmarke
\setlength{\bibhang}{7mm}
================================================
FILE: plantuml.jar
================================================
[File too large to display: 10.9 MB]