Was ist Program Slicing?
In Softwareanwendungen ist Program Slicing eine Methode zum Identifizieren der Kernelemente eines Softwareprogramms und zum vorsichtigen Extrahieren dieser Elemente aus dem komplizierteren Code, mit dem das Programm funktionieren kann. Der Prozess des Program Slicing ist besonders wichtig für das Software-Engineering, da der Software-Ingenieur so den Weg durch komplizierte Code-Zeichenfolgen finden kann, um auf den Quellcode zuzugreifen, der die Anwendung tatsächlich antreibt. Wenn Sie diese Unterprogramme extrahieren und den Quellcode anzeigen können, können Sie eine Vielzahl potenzieller Fehler identifizieren und die Software effizienter ausführen.
Es ist nicht ungewöhnlich, dass Code absichtlich kompliziert ist. Einer der Hauptgründe für diese Aktion ist, dass die komplizierteren Teile des Codes dazu beitragen, den Quellcode vor Beschädigung durch Viren und Hacking-Versuche zu schützen. Normalerweise fügt ein Programmierer viel zusätzlichen Code hinzu, der es im Wesentlichen erforderlich macht, eine Reihe zusätzlicher Schritte durchzuführen, um zu erreichen, was durch den Quellcode mit nur wenigen Schritten verwaltet werden könnte. Während dies aus der Sicht des Schutzes der Software vor möglicher Beschädigung ein wünschenswerter Zustand ist, gibt es Situationen, in denen ein Zugriff auf den Quellcode erforderlich ist. Hier kommt das Program Slicing ins Spiel.
Es gibt zwei grundsätzliche Ansätze oder Dimensionen, um das Schneiden zu programmieren. Die semantische Dimension konzentriert sich auf die Elemente der Codezeichenfolge, die erforderlich sind und daher beibehalten werden. Sowohl statische als auch dynamische Funktionen werden identifiziert und beibehalten, indem bestimmte Aufteilungsmethoden verwendet werden, die die wesentlichen Elemente zurücklassen, jedoch einen Großteil des Codes entfernen, der als Teil des Maskierungsprozesses eingefügt wird. Bei der Aufteilung in semantische Programme hat der Ingenieur ein gewisses Maß an Entscheidungsfreiheit bei der Entscheidung, ob der zusätzliche Code tatsächlich verbleibt oder nicht.
Syntaktisches Programm-Slicing bietet dem Ingenieur nicht die gleiche Anzahl von Optionen. Bei diesem Ansatz wird alles entfernt, was für die Kernfunktion des Codes nicht wesentlich ist. Wenn sich herausstellt, dass eine Zeichenfolge keinem wirklichen Zweck dient und keinen Einfluss auf die im Code enthaltene Semantik von Interesse hat, wird sie beendet. Dieser Ansatz trägt dazu bei, die ursprüngliche Syntax des Programms ohne zusätzlichen Aufwand beizubehalten.
Eine zweite und zunehmend verbreitete Verwendung von syntaktischem Programm-Slicing ist als amorphes Programm-Slicing bekannt. Mit diesem Ansatz soll es dem Slice ermöglicht werden, weiterhin mit jeder syntaktischen Funktion zu arbeiten, die dabei hilft, die semantischen Einschränkungen beizubehalten, die der Ingenieur im Code beibehalten möchte.