8 resultados para implicit dynamic analysis
em Université de Montréal, Canada
Resumo:
Mémoire numérisé par la Division de la gestion de documents et des archives de l'Université de Montréal
Resumo:
Analyser le code permet de vérifier ses fonctionnalités, détecter des bogues ou améliorer sa performance. L’analyse du code peut être statique ou dynamique. Des approches combinants les deux analyses sont plus appropriées pour les applications de taille industrielle où l’utilisation individuelle de chaque approche ne peut fournir les résultats souhaités. Les approches combinées appliquent l’analyse dynamique pour déterminer les portions à problèmes dans le code et effectuent par la suite une analyse statique concentrée sur les parties identifiées. Toutefois les outils d’analyse dynamique existants génèrent des données imprécises ou incomplètes, ou aboutissent en un ralentissement inacceptable du temps d’exécution. Lors de ce travail, nous nous intéressons à la génération de graphes d’appels dynamiques complets ainsi que d’autres informations nécessaires à la détection des portions à problèmes dans le code. Pour ceci, nous faisons usage de la technique d’instrumentation dynamique du bytecode Java pour extraire l’information sur les sites d’appels, les sites de création d’objets et construire le graphe d’appel dynamique du programme. Nous démontrons qu’il est possible de profiler dynamiquement une exécution complète d’une application à temps d’exécution non triviale, et d’extraire la totalité de l’information à un coup raisonnable. Des mesures de performance de notre profileur sur trois séries de benchmarks à charges de travail diverses nous ont permis de constater que la moyenne du coût de profilage se situe entre 2.01 et 6.42. Notre outil de génération de graphes dynamiques complets, nommé dyko, constitue également une plateforme extensible pour l’ajout de nouvelles approches d’instrumentation. Nous avons testé une nouvelle technique d’instrumentation des sites de création d’objets qui consiste à adapter les modifications apportées par l’instrumentation au bytecode de chaque méthode. Nous avons aussi testé l’impact de la résolution des sites d’appels sur la performance générale du profileur.
Resumo:
Un système, décrit avec un grand nombre d'éléments fortement interdépendants, est complexe, difficile à comprendre et à maintenir. Ainsi, une application orientée objet est souvent complexe, car elle contient des centaines de classes avec de nombreuses dépendances plus ou moins explicites. Une même application, utilisant le paradigme composant, contiendrait un plus petit nombre d'éléments, faiblement couplés entre eux et avec des interdépendances clairement définies. Ceci est dû au fait que le paradigme composant fournit une bonne représentation de haut niveau des systèmes complexes. Ainsi, ce paradigme peut être utilisé comme "espace de projection" des systèmes orientés objets. Une telle projection peut faciliter l'étape de compréhension d'un système, un pré-requis nécessaire avant toute activité de maintenance et/ou d'évolution. De plus, il est possible d'utiliser cette représentation, comme un modèle pour effectuer une restructuration complète d'une application orientée objets opérationnelle vers une application équivalente à base de composants tout aussi opérationnelle. Ainsi, La nouvelle application bénéficiant ainsi, de toutes les bonnes propriétés associées au paradigme composants. L'objectif de ma thèse est de proposer une méthode semi-automatique pour identifier une architecture à base de composants dans une application orientée objets. Cette architecture doit, non seulement aider à la compréhension de l'application originale, mais aussi simplifier la projection de cette dernière dans un modèle concret de composant. L'identification d'une architecture à base de composants est réalisée en trois grandes étapes: i) obtention des données nécessaires au processus d'identification. Elles correspondent aux dépendances entre les classes et sont obtenues avec une analyse dynamique de l'application cible. ii) identification des composants. Trois méthodes ont été explorées. La première utilise un treillis de Galois, la seconde deux méta-heuristiques et la dernière une méta-heuristique multi-objective. iii) identification de l'architecture à base de composants de l'application cible. Cela est fait en identifiant les interfaces requises et fournis pour chaque composant. Afin de valider ce processus d'identification, ainsi que les différents choix faits durant son développement, j'ai réalisé différentes études de cas. Enfin, je montre la faisabilité de la projection de l'architecture à base de composants identifiée vers un modèle concret de composants.
Resumo:
De nos jours, les applications de grande taille sont développées à l’aide de nom- breux cadres d’applications (frameworks) et intergiciels (middleware). L’utilisation ex- cessive d’objets temporaires est un problème de performance commun à ces applications. Ce problème est appelé “object churn”. Identifier et comprendre des sources d’“object churn” est une tâche difficile et laborieuse, en dépit des récentes avancées dans les tech- niques d’analyse automatiques. Nous présentons une approche visuelle interactive conçue pour aider les développeurs à explorer rapidement et intuitivement le comportement de leurs applications afin de trouver les sources d’“object churn”. Nous avons implémenté cette technique dans Vasco, une nouvelle plate-forme flexible. Vasco se concentre sur trois principaux axes de con- ception. Premièrement, les données à visualiser sont récupérées dans les traces d’exécu- tion et analysées afin de calculer et de garder seulement celles nécessaires à la recherche des sources d’“object churn”. Ainsi, des programmes de grande taille peuvent être vi- sualisés tout en gardant une représentation claire et compréhensible. Deuxièmement, l’utilisation d’une représentation intuitive permet de minimiser l’effort cognitif requis par la tâche de visualisation. Finalement, la fluidité des transitions et interactions permet aux utilisateurs de garder des informations sur les actions accomplies. Nous démontrons l’efficacité de l’approche par l’identification de sources d’“object churn” dans trois ap- plications utilisant intensivement des cadres d’applications framework-intensive, inclu- ant un système commercial.
Resumo:
À la base, les jeux de hasard et d’argent (JHA) se révèlent pour la grande majorité des gens une activité ludique agréable. On les associe effectivement aux loisirs, puisqu’ils répondent pratiquement aux mêmes besoins, dont la curiosité, le divertissement, la détente, la socialisation et la reconnaissance (Chevalier, 2003; Chevalier & Papineau, 2007; Paradis & Courteau, 2003). En contrepartie, ils constituent tout de même un risque d’excès. Bien que personne ne soit vraiment à l’abri de la dépendance, les écrits scientifiques montrent que certains groupes se révèlent particulièrement à risque. Avec les personnes qui souffrent de troubles mentaux et toxicomaniaques (Walters, 1997), la population correctionnelle se trouve parmi les individus les plus susceptibles de présenter des problèmes liés au jeu pathologique (Abbott, McKenna, & Giles, 2005; Ashcroft, Daniels, & Hart, 2004; Lahn, 2005). Or, si plusieurs études informent sur les habitudes de jeu précarcérales des hommes condamnés à l’emprisonnement, peu renseignent sur ce qu’il advient de cette pratique à l’intérieur des établissements de détention. Malgré une interdiction formelle des services correctionnels, on reconnaît pourtant la présence des JHA en prison (Abbott et al., 2005; Lahn & Grabosky, 2003; Nixon, Leigh, & Grabosky, 2006; Williams, Royston, & Hagen, 2005; Lahn, 2005). Cependant, la plupart des études se contentent trop souvent de dresser un portrait purement descriptif des types de jeux et des formes de mises. Une meilleure compréhension de cette pratique intra-muros se révèle essentielle, ne serait-ce que si l’on tient compte de la proportion non négligeable de détenus aux prises avec une telle dépendance. Cette thèse entend donc améliorer la compréhension de cette pratique dans les établissements de détention fédéraux du Québec, en se basant sur l’opinion et l’expérience de 51 hommes qui y sont incarcérés. Des entrevues qualitatives en français ont été effectuées avec des détenus québécois de plus de 18 ans, purgeant une peine d’emprisonnement minimale de vingt-quatre mois. Les résultats obtenus suite à des analyses thématiques sont répartis dans trois articles scientifiques. Le premier article décrit le déroulement des JHA intra-muros et analyse l’influence du milieu carcéral sur l’accès à ces activités et leur signification. Contrairement à nos attentes, le règlement interdisant les paris ne s’avère pas un obstacle central à leur pratique. Des éléments liés au contexte correctionnel et à la sentence en restreignent davantage la participation. La disponibilité et les bienfaits habituellement retirés des JHA, comme le plaisir et l’excitation, s’avèrent beaucoup plus limités que ce que ces activités offrent habituellement dans la société libre. Le second article étudie les conséquences potentielles des JHA, de même que la façon dont les détenus y réagissent. À la base, le seul fait que ces activités impliquent obligatoirement un échange d’argent, de biens de valeur ou de services rendus engendre pour tous les joueurs un risque de contracter des dettes. Une analyse dynamique montre que certaines frictions se développent autour des JHA, qui s’expliquent toutefois mieux par les caractéristiques du milieu carcéral. Le dernier article aborde les motifs qui justifient la participation ou non de la population correctionnelle à des JHA durant leur incarcération. Il tient compte des habitudes de jeu au cours des douze mois qui ont précédé la détention, soit des non-joueurs, des joueurs récréatifs et des joueurs problématiques. Pour la plupart des détenus, les JHA servent d’alternative ludique à l’ennui, mais certains les utilisent également dans le but de s’intégrer, voire indirectement de se protéger. Fait encore plus intéressant, malgré la présence de joueurs dépendants parmi les hommes interviewés, aucune des motivations généralement associées au jeu pathologique n’a été rapportée pour justifier la pratique des JHA en prison. En somme, les JHA demeurent généralement sans conséquence dans les établissements de détention québécois, puisque très peu de détenus semblent dépasser leurs limites et s’endetter. Les conflits entourant ces activités apparaissent surtout sous forme de querelles, suite à des doutes sur l’intégrité d’un joueur ou une défaite non assumée. Les événements violents, comme des règlements de compte, faisant suite à des dettes impayées se révèlent exceptionnels. Les résultats de cette thèse montrent également que certains joueurs pathologiques, malgré l’opportunité de s’adonner à des JHA, s’abstiennent ou cessent de miser au cours de leur incarcération. Ces dernières données permettent de réfléchir sur le concept de dépendance et sur les éléments prometteurs pour le traitement des joueurs problématiques incarcérés.
Resumo:
La compréhension des objets dans les programmes orientés objet est une tâche impor- tante à la compréhension du code. JavaScript (JS) est un langage orienté-objet dyna- mique, et son dynamisme rend la compréhension du code source très difficile. Dans ce mémoire, nous nous intéressons à l’analyse des objets pour les programmes JS. Notre approche construit de façon automatique un graphe d’objets inspiré du diagramme de classes d’UML à partir d’une exécution concrète d’un programme JS. Le graphe résul- tant montre la structure des objets ainsi que les interactions entre eux. Notre approche utilise une transformation du code source afin de produire cette in- formation au cours de l’exécution. Cette transformation permet de recueillir de l’infor- mation complète au sujet des objets crées ainsi que d’intercepter toutes les modifications de ces objets. À partir de cette information, nous appliquons plusieurs abstractions qui visent à produire une représentation des objets plus compacte et intuitive. Cette approche est implémentée dans l’outil JSTI. Afin d’évaluer l’utilité de l’approche, nous avons mesuré sa performance ainsi que le degré de réduction dû aux abstractions. Nous avons utilisé les dix programmes de réfé- rence de V8 pour cette comparaison. Les résultats montrent que JSTI est assez efficace pour être utilisé en pratique, avec un ralentissement moyen de 14x. De plus, pour 9 des 10 programmes, les graphes sont suffisamment compacts pour être visualisés. Nous avons aussi validé l’approche de façon qualitative en inspectant manuellement les graphes gé- nérés. Ces graphes correspondent généralement très bien au résultat attendu. Mots clés: Analyse de programmes, analyse dynamique, JavaScript, profilage.
Resumo:
Cette recherche doctorale vise à comprendre et interpréter les conditions d’émergence d’un engagement chez des jeunes en situation de marginalité. Des études ont montré que cette situation peut-être un frein important à l’engagement, en raison d’un manque de ressources personnelles, organisationnelles, ou culturelles. Généralement, on a tendance à insister sur le fait que « les jeunes » ne veulent plus militer. Pourtant, d’importantes actions collectives (mouvements étudiants ou communautaires) ou initiatives citoyennes personnelles (écriture de blogues ou signature de pétitions) viennent contredire cette affirmation. En fait, certaines prises de position, dans la sphère privée notamment, échappent à toute analyse classique et sont prises pour un non-engagement, de l’individualisme voire de l’apathie. À partir d’une approche qualitative, exploratoire et interprétative, le dispositif méthodologique de cette thèse privilégie l’observation participante et les entretiens de groupe afin de recueillir le point de vue des jeunes et d’observer un certain nombre d’actions collectives. C’est par le truchement d’organismes communautaires de jeunesse (OCJ) montréalais qu’une centaine de jeunes ont été rencontrés, de septembre 2010 à décembre 2011. L’analyse itérative du corpus de données s’est inspirée des principes de la théorisation ancrée (grounded theory). Un premier niveau d’analyse descriptive a permis de mettre en exergue les contraintes et les conditions d’émergence de l’engagement ainsi que les performances des jeunes en situation de marginalité. Les différentes formes d’engagement ont ensuite été explorées puis mises en perspective dans différents espaces : « original », « intermédiaire » et « négatif ». L’espace original correspond, dans cette thèse, aux moyens d’actions traditionnels (vote, militantisme politique). Nos résultats montrent que le positionnement des jeunes dans ce cadre est très tranché. En fait, non seulement ces modes d’actions émergent rarement mais, s’ils existent, sont le plus souvent soutenus par des intervenants. Dans un autre espace, les jeunes développent parfois des postures particulières, plus radicales ou, au contraire, des postures de retrait, de non-engagement. Cela se rapporte à ce qu’il conviendrait d’appeler l’espace négatif. Dans ce cas, les contraintes de la situation de marginalité poussent certains jeunes à mettre à distance l’engagement et à se situer aux marges des espaces de participation. L’opposition à toutes formes traditionnelles d’engagement amène des jeunes à envisager des moyens d’action plus radicaux que l’on peut également circonscrire dans cet espace négatif. On trouve au final une tout autre dynamique selon laquelle des jeunes prennent position au sein de ce que l’on a appelé l’espace intermédiaire. Les territoires et les modes d’action sont alors aussi éclectiques que la rue, l’entourage personnel, ou la création artistique underground. Si les rapports à l’engagement des jeunes rencontrés sont complexes, parfois ambivalents, ils révèlent toutefois la recherche d’une alternative, la construction de modes d’action particuliers. Une analyse dynamique des contraintes et des conditions d’émergence de l’engagement des jeunes en difficulté montre que leurs prises de position dépassent la simple dialectique engagement/non-engagement. Ainsi, ce que l’on pourrait appeler un « alter-engagement » se dessine à travers les prises de position de ces jeunes, particulièrement au sein de l’espace intermédiaire. Ce concept est développé pour mettre en évidence les formes d’engagement plus intimes, plus communautaires ou plus artistiques. L’alter-engagement se définit alors comme une forme de prise de position critique, impolitique, en réaction à la fois à l’engagement traditionnel, à une posture de retrait et à une posture plus radicale.
Resumo:
Nous proposons une approche d’extraction des diagrammes de séquence à partir de programmes orientés objets en combinant l’analyse statique et dynamique. Notre objectif est d’extraire des diagrammes compacts mais contenant le plus d’informations possible pour faciliter la compréhension du comportement d’un programme. Pour cette finalité, nous avons défini un ensemble d’heuristiques pour filtrer les événements d’exécution les moins importants et extraire les structures de contrôles comme les boucles et la récursivité. Nous groupons aussi les objets en nous basant sur leurs types respectifs. Pour tenir compte des variations d’un même scénario, notre approche utilise plusieurs traces d’exécution et les aligne pour couvrir le plus possible le comportement du programme. Notre approche a été évaluée sur un système de simulation d’ATM. L’étude de cas montre que notre approche produit des diagrammes de séquence concis et informatifs.