PatentDe  


Dokumentenidentifikation EP1046991 23.01.2003
EP-Veröffentlichungsnummer 1046991
Titel Verfahren zum Testen der Unabhängigkeit und Verträglichkeit eines Software-Moduls
Anmelder Siemens AG, 80333 München, DE;
Siemens VDO Automotive S.A.S., Toulouse, FR
Erfinder Göser, Gerhard, 31170 Tournefeuile, FR
Vertreter derzeit kein Vertreter bestellt
DE-Aktenzeichen 59903732
Vertragsstaaten DE, FR
Sprache des Dokument DE
EP-Anmeldetag 20.04.1999
EP-Aktenzeichen 991078270
EP-Offenlegungsdatum 25.10.2000
EP date of grant 11.12.2002
Veröffentlichungstag im Patentblatt 23.01.2003
IPC-Hauptklasse G06F 11/00

Beschreibung[de]

Die Erfindung betrifft ein Verfahren zum Testen

Software und Teile einer Software (im fogenden Software-Module genannt) werden heute häufig von verschiedenen Personen geschrieben. Dabei muß sichergestellt werden, daß die Aktionen eines Software-Modules zu denen eines anderen Software-Modules nicht im Widerspruch stehen oder sie gar rückgängig machen. Bei offener Software, das heißt in der Umgebung eines Personal-Computers, wird die Unabhängigkeit und Verträglichkeit der Software-Module untereinander von einer dynamischen Bereichsüberwachungssoftware garaniert.

Für in Geräte (mit zum Beispiel Mikrocontrollern, Mikroprozessoren oder Steuerungen) eingebettete Software wird heute diese Eigenschaft durch Regeln für die Zusammenarbeit einzelner Software-Module sichergestellt: Zuerst wird die Software in lesbarer Form als Source-Code mit der zugehörigen Dokumentation erstellt. Dann wird sie in die maschinenlesbare Form, dem Object-Code, compiliert. Firmeninterne Aufgabenteilung und Regeln (Design Rules) stellen die Vertäglichkeit der einzelnen Software-Module untereinander sicher. In einem Integrationstest wird das Zusammenspiel der Software-Module in Funktion und Zeitverhalten überprüft.

Alle diese Arbeiten werden bei eingebetteter Software (Embedded Software) unter offener Zusammenarbeit aller Beteiligten, das heißt unter Vorlage der Source-Codes und deren Dokumentationen, durchgeführt.

Die Komplexität von eingebetteten Software-Modulen, die kooperative Funktionen zwischen zwei oder mehreren Geräten ausführen, ist so groß geworden, daß sie von einzelnen Firmen nicht mehr alleine beherrscht beziehungsweise erstellt werden können. Die Kooperation von Wettbewerbern bei der Erstellung der eingebetteten Software für ein oder mehrere Geräte ist notwendig geworden. Die Wettbewerbssituation zwischen den Firmen verbietet allerdings die Offenlegung des Source-Codes und zwingt zur Einbettung von bereits compiliertem Object-Code. Damit ist der Inhalt einer technischen Funktion dem Ersteller einer anderen Funktion nicht mehr im Detail bekannt. Er kann also darauf keine Rücksicht mehr nehmen.

Damit ein Software-Modul seine technische Funktionalität unabhängig von und verträglich mit einer anderen technischen Funktion erfüllen kann, müßte eine zusätzliche Bereichsüberwachungsfunktion installiert werden. Dies wäre aber relativ aufwendig und damit teuer.

Es existieren Software-Werkzeuge, die die Einhaltung formaler Regeln (Design Rules) im Source-Code oder im Object-Code überprüfen können. Es existieren auch Mechanismen zur Worstcase-Vorhersage des Zeitverhaltens unter Verwendung des Source-Codes beziehungsweise Object-Codes. Es existiert jedoch kein Verfahren, das die Unabhängigkeit und Vertäglichkeit verschiedener mittels Software realisierter technischer Funktionen untereinander überprüft.

Aufgabe der Erfindung ist es, ein derartiges Verfahren bereitzustellen.

Die Aufgabe wird gelöst durch ein Verfahren gemäß dem unabhängigen Anspruch 1. Ausgestaltungen und Weiterbildungen des Erfindungsgedankens sind Gegenstand abhängiger Ansprüche.

Vorteil der Erfindung ist es, daß kein zusätzlicher Aufwand (Direktzugriffsspeicher, Nur-Lese-Speicher, Laufzeit) im Steuergerät selbst erforderlich ist.

Dies wird insbesondere durch die nachfolgend beschriebenen Maßnahmen erreicht, wobei nur die Aufteilung der technischen Funktionen auf die einzelnen Software-Module bekannt sein muß. Unter Aufteilung technischer Funktionen ist beispielsweise zu verstehen, welche Funktion welche Aktoren, Sensoren und so weiter über welche Ports bedient werden, welche Register (z.B. für Grundeinstellungen des Mikrocontrollers, des Mikroprozessors oder der Steuerung) von welcher Funktion bedient werden, wieviel Laufzeit für die jeweilige Funktionen zur Verfügung stehen soll, wie häufig Interrupts, Preemptionen und Taskaufrufe pro Zeiteinheit auftreten werden und welche Schnittstellen die Funktionen untereinander benutzen.

Das erfindungsgemäße Verfahren zur formalen Überprüfung und zum Test von einzubettenden Software-Modulen und entsprechender eingebetteter Gesamt-Software sieht vor, daß die Eigenschaften der einzelnen Software-Module im Hinblick auf die Abgrenzung zu den anderen Software-Modulen statisch und quasi-dynamisch (das heißt: statische Worst-Case-Betrachtung des dynamischen Verhaltens) formal überprüft werden, sowie daß diese Überprüfung bereits vor dem dynamischen Betrieb des Gerätes durchgeführt wird. Das wiederum hat zur Folge, daß vorteilhafterweise keine zusätzliche Überwachungssoftware im aktiven Betrieb benötigt wird.

Vorteilhaft ist auch, daß die Sicherstellung einer einwandfreien allgemeinen technischen Funktionalität bei Geräten mit eingebetteter Software vor allem in Anwendungen, bei denen Teile der Software nicht als Source-Code vorliegen.

Die formale Überprüfung der Abgrenzung der Software-Module betrifft dabei mindestens (aber nicht ausschließlich) die Überpüfung hinsichtlich verbotener Schreib-Zugriffe auf Speicher (beispielsweise auf Register, Direktzugriffsspeicher-Bereiche, Pins, Pointer etc.) und die Überprüfung hinsichtlich der Begrenzung von Schleifenzählern (d.h., daß keine Endlosschleifen vorhanden sind).

Desweiteren kann überprüft werden, ob verbotene Interrupt-Enable/Disable-Operationen durchgeführt werden.

Im Rahmen der Funktionsprüfung kann auch vorgesehen werden,

  • daß ausgehend von dem Objekt-Code überprüft wird, ob Programmteile direkt aus dem Direktzugriffsspeicher-Bereich ablaufen (also dynamisch änderbar sind);
  • daß anhand des Object-Codes überprüft wird, wie lange maximal ein Interrupt gesperrt wird;
  • daß anhand des Object-Codes überprüft wird, wieviel Zeit ein Software-Modul (Task) maximal zur Abarbeitung benötigt;
  • daß anhand des Object-Codes einer Implementierungsprache wie zum Beispiel OSEK-OIL (insbesondere anhand der Beschreibung der Taskprioritäten, Preemptionen und so weiter) sowie der Angabe der Taskaktivierungsfrequenz das Worstcase-Zeitverhalten der Gesamtheit oder einer Untermenge der Software-Module bestimmt wird; und
  • daß die Stackgröße aus der Worst-Case-Situation bezüglich Interrupts, Preemptionen etc. sowie deren Priorität und Frequenz ermittelt wird.

Die Erfindung wird nachfolgend anhand der in den Figuren der Zeichnung dargestellten Ausführungsbeispiele näher erläutert. Es zeigt:

Figur 1
die Umgebung für eine Anwendung eines erfindungsgemäßen Verfahrens und
Figur 2
das Ablaufdiagramm zu einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens.

Gemäß Figur 1 sollen innerhalb eines Steuergerätes STG zwei Funktionen mittels Software-Tasks ST1 und ST2 (Software-Module) realisiert werden. Die beiden Software-Tasks ST1 und ST2 laufen dabei in einem, in der Zeichnung nicht dargestellten Prozessor ab, der im Rahmen der beiden Software-Tasks ST1 und ST2 auf ein Basis-Register BAR, auf einen Direktzugriffsspeicher RAM und auf Ports POR zugreift. Die Ports POR sind beispielsweise mit einem Sensor SES und einen Aktor ACT unter Zwischenschaltung von Anpaßeinheiten AU1 und AU2 verbunden. Der Sensor SES gibt dabei Informationen an den Prozessor, der diese mittels der Software-Tasks ST1 und ST2 bearbeitet und dementsprechend den Aktor ACT steuert. Pro Zyklus (= beispielsweise der minimale zeitliche Abstand jeweils bestimmter externer Ereignisse wie etwa der obere Totpunkt bei einem Verbrennungsmotor) ist dabei die Laufzeit gemäß einer Laufzeitverteilung LZV auf bestimmte Funktionen verteilt, wobei allgemein gemäß einer bestimmten Resourcen-Verteilung MZL auf Basis-Register BAR, auf einen Direkt-Zugriffs-Speicher RAM und auf die Ports POR zugegriffen wird.

Bekannt ist dabei insbesondere die Aufteilung der technischen Funktionen auf die einzelnen Software-Tasks ST1 und ST2. Unter Aufteilung technischer Funktionen ist hierbei zu verstehen, welche Funktion der Aktor ACT und welche der Sensor SEN über welchen Port POR bedient. Weiterhin ist bekannt, welche Register (beispielsweise für Grundeinstellungen des Prozessors und damit des Steuergerätes STG) von welcher Funktion (Software-Tasks ST1 und ST2) bedient werden dürfen und wieviel Laufzeit (Laufzeitverteilung LZV) für die jeweilige Funktionen (Software-Tasks ST1 und ST2) zur Verfügung stehen soll. Schließlich ist bekannt, wie häufig Interrupts, Preemptionen und Taskaufrufe pro Zeiteinheit auftreten werden und welche Schnittstellen die Funktionen untereinander benutzen (zum Beispiel "Send-Message-Befehle" oder "Receive-Message-Befehle" bei der Maschinensprache OSEK OIL).

Gemäß Figur 2 stehen die einzelnen Funktionen zunächst als Software-Tasks ST1 und ST2 (Software-Module) zur Verfügung. Bevor nun die Funktionen in das Steuergerät STG integriert werden können, muß deren gegenseitige Verträglichkeit und Unabhängigkeit nachgewiesen werden. Dazu werden nun alle gegenseitigen Beeinflußungen bevorzugt wie folgt identifiziert:

In einem ersten Verfahrensschritt 1 wird das zu testende Software-Modul nach Object-Code-Sequenzen (Maschinen-Code-Sequenzen) durchsucht, die einen Schreib-Zugriff auf unzulässige Bereiche darstellen würden.

In einem zweiten Verfahrensschritt 2 werden die Schleifen und ihre Schleifenzähler der zu testenden Software-Module identifiziert. Es wird ermittelt, wie diese Zähler innerhalb der Schleifen manipuliert werden, und ob zum Schleifenanfang diese Zähler eine statische Grenze aufweisen. Damit wird die maximale Anzahl der Schleifendurchläufe ermittelt.

In einem weiteren Verfahrensschritt 3 wird der Object-Code nach Object-Code-Sequenzen (Maschinen-Code-Sequenzen) durchsucht, die Interrupt-Enable/Disable-Operationen manipulieren. Die Interrupt-Disable-Zeiten werden in Form der dazwischenliegenden Object-Code-Zyklen (Maschinen-Code-Zyklen) aus dem Object-Code ermittelt.

Außerdem wird in einem weiteren Verfahrensschritt 4 die maximale Laufzeit einzelner Software-Module (zum Beispiel OSEK-Tasks) in Form von Object-Code-Zyklen (Maschinen-Code-Zyklen)aus dem Object-Code ermittelt.

In einem Verfahrensschritt 5 wird die Häufigkeit der Interrupts, der Taskaufrufe und der Messages per definierter Zeiteinheit (zum Beispiel per Motorumdrehung im Falle einer Motorsteuerung) sowie die Prioritäten der Tasks und der Messages und der zugelassenen Preemptionen dem Werkzeug zur Verfügung gestellt (zum Beispiel per Eingabe). Damit lassen sich beispielsweise Verfahren zur Ermittlung der Software Runtime und Message Latency Time anwenden.

Parallel wird aus diesen Informationen die maximale Interrupt- und Preemptions-Tiefe ermittelt, um damit die Größe des benötigten Stacks zu ermitteln (Verfahrensschritt 6).

Nach Durchlauf dieses Verfahrens steht fest, ob in den nicht offengelegten Teilen der Software-Module eine Beeinflußung anderer Software-Module stattfindet und ob ausreichend Resourcen (RAM, ROM, Laufzeit) dem jeweiligen Software-Modul zur Verfügung stehen.

Damit ist automatisch sichergestellt, daß die mit dieser Software realisierten technischen Funktionen sich ausschließlich an den offengelegten Schnittstellen gegenseitig beeinflussen, daß sie also untereinander verträglich sind. Zusätzlicher Überwachungsaufwand wird nicht benötigt. Die Überprüfung erfolgt dabei bevorzugt durch eine weitere Prozessoranordnung unter ebenfalls Software-Steuerung.


Anspruch[de]
  1. Verfahren zum Testen der Kooperationsfähigkeit von jeweils bestimmte Funktionen in einem Gerät ausführenden Software-Modulen anhand von in den ausführenden Software-Modulen enthaltenen Maschinen-Code-Sequenzen mit den Verfahrensschritten:
    • a) Durchsuchen der Software-Module nach Maschinen-Code-Sequenzen, die einen Schreib-Zugriff auf unerlaubte Bereiche beinhalten,
    • b) Ermitteln jeweils der maximalen Anzahl von Schleifendurchläufen je Schleife und Feststellen, ob die maximale Anzahl von Schleifendurchläufen begrenzt ist, und
    wobei bei Einhaltung die Kooperationsfähigkeit gegeben und bei Nichteinhaltung der Referenzwerte die Kooperationsfähigkeit nicht gegeben ist.
  2. Verfahren nach Anspruch 1 mit dem zusätzlichen Verfahrensschritt:

    c) Durchsuchen der Software-Module nach Sequenzen, bei denen unerlaubte Interrupt-Enable/Disable-Operationen durchgeführt werden, wobei bei Einhaltung der Referenzwerte die Kooperationsfähigkeit gegeben und bei Nichteinhaltung der Referenzwerte die Kooperationsfähigkeit nicht gegeben ist.
  3. Verfahren nach einem der vorherigen Ansprüche mit dem zusätzlichen Verfahrensschritt:

    d) Ermitteln der Interrupt-Disable-Zeiten und Vergleich der Interrupt-Disable-Zeiten mit jeweils entsprechenden Referenzwerten, wobei bei Einhaltung der Referenzwerte die Kooperationsfähigkeit gegeben und bei Nichteinhaltung der Referenzwerte die Kooperationsfähigkeit nicht gegeben ist.
  4. Verfahren nach einem der vorherigen Ansprüche mit dem zusätzlichen Verfahrensschritt:

    e) Ermitteln der maximalen Laufzeit der einzelnen ausführenden Software-Module und Vergleich der maximalen Laufzeit der einzelnen ausführenden Software-Module mit jeweils entsprechenden Referenzwerten, wobei bei Einhaltung der Referenzwerte die Kooperationsfähigkeit gegeben und bei Nichteinhaltung der Referenzwerte die Kooperationsfähigkeit nicht gegeben ist.
  5. Verfahren nach einem der vorherigen Ansprüche mit dem zusätzlichen Verfahrensschritt:

    f) Ermitteln der Gesamtlaufzeit und der Nachrichten-Latenz-Zeit und Vergleich der Gesamtlaufzeit und der Nachrichten-Latenz-Zeit mit jeweils entsprechenden Referenzwerten, wobei bei Einhaltung der Referenzwerte die Kooperationsfähigkeit gegeben und bei Nichteinhaltung der Referenzwerte die Kooperationsfähigkeit nicht gegeben ist.
  6. Verfahren nach einem der vorherigen Ansprüche mit dem zusätzlichen Verfahrensschritt:

    g) Ermitteln der maximalen Interrupt- und Preemptionstiefe und Vergleich der maximalen Interrupt- und Preemptionstiefe mit jeweils entsprechenden Referenzwerten, wobei bei Einhaltung der Referenzwerte die Kooperationsfähigkeit gegeben und bei Nichteinhaltung der Referenzwerte die Kooperationsfähigkeit nicht gegeben ist.
  7. Verfahren nach Anspruch 2, bei dem die Anzahl der Schleifendurchläufe ermittelt wird durch:
    • Identifizieren der Schleifen und ihrer zugehörigen Schleifenzähler,
    • Feststellen, auf welche Weise die Zähler manipuliert werden und
    • Feststellen, ob am Schleifenanfang die Zähler jeweils eine statische Grenze aufweisen.
  8. Verfahren nach Anspruch 3, bei dem die Interrupt-Disable-Zeiten ermittelt werden durch:
    • Durchsuchen der Software-Module nach Interrupt-Enable/Disable-Code manipulierenden Maschinen-Code-Sequenzen und
    • Bestimmen der zwischen jeweils diesen Maschinen-Code-Sequenzen liegenden Zeiten.
  9. Verfahren nach Anspruch 4, bei dem die maximale Laufzeit der einzelnen ausführenden Software-Module ermittelt wird anhand der Anzahl von Maschinen-Zyklen.
  10. Verfahren nach Anspruch 5, bei dem Gesamtlaufzeit und Nachrichten-Latenz-Zeit ermittelt werden durch:
    • Bestimmen der Häufigkeit der Interrupts, der Taskaufrufe und der Nachrichten per definierter Zeiteinheit und
    • Feststellen der Prioritäten der Tasks, der Messages und der zugelassenen Preemptionen.
  11. Verfahren nach Anspruch 6, bei dem die maximale Interrupt- und Preemptionstiefe ermittelt wird durch:
    • Bestimmen der Häufigkeit der Interrupts, der Taskaufrufe und der Nachrichten per definierter Zeiteinheit und
    • Feststellen der Prioritäten der Tasks, der Messages und der zugelassenen Preemptionen.
  12. Verfahren nach Anspruch 11, bei dem die Größe eines benötigten Stacks aus der maximalen Interrupt- und Preemptionstiefe ermittelt wird.
  13. Verfahren nach einem der vorherigen Ansprüche, bei dem die Software-Module dahingehend untersucht werden, ob Maschinen-Code-Sequenzen direkt aus einem Direkt-Zugriffs-Speicher heraus ablaufen.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com