• Keine Ergebnisse gefunden

Praktische Software-Entwicklung:

N/A
N/A
Protected

Academic year: 2022

Aktie "Praktische Software-Entwicklung:"

Copied!
17
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische Software- Entwicklung:

Code-Doku

Uberblick¨

Praktische Software-Entwicklung:

Code-Dokumentation mit Doxygen

Institut f ¨ur Informatik Mustererkennung und Bioinformatik

Angewandte Bildverarbeitung, SS 2007

(2)

Praktische Software- Entwicklung:

Code-Doku

Uberblick¨

Uberblick ¨

1 Software-Dokumentation

2 Doxygen

3 Kommentare im Code

4 Dokumente generieren

5 Strategien

6 Weitere Informationen

(3)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung Strategien Mehr Infos

Das Problem. . .

Programme sind ”kurzlebig”. . .

. . . Was war doch gleich die Idee f ¨ur diesen Code?

. . . Welcher Algorithmus steckt dahinter?

. . . Gab es noch Probleme? Oder lief alles?

ausserdem. . .

wird der Code vielleicht mal wieder gebraucht wechselt vielleicht mal der Entwickler

m ¨ochte man f ¨ur grosse Software-Pakete gern eine Dokumentation haben:

Welche Klasse macht was und wovon h ¨angt sie ab?

Aber:

das Schreiben einer Dokumentation braucht Zeit

. . . die oft fehlt!!!

(4)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung Strategien Mehr Infos

. . . und ein L ¨osungsansatz

Idee:

dokumentiere direkt beim Code-Schreiben nutze diese Kommentare zur Generierung einer Klassendokumentation

⇒ Kompromiss zwischen Notwendigkeit und Aufwand

⇒ kein komplettes Manual, aber Doku f ¨ur Code-Struktur zahlreiche Tools f ¨ur diverse Programmiersprachen:

Javadoc

Doc++ (Java, C++, . . . )

Doxygen (Java, C++, C, IDL)

. . .

(5)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen

Kommentare Anwendung Strategien Mehr Infos

Doxygen: Grundideen

Ansatz:

Doxygen analysiert spezielle Kommentare im Quelltext . . . und erzeugt daraus

(sortierte) Listen aller Dateien und Klassen Dokumentation f ¨ur jede Klasse, jede Variable, jede Funktion und jede Datei

(graphische) Klassenhierarchien Abh ¨angigkeitsdiagramme ToDo-Listen

. . .

(6)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen

Kommentare Anwendung Strategien Mehr Infos

Doxygen: Grundideen

Features

verf ¨ugbar f ¨ur Windows und Unix/Linux GNU General Public License

Ausgabe: HTML, L

A

TEX, Man-Pages mathematische Formeln (L

A

TEX)

Hyperlinks (zwischen Dateien, aber auch ins Internet) HTML-Code

. . .

(7)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare

Anwendung Strategien Mehr Infos

Doxygen-Kommentare

Doxygen sucht nach speziellen Kommentaren:

a) Qt-Style Blocks:

/*!

... Kommentar ...

*/

Zeilen:

//! ... eine Zeile Kommentar

b) JavaDoc-Style Blocks:

/**

* ... Kommentar ...

*/

Zeilen:

/// ... eine Zeile Kommentar

(8)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare

Anwendung Strategien Mehr Infos

Eine Beispiel-Datei: Klassen-Deklaration

/** \file cameraControl.h

* \brief Declares interface "cameraControl" for active control

* of motion of connected cameras.

* \author Birgit Moeller (moeller@informatik.uni-halle.de)

* \date November 10, 2002

*/

#include "hardware/camera/control/base/cameraConfig.h"

/**

* \brief Interface for active control of camera movements.

*

* This interface defines methods to communicate with local cameras

* connected directly to the local host. In detail methods for

* control interface registration and commands for general movements

* zoom of the camera are declared.

**/

class cameraControl { protected:

bool verbose; /**< \brief Verbose mode. */

...

(9)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare

Anwendung Strategien Mehr Infos

Eine Beispiel-Datei: Klassen-Deklaration

...

public:

/**

* \name Registration

* (methods to open / close the local camera device)

*

* @{

**/

virtual bool openCameraDevice () = 0; /**< \brief Open camera device. */

virtual bool closeCameraDevice () = 0; /**< \brief Close camera device. */

/* @} */

/** \brief Sets verbose mode ’true’ or ’false’. */

virtual inline void setVerboseMode ( bool b ) { this->verbose = b; };

};

(10)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare

Anwendung Strategien Mehr Infos

Funktionen dokumentieren

Spezifikation und Signatur:

\param Funktionsparameter

\return R ¨uckgabewert

/**

* Calculates which points to use in parameter estimation.

* The result is a mask, in which only the "best" points are set valid.

*

* \param img input image

* \param gradMagImg gradient-magnitude image of img

* \param bestPoints resulting mask

*

* If the size of the gradMagImg is 0, it is calculated from img.

* Otherwise it is assumed, that the size has been calculated before.

*/

void featurelessEstimation::estimateBestPoints(unsigned int level, HBMImageDirect &img, HBMImageDirect &gradMagImg) {

...

}

(11)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare

Anwendung Strategien Mehr Infos

Mathematische Ausdr ¨ucke

L A TEX-Style:

/**

* \brief Motion measure based on average intensity difference.

*

* \f[

* m(x,y) = \frac{1}{|N|} \sum\limits_{(x,y)\in N}|I_1(x,y) - I_2(x,y)|

* \f]

*/

void motionDetection::computeIntensityDifference(...) {...}

⇒ m(x , y ) = |N| 1 P

(x,y)∈N

|I 1 (x , y ) − I 2 (x , y )|

(12)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare

Anwendung Strategien Mehr Infos

ToDo’s

f ¨ur offene Fragen, Probleme, Fehler:

\todo Anmerkung

/**

* \brief This function does nothing for the moment...

*

* \todo Add functionality, or delete... :-)

*/

void nothingDoneHere(int noNumber) {}

oft ist es hilfreich, Name und Datum mit anzugeben:

/**

* \brief This function does nothing for the moment...

*

* \todo Birgit, 01. April 2007: Add functionality, or delete... :-)

*/

(13)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung

Strategien Mehr Infos

Doxygen anwenden

Aufruf:

doxygen ’config-filename’

in der Konfigurationsdatei steht . . . um welches Projekt es sich handelt Eingabedateien / -verzeichnisse Ausgabeverzeichnis

Sprache

Layout-Optionen

was generiert werden soll

. . . und noch viel mehr!

(14)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung

Strategien Mehr Infos

Eine Beispiel-Konfiguration - Teil 1

PROJECT_NAME = ToPAs

PROJECT_NUMBER = "Release 1.0"

OUTPUT_DIRECTORY = . INPUT = ../../src/apps \

../../src/libs \ ../../src/interfaces FILE_PATTERNS = *.cc *.h

EXCLUDE = ../../src/libs/math/linearProgramming STRIP_FROM_PATH = /home/moeller/src/topas/

MAX_INITIALIZER_LINES = 2 RECURSIVE = YES

COLS_IN_ALPHA_INDEX = 4 TREEVIEW_WIDTH = 600 MAN_EXTENSION = 3 ENUM_VALUES_PER_LINE = 5 EXTRACT_PRIVATE = YES OUTPUT_LANGUAGE = English EXTRACT_ALL = NO EXTRACT_STATIC = YES HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO ...

(15)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung

Strategien Mehr Infos

Eine Beispiel-Konfiguration - Teil 2

QUIET = NO WARNINGS = YES

WARN_IF_UNDOCUMENTED = YES WARN_LOGFILE =

RECURSIVE = YES ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 4 GENERATE_HTML = YES HTML_ALIGN_MEMBERS = YES TOC_EXPAND = YES DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 600 ENABLE_PREPROCESSING = NO MACRO_EXPANSION = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES GRAPHICAL_HIERARCHY = YES DOT_PATH =

GENERATE_LEGEND =

(16)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung Strategien Mehr Infos

Was dokumentiert man jetzt wie?!

soviel wie n ¨otig, aber nicht mehr eine Kurzbeschreibung f ¨ur. . .

. . . jede Datei (grober Inhalt) . . . Klassen und Funktionen

. . . (wichtige) Variablen/Klassen-Members ausf ¨uhrlichere Kommentare f ¨ur. . .

. . . komplexere Algorithmen

. . . Software-Besonderheiten

(17)

Praktische Software- Entwicklung:

Code-Doku

Software- Dokument.

Doxygen Kommentare Anwendung Strategien Mehr Infos

Weitere Informationen

Beispiel-Konfigurationsdatei:

/vol/export/angewandteBV SS07/misc Doxygen im Internet:

http://www.doxygen.org

Referenzen

ÄHNLICHE DOKUMENTE

Gabriele Muccino ist bekannt dafür, dass er sowohl in Italien als auch in den USA dreht – irgendwie scheint er den Spagat zwischen Hol- lywood und Cinecittá zu schaffen – und er

Dankbar sind wir auch, dass bereits im zweiten Jahr Mit- arbeiter von Höffner ausgewählten Schüler*innen oder Klassen ein Weihnachtsgeschenk als Wertschätzung und Anerkennung

abgeschlossene Sekundarschule; Schulstufe A mit genügenden Leistungen oder Schulstufe B mit guten Leistungen in den Kernfächern  (Deutsch, Mathematik, Englisch und

Ich war ungefähr elf Jahre alt, als mir, kurz nach- dem ich die Rolle der Annie nicht bekommen hatte, klar wurde, dass meine Fähigkeiten zu singen, zu tan- zen und ein Publikum

Nach dem Frühstück haben wir dann Zeit für eine Stadtrundfahrt durch New York City (fakultativ). Tag Der Tag steht Ihnen zur freien Verfügung. Am Nachmittag fahren wir dann

Wählen sie samstags mit dem „Willys-kinoabend&#34; einen film aus dem Programm des kinostar arthaus, danach schlendern sie „einfach rüber“ ins Willys im insel-hotel - dort

Es wird eine Recherche in der Produktdokumentation, dem Benutzerhandbuch und der Hersteller- bzw. Produktwebsei- te sowie der Dokumentation und Hersteller- bzw. Produkt-

„Transi onTown“ zu nennen. Dabei handelt es sich um eine Bewegung, die Menschen mo viert und ak viert, die Lebens- und Umweltbedingungen eigenverantwortlich, gemeinscha lich