T2A1:

a)

Die Core SCCharts bestehen nur aus folgenden Konstrukten: Einfache und Hierarchische States, Regionen, Immediate und normale Transitionen, normale Terminierung, Variablen (nur primitive Typen) und Interface Declarations. Die Core SCCharts enthalten bereits alle notwendigen Konstrukte, allerdings sind sie oft schwer zu lesen und erlauben nicht so ein hohes Abstraktionsniveau wie die Extended SCCharts. Extended SCCharts enthalten neben den Konstrukten der Core SCCharts zusätzliche Konstrukte, die alle in Core SCCharts umgewandelt werden können, allerdings erhöhen diese zusätzlichen Konstrukte die Lesbarkeit, erlauben ein höheres Abstraktionsniveau und sorgen folglich für ein angenehmeres Arbeiten. Die Zusätzlichen Konstrukte für Extended SCCharts sind: Connectors (für Auswahl), Strong und Weak Aborts, History Transitionen, Suspension, Entry, During und Exit Actions, Signale, Pre, Count Delay, Conditional Termination, Initialisierung, komplexe Final States und Deferred Trasitionen. Dadurch, dass sich alle Extended SCCharts in Core SCCharts umwandeln lassen, werden formale Analysen und Verifikationen einfacher.

b)

Durch die Normalisierung sinkt die Komplexität der Transitionen. Es werden nur bestimmte primitive Pattern verwendet, welche den Kompiliervorgang (sowohl für Software als auch für Hardware) einfacher machen sollen. 

c)

Als Basic Blocks bezeichnet man eine Menge von SCG-Knoten, die auf jeden Fall im selben Thread direkt hintereinander ausgeführt werden können. Basic Blocks dürfen nur eine eingehende Transition besitzen und der Graph darf sich innerhalb eines Basic Blocks nicht verzweigen. Allerdings ist es möglich, dass beim Zugriff auf globale Variablen innerhalb der Basic Block während der Ausführung Unterbrechungen entstehen.

d)

Neben den Eingabewerten und der daraus folgenden Auswahl an Verzweigungen, sind vor allem nebenläufige Zugriffe auf geteilte Speicherbereiche und die Makroticks entscheident für die Schedule.

T2A3:

T2A3.sct

T2A4:

Das einzige Konstrukt, das nicht zu den Core SCCharts gehört ist das Count Delay "5 second". Ich hab das jetzt einfach auseinander genommen, indem ich einfach jetzt 5 einzelne Transitionen und 4 neue States habe, die beim auftreten von "second" nacheinander durchlaufen werden, wobei die letzte Transition zusätzlich den Effekt "track=60" bewirkt. 

Core SCChart:

T2A4-core.bmp

Normalisiertes SCChart:

T2A4-norm.bmp

SCG (vorher nochmal mit der Normalisierung von Kieker nachbearbeitet, sonst ging das irgendwie nicht):

T2A4-scg.bmp

Es ist möglich, dass nebenläufig im selben Tick track=60 und track=20;track=0 oder aber track=60 und track=20 ausgeführt wird. Es entsteht also ein write-write-Konflikt und der Wert für track ist nicht deterministisch.

T2A5:

Die Region go und somit die Nebenläufigkeit wurde komplett aus dem SCChart entfernt. Waiting ist kein Initial State mehr, stattdessen gibt es einen neuen Initial State Init, von dem aus eine Transition mit dem Effekt track=60 in den State waiting führt.

Korrigierter Controller:

T2A5-corrected.bmp

Neuer SCG:

T2A5-scg.bmp

Resultierender C-Code:

T2A5-corrected.normalized.c


Tags: