Indus

Logiciel capture d'écran:
Indus
Détails logiciels:
Version: 0.8
Date de transfert: 3 Jun 15
Licence: Gratuit
Popularité: 14

Rating: 5.0/5 (Total Votes: 1)

Indus est un effort pour fournir une collection d'analyses programme et les transformations mises en œuvre en Java pour personnaliser et adapter les programmes Java. Indus est destiné à servir comme un parapluie pour:
* Analyse statique tels que les points à l'analyse, échappent à l'analyse, et analyse la dépendance,
* transformations telles que le tranchage du programme et de la spécialisation du programme via l'évaluation partielle, et
* Un module de logiciel qui fournit les analyses / transformations dans une application particulière comme Bandera ou plate-forme tel que Eclipse.
À l'heure actuelle, il ya 3 modules qui font partie de l'Indus. Autres modules sont prévus pour être ajouté au cours du temps. Nous offrons un aperçu de l'intention de chaque module qui sont disponibles à l'heure actuelle.
Indus est un module qui abrite la mise en œuvre se rapportant à des algorithmes et des structures communes à des analyses et des transformations qui font partie ou sont prévues afin de faire partie de l'Indus données. Ce module contient la définition de l'interface commune à la plupart des analyses et des transformations de fournir un cadre dans lequel les différentes implémentations d'analyses / transformations peuvent être combinés pour former des systèmes avec facilité. Par conséquent, ce module est mis à jour quand une nouvelle sorte d'analyse / transformation est implémenté comme un module dans l'Indus. Cependant, une nouvelle mise en œuvre d'une analyse / transformation ne sera pas affecter ce module car il mettra en œuvre une interface existante.
Module StaticAnalyses est destinée à être la collecte des analyses statiques telles que l'analyse objet flux, échapper à l'analyse, et analyse la dépendance. Les analyses de ce module utilisent des interfaces et implémentations communes de l'Indus et peuvent définir / fournir de nouvelles interfaces / implémentations spécifiques à de nouvelles analyses. Les analyses existantes sont mentionnés ci-dessous.
* Analyse Object-débit (OFA) est un des points à l'analyse pour Java. Chaque site d'allocation dans le système analysé est traitée comme un objet abstrait et son écoulement à travers le système est suivi de déduire les types possibles d'un récepteur à un site d'appel pour permettre la construction d'un graphe d'appels précis. La précision de l'analyse peut être modifiée en termes de flux-sensibilité pour la méthode des variables locales et objet-sensibilité pour les champs d'instance.
* Échappent à l'analyse est une mise en oeuvre prolongée de l'analyse d'échappement proposé par Ruf aux fins de brouillage de la taille et des bords de dépendance prêts. Les extensions sont sous la forme de la plus transparente de la valeur d'équivalence à l'analyse pour améliorer la détection de champ contradictoires lectures / écritures se produisant dans différents threads au-delà en utilisant le type d'égalité des primaires des expressions d'accès. L'analyse utilise également des informations objet flux perpendiculairement à améliorer encore la précision.
* Dépendance analyses est une collection de dépendance analyses: contrôle basé entrée, contrôle basé sur la sortie, des données sur la base identifiant, des données de référence, les interférences, prêt, synchronisation, et de divergence, requis par analyses / transformations telles tranchage du programme et l'évaluation partielle . Interférence et la dépendance Prêt analyses dépendent de l'analyse d'échappement précédente tandis que les données sur la base de référence et de la dépendance de synchronisation analyses dépendent informations objet flux et les informations graphe d'appels calculée. Certaines analyses ont différents niveaux de précision qui peuvent varier via une interface bien définie.
* Side-Effect Analysis fournit des informations effet secondaire niveau de la méthode. L'utilisateur peut interroger si l'un des arguments / paramètres à un appel site / méthode seront affectés soit directement (membres immédiats) ou indirectement (récursive membres accessibles). De même, l'utilisateur peut fournir un chemin d'accès aux données enracinée au arguments / paramètres à un appel site / méthode et requête si le point du chemin d'accès aux données de fin est affectée par l'appel / méthode.
* Moniteur anlaysis est une analyse simple qui fournit moniteur / informations graphique serrure pour le système donné.
* Analyse Safe Lock est une analyse qui découvre conservatrice si un verrou (moniteurs) ne sera pas tenu indéfiniment. Cette information est utilisée en conjonction avec des dépendances temporelles steming pour Object.wait () et Object.notify () / Object.notifyAll () comme cela se fait en fonction prêt.
* Analyse atomicité fournit des informations sur l'atomicité dans le système donné. La mise en œuvre actuelle repose sur l'analyse d'échappement de prédire si une instruction peut être exécutée de façon atomique. Cette information est utilisée pour détecter la région atomique de codes. Cette information est utile pour des applications telles que la vérification de modèle afin de réduire la taille de l'espace d'état, par conséquent, d'améliorer les performances.
Certaines analyses peuvent être assez grande pour constituer module sur leur propre et ces analyses seront hébergé en différents modules dans Indus plutôt que d'être consommée par ce module.
Le module Java Programme Slicer contient l'implémentation de base de Java programme trancheuse avec adaptateurs qui fournissent la trancheuse dans d'autres applications telles que Bandera et Eclipse. La mise en œuvre est architecturé comme une bibliothèque plutôt que comme une application pour faciliter la réutilisation de lui est sous-parties. Le noyau est indépendante de l'application; L'exigence de la tranche de chaque application peut être satisfaite par le codage de implémentations d'interfaces de post-traitement et d'accrochage dans ces implémentations pour former une trancheuse personnalisé.
Ce module repose largement sur les informations fournies par la dépendance des analyses et aussi le graphe d'appels fournies par OFA via des interfaces bien définies qui permet des implémentations externes à être utilisés pour le tranchage.
Cette mise en œuvre de trancheuse est livré à Eclipse avec une interface utilisateur intuitive via Kaveri plugin.
Caractéristiques: o
Génération de tranche amont et en aval. Tranches complètes (union de l'arrière et l'avant
tranches à partir des mêmes critères de tranche) peuvent être générés.
* Appui à residualize tranches (appropriés) dans des fichiers de classe exécutables.
* Support pour le tranchage contextuelle via riche spécification des critères de tranche de contexte.
* Support de restreindre la tranche à une partie particulière du système par les spécifications de portée.
* Support sérialiser critères de tranche, les configurations de trancheuse, et des tranches.
Tous les modules de travail du projet Indus Jimple, une représentation intermédiaire de Java, fournis par la suie boîte à outils du groupe Sable à l'Université McGill. Chaque module dans le projet sera exposé comme un ou plusieurs plugins Eclipse si l'information fournie est utile à l'utilisateur et se prêtent à la consommation de l'utilisateur via une interface utilisateur graphique.
Logiciel Philosophie Ingénierie
Chaque module de ce projet fournira juste la fonctionnalité requise par l'intermédiaire des interfaces bien définies qui peuvent être mises en œuvre pour assembler un système personnalisé avec des extensions convenables qui répondent exigence spécifique. Comme l'interface est clairement séparée de la mise en œuvre, toute mise en œuvre externe qui fournit l'interface nécessaire peut être facilement utilisée avec les modules de ce projet.
Contexte
La mise en œuvre de la plupart des analyses a été tirée par les exigences du programme Java trancheuse requises par Bandera. Cependant, comme la trancheuse de programme pourrait être utilisé à l'extérieur Bandera et les analyses pourrait être utilisé pour permettre à d'autres transformations comme la spécialisation de programme par évaluation partielle, nous avons déménagé les analyses et les transformations dans un nouveau projet appelé Indus.

Commentaires à Indus

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!