Indus

Software screenshot:
Indus
Software informatie:
Versie: 0.8
Upload datum: 3 Jun 15
Licentie: Gratis
Populariteit: 14

Rating: 5.0/5 (Total Votes: 1)

Indus is een poging om een ​​verzameling te bieden van programma analyseert en transformaties in Java geïmplementeerd aan te passen en Java-programma's aan te passen. Indus is bedoeld om te dienen als een paraplu voor:
* Statische analyses uitgevoerd, zoals punten-analyse, ontsnappen aan de analyse en de afhankelijkheid van analyses,
* Transformaties zoals programma slicing en programma specialisatie via gedeeltelijke evaluatie, en
* Alle software module die de analyses / transformaties levert in een bepaalde toepassing, zoals Bandera of platform, zoals Eclipse.
Momenteel zijn er 3 modules die onderdeel zijn van Indus. Meer modules zouden moeten worden toegevoegd in de loop van de tijd. We geven een overzicht van de intentie van elke module die momenteel beschikbaar zijn.
Indus is een module die de uitvoering met betrekking tot algoritmes en datastructuren gemeenschappelijke analyses en transformaties die deel van zijn of zullen deelnemen aan Indus te huizen. Deze module bevat interfacedefinitie voor de meeste analyses en transformaties van een raamwerk waarin verschillende implementaties van analyses / transformaties kunnen worden gecombineerd om systemen gemakkelijk vormen verschaffen. Daarom wordt deze module bijgewerkt wanneer een nieuw soort analyse / besturing is als een module in Indus. Toch zal een nieuwe implementatie van een analyse / transformatie geen invloed op deze module als het een bestaande interface zal implementeren.
StaticAnalyses module is bedoeld om het verzamelen van statische analyses zoals object-flow-analyse, ontsnappen analyse en afhankelijkheid analyses. De analyses in deze module gebruik van gemeenschappelijke interfaces en implementaties van Indus en kunnen definiëren / bieden nieuwe interfaces / implementaties die specifiek zijn voor nieuwe analyses. Bestaande analyses zijn hieronder vermeld.
* Object-flow Analysis (OFA) is een punten-analyse voor Java. Elke verdeling site in het geanalyseerde systeem behandeld als een abstract object en de stroming door het systeem wordt bijgehouden op mogelijke types afgeleid van een ontvanger op een call-site om de bouw van een nauwkeurige call-grafiek schakelen. De nauwkeurigheid van de analyse kan worden gevarieerd in termen van gevoeligheid voor stroom-werkwijze lokale variabelen en object-gevoeligheid bijvoorbeeld velden.
* Ontsnappen Analysis is een uitgebreide uitvoering van de door Ruf voorgesteld met het doel snoeien interferentie en klaar afhankelijkheid randen escape analyse. De uitbreidingen zijn in de vorm van een naadloze toevoeging van waarde gelijkwaardigheid met de analyse om de opsporing van conflicterende gebied te verbeteren leest / schrijft zich in verschillende draden dan alleen met behulp van het type gelijkheid van de voorverkiezingen van de toegang uitdrukkingen. De analyse maakt ook gebruik van object-flow informatie orthogonaal verder te verbeteren precisie.
* Afhankelijkheid Analyses is een verzameling van afhankelijkheid analyses:-entry gebaseerde controle-exit gebaseerde controle, identificatie-gebaseerde data-referentie-gebaseerde data, interferentie, klaar, synchronisatie en divergentie, vereist door analyses / transformaties dergelijk programma slicing en gedeeltelijke evaluatie . Interferentie en Ready afhankelijkheid analyseert afhangen van de vorige ontsnapping analyse terwijl verwijzing gebaseerde data en synchronisatie afhankelijkheid analyseert afhangen van object-flow informatie en de berekende call-grafiek informatie. Sommige analyses hebben verschillende niveaus van nauwkeurigheid die kan worden gewijzigd via een goed gedefinieerde interface.
* Side-Effect Analysis biedt methode niveau neveneffect informatie. De gebruiker kan opvragen of een van de argumenten / parameters a call-site / methode zal worden beïnvloed hetzij direct (directe) of indirect (recursief bereikbaar leden). Op dezelfde manier kan de gebruiker een toegang tot de gegevens pad geworteld op argumenten / parameters om een ​​call-site / methode en de vraag geven als eindpunt van de toegang tot de gegevens pad wordt beïnvloed door de oproep / methode.
* Monitor Anlaysis is een eenvoudige analyse die monitor / lock grafiek informatie voor het gegeven systeem biedt.
* Safe Lock Analysis is een analyse die conservatief ontdekt als een slot (monitors) niet voor onbepaalde tijd zal worden gehouden. Deze informatie wordt gebruikt in combinatie met temporele afhankelijkheden steming voor Object.wait () en Object.notify () / Object.notifyAll () als het gebeurt in klaar afhankelijkheid.
* Atomiciteit analyse geeft informatie over atomiciteit in het gegeven systeem. Voor deze implementatie is gebaseerd op escape analyseren om te voorspellen of een verklaring atomair worden uitgevoerd. Deze informatie wordt gebruikt om atomaire regio codes detecteren. Deze informatie is nuttig voor toepassingen zoals het controleren van het model de omvang van de toestandsruimte verminderen daarmee de prestaties te verbeteren.
Sommige analyses kunnen groot genoeg om module vormen op hun eigen en dergelijke analyses zullen worden gehost als verschillende modules in Indus in plaats van te worden geconsumeerd door deze module.
Java-programma Slicer module bevat de kern implementatie van Java-programma snijmachine samen met adapters die de snijmachine te leveren in andere toepassingen zoals Bandera en Eclipse. De implementatie wordt architected als een bibliotheek in plaats van als een applicatie om het hergebruik ervan is subonderdelen vergemakkelijken. De kern is onafhankelijk van de aanvraag; Eis van het segment Elke applicatie kan worden voldaan door het coderen up implementaties van nabewerking interfaces en inhaken deze implementaties een aangepaste slicer vormen.
Deze module is sterk afhankelijk van de door afhankelijkheid informatie analyseert en ook de call-grafiek door OFA via goed gedefinieerde interfaces die externe implementaties om te worden gebruikt voor het snijden mogelijk maakt.
Deze uitvoering van de snijmachine wordt geleverd aan Eclipse met een intuïtieve gebruikersinterface via Kaveri plugin.
Kenmerken: o
Achteruit en Vooruit slice generatie. Compleet plakjes (vereniging van achteruit en vooruit
segmenten uitgaande van dezelfde criteria segment) kunnen worden gegenereerd.
* Steun aan residualize (geschikte) plakken in uitvoerbare class-bestanden.
* Ondersteuning voor context-gevoelige slicing via context plak rijk criteria specificatie.
* Steun de slice te beperken tot een bepaald deel van het systeem scope specificaties.
* Steun aan slice criteria, snijmachine configuraties en plakken serialize.
Alle modules in Indus projectwerk op Jimple, een tussenliggende representatie van Java, die door Roet toolkit van Sable-groep in McGill University. Elke module in het project worden blootgesteld als één of meer Eclipse plugins indien de ontvangen informatie is nuttig voor de gebruiker en vatbaar voor de gebruiker consumptie via een grafische user interface.
Software Engineering Filosofie
Elke module in dit project zullen enkel de gewenste functionaliteit te bieden via goed gedefinieerde interfaces die kunnen worden uitgevoerd om een ​​aangepast systeem te monteren met de juiste extensies die specifieke eis te voldoen. Als de interface duidelijk gescheiden van de uitvoering, kan een externe uitvoering die de vereiste interface naadloos worden gebruikt modules van dit project.
Achtergrond
De uitvoering van de meeste van de analyses werd gedreven door de eisen van de Java-programma snijmachine vereist door Bandera. Aangezien het programma slicer buiten Bandera wordt schoongespoten analyses kunnen worden gebruikt om andere transformaties zoals programma specialisatie via gedeeltelijke evaluatie mogelijk, we licht de analyses en transformaties in een nieuw project genaamd Indus.

Reacties op Indus

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!