Auftragsentwicklung: Lösungen nach Maß – von consistec

 

von Tim Bautz

 

Komplexe Problemstellungen verlangen nach intelligenten und zuverlässigen Lösungen, die die Möglichkeiten standardisierter Out-of-the-Box-Software in der Regel deutlich übertreffen. In diesen Fällen verspricht individuelle Software nach Maß Abhilfe.

 

In  ISO 9126  werden sechs Qualitätsmerkmale für Software-Produkte festgelegt:

• Funktionalität• Zuverlässigkeit• Benutzbarkeit• Effizienz• Wartungsfreundlichkeit• Übertragbarkeit

Die Erfüllung dieser Qualitätsmerkmale setzt die Schaffung geeigneter Strukturen und Prozesse voraus.

 

 

Requirements Engineering

 

Für einige der angesprochenen Punkte (Funktionalität, Übertragbarkeit) werden bereits in der Definitions- und Planungsphase eines Projektes entscheidende Weichen gestellt. Die Funktionalität des zu erstellenden Software-Systems wird in enger Absprache und Kommunikation mit dem Kunden definiert. Anhand von Workshops, idealerweise unter Beteiligung je eines Mitglieds der verschiedenen Benutzergruppen beim Kunden, werden die vom Software-System zu erbringenden Funktionalitäten ermittelt. Die Ergebnisse dieser Projektphase, der Anforderungsanalyse (Requirements Engineering), werden in schriftlicher Form mittels eines Lastenheftes fixiert und dienen als Grundlage für alle weiteren Phasen des Projektes.

 

 

Qualitätssicherung

 

Einer der entscheidenden Punkte bei der Entwicklung von Software ist die Qualität. Da eine der Kernkompetenzen von consistec der Unternehmensbereich TEST & INTEGRATION ist, liegt der Fokus umso stärker auf der Qualität des Endproduktes.

Beim Testen von Software ist es von unschätzbarem Vorteil, eine strikte Trennung der Rollen Entwickler und Tester vornehmen zu können. Dies wird erst durch eine dedizierte Test- und Qualitätssicherungsabteilung möglich.

 

 

Divide and Conquer

 

Dieser organisatorische Ansatz der internen Qualitätssicherung für sich allein garantiert jedoch noch keinen Erfolg. Die Qualität eines Software-Systems wird bereits durch dessen Entwurf entscheidend vorbestimmt. Die derzeitigen Mode-trends, Schlagwörter und daraus abgeleiteten Strömungen und Technologien in der Entwicklungsszene, wie z. B. serviceorientierte Architekturen, Model Driven Architecture oder auch die Vorgehensmodelle, lassen sich in ihren Kernaspekten letztendlich auf ein fundamentales Paradigma zurückführen: Divide and Conquer (teile und herrsche). Immer dann, wenn ein Problem in seiner gesamten Komplexität unbeherrschbar erscheint, wird es in hinreichend kleine Teilprobleme zerlegt, die für sich genommen überschaubar und zu kontrollieren sind.

 

 

Test-first-Ansatz

 

Schon beim Entwurf eines Software-Systems wird bei consistec eine Aufteilung in sinnvolle, modulare Einheiten vorgenommen.

Nachdem ein Modul inklusive seiner internen Zustände sowie der Interaktion mit benachbarten Modulen spezifiziert ist, wird das Modul prototypisch kodiert. Vor Beginn der Ausprogrammierung der Funktionalitäten wird bei consistec in der Regel zunächst ein speziell auf das neue Modul zugeschnittenes Testmodul kodiert. Im Testmodul werden alle möglichen Zustände des neuen Moduls inklusive der Interaktivität mit Nachbarmodulen festgelegt. Erst nachdem das neue Modul alle Tests absolviert hat, wird es in das Gesamtsystem integriert. Dieser so genannte Test-first-Ansatz stammt aus der agilen Software-Entwicklung und garantiert ein kontrolliertes und dokumentierbares Wachsen des Gesamtsystems im Rahmen des Software-Entwicklungsprozesses. Mit Hilfe des Test-first-Ansatzes ist es leicht, voll automatisierte Tests der Funktion des Systemverbundes durchzuführen.

 

 

Vorgehensmodelle und Projektphasen

 

Die Erstellung eines Software-Systems ist ein komplexer Vorgang. Um diesen Vorgang zu strukturieren und beherrschbar zu machen, wird ein Plan zur Erstellung der Software benötigt. Anhand dieses Plans, des sogenannten Vorgehensmodells, wird der Entwicklungsprozess in zeitlich und inhaltlich begrenzte Phasen untergliedert. Die einzelnen Phasen des Vorgehensmodells werden entweder einmal oder mehrfach durchlaufen.

 

 

Das Wasserfallmodell

 

Beim klassischen Wasserfallmodell wird das Projekt streng in einzelne Phasen untergliedert. Entsprechend setzt der Beginn einer neuen Phase den vollständigen Abschluss der vorhergehenden Phase voraus.

 

 

Das Spiralmodell

 

Das Spiralmodell ist eine Erweiterung des Wasserfallmodells um Iterationen. Jeder Arbeitsschritt wird mehrfach durchlaufen, hierdurch wird das Ergebnis des Arbeitsschrittes kontinuierlich verfeinert.

Die agile Software-Entwicklung stellt einen Bruch mit diesen klassischen Modellen dar. Hier treten Verwaltungs-aspekte zugunsten der Kreativität der Entwickler in den Hintergrund.

Neben den vorgenannten Modellen exis-tieren weitere, schwergewichtige Modelle wie etwa der Rational Unified Process (RUP) oder das V-Modell, die hier nur der Vollständigkeit halber erwähnt werden sollen.

Strukturen und Prozesse sind in jedem Software-Entwicklungsprojekt sinnvoll und notwendig, geben jedoch auch Anlass zu Kritik:

Keiner der vorgestellten Prozesse hat sich bisher in der allgemeinen Praxis mit Breitenwirkung durchgesetzt – hier herrscht nach wie vor eine Vielzahl verschiedener Meinungen über das ideale Vorgehensmodell.

Vorgehensmodelle geben einen formalen Rahmen zur Erstellung von Software vor, die Qualität der Software hängt jedoch von den beteiligten Personen ab. Die Anwendung eines Vorgehensmodells allein besagt also noch nichts über die Güte des Endproduktes.

Die klassischen und schwergewichtigen Vorgehensmodelle führen zu einem erheblichen Verwaltungsaufwand und sind auf diese Weise ein Hemmnis für die Kreativität der Entwickler.

In der Praxis werden daher häufig geeignete Kombinationen aus bekannten Vorgehensmodellen erstellt. Dies ermöglicht es, den optimalen, auf die Bedürfnisse und Gegebenheiten der Organisation des Kunden zugeschnittenen Prozess zu definieren.

 

 

Fundamental: Plattformen für die Software-Entwicklung

 

Vier Technologie-Standards bilden derzeit die gängigen Plattformen für die Entwicklung individueller Software-Lösungen von consistec.

 

Java: Java SE, J2EE, J2ME

Auf Basis der Java-Plattform – insbesondere deren Enterprise Edition – wurde unter anderem die Serverkomponente der consistec-Eigenentwicklung c’man (consistec mobile access node) entwickelt. Im Auftragsbereich bildet Java die Basis anspruchsvoller Projekte; auch unter Einbeziehung neuester Technologien wie beispielsweise des Google-Web-Toolkits (GWT). Das GWT ist ein AJAX-Framework, mit dessen Hilfe sich Webanwendungen mit dem Look & Feel einer nativen Desktop-Anwendung erstellen lassen.

 

C

Reines C kommt überall dort zum Einsatz, wo maximale Geschwindigkeit und minimale Antwortzeiten die wichtigsten Kriterien sind – beispielsweise bei den consistec-Produkten PA2010e und caplon zur Netzwerk-Protokollanalyse.

 

C++

Die C++ Entwicklung ist insbesondere bei der Endgeräteprogrammierung auf den Plattformen Windows Mobile und Symbian weit verbreitet. Entsprechend werden auf dieser Plattform im Kundenauftrag Applikationen für mobile Endgeräte entwickelt.

Daneben gehört auch die Entwicklung nativer Applikationen für Windows (MFC) sowie Linux (GTK, QT) zum Standardrepertoire der consistec.

 

.NET

Neben diesen drei Plattformen spielen Entwicklungsprojekte auf Basis der .NET-Plattform eine zunehmend wichtigere Rolle in unserem Haus.

 

  

Fazit

Im Vordergrund jeder Software-Entwicklung stehen die Bedürfnisse und Wünsche der Kunden. Sie bestimmen die Koordinaten auf dem Weg zum Ziel: der Entwicklung zuverlässiger und leistungsfähiger Individualsoftware. Daneben garantieren bewährte Prozesse und Technologien im Zusammenspiel mit interdisziplinären Entwicklerteams Qualität auf höchstem Niveau. Insbesondere wenn die Erfahrungen aus der Entwicklung eigener Produkte – z. B. c‘man, caplon und colina – und topaktuelles Expertenwissen aus der engen Zusammenarbeit mit namhaften Forschungseinrichtungen (DFKI, MPI) und dem Fachbereich Informatik der Universität des Saarlandes ebenfalls in jedes Projekt einfließen.

 

 


zurück zur Artikel-Übersicht