C4J

imageC4J Version 6.0 – mehr als assert statements

Verein Karlsruher Software Ingenieure stellt neues Framework vor
Neues Release des Framework zur Definition von Verträgen in Java +++ Vollständig unterstützt durch Eclipse +++ Erweiterung des Java Assert Konzepts +++ Auch für Legacy Systeme geeignet +++ Sneak Preview am 11. Oktober in Karlsruhe

Agil zu Programmieren und trotzdem formale Verträge beispielsweise mit Schnittstellen zu verknüpfen – das ermöglicht das neue Release von C4J, Contracts for Java. Damit werden die Möglichkeiten des assert Konzepts in Java entscheidend erweitert. Vorgestellt wird das neue Release des Frameworks vom Verein Karlsruher Software Ingenieure (VKSI). Wie der VKSI hervorhebt, wird C4J 6.0 durch Eclipse vollständig unterstützt und schützt die definierten Vertragsbeziehungen auch bei intensivem Refactoring. Damit erfüllt das neue Release eine äußerst wichtige Anforderung der agilen Entwicklergemeinde an das Contracts for Java-Konzept. Am 11. Oktober wurde das Framework erstmalig bei einem Sneak Preview präsentiert.

imageVerträge, also das systematische Definieren von Vor- und Nachbedingungen und Klassen-Invarianten, die zur Laufzeit überprüft werden können, steigern nachhaltig die Effektivität und Effizienz in der Software-Entwicklung. Mit dem neuen Release des Frameworks C4J legt der VKSI nun eine Entwicklung vor, die das assert-Konzept von Java entscheidend erweitert. C4J ermöglicht das Formulieren und Vererben von machtvollen Verträgen mit den vollständigen sprachlichen Mitteln von Java. Dazu trennt C4J die Vertragsklauseln konsequent vom Quellcode durch das Einführen von Vertragsklassen. Beim Laden der Klasse fügt C4J per Bytecode-Instrumentation die Vorbedingungen direkt zu Beginn der zu schützenden Methoden ein und die Nachbedingungen und Klassen-Invariante an deren Ende. Weil die Bedingungen damit auf Bytecode-Ebene Bestandteil der Methoden geworden sind, können sie zur Laufzeit überprüft werden.Die Vertragsklassen stehen in einer direkten Vererbungsbeziehung zu den sie schützenden Klassen. Das ist speziell für das Refactoring wichtig, da durch die Vererbungsbeziehung Eclipse alle Refactoring-Mechanismen automatisch auch auf die zugehörige Vertragsklasse anwendet. Folglich entstehen auch bei intensivem Refactoring keine Inkonsistenzen und damit auch keine aufwändigen Nacharbeiten für die Programmierer.
Diese – jetzt überflüssig gewordenen – Zusatzarbeiten waren einer der Hauptkritikpunkte an den ersten Generationen von C4J, wie sie Jonas Bergström aus Stockholm und Hagen Buchwald aus Karlsruhe beim Karlsruher Entwicklertag 2011 vorgestellt hatten. Die von Jonas Bergström in Stockholm entwickelte erste Generationen des Frameworks basierte auf Namenskonventionen, so dass beim Refactoring der zu schützenden Klasse Inkonsistenzen zur zugehörigen Vertragsklasse auftreten konnten.C4J 6.0, die zweite Generation von C4J, setzt auf den Stärken der ersten Generation von Jonas Bergström auf und vermeidet gleichzeitig deren Schwächen. Zudem können nun auch Verträge für Legacy Code erstellt werden, da das neue C4J keinerlei Anpassungen im Quellcode der zu schützenden Klasse erfordert, sondern vollständig von außen an die bestehenden Klassen per Vererbungsbeziehung angehängt werden können. Diese Fähigkeit öffnet C4J den immer wichtiger werdenden Anwendungsbereich der Sanierung von Alt-Systemen (Legacy Code).
C4J garantiert sowohl für Legacy Code als auch neue Software-Projekte, dass ein Software-System am Ende auch wirklich stets genau das tut, was es tun soll.Vorgestellt wird das Framework, das aus der Kooperation von C4J-Vater Jonas Bergström in Stockholm und den VKSI-Mitgliedern Ben Romberg und Hagen Buchwald in Karlsruhe entstand, am 11. Oktober beim Sneak Preview „QS Best Practices in Karlsruhe“ im Technologiepark Karlsruhe. Ben Romberg, der Autor von C4J 6.0 und Agiler Software Engineer der andrena objects ag, referiert dort über „Contracts im Software Engineering.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte vervollständigen Sie die Aufgabe * Time limit is exhausted. Please reload the CAPTCHA.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.