Home
Impressum
Kontakt
Software-Engineering
Automotive
Smartcards
Hochgeschwindigkeitszüge
Forth
Linux
Sicherheit

Cornu: Software-Engineering

Wir bieten Dienstleistungen im Bereich Software-Engineering an. Das ist die ingenieursmäßige, also idealerweise planvolle, technisch fundierte und nachvollziehbare Erstellung von Software.

Unser Schwerpunkt liegt dabei nicht in der direkten Implementierung von C-Funktionen, sondern der Analyse und Lösung von Aufgaben im Bereich der Erzeugung von Software aus Spezifikationen.

Analyse- und Entwurfsmethoden

Wesentlich bei der Softwareentwicklung ist das Verstehen und Umsetzen der Kundenanforderungen (neudeutsch: Requirements). Dazu gibt es verschiedene Ansätze wie z.B.

Diese Verfahren lassen sich mit gutem Erfolg kombinieren. Unsere besonder Expertise ist die Erstellung von Use-Cases in DOORs. Diese sind im Vergleich zu Einzelrequirements kompakt und gut testbar. Außerdem geben sie einen einheitlichen Rahmen vor für

Darüber hinaus bringen moderne Modellierungswerkzeuge wie ASCET-SD und MATLAB/Simulink eigene Entwurfsmethoden mit und erlauben zusätzlich, Entwurfsmethoden aus den klassischen Ingenieursdisziplinen wie z.B. Regelungstechnik einzusetzen.

Traceability und Tests

Unabhängig von der Entwurfsmethode ist es unabdingbar, nachzuweisen, daß die Software die Kundenanforderungen erfüllt. Dazu ist die Entwurfsmethode so auszugestalten, daß jeder Prozeßschritt nachvollziehbar mit den Anforderungen benachbarter Prozeßschritte verknüpft wird.

Dabei helfen Werkzeuge (wie z.B. DOORs), die prüfen, ob die Anforderungen in den jeweiligen Prozeßschritten berücksichtigt wurden („Traceability“). Diese Werkzeuge erstellen typischerweise Berichte über den Erfüllungsgrad von Anforderungen aus den jeweils benachbarten Prozeßschritten.

Wir bieten hier Erfahrung, wie man Probleme beim Übergang von DOORs zur SW vermeidet.

Wesentliche Eigenschaft einer Anforderung ist ihre Testbarkeit. Im Idealfall gibt es also zu jeder Anforderung mindestens einen Testfall, der die Einhaltung dieser Anforderung prüft.

Je nach gewähltem Entwicklungsprozeß wird man solche Tests durchführen für

Wir haben ein effizientes System zur Erstellung von Modultests entwickelt und in etlichen Projekten eingesetzt.

Versionierung und Handhabung von Features

Kaum etwas wird sosehr unterschätzt wie die Bedeutung einer funktionierenden Versionshandhabung in einem Entwicklerteam. Hier gibt es eine weite Spanne zwischen ineffizientem, fristierten Team mit Verlusten funktionierender Software und effektivem und störungsarmen Neben- und Miteinander der Kollegen.

Wir haben Erfahrung mit

Subversion und git lassen sich auch kombinieren, git als lokales Repository und Subversion auf dem Server. Das funktioniert überraschend gut und ermöglicht z.B. das Weiterarbeiten an Software auch offline.

Je nach Versionskontrollsystem werden Branches unterschiedlich gehandhabt. Branches sind sinnvoll, um

Die wesentliche Schwierigkeit ist dabei die Integration von Branches auf den Hauptzeig, den „trunk“.

Im AutoSAR-Umfeld ist die Versionierung von Konfigurationsdateien („ARXML“) besonders schwierig, da ARXML nicht besonders gut lesbar ist und es darüberhinaus proprietäre Formate wie z.B. das Binärformat von Vector DaVinci gibt, bei denen Versionsvergleiche nur in bestimmten Tools möglich sind. Hier ist der Ansatz von ARTOP und PRAGMA, die ARXML in eine lesbare und vergleichbare DSL (domain specific language) transformieren.