Indus

Screenshot der Software:
Indus
Softwarebeschreibung:
Version: 0.8
Upload-Datum: 3 Jun 15
Lizenz: Frei
Popularität: 14

Rating: 5.0/5 (Total Votes: 1)

Indus ist ein Versuch, eine Sammlung von Programm bieten Analysen und Transformationen in Java implementiert, um zu personalisieren und Java-Programme anzupassen. Indus soll als Dachorganisation für dienen:
* Statische Analysen wie Stellen-Analyse, zu entkommen Analyse und Abhängigkeit Analysen,
* Transformationen wie Program Slicing und Programm Spezialisierung über Teilbewertung und
* Jede Software-Modul, das die Analysen / Transformationen in eine bestimmte Anwendung, wie Bandera oder Plattform wie Eclipse liefert.
Zur Zeit gibt es 3 Module, die Teil des Indus sind. Weitere Module werden voraussichtlich im Laufe der Zeit hinzugefügt werden. Wir geben einen Überblick über die Absicht eines jeden Moduls, die an vorhanden sind.
Indus ist ein Modul, das die Umsetzung in Bezug auf Algorithmen und Datenstrukturen gemeinsam Analysen und Transformationen, die Teil sind oder geplant sind Teil des Indus sein beherbergt. Dieses Modul enthält Schnittstellen-Definition für die meisten Analysen und Transformationen, einen Rahmen, in dem verschiedene Implementierungen von Analysen / Transformationen kann kombiniert werden, um Systeme mit Leichtigkeit zu bilden. Daher wird dieses Modul aktualisiert, wenn eine neue Art von Analyse / Transformation wird als ein Modul in Indus implementiert. Allerdings wird eine neue Implementierung eines Analyse / Transformation nicht auf diese Modul, wie es eine bestehende Schnittstelle implementieren.
StaticAnalyses Modul sein soll die Sammlung statischer Analysen wie objektFlussAnalyse, entweichen Analyse und Abhängigkeit analysiert. Die Analysen in diesem Modul verwenden gemeinsame Schnittstellen und Implementierungen von Indus und kann definieren / bereitzustellen neue Schnittstellen / spezifische, neue Analysen Implementierungen. Vorhandene Analysen sind unten erwähnt.
* Objekt-Durchflussanalyse (OFA) ist ein Punkte-Analyse für Java. Jede Zuweisung Website in den analysierten System ist als abstraktes Objekt behandelt und ihre Strömung durch das System verfolgt wird, die möglichen Arten in einem Call-Website schließen einen Empfänger, um den Bau einer präzisen Call-Graph zu ermöglichen. Die Genauigkeit der Analyse kann strömungsEmpfindlichkeit für Verfahren lokale Variablen und Objektempfindlichkeit zum Beispiel Felder verändert werden.
* Escape-Analyse ist eine erweiterte Umsetzung des von Ruf für die Zwecke der Beschneidung Störungen und bereit Abhängigkeit Kanten vorgeschlagen Escape-Analyse. Die Erweiterungen sind in Form von nahtlosen Zusatz Wert Gleichwertigkeit der Analyse, um die Erfassung von widerstreitenden Bereich zu verbessern liest / schreibt in verschiedenen Threads auftretende darüber hinaus nur mit Typ Gleichheit der Vorwahlen der Zugang Ausdrücke. Die Analyse verwendet auch objektFlussInformationen orthogonal zur weiteren Verbesserung der Genauigkeit.
* Abhängigkeitsanalysen ist eine Sammlung von Abhängigkeitsanalysen: entry-basierte Steuerung, Abfahrt-basierte Steuerung, Identifier-basierten Daten, Referenz-basierte Daten, Störungen, bereit, Synchronisation und Divergenz von Analysen / Transformationen erforderlich solches Programm Slicing und Teilbewertung . Störungen und Bereit Abhängigkeit Analysen hängen von der früheren Escape-Analyse, während Referenzbasierten Daten und Synchronisation Abhängigkeit Analysen hängen von Objekt-Flow-Daten und der berechneten Call-Graph Informationen. Einige Analysen haben unterschiedliche Genauigkeitsniveaus, die über eine gut definierte Schnittstelle verändert werden können.
* Side-Einfluss-Analyse stellt Verfahren Ebene Nebeneffekt Informationen. Der Benutzer kann abgefragt werden, wenn eines der Argumente / Parameter auf einen Anruf Ort / Verfahren betroffen sein werden entweder direkt (sofort Mitglieder) oder indirekt (rekursiv erreichbar Mitglieder). In ähnlicher Weise kann der Benutzer eine Datenzugriffspfad auf Argumente / Parameter auf einen Anruf Ort / Verfahren und Abfrage verwurzelt bieten, wenn Endpunkt der Datenzugriffspfad wird durch den Aufruf / Verfahren betroffen.
* Monitor-Anlaysis ist eine einfache Analyse, die Monitor / lock graph Informationen für das gegebene System bietet.
* Safe Lock-Analyse ist eine Analyse, die konservativ entdeckt, wenn eine Sperre (Monitore) werden nicht auf unbestimmte Zeit gehalten werden. Diese Information wird in Verbindung mit der zeitlichen Abhängigkeiten für steming Object.wait () und Object.notify () / Object.notifyAll (), wie es in Abhängigkeit bereit gemacht wird verwendet.
* Atomicity Analyse liefert Informationen über die Unteilbarkeit des gegebenen Systems. Aktuelle Implementierung basiert auf Escape-Analyse vorhersagen, ob eine Anweisung atomar ausgeführt werden. Diese Informationen werden verwendet, um atomare Bereich von Codes zu erkennen. Diese Information ist nützlich in Anwendungen wie Model-Checking, um die die Größe des Zustandsraums zu verringern, damit die Leistung zu verbessern.
Einige Analysen kann groß genug sein, um das Modul auf eigene bilden und solchen Analysen werden als unterschiedliche Module in Indus gehostet werden, anstatt von diesem Modul verbraucht.
Java-Programm Slicer-Modul enthält das Kern Umsetzung der Java-Programm Schneidemaschine zusammen mit Adaptern, die die Schneidemaschine in anderen Anwendungen wie Bandera und Eclipse zu liefern. Die Umsetzung wird als Bibliothek nicht als eine Anwendung, um die Wiederverwendung von ihm ist Subparts erleichtern architected. Der Kern ist unabhängig von der Anwendung; Anforderung der Scheibe der jeweiligen Anwendung kann durch Codierung bis Implementierungen von Nachbearbeitungsschnittstellen und Einhängen in dieser Implementierungen, eine maßgeschneiderte Schneidemaschine bilden zufrieden sein.
Dieses Modul stützt sich stark auf den Angaben Abhängigkeit vorgesehen analysiert und auch die Call-Graph von OFA über genau definierte Schnittstellen, die externe Implementierungen zum Schneiden verwendet werden können zur Verfügung gestellt.
Diese Umsetzung der Schneidemaschine zugeführt wird, um mit einer intuitiven Benutzeroberfläche über Kaveri-Plugin Eklipse.
Features: o
Rückwärts- und Vorwärtsschichterzeugung. Vollständige Scheiben (Vereinigung der vorwärts und rückwärts
Scheiben, ausgehend von den gleichen Kriterien slice) erzeugt werden kann.
* Support zu residualize (geeigneten) Scheiben in ausführbare Klassendateien.
* Unterstützung für kontextsensitive Slicing über Kontext reiche Scheibe Kriterien Spezifikation.
* Support, um die Scheibe zu einem bestimmten Teil des Systems durch Umfang Daten zu beschränken.
* Support zu slice Kriterien, Schneidmaschine Konfigurationen und Scheiben serialisieren.
Alle Module in Indus Projektarbeit auf Jimple, eine Zwischendarstellung Java, durch Soot-Toolkit von Sable-Gruppe in der McGill-Universität zur Verfügung gestellt. Jedes Modul in das Projekt wird als eine oder mehrere Eclipse-Plugins ausgesetzt werden, wenn der zur Verfügung gestellten Informationen über eine grafische Benutzerschnittstelle für den Benutzer nützlich und zugänglich für Benutzer Verbrauch.
Software Engineering Philosophie
Jedes Modul in diesem Projekt wird nur die benötigte Funktionalität über genau definierte Schnittstellen, die implementiert werden können, um ein maßgeschneidertes System mit geeigneten Erweiterungen, die spezifische Anforderung erfüllen versammeln werden kann. Als Schnittstelle ist klar von der Implementierung getrennt, kann jeder externe Implementierung, die die erforderliche Schnittstelle stellt sich nahtlos in Module aus diesem Projekt verwendet werden.
Hintergrund
Die Umsetzung der meisten Analysen wurde nach den Erfordernissen des Java-Programms Slicer nach Bandera erforderlich angetrieben. Da das Programm Slicer könnte außerhalb Bandera verwendet werden und die Analysen verwendet werden, um andere Transformationen wie Programm Spezialisierung über Teilbewertung zu ermöglichen, haben wir die Analysen und Transformationen in ein neues Projekt namens Indus.

Kommentare zu Indus

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!