Deckblatt Projektvortrag Java- & Projekt-Tools s.brink (at) web.de 20. April 2005 1
Agenda Teil I: Java-Tools JavaDoc Ant Teil II: Projekt-Tools CVS Bugzilla Wiki Literaturverzeichnis 2
Teil I Java-Tools 3
JavaDoc 4
JavaDoc Was ist JavaDoc? Dokumentationsgenerator Gewinnt Informationen durch Angaben in den Java-Quelltexten Standardmäßiger Bestandteil des JDKs Durch Parameter steuerbar Eclipse enthält Tools zur einfachen Erstellung von JavaDocs 5
JavaDoc Tags (1) /** * Dokumentation befindet sich immer vor der * Klasse bzw. dem Attribut und der Methode */ class TestClass { /** Dokumentation des Attributes testint */ pulic int testint; } /** Dokumentation der Methode main */ public static void main(string[] args) {...} 6
JavaDoc Tags (2) /** * Tag Bedeutung Kontext * * @author Autor K * @exception Ausnahme M * @param Parameter M * @return Rückgabewert M * @see Verweis K,M,A * @version Versionsnummer K * @deprecated Hinweis! - veraltet K,M,A * * weitere Tags für spezielle Aufgaben verfügbar */ K = Klasse M = Methode A = Attribut 7
JavaDoc Beispiel /** * This immutable class represents <i>complex numbers</i>. * @author David Flanagan * @version 1.0 */ public class Complex { /** * Adds two Complex objects and produces a third object that represents * their sum. * @param c1 A Complex object * @param c2 Another Complex object * @return A new Complex object that represents the sum of * <code>c1</code> and <code>c2</code>. * @exception java.lang.nullpointerexception * If either argument is <code>null</code>. */ public Complex add(complex c1, Complex c2) { return new Complex(c1.x + c2.x, c1.y + c2.y); } } 8
Ant 9
Ant Was ist Ant? Plattformunabhängiges Skripting-Tool Ähnlich Make XML-Syntax Wofür ist Ant gedacht? Vereinfacht den Build-Process Compilierung erfolgt jedes Mal in gleicher Reihenfolge Berücksichtigt Abhängigkeiten 10
Ant Commandos Command Ant Copydir Copyfile Cvs Delete Deltree Exec Get Jar Java Javac Javadoc/Javadoc2 Mkdir Property Description Used to execute another ant process from within the current one. Used to copy an entire directory. Used to copy a single file. Handles packages/modules retrieved from a CVS repository. Deletes either a single file or all files in a specified directory and its subdirectories. Deletes a directory with all its files and subdirectories. Executes a system command. When the os attribute is specified, then the command is only executed when Ant is run on one of the specified operating systems. Gets a file from an URL. Jars a set of files. Executes a Java class within the running (Ant) VM or forks another VM if specified. Compiles a source tree within the running (Ant) VM. Generates code documentation using the javadoc tool. Makes a directory. Sets a property (by name and value), or set of properties (from file or resource) in the project. 11
Ant Beispiel <project name="simplecompile" default="deploy" basedir="."> <target name="init"> <property name="sourcedir" value="src"/ > <property name="outputdir" value="classes" /> <property name="deployjsp" value="/web/deploy/jsp" /> <property name="deployproperties" value="/web/deploy/conf" /> </target> <target name="clean" depends="init"> <deltree dir="${outputdir}" /> </target> <target name="prepare" depends="clean"> <mkdir dir="${outputdir}" /> </target> <target name="compile" depends="prepare"> <javac srcdir="${sourcedir}" destdir="${outputdir}" /> </target> <target name="deploy" depends="compile,init"> <copydir src="${jsp}" dest="${deployjsp}"/> <copyfile src="server.properties" dest="${deployproperties}"/> </target> </project> 12
Teil II Projekt-Tools 13
CVS 14
CVS Einleitung Einleitung: CVS steht für Concurrent Versions System Versionsverwaltung von Sourcecode und Textdokumenten Dient der kooperativen Entwicklung 15
CVS Vorteile Vorteile: Versionsverwaltung Rücksprung zu vorherigen Versionen jederzeit möglich Kommentare zu Änderungen Automatische Versions-/Revisionsnummern im Sourcecode (z.b. $Revision$, $Date$) Client/Server Architektur Zusammenarbeit über das Netz möglich 16
CVS Bestandteile Bestandteile: Repository Zentraler Dateibaum Repository vergleichbar mit einem Root-Directory Module Verzeichnis im Root-Directory Komponente oder Projekt Revision Gibt die Version einer Datei in einem bestimmten Format an 17
CVS Befehle Wichtige CVS Befehle: CVSROOT -Environment-Variable :pserver:anonymous@rubyforge.org:/var/cvs/railsbb login Import / checkout update commit add / remove 18
CVS mit Eclipse CVS Verwaltung mit Eclipse: Sehr komfortable Nutzung Grafisch aufbereitetes Diff / Merge LIVE Demonstration 19
CVS / Subversion Verbesserungen in Subversion: Dateien und Verzeichnisse können umbenannt werden Versionierung von Metadata (Key/Value-Paare) Commit als Transaktion WebDAV/DeltaV für bessere Interoperabilität Datenbank- (Berkeley-DB) oder Flat-file-Speicherung Versionierung von Bin-Dateien Branches und Tags stützen sich auf Kopien Versionierung von Sym-Links 20
Bugzilla 21
Bugzilla - Bug? Was ist ein Bug? auf deutsch: Wanze, Insekt, Bazillus, Käfer Historische Entstehung des Begriffs in der IT die ersten Computer (Ende 40er/Anfang 50er Jahre letzten Jahrtausends) bestanden aus übergroßen Röhren Insekten waren oft wirklich der Grund für Fehler, die Tierchen sind in die empfindlichen Verbindungsteile geklettert und haben so Kurzschlüsse ausgelöst man bezeichnet in der IT damit ein Problem, Fehler bzw. Macke, aber auch gewünschtes Feature eines Produktes 22
Bugzilla Was ist das? Was ist Bugzilla? ein Fehler- oder Problemverfolgungsystem (bug/issue tracking system oder auch defekt tracking system) erlaubt Einzelnen oder Gruppen von Entwicklern ausstehende Probleme ihrer Produkte im Auge zu behalten in in Perl geschrieben (CGI-Skripte) läuft dadurch auf den meist verbreitetsten Betriebssystemen Open Source Project des Mozilla Project steht unter Mozilla Public License 23
Bugzilla - Nutzen Warum Bugtracking? viele Jahre lang wurden einfach Mail- und Newslisten benutzt, um den Status von Problemen nachzuvollziehen fehleranfällig und tendiert dazu, dass Entwickler weniger wichtige Bugmeldungen löschen oder einfach ignorieren Defekt-Tracking-Software reduziert Zeit von Ausfällen, steigert Produktivität Konfigurationsmanagement und Replikation von Problemen, hilft beim Planen von Releases 24
Bugzilla Stärken Stärken von Bugzilla: starke bzw. detaillierte Suchfunktion Nutzer-konfigurierbare Email-Benachrichtigung komplette Historie aller gemachten Änderungen Verfolgung und grafische Darstellung von Abhängigkeiten zwischen Bugs Bugs können Anhänge enthalten integriertes, mehrstufiges Sicherheitsschema Web-, XML-, Email- und Konsolen-Schnittstellen 25
Bugzilla Ein Bug Wichtige Informationen zu einem Bug: Product and Component: ein Bug wird einem Produkt und einer Komponente zugewiesen, Produkte haben mind. eine Komponente Status and Resolution: Status bzw. was bisher mit dem Bug geschah Assigned To: Entwickler, der sich darum kümmern soll Summary: Kurzbeschreibung des Problems (ein Satz, Stichpunkte) Platform and OS: Arbeitsumgebung bzw. Betriebssystem Version: Produktversion, bei dem der Bug aufgetreten ist Priority: Standard 5 Stufen Severity: zeigt an, wie akut das Problem ist (auch um Erweiterungen vorzuschlagen) Reporter: Bugmeldender Attachments: Testfälle, Patches, Screenshots,... Additional Comments: Zusätzliche Kommentare 26
Wiki 27
Wiki Grundzüge eines Wikis: Im WWW verfügbare Seitensammlungen Sind sowohl lesbar, als auch schreibbar Seiten sind durch Links miteinander verknüpft Seiten sind sofort am Bildschirm änderbar wiki (hawaiianisch) = schnell 28
Wiki Soziale Sicht: Es existiert keine: Hierarchie Berechtigungskonzept Redaktion Jeder trägt bei, jeder verbessert Registrierung kennzeichnet Beiträge nur namentlich und schafft keine direkten Vorteile 29
Wiki Technisches: Versionsgeschichte zu jedem Stichwort Einfache, textbasierte Syntax Durch CamelCase Syntax geschriebene Wörter erzeugen Querverweise Querverweise werden zu existierenden, sowie leeren Seiten gesetzt 30
Wiki Beispiel: Wikipedia (basierend auf MediaWiki) Wikipedia nutzt das Wiki-Konzept zur Führung eines öffentlichen, weltweiten mehrsprachigen Lexikons Erweiterungen des Wiki-Konzeptes bei Wikipedia: Besucher können sich registrieren Zu jedem Artikel kann im Hintergrund eine (öffentliche) Diskussion geführt werden Interne Querverweise werden mit eckigen Klammern statt der ursprünglichen "CamelCase" Syntax geschrieben Administratoren können Artikel löschen Übersicht über neue und geänderte Artikel Möglichkeit, nicht vorhandene Artikel in eine Wunschliste aufzunehmen. Administratoren werden von der Besuchergemeinde vorgeschlagen und gewählt 31
Literaturverzeichnis JavaDoc http://java.sun.com/products/jdk/javadoc/ Java Documentation Comments http://www.unix.org.ua/orelly/java-ent/jnut/ch07_03.htm Introduction to Ant http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-ant.html Was ist ein Wiki? http://www.romankoch.ch/capslock/wiki.htm CVS mit Eclipse http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.user/reference Bugzilla www.bugzilla.org Subversion http://subversion.tigris.org/ 32