Beratung für Agile Software-Entwicklung Beratung für Agile Software-Entwicklung
Software
Hilfreiche Software-Werkzeuge für alle(!) Teams

Horst Franzke
Gartenstr.23 
D-84508 Burgkirchen 
+49 (8679) 914 795 
h.franzke@t-online.de

Sie sind hier: Startseite > Software (Übersicht) Praxis | Artikel | Services | Bücherecke | Software | WWW | Über mich | Änderungen | Impressum

Hinweise

Auf dieser Seite möchte ich Sie auf einige Software-Werkzeuge hinweisen, die die Arbeit in Entwicklungs-Projekten nach meiner Erfahrung gut unterstützen können. Aber Vorsicht: kein Werkzeug kann von sich aus z.B. die Software-Qualität steigern; es muß immer "vernünftig" angewendet und die Ergebnisse ggf. angemessen interpretiert werden.

Ein Werkzeug darf niemals zu einer Last für das Projekt-Team werden; ein Werkzeug muß immer eine spürbare Hilfe/Unterstützung sein!

Nicht: "Seht 'mal alle her: wir benutzen Ant!"
Sondern: "Wir können jederzeit schnell liefern, weil wir Ant benutzen!"

Die Software-Werkzeuge wurden von mir in Gruppen unterteilt (siehe Navigation, links), die jeweils für sich einen Aspekt in Projekten und besonders in Agilen Projekten darstellen. Innerhalb jeder Gruppe sind die Werkzeuge alphabetisch geordnet. Es sind nur Open Source bzw. freie Tools angegeben.

Die Kurzbeschreibungen sind i.d.R. Zitate aus der jeweiligen Homepage (zum Zeitpunkt des Eintrags hier).

Ich freue mich über jede Rückmeldung: Sie erreichen mich immer per Email an h.franzke@t-online.de.


Viel Spaß mit den folgenden Tools!

Seitenanfang

Gruppe: Kommunikation

Einer der wichtigsten Aspekte in (Agilen) Projekten ist Kommunikation. Die beste Art dabei ist immer die direkte, Angesicht zu Angesicht. Es kann aber vorkommen, daß eine "leicht-gewichtiges" Tool benötigt wird (z.B. für "leicht-gewichtige" Dokumentation, oder auch für eine einfache Projekt-Homepage mit aktuellen Informationen):

Name: MoinMoin-Wiki
Homepage: http://moinmoin.wikiwikiweb.de/
Stichworte: Wiki-Web / Kommunikation / Zusammenarbeit / Dokumentation
Literatur: --
Hinweis(e): Wiki-Engine für Fortgeschrittene mit erweiterten Möglichkeiten gegenüber z.B. Usemod (s.unten): u.a. Titel-Index, Wort-Index und vor allem Möglichkeiten der Darstellung;
Kurzbeschreibung:
"MoinMoin is a nice and easy WikiEngine with advanced features - said in a few words, it is about collaboration on easily editable web pages. MoinMoin is Free Software licensed under the GNU GPL."
Name: UseMod-Wiki
Homepage: http://www.usemod.com/cgi-bin/wiki.pl
Stichworte: Wiki-Web / Kommunikation / Zusammenarbeit / Dokumentation
Literatur: --
Hinweis(e): einfache, d.h. schnell erlernbare Wiki-Implementierungen;
Kurzbeschreibung:
"UseModWiki is an implementation of the original Wiki concept created by Ward Cunningham. A "wiki" is a website that is collaboratively edited by its users, including the ability to change text written by other users."

Seitenanfang

Gruppe: Versions-Verwaltung

In Sachen Versions- bzw. Quellcode-Verwaltung sollte eigentlich in keinem Software-Projekt die Frage nie "Ob?", sondern nur "Wie?" sein:

Name: CVS -- Concurrent Versions System
Homepage: https://www.cvshome.org/
Stichworte: Quellcode-Verwaltung / Versionsverwaltung
Literatur: "Pragmatic Version Control (using CVS)", David Thomas / Andrew Hunt;
Hinweis(e): --
Kurzbeschreibung:
"CVS is the Concurrent Versions System, the dominant open-source network-transparent version control system. CVS is useful for everyone from individual developers to large, distributed teams."
Name: ViewCVS
Homepage: http://viewcvs.sourceforge.net/
Stichworte: Web-Browser-Interface
Literatur: --
Hinweis(e): weit ausreichende Funktionalität für lesenden Repository-Zugriff;
Kurzbeschreibung:
"ViewCVS is a Browser Interface for CVS and Subversion version control repositories. It generates templatized HTML to present navigable directory, revision, and change log listings. It can display specific versions of files as well as diffs between those versions."

Seitenanfang

Gruppe: Automatische Builds

In Agilen Software-Projekten wird viel Wert auf "Continuous Integration" gelegt; d.h. das Projekt-Team erhält laufende die Rückmeldung, ob das Software-System noch ohne Probleme integriert werden kann (bis hin zu automatischen Tests). Diese Art der Rückmeldung benötigt Werkzeug-Unterstützung:

Name: Apache Ant
Homepage: http://ant.apache.org/
Stichworte: Continuous Integration / Automatische Builds / Auto-Deployment
Literatur: "Pragmatic Project Automation", Mike Clark;
Hinweis(e): Plattform-unabhängig; vielseitige Integration von und zu anderen Werkzeugen;
Kurzbeschreibung:
"Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles. Why another build tool when there is already make, gnumake, nmake, jam, and others? Because all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms."
Name: Cruise Control
Homepage: http://cruisecontrol.sourceforge.net/
Stichworte: Automatische Builds / Continuous Build Process
Literatur: "Pragmatic Project Automation", Mike Clark;
Hinweis(e): Automatische Builds im Hintergrund, sobald im Sourcecode-Repository eine Änderung eingecheckt wird;
Kurzbeschreibung:
"CruiseControl is a framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds."
Name: NAnt
Homepage: http://nant.sourceforge.net/
Stichworte: .Net / Ant / Automatische Builds
Literatur: --
Hinweis(e): .Net-Implementierung von Apache Ant;
Kurzbeschreibung:
"NAnt is a free .NET build tool. In theory it is kind of like make without make's wrinkles. In practice it's a lot like Ant.
NAnt has been tested using the following runtime frameworks :
   * Microsoft .NET Framework 1.0
   * Microsoft .NET Framework 1.1
   * Microsoft .NET Framework 2.0 Beta 1
   * Mono 1.0"

Seitenanfang

Gruppe: Unit Tests

Eine favorisierte Verhaltensweise bei (Agilen) Software-Entwicklern ist "Test Driven Development (TDD)". Diese Verhaltensweise beginnt im Kleinen mit den sogenannten Unit Tests; auch hier bieten eine Reihe von Tools Hilfe und Unterstützung:

Name: EasyMock NEU
Homepage: http://www.easymock.org/
Stichworte: Java / Mock Objects / Mock Testing / Interfaces
Literatur: "Pragmatic Unit Testing (in Java with JUnit)", David Thomas / Andrew Hunt;
"JUnit Recipes", J.B. Rainsberger;
"Test-Driven Development -- A Practical Guide", David Astels;
Hinweis(e): für die Version 2.0 ist Java 1.5 notwendig;
Kurzbeschreibung:
"EasyMock provides Mock Objects for interfaces in JUnit tests by generating them on the fly using Java's proxy mechanism. Due to EasyMock's unique style of recording expectations, most refactorings will not affect the Mock Objects. So EasyMock is a perfect fit for Test-Driven Development."
Name: JUnit
Homepage: http://www.junit.org/
Stichworte: Java / Unit Test
Literatur: "Pragmatic Unit Testing (in Java with JUnit)", David Thomas / Andrew Hunt;
"JUnit Recipes", J.B. Rainsberger;
Hinweis(e): meist integriert in Java-IDEs (z.B. Eclipse);
Integration mit Ant;
Kurzbeschreibung:
"JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java. JUnit is Open Source Software, released under the Common Public License Version 1.0 and hosted on SourceForge."
Name: NUnit
Homepage: http://www.nunit.org/
Stichworte: .Net / Unit Test
Literatur: "Pragmatic Unit Testing (in C# with NUnit)", David Thomas / Andrew Hunt;
Hinweis(e): --
Kurzbeschreibung:
"NUnit is a unit-testing framework for all .Net languages. Initially ported from JUnit, the current version, 2.1 is the third major release of this xUnit based unit testing tool for Microsoft .NET. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features, for example custom attributes and other reflection related capabilities. NUnit brings xUnit to all .NET languages."

Seitenanfang

Gruppe: GUI-Tests

Eine Besonderheit ist das automatische Testen von Graphischen Oberflächen (GUIs). Werkzeuge helfen weiter:

Name: Abbot (Java GUI Test Framework)
Homepage: http://abbot.sourceforge.net/
Stichworte: automatische GUI Tests / Java / Swing / AWT
Literatur: --
Hinweis(e): --
Kurzbeschreibung:
"Abbot helps you test your Java UI. It comprises Abbot, which lets you programmatically drive UI components, and Costello (built on Abbot) which allows you to easily launch, explore and control an application. The framework may be used with both scripts and compiled code."
Name: Jemmy
Homepage: http://jemmy.netbeans.org/
Stichworte: automatische GUI Tests / Java / Swing / AWT
Literatur: "Agile Java: Crafting Code with Test-Driven Development", Jeff Langr;
"Test-Driven Development -- A Practical Guide", David Astels;
Hinweis(e): wird bei Sun benutzt (der Haupt-Entwickler arbeitet dort);
Kurzbeschreibung:
"Jemmy is a JavaTM library that is used to create automated tests for Java GUI applications. It contains methods to reproduce all user actions which can be performed on Swing/AWT components (i.e. button pushing, text typing, tree node expanding, ...)."
Name: jfcUnit
Homepage: http://jfcunit.sourceforge.net/
Stichworte: automatische GUI Tests / Java / Swing
Literatur: "Agile Java: Crafting Code with Test-Driven Development", Jeff Langr;
Hinweis(e): --
Kurzbeschreibung:
"jfcUnit is an extension to the popular testing framework JUnit. This document assumes you are familiar with the usage of JUnit. If not, visit the main JUnit website where there are a number of links to some excellent resources on the subject. jfcUnit enables developers to write test cases for Java Swing based applications.
Since version 2.0, jfcUnit provides XML Recording and playback. This allows users to quickly and automatically generate/edit scripts to drive the testing."

Seitenanfang

Gruppe: HTML-/XML-Tests

Auch bei der Entwicklung von HTML-Seiten muß man nicht auf automatische Tests verzichten:

Name: HttpUnit
Homepage: http://httpunit.sourceforge.net/
Stichworte: automatische HTML Tests
Literatur: "Java Tools for eXtreme Programming", Richard Hightower;
Hinweis(e): --
Kurzbeschreibung:
"What if you simply want to use a web-site as part of a distributed application?
In either case, you need to be able to bypass the browser and access your site from a program. HttpUnit makes this easy. Written in Java, HttpUnit emulates the relevant portions of browser behavior, including form submission, JavaScript, basic http authentication, cookies and automatic page redirection, and allows Java test code to examine returned pages either as text, an XML DOM, or containers of forms, tables, and links. When combined with a framework such as JUnit, it is fairly easy to write tests that very quickly verify the functioning of a web site."
Name: XMLUnit NEU
Homepage: http://xmlunit.sourceforge.net/
Stichworte: Testen von XML für JUnit (Java) und NUnit (.Net);
Literatur: "Test-Driven Development -- A Practical Guide", David Astels;
Hinweis(e): --
Kurzbeschreibung:
"XMLUnit for Java provides two JUnit extension classes, XMLAssert and XMLTestCase, and a set of supporting classes (e.g. Diff, DetailedDiff,Transform,SimpleXpathEngine,Validator,NodeTest) that allow assertions to be made about:
* The differences between two pieces of XML
* The outcome of transforming a piece of XML using XSLT
* The evaluation of an XPath expression on a piece of XML
* The validity of a piece of XML
* Individual nodes in a piece of XML that are exposed by DOM Traversal
XMLUnit for Java can also treat HTML content (even badly-formed HTML) as valid XML to allow these assertions to be made about the content of web pages too."

Seitenanfang

Gruppe: Performance-Tests

Die folgenden Werkzeuge helfen bei Performance- und Last-Tests:

Name: JUnitPerf
Homepage: http://www.clarkware.com/software/JUnitPerf.html
Stichworte: Performance Tests / Scalability Tests
Literatur: "Java Tools for eXtreme Programming", Richard Hightower;
Hinweis(e): --
Kurzbeschreibung:
"JUnitPerf is a collection of JUnit test decorators used to measure the performance and scalability of functionality contained within existing JUnit tests.
JUnitPerf contains the following JUnit test decorators: * TimedTest; * LoadTest; ... "

Seitenanfang

Gruppe: Funktions-Tests

Ein besonderes Maß an Effizienz wird erreicht, wenn die Abnahme-Tests der Kunden/Anwender automatisiert werden können; dann ist man in der Lage jede Änderung der Software in extrem kurzer Zeit und mit geringstem manuellen Test-Aufwand auszuliefern:

Name: Fit
Homepage: http://sourceforge.net/projects/fit/
Stichworte: Funktionale Tests / Automatisierte Tests
Literatur: "Fit for Developing Software"
Hinweis(e): z.B. für C#, C++, Java, Perl, Python, Ruby, Smalltalk;
Kurzbeschreibung:
"Fit is a framework for writing acceptance tests as used in extreme programming."
"Fit is a {java,c#,perl,ruby,...} framework for interpreting html tables and binding them to fixtures that transmit the table cells to an application, and compare results from that application to other table cells. Fit generates a new html table that looks just like the input table except that the comparison cells are colorized and annotated. Green cells match the expected outputs. Red cells don't."
Name: FitNesse
Homepage: http://www.fitnesse.org/
Stichworte: Funktionale Tests / Automatisierte Tests
Literatur: "Fit for Developing Software"
Hinweis(e): verbesserte Oberfläche gegenüber Fit (Wiki);
Kurzbeschreibung:
"FitNesse is a lightweight, open-source framework that makes it easy for software teams to:
... Collaboratively define Acceptance-Tests (web pages containing simple tables of inputs and expected outputs);
... Run those tests and see the results;
FitNesse is a collaborative tool that is designed to be used by developers, business analysts, and QA staff. Stories can be captured on wiki pages. Over time they can be embellished and elaborated with tables that demonstrate the detailed requirements of the story. Later fixtures can be added that allow those tables to communicate directly with the application. Thus the story grows from a simple statement of intent, to a full fledged requirement, to an automated acceptance test. "

Seitenanfang

Gruppe: Programmierung

Bei dieser Gruppe scheiden sich die Geister: was ist "hilfreich" bei der Programmierung? Trotzdem sollte man sich bewußt machen, welche Tools es gibt und was sie leisten können (und was nicht: die Tools werden sicher keine Programme schreiben!):

Name: Checkstyle
Homepage: http://checkstyle.sourceforge.net/
Stichworte: Coding Standards
Literatur: --
Hinweis(e): Integration mit Ant;
Kurzbeschreibung:
"Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. Checkstyle is highly configurable and can be made to support almost any coding standard. An example configuration file is supplied supporting the Sun Code Conventions. As well, other sample configuration files are supplied for other well known conventions. ... Checkstyle provides checks that find class design problems, duplicate code, or bug patterns like double checked locking."
Name: JDepend
Homepage: http://www.clarkware.com/software/JDepend.html
Stichworte: --
Literatur: --
Hinweis(e): Integration mit Ant;
Kurzbeschreibung:
"JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively."
Name: XRadar
Homepage: http://xradar.sourceforge.net/
Stichworte: Code-Analyse
Literatur: --
Hinweis(e): --
Kurzbeschreibung:
"The XRadar is an open extensible code analysis framework and report tool currently supporting all Java based systems. The XML/XSL batch-processing framework produces HTML/SVG reports of the systems current state and the development over time. It gets results from several brilliant open source projects and a couple of in house grown projects and presents the results as massive unified html/svg reports. The architecture is based on java, xml and xsl. Presently t only supports Java, but there are plans to produce plugins for other leading languages."

Seitenanfang

Gruppe: Betrieb

Wenigstens ich kenne die Situation, daß ein Projekt-Team auch mindestens zeitweise während der Betriebs-Phase für die Software verantwortlich ist. Auch muß niemand auf Werkzeug-Unterstützung verzichten:

Name: Bugzilla
Homepage: http://www.bugzilla.org/
Stichworte: Bug-Tracking
Literatur: --
Hinweis(e): --
Kurzbeschreibung:
"Bugzilla is a "Defect Tracking System" or "Bug-Tracking System". Defect Tracking Systems allow individual or groups of developers to keep track of outstanding bugs in their product effectively. Most commercial defect-tracking software vendors charge enormous licensing fees. Despite being "free", Bugzilla has many features its expensive counterparts lack. Consequently, Bugzilla has quickly become a favorite of hundreds of organizations across the globe."

Seitenanfang

Copyright 2004 - 2007, Horst Franzke Impressum Last Page Update: 21-Jan-2007 (r-5-0-1)