Indus

Software screenshot:
Indus
Software detaljer:
Version: 0.8
Upload dato: 3 Jun 15
Licens: Gratis
Popularitet: 14

Rating: 5.0/5 (Total Votes: 1)

Indus er et forsøg på at give en samling af program analyser og transformationer implementeret i Java til at tilpasse og tilpasse Java-programmer. Indus er beregnet til at tjene som en paraply for:
* Statisk analyser, f.eks points-analyse, flygte analyse og afhængighed analyser,
* transformationer såsom program udskæring og program specialisering via partiel evaluering, og
* Enhver software-modul, der leverer analyser / transformationer i et bestemt program, f.eks Bandera eller platform såsom Eclipse.
På nuværende tidspunkt er der 3 moduler, der indgår i Indus. Flere moduler forventes at blive tilsat i løbet af tiden. Vi giver et overblik over hensigten med hvert modul, der er tilgængelige på nuværende tidspunkt.
Indus er et modul, der huser gennemførelsen vedrørende algoritmer og datastrukturer fælles for analyser og transformationer, som indgår i eller er planlagt til at være en del af Indus. Dette modul indeholder definition grænseflade fælles for de fleste analyser og transformationer at skabe en ramme, hvor forskellige implementeringer af analyser / transformationer kan kombineres til at danne systemer med lethed. Derfor er dette modul opdateres, når en ny slags analyse / transformation er implementeret som et modul i Indus. Dog vil en ny implementering af en analyse / transformation ikke påvirke dette modul, da det vil gennemføre en eksisterende grænseflade.
StaticAnalyses modul er beregnet til at være indsamling af statiske analyser, f.eks objekt-flow-analyse, flygte analyse og afhængighed analyser. Analyserne i dette modul anvende fælles grænseflader og implementeringer fra Indus og kan definere / give nye grænseflader / implementeringer specifikke for nye analyser. Eksisterende analyser er nævnt nedenfor.
* Objekt-flow analyse (OFA) er en punkter-til analyse for Java. Hver tildeling websted i den analyserede systemet behandles som en abstrakt genstand og dens flow gennem systemet spores til at udlede de mulige typer en modtager på et call-websted for at muliggøre opførelsen af ​​en præcis call-graf. Præcisionen af ​​analysen kan varieres i form af flow-følsomhed for metode lokale variable og objekt-følsomhed for eksempel felter.
* Undslippe Analyse er en udvidet gennemførelse af udgangsvejen analyse ved Ruf foreslået med henblik på beskæring interferens og klar afhængighed kanter. De udvidelser er i form af sømløse tilsætning af værdi ækvivalens til analyse for at forbedre påvisningen af ​​modstridende felt læser / skriver forekommer i forskellige tråde ud over bare at bruge typen lige primærvalgene i access udtryk. Analysen anvender også objekt-informationsstrømmen ortogonalt for yderligere at forbedre præcisionen.
* Dependence Analyser er en samling af afhængighed analyser: entry-baserede styring, exit-baserede styring, identifikator-baserede data, reference--baserede data, interferens, klar, synkronisering og divergens, der kræves af analyser / transformationer sådant program udskæring og delvis evaluering . Interferens og klar afhængighed analyser afhænger af den tidligere flugt analyse mens reference--baserede data og synkronisering afhængighed analyser afhænger af objekt-informationsstrømmen og det beregnede call-graf information. Nogle analyser har varierende niveauer af præcision som kan varieres via en veldefineret grænseflade.
* Side-Effect Analysis giver metoden niveau bivirkning information. Brugeren kan søge, hvis nogen af ​​de argumenter / parametre til et call-site / metode vil blive påvirket enten direkte (umiddelbare medlemmer) eller indirekte (rekursivt nås medlemmer). Ligeledes kan brugeren give en dataadgang sti forankret på argumenter / parametre til et call-site / metode og forespørgsel, hvis slutpunkt af dataadgang stien påvirkes af samtalen / metode.
* Monitor Anlaysis er en simpel analyse, der giver monitor / lås graf oplysninger for den givne system.
* Safe Lock Analysis er en analyse, der konservativt opdager hvis en lås (monitorer) ikke vil blive afholdt på ubestemt tid. Denne information bliver brugt i forbindelse med tidsmæssige afhængigheder steming for Object.wait () og Object.notify () / Object.notifyAll (), da det sker i klar afhængighed.
* Atomicity Analysis indeholder oplysninger om Atomicity i givet system. Nuværende gennemførelse er afhængig af flugt analyse til at forudsige, om en erklæring kan udføres atomically. Denne information bruges til at påvise atomare område af koder. Denne information er nyttig i applikationer såsom model kontrol at reducere størrelsen af ​​tilstandsrummet dermed forbedre ydeevnen.
Nogle analyser kan være store nok til at udgøre modul på deres egne og sådanne analyser vil være vært som forskellige moduler i Indus stedet for at blive opslugt af dette modul.
Java Program Slicer modul indeholder kernen implementering af Java-program slicer sammen med adaptere, der leverer den pålægsmaskine i andre applikationer såsom Bandera og Eclipse. Implementeringen er architected som et bibliotek i stedet for som en ansøgning til at lette genbrug af det er subdelene. Kernen er uafhængig af ansøgningen; Hver applikations krav om skive kan opfyldes ved kodning op implementeringer af efterbehandling grænseflader og hægte i disse implementeringer til at danne en tilpasset pålægsmaskine.
Dette modul er stærkt afhængig af oplysninger fra afhængighed analyser og også call-graf fra OFA via veldefinerede grænseflader, der muliggør eksterne implementeringer, der skal anvendes til udskæring.
Denne implementering af slicer er leveret til Eclipse med en intuitiv UI via Kaveri plugin.
Features: o
Bagud og Fremad skive generation. Komplette skiver (forening af frem og tilbage
skiver startende fra de samme skive kriterier) kan genereres.
* Støtte til residualize (passende) skiver i eksekverbare class filer.
* Støtte til kontekstafhængige udskæring via kontekst rige skive kriterier specifikation.
* Støtte for at begrænse udsnittet til en bestemt del af systemet ved scope specifikationer.
* Støtte til serialisere skive kriterier, pålægsmaskine konfigurationer og skiver.
Alle moduler i Indus projektarbejde på Jimple, en mellemliggende repræsentation af Java, der leveres af sod toolkit fra Sable gruppe i McGill University. Hvert modul i projektet, vil blive afsløret som en eller flere Eclipse plugins hvis angivne information er nyttig for brugeren og medgørlige for bruger forbrug via en grafisk brugergrænseflade.
Software Engineering Filosofi
Hvert modul i dette projekt vil give bare den ønskede funktionalitet via veldefinerede grænseflader, der kan gennemføres for at samle et skræddersyet system, med passende udvidelser, der opfylder specifikke krav. Da grænsefladen er klart adskilt fra gennemførelsen, kan enhver ekstern implementering, der giver den nødvendige grænseflade problemfrit bruges med moduler fra dette projekt.
Baggrund
Gennemførelsen af ​​de fleste af analyserne var drevet af kravene i Java-program slicer kræves af Bandera. Men da programmet pålægsmaskine kunne anvendes uden Bandera og analyserne kunne bruges til at gøre det muligt for andre transformationer såsom program specialisering via partiel evaluering, flyttede vi analyserne og transformationer i et nyt projekt kaldet Indus.

Kommentarer til Indus

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!