Indus

Software screenshot:
Indus
Dettagli del software:
Versione: 0.8
Data di caricamento: 3 Jun 15
Licenza: Libero
Popolarità: 14

Rating: 5.0/5 (Total Votes: 1)

Indus è un tentativo di fornire un insieme di analisi del programma e le trasformazioni attuate in Java per personalizzare e adattare programmi Java. Indus è destinato a servire come un ombrello per:
* Analisi statiche, come i punti-all'analisi, fuga analisi, e analizza la dipendenza,
* trasformazioni quali l'affettamento programma e specializzazione programma tramite valutazione parziale, e
* Qualsiasi modulo software che offre le analisi / trasformazioni in una particolare applicazione, come Bandera o piattaforma come Eclipse.
Attualmente, ci sono 3 moduli che fanno parte di Indus. Altri moduli dovrebbero essere aggiunti nel corso del tempo. Forniamo una panoramica della volontà di ciascun modulo, che sono attualmente disponibili.
Indus è un modulo che ospita l'attuazione di pertinenza di algoritmi e strutture dati comuni di analisi e trasformazioni che fanno parte o sono in programma di far parte di Indus. Questo modulo contiene definizione di interfaccia comune alla maggior parte delle analisi e trasformazioni di fornire un quadro in cui le varie implementazioni di analisi / trasformazioni possono essere combinati per formare sistemi con facilità. Quindi, questo modulo viene aggiornato quando un nuovo tipo di analisi / trasformazione è implementato come modulo di Indus. Tuttavia, una nuova implementazione di un'analisi / trasformazione non influirà questo modulo come sarà implementare un'interfaccia esistente.
Modulo StaticAnalyses è destinato ad essere la raccolta di analisi statiche come l'analisi oggetto-flusso, fuga analisi, e analizza la dipendenza. Le analisi di questo modulo utilizzano interfacce e le implementazioni comuni di Indus e possono definire / fornire nuove interfacce / implementazioni specifiche per nuove analisi. Analisi esistenti sono di seguito indicate.
* Analisi Object-flow (OFA) è un punti-all'analisi per Java. Ogni sito di assegnazione nel sistema analizzato viene trattato come un oggetto astratto e il suo flusso attraverso il sistema viene monitorato per inferire i possibili tipi di un ricevitore in un sito chiamata per consentire la costruzione di una precisa call-graph. La precisione dell'analisi può essere variata in termini di flusso di sensibilità per il metodo di variabili locali e oggetti sensibilità per i campi di istanza.
* Fuga Analysis è un'implementazione estesa dell'analisi fuga proposto dal Ruf allo scopo di interferenza potatura e bordi dipendenza pronti. Le estensioni sono in forma di perfetta aggiunta di valore dell'equivalenza all'analisi per migliorare l'individuazione di campo contrastanti letture / scritture che si verificano in diversi thread oltre la semplice utilizzando l'uguaglianza delle primarie delle espressioni di accesso tipo. L'analisi utilizza anche le informazioni oggetto di flusso ortogonale per migliorare ulteriormente la precisione.
* Analisi dipendenza è una collezione di dipendenza analisi: controllo basato entry, controllo di uscita a base, dati basati all'identificazione, dati basati riferimento-, interferenza, pronto, sincronizzazione e divergenza, richiesti dalla analisi / trasformazioni come affettare programma e valutazione parziale . Interferenze e dipendenza pronto analisi dipende dalla analisi fuga precedente, mentre i dati sulla base di riferimento, e la dipendenza sincronizzazione analisi dipendono informazioni oggetto di flusso e le informazioni sulle chiamate-graph calcolato. Alcune analisi hanno diversi livelli di precisione che può essere variata tramite una interfaccia ben definita.
* Effetto collaterale di analisi fornisce informazioni a livello di metodo effetto collaterale. L'utente può interrogare se uno degli argomenti / parametri a una chiamata-site / metodo saranno interessati sia direttamente (stretti) o indirettamente (ricorsivamente membri raggiungibili). Allo stesso modo, l'utente può fornire un percorso di accesso ai dati radice in argomenti / parametri a una chiamata-site / metodo e query se punto finale del percorso di accesso ai dati è influenzata dalla chiamata / metodo.
* Monitor anlaysis è una semplice analisi che fornisce monitor / informazioni grafico di blocco per il sistema dato.
* Sicuro della serratura analisi è un'analisi che scopre conservativamente se un blocco (monitor), non si terrà a tempo indeterminato. Questa informazione viene utilizzato in combinazione con dipendenze temporali steming per Object.wait () e Object.notify () / Object.notifyAll () come avviene in dipendenza ready.
* Analisi Atomicità fornisce informazioni atomicità nel sistema dato. Implementazione attuale si basa sull'analisi di fuga per predire se una dichiarazione può essere eseguita in modo atomico. Questa informazione viene utilizzata per rilevare regione atomico di codici. Questa informazione è utile in applicazioni come modello di controllo per ridurre la la dimensione dello spazio di stato, quindi, migliorare la prestazione.
Alcune analisi potrebbero essere grande abbastanza per costituire modulo per conto loro e tali analisi saranno ospitati come diversi moduli in Indus piuttosto che essere consumata da questo modulo.
Modulo Java Programma affettatrice contiene l'implementazione nucleo del programma Java affettatrice con adattatori che garantiscono l'affettatrice in altre applicazioni come Bandera ed Eclipse. L'implementazione è architettato come una libreria piuttosto che come un'applicazione per agevolare il riutilizzo di esso è sottoparti. Il nucleo è indipendente dall'applicazione; Requisito di ciascuna applicazione della fetta può essere soddisfatta da codificare fino implementazioni di interfacce di post-elaborazione e aggancio in queste implementazioni per formare una affettatrice personalizzato.
Questo modulo si basa molto sulle informazioni fornite dalla dipendenza analisi e anche il call-grafico fornito da OFA attraverso interfacce ben definite che consente implementazioni esterni da utilizzare per affettare.
Questa implementazione di affettatrice viene consegnato a Eclipse con un'interfaccia utente intuitiva via Kaveri plugin.
Caratteristiche: o
Generazione fetta avanti e indietro. Fette completi (unione di avanti e indietro
fette partire dagli stessi criteri slice) possono essere generati.
* Supporto per residualize (adeguati) fette in file di classe eseguibili.
* Supporto per affettare sensibile al contesto tramite ricco contesto disciplinare criteri fetta.
Supporto * per limitare la fetta di una particolare parte del sistema dalle specifiche dell'ambito.
* Supporto serializzare criteri fetta, configurazioni affettatrice, e fette.
Tutti i moduli di lavoro del progetto Indus su Jimple, una rappresentazione intermedia di Java, fornite da fuliggine toolkit dal gruppo Sable a McGill University. Ogni modulo del progetto sarà esposto come uno o più plugin Eclipse se le informazioni fornite sono utili per l'utente e per il consumo suscettibile utente tramite un'interfaccia utente grafica.
Software Engineering Filosofia
Ogni modulo in questo progetto fornirà solo la funzionalità richiesta tramite interfacce ben definite che possono essere implementate per assemblare un sistema personalizzato con le estensioni adatte che soddisfano requisiti specifici. Poiché l'interfaccia è chiaramente separata dalla realizzazione, qualsiasi implementazione esterna che fornisce l'interfaccia necessaria può essere utilizzato senza problemi con i moduli di questo progetto.
Sfondo
L'attuazione della maggior parte delle analisi è stata guidata dalle esigenze di programma Java affettatrice richieste dal Bandera. Tuttavia, poiché il programma di affettatrice potrebbe essere utilizzato al di fuori Bandera e le analisi potrebbe essere usato per abilitare altre trasformazioni come la specializzazione programma mediante valutazione parziale, abbiamo spostato le analisi e le trasformazioni in un nuovo progetto chiamato dell'Indo.

Commenti a Indus

I commenti non trovato
Aggiungi commento
Accendere le immagini!