Das Ziel dieses Moduls liegt in der Vermittlung eines übergreifenden Verständnisses für verteilte eingebettete und mobile Systeme im Kontext aktueller Technologien. Dies beinhaltet unter anderem klassische Probleme wie die Akquise von Sensordaten, deren Verarbeitung und Fusion, die Steuerung und Regelung von Aktoren aber auch Paradigmen der Kommunikation von Daten und Informationen.

Für die Applikationsentwicklung im Bereich mobiler eingebetteter Systeme stehen heutzutage eine Vielzahl unterschiedlicher Werkzeuge, Middlewares und Abstraktionen zur Verfügung. Dabei hat sich das Robot Operating Systems (kurz ROS) in den letzten Jahren als quasi de facto Standard etablieren können. Es ermöglicht einen modularen Applikationsaufbau auch Betriebssystem- und Programmiersprachen-übergreifend, bietet eine Vielzahl unterschiedlichster Software-Bibliotheken und unterstützt zahlreiche Hardware-Komponenten.

Alle Techniken und Konzepte werden innerhalb einer vorinstallierten virtuellen Betriebssystemumgebung angewandt. Die Anbindung von Sensoren und Aktoren geschieht dabei mithilfe einer Standard-Simulationsumgebung aus dem Robotikbereich. Daneben wird auch die Integration realer Sensoren/Aktoren vermittelt. Kenntnisse in der Programmiersprache Python sind hierbei erforderlich.

  • Software effizient entwickeln bedeutet mehr als schnell Quellcode erzeugen zu können. Entscheidend sind viel mehr Praktiken, die helfen, das eigene Entwicklungsvorgehen zu verbessern und immer wieder den aktuellen Herausforderungen anzupassen.
  • In diesem Modul werden Methoden und Techniken vermittelt, die zu einer nachhaltigen Steigerung der Produktionseffizienz und der Produktqualität führen. Dazu gehören beispielsweise Praktiken wie Collaborative Code Ownership, Continuous Integration und Delivery oder auch automatisiertes Testen. Auf der anderen Seite stehen Programmierprinzipien, die zu einer insgesamt höheren Softwarequalität führen. Das reicht von Programmiersprachen-abhängigen Prinzipien wie beispielsweise Design-Pattern über sprachübergreifende Ansätze wie Komposition statt Aggregation bis hin zu methodischen Prinzipien wie kontinuierliche, kritische Selbstreflektion oder Nachvollziehbarkeit von Code.
  • Alle Techniken werden werkzeugorientiert vermittelt und von den Teilnehmern selbst angewendet. Dieses Modul wird in verschiedenen Varianten angeboten, abhängig vom Hintergrund der Teilnehmer gibt es die Ausprägung für Entwickler Eingebetteter Systeme und Ingenieure (CCD-Ing), Software-Entwickler und -Architekten (CCD-SW) und Projektmanager und Systems Engineers (CCD-PM).
  • Requirements Engineering ist Bestandteil jedes Entwicklungsprozesses und beeinflusst den Erfolg eines Projektes entscheidend. Fehler in der Betrachtung von Kundenwünschen und Anforderungen führen schnell dazu, dass Zeit- und Budgetrahmen deutlich überschritten werden. Bis heute werden die meisten Projekte abgebrochen, weil die Nutzer nicht ausreichend in die Entwicklung eingebunden werden und Anforderungen unklar sind oder sich ändern. Es ist deshalb essenziell, Anforderungen nicht nur aufzunehmen sondern vor allem auch in einer geiegneten Form zu verwalten und aktualisieren.
  • Innerhalb dieses Moduls wird den Teilnehmern grundlegendes Wissen zu den Möglichkeiten und Techniken vermittelt. Insbesondere wird betrachtet, wie Anforderungen ermittelt, dokumentiert, verwaltet und validiert werden. Mit Hilfe dieser Tätigkeiten kann die Erfüllung und damit Zufriedenstellung der Kundenwünsche und Anforderungen unterstützt und verbessert werden. Bei einer Vernachlässigung der Kundenbedürfnisse wird dieser meistens unzufrieden mit dem Produkt sein.
  • Die vorgestellten Methoden und Verfahren werden zusätzlich an einer entsprechenden Softwarelösung verdeutlicht. Dadurch erhalten die Teilnehmer einen Einblick und ein Verständnis für die Verwendung aber auch Limitierungen solcher Systeme.