# PREEvision

PREEvision ist eine modellbasierte Entwicklungssoftware für Elektrik-/Elektroniksysteme. Mit Hilfe dieser Applikation können Modelle von Elektrischen und Elektronischen Systemen entworfen werden. PREEvision unterstützt damit den Entwicklungsprozess durch die Methode der modellbasierten Systementwicklung (MBSE). Die verschiedenen Facetten des modellbasierten Systementwurfes spiegeln sich auch in den einzelnen Entwicklungsebenen wider. Basierend auf Requirements und Use Cases können Funktionen sowie deren logischer Aufbau modelliert werden. Anschließend erfolgt die Umsetzung dieser Artefakte in Hard- und Software. Die Definition von Kabelsätzen, elektrischen Verbindern sowie Datenströmen und Signalen ist möglich.

## Historie

Die Entwicklung von PREEvision startete als industriegefördertes Forschungsprojekt am FZI Forschungszentrum Informatik an der Universität Karlsruhe Ende 2003. Entwicklungspartner war die Daimler AG. Nach Abschluss der Studie zum sogenannten E/E Konzepttool suchte der Entwicklungspartner Daimler AG ein Unternehmen, das die Produktentwicklung übernehmen konnte. Als klassische Forschungsausgründung von zwei Forschern der Universität Karlsruhe und dem FZI übernahm die aquintos GmbH ab April 2005 die Produktentwicklung und gab im Januar 2007 erstmals die Produktversion Release 1.0 unter dem Markennamen PREEvision heraus. Im Jahr der Markteinführung gelang es aquintos den Embedded Award (2007) in der Tool-Kategorie zu gewinnen.
Im September 2009 beteiligte sich Vector Informatik mit einer Minderheitsbeteiligung an aquintos. Im Mai 2010 wurde die aquintos GmbH dann vollständig von der Vector Informatik GmbH übernommen. Seitdem wird das Produkt von Vector weiterentwickelt und vertrieben. Eine Übersicht der Release Notes der aktuellen sowie der vorangegangenen Versionen ist auf der Produktseite zu PREEvision zusammengefasst.

## Anwendung
### Beispiel

Beispiele für derartige Elektrik- und Elektroniksysteme (E/E) sind vielfältig. Grundsätzlich gehören alle Systeme dazu, die elektrische Komponenten haben. Beispielsweise kann die Bordelektronik eines Kraftfahrzeugs als E/E-System verstanden werden. Beginnend von den Anwendungsfällen können Anforderungen an die elektronischen Komponenten beschrieben werden. Beispielsweise könnte eine Anforderung lauten, dass es möglich sein muss im Fahrzeug Radio zu hören. Anwendungsfälle in diesem Beispiel wären Radio einschalten/ausschalten und Sender wechseln.
Die logische Abfolge des Radiohörens startet mit dem Empfang eines Radiosenders über eine Antenne und dem Weitergeben des elektrischen Signales an einen Tuner. Dieser benötigt neben dem Antenneneingang noch eine Vorgabe, welche Frequenz zu hören ist. Das so gewonnene Musiksignal wird unter Umständen schon digital an einen Verstärker weitergegeben, der es nach Vorgabe eines Lautstärkepegels wiederum auf einem Lautsprecher ausgibt.
Die o. g. logische Abfolge muss nun in konkrete elektrische und elektronische Bauteile und deren Funktionen überführt werden, bspw. einen Digitaltuner, welcher wiederum aus dem DSP, Hauptspeicher, einem Antenneneingang und einem Ethernet-Eingang bestehen könnte. Zur Übermittlung der digitalen Musikdaten an den Verstärker ist ein Bussystem wie MOST oder Ethernet im Einsatz. Nehmen wir einmal an, dass der Tuner die Frequenz auch über den Ethernet-Bus erhält und der Verstärker die Lautstärke auch darüber einliest.
Natürlich ist es ohne Softwarebausteine nicht möglich. D.h. auf der Softwareschicht werden Softwaremodule sowie deren Schnittstellen beschrieben, die die Musikdaten auf den Bus schreiben oder eine Lautstärke einlesen können.
Eine Modellierung der Kommunikation erfolgt im Signal-Layer. Hier kann genau spezifiziert werden, mit welchen Auflösungen und Zyklusraten die Informationen übertragen werden.
In den unteren Ebenen der Modellierung kann nun das Ethernet-Bussystem über konkrete (vier einzelne) Adern beschrieben werden. Zusätzlich ist modellierbar, welche Trennstellen an welcher Position in welcher Form erforderlich sind und wo genau die Kabelwege verlaufen (inkl. Längenauswertung). Auch die Positionen von Tuner und Verstärker werden so modelliert.
Durch die konsequente Verknüpfung der einzelnen Elemente und Artefakte der Ebenen kann exakt bestimmt werden, für welche Use Cases die konkrete Ader im Kabel dient: also dem Musikhören, dem Verändern der Lautstärke usw.

### In der Praxis

Konkret findet PREEvision heute in den Abteilungen der Elektronikentwicklung für Kraftfahrzeuge Verwendung, oftmals in Kooperation mit spezialisierten Tools.
Heute arbeiten alle großen deutschen Automobilhersteller und viele der internationalen Zulieferer mit der Applikation.

## Kollaboratives Arbeiten

Üblicherweise werden komplexe Elektrik-/Elektroniksysteme in großen Teams entwickelt – häufig über unterschiedliche Abteilungen und Standorte verteilt. Durch die konsequente Modellierung der Systeme in einer zentralen Datenbank sind die Zusammenhänge der einzelnen Baugruppen jederzeit ersichtlich und transparent nachvollziehbar. Damit wird eine systematische Vorgehensweise unterstützt.
Als zentraler Backbone kann PREEvision in einer modernen Serverarchitektur betrieben werden. Der Endanwender bearbeitet die für ihn relevanten Modellteile in einem Eclipse-basierten Rich-Client.

## Ebenenarchitektur

* Anforderungsebene/Requirements Layer
** Kunden-Features: Kundenerlebbare Funktionen, die das Produkt haben soll
** Use Cases: Anwendungsfälle und Nutzungsszenarien, für die das System gedacht ist
** Anforderungen/Requirements: Anforderungen, die an das Produkt bestehen
* Logische Ebene/Logical Function Architecture
** Übersetzung der Anforderungen in logische Funktionen
** Dient als Grundlage für die Umsetzung/Realisierung in Hardware und Software
* Softwareebene/Software Architecture Layer
** Hier werden Softwarekomponenten, ihr Verhalten und ihre Schnittstellen modelliert
** Die Softwarearchitektur mit Bibliotheken für Softwaretypen unterstützt sowohl AUTOSAR Classic als auch AUTOSAR Adaptive
* Diagnoseebene/Diagnostics Layer
** Beschreibung von Diagnoseobjekten
** Direkte Anbindung dieser an Applikationssoftware
* Hardwareebene/Hardware Architecture Layer
** In der Hardwareebene werden Steuergeräte (ECUs), Sensoren und Aktuatoren, ihre Vernetzung über Bussysteme sowie die Stromversorgung modelliert. Neben den klassischen ECUs lassen sich leistungsstarke Rechner im Detail modellieren.
* Kommunikationsebene/Communication Layer
** In der Kommunikationsebene wird definiert, wie Softwarekomponenten über Hardwaregrenzen hinweg Daten austauschen. PREEvision unterstützt mit CAN, CAN FD, LIN, FlexRay und Ethernet die gängigen Netzwerktechnologien
* Stromlaufplan und Kabelbaum/Electric Circuit and Wiring Design Layer
** Hier werden die elektrischen Charakteristika der Komponenten und ihre Vernetzung definiert. Auch das interne elektrische Design mit Sicherungen oder Widerständen lässt sich modellieren
** In der Leitungssatzentwicklung werden die physikalischen Details des Kabelbaums definiert mit Pins, Steckern, Kabeln, Trennstellen und Splices
* Geometrieebene/Geometric Topology Layer
** Verkabelungswege: Verlegewege in einem 2D- oder 3D-Modell, Abbildung von Steckern, Crimps usw.
** Verbauorte von Komponenten: Verortung der Steuergeräte und Busse in einem Modell

## Automatisierung
### Einsatz von Regeln

PREEvision unterstützt die Formulierung von Regeln mittels grafischer Diagramme. Diese Regeln werden im Modell genutzt für folgende Aufgaben:
* Automatische Prüfungen von Modellkonsistenz oder Benennungsschema.
* Erzeugen von Varianten mit Hilfe von Propagationsregeln.
* Suche und Bereitstellung von Modellartefakten mit Hilfe von Suchregeln.

### Einsatz skriptartiger Programmbausteine

Viele Aufgaben in einem Modell wie Importe und Exporte spezieller Formate, Auswertungen von Verbindungen, Berechnung von Speicherauslastungen usw. können über eine Plugin-Schnittstelle (Metrik genannt) vom Nutzer nachträglich erzeugt werden. Dazu stehen diverse Funktionen bereit, die vom Anwender genutzt werden können, um eigene Funktionen zu bewerkstelligen. Sollten diese Mittel nicht reichen, kann in speziellen Bausteinen nutzerspezifischer Java-Quellcode implementiert werden. Dazu wird in der Java-Umgebung eine komplette API zur Verfügung gestellt, mit dem das Modell durchschritten, verändert und erweitert werden kann. So können beispielsweise spezielle Fragestellungen beantwortet oder unternehmensinterne Spezialformate erzeugt oder auch importiert werden.