\documentclass[11pt, oneside, a4paper]{article}

\newif\ifpdf
\ifx\pdfoutput\undefined
  \pdffalse
\else
  \pdftrue
\fi

\usepackage{czech}
\usepackage{wasysym}
\usepackage{fancyhdr}
\usepackage{makeidx}
\usepackage{fancybox}
\usepackage{graphicx}
\usepackage{color}
\usepackage[backref, pagebackref, hyperindex, colorlinks, urlcolor=blue,
bookmarks, bookmarksnumbered, pdftitle={Analýza systému TUTOS},
pdfauthor={Martin Šlouf}]{hyperref}
\usepackage{longtable}

\frenchspacing
\parskip=0.5ex

\fancypagestyle{plain}{%
\fancyhead{}%
\fancyhead[RO, LE]{\leftmark}%
\fancyfoot{}%
\fancyfoot[LE, RO]{\thepage}}
\pagestyle{plain}

\newcommand{\XXX}{\mbox{\color{red}XXX}}

%% - - - - index

\makeindex

% první použití termínu do indexu (nientry == new index entry)
% #1 entry do indexu, #2 slovo do textu, #3 slovo do okraje
\newcommand{\nientryc}[3]{%
\index{#1}\textsl{#2}\marginpar{\flushleft{}\small{}\textsl{#3}}}

% první použití termínu do indexu
% #1 entry do indexu, #2 slovo do textu, #1 slovo do okraje
\newcommand{\nientryb}[2]{%
\index{#1}\textsl{#2}\marginpar{\flushleft{}\small{}\textsl{#1}}}

% první použití termínu do indexu
% #1 entry do indexu, #1 slovo do textu, #1 slovo do okraje
\newcommand{\nientrya}[1]{%
\index{#1}\textsl{#1}\marginpar{\flushleft{}\small{}\textsl{#1}}}

% následné použití termínu do indexu (ientry == index entry)
% #1 entry do indexu, #2 slovo do textu
\newcommand{\ientryb}[2]{%
\index{#1}\textsl{#2}}

% následné použití termínu do indexu (ientry == index entry)
% #1 entry do indexu, #1 slovo do textu
\newcommand{\ientrya}[1]{%
\index{#1}\textsl{#1}}

%% - - - - vkládání obrázků

% vkládání obrázků
% #1 caption, #2 label, #3 jméno souboru bez přípony, #4 zvětšení/zmenšení
\newcommand{\img}[4]{%
\begin{figure}[htbp]%
\centering%
\ifpdf%
\includegraphics[scale=#4]{img/#3.jpg}%
\else%
\includegraphics[scale=#4]{img/#3.eps}%
\fi%
\caption{#1}%
\label{fig:#2}%
\end{figure}}

% vloží model: #1 caption, #2 label == jméno souboru bez přípony
\newcommand{\model}[2]{%
\begin{figure}[htbp]%
\centering%
\ifpdf%
\includegraphics[width=\textwidth]{img/#2.jpg}%
\else%
\includegraphics[width=\textwidth]{img/#2.eps}%
\fi%
\caption{#1}%
\label{fig:#2}%
\end{figure}}

% vloží model otočený o 90: #1 caption, #2 label == jméno souboru bez přípony
\newcommand{\modelrot}[2]{%
\begin{figure}[htbp]%
\centering%
\ifpdf%
\includegraphics[angle=90,height=\textwidth]{img/#2.jpg}%
\else%
\includegraphics[angle=90,height=\textwidth]{img/#2.eps}%
\fi%
\caption{#1}%
\label{fig:#2}%
\end{figure}}

%% - - - - zkratky

\newcommand{\tts}{TUTOS}
\newcommand{\jtts}{Java TUTOS}
\newcommand{\sfnet}{SourceForge.net}

%% - - - - mišmaš

% krátký souhrn toho, co nás čeká (použití hned za \section)
\newcommand{\secpreview}[1]{%
\begin{center}%
\small{}\parbox{0.8\textwidth}{\textit{#1}}%
\end{center}}

% tiskne slovo do textu a vysvětlující popisek do okraje
% #1 slovo, #2 popisek
\newcommand{\leftnote}[2]{%
\emph{#1}\marginpar{\flushleft{}\small{}\emph{#2}}}

% tiskne url do textu
\newcommand{\myhref}[1]{%
\href{#1}{\texttt{#1}}}

% citace v textu (citation-quote)
\newcommand{\cq}[2]{%
\mbox{(str. #1)} {\it\uv{#2}}}

\newcommand{\inlinecode}[1]{%
{\tt{}\mbox{#1}}}

\newcommand{\cl}[1]{%
{\tt{}#1}}


%% - - - -
\begin{document}


%---------------------------------- titlepage ---------------------------------


\begin{titlepage}
  \begin{center}
    
    {\bf\huge{Vysoká škola ekonomická v~Praze}}

    {\bf\LARGE{Fakulta informatiky a statistiky}}

    {\bf\Large{Katedra informačních technologií}}

    \vspace*{\stretch{1}}  

%    \begin{flushleft}
      \begin{tabular}{l@{ : }l}
        Diplomant & \href{mailto:mar@centrum.cz}{Martin Šlouf}\\
        Vedoucí diplomové práce & \mbox{doc. RNDr. Pavel Drbal, CSc.}\\
        Recenzent & \mbox{Ing. Martin Labský}
      \end{tabular}
%    \end{flushleft}

    \vspace*{\stretch{1}}  
    
    {\bf\large{TÉMA DIPLOMOVÉ PRÁCE}}

    \vspace{1em}
    {\bf\huge{Analýza systému TUTOS}}

  \end{center}
  \vspace*{\stretch{2}}  
\end{titlepage}


%------------------------------ prohlášení ------------------------------------
\pagestyle{empty}

\begin{center}
  {\bf\large{Prohlášení}}
\end{center}

Prohlašuji, že jsem diplomovou práci zpracoval samostatně a že jsem uvedl
všechny použité prameny a literaturu,

\vspace*{\stretch{1}}
V~Praze dne \mbox{13.12. 2004}\hfill{}....................\\
\hspace*{\fill{}}podpis

\vspace*{\stretch{1}}


%------------------------------ abstrakt --------------------------------------
\newpage
\pagestyle{empty}


%\phantomsection
%\addcontentsline{toc}{section}{Abstrakt}
\begin{center}
  {\bf\large{Abstrakt}}
\end{center}

Tento dokument předkládá analýzu informačního webového systému \tts{}.  \tts{}
je projekt \sfnet{} šířený pod licencí GPL, který lze využít pro řízení
projektů a související činnosti.  Cílem je pomocí metodiky OMT popsat návrh
systému, vymezit chyby v~návrhu a implementaci a doporučit konkrétní řešení
vedoucí k~nápravě.  První kapitoly práce jsou věnovány především popisu
systému, následující části diskutují doporučené úpravy.  Při popisu systému se
vychází z~jeho jednotlivých vrstev (prezentační, aplikační a databázové).
V~databázové a aplikační vrstvě se vyskytuje několik málo nedostatků, jež mohou
být relativně snadno odstraněny.  Největší problémy jsou s~prezentační vrstvou,
která již nevyhovuje současným potřebám systému --- nedostatečným způsobem
podporuje alternativní výstupní formáty, zejména XML.  Podstatná část práce se
věnuje návrhu nové prezentační vrstvy, jež by měla nabídnout lepší řešení při
respektování současných principů tvorby stránek.

{\bf{}Klíčová slova:} TUTOS, OMT, objektová analýza, objektový design, open
source

\vspace*{\stretch{1}}  

%\phantomsection
%\addcontentsline{toc}{section}{Abstract}
\begin{center}
  {\bf\large{Abstract}}
\end{center}

This thesis presents analysis of \tts{}, the web information system.  \tts{} is
\sfnet{} project licensed under GPL.  It can be used as a project management
tool, while providing also other functionality.  The~main objective is to
provide description of the system design using OMT method as well as present
detailed view on problematic parts of the system and suggest an appropriate
solution.  First part of the thesis describes the~system.  Second part suggests
and discusses the solutions.  Description of the~system is based on system
layers --- presentation, application (business) and database layer.  Database
and application layers have very few failures and all of them could be safely
fixed.  The most complicated solution is suggested for presentation layer,
which lacks support for alternative outputs formats, such as XML.  Significant
part of the~thesis is dedicated to the~new presentation layer design.

{\bf{}Keywords:} TUTOS, OMT, object analysis, object design, open source

\vspace*{\stretch{1}}  

%------------------------ předmluva & poděkování ------------------------------
\newpage


\phantomsection
\addcontentsline{toc}{section}{Předmluva}
\section*{Předmluva}
\label{predmluva}

Tato práce popisuje informační systém \tts~\cite{ttsweb} z~pohledu vývojáře.
Od tohoto dokumentu může očekávat užitek zejména komunita vývojářů systému
\tts{}, mezi které patří i autor této práce.

\tts{} je systém s~volně dostupným zdrojovým kódem (open source) šířený pod
licencí GPL~\cite{GPL} (free software). Jedná se o program pro řízení projektů
a podobné činnosti. Nabízí příjemné prostředí, dobrou funkcionalitu,
nezávislost na platformě, lokalizaci a stabilitu.  O použitelnosti
(a~užitečnosti) svědčí aktivita ve fórech, elektronických konferencích a na
webových stránkách (\cite{ttssfweb}, \cite{ttssfmaillist}).  Systém je využíván
i v~českém prostředí.

Snahou a motivací autora je, mimo jiné, nahradit jistý nedostatek řady volně
šiřitelných programů --- totiž nedostatek kvalitní dokumentace.


\phantomsection
\addcontentsline{toc}{section}{Poděkování}
\section*{Poděkování}
\label{podekovani}

Na tomto místě bych rád poděkoval svému školiteli, panu doc.~RNDr.~Pavlu
Drbalovi,~CSc., za jeho toleranci a přizpůsobivost, se kterou vedl moji
diplomovou práci, a~svým blízkým, kteří projevili značné pochopení po dobu, kdy
tento dokument vznikal.

Samozřejmostí je též vyjádření obdivu a podpory komunitě lidí propagujících
volně šiřitelný software, bez nichž by tato práce nikdy nevznikla.

\phantomsection
\addcontentsline{toc}{section}{Typografické a stylistické konvence}
\section*{Typografické konvence}
\label{typografickekonvence}

Z~důvodu snazší čitelnosti jsou na některých místech cizí termíny skloňovány,
místo aby bylo použito zdlouhavého opisného tvaru.

Označení prvků a popisky v~modelech jsou anglicky --- tak mohou modely
posloužit většímu okruhu čtenářů.

Jména tříd jsou převzaty ze systému \tts{}.

{\tt Strojem jsou psány URL odkazy, názvy programů a kód.}

{\sl Skloněné písmo je použito pro termíny z~rejstříku.}

\vfill{}\noindent
{\small{}Tento dokument byl vytvořen v~systému
  \href{http://www.cstug.cz/}{\LaTeXe{}} za použití textového editoru
  \href{http://www.emacs.org/}{GNU Emacs}, modely byly nakresleny v~programu
  \href{http://www.gnome.org/projects/dia/}{Dia}.  Je volně dostupný na adrese
  \myhref{http://www.justlogin.cz/martin/projekty/diplomka.tgz}.}


%---------------------- obsah, seznam obrázků, seznam tabulek -----------------
\newpage
\pagestyle{plain}


\phantomsection
\addcontentsline{toc}{section}{Obsah}
\tableofcontents{}

%\newpage
\phantomsection
\addcontentsline{toc}{section}{Seznam obrázků}
\listoffigures{}


%----------------------------------- úvod -------------------------------------
\newpage
\input{1uvod}
%----------------------- základní popis systému -------------------------------
\newpage
\input{2zakladnipopis}
%---------------------------- návrh systému -----------------------------------
\newpage
\input{3navrhsystemu}
%--------------------- úpravy databázové vrstvy -------------------------------
\newpage
\input{4upravydatabazovevrstvy}
%--------------------- úpravy aplikační vrstvy --------------------------------
\newpage
\input{5upravyaplikacnivrstvy}
%--------------------- úpravy prezentační vrstvy ------------------------------
\newpage
\input{6upravyprezentacnivrstvy}
%------------------------------ závěr -----------------------------------------
\newpage
\input{7zaver}


%-------------------------------- souhrn --------------------------------------
%\newpage


%\section{Souhrn}
%\label{sec:souhrn}

%\XXX

%------------------------------- přílohy --------------------------------------
%\newpage
%\appendix

%------------------------------ reference -------------------------------------
\newpage


\phantomsection
\addcontentsline{toc}{section}{Reference}
\label{reference}
\begin{thebibliography}{99}

\ifpdf
  \small{}
\else
  \footnotesize{}
\fi

\bibitem{GPL} \myhref{http://www.gnu.org/copyleft/gpl.html}

\bibitem{ttsweb} \myhref{http://www.tutos.org/}

\bibitem{ttssfweb} \myhref{http://sourceforge.net/projects/tutos/}
  
\bibitem{ttssfmaillist} elektornická konference
  {\tt{}tutos-devel@lists.sourceforge.net}

\bibitem{OMT} Pavel Drbal: Objektově orientované metodiky a technologie ---
  \mbox{1. a 2. díl},\\
  Vysoká škola ekonomická v~Praze, Praha 1997, \mbox{ISBN 80--247--0029--8}

\bibitem{CORBA} Jindřich Zelený, Josef Nožička: COM+, CORBA, EJB,\\
  BEN --- technická literatura, Praha 2002, \mbox{ISBN 80--7300--057--8}

\bibitem{opensource} Glyn Moody: Rebel Code,\\
  Perseus Publishing, Cambridge 2001, \mbox{ISBN 0--7382--0670--9}

\bibitem{advunix} Marc J.~Rochkind: Advanced UNIX programming, 2nd
  edition,\\
  Addison--Wesley, 2004, \mbox{ISBN 0--13--141154--3}

\bibitem{perl} Pavel Satrapa: Perl pro zelenáče,\\
  Neokortex, Praha 2000, \mbox{ISBN 80--86330--02--8}

\bibitem{phpappserver1} \myhref{http://www.carthag.org/}

\bibitem{phpappserver2} \myhref{http://www.phplens.com/}

\bibitem{ttsweb2} \myhref{http://www.tutos.org/homepage/links.html}

\bibitem{javaprof} Brett Spell, Professional Java Programming,\\
  Wrox Press, Inc., 2000, \mbox{ISBN 1--861003--82--X} 
  
\bibitem{firebird} Pavel Císař, Interbase/Firebird Tvorba, administrace a
  programování databází,\\
  Computer Press, Brno 2003, \mbox{ISBN 80--7226--946--1}

\bibitem{gtk} \myhref{http://www.gtk.org/}
  
\bibitem{mvc}
  \myhref{http://www.javaworld.com/javaworld/jw-04-1998/jw-04-howto.html}
  
\bibitem{mvcwiki} \myhref{http://en.wikipedia.org/wiki/Model-view-controller}

\bibitem{cppprof} Bjarne Stroustrup, The C++ Programming Language,\\
  Addison--Wesley, 2000, \mbox{ISBN 0-201-70073-5}

\bibitem{phpADODB} \myhref{http://adodb.sourceforge.net/}

\bibitem{phpPEARDB} \myhref{http://pear.php.net/package/DB}

\bibitem{fmwiki} \myhref{http://en.wikipedia.org/wiki/Factory\_method\_pattern}

\bibitem{iteratorwiki} \myhref{http://en.wikipedia.org/wiki/Iterator\_pattern}

\bibitem{jdbcspec} \myhref{http://java.sun.com/products/jdbc/download.html}

\bibitem{pyTWISTED} \myhref{http://twistedmatrix.com/}

\bibitem{pyZOPE} \myhref{http://www.zope.org/}

\bibitem{uml} Joseph Schmuller: Myslíme v~jazyku UML,\\
  Grada Publishing, spol. s~r. o., 2001, \mbox{ISBN 80--247--0029--8}

\bibitem{uml2} Jim Arlow, Ila Neustad: UML a unifikovaný proces vývoje
  aplikací,\\
  Computer Press, 2003, \mbox{ISBN 80--7079--740--1}

\bibitem{framework1} \myhref{http://rwfphp.multispan.com/}

\bibitem{framework2} \myhref{http://phpmvc.net/}

\bibitem{framework3} \myhref{http://jakarta.apache.org/velocity/index.html}

\bibitem{framework4} \myhref{http://jakarta.apache.org/turbine/index.html}
  
\bibitem{php5reflection}
  \myhref{http://www.php.net/manual/en/language.oop5.reflection.php}

\bibitem{hibernate} \myhref{http://www.hibernate.org/}

\bibitem{PyDO} \myhref{http://skunkweb.sourceforge.net/PyDO/}
  
\bibitem{mvcjavaworld}
  \myhref{http://www.javaworld.com/javaworld/jw-04-1998/jw-04-howto.html}

\bibitem{xmlrpc} \myhref{http://www.xmlrpc.com/spec}

\bibitem{smarty} \myhref{http://smarty.php.net/}

\bibitem{squirrel} \myhref{http://squirrel-sql.sourceforge.net/}

\bibitem{modpython} \myhref{http://www.modpython.org/}

\bibitem{phpdoc} \myhref{http://sourceforge.net/projects/phpdoc/}

\end{thebibliography}


%-------------------------- rejstřík ------------------------------------------
\newpage


\phantomsection
\addcontentsline{toc}{section}{Rejstřík}
\label{rejstrik}
\printindex


\end{document}
