24 resultados para problems with object-oriented paradigm
Resumo:
Les logiciels sont en constante évolution, nécessitant une maintenance et un développement continus. Ils subissent des changements tout au long de leur vie, que ce soit pendant l'ajout de nouvelles fonctionnalités ou la correction de bogues dans le code. Lorsque ces logiciels évoluent, leurs architectures ont tendance à se dégrader avec le temps et deviennent moins adaptables aux nouvelles spécifications des utilisateurs. Elles deviennent plus complexes et plus difficiles à maintenir. Dans certains cas, les développeurs préfèrent refaire la conception de ces architectures à partir du zéro plutôt que de prolonger la durée de leurs vies, ce qui engendre une augmentation importante des coûts de développement et de maintenance. Par conséquent, les développeurs doivent comprendre les facteurs qui conduisent à la dégradation des architectures, pour prendre des mesures proactives qui facilitent les futurs changements et ralentissent leur dégradation. La dégradation des architectures se produit lorsque des développeurs qui ne comprennent pas la conception originale du logiciel apportent des changements au logiciel. D'une part, faire des changements sans comprendre leurs impacts peut conduire à l'introduction de bogues et à la retraite prématurée du logiciel. D'autre part, les développeurs qui manquent de connaissances et–ou d'expérience dans la résolution d'un problème de conception peuvent introduire des défauts de conception. Ces défauts ont pour conséquence de rendre les logiciels plus difficiles à maintenir et évoluer. Par conséquent, les développeurs ont besoin de mécanismes pour comprendre l'impact d'un changement sur le reste du logiciel et d'outils pour détecter les défauts de conception afin de les corriger. Dans le cadre de cette thèse, nous proposons trois principales contributions. La première contribution concerne l'évaluation de la dégradation des architectures logicielles. Cette évaluation consiste à utiliser une technique d’appariement de diagrammes, tels que les diagrammes de classes, pour identifier les changements structurels entre plusieurs versions d'une architecture logicielle. Cette étape nécessite l'identification des renommages de classes. Par conséquent, la première étape de notre approche consiste à identifier les renommages de classes durant l'évolution de l'architecture logicielle. Ensuite, la deuxième étape consiste à faire l'appariement de plusieurs versions d'une architecture pour identifier ses parties stables et celles qui sont en dégradation. Nous proposons des algorithmes de bit-vecteur et de clustering pour analyser la correspondance entre plusieurs versions d'une architecture. La troisième étape consiste à mesurer la dégradation de l'architecture durant l'évolution du logiciel. Nous proposons un ensemble de m´etriques sur les parties stables du logiciel, pour évaluer cette dégradation. La deuxième contribution est liée à l'analyse de l'impact des changements dans un logiciel. Dans ce contexte, nous présentons une nouvelle métaphore inspirée de la séismologie pour identifier l'impact des changements. Notre approche considère un changement à une classe comme un tremblement de terre qui se propage dans le logiciel à travers une longue chaîne de classes intermédiaires. Notre approche combine l'analyse de dépendances structurelles des classes et l'analyse de leur historique (les relations de co-changement) afin de mesurer l'ampleur de la propagation du changement dans le logiciel, i.e., comment un changement se propage à partir de la classe modifiée è d'autres classes du logiciel. La troisième contribution concerne la détection des défauts de conception. Nous proposons une métaphore inspirée du système immunitaire naturel. Comme toute créature vivante, la conception de systèmes est exposée aux maladies, qui sont des défauts de conception. Les approches de détection sont des mécanismes de défense pour les conception des systèmes. Un système immunitaire naturel peut détecter des pathogènes similaires avec une bonne précision. Cette bonne précision a inspiré une famille d'algorithmes de classification, appelés systèmes immunitaires artificiels (AIS), que nous utilisions pour détecter les défauts de conception. Les différentes contributions ont été évaluées sur des logiciels libres orientés objets et les résultats obtenus nous permettent de formuler les conclusions suivantes: • Les métriques Tunnel Triplets Metric (TTM) et Common Triplets Metric (CTM), fournissent aux développeurs de bons indices sur la dégradation de l'architecture. La d´ecroissance de TTM indique que la conception originale de l'architecture s’est dégradée. La stabilité de TTM indique la stabilité de la conception originale, ce qui signifie que le système est adapté aux nouvelles spécifications des utilisateurs. • La séismologie est une métaphore intéressante pour l'analyse de l'impact des changements. En effet, les changements se propagent dans les systèmes comme les tremblements de terre. L'impact d'un changement est plus important autour de la classe qui change et diminue progressivement avec la distance à cette classe. Notre approche aide les développeurs à identifier l'impact d'un changement. • Le système immunitaire est une métaphore intéressante pour la détection des défauts de conception. Les résultats des expériences ont montré que la précision et le rappel de notre approche sont comparables ou supérieurs à ceux des approches existantes.
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:
Les logiciels sont en constante évolution, nécessitant une maintenance et un développement continus. Ils subissent des changements tout au long de leur vie, que ce soit pendant l'ajout de nouvelles fonctionnalités ou la correction de bogues. Lorsque les logiciels évoluent, leurs architectures ont tendance à se dégrader et deviennent moins adaptables aux nouvelles spécifications des utilisateurs. En effet, les architectures de ces logiciels deviennent plus complexes et plus difficiles à maintenir à cause des nombreuses dépendances entre les artefacts. Par conséquent, les développeurs doivent comprendre les dépendances entre les artefacts des logiciels pour prendre des mesures proactives qui facilitent les futurs changements et ralentissent la dégradation des architectures des logiciels. D'une part, le maintien d'un logiciel sans la compréhension des les dépendances entre ses artefacts peut conduire à l'introduction de défauts. D'autre part, lorsque les développeurs manquent de connaissances sur l'impact de leurs activités de maintenance, ils peuvent introduire des défauts de conception, qui ont un impact négatif sur l'évolution du logiciel. Ainsi, les développeurs ont besoin de mécanismes pour comprendre comment le changement d'un artefact impacte le reste du logiciel. Dans cette thèse, nous proposons trois contributions principales : La spécification de deux nouveaux patrons de changement et leurs utilisations pour fournir aux développeurs des informations utiles concernant les dépendances de co-changement. La spécification de la relation entre les patrons d'évolutions des artefacts et les fautes. La découverte de la relation entre les dépendances des anti-patrons et la prédisposition des différentes composantes d'un logiciel aux fautes.
Resumo:
La gestion des ressources, équipements, équipes de travail, et autres, devrait être prise en compte lors de la conception de tout plan réalisable pour le problème de conception de réseaux de services. Cependant, les travaux de recherche portant sur la gestion des ressources et la conception de réseaux de services restent limités. La présente thèse a pour objectif de combler cette lacune en faisant l’examen de problèmes de conception de réseaux de services prenant en compte la gestion des ressources. Pour ce faire, cette thèse se décline en trois études portant sur la conception de réseaux. La première étude considère le problème de capacitated multi-commodity fixed cost network design with design-balance constraints(DBCMND). La structure multi-produits avec capacité sur les arcs du DBCMND, de même que ses contraintes design-balance, font qu’il apparaît comme sous-problème dans de nombreux problèmes reliés à la conception de réseaux de services, d’où l’intérêt d’étudier le DBCMND dans le contexte de cette thèse. Nous proposons une nouvelle approche pour résoudre ce problème combinant la recherche tabou, la recomposition de chemin, et une procédure d’intensification de la recherche dans une région particulière de l’espace de solutions. Dans un premier temps la recherche tabou identifie de bonnes solutions réalisables. Ensuite la recomposition de chemin est utilisée pour augmenter le nombre de solutions réalisables. Les solutions trouvées par ces deux méta-heuristiques permettent d’identifier un sous-ensemble d’arcs qui ont de bonnes chances d’avoir un statut ouvert ou fermé dans une solution optimale. Le statut de ces arcs est alors fixé selon la valeur qui prédomine dans les solutions trouvées préalablement. Enfin, nous utilisons la puissance d’un solveur de programmation mixte en nombres entiers pour intensifier la recherche sur le problème restreint par le statut fixé ouvert/fermé de certains arcs. Les tests montrent que cette approche est capable de trouver de bonnes solutions aux problèmes de grandes tailles dans des temps raisonnables. Cette recherche est publiée dans la revue scientifique Journal of heuristics. La deuxième étude introduit la gestion des ressources au niveau de la conception de réseaux de services en prenant en compte explicitement le nombre fini de véhicules utilisés à chaque terminal pour le transport de produits. Une approche de solution faisant appel au slope-scaling, la génération de colonnes et des heuristiques basées sur une formulation en cycles est ainsi proposée. La génération de colonnes résout une relaxation linéaire du problème de conception de réseaux, générant des colonnes qui sont ensuite utilisées par le slope-scaling. Le slope-scaling résout une approximation linéaire du problème de conception de réseaux, d’où l’utilisation d’une heuristique pour convertir les solutions obtenues par le slope-scaling en solutions réalisables pour le problème original. L’algorithme se termine avec une procédure de perturbation qui améliore les solutions réalisables. Les tests montrent que l’algorithme proposé est capable de trouver de bonnes solutions au problème de conception de réseaux de services avec un nombre fixe des ressources à chaque terminal. Les résultats de cette recherche seront publiés dans la revue scientifique Transportation Science. La troisième étude élargie nos considérations sur la gestion des ressources en prenant en compte l’achat ou la location de nouvelles ressources de même que le repositionnement de ressources existantes. Nous faisons les hypothèses suivantes: une unité de ressource est nécessaire pour faire fonctionner un service, chaque ressource doit retourner à son terminal d’origine, il existe un nombre fixe de ressources à chaque terminal, et la longueur du circuit des ressources est limitée. Nous considérons les alternatives suivantes dans la gestion des ressources: 1) repositionnement de ressources entre les terminaux pour tenir compte des changements de la demande, 2) achat et/ou location de nouvelles ressources et leur distribution à différents terminaux, 3) externalisation de certains services. Nous présentons une formulation intégrée combinant les décisions reliées à la gestion des ressources avec les décisions reliées à la conception des réseaux de services. Nous présentons également une méthode de résolution matheuristique combinant le slope-scaling et la génération de colonnes. Nous discutons des performances de cette méthode de résolution, et nous faisons une analyse de l’impact de différentes décisions de gestion des ressources dans le contexte de la conception de réseaux de services. Cette étude sera présentée au XII International Symposium On Locational Decision, en conjonction avec XXI Meeting of EURO Working Group on Locational Analysis, Naples/Capri (Italy), 2014. En résumé, trois études différentes sont considérées dans la présente thèse. La première porte sur une nouvelle méthode de solution pour le "capacitated multi-commodity fixed cost network design with design-balance constraints". Nous y proposons une matheuristique comprenant la recherche tabou, la recomposition de chemin, et l’optimisation exacte. Dans la deuxième étude, nous présentons un nouveau modèle de conception de réseaux de services prenant en compte un nombre fini de ressources à chaque terminal. Nous y proposons une matheuristique avancée basée sur la formulation en cycles comprenant le slope-scaling, la génération de colonnes, des heuristiques et l’optimisation exacte. Enfin, nous étudions l’allocation des ressources dans la conception de réseaux de services en introduisant des formulations qui modèlent le repositionnement, l’acquisition et la location de ressources, et l’externalisation de certains services. À cet égard, un cadre de solution slope-scaling développé à partir d’une formulation en cycles est proposé. Ce dernier comporte la génération de colonnes et une heuristique. Les méthodes proposées dans ces trois études ont montré leur capacité à trouver de bonnes solutions.
Resumo:
We ask how the three known mechanisms for solving cost sharing problems with homogeneous cost functions - the value, the proportional, and the serial mechanisms - should be extended to arbitrary problem. We propose the Ordinality axiom, which requires that cost shares be invariante under all transactions preserving the nature of a cost sharing problem.
Resumo:
Le principal reproche qui est adressé au droit international est la faiblesse de ses mécanismes de sanctions. Pour cette raison, plusieurs penseurs juridiques ont conclu que le droit international n'existait pas. Le présent mémoire vise donc à étudier la rhétorique derrière cette affirmation et à examiner sa validité. Pour ce faire, nous analysons dans un premier temps la relation entre la sanction et le droit à travers le cadre positiviste du XIXe siècle. Nous étudions tour à tour les soi-disant critères constitutifs de la sanction. Nous les comparons avec d'autres ordres non juridiques pour ensuite rejeter le postulat positiviste qui fait de la contrainte et de la centralisation des pouvoirs les éléments essentiels de la sanction. Nous étudions ensuite le cadre d'adoption des sanctions économiques du Conseil de sécurité des Nations Unies. Cette étape nous permet d'expliquer les principales faiblesses et limitations du droit international. Parmi celles-ci, le manque de coopération internationale, le droit de veto et le principe de la souveraineté nationale sont les éléments qui freinent l'adoption des sanctions coopération internationale. Nous examinons ensuite les objectifs derrière l'imposition des sanctions ainsi que leur efficacité. Finalement, nous étudions les embargos en général et les embargos sur les armes. Cette étude nous permet d'une part de démontrer les effets des sanctions économiques sur la population civile et sur les États tiers. D'autre part, elle nous permet de mieux comprendre les problèmes relatifs à l'administration d'une sanction, ainsi qu'aux mesures de contournement des interdictions.
Resumo:
Ce mémoire traite de la construction d’un espace social citoyen à partir de l’analyse du travail d’intervention de deux organismes locaux situés à Trou du Nord (Haïti). Il s’agit d’explorer les manières dont les membres se représentent et s’approprient leur statut de citoyen. Pour mettre l’emphase sur les mécanismes associatifs et sociaux qui interviennent dans la construction de ce que nous nommons "espace social citoyen", nous avons mené une recherche qualitative dont la charpente interprétative est conçue avec l’aide des outils théorico-pratiques de la politique de participation (Barber, 1997) et l’intervention sociale collective (Lamoureux, 1991). Nous avançons l’hypothèse centrale que les pratiques associatives sont le vecteur de la construction d’un espace social citoyen à Trou du Nord. Cette hypothèse centrale est soutenue par deux hypothèses opératoires portant sur les conditions d’exercice de citoyenneté et l’affirmation individuelle de l’appartenance des membres à l’espace commun. Nous avons recueilli quatorze entretiens semi-directifs effectués avec les membres de l’Assemblée Populaire Veye Yo Trou du Nord (APVT) et du Rassemblement des Militants Solidaires de Trou du Nord (RAMSO). Les résultats de la recherche indiquent que les membres de ces deux organisations manifestent une grande volonté de contribuer au développement de leur localité et au «mieux-être» de la population. Leur implication directe dans les affaires politiques et sociales s’accompagne des exigences pour que l’État prenne en charge ses responsabilités vis-à-vis de ses citoyens. Cette liberté d’action repose sur le partage de leurs expériences individuelles et sur une grande connaissance des divers aspects des réalités locales auxquelles sont confrontés quotidiennement les citoyens. Ces deux groupes sont conçus comme des espaces de sociabilité, des lieux publics et dynamiques issus de l’activité commune et des divers types d’interactions au niveau local. Toujours d’après l’analyse, les membres de ces deux groupes interviennent sur un problème d’ensemble collectif au niveau local sans pour autant négliger leurs propres intérêts. Ils s’inscrivent dans le jeu de marchandage électoral et apprennent à leurs membres à se comporter comme une communauté d’intérêts et d’actions, elle-même inscrite dans l’ensemble des interactions, des processus et des dynamiques de résolution des problèmes au niveau local. Un tel constat vient à la fois valider certaines de nos hypothèses tout en révélant les limites de l’idée de la construction d’un espace social citoyen. D’une part, la volonté de contribuer au «mieux-être» de la population, la nécessité de prendre la parole, d’exprimer les problèmes collectifs et individuels, le souci d’avoir un contrôle sur l’action des dirigeants élus sont autant d’enjeux qui leur ont permis de passer de leur vécu particulier à une vision plus large des intérêts collectifs et à la définition des tâches qu’ils estiment correspondre au rôle citoyen qui leur incombe. D’autre part, leur positionnement dans le champ politique notamment au moment des élections les fait apparaître comme des groupes partisans, c'est-à-dire qu’ils ne sont pas toujours dans la construction de l’intérêt général. Nous concluons que ce double aspect s’avère nécessaire aussi bien à la construction de l’espace social citoyen qu’au fonctionnement démocratique au niveau local. Car, en plus de se définir comme citoyens et d’affirmer leur appartenance communautaire, les membres développent les capacités critiques face aux gestes et actes posés autant par les dirigeants locaux que par l’État haïtien lui-même. Ils acquièrent aussi les habilités de participer, même dans les interstices, aux jeux sociopolitiques faisant partie du processus de renforcement de la citoyenneté et d’un système démocratique en construction.
Resumo:
Ce mémoire vise à recenser les avantages et les inconvénients de l'utilisation du langage de programmation fonctionnel dynamique Scheme pour le développement de jeux vidéo. Pour ce faire, la méthode utilisée est d'abord basée sur une approche plus théorique. En effet, une étude des besoins au niveau de la programmation exprimés par ce type de développement, ainsi qu'une description détaillant les fonctionnalités du langage Scheme pertinentes au développement de jeux vidéo sont données afin de bien mettre en contexte le sujet. Par la suite, une approche pratique est utilisée en effectuant le développement de deux jeux vidéo de complexités croissantes: Space Invaders et Lode Runner. Le développement de ces jeux vidéo a mené à l'extension du langage Scheme par plusieurs langages spécifiques au domaine et bibliothèques, dont notamment un système de programmation orienté objets et un système de coroutines. L'expérience acquise par le développement de ces jeux est finalement comparée à celle d'autres développeurs de jeux vidéo de l'industrie qui ont utilisé Scheme pour la création de titres commerciaux. En résumé, l'utilisation de ce langage a permis d'atteindre un haut niveau d'abstraction favorisant la modularité des jeux développés sans affecter les performances de ces derniers.
Resumo:
Le but de cette étude est d’examiner les liens prédictifs entre les comportements d’agressivité proactive à l’enfance et la délinquance à l’adolescence, ainsi que le rôle potentiellement modérateur des normes prosociales du groupe-classe et du rejet par le groupe de pairs. Spécifiquement, les liens suivants seront examinés : 1) le lien principal positif entre l’agressivité proactive à l’enfance et la délinquance à l’adolescence, 2) l’effet modérateur (i.e., protecteur) des normes prosociales au sein du groupe-classe sur le lien entre l’agressivité proactive et la délinquance et 3) l’effet modérateur de second niveau du rejet par les pairs eu égard à l’effet modérateur de premier niveau des normes prosociales du groupe-classe. Deux modèles théoriques seront utilisés afin d’appuyer le choix des hypothèses et offrir un cadre conceptuel en vue de l’interprétation des résultats: Le modèle du groupe de référence et le modèle de la similarité personne-groupe. Les données proviennent d’un échantillon composé de 327 enfants ayant été évalués à 6 reprises, de l’âge de 10 ans (4e année primaire) à 15 ans (3e secondaire). La délinquance fut mesurée à l’aide de données auto-rapportées par les participants. Les normes prosociales du groupe-classe furent basées sur les évaluations moyennes faites par les enseignants des comportements prosociaux des élèves de leur classe. Le rejet par les pairs fut mesuré à l’aide d’évaluations sociométriques au sein des groupes-classes. Des modèles de régression linéaire hiérarchique ont été utilisés. Les résultats montrent un lien positif entre l’agressivité proactive à l’enfance et la délinquance à l’adolescence. Malgré l’obtention d’un coefficient d’interaction marginal, les résultats indiquent que les normes prosociales modèrent, mais à la hausse, le lien entre l’agressivité et la délinquance. L’effet modérateur du rejet par les pairs n’apparaît pas comme étant significatif. Ces résultats seront discutés afin de mieux comprendre le lien entre l’agressivité et les éléments du contexte social dans lequel l’enfant évolue, ainsi que leur implication au niveau de la prévention des problèmes d’agressivité et de la délinquance en milieu scolaire.