Gipf-Oberfrick 29.12.03 (sf) - Nach dem bereits sehr erfreulichen 2002, blicken wir wiederum auf ein erfolgreiches Geschäftsjahr zurück: Anspruchsvolle Projekte, wertvolle Partnerschaften und eine erfreuliche Umsatzentwicklung.

Dieser Jahresrückblick soll Ihnen einen kleinen Einblick in unsere Arbeit ermöglichen. Begleiten Sie uns also auf einen Streifzug durch die spannenden und anspruchsvollen Projekte unserer Firma im Jahr 2003:

metagenic Version 2.0

Das neue Besucher-Reservationssystem für die Gläserne Manufaktur Dresden

Top-moderne Maschinensteuerung

Reviews, Coaching & Training

xUnit4Delphi...

... und viel Grundlagenarbeit im Bereich Objekt-Orientierung


metagenic 2.0

(Januar - Dezember)

Ein kurzer Blick zurück
1995 gründete Sascha Frick zusammen mit Beat Habegger die empros gmbh mit dem Ziel, ein meta-daten-gestütztes Informationsmanagement-System zu entwickeln.
Die einfache wie bestechende Idee dabei: Sämtliche relevanten Information für das Be- und Verarbeiten von Informationen werden strukturiert in einer Metadatenbank gespeichert und stehen so als Basis für ein generisches Datenmanagement zur Verfügung. Die Ursprungsidee entstand dabei bereits einige Jahre früher im Rahmen eines Projektes zur Erstellung eines konzernweiten Datenmodells für ein international tätiges Grossunternehmen. Bereits damals erkannte Sascha Frick die Wichtigkeit eines generischen Datenmanagament-Ansatzes auf der Basis strukturierter Metadaten. Und so begann - nach vielen Konzeptstudien und Prototypen - 1995 die Arbeit an der Version 1 von metagenic. Die anfänglich unter Smalltalk begonnene Entwicklung wurde im weiteren Verlauf mit Borland Delphi weitergeführt und mündete Ende 1996 in einer ersten einsatztauglichen Version.

Auf der Basis von metagenic 1.x wurden in der Folge eine Reihe von Projekten erfolgreich umgesetzt und das Kernsystem kontinuierlich verbessert und ausgebaut. Das entwickelte Kern-Repository, welches die benötigten Metadaten verwaltet, hat dabei den Test der Zeit mit Bravour bestanden, und der für metagenic architektur-entscheidende Grundsatz Abstraktion in den Code und Details in die Daten findet heute unter dem Stichwort Metaprogrammierung seine Entsprechung in der modernen Anwendungsentwicklung.

metagenic 2.0 - Bewährtes fortführen
Nachdem einige der für die Version 1.x von metagenic verwendeten Techniken etwas in die Jahre gekommen sind, fiel Ende 2002 der Startschuss zur Entwicklung der Version 2 von metagenic. Im März 2003 erfolgte dann die erste offizielle Ankündigung der neuen Version 2 als komponenten-orientierte Infrastruktur für datenbankbasierte Informationssysteme. Noch stärker als in der Version 1 wurde dabei auf die einfache Programmierung von Erweiterungen geachtet, um die Stärken von generischen Metaprozessen für die Datenverarbeitung in Verbindung mit anwendungsspezifischer Geschäftslogik wirksam zu nutzen.

Teste, wer kann...
Bei der Umsetzung der neuen Version zeigte sich bald, dass ein konsequentes Unit-Testing mit den meisten der heute verfügbaren Komponenten-Bibliotheken zu erheblichen Problemen führt. Insbesondere wenn es darum geht Benutzerschnittstellen mit Hilfe von sogenannten visuellen Komponenten umzusetzen, wird die Frustrationstoleranz eines qualitätsbewussten Entwicklers auf eine harte Probe gestellt. Auch im Jahr 2003 scheint sich der Grossteil der Komponenten-Entwickler keinen Deut um saubere Konzepte und geeignete Abstraktionen zu scheren, die auf Austauschbarkeit ausgelegte und testbare Entwürfe mit vertretbarem Aufwand erlauben würden; so wird der Komponententraum nicht selten zum Trauma. Durch ein konsequentes mock-basiertes Testen konnten wir das Problem zumindest ansatzweise lösen. Dennoch sehen wir grossen Handlungsbedarf bezüglich der Art und Weise wie heute Komponenten entwickelt werden: Noch immer liegt der Fokus auf möglichst vielen Features anstelle von Einfachheit und korrekter Funktionsweise. Noch immer werden - wie es scheint - komplexe Softwarebausteine ohne systematische Tests entwickelt und als Bananen-Komponenten verkauft, die beim Kunden reifen sollen. Wir freuen uns auf den Tag, an dem ein Komponenten-Hersteller wie selbstverständlich eine Test-Suite mit Unit-Tests zu seinen Komponenten mitliefert, die nicht nur die korrekte Funktion belegen sondern auch die korrekte Verwendung zeigen. Das wäre dann wirklich einmal ein Fortschritt jenseits der gängigen Schlagworte und Heilsverkündungen.

nach oben


Das neue Resi - Gläserene Manufaktur Dresden

(Juli-Dezember)

Zusammen mit unserer Partnerin remsas GmbH haben wir im Auftrag der Siemens Bulding Technologies Deutschland eine vollständig neue Version des RESI Reservations- und Besucher-Management-Systems geplant und umgesetzt. Auf der Basis des neuen metagenic-Kernels ist eine zeitgemässe verteilte Datenbankanwendung entstanden, welche die effiziente prozess-gestützte Verarbeitung von Einzel- und Gruppenanfragen für Besuche in der gläsernen Manufaktur der Volkswagen AG in Dresden erlaubt.

Da das System ein workflow-orientiertes Arbeiten ermöglichen muss, haben wir eine kompakte und hoch-effiziente Prozess-Engine entwickelt, die das Modellieren und Ausführen praktisch beliebiger Prozesse auf der Basis von Zustandsmaschinen erlaubt . Die dazu nötigen Prozessbeschreibungen werden mit Hilfe von XML verwaltet. Die Prozess-Engine ist dabei so konzipiert, dass sie ohne nenneswerten Ressourcenverbrauch eine sehr grosse Zahl von Prozess-Instanzen parallel verarbeiten kann. Sie kann gleichermassen einfach sowohl in komplexen hoch-parallelen Umgebungen in einem Client-Server Umfeld als auch in lokalen Anwendungen eingesetzt werden. Aufgrund ihres vielfältigen Einsatzspektrums werden wir die Prozess-Engine mittelfristig als eigene Komponente vermarkten.

Mit diesem Projekt hat der neue Kernel von metagenic 2.0 seine Feuertaufe bestanden. Wiederum hat sich aber gezeigt, dass viele der am Markt erhältlichen Software-Bibliotheken das konsequente Unit-Testing unnötig behindern und zu beträchtlichem und unnötigem Mehrfaufwand führen, der die Entwicklungskosten ungewollt in die Höhe treibt.

nach oben


Top-moderne Maschinensteuerung

(Januar - Dezember)

Auch in diesem Jahr konnten wir die erfolgreiche Zusammenarbeit mit unserer Partnerin carrara engineering gmbh fortsetzen: Für einen der führenden Hersteller von Spritzgiessmaschinen sind wir betraut mit dem Entwurf und der Umsetzung einer vollständig objekt-orientierten Basissoftware für die Maschinensteuerung.

Die besondere Herausforderung in diesem Projekt bestand und besteht darin, eine Architektur zu entwerfen und umzusetzen, die einen Migrationspfad von der bisherigen C-basierten Steuerung hin zur künftigen mit C++ - und damit objekt-orientierten - Steurerungsoftware beinhaltet, ohne die Effizienz und Änderungsfreundlichkeit der neuen Lösung ungebührlich einzuschränken.

Neben dem Entwurf und der Umsetzung eines ersten Basisteils haben wir die Mitarbeiter des Kunden in so wichtigen Belangen wie Vorgehenssystematik, konsequentes Testen und Objektorientierung tatkräftig unterstützt. Einmal mehr zahlen sich die komplementären Fähigkeiten der carrara engineering gmbh und der empros gmbh für den Kunden aus!

Die Ziele dieses Projektes sind sehr ambizioniert. Umso erfreulicher ist es daher, dass der vom Kunden gestellte Projektleiter sein Handwerk wirklich versteht: Mit Fingerspitzengefühl, Sachverstand und einem Blick für das Wesentliche führt er sein Team gekonnt durch den mitunter rauhen Projektalltag. Er setzt einen wohltuenden Kontrapunkt zu den unzähligen rein planungsorientiert geführten Projekten und trägt dadurch wesentlich zum Erfolg in diesem Projekt bei. Denn nach wie vor gilt:

Das Beherrschen der Software Development Fundamentals ist für den bleibenden Erfolg zentral. Nur wenn Management- und technische Praktiken sich zielgerichtet ergänzen, kann ein Team erfolgreich sein.

Das vorliegende Projekt ist der lebende positive Beweis dafür!

nach oben


Reviews, Coaching & Training

Auch in diesem Jahr haben wir verschiedene Design- und Code-Reviews, Coachings und Trainings durchgeführt. Nach wie vor sind die Umsetzung von robusten, änderungsfreundlichen Entwürfen, konsequentes Testen, Codequalität und Arbeitshaltung die Dauerbrenner.

Nachfolgend eine Zusammenstellung von Punkten, die uns in diesem Zusammenhang wichtig scheinen:


Jedes Softwaresystem verfügt über eine Architektur. Bedeutend ist die Frage, ob diese Architektur ein Zufallsprodukt ist oder das Ergebnis gezielter intellektueller Bemühungen.

Eine gute Architektur ist explizit, wohlstrukturiert und zielgerichtet.

Es ist nicht schwierig, ein kompliziertes System zu entwerfen. Das Finden von einfachen Lösungen für komplexe Probleme ist dagegen eine enorme intellektuelle Herausforderung.

Einfachheit erhöht die intellektuelle Beherrschabrkeit.

Gute objekt-orientierte Entwürfe sind so einfach wie möglich, aber nicht einacher.

Gute objekt-orientierte Entwürfe weisen eine ausgezeichnete Testbarkeit aus.

Test-getriebene Entwicklung führt zu einfachen und durchgängig objekt-orientierten Entwürfen auf der Basis lose gekoppelter Objekte mit klaren Schnittstellen.

Der Grad der Testbarkeit eines Entwurfs kann als Mass für die Güte dieses Entwurfes gesehen werden.

Gute objekt-orientierte Entwürfe sind ausreichend und korrekt dokumentiert. Dabei steht Korrektheit vor Vollständigkeit.

Je schlanker die Dokumentation ausfällt, desto grösser ist die Chance, dass sie aktuell gehalten wird.

Zu wissen, welche Aspekte zu dokumentieren sind, ist genau so wichtig wie zu wissen, was nicht zu dokumentieren ist.

Die UML schlägt die Brücke zwischen der sehr informellen und meist zu unpräzisen natürlichen Sprache und den in der Regel zu detaillierten Anweisungen einer Programmiersprache. Der Einsatz der UML ist dann am wirksamsten, wenn sie in dieser Brückenfunktion verwendet wird. Der Versuch, zu viele Details mit Hilfe der UML einzufangen, führt zu ungewollter Komplexität. Der Begriff "Round Trip Engineering" ist ein gefährlicher Euphemismus für ein Problem, das wertvolle Ressourcen bei geringem Gegenwert verschlingt.

Das Erstellen von Programmcode ist Entwerfen im Detail. Hierbei handelt es sich um eine intellektuel anspruchsvolle Arbeit, die das Umsetzen eines detaillierten und ausführbaren Modells betrifft - Code als Design.

Guter Programmcode erklärt, was gemacht wird und verbirgt das Wie solange wie möglich. Guter Programmcode ist damit weitgehend selbsterklärend.

Guter Programmcode ist die Prosa der Software-Entwickler: schwierig zu schreiben und hoffentlich ein Genuss zu lesen.


nach oben


xUnit4Delphi

(Januar - März)

Ursprünglich als Lernprojekt gedacht, um einem Entwickler die Ideen und Konzepte der test-getriebenen Entwicklung (engl. Test-Driven Development, kurz TDD) zu vermitteln, ist mit xUnit4Delphi eine elegante, klar strukturierte und mächtige Umsetzung von xUnit für Delphi entstanden. Das Testframework ist Schritt um Schritt erstellt worden und vollständig mit sich selbst getestet. Leider ist die Weiterentwicklung in den letzten Monaten dieses Jahres etwas ins Stocken geraten, zuviele andere Dinge standen auf dem Programm. Doch ist die jetzige Version bereits ausgereift genug, um im harten Praxiseinsatz zu bestehen. Daher setzen wir xUnit4Delphi in allen unseren Delphi-basierten Projekten ein.

Die von Kent Becks Buch Test-Driven Development inspirierte Idee, TDD und Entwurfsmuster am Beispiel von xUnit zu vermitteln, ist übrigens auch eine sehr brauchbare Methode, um sich mit einer neuen Programmiersprache auseinander zu setzen.


nach oben


... und viel Grundlagenarbeit

(Januar - Dezember)

Die systematische Auseinandersetzung mit theoretischen Grundlagen ist ein fester Bestandteil unserers Arbeitsalltags. Das bewusste Reflektieren über unsere Arbeit trägt wesentlich zu unserem Erfolg bei. Auch in diesem Jahr sind wir wieder auf viele spannende Themen und Fragestellungen gestossen, die wir in diversen Fachbeiträgen auf unserer Website und in Zeitschriften veröffentlicht haben:

Im April 2003 haben wir unsere Webpage um die Rubrik vielfach! ergänzt, in der wir regelmässig Faustregeln und Artikel zu den unterschiedlichsten Themen rund um Software-Entwicklung publizieren.

Daneben hat Sascha Frick diverse Artikel in der Zeitschrift The Delphi Magazine veröffentlicht:

Ausgabe 96: An Introduction To Endo-Testing Using Mock Objects.

Ausgabe 97: Endo-Testing Using Mock Objects: The Story Continues.

Ausgabe 99: Lessons Learned in Using The VCL.

Ausgabe 100: Object Lifetime - A Prominent but Hardly Recognized Problem.


Danke!

Wir danken an dieser Stelle allen unseren Lesern für die vielen positiven Reaktionen und wertvollen Anregungen; sie sind uns Ansporn, unsere Arbeit auch im nächsten Jahr mit Freude und Elan anzugehen. Ein Dank auch an alle, die sich mit uns die Mühe nehmen, das manchmal offensichtlich Scheinende genauer zu betrachten und den Mut haben, ausgetretene Pfade zu verlassen, um zu neuen Einsichten zu gelangen.

Schliesslich danken wir auch allen unseren Kunden und Partnern für das uns entgegengebrachte Vertrauen und die spannenden und lehrreichen Erfahrungen, die wir gemeinsam mit Ihnen machen durften. Wir freuen uns auf die weitere Reise mit Ihnen und wünschen allen für das kommende Jahr Glück, Gesundheit und den Mut, auch weiterhin Ideen zu träumen und umzusetzen, die etwas bewirken!

nach oben




Neuer Artikel in TDM Neu in Denkmal

Druckbare Version