Softwareentwicklung
Unsere Kernkompetenz ist die Softwareentwicklung, an die wir – getreu unserer Unternehmensphilosophie – höchste Qualitätsanforderungen stellen.
Als Kunde profitieren Sie davon durch langfristig niedrigere Entwicklungs- und Betriebskosten.
Es ist unsere Bestrebung, Sie über die technischen Konsequenzen der in jedem Projekt zu treffenden Entscheidungen zu beraten und mögliche Alternativen aufzuzeigen.
Dadurch erreichen Sie mit uns ein besseres Kosten-Nutzen-Verhältnis.
Wir durchlaufen in der Regel die folgenden Phasen der Softwareentwicklung, deren Detailgrad jedoch je nach Projektanforderungen gekürzt oder ausgeweitet werden können. Wir bieten Ihnen auch an,
lediglich Projektteile zu übernehmen, zum Beispiel die Konzeption einer Software, die Implementierung kritischer Programmteile oder die Prüfung und Abnahme einer Fremdsoftware.
Konzeption
In der Konzeptionsphase nehmen wir mit Ihnen zusammen die funktionalen Anforderungen an die zu erstellende Software auf, soweit diese noch nicht niedergelegt sind;
das Ergebnis dieser Phase ist in der Regel ein Anforderungsdokument: das Lastenheft.
Dieser Prozess kann für große Projekte formal durchgeführt werden (Anforderungsaufnahme, -analyse und -bewertung) oder in gekürzter Form, sofern die Projektbedingungen dies zulassen.
Wichtig ist, dass Sie als Kunde nach Abschluss dieser Phase eine Übersicht der erwarteten Funktionalität der geplanten Software erhalten und offensichtliche, technische Risiken vorab erkannt werden können.
Prototyp
Wurden in der Konzeptionsphase potenzielle, technische Risiken erkannt, sollten diese in der optionalen Prototyp-Phase auf ihre Machbarkeit hin untersucht werden.
Ebenfalls werden in dieser Phase Annahmen geprüft, die über bereits bestehende Systeme, Alt-Code oder Fremdcode gemacht wurden.
Die Ergebnisse und gewonnenen Erkenntnisse führen zu einer Abschlussbewertung der technischen Projektrisiken. Diese ist Entscheidungsgrundlage für die Fortführung des Projektes,
falls keine begründeten Zweifel am erwarteten Nutzen bestehen. Wir minimieren dadurch Ihr Investitionsrisiko – die "Reißleine" kann gezogen werden, bevor
unnötige Kosten entstehen.
Spezifikation
Ziel der Spezifikation ist es, die abstrakten funktionalen Anforderungen in konkrete technische Umsetzungsanforderungen umzuwandeln. Hierbei ist es in der Regel nicht notwendig,
alle technischen Details zu spezifizieren – in vielen Fällen ist dies unnötig, wenn nicht gar hinderlich. Diese Erkenntnis vieler Softwareentwickler führte letztendlich
zur Verbreitung agiler Entwicklungsprozesse.
Wir raten jedoch davon ab, gänzlich auf eine Spezifikation zu verzichten ("Wir entwickeln agil!"), weil Kosten eingespart werden sollen.
Stattdessen empfehlen wir, neben der technischen Ausformulierung der Anforderungen, die Spezifikation auf die Architektur des zu erstellenden Softwaresystems zu beschränken;
frühe Fehlentscheidungen in der Architektur der Software, können in späteren Projektphasen nur mit hohem Aufwand rückgängig gemacht werden.
Auf Basis von Konzeption und Spezifikation ist es nun möglich, den Umfang der Software in Funktionalität und Kosten abzuschätzen.
Implementierung
In der Implementierungsphase geht es um die Umsetzung der Anforderungen in ein von Computern ausführbares Programm. Hierbei achten wir besonders darauf, die Software
möglichst fehlerfrei zu entwickeln: fehlerfrei bezüglich korrekter Ausgaben, korrektem Verhalten und fehlerfrei bezüglich der Stabilität der Software.
Wir stehen für Transparenz und wollen darauf hinweisen, dass es in der Praxis nicht möglich ist, eine hundertprozentig fehlerfreie Software zu erstellen; wichtig ist uns dabei jedoch, Defekte möglichst schnell
zu erkennen und deren Auswirkungen eng einzugrenzen. Zu diesem Zweck setzen wir bereits während der Implementierung Unit-Tests ein.
Ein weiteres Anliegen ist es uns, wartbaren und erweiterbaren Code zu erstellen, um Ihnen langfristigen Einsatz und Nutzen der erstellten Software zu ermöglichen – ganz gleich, ob die
Software von Ihnen selbst, von uns oder von Dritten gepflegt wird.
Test und Abnahme
In der Testphase werden die Funktionalitäten der Software weiteren Kontrollen unterzogen, sofern diese nicht bereits Teil der Unit-Tests waren.
Übliche Prüfungen sind hierbei Oberflächen-, Systemtests und Lasttests. Auf Wunsch erstellen wir für Sie Testpläne und überlassen Ihnen die Testergebnisse, damit Sie nachvollziehbare
Qualitätszeugnisse in Händen halten.
Wir überzeugen uns selbst von der Qualität der Software
bevor wir Ihnen diese zur Prüfung und Abnahme übergeben: was unser Haus verläßt, hat Hand und Fuß!
Dokumentation
Auf Wunsch erstellen wir für Sie eine Dokumentation der Software – eine interne Dokumentation für die Weiterentwicklung oder externe Dokumentation für Administratoren und Anwender
– in beliebigem Detailgrad. Wir weisen jedoch darauf hin, dass kontinuierlich weiterentwickelte Software in der Regel nicht vollständig dokumentiert werden sollte, da Dokumentation schnell
"veraltet" und damit wertlos wird. Wir empfehlen daher, lediglich Architektur und wichtige Details zu dokumentieren und die eingesparte Arbeitszeit darauf zu verwenden,
"sprechenden Code" zu entwickeln.