Packages.tex 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. \documentclass[notitlepage,twoside,fleqn]{article}
  2. \usepackage[article]{Graphlet}
  3. \begin{document}
  4. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  5. %
  6. % Extension Modules
  7. %
  8. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  9. \input{Config.tex}
  10. \title{
  11. Graphlet Packages Specification
  12. \\*[3.0cm]
  13. {\textbf{DRAFT VERSION}}
  14. }
  15. \author{Michael Himsolt}
  16. \maketitle
  17. \begin{abstract}
  18. This document defines the specifications for Graphlet packages.
  19. A Graphlet package is a software module, for example a graph
  20. drawing algorithm, which is a separate unit within the Graphlet
  21. system.
  22. \end{abstract}
  23. \tableofcontents
  24. \section{General}
  25. The package must be conform to the graphlet coding standards, as
  26. described in the Graphlet Coding Standards Manual.
  27. \section{GraphScript}
  28. Each algorithm must have a GraphScript interface defined. This
  29. interface must implement at least the following:
  30. \begin{itemize}
  31. \item A GraphScript command for the alogrithm.
  32. \item A \texttt{check} method which makes sure that the
  33. algorithm is only used with an appropriate graph. See the
  34. GraphScript manual for details.
  35. \item A parser for the parameter(s) of the algorithm.
  36. \end{itemize}
  37. All non-trivial algorithms should have their top level
  38. implemented in GraphScript. This has several advantages. First,
  39. it is easy to replace parts of the algorithm, even without
  40. recompiling the algorithm. Second, since the user interface is
  41. implemented with GraphScript, the integration of the algorithm
  42. and the the user interface becomes easier. Especially, each
  43. submodule may have its own user interface. Third, it is easier to
  44. modify the general outline of the algorithm, and write batch
  45. scripts which test these configurations on benchmark graphs.
  46. \section{User Interface}
  47. Each algorithm should at least provide a pop-up window for the
  48. parameter settings. Optional user interface elements include
  49. \begin{itemize}
  50. \item Additional windows, e.g.\ tool palettes.
  51. As an example, the user might select one or more edges and then
  52. click at a button in the palette to assign a constraint to this
  53. edge. This can of course also be implemented as menus, but
  54. menus are less convenient since the user must pull down the
  55. menu first.
  56. \item Display the result of the algorithm. This can be done by
  57. color coding some edges, output a message in the footer or
  58. opening a dialog window. This is especially important for error
  59. messages.
  60. \item Support for algorithm animation.
  61. \end{itemize}
  62. \section{Test Suite}
  63. \subsection{Test Graphs}
  64. Each algorithm should be accompanied by a set of test graphs:
  65. \begin{itemize}
  66. \item Graphs with errors in it. These graphs \emph{must
  67. trigger} an error message and \emph{must not} crash the
  68. system.
  69. \item Graphs without errors. These should be used to check that
  70. the algorithm runs correctly. It is important to realize that
  71. these graphs should not display the best face of the algorithm,
  72. but shoudl test \emph{all} features of the algorithm.
  73. \item Sample graphs which show the beauty of the algorithm.
  74. \end{itemize}
  75. \subsection{Test Programs}
  76. Each algorithm should be accompanied by test programs, which
  77. check that the algorithm runs correct. Ideally, the test programs
  78. should run the test graphs.
  79. The test programs should be written in GraphScript or optionally
  80. C++. GraphScript is preferred since testing and exception
  81. handling is easier. For example, the scripts may use Tcl's
  82. \texttt{catch} command to track errors.
  83. \section{Documentation}
  84. \emph{Programmer documentation} should be done in TeX with Graphlet's
  85. LaTeX2e style as supplied in the directory \texttt{doc} in
  86. the Graphlet source code directory.
  87. \emph{End user documentation} can either be supplied as online
  88. documentation (e.g.\ as HTML files), or as printed manuals.
  89. \end{document}
  90. %%% Local Variables:
  91. %%% mode: latex
  92. %%% End: