
Eine klare und konsistente Vorgehensweise erleichtert
die Kommunikation.
Agile Softwareentwicklung
Anwendungssoftware und die Prozesse zu
ihrer Erstellung müssen sich genauso flexibel
verhalten wie Ihre Geschäftsprozesse. Die schnelle
und optimale Unterstützung Ihrer Prozesse durch
Software ist in Zeiten von Globalisierung und stetig
steigendem Wettbewerbsdruck ein erheblicher Wettbewerbsvorteil
und erlaubt es Ihnen, Ihr Geschäft nach Ihren
Vorstellungen zu entwickeln.
Wir verstehen uns als Enabler und
Umsetzer Ihrer Ideen. Dabei steht für uns nicht
die Technik, sondern das schnelle Entwerfen und
Umsetzen pragmatischer Lösungen im Vordergrund.
Wir verwenden dazu moderne, anwendungsorientierte
Entwicklungsmethoden und begreifen unsere Arbeit
als Gestaltungs- und Lernprozesse, der sich Ihren
Bedürfnissen anpasst. Wir berücksichtigen
dabei, dass Ihr Geschäft und die technologischen
Möglichkeiten zur Umsetzung einem ständigen
Wandel unterworfen sind. Wir sehen diesen Wandel
als Chance und nicht als Risiko und bedienen uns
der zeitgemäßen Techniken unterschiedlicher
agiler Entwicklungsmethoden, wie sie zum Beispiel
der Unified Process, Feature-Driven-Development
oder Extreme Programming bieten.

Interative Vorgehensweise
Aus der Praxis wissen wir, dass sich schon
innerhalb eines Projektes die Ziele und Anforderungen
ändern können. Um die damit verbundenen
Risiken zu minimieren, setzen wir auf kurze Entwicklungszyklen
und frühzeitiges Feedback. Eine kontinuierliche
enge Kommunikation mit dem Kunden und frühe
Verfügbarkeit eines lauffähigen Systems
stellt sicher, dass das Ergebnis auch den Vorstellungen
des Kunden entspricht. Die Weiterentwicklung eines
solchen Kernsystems wird getrieben und gesteuert
durch die fachlichen Anforderungen des Kunden.
Iterative Entwicklung bedeutet für
uns, dass das Projekt in mehreren zyklischen Etappen
durchgeführt wird, wobei Analyse, Design,
Entwicklung und Test schnell aufeinander folgen.
Im Folgezyklus werden die neuen Erkenntnisse,
geänderte Anforderungen und Feedback des
Kunden genutzt, um den Entwicklungsprozess und
das Produkt zu optimieren. Die Software entsteht
dabei inkrementell (sie wird
um neue Funktionen erweitert) und evolutionär
(bestehende Systemteile werden angepasst und verbessert).

Analyse und Design Patterns
Bei der Konstruktion von Software überlassen
wir nichts dem Zufall. Wir arbeiten nach Best
Practices und verwenden bewährte Analyse
und Design-Muster. Dadurch erhalten wir zum einen
wieder verwendbare, verständliche und gut
wartbare Modelle und Systeme, zum anderen haben
sie die notwendige Qualität und Flexibilität,
um mit den Anforderungen der Zukunft zu wachsen.

Refactoring
Aus der Erfahrung von vielen Projekten wissen
wir, dass Design "auf der grünen Wiese"
zu teuer ist und in der Regel doch nicht den späteren
Anforderungen gerecht wird. Und warum sollte man
etwas bezahlen, was man noch nicht braucht und
hinterher doch nicht nutzt?
Deshalb orientieren wir uns an den konkreten
Bedürfnissen der Anwendungen und Architektur
des Kunden und bemühen uns um einen angemessenen
und kostengünstigen Entwurf der Software.
Sollten die Anforderungen steigen und der Entwurf
sich als zu einfach herausstellen, bedienen wir
uns der Refactoring-Techniken und führen
erst bei Bedarf eine Konsoliderung der Software
durch.
Refactoring ist eine funktionserhaltende Restrukturierung
von Software mit dem Ziel, die Lesbarkeit und
Erweiterbarkeit des Systems zu erhöhen und
die Fehleranfälligkeit zu verringern. Durch
Refactoring halten wir Software flexibel erweiterbar,
wartbar und schützen die Investitionen unserer
Kunden.

Konstruktive Qualitätssicherung
Ein wesentlicher Schlüssel zum Erfolg
einer agilen Softwareentwicklung ist die konstruktive
Qualitätssicherung. Das bedeutet für
uns, die Qualität der Software schon bei
der Konstruktion durch methodische und technische
Maßnahmen zu erhöhen und Fehler so
früh wie möglich - und nicht erst im
Produktionsbetrieb - zu finden. Beispielsweise
verwenden wir die Methoden des "Programming
by Contract" und der testgetriebenen Entwicklung.
Die Funktionen unserer Software sichern wir durch
regressionsfähige Unit-Tests ab. Dabei verwenden
wird Werkzeuge wie JUnit, Cactus
oder DB-Unit.
Um schon bei der Entwicklung mögliche Schwächen
in Entwurf und Programmierung zu finden und zu
vermeiden, kommen Programmierstandards und Metriken
zum Einsatz.
|