ArgoUML und Poseidon for UML

Für den Entwurf der Architektur eines Projektes bietet sich die Verwendung eines so genannten CASE-Werkzeugs (Computer Aided Software Engineering) an. Mit diesem erstellt man die entsprechenden UML-Diagramme und kann Code-Gerüste für die spätere Ausprogrammierung aus dem Modell generieren.

ArgoUML ist ein populäres, in Java geschriebenes Open-Source-CASE-Werkzeug. Für uns ist ArgoUML interessant, da es die Generierung von PHP-4- und PHP-5-Code unterstützt.

In Abbildung 14.1 sehen wir ein UML-Klassendiagramm für die Klasse BankAccount (siehe Kapitel 4).

Abbildung 14.1. ArgoUML

ArgoUML


Beispiel 14.1 zeigt ein aus dem UML-Modell generiertes Code-Gerüst. ArgoUML hat hierbei eine PHP-Klasse mit entsprechenden Methoden und Code-Kommentaren erzeugt. Für das Gerüst der Methode getBalance() wurde beispielsweise die Typinformation für den Rückgabewert (float) genutzt und in den Code überführt.

Beispiel 14.1: Von ArgoUML generierter PHP-5-Code

<?php
error_reporting(E_ALL);
 
/**
 * untitledModel - class.BankAccount.php
 *
 * $Id: BankAccount.php 274 2004-12-19 09:58:15Z sb $
 *
 * This file is part of untitledModel.
 *
 * Automatic generated with ArgoUML 0.16
 * on 29.08.2004, 12:04:23
 *
 * @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
 */
if (0 > version_compare(PHP_VERSION, '5')) {
    die('This file was generated for PHP 5');
}
 
/**
 * Short description of class BankAccount
 *
 * @access public
 * @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
 */
class BankAccount
{
  // --- ATTRIBUTES ---
 
  /**
   * Short description of attribute balance
   *
   * @access private
   * @var float
   */
  private $balance = 0.0;
 
  // --- OPERATIONS ---
 
  /**
   * Short description of method getBalance
   *
   * @access public
   * @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
   * @return float
   */
  public function getBalance()
  {
      $returnValue = (float) 0.0;
 
      // section -64--88-0-2-9a8a68:fea9f69d65:-7ffa begin
      // section -64--88-0-2-9a8a68:fea9f69d65:-7ffa end
 
      return (float) $returnValue;
  }
 
  /**
   * Short description of method setBalance
   *
   * @access public
   * @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
   * @param float
   */
  public function setBalance($balance)
  {
  }
 
  /**
   * Short description of method depositMoney
   *
   * @access public
   * @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
   * @param float
   */
  public function depositMoney($amount)
  {
  }
 
  /**
   * Short description of method withdrawMoney
   *
   * @access public
   * @author Sebastian Bergmann, <sb@sebastian-bergmann.de>
   * @param float
   */
  public function withdrawMoney($amount)
  {
  }
} /* end of class BankAccount */
?>


Die kommerzielle Variante von ArgoUML, Poseidon for UML, sieht schöner aus und bietet etliche Leistungsmerkmale, die die Open-Source-Fassung nicht bietet. Sie ist jedoch für die PHP-5-Programmierung derzeit noch nicht interessant, da sie nur PHP-4-Code generieren kann.

Abbildung 14.2. Poseidon for UML

Poseidon for UML