Made in Germany: Komponentenentwicklung mit NetCCM

Werkzeuge  –  Kommentare

Die NetCCM GmbH ist ein Spin-off des Instituts für Informatik der Humboldt-Universität zu Berlin. Sie entwickelt Lösungen, die bei der Entwicklung flexibel anpassbarer Software helfen sollen – und möchte etablierten Branchengrößen Konkurrenz machen. Mit der aktuellen Ausgabe der Entwicklungsumgebung NetCCM Studio stehen die Chancen nicht schlecht.

Made in Germany – innovative Softwareentwicklung aus Deutschland

Dieser Artikel ist Auftakt der "Made in Germany"-Artikelserie. heise Developer stellt Unternehmen aus dem deutschsprachigen Raum vor, die mit innovativen Produkten im Bereich Softwareentwicklung oder angrenzenden Gebieten aufwarten. Diese Hidden Champions der IT-Branche brauchen sich international nicht zu verstecken.

Seit 2006 führen Alexander und Peter Auerbach mit NetCCM ein technikorientiertes Spin-off des Instituts für Informatik der Humboldt-Universität zu Berlin, das seinen Sitz im Wissenschafts- und Technologiepark Adlershof hat. Sie erhalten Unterstützung durch die Hightech Gründerfonds sowie die Humboldt-Innovation GmbH.

Ausgangspunkt für die Geschäftsidee der Firma ist, dass seit Jahren ausgereifte IDEs für die objektorientierte Softwareentwicklung (oder andere Paradigmen) zur Verfügung stehen, aber die effiziente Kapselung beliebiger Software in Komponenten nur schwer möglich ist. Jede Plattform und Programmiersprache kocht ein eigenes Süppchen und definiert neue Standards. NetCCM hat deswegen das sogenannte Unified Component Model (UCM) entwickelt: Über System- und Sprachgrenzen hinweg ist Software in eine Komponente "einzutüten", sodass sich die Bestandteile einer Applikation weiterverwenden lassen. Als Produkte für das UCM hat die Firma die Entwicklungsumgebung NetCCM Studio sowie die NetCCM IRE (Infrastructure Runtime Environment) entwickelt. Letztere vereinfacht das Deployment gekapselter Anwendungen in verteilten Umgebungen.

Das UCM-Konzept setzt sich über Sprachgrenzen hinweg: NetCCM Studio arbeitet mit C, C++, C#, Java und PHP zusammen. Damit erstellte Komponenten sind in sich abgeschlossen. Erzeugt man mit NetCCM eine Assembly, lassen sich sowohl C# als auch Java-Komponenten mischen und ohne spezielle Anforderungen an die Zielplattform einsetzen. Ein UCM-Funktionsblock kapselt wiederum mehrere Komponenten.

Entwicklung von Komponenten mit NetCCM Studio

Modellierung einer einfachen PIM-Anwendung mit Caller und Callee in NetCCM Studio (Abb. 1).

Die IDE gibt es in Editionen für die jeweiligen Programmiersprachen. Sie ist in Java geschrieben und benötigt mindestens eine Java 5 Runtime. Zu den unterstützen Plattformen gehören Windows (alle Ausgaben seit Windows 2000) sowie diverse Linux-Distributionen. Unnötig kompliziert wird es, wenn man die Anforderungen für die gewählte Programmiersprache erfüllen möchte:

Für Java-Assemblies muss ein Java Development Kit (JDK) installiert sein, um damit zu programmieren. Den PHP-Interpreter benötigt man im Gegensatz dazu nur für die Ausführung von PHP-Assemblies – nicht aber für die eigentliche Entwicklung in PHP, die mit NetCCM Studio ohne Plug-in möglich ist. Im Einzelfall muss man im Handbuch genau nachlesen, um die Systemanforderungen zu erfüllen.

NetCCM Studio besteht aus der IDE selbst und einigen Tools, die mitzuinstallieren sind. Dazu gehört der NetCCM Generator, der Assemblies aus dem jeweiligen Quellcode erzeugt und so das UCM in lauffähige Anwendungen übersetzt. Wer sich an die erste einfache Hello-World-Applikation wagt, der macht sogleich mit einem neuen Konzept Bekanntschaft: die Kombination aus Caller und Callee, die sich durch alle Anwendungen und Komponenten der IDE wie ein roter Faden zieht. Die Caller-Instanz ist immer der Teil, der eine Instanz des Callee aufruft und Daten anfordert. Mit diesem einfachen Konzept lassen sich Caller und Callee in unterschiedlichen Programmiersprachen realisieren und komplexe Prozesse kapseln und wiederverwenden.

Nachverfolgbarkeit von Anforderungen

Das Verhältnis zwischen Auftraggebern und -nehmern bei der Entwicklung von Software ist davon geprägt, dass Erstere ihre Anforderungen an das von Letzteren zu entwickelnde Softwaresystem zunächst unspezifisch formulieren. Durch die hohe Komplexität heutiger Softwaresysteme – mehrere 10.000 Anforderungen sind typisch – sind beide daran interessiert, im Nachhinein die Realisierung der einzelnen Anforderungen nachvollziehen zu können und bei Bedarf weitere Features schnell zu implementieren. Das ist bisher nur eingeschränkt möglich. Selbst die Prüfung, ob wichtige Anforderungen vergessen wurden, lässt sich oft nicht unsetzen. Insbesondere Projektmanager und Qualitätsverantwortliche sind sich des Problems bewusst und suchen aktiv nach effektiveren Lösungen.

Modellierte Anforderungen und automatisierte Testcases ergeben am Ende eine fertige Applikation (Abb. 2).

An dieser Stelle kommt die NetCCM-Entwicklungsumgebung ins Spiel, indem man die Fähigkeiten der IDE und des UCM nutzt, um ein vollständiges, verlässliches Modell des Softwaresystems bereitzuhalten. Den einzelnen Modellelementen lassen sich Anforderungen zuordnen, wodurch Entwicklern, die nur für die Realisierung eines kleinen Modellteils zuständig sind, die für sie relevanten Requirements zur Verfügung stehen. Sie müssen nicht mehr alle Anforderungen komplett überblicken. Über Auswertungen ist außerdem erkennbar, welche Requirements noch nicht zugeordnet wurden.

Automatisierte Generierung von Testcases

Besonders im industriellen Umfeld ist es unerlässlich, Komponenten einer Software gezielt auf die korrekte Funktionsfähigkeit zu testen. Frühzeitig Fehler zu beseitigen ist eine allgemein anerkannte Anforderung für das Testen. Die realen Möglichkeiten werden jedoch stark durch den dafür im Projekt entstehenden Aufwand beschränkt. Alles, was die mit dem Testen verbundene Arbeitsmenge senkt, erfährt deshalb eine hohe Nachfrage. Mit NetCCM Studio lässt sich integratives Testen praktizieren.

Anforderungsmanagement und Test von Anwendungen sind einheitlich über mehrere Sprachen hinweg umsetzbar (Abb. 3).

Der mit dem Testen verbundene Aufwand ist deutlich zu senken, weil Testanwendungen automatisch generiert werden – hier verhält sich die IDE intelligent. Die IDE generiert automatische Testfälle aus der Caller/Callee-Beziehung. Über Konnektoren bindet die IDE die jeweiligen Tests an die automatisierten Testsysteme der jeweiligen Programmiersprache (zum Beispiel JUnit) an. Tests auf Fachseite können zu jedem Entwicklungszeitpunkt und von beliebigen Software- und Systemartefakten aus durchgeführt werden.