"Agile Java-Entwicklung in der Praxis"
Michael Hüttermann
O'Reilly, 1. Auflage Oktober 2007
ISBN 978-3-89721-482-8
Seiten: 432, gebundene Ausgabe
O'Reilly - Amazon


Klar, alle entwickeln inzwischen "agil". Fast jeder hat schon einmal vom Agilen Manifest gehört, häufige Iterationen werden inzwischen für die meisten IT-Projekte angestrebt, und dass die zwischenmenschliche Komponente auch "irgendwie" wichtig ist, wissen wir doch auch nicht erst seit gestern. Aber "agil" ist nicht so vage und schon gar nicht beliebig.

In meinem Buch "Agile Java-Entwicklung in der Praxis", O'Reilly, Oktober 2007, erkläre ich, was Agile Softwareentwicklung wirklich bedeutet, und zeige, wie sie sich konkret in die Tat umsetzen lässt. Dabei gehe ich auf die rudimentären Bestandteile eines jeden agilen Projektes sowie konkrete Ausprägungen wie XP, Scrum, Lean Development und FDD ein. Die einzelnen Hinweise und Praktiken können Sie komplett oder in Teilen übernehmen können. Ich diskutiere ebenso den Nutzen agiler Prozesse für alle Beteiligte (wie Entwickler, Kunde und Manager) und beschreibe einen exemplarischen agilen Prozess vom Kick-Off bis zur Bereitstellung der Software, Hinweise auf Stolpersteine nicht vergessend. Dabei lege ich wert auf Beispiele und Gegenbeispiele, hinterfrage und geben Ihnen genug Platz zur Entscheidung was für Sie persönlich das richtige Vorgehen ist.

Von der Methodik über die richtige Einführung agilen Vorgehens in Unternehmen führe ich bis zu den konkreten Werkzeugen, mit denen sich diese Prinzipien in Java-Projekten realisieren lassen. "Processes over Tools" heißt es im Agilen Manifest. Dennoch werden in agilen Projekten intensiv Werkzeuge eingesetzt, aber dies effektiv und effizient, um schnellstmöglich eine Rückkopplung über die Entwicklung zu haben, Tests durchzuführen, Anforderungen zu erheben, zu kommunizieren usw.

Die umfassende technische Infrastruktur deckt die "Building Blocks" Versionierung, Testen (Komponententests, funktionale Tests), Kollaboration und kontinuierliche Integration ab. Sie helfen die Qualität und Zufriedenheit hoch und das Risiko gering zu halten.

JUnit und/oder TestNG für Komponententests, Selenium, Fit und WebTest sowie Jemmy für funktionale und Akzeptanztests für Java Web- und Swing-Anwendungen, Subversion als VCS, Ant, Maven und CruiseControl für Konfigurationsmanagement und Buildprozess, CheckStyle und EMMA zur Einhaltung von Standards, Trac für Kollaboration und ergänzende Werkzeuge wie EasyMock -- sie alle lassen sich zu einer hervorragenden Infrastruktur verknüpfen, mit der man die Anforderungen moderner Java-Projekte effektiv erfüllen kann.

Jedes Projekt ist anders! Dennoch: es haben sich in der vergangen Zeit sowohl Prozesse als auch Werkzeuge etabliert und neue Werkzeuge werden zum De-Facto Standard. Diese Werkzeuge können auch in Ihrem Projekt helfen! Ich stelle die Werkzeuge vor, integriere sie und zeige, wie sie automatisiert genutzt werden können.

Die Werkzeug-Vorstellungen mache ich mit konkretem Code, möglichst einfachen, verständlichen Beispielen und verzichte bewusst auf künstliche, überkomplexe Code-Szenarien. Sie können sich also voll und ganz auf die Werkzeuge konzentrieren, die Ausführungen auf Ihre individuellen Gegebenheiten in Ihrem Projekt anwenden und situativ weiterführende Literatur zu einem Werkzeug konsultieren.

Obwohl das Buch insgesamt kohärent ist, sind die einzelnen Kapitel doch weitestgehend entkoppelt, so dass Sie einzelne Kapitel autonom betrachten können. Tipps und Tricks sowie eine Unzahl von Hinweisen auf Antipatterns runden das Buch ab. Sie erhalten eine Vielzahl von wertvollen Impulsen, umfassend aus einem Werk.




Inhaltsverzeichnis und Probekapitel "Kapitel 12: Komponententests mit TestNG"



Download


Beispiele



Nutzung und Integration von Fit, Jemmy und TestNG: Download
TestNG: Download
EasyMock: Download


Hinweise und Fehlerkorrektur



S. 361ff Maven JUnit 4.x Integration

Das surefire JUnit plugin unterstützt mittlerweile JUnit 4.x Tests. Das folgende Projektmodell verarbeitet exemplarisch JUnit 3.x und JUnit 4.x Tests. Daneben wird auch Checkstyle eingebunden und daraus, genauso wie aus den JUnit Tests und den JavaDocs, Reports erstellt. Diese sind in der angepassten Projektseite (ausgewählte Items, individualisiertes Layout und Zusatzinfos, Reports) aufgenommen. Download.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.huettermann.agile</groupId>
  <artifactId>agile</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>agile</name>
  <url>http://huettermann.net</url>
  <organization>
    <name>Michael Huettermann</name>
    <url>http://huettermann.net</url>
  </organization>
  <description>Agile Development with Java</description>
  <properties>
    <src>src</src>
    <target>target</target>
    <src.java>${src}/main/java</src.java>
    <src.junit>${src}/test/java</src.junit>
    <target.java>${target}/classes</target.java>
    <target.junit>${target}/test-classes</target.junit>
    <target.javadoc>${target}/javadoc</target.javadoc>
  </properties>
  <build>
    <sourceDirectory>${src.java}</sourceDirectory>
    <testSourceDirectory>${src.junit}</testSourceDirectory>
    <outputDirectory>${target.java}</outputDirectory>
    <testOutputDirectory>${target.junit}</testOutputDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <includes>
            <include>**/*.class</include>
          </includes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <configLocation>config/sun_checks.xml</configLocation>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>surefire-report-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>index</report>
              <report>summary</report>
              <report>dependencies</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
     </plugin>
    </plugins>
  </reporting>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <distributionManagement>
    <repository>
      <id>agile-repository</id>
      <name>My agile repository</name>
      <url>file://${basedir}/target/deploy</url>
    </repository>
  </distributionManagement>       
</project>





Kontakt
mail michael(at)huettermann(dot)net
Skype: michael.huettermann


zurück


© 2007 Michael Hüttermann
Design © 2006 Scott Allan Wallick