Der Einsatz leistungsfähiger Engineering-Tools ist heute unumgänglich, denn ohne sie wären Umfang und Komplexität der Entwicklungsprojekte längst nicht mehr beherrschbar. Der Markt an solchen Entwicklungswerkzeugen und deren tatsächlicher Nutzen im Projekt sind allerdings schwer zu überblicken. Durch unsere breitgefächerte Erfahrung in unterschiedlichsten Entwicklungsumfeldern und Fachdomänen kennen wir die meisten gängigen Werkzeuge sowie deren Stärken und Schwächen.
Der volle Nutzen (semi-)formal modellierter System- und Softwarearchitekturen entfaltet sich häufig erst durch den Einsatz von Code- und Dokumentgeneratoren. Beispiele hierfür sind die automatisierte Generierung von Quellcode für Komponenten im Architekturmodell, die automatische Erzeugung von Dokumentationsartefakten oder der Transfer geänderter Requirements in zugehörige Testgerüste.
Erfahrungsgemäß kann so manches schief gehen, wenn man Entwicklungsdaten zwischen Werkzeugen “von Hand“ kopiert, z. B. Anforderungs-IDs manuell in Programmcode-Kommentare überträgt. Auch hier tragen automatisierte Prozeduren erheblich zur Fehlervermeidung bei.
Werkzeugketten bestehen – ähnlich wie automatische Fertigungsstraßen – aus mehreren Entwicklungswerkzeugen, zwischen denen Generatoren ganze Schritte der Entwicklung – wie z. B. Erzeugung und Durchführung von Tests – übernehmen oder Adapter automatisch Informationen abgleichen und weiterreichen. Solche automatisierten Werkzeugketten sind auch zentrale Voraussetzung für funktionierende Continuous Delivery Pipelines.