Home Bad Smells in Steuerungssoftware für automatisierte Produktionssysteme
Article Open Access

Bad Smells in Steuerungssoftware für automatisierte Produktionssysteme

  • Lisa Sonnleithner

    Lisa Sonnleithner ist wissenschaftliche Mitarbeiterin im Christian Doppler Labor VaSiCS am LIT Cyber-Physical Systems Lab der Johannes Kepler Universität Linz, Österreich. Ihre Forschungsinteressen umfassen unter anderem Software-Metriken und Software-Architekturen von Steuerungsanwendungen sowie deren Visualisierung.

    EMAIL logo
    , Antonio Gutiérrez

    Antonio Gutierrez ist Post-Doc im Christian Doppler Labor VaSiCS am LIT Cyber-Physical Systems Lab der Johannes Kepler Universität Linz, Österreich. Seine Forschungsinteressen umfassen unter anderem Softwarevariabilität, serviceorientiertes Computing und Geschäftsprozesse.

    , Rick Rabiser

    Rick Rabiser ist Universitätsprofessor und Leiter des LIT Cyber-Physical Systems Lab und des Christian Doppler Labors VaSiCS an der Johannes Kepler Universität Linz, Österreich. Seine Hauptforschungsinteressen sind Variantenmanagement, Softwareproduktlinien, Softwarewartung und -evolution, Automatisiertes Software Engineering, Anforderungsmonitoring und Usability von Software Engineering Werkzeugen.

    and Alois Zoitl

    Alois Zoitl ist Universitätsprofessor und Stv.-Leiter des LIT Cyber-Physical System Lab und auch Leiter des Christian Doppler Labors VaSiCS an der Johannes Kepler Universität Linz, Österreich. Seine Forschungsthemen beinhalten adaptive Produktionssysteme, verteilte Steuerungsarchitekturen, dynamische Rekonfiguration von Steuerungsprogrammen sowie Softwareentwicklungs-und Software-Qualitätssicherungsmethoden für die Industrielle Automatisierungstechnik.

Published/Copyright: June 7, 2023

Zusammenfassung

Bad Smells sind suboptimale Strukturen oder Muster in Software, die zu einer Verschlechterung der Softwarequalität führen können, da sie unter anderem Wartungsprobleme verursachen und die Verständlichkeit erschweren können. Um das Auftreten dieser Probleme zu vermeiden, ist es deshalb wichtig, Bad Smells in Software erkennen und beheben zu können. Im Software Engineering ist das Thema Bad Smells bereits gut erforscht. Für IEC 61499-basierte Steuerungsoftware, die in automatisierten Produktionssystemen verwendet wird, gibt es jedoch erst wenige Arbeiten zu diesem wichtigen Thema.

Abstract

Bad Smells are suboptimal structures or patterns in software. They can decrease software quality, as they can cause maintenance problems and make the software difficult to understand. To avoid the occurrence of these problems, it is therefore important to recognize and correct Bad Smells in software. In software engineering, the topic of Bad Smells is already well researched and there are works that deal with the definition and automatic detection of different Smells. However, for IEC 61499-based control software used in automated production systems, there is only limited work on this important topic.

1 Einleitung

Moderne automatisierte Produktionssysteme sind Cyber-Physische Produktionssysteme (CPPSs), Systeme in denen Hardware-und Softwarekomponenten eng miteinander und mit ihrer Umgebung interagieren. In diesen Systemen steigt sowohl der Softwareanteil am Gesamtsystem als auch die Komplexität stetig [1], [2], [3]. Um in der Zukunft wettbewerbsfähig zu bleiben, ist daher eine qualitativ hochwertige Software, die leicht verständlich und gut wartbar ist, wichtiger denn je. Nur saubere und gut strukturierte Softwarearchitekturen ermöglichen eine hohe Qualität automatisierter Produktionssysteme [4]. Die Qualität der Software kann dabei einerseits durch die gezielte Verwendung passender Entwurfsmuster und andererseits durch die Vermeidung oder Reduktion von schlechtem Code erhöht werden. In dieser Arbeit beschäftigen wir uns mit letzterem.

Sogenannte Bad Smells sind Strukturen [5] oder Anti-Patterns [6] in Software, die vermieden werden sollten. Es ist wichtig anzumerken, dass Bad Smells und Anti-Patterns keine Fehler in der Software sein müssen und dass Software, die diese beinhaltet, korrekt sein kann. Jedoch können sich Bad Smells negativ auf die Softwarequalität auswirken, da sie die Verständlichkeit, die Wartbarkeit und die Erweiterbarkeit eines Softwaresystems behindern können [7, 8]. Aufgrund der Wichtigkeit dieses Themas unterstützen viele Software Engineering Programmiertools bereits eine automatische Detektion von Smells in unterschiedlichem Ausmaß. Leider hinken sowohl die Tools als auch die Forschung zu Smells im Bereich der CPPSs hinterher [9]. Um diese Lücke zu schließen, haben wir uns intensiv mit dem Thema Bad Smells in IEC 61499-basierter Steuerungssoftware für automatisierte Produktionssysteme beschäftigt und bereits einige Publikationen dazu veröffentlicht [10], [11], [12].

In dieser Arbeit geben wir einerseits einen allgemeinen Überblick über das Thema Bad Smells in Steuerungssoftware als auch einen Überblick über unsere bisherigen Ergebnisse und zukünftigen Schritte zu diesem Thema, speziell für den Standard IEC 61499 [13] für verteilte Steuerungssoftware. Darüber hinaus verknüpfen wir unsere bisherigen Ergebnisse mit einem neuartigen Visualisierungskonzept für IEC 61499 Software und zeigen die Vorteile auf, die sich dadurch ergeben. Ein Hauptgrund für den Fokus auf IEC 61499 ist, dass Gsellmann et al. [14] mittels Softwaremetriken gezeigt haben, dass für gleiche Steuerungsprogramme in IEC 61131-3 und in IEC 61499, bei IEC 61499 das Potential für weniger Aufwand und bessere Verständlichkeit besteht. Aufgrund dieses Potentials ist es ein wichtiger Schritt, die Forschungslücke, die für IEC 61499 im Vergleich zu IEC 61131-3 bzw. zu allgemeinen Programmiersprachen besteht, zu schließen.

Der Aufbau der Arbeit ist wie folgt: Wir geben zunächst in Kapitel 2 eine kurze Einführung in IEC 61499. In Kapitel 3 gehen wir auf bestehende Literatur zum Thema Bad Smells in Steuerungssoftware ein. Im nächsten Kapitel fassen wir den Bad Smells Katalog zusammen, den wir in [11] vorgestellt haben. Anschließend gehen wir auf die durch Überprüfung von vordefinierten Regeln detektierbaren Smells des Katalogs ein und erweitern unsere bisherige Arbeit um eine detaillierte Beschreibung dieser Smells. In Kapitel 6 fassen wir unsere Arbeit zur Detektion des Smells Feature Envy zusammen [10]. Dieser Smell deutet auf eine suboptimale Modularisierung des Systems hin. Im nächsten Kapitel fassen wir unsere Arbeit zur KI-basierten Detektion von Codeklonen zusammen [12]. Anschließend beschreiben wir, wie unser Visualisierungskonzept für sehr große Steuerungsprogramme [15] erweitert werden kann, um detektierte Smells besser Entwickler*innen zugänglich zu machen. Abschließend diskutieren wir unsere zukünftigen Forschungsziele zu diesem Thema.

2 IEC 61499 Grundlagen

In diesem Kapitel gehen wir auf die Grundlagen von IEC 61499 ein, die zum Verständnis der nachfolgenden Kapitel wichtig sind. Details, die darüber hinausgehen, werden nicht betrachtet. Daher sei an dieser Stelle auch auf den Standard [13] verwiesen.

IEC 61499 ist eine domänenspezifische Modellierungssprache, die für verteilte Steuerungssoftware in CPPSs verwendet wird. Eine IEC 61499-Anwendung ist ein Netzwerk von Funktionsbausteinen. Jeder Funktionsbaustein (FB) hat eine definierte Schnittstelle, die aus mehreren eingehenden und ausgehenden Event-und Datenverbindungen besteht. Ein Eingangsevent löst eine bestimmte Prozedur innerhalb des FBs aus. Nach Abschluss kann ein Ausgangsevent ausgelöst werden. Zusätzlich kann jeder Event mit Datenverbindungen verknüpft sein. Wenn eine Datenverbindung mit einem Event verknüpft ist, werden die Daten aktualisiert, sobald der Event auftritt.

Was sich hinter der Schnittstelle des FBs verbirgt, hängt von der Art des FBs ab. Ein Simple Funktionsbaustein (SFB) ist ein FB, der einen Algorithmus in einer beliebigen Programmiersprache enthält. Auch wenn die Sprache durch IEC 61499 nicht festlegt ist, hat sich IEC 61131-3 Strukturierter Text hierfür etabliert.

Ein Basisfunktionsbaustein (BFB) ist ein FB, der einen Zustandsautomaten enthält, das sogenannte Execution Control Chart (ECC). Das ECC besteht aus Zuständen, die über Transitionen verbunden sind. Die Transitionen verfügen über eine Bedingung, die dazu führt, dass ein Wechsel zu einem anderen Zustand nur dann möglich ist, wenn diese Bedingung erfüllt ist. Die Bedingung kann dabei aus einer Eventbedingung, einer Booleschen Bedingung, einer Kombination oder keiner Bedingung bestehen. Eine Eventbedingung ist immer dann wahr, wenn der entsprechende Eingangsevent auftritt. In der Booleschen Bedingung können Eingangsvariablen und interne Variablen des FBs verwendet werden. Die kombinierte Bedingung ist wahr, wenn beide Bedingungen gleichzeitig erfüllt sind und die Variante ohne Bedingung ist immer wahr. Darüber hinaus wird Transitionen auch eine Priorität zugeordnet, wenn ein Zustand über mehr als eine Ausgangstransition verfügt. Die Priorität legt fest, in welcher Reihenfolge die einzelnen Transitionen überprüft werden. Wenn die Bedingung einer Transition wahr ist, werden folglich die Transitionen mit niedrigerer Priorität nicht mehr überprüft. In Abbildung 1 ist ein ECC mit den verschiedenen Arten von Transitionen dargestellt.

Abbildung 1: 
ECC mit mehreren Zuständen und Transitionen mit unterschiedlichen Prioritäten und Bedingungen.
Abbildung 1:

ECC mit mehreren Zuständen und Transitionen mit unterschiedlichen Prioritäten und Bedingungen.

Zusätzlich gibt es noch Zusammengesetzte Funktionsbausteine (ZFBe) und Unteranwendungen, die jeweils ein Funktionsbaustein Netzwerk (FBN) kapseln. Diese Bausteine bieten also eine Möglichkeit zur Modularisierung und Wiederverwendung von IEC 61499 Software.

3 Verwandte Arbeiten

Statische Code Analyse von Steuerungssoftware für automatisierte Produktionssysteme fokussiert stark darauf, frühzeitig Fehler in den Programmen zu finden (z.B. [16, 17]). In dieser Arbeit beschäftigen wir uns mit der Detektion von Bad Smells und Codeklonen, die zu schlechter Wartbarkeit führen können.

3.1 Bad Smells in IEC 61499-basierter Steuerungssoftware

Im Bereich der CPPSs gibt es für Steuerungssoftware in IEC 61499 bisher nur wenig Literatur zu Bad Smells. Codeklone werden von Vogel-Heuser et al. [18] als eine der Herausforderungen in der Software von automatisierten Produktionssystemen erwähnt. Codeklone sind duplizierte Teile des Codes. Sie sind oft das Ergebnis von Copy-Paste-Programmierung oder von Wiederverwendung, basierend auf dem Kopieren von bestehendem Code (im Gegensatz zur Verwendung eines Softwareproduktlinienansatzes [19]). Copy-Paste-Programmierung ist immer noch die Haupttechnik zur Erstellung neuer Softwarevarianten in dieser Domäne.

Patil et al. [20] identifizierten einige Bad Smells in IEC 61499 Software, die sich auf die Größe eines Softwareteils beziehen. Beispiele dafür wären zu viele Zustände oder Übergänge in einem ECC oder ein FB mit zu vielen Schnittstellenelementen. Ein weiterer beschriebener Smell kann als Codeklon klassifiziert werden (sich wiederholende Algorithmen und Muster in ECCs).

Hagge und Wagner [21] beschrieben terminale ECC-Zustände (d.h. Zustände, die nicht mehr verlassen werden können), tote ECC-Transitionen (d.h. Transitionen, die nie ausgewertet werden, wodurch der verbundene Zustand möglicherweise unerreichbar wird) und absorbierbare Eingangsevents (d.h. Events, die immer ignoriert werden).

Zu konkreten Detektionsmethoden für Smells in IEC 61499 konnten wir bisher keine Arbeiten anderer Forschungsgruppen finden.

3.2 Detektion von Codeklonen

Der Umfang üblicher Steuerungsprojekte erschwert es, identische Komponenten innerhalb des Projekts zu erkennen. Soweit wir wissen, gibt es keine Vorschläge zur automatischen Identifizierung von Varianten ähnlicher Komponenten für CPPSs. Für textuelle Softwaresprachen gibt es Ansätze zur Klonerkennung unter Berücksichtigung bestimmter Metriken [22, 23]. In der SPS-Softwareentwicklung bewerten Thaller et al. [24] die Ergebnisse der Erweiterung eines Klonerkennungswerkzeugs mit C++ und IEC 61131-3 Structured Text (ST) für die SPS-Programmierung. Sie bestätigen den Bedarf an dieser Art von Werkzeug, um die Wartung von Code zu erleichtern. Weiters zeigen sie die Herausforderung der Anpassung von Werkzeugen für diesen Zweck auf. Von Rosiak et al. [25] wird ein erweiterter Ansatz vorgeschlagen, um Klone in verschiedenen Sprachen (ST, LD oder CFC) zu finden, die einen FB in IEC 61131-3 implementieren können. Die Ergebnisse basieren auf der Mutationsgenerierung mit einem kleinen Beispiel und es handelt sich um einen 1:1-Vergleich, so dass zu erwarten ist, dass die Zeitkosten exponentiell zur Anzahl der Systemartefakte sind. Jnanamurthy et al. [26] schlagen einen originellen Mechanismus zum Auffinden semantischer Klone vor (Klone vom Typ 4 gemäß der von Roy und Cordy [27] vorgeschlagenen Klassifizierung). Dieser Mechanismus basiert auf der Analyse der Auswirkungen von Eingängen und Ausgängen und beschränkt sich auf den Anwendungsbereich von IEC 61131-3 ST.

Bei visuellen Programmiersprachen, wie IEC 61499, müssen wir jedoch auch mit grafischen Konstrukten umgehen, die nicht leicht vergleichbar sind. Die Verarbeitung exakter Distanzen wie Graph Edit Distance [28] oder DeltaCon [29] ist rechenintensiv.

4 Bad Smells in IEC 61499 Software

In Sonnleithner et al. [11] haben wir einen ersten Schritt in Richtung der Definition von Bad Smells in IEC 61499 Software gemacht. Hierbei haben wir einen Katalog mit insgesamt 17 Bad Smells in IEC 61499 vorgestellt (siehe Tabelle 1). In den Katalog sind die Smells von Hagge und Wagner [21], die wir in Kapitel 3 beschrieben haben, eingegangen. Darüber hinaus haben wir die von Fowler und Beck [30] vorgestellten Bad Smells und die von Brown et al. [6] beschriebenen Anti-Patterns auf ihre Übertragbarkeit auf IEC 61499 untersucht und gegebenenfalls ebenso hinzugefügt. Als übertragbar wurden dabei jene Smells und Anti-Patterns definiert, die sich auf Sprachmerkmale beziehen, die von der IEC 61499 unterstützt werden. Deshalb wurden beispielsweise Smells, die sich auf Vererbung beziehen, nicht übernommen. Darüber hinaus wurden IEC 61499 spezifische Smells identifiziert, die noch nicht in verwandten Arbeiten beschrieben wurden.

Tabelle 1:

Katalog mit IEC 61499 Bad Smells, den wir in Sonnleithner et al. [11] vorgestellt haben.

Smell Name Level Kurzbeschreibung Ref.
Codeklon ALL Gleicher oder ähnlicher Code, der an mehreren Stellen auftritt. [5]
Langer Algorithmus FB Ein zu langer oder zu komplizierter Algorithmus. [5]
Größer Typ FB Ein zu großer oder zu komplizierter Funktionsbausteintyp. [5]
Große Schnittstelle FB Eine Schnittstelle mit zu vielen Elementen. [5]
Divergent change FB Eine Änderung, die zu vielen Änderungen im gleichen Typ führt. [5]
Shotgun surgery FB Eine Änderung, die zu vielen Änderungen in unterschiedlichen Typen führt. [5]
Feature Envy ALL Eine IEC 61499 Komponente, die zu stark mit einer anderen Komponente gekoppelt ist. [5]
Datenklumpen FBN Eine Gruppe von Schnittstellenelementen, die immer gemeinsam auftreten. [5]
Faules Element ALL Eine IEC 61499 Komponente, die keinen Zweck erfüllt. [5]
Toter Zustand ECC Ein Zustand im ECC, zu dem kein möglicher Pfad gefunden werden kann. [6, 21]
Tote Transition ECC Transition die nie ausgeführt werden kann.
Toter FB FB Ein FB ohne Eingangsevents. [6]
Terminaler Zustand ECC Ein Zustand im ECC, der keine Ausgangstransitionen hat. [21]
Unbenutzter Event FB Event, das im FB nicht verwendet wird.
Tote Daten FB Daten, die nicht verbunden oder konfiguriert sind.
Veränderliche Daten ALG Schreibvorgänge im Algorithmus auf Eingangsdaten. [5]
Toter Event FB Ein Event, das zwar benützt wird, aber immer ignoriert wird. [21]

Dieser Katalog soll einerseits als Referenz für Entwickler*innen dienen, um die Codequalität zu verbessern, und andererseits als Ausgangspunkt für zukünftige Forschung zu diesem Thema. Neben dem Wissen darüber, welche Muster in der Software vermieden werden sollten, also der Definition von Bad Smells, ist es ebenso wichtig, die Smells auch automatisch detektieren zu können. Dafür braucht es einerseits Detektionsmethoden und andererseits eine konkrete Implementierung dieser Detektionsmethoden in Entwicklungswerkzeugen. In den folgenden Kapiteln gehen wir auf unsere Arbeit zu unterschiedlichen automatisierten Detektionsmethoden von Smells ein.

5 Regelbasierte Detektion

Einige Bad Smells, die in IEC 61499 Software auftreten, können über vordefinierte Regeln und deren Überprüfung detektiert werden. Diese Regeln werden ähnlich zu einer Booleschen Bedingung formuliert und können somit entweder erfüllt oder verletzt sein. Dadurch sind diese Smells besonders einfach detektierbar und die Qualität der Software kann mit geringem Aufwand verbessert werden. Diese Smells haben wir in Sonnleithner et al. [11] bereits grundlegend vorgestellt. Nachfolgend geben wir eine erweiterte Beschreibung aller mittels regelbasierter Detektion aufspürbaren Smells dieses Katalogs. In 4diac IDE, eine open-source Entwicklungsumgebung für IEC 61499 Software, die Teil des Eclipse 4diac™ Projekts [31] ist, wurde die regelbasierte Detektion einiger dieser Smells mittels OCL bereits integriert [32] und kann damit einfach in beliebigen IEC 61499 Szenarien eingesetzt und evaluiert werden.

Toter Zustand: Ein Zustand im ECC eines FBs ist ein toter Zustand, wenn er keine eingehenden Transitionen hat oder wenn kein Pfad, beginnend beim Startzustand über die gerichteten Transitionen zu diesem Zustand führt.

Tote Transition: Eine Transition im ECC eines FBs ist eine tote Transition, wenn es nicht vorkommen kann, dass sie überprüft wird. Dies ist der Fall, wenn eine andere Transition, die beim gleichen Zustand beginnt, eine höhere Priorität und keinen Bedingungsausdruck hat. Sobald ein Zustand also eine Transition hat, die keinen Bedingungsausdruck hat, werden andere Transitionen mit niedrigerer Priorität nicht mehr überprüft und sind somit tot. Eine Transition ohne Bedingungsausdruck sollte somit immer die niedrigste Priorität haben. Eine tote Transition kann in weiterer Folge auch zu einem toten Zustand führen.

Toter FB: Ein FB wird als toter FB bezeichnet, wenn er keine eingehenden Eventverbindungen hat und somit nicht aufgerufen wird. Hier gibt es jedoch Ausnahmen. IEC 61499 definiert Dienstschnittstellen-Funktionsbausteine (DSFBe), welche unterlagerte Dienste von Steuerungsgeräten kapseln. Diese Dienste können auch Benachrichtigungen an Anwendungen senden und benötigen daher nicht immer Eingangsevents.

Terminaler Zustand: Wenn ein Zustand im ECC eines FBs zwar erreicht werden kann, aber selbst über keine ausgehenden Transitionen verfügt, spricht man von einem terminalen Zustand. Sobald ein terminaler Zustand betreten wird, gibt es keinen Rückweg mehr.

Unbenutzter Event: Von einem unbenutzten Event spricht man, wenn ein Eingangsevent innerhalb des FBs nicht verwendet wird bzw. wenn ein Ausgangsevent nicht im FB ausgelöst wird. Bei einem BFB wäre das der Fall, wenn ein Eingangsevent in keiner Transition vorkommt bzw. wenn ein Ausgangsevent in keiner Aktion vorkommt.

Tote Daten: Dieser Smell kann an verschiedenen Stellen auftreten. Einerseits kann man von toten Daten sprechen, wenn Dateneingangs-bzw. -ausgangsvariablen innerhalb des FBs nicht verwendet werden. In diesem Fall tritt der Smell für den Typ des FBs auf. Andererseits kann man von toten Daten sprechen, wenn innerhalb der Anwendung zwar der Event, der mit den Daten verbunden ist, verwendet wird, aber die Daten nicht verbunden bzw. nicht konfiguriert wurden. In diesem Fall wäre es ein Smell der Instanz des FBs.

Veränderliche Daten: Dieser Smell tritt auf, wenn im Algorithmus innerhalb eines FBs auf einen Dateneingang geschrieben wird. In der Folge kann das zu unvorhergesehenem Verhalten führen, wenn beispielsweise ein anderer Algorithmus ebenfalls den Wert dieses Dateneingangs benötigt und nicht mehr den korrekten Wert zur Verfügung hat.

Toter Event: Ein Event ist tot, wenn er zwar benützt wird, aber immer ignoriert wird. Dies ist in BFBen der Fall, wenn der entsprechende Event nur in toten Transitionen vorkommt.

Endlosschleife: In IEC 61499 Software kann es zu unerwünschten Endlosschleifen kommen, wenn eine Transition im ECC ohne Bedingung (also eine Transition, deren Bedingung immer wahr ist) wieder im gleichen Zustand endet. Darüber hinaus können auch in FBNen ungewollte Endlosschleifen auftreten. Mit den aktuellen Mitteln sind diese Endlosschleifen allerdings nicht mehr durch reine Regelüberprüfung detektierbar, sondern bedürfen einer genaueren Analyse des Verhaltens der FBe. Mithilfe von Verhaltensmodellen [33] könnte dieser Smell in der Zukunft auch in FBNen mit Regeln detektiert werden.

6 Metrikbasierte Detektion von Feature Envy

Feature Envy ist ein Smell, der auf eine schlechte Modularisierung der Software hindeutet. Dieser Smell tritt auf, wenn Komponenten eines Moduls mehr mit Komponenten anderer Module interagieren, als mit solchen des eigenen Moduls. Im Rahmen unserer Industriekooperation haben wir gelernt, dass Modularisierung ein essenzielles Thema für die Entwicklung und Wartung von Steuerungssoftware darstellt. Insbesondere in Anbetracht ihres langen Lebenszyklus benötigen anpassungsfähige und flexible Produktionssysteme modulare und wiederverwendbare Software [34]. Deshalb gebührt dem Smell Feature Envy besonderes Augenmerk.

In Sonnleithner et al. [10] haben wir bestehende Ansätze diskutiert, die in anderen Bereichen verwendet werden, um Feature Envy aufzuspüren, und sie anschließend auf IEC 61499-basierter Steuerungssoftware angewendet.

Zur Detektion von Feature Envy innerhalb von FBNen in IEC 61499 Software wurden zwei Ansätze genauer untersucht. Der erste ist der von Nongpong [35] vorgestellte Feature Envy Factor. Der zweite Ansatz basiert auf einem von Simon et al. [36] entwickelten Distanzmaß.

6.1 Feature Envy Factor

Für ein gegebenes Objekt obj und eine gegebene Methode mtd definiert Nongpong [35] den Feature Envy Factor FEF als

(1) F E F ( o b j , m t d ) = w m n + ( 1 w ) ( 1 x m )

mit der Anzahl der Aufrufe m innerhalb der Methode zum Objekt, der Gesamtanzahl aller Aufrufe n in der Methode und den Gewichten w und x.

Die erste Komponente der Gleichung bestimmt, wie sehr sich die Methode für die Daten im Objekt interessiert, d.h. das Verhältnis der Aufrufe von der Methode zum Objekt zu den gesamten Methodenaufrufen in der Methode. Der zweite Teil der Gleichung führt dazu, dass Methoden je nach der Anzahl ihrer Aufrufe unterschiedlich gewichtet werden. Mit w können die beiden Teile der Gleichung gewichtet werden.

Legt man einen ZFB bzw. eine Unteranwendung als das Objekt und FBe innerhalb eines ZFBs bzw. einer Unteranwendung als Methode fest, kann diese Gleichung auf IEC 61499 FBNe angewandt werden.

6.2 Distanzmaß

Simon et al. [36] definieren die Ähnlichkeit sim(x, y) zwischen zwei Einheiten x und y in Bezug auf eine endliche Untermenge B aller Eigenschaften P i dieser Einheiten als

(2) s i m ( x , y ) = | ( p ( x ) p ( y ) ) B | | ( p ( x ) p ( y ) ) B |

mit p(x) = {P i |x besitzt P i } [10]. Mit der Ähnlichkeit sim(x, y) definieren Simon et al. [36] die Distanz dist(x, y) zwischen zwei Einheiten x und y als

(3) d i s t ( x , y ) = 1 s i m ( x , y ) .

Die Definition von Einheiten und Eigenschaften ist erforderlich, um dieses Konzept auf IEC 61499 anzuwenden. Da unser Ziel darin besteht, Feature Envy in FBNen zu erkennen ist, haben wir FBe als Einheiten definiert. Da sich Feature Envy mit den Interaktionen zwischen Softwarekomponenten beschäftigt, ist es naheliegend, die Verbindungen zwischen FBen als die betrachteten Eigenschaften zu definieren. Bei den Verbindungen wird grundlegend zwischen Event-und Datenverbindungen unterschieden, deshalb haben wir vorgeschlagen bei der Distanz zwischen FBen zwischen der Distanz bezüglich des Ablaufs, der durch die Eventverbindungen festgelegt wird, und der Distanz bezüglich der ausgetauschten Information, die durch die Datenverbindungen festgelegt wird, zu unterscheiden. Für die Distanz bezüglich des Ablaufs zwischen zwei FBen FB 1 und FB 2 ergibt sich somit folgende Formel:

(4) d i s t A ( F B 1 , F B 2 ) = 1 E S E A .

Dabei sind E S die geteilten Eventverbindungen zwischen den betrachteten FBen und E A alle Verbindungen dieser FBe. Für die Distanz bezüglich des Datenaustauschs ergibt sich die Formel analog.

6.3 Diskussion

Wir haben beide Ansätze auf ein akademisches Beispiel angewandt und die Ergebnisse ausgewertet. Das Beispiel bestand aus zwei Unteranwendungen, wobei ein FB in der falschen Unteranwendung platziert wurde. Durch die Berechnung des Feature Envy Factors mit Gleichung (1) für alle FBe des Beispiels, ergaben sich für den deplatzierten FB höhere Werte für die Unteranwendung, in der er nicht platziert war, als für die eigene. Bei der Betrachtung des Problems mit dem Distanzmaß aus Gleichung (4), ergab die Berechnung eine Möglichkeit zur Reduktion der mittleren Distanz für beide Unteranwendungen, wenn der FB verschoben würde. Somit konnten beide Ansätze diesen FB erfolgreich als von Feature Envy betroffenen FB detektieren. Insbesondere scheinen die Metriken vielversprechend, da sie nicht nur Feature Envy identifizieren konnten, sondern auch Informationen darüber liefern, wohin der problematische FB verschoben werden könnte. Diese Ergebnisse könnten dem/der Entwickler*in als Handlungsempfehlung bereitgestellt werden oder auch mit Refaktorierung [37] kombiniert werden, um so werkzeugunterstützt den Smell aufzulösen.

7 KI-basierte Detektion von Codeklonen

Techniken der Künstlichen Intelligenz (KI) haben sich in verschiedenen Bereichen etabliert, um Situationen mit großen Mengen an unstrukturierten Daten zu bewältigen [38]. Insbesondere verwenden mehrere Ansätze KI-Techniken in textuellem Code, um ähnliche Codeteile zu identifizieren, wie z.B. das Auffinden von Codeklonen mit Neuronalen Netzen [39, 40].

Auf der Grundlage von KI-Techniken haben wir einen allgemeinen Ansatz zur automatischen Erkennung sich wiederholender Muster mit Hilfe von Techniken des maschinellen Lernens in CPPSs [12] vorgeschlagen. Die Phasen dieses Ansatzes sind in Abbildung 2 dargestellt. Die beiden Schlüsselaspekte dieses Ansatzes sind die Kandidatenauswahl und die Ähnlichkeitseinbettung. In IEC 61499 sind die BFBe bereits Instanzen vordefinierter gemeinsamer Typen. Daher betrachten wir FBNe (d.h. Unteranwendungen, ZFBe) als Analysekomponenten in der Referenzimplementierung. Die Hierarchie der FBNe wird zur Definition der Kandidatenauswahlmethode verwendet. Um einen Ähnlichkeitsindex für jeden Kandidaten zu berechnen, haben wir für jede Unteranwendung einen Vektor mit einer Reihe von Merkmalen erstellt, die sowohl absolute als auch strukturelle FB-Metriken enthalten, wie z.B. die Anzahl der internen FBs und den Konnektivitätsgrad. Diese Merkmale werden manuell definiert, aber wir können auch ein Neuronales Netzwerk (NN) trainieren, um aussagekräftige Ähnlichkeitseinbettungen zu erstellen. Wir ziehen auch eine optionale Projektions-Phase in Betracht, um den Dimensionsraum vor dem Clustering zu reduzieren. Dadurch wird ein potenzieller Verlust an aussagekräftigen Unterscheidungen aufgrund hochdimensionaler Vektoren vermieden [41].

Abbildung 2: 
Phasen der Ähnlichkeitsanalyse: Auswahl, Einbettung, Projektion und Clustering. Adaptiert von Unterdechler et al. [12].
Abbildung 2:

Phasen der Ähnlichkeitsanalyse: Auswahl, Einbettung, Projektion und Clustering. Adaptiert von Unterdechler et al. [12].

Die Dimensionen dieser Vektoren werden zur Berechnung eines Ähnlichkeitsindexes verwendet. Auf der Grundlage dieses Indexes werden die Unteranwendungen in Gruppen ähnlicher Unteranwendungen geclustert. Wir haben diesen Ansatz auf eine Fallstudie aus der Industrie angewendet und konnten ähnliche Unteranwendungen als Ergebnis aufzeigen. Durch Refaktorierung dieser Unteranwendungen in gemeinsame Typen können wir die Wiederverwendbarkeit und Wartung der Artefakte verbessern. Allerdings haben wir auch ähnliche Unteranwendungen ohne funktionale Zusammenhänge gefunden, also falsch-positive Ergebnisse. Ein Schwellwertparameter wird verwendet, um die Genauigkeit des Clustering zu verfeinern. In Abbildung 3 sind die gefundenen Ähnlichkeitsgruppen bei steigendem Schwellwert dargestellt. Die Anzahl der Elemente in den Clustern wächst, weil neue Klone gefunden werden, aber auch nicht zusammenhängende Unteranwendungen beginnen übereinzustimmen. Daher kann dieser Vorschlag nützliches Feedback für die Technik liefern, um relevante Komponenten zu finden, die Kernplattform zu erhalten und den Entwicklungsaufwand in zukünftigen Projekten zu reduzieren. Obwohl die genaue Analyse der Präzision außerhalb des Rahmens unserer bisherigen Arbeit lag, wurden die genauesten Ergebnisse mit einem Schwellwert von 0,1 (in Abbildung 3 rot hervorgehoben) erzielt, bei dem alle Klone identifiziert wurden (Recall oder Precision = 1), obwohl auch einige falsch-negative Ergebnisse ausgegeben wurden (falsch-negativ Rate = 0,04). Bei niedrigeren Schwellwerten nahm die Präzision ab (weniger richtig-positive Ergebnisse) und bei höheren Schwellwerten stieg die Zahl der falsch-positiven Ergebnisse.

Abbildung 3: 
Die gefundenen Ähnlichkeitsgruppen hängen vom Schwellwert ab. Adaptiert von Unterdechler et al. [12].
Abbildung 3:

Die gefundenen Ähnlichkeitsgruppen hängen vom Schwellwert ab. Adaptiert von Unterdechler et al. [12].

Die Refaktorierung bleibt eine Herausforderung, welche die Unterstützung von Fachleuten erfordert. Andere Techniken werden in Betracht gezogen, um die Genauigkeit der Ergebnisse zu verbessern. Grapheneinbettungen können dabei helfen, die Graphenstruktur zu verarbeiten und davon Informationen abzuleiten [42, 43]. Auch Graph Neural Networks (GNNs) wurden dafür mit Erfolg verwendet [44].

8 Repräsentation detektierter Smells

Sobald eine automatische Detektion von Bad Smells in einer Entwicklungsumgebung implementiert ist, stellt sich die Frage, wie die Ergebnisse den Entwickler*innen präsentiert werden sollen. Klassischerweise erfolgt dies direkt über eine Markierung an der Stelle, wo der problematische Teil des Codes auftritt oder durch eine Markierung von Dateien, die problematischen Code enthalten. Diese Markierungen erlauben allerdings keinen Überblick über das Gesamtsystem. Dafür wird oft eine tabellarische Repräsentation verwendet, in der alle gefundenen Probleme des Gesamtsystems aufgelistet werden. Mit dieser Art der Repräsentation wird zwar ein Überblick über die Anzahl der gefundenen Probleme gegeben, allerdings ist es in der Praxis unter Umständen mühsam, die Tabelle durchzuarbeiten. Daher schlagen wir vor, für die Repräsentation der gefundenen Smells für die Entwickler*innen das Visualisierungskonzept zu verwenden, das wir in Sonnleithner et al. [15] vorgestellt haben. Dieses Visualisierungskonzept beruht auf der Repräsentation der Hierarchie der FBe als Wurzelbaum, der mit einem Circle Packing Layout [45] dargestellt wird und der Repräsentation der Verbindungen zwischen den einzelnen FBen als Graph, der dem Wurzelbaum überlagert wird. Um die Übersichtlichkeit der resultierenden Visualisierung zu gewährleisten, wird Edge Bundling [46] verwendet, das Verbindungen, die ähnliche Quellen und Senken haben, bündelt.

Diese Visualisierung der gesamten Softwarestruktur lässt sich mit den Ergebnissen der in dieser Arbeit zusammengefassten Analysen erweitern. In Abbildung 4 ist die resultierende Visualisierung eines Beispielsystems dargestellt. Bausteine, bei denen ein Smell detektiert wurde, werden dabei farblich markiert. Je nach Schweregrad wird orange oder rot verwendet. Eine weitere Eigenschaft mit der wir gerade experimentieren, ist wie von Fuchs et al. [47] vorgeschlagen, die Größe der Kreise aufgrund von Metriken anzupassen.

Abbildung 4: 
Visualisierung eines Softwaresystems mit dem Konzept, das wir in Sonnleithner et al. [15] vorgestellt haben. Detektierte Smells sind farblich markiert.
Abbildung 4:

Visualisierung eines Softwaresystems mit dem Konzept, das wir in Sonnleithner et al. [15] vorgestellt haben. Detektierte Smells sind farblich markiert.

Durch diese Art der Repräsentation der detektierten Smells erhalten Entwickler*innen sofort einen Überblick über die Qualität des gesamten Systems. Darüber hinaus lässt die Visualisierung auf den ersten Blick erkennen, welche Module stärker von Smells betroffen sind als andere. Mit der Visualisierung lassen sich unsere Arbeiten zur Code Analyse und Smell Detektion verbinden und sie gewährt so den Entwickler*innen einen detaillierteren Einblick in den Zustand ihrer Software, als das nur durch die Auflistung der Ergebnisse z.B. der Klon Detektion möglich wäre. Erste Evaluierungen mit industriellen Nutzern zeigten bereits die Vorteile und die möglichen Verbesserungen des Entwicklungsprozesses unter Verwendung dieser Darstellungen. Basierend auf dieser sehr positiven Rückmeldung ist eine detaillierte Studie in Planung.

9 Zusammenfassung

In diesem Artikel haben wir unsere Arbeiten zum Thema Bad Smells in Steuerungssoftware für automatisierte Produktionssysteme mit Fokus auf IEC 61499 Software zusammengefasst und gegenübergestellt. In den letzten Jahren konnten zu diesem Thema wesentliche Fortschritte erzielt werden. Ein Katalog, der mögliche Smells in IEC 61499 Software auflistet, wurde vorgestellt. Es wurde evaluiert, welche dieser Smells regelbasiert detektierbar sind. Zur Detektion des Smells Feature Envy, der auf eine schlechte Modularisierung des Systems hindeutet und deshalb besonders wichtig ist, wurden zwei Ansätze diskutiert. Auch für Codeklone, die zu Wartbarkeitsproblemen in der Software führen können, wurde eine erste Möglichkeit zur Detektion mit KI-basierten Algorithmen präsentiert. Wichtig ist nochmals zu erwähnen, dass es sich hier nicht um eine Detektion von Fehlern in der Software handelt, sondern um die Detektion von potentiell schlechten Softwarestrukturen. Die Bewertung der Auswirkung muss dem Anwender überlassen werden und ist abhängig vom Anwendungsfall. Daher haben wir die Ergebnisse dieser Analysen mit einem neuartigen Visualisierungskonzept für Steuerungssoftware verknüpft, um die Ergebnisse besser den Entwickler*innen zu präsentieren und sie so im Entwicklungsprozess zu unterstützen. Durch die Kombination dieser Arbeiten ergibt sich somit ein zusätzlicher Mehrwert im Entwicklungsprozess, weshalb wir hier diesen Überblick über die Analysemöglichkeiten für IEC 61499 Software gegeben haben.

Als einen unserer nächsten Schritte planen wir die Weiterentwicklung von Detektionsmethoden für Bad Smells in IEC 61499 Software. Darunter fällt sowohl die Betrachtung von Smells, für die wir noch keine Detektionsmethoden entwickelt haben als auch die weitere Evaluierung der bereits existierenden Methoden. Insbesondere planen wir die Metriken zur Identifikation von Feature Envy als auch die KI-basierte Codeklondetektion auf echte Industriesysteme anzuwenden und (z.B. im Rahmen von Workshops) mit unserem Industriepartner zu evaluieren. Darüber hinaus planen wir eine Kombination unserer Arbeit zum Thema der Detektion von Bad Smells mit werkzeugunterstützter automatisierter Refaktorierung (siehe z.B. [37, 48]). Diese Kombination würde eine (semi)automatische Auflösung von Bad Smells ermöglichen und dadurch die Wartung von Steuerungssoftware wesentlich vereinfachen. Aufgrund der Nähe von IEC 61499 zu IEC 61131-3, IEC 61499 baut in vielen Bereichen auf IEC 61131-3 auf, denken wir, dass unsere Ergebnisse auch breitere Anwendung in der Entwicklung von IEC 61131-3-basierter Steuerungssoftware finden können.


Korrespondenzautor: Lisa Sonnleithner, CDL VaSiCS, LIT CPS Lab, Johannes Kepler University, Linz, Austria, E-mail:

Funding source: Bundesministerium für Digitalisierung und Wirtschaftsstandort

Award Identifier / Grant number: Unassigned

Funding source: Christian Doppler Forschungsgesellschaft

Award Identifier / Grant number: Unassigned

Über die Autoren

Lisa Sonnleithner

Lisa Sonnleithner ist wissenschaftliche Mitarbeiterin im Christian Doppler Labor VaSiCS am LIT Cyber-Physical Systems Lab der Johannes Kepler Universität Linz, Österreich. Ihre Forschungsinteressen umfassen unter anderem Software-Metriken und Software-Architekturen von Steuerungsanwendungen sowie deren Visualisierung.

Antonio Gutiérrez

Antonio Gutierrez ist Post-Doc im Christian Doppler Labor VaSiCS am LIT Cyber-Physical Systems Lab der Johannes Kepler Universität Linz, Österreich. Seine Forschungsinteressen umfassen unter anderem Softwarevariabilität, serviceorientiertes Computing und Geschäftsprozesse.

Rick Rabiser

Rick Rabiser ist Universitätsprofessor und Leiter des LIT Cyber-Physical Systems Lab und des Christian Doppler Labors VaSiCS an der Johannes Kepler Universität Linz, Österreich. Seine Hauptforschungsinteressen sind Variantenmanagement, Softwareproduktlinien, Softwarewartung und -evolution, Automatisiertes Software Engineering, Anforderungsmonitoring und Usability von Software Engineering Werkzeugen.

Alois Zoitl

Alois Zoitl ist Universitätsprofessor und Stv.-Leiter des LIT Cyber-Physical System Lab und auch Leiter des Christian Doppler Labors VaSiCS an der Johannes Kepler Universität Linz, Österreich. Seine Forschungsthemen beinhalten adaptive Produktionssysteme, verteilte Steuerungsarchitekturen, dynamische Rekonfiguration von Steuerungsprogrammen sowie Softwareentwicklungs-und Software-Qualitätssicherungsmethoden für die Industrielle Automatisierungstechnik.

Acknowledgement

Wir bedanken uns für die finanzielle Unterstüzung durch das Bundesministerium für Digitalisierung und Wirtschaftsstandort und die Nationalstiftung für Forschung, Technologie und Entwicklung sowie die Christian Doppler Forschungsgesellschaft. Wir möchten uns auch explizit bei unserem Industriepartner für die Unterstützung bedanken.

  1. Author contributions: All the authors have accepted responsibility for the entire content of this submitted manuscript and approved submission.

  2. Research funding: This work was supported by the Christian Doppler Lab VaSiCS.

  3. Conflict of interest statement: The authors declare no conflicts of interest regarding this article.

References

[1] M. Törngren and P. Grogan, “How to deal with the complexity of future cyber-physical systems?” Designs, vol. 2, no. 4, p. 40, 2018. https://doi.org/10.3390/designs2040040.Search in Google Scholar

[2] B. Vogel-Heuser, C. Diedrich, A. Fay, et al.., “Challenges for software engineering in automation,” J. Softw. Eng. Appl., vol. 07, no. 05, pp. 440–451, 2014. https://doi.org/10.4236/jsea.2014.75041.Search in Google Scholar

[3] V. Vyatkin, “Software engineering in industrial automation: state-of-the-art review,” IEEE Trans. Ind. Inf., vol. 9, no. 3, pp. 1234–1249, 2013. https://doi.org/10.1109/tii.2013.2258165.Search in Google Scholar

[4] B. Vogel–Heuser, et al.., “Automation software architecture in CPPS – definition, challenges and research Potentials,” in IEEE 5th Int. Conf. on Industrial Cyber-Physical Systems (ICPS), 2022.10.1109/ICPS51978.2022.9816893Search in Google Scholar

[5] M. Fowler and K. Beck, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 2018.Search in Google Scholar

[6] W. J. Brown, et al.., AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, NY, John Wiley & Sons, Inc., 1998.Search in Google Scholar

[7] M. Abbes, et al.., “An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension,” in 15th European Conf. on Software Maintenance and Reengineering, 2011.10.1109/CSMR.2011.24Search in Google Scholar

[8] A. Yamashita and L. Moonen, “Do code smells reflect important maintainability aspects?” in 28th IEEE Int. Conf. on Software Maintenance, 2012.10.1109/ICSM.2012.6405287Search in Google Scholar

[9] H. Prähofer, F. Angerer, R. Ramler, and F. Grillenberger, “Static code analysis of IEC 61131-3 programs: comprehensive tool support and experiences from large-scale industrial application,” IEEE Trans. Ind. Inf., vol. 13, no. 1, pp. 37–47, 2017. https://doi.org/10.1109/TII.2016.2604760.Search in Google Scholar

[10] L. Sonnleithner, R. Rabiser, and A. Zoitl, “Bad smells in industrial automation: sniffing out feature envy,” in 48th Euromicro Conf. on Software Engineering and Advanced Applications (SEAA), IEEE, 2022.10.1109/SEAA56994.2022.00061Search in Google Scholar

[11] L. Sonnleithner, et al.., “Do you smell it too? Towards Bad smells in IEC 61499 applications,” in 26th IEEE Int. Conf. on Emerging Technologies and Factory Automation, 2021.10.1109/ETFA45728.2021.9613379Search in Google Scholar

[12] M. Unterdechler, et al.., “Identifying repeating patterns in IEC 61499 systems using Feature-Based embeddings,” in 27th IEEE Int. Conf. on Emerging Technologies and Factory Automation, ETFA, Stuttgart, Germany, IEEE, 2022.10.1109/ETFA52439.2022.9921527Search in Google Scholar

[13] IEC, IEC 61499-1, Function Blocks, Part 1: Architecture: Edition 2.0, Geneva, 2012, Available at: www.iec.ch.Search in Google Scholar

[14] P. Gsellmann, M. Melik-Merkumians, and G. Schitter, “Comparison of code measures of IEC 61131–3 and 61499 standards for typical automation applications,” in IEEE 23rd Int. Conf. on Emerging Technologies and Factory Automation (ETFA), 2018, pp. 1047–1050.10.1109/ETFA.2018.8502464Search in Google Scholar

[15] L. Sonnleithner, et al.., “Applying visualization concepts to large-scale software systems in industrial automation,” in Working Conf. on Software Visualization (VISSOFT), 2022, pp. 182–186.10.1109/VISSOFT55257.2022.00029Search in Google Scholar

[16] D. Darvas, E. B. Vinuela, and B. F. Adiego, “PLCverif: a tool to verify PLC programs based on model checking techniques,” in 15th International Conference on Accelerator and Large Experimental Physics Control Systems, 2015, p. WEPGF092.Search in Google Scholar

[17] S. Stattelmann, et al.., “Applying static code analysis on industrial controller code,” in Proceedings of the 2014 IEEE Emerging Technology and Factory Automation (ETFA), 2014, pp. 1–4.10.1109/ETFA.2014.7005254Search in Google Scholar

[18] B. Vogel-Heuser, A. Fay, I. Schaefer, and M. Tichy, “Evolution of software in automated production systems: challenges and research directions,” J. Syst. Softw., vol. 110, pp. 54–84, 2015. https://doi.org/10.1016/j.jss.2015.08.026.Search in Google Scholar

[19] K. Pohl, G. Böckle, and F. Van Der Linden, Software Product Line Engineering, vol. 10, Springer, 2005.10.1007/3-540-28901-1Search in Google Scholar

[20] S. Patil, et al.., “Refactoring of IEC 61499 function block application — a case study,” in IEEE Industrial Cyber-Physical Systems, IEEE, 2018.10.1109/ICPHYS.2018.8390797Search in Google Scholar

[21] N. Hagge and B. Wagner, “Analyzing the liveliness of IEC 61499 function blocks,” in IEEE Int. Conf. on Emerging Technologies and Factory Automation, 2008.10.1109/ETFA.2008.4638421Search in Google Scholar

[22] R. Koschke, P. Frenzel, A. P. J. Breu, and K. Angstmann, “Extending the reflexion method for consolidating software variants into product lines,” Softw. Qual. J., vol. 17, no. 4, pp. 331–366, 2009. https://doi.org/10.1007/s11219-009-9077-8.Search in Google Scholar

[23] T. Mende, R. Koschke, and F. Beckwermert, “An evaluation of code similarity identification for the grow-and-prune model,” J. Software Mainten. Evol.: Res. Pract., vol. 21, no. 2, pp. 143–169, 2009. https://doi.org/10.1002/smr.402.Search in Google Scholar

[24] H. Thaller, et al.., “Exploring code clones in programmable logic controller software,” in 22nd IEEE International Conference on Emerging Technologies and Factory Automation (ETFA), 2017.10.1109/ETFA.2017.8247574Search in Google Scholar

[25] K. Rosiak, A. Schlie, L. Linsbauer, B. Vogel-Heuser, and I. Schaefer, “Custom-tailored clone detection for IEC 61131-3 programming languages,” J. Syst. Softw., vol. 182, p. 111070, 2021. https://doi.org/10.1016/j.jss.2021.111070.Search in Google Scholar

[26] H. K. Jnanamurthy, et al.., “Analysis of industrial Control System software to detect semantic clones,” in IEEE International Conference on Industrial Technology (ICIT), 2019, pp. 773–779.10.1109/ICIT.2019.8754957Search in Google Scholar

[27] C. Roy and J. Cordy, “A survey on software clone detection research,” in School of Computing TR 2007-541, 2007.Search in Google Scholar

[28] J. A. Bondy, U. S. R. Murty, et al.., Graph Theory with Applications, vol. 290, London, Macmillan, 1976.10.1007/978-1-349-03521-2Search in Google Scholar

[29] D. Koutra, N. Shah, J. T. Vogelstein, B. Gallagher, and C. Faloutsos, “Deltacon: principled massive-graph similarity function with attribution,” ACM Trans. Knowl. Discov. Data, vol. 10, no. 3, pp. 1–43, 2016. https://doi.org/10.1145/2824443.Search in Google Scholar

[30] M. Fowler, et al.., Refactoring: Improving the Design of Existing Code, 1999.Search in Google Scholar

[31] Eclipse 4diac, Eclipse 4diac – the Open Source Environment for Distributed Industrial Automation and Control Systems, 2019, Available at: https://www.eclipse.org/4diac.Search in Google Scholar

[32] S. Bácsi, 2020. Available at: https://wiki.eclipse.org/Eclipse_4diacWiki/Development/Detecting_Model_Inconsistencies_in_4diac_Models_with_OCL.Search in Google Scholar

[33] B. Wiesmayr, et al.., “Supporting a model-driven development process for distributed Control software,” in IEEE 27th Int. Conf. on Emerging Technologies and Factory Automation (ETFA), 2022.10.1109/ETFA52439.2022.9921506Search in Google Scholar

[34] B. Vogel-Heuser, J. Fischer, S. Feldmann, S. Ulewicz, and S. Rösch, “Modularity and architecture of PLC-based software for automated production Systems: an analysis in industrial companies,” J. Syst. Softw., vol. 131, pp. 35–62, 2017. https://doi.org/10.1016/j.jss.2017.05.051.Search in Google Scholar

[35] K. Nongpong, “Feature envy factor: a metric for automatic feature envy detection,” in 7th Int. Conf. on Knowledge and Smart Technology, 2015.10.1109/KST.2015.7051460Search in Google Scholar

[36] F. Simon, S. Löffler, and C. Lewerentz, “Distance based cohesion measuring,” in Proc. of the 2nd European Software Measurement Conf., Citeseer, 1999.Search in Google Scholar

[37] M. Oberlehner, et al.., “Catalog of refactoring operations for IEC 61499,” in 26th IEEE Int. Conf. on Emerging Technologies and Factory Automation, 2021.10.1109/ETFA45728.2021.9613398Search in Google Scholar

[38] D. E. O’Leary, “Artificial intelligence and big data,” IEEE Intell. Syst., vol. 28, no. 2, pp. 96–99, 2013. https://doi.org/10.1109/mis.2013.39.Search in Google Scholar

[39] C. Huang, et al.., Code Clone Detection based on Event Embedding and Event Dependency, 2021.10.1145/3545258.3545277Search in Google Scholar

[40] W. Wang, et al.., “Detecting code clones with graph neural network and flow-augmented abstract syntax tree,” in IEEE 27th Int. Conf. on Software Analysis, Evolution and Reengineering (SANER), 2020.10.1109/SANER48275.2020.9054857Search in Google Scholar

[41] P. Indyk and R. Motwani, “Approximate nearest neighbors: towards removing the curse of dimensionality,” in Proc. of the 13th annual ACM symposium on Theory of computing, 1998.10.1145/276698.276876Search in Google Scholar

[42] Z. Wu, S. Pan, F. Chen, G. Long, C. Zhang, and P. S. Yu, “A comprehensive survey on graph neural networks,” IEEE Trans. Neural Networks Learn. Syst., vol. 32, no. 1, pp. 4–24, 2020. https://doi.org/10.1109/tnnls.2020.2978386.Search in Google Scholar

[43] J. Zhou, G. Cui, S. Hu, et al.., “Graph neural networks: a review of methods and applications,” AI Open, vol. 1, pp. 57–81, 2020. https://doi.org/10.1016/j.aiopen.2021.01.001.Search in Google Scholar

[44] P. Riba, A. Fischer, J. Lladós, and A. Fornés, “Learning graph edit distance by graph neural networks,” Pattern Recogn., vol. 120, pp. 108–132, 2021. https://doi.org/10.1016/j.patcog.2021.108132.Search in Google Scholar

[45] W. Wang, et al.., “Visualization of large hierarchical data by Circle packing,” in Proc. of the SIGCHI Conf. on Human Factors in Computing Systems. CHI ’06, New York, NY, USA, Association for Computing Machinery, 2006.10.1145/1124772.1124851Search in Google Scholar

[46] D. Holten, “Hierarchical edge bundles: visualization of adjacency relations in hierarchical data,” IEEE Trans. Visual. Comput. Graph., vol. 12, no. 5, pp. 741–748, 2006. https://doi.org/10.1109/tvcg.2006.147.Search in Google Scholar PubMed

[47] J. Fuchs, et al.., “Identification of design patterns for IEC 61131-3 in machine and plant manufacturing,” in IFAC Proc. 19th IFAC World Congress, vol. 47, 2014, pp. 6092–6097.10.3182/20140824-6-ZA-1003.01595Search in Google Scholar

[48] E. Monroy Cruz, et al.., “Validating effect of refactoring of IEC 61499 function block in distributed Control systems,” in IEEE International Conference on Automation/XXV Congress of the Chilean Association of Automatic Control (ICA-ACCA), 2022, pp. 1–6.10.1109/ICA-ACCA56767.2022.10005950Search in Google Scholar

Erhalten: 2022-11-14
Angenommen: 2023-04-17
Online erschienen: 2023-06-07
Erschienen im Druck: 2023-06-27

© 2023 the author(s), published by De Gruyter, Berlin/Boston

This work is licensed under the Creative Commons Attribution 4.0 International License.

Downloaded on 20.9.2025 from https://www.degruyterbrill.com/document/doi/10.1515/auto-2022-0147/html
Scroll to top button