Column #col2

Embedded Systems

Unsere Projekte

Entwicklung einer Bedienoberfläche für ein Software Defined Radio (SDR)

Kunde
Der Kunde ist einer der international führenden Hersteller von professioneller Funkkommunikationstechnik, Bündelfunksystemen und Verschlüsselungslösungen für einsatzkritische Bereiche.

Projektbeschreibung
Ziel des Projektes ist die Entwicklung der Bedienoberfläche eines Software Defined Radio (SDR) mit einem breitgestreuten Einsatzspektrum.

Vorgehensmodell/Software-Entwicklungsprozess
Die Softwareentwicklung erfolgt agil (iterativ/inkrementell) in Anlehnung an Scrum.

Systemarchitektur
Die Software des Bediengerätes basiert auf dem Qt-Framework und verwendet CORBA zur Kommunikation mit den Komponenten des SDR.

Design und Implementierung
Die Realisierung erfolgt objektorientiert in C++. Als Betriebssysteme kommen Windows und Embedded-Linux auf proprietärer Hardware zum Einsatz.

Werkzeuge
Requirements-Management: DOORS
Modellierung: Enterprise Architect
Versionierung: ClearCase
Tracking: ClearQuest
GUI-Framework: Qt
Continouus Integration: Jenkins
Test: Froglogic Squish, QtTest, PCLint, Python
Generierung: Eclipse/Ecore/Xtend, LMX
Implementierung: Visual Studio 2008

Unsere Aufgabe
Die Cortex Brainware GmbH ist für die Erstellung der Software-Architektur der Bedienoberfläche aus der Spezifikation des SDR-Gesamtsystems verantwortlich.
Die Aufgabe umfasst folgende Tätigkeiten:
- Definition und Evaluierung eines Styleguides und eines Bedienkonzepts, angepasst an die spezifischen Eingabemöglichkeiten und an das Einsatzszenario des SDR
- Definition einer systematischen Vorgehensweise zur Entwicklung der Bedienoberfläche
- Konzeptionierung und Umsetzung eines Metamodells als projektspezifisches UML-Profil in Enterprise Architect, das diese Vorgehensweise zur Steuerung der Entwicklung unterstützt.
- Auf Basis dieses Metamodells die Konzeptionierung und Umsetzung von projektunterstützenden Werkzeugen für Status-Reporting, Konfiguration, Prozess-Dokumentation, Common-Criteria-Evaluierung und Code-Generierung
- Detaillierung der für die Bedienoberfläche relevanten Use-Cases des Gesamtsystems
- Erstellung der Ablaufspezifikationen für diese Use-Cases in Form von Aktivitätsdiagrammen
- Definition eines prototypischen Klassendesigns und eines Coding-Styleguides für die Umsetzung der Use-Cases
- Erstellung der konkreten Klassendesigns der Use-Cases
- Einrichtung der Rückverfolgbarkeit (Tracability) der relevanten Systemanforderungen vom Pflichtenheft über das Modell bis in den Code
- Design der Bedienoberflächen inklusive des Verhaltens als Click-Prototypen unter Berücksichtigung von Standard-Anforderungen an die Ergonomie und repräsentativem Nutzer-Feedback
- Übergabe der Spezifikationen an die jeweiligen Software-Entwickler
- Kontrolle der Ergebnisse in Form von Reviews und Tests
- Erstanalyse eingehender Problem-Reports aus der Systemintegration
- Implementierung bestimmter kritischer Use-Cases sowie weite Teile der Software-Architektur

Dauer/Größe
Der Anteil von Cortex Brainware betrug ca. 3 Personenjahre

Erstellung einer neuen Generation von Steuergeräten für die Einspeisung von Solarstrom in öffentliche Netze

Kunde
Der Kunde ist im Bereich Solartechnik mit einer breiten Palette von Produkten zur Steuerung und Regelung von Photovoltaik-Anlagen tätig.

Projektbeschreibung
Ziel des Projektes war die Erstellung einer neuen Generation von Steuergeräten für die Einspeisung von Solarstrom in die öffentlichen Netze. Die Entwicklung erfolgte auf Basis moderner objektorientierter Methoden, die Realisierung erfolgte in C++. Besonderes Augenmerk wurde auf eine modulare Systemarchitektur gelegt, die einen ersten Schritt in Richtung Baukasten für unterschiedliche Produkte darstellt.

Vorgehensmodell/Software-Entwicklungsprozess
Als Vorgehensmodell wurde ein moderner agiler Prozess verwendet, der stark an SCRUM angelehnt war. Bewährte Praktiken wie automatisierte Modultests, kontinuierliche Integration und permanentes Messen der Projektgeschwindigkeit wurden angewandt.

Systemarchitektur
Die Aufgabe der gewählten Softwarearchitektur war es, einerseits ein modulares und wiederverwendbares System zu realisieren, andererseits extreme Echtzeitbedingungen zu erfüllen, die nur mit Hilfe einer sehr effizienten Umsetzung der Anforderungen eingehalten werden können. Deshalb wurde ein stark modulares Framework realisiert, das es erlaubt, die kritischen Teile anwendungsspezifisch hinzuzufügen.

Design und Implementierung
Das Design erfolgte objektorientiert mit UML, als Realisierungssprache wurde C++ gewählt. Das Zielsystem benutzt ein Echtzeit-Betriebssystem.

Werkzeuge
Modellierung: Enterprise Architect
Entwicklungsumgebung, Eclipse mit CDT, spezifische Plug-ins für Cross-Compiler
Konfigurationswerkzeug: GIT

Unsere Aufgabe
Cortex Brainware GmbH war für die Betreuung und Verbesserung des angewendeten Entwicklungsprozesses verantwortlich und leistete Unterstützung bei der Projektleitung.

Dauer/Größe
ca. 15 Personenjahre

Entwicklung eines Software Defined Radio (SDR)

Kunde
Der Kunde ist einer der international führenden Hersteller von professioneller Funkkommunikationstechnik, Bündelfunksystemen und Verschlüsselungslösungen für einsatzkritische Bereiche.

Projektbeschreibung
Ziel des Projektes ist die Entwicklung eines Software Defined Radio (SDR) mit einem breitgestreuten Einsatzspektrum. Neben der Unterstützung von existierenden, schmalbandigen Sprach- und Datenübertragungsstandards wird das neue System auch IP-basierte Wellenformen zur Übertragung von Daten und Sprache mit hoher Bandbreite ermöglichen und damit die Nutzung von Sprachübertragung per VoIP und die Übertragung von Videodaten erlauben. Das Gerät verwendet aktuelle Verschlüsselungstechnologie, die militärischen Ansprüchen genügt.

Vorgehensmodell/Software-Entwicklungsprozess
Die Softwareentwicklung erfolgt agil (iterativ/inkrementell) in Anlehnung an Scrum.

Systemarchitektur
Die Software des Funkgeräts basiert auf der Software Communications Architecture (SCA). Diese Standard-Architektur dient der Entwicklung stark verteilter Software-Systeme für heterogene Hardware-Umgebungen und verwendet CORBA zur Kommunikation zwischen den Komponenten.

Design und Implementierung
Die Realisierung erfolgt objektorientiert in C++ unter Einsatz von MDA. Als Betriebssystem kommen ein PSOS–kompatibles Echtzeitbetriebssystem, Windows sowie Embedded-Linux zum Einsatz.

Werkzeuge
Requirements-Management: DOORS
Modellierung: Enterprise Architect
Versionierung: ClearCase
Tracking: ClearQuest
GUI-Framework: Qt

Unsere Aufgabe
Die Cortex Brainware GmbH ist für die Erstellung der Software-Architektur aus den Spezifikationen in Form von Use-Cases verantwortlich.
Die Aufgabe umfasst folgende Tätigkeiten:
- Qualitätssicherung der Spezifikationen und Use-Cases hinsichtlich Vollständigkeit, Konsistenz und Umsetzungsaufwand
- Herunterbrechen der systemübergreifenden Abläufe auf die einzelnen Komponenten, Definition der Verteilung der Funktionalität
- Erstellung von Software-Schnittstellenbeschreibungen der einzelnen Systemkomponenten in Form eines UML-Modells
- Detaillierung der Ablaufbeschreibungen in Form von Sequenzdiagrammen im gleichen UML-Modell
- Übergabe des Modells an die Entwicklung, Abstimmung zwischen den Architekten der einzelnen Software-Komponenten
- Design der Abläufe und Elemente der Gerätebedienung

Dauer/Größe unserer Aufgaben
ca. 13 Personenjahre

Neuentwicklung einer sicherheitsrelevanten Call-Center-Lösung zur Verwaltung und Abfrage von Telefonanrufen

Kunde
Der Kunde ist ein internationaler Hersteller für Telekommunikationsausrüstungen und Marktführer in Deutschland für sicherheitsrelevante Call-Center-Lösungen.

Projektbeschreibung
Ziel des Projekts war die Neuentwicklung einer Call-Center-Lösung zur Verwaltung und Abfrage von Telefonanrufen. Die Call-Center-Lösung konnte mit dem Behördenfunk verbunden werden. Zu den Leistungsmerkmalen des Systems gehörten komplexe Redundanz-Mechanismen, Hochverfügbarkeit und die Möglichkeit, Installationen an mehreren Standorten (Städten) miteinander zu vernetzen. Das System wurde unter anderem an fünf vernetzten Standorten installiert und verfügte dadurch über 350 Arbeitsplätze.

Besonderheiten der Aufgabenstellung
Das System musste mehrere Bedienschnittstellen bereitstellen: Eine intuitive Oberfläche für Touchscreens, eine einfache TCP/IP-basierte Schnittstelle für Legacy-Verwaltungssysteme und eine Webservice-Schnittstelle für moderne Workflow-Systeme. Außerdem mussten zahlreiche externe Systeme angebunden werden: Bestehende Telefonverzeichnisse, Sprachaufzeichnungs- und Dokumentationssysteme und Anlagen zur Gebäudesteuerung. Manche Schnittstellen waren bereits definiert, andere mussten im Rahmen des Projekts definiert, abgesprochen und implementiert werden.

Systemarchitektur
Das System bestand aus spezialisierter Hardware zur Behandlung der Sprachdaten und aus einem Software-System, das die Signalisierungs- und Verwaltungsaufgaben übernahm. Das Software-System war eine verteilte, serviceorientierte Anwendung, die aus unabhängigen Java-Komponenten bestand. Die Komponenten kommunizierten über eine nachrichtenorientierte Middleware miteinander (JMS). Zu den besonderen Eigenschaften des Systems gehörten: Hochverfügbarkeit (99,9995%), extreme Skalierbarkeit (ein Arbeitsplatz bis mehrere hundert Arbeitsplätze) und die Möglichkeit, Leistungsmerkmale während des Betriebs nachrüsten zu können.

Werkzeuge
Java, Swing, JMS, Spring, Eclipse, JUnit, C++, C#, Visual Studio, Subversion, Postgres, Windows XP, Linux

Unsere Aufgaben
Cortex Brainware GmbH war in diesem Projekt mit zwei Consultants vertreten, die die folgenden Aufgaben übernahmen:

1. Projekt- und Teamleitung (Teamgröße zum Schluss: 15 Personen), Produkt- und Releaseplanung, Erstellung der Systemarchitektur inklusive Make-or-buy-Entscheidungen. Auftragnehmermanagement. Mitarbeit in der SW-Entwicklung.

2. Definition des Entwicklungsprozesses. Maßgebliche Gestaltung der Softwarearchitektur und des Designs. Implementierung der kritischen Komponenten. Konzeption, Koordination und Betreuung der Test- und Demonstrationssysteme.

Dauer/Größe
Dauer der Projektbeteiligung: ca. 3,5 Jahre
Größe des Projekts am Ende: 15 Personen

Entwicklung eines Frameworks samt prototypischer Anwendung für eine Produktlinie im Automobilbereich

Kunde
Der Kunde ist ein weltweit führender Anbieter von Steuergeräten für Klimaregelungen im Automobilbereich. Dabei sind nicht nur die Absatzmärkte international orientiert, sondern auch die Entwicklungskapazitäten, um den verschiedenen landestypischen Anforderungen gerecht werden zu können.

Projektbeschreibung
Das Projekt gliederte sich in zwei Bereiche:

  • Entwicklung einer allgemeinen Plattform (eines Frameworks), auf der zukünftige Entwicklungen von Steuergeräten vereinfacht und beschleunigt aufgebaut werden können, um schneller, effizienter und kostengünstiger als bisher auf Änderungen der Marktsituation und der Kundenwünsche reagieren zu können, also um schneller, einfacher und günstiger neue Projekte abwickeln zu können.
  • Bearbeitung eines bereits existierenden Kundenprojektes als prototypische Anwendung der Plattform.

Die Entwicklung geschieht für den Automobilbereich, wodurch eine Reihe von Rahmenbedingungen fest vorgegeben waren, wie die standardisierte Codierrichtlinie MISRA und standardisierte Bussysteme (CAN, LIN). Aber auch die Verwendung bestimmter Compiler und Bibliotheken sowie die Verwendung von ASCET (Advanced Simulation and Control Engineering Tool) waren vorgeschrieben.

Die Entwicklung von Software für Steuergeräte erfolgte bisher prozedural und datenflussgetrieben unter Verwendung entsprechender Tools wie z.B. ASCET. In diesem Projekt sollte die Entwicklung stattdessen mit modernen objektorientierten Methoden und darüber hinaus modellgetrieben (MDA: Model-driven Architecture) erfolgen mit dem Ziel, in einem mehrstufigen Prozess aus Modellen automatisch Code zu generieren. Der Vorteil dieser Vorgehensweise liegt dabei in der hohen Wiederverwendbarkeit der Ergebnisse aufgrund der Aufteilung des Systems in verschiedene Schichten. Ändert sich das „Was“, die Business-Logik des Systems, so sind lediglich die Modelle anzupassen, während die Umsetzung in ablauffähigen Code automatisch und ohne Anpassungen geschieht.

Ändert sich das „Wie“ bzw. „Wofür“, dann können die Modelle unverändert bleiben. Lediglich die Komponenten zur Transformation der Modelle in Code müssen angepasst werden.

An dieser Stelle setzte die Aufteilung des Projektes an: Das konkret zu implementierende Kundenprojekt findet sich in der Modellebene wieder. Die Plattform bzw. das zu entwickelnde Framework hingegen ist das Werkzeug, die Ebene, die das Modell in ausführbaren Code transformiert. Die Plattform stellt somit eine Art Baukasten dar, dessen Bausteine kombiniert und benutzt werden, um die Kundenanforderungen zu realisieren.

Eine besondere Herausforderung stellte dabei die weiterhin angestrebte Verwendung ausgereifter Tools wie ASCET sowie die Verwendung von bereits bestehenden Modulen dar, die möglichst rückwirkungsarm zu integrieren waren.

Softwareentwicklungsprozess
Der Softwareentwicklungsprozess basiert auf dem vom Kunden selbstentwickelten Prozess „SMK“ (Software Modeling Kit), der für die vorliegende Entwicklung um das iterative und inkrementelle Vorgehen und um den Einsatz der UML (Unified Modeling Language) erweitert wurde. Allerdings ist die Verwendung der UML auf Klassen- Aktivitäts-, Zustands- und Sequenz-Diagramme eingeschränkt.

Softwarearchitektur
Zentraler Bestandteil der Anwendung und ihrer Entwicklung war die Verwendung des MVC-Patterns (Model View Control). Davon ausgehend wurde die gesamte Software-Entwicklung aufgebaut, und auch bereits vorhandener Alt-Code wurde durch entsprechende Wrapper in das System integriert.

Bei der Entwicklung selbst handelte es sich um einen modifizierten MDA-Ansatz. Dieser gibt eine klare Trennung von Funktionalität und Technik sowie die Verwendung von Modellen in der Entwicklung und Generatoren zur Umsetzung der Modelle vor.

Anforderungsanalyse
Die Anforderungsanalyse erfolgte im Projekt unter direkter Mitarbeit bzw. in Zusammenarbeit mit dem Endkunden, der vergleichsweise strikte Vorgaben bzgl. der Systemanforderungen machte. Aus diesem Grund waren Lasten- und Pflichtenheft umfangreich und detailliert.

Analyse, Design und Implementierung
Analyse und Design erfolgten im Projekt objektorientiert unter Zuhilfenahme der UML, die Realisierung zum Teil in C, zum Teil in C++. Die für das Projekt notwendige Eigenentwicklung bzw. Erweiterung der Entwicklungsumgebung NetBeans erfolgte in Java. Der im Projekt verwendete Code-Generator zur Transformation der UML-Modelle in übersetzbaren Code geschah in XML/XSL und der Eclipse-Erweiterung OAW.

Werkzeuge
Modellierung:

  • MDA-Tool: eine auf NetBeans basierende Eigenentwicklung; sie umfasst UML-Modellierung, Ansteuerung der Compiler, Codegenerator zur Umformung UML nach C++
  • Eclipse: Entwicklung des Code-Generators, basierend auf Open Architectureware

Entwicklungsumgebung, Compiler:

  • Entwicklungsumgebung: MDA-Tool, Eclipse
  • Compiler: Entwicklung auf PC: daher g++/cygwin. Target: Greenhills Compiler Suite für NEC V850
  • Debugger: PC: gdb. Target: Multi (Greenhills)

Konfigurationswerkzeug: PVCS (Serena)
Requirements-Management: DOORS
Analyse-Werkzeuge: AIDA, CANeasy, CANoe, Matlab/Simulink

Unsere Aufgaben
Cortex Brainware GmbH war verantwortlich für

  • Schulung der Projektmitarbeiter in OOA/OOD im Embedded-Systems-Umfeld
  • Projektbegleitung/Coaching
  • Vorstellung, Einführung und effizienter Einsatz verschiedener Design-Patterns
  • Unterstützung in der Software-Entwicklung einzelner Komponenten
  • Verallgemeinerung/Weiterentwicklung einer nur rudimentär vorhandenen Modultestumgebung zur Durchführung von Regressionstests
  • Übernahme der Kundenprojekt-spezifischen Aufgaben im Rahmen des Konfigurationsmanagements

Cortex Brainware übernahm in diesem Projekt die Rolle des Architekten, Designers, Software-Testers, Coachs und Trainers (auch im internationalen Umfeld).

Dauer/Größe
Dauer der Projektbeteiligung: ca. 1 Jahr
Größe der Projekte: Plattform: 6-8 PJ; Kundenprojekt: ca. 25 PJ

Entwicklung einer neuen Generation von Durchflussmessgeräten

Kunde
Der Kunde ist ein weltweit führender Anbieter von Messgeräten für den industriellen Einsatz.

Projektbeschreibung
Ziel des Projektes war die Entwicklung einer neuen Generation von Durchfluss-Messgeräten. Mehrere verschieden Messverfahren und Geräteausbaustufen wurden realisiert. Die Messgeräte können von einer lokalen Bedienung und einer externen Leitstelle bedient werden. Sie zeigen die Messwerte einstellbar auf der lokalen Bedienung und an analogen Ausgängen an oder melden sie an die Leitstelle. Außerdem können die Messwerte in den Messgeräten durch weitere Funktions-einheiten weiterverarbeitet werden. Es werden mehrere standardisierte Schnittstellenprotokolle unterstützt (HART, PROFIBUS, Feldbusse).

Die Entwicklung erfolgte auf Basis moderner objektorientierter Methoden. Die Realisierung erfolgte in C, wobei teilweise Einfachvererbung realisiert wurde. Das Messen ist als Komponente eingebunden. Für die Entwicklung der gesamten Generation der Messgeräte wurden Codegeneratoren zur konsistenten Implementierung von Applikation und Bus-Schnittstellen eingesetzt. Ein eigenes Framework definierte die Anbindung der Anwendung und der Messtechnik.

Vorgehensmodell / Softwareentwicklungsprozess
Der Softwareentwicklungsprozess basierte auf den Erfahrungen der Cortex Mitarbeiter:

  • Einsatz der Unified Modeling Language (UML)
  • Iterativ und inkrementellAnwendungsfallgesteuert / ergebnisorientiert
  • Architekturzentriert
  • Festlegung von Design- und Implementierungsrichtlinien
  • Peer Reviews
  • Automatisiertes Testen

Softwarearchitektur
Die Softwarearchitektur orientierte sich an dem entwickelten Framework, das über alle Basismechanismen, wie z.B. Anfragenverarbeitung, Persistenz, Kommunikation von Konfigurationsparametern und Messwerten, Datentypen, Mehrsprachigkeit verfügte. Die lokale Bedienung war generisch, basierend auf der Anfragenverarbeitung und der Messwertkommunikation.

Anforderungsanalyse und Analyse
Der Anforderungsanalyse und der Analyse wurde spezielle Aufmerksamkeit geschenkt, da es besonders hohe Anforderungen an die Flexibilität der Messgeräte gab, die direkt die Architektur beeinflussten (Kostenreduktion der Hardware). Außerdem war die minimale Kapazität der Speicherbausteine eine grundlegende Einschränkung.

Design und Implementierung
Das Design war objektorientiert, die Realisierung wurde in C mit entsprechenden Erweiterungen durchgeführt.
Die Anwendung sowie die lokale Bedienung und die Busschnittstelle wurden aus einer Datenbank in das Design-/Implementierungsmodell generiert. Die Implementierung erfolgte durch Generierung aus dem Design-/Implementierungsmodell.

Werkzeuge
Modellierung: Rational Rose
Entwicklungsumgebung: MS Visual C++, Visual Basic, RoseSkripts
Konfigurationswerkzeug: MKS
Projektplanungswerkzeug: MS Project

Unsere Aufgaben
Cortex Brainware GmbH war für die Software-Architektur, das Design und teilweise für die Implementierung verantwortlich.

  • Erstellen des Architekturdokuments und Designmodells.Erstellen des Konzepts zur Abbildung von Klassen und Einfachvererbung in C (C++).
  • Implementierung des Codegenerators von Rational Rose nach C.
  • Implementierung des Modellgenerators aus der Anwendungsdatenbank.
  • Design und Implementierung einiger Pakete des Frameworks wie Messdatenkommunikation und der Basisklasse aller Business-Objekte.

Außerdem wurden durch Cortex Brainware wesentliche Prozesselemente eingeführt:

  • Erstellen von Anwendungsfällen (Use-Cases)Definition von Design- und Implementierungsrichtlinien
  • Durchführung von Peer-ReviewsDefinition des Iterationsplans
  • Definition und Implementierung von Testwerkzeugen (Testautomatisierung)

Dauer / Größe
Unser Anteil: 3 Personenjahre


Entwicklung einer neuen Generation von Aufklärungsgeräten

Kunde
Der Kunde ist ein weltweit führender Anbieter von Aufklärungsgeräten für den militärischen und zivilen Einsatz.

Projektbeschreibung

Ziel des Projektes war die Entwicklung einer neuen Generation von Aufklärungsgeräten. Das Gerät wird über eine lokale Bedienung eingestellt und soll in einer späteren Version auch mit einer zentralen Bedienung konfiguriert werden können. Verschiedene Suchbereiche können eingestellt werden. Die Messwerte werden auf der Bedienung angezeigt, sie können aber auch durch weitere Funktionen weiterverarbeitet werden.

Die Entwicklung erfolgte auf Basis moderner objektorientierter Methoden. Die Realisierung erfolgte in C++ und teilweise in C. Das vorgegebene Protokoll zu den Funktionseinheiten wurde über Fassaden verkapselt. Verschiedene weitere Entwurfsmuster kamen zum Einsatz.

Vorgehensmodell / Softwareentwicklungsprozess
Der Softwareentwicklungsprozess basiert auf dem bereits vorhandenen Prozess des Kunden:

  • Einsatz der Unified Modeling Language (UML)
  • Iterativ und inkrementell
  • Architekturzentriert
  • Verwendung von Implementierungsrichtlinien

Softwarearchitektur
Die Architektur umfasst das Modell der Anwendung und der Schnittstelle zur Bedienung (Command Pattern) sowie zu den Funktionseinheiten (Publish/Subscriber und Observer Pattern).

Anforderungsanalyse und Analyse
Die Anforderungen wurden in einem Pflichtenheft festgelegt.

Design und Implementierung
Das Design wurde objektorientiert durchgeführt, die Realisierung erfolgte in C++ und teilweise in C. Die Implementierung wird aus dem Design-/Implementierungsmodell generiert.

Werkzeuge
Modellierung: Rational Rose
Entwicklungsumgebung: MS Visual C++

Unsere Aufgaben
Cortex Brainware GmbH war für die Basis-Softwarearchitektur und Beratung des Architekten verantwortlich.

  • Erstellen des Architekturmodells und -dokuments.
  • Teilweises Erstellen des Designmodells.

Dauer / Größe
Unser Anteil: 2 Personenmonate