Softwareentwicklung kann nach Stand der Technik je nach Anwendungsgebiet nach verschiedenen Vorgehensmodellen organisiert sein. Für alle Varianten, wie Wasserfallmodell, Rapid Prototyping oder agile Softwareentwicklung und die verschiedenen Technologien wie Embedded Softwareentwicklung, objektorientierte Entwicklung, automatische Codegenerierung usw. bieten die Softwareentwicklungsnormen Möglichkeiten der Verbesserung von Effizienz, Effektivität und Qualität.
Anforderungsmanagement
Um sicher zu stellen, dass ein Software-Produkt sämtliche der geforderten Anforderungen umsetzt, müssen die Anforderungen systematisch verwaltet und deren Umsetzung in Entwurf und Implementierung nachvollzogen werden. Dabei sind die bei Entwicklungsprojekten häufig anzutreffenden Änderungen und Ergänzungen der Anforderungen im Projektverlauf zu berücksichtigen.
Design
Das Design ist der zweitwichtigste Grundpfeiler nach der Anforderungserstellung. Hier werden die Weichen für die eigentliche Entwicklung gestellt. Fehler oder Lücken im Design können u. U. erst in der späten Implementierungsphase entdeckt werden und haben Projektverzug und hohe Folgekosten als Konsequenz. Ein korrektes und vollständiges Modell ist deshalb das Ziel der Designphase.
Entwicklungsprozesse
Verschiedene Domänen, verschiedene Projektziele, aber auch Unterschiede und Teamgrößen, Teamzusammensetzungen und Kundenanforderungen und –arbeitsweisen erfordern entsprechende Entwicklungsprozesse. Aus dem großen Spektrum der Methoden, von agil bis sicherheitsrelevant und norm-konform, kennen wir die entsprechenden Denkweisen, Methoden und Werkzeuge und können sie zielgerichtet auswählen, kombinieren und einsetzen.
Implementierung
Die Umsetzung der entwickelten Entwurfskonzepte in eine funktionsfähige und stabile softwaretechnische Lösung erfordert die Verwendung problemnaher, präzise definierter und gut verständlicher Notationen. Die Auswahl einer für den Problemkontext adäquaten Programmiersprache spielt eine nicht zu unterschätzenden Rolle für den Erfolg eines Projekts. Verfügbare Entwicklungsumgebungen, Compiler sowie Tools zur statischen Prüfung des Codes auf tatsächliche und mögliche Fehler bilden das Rüstzeug für den Programmierer komplexer Systeme.
Konfigurationsmanagement
Konfigurationsmanagement unterstützt Entwicklung und Projektdurchführung durch zuverlässige Haltung von Dokumenten und Source-Code und durch Verwaltung von Versionen und Varianten. Neben dem ICS-internen Angebot von Konfigurationsmanagement-Diensten, um Projekte schnell und zielgerichtet anschieben und durchführen zu können, bietet die ICS auch die Möglichkeit, Auswahl und Einsatz von Konfigurationsmanagement zu sichten, zu bewerten und zu beraten.
Security
Sicherheit von Computeranwendungen vor versehentlichem oder mutwilligem Missbrauch, die Sicherheit von Daten vor unbefugtem Zugriff muss als Eigenschaft von Anfang an beim Entwurf mitgedacht werden. Die Security-Anforderungen der jeweiligen Domänen und Systeme müssen ermittelt, bewertet und berücksichtigt werden, ebenso wie die Risiken aus Angriffsoberfläche des entstehenden Systems und existierender Angriffstechniken. Wir halten uns und unsere Arbeitsweise kontinuierlich auf dem Laufenden, kennen unsere Grenzen und wissen, welche Quellen und externen Experten wir gegebenenfalls hinzuziehen.
Spezifikation
Ausgangsbasis für eine effiziente und qualitätsgerechte Entwicklung komplexer Systeme ist eine genaue Anforderungsspezifikation. Dies erfordert eine systematische Ermittlung, Dokumentation und Analyse von Anforderungen in Zusammenarbeiten mit den Systembetreibern und Anwendern und unter Berücksichtigung der für die jeweilige Domäne geltenden Normen und Standards.