993 resultados para software component
Resumo:
Tesis (Doctor en Filosofía con Especialidad en Administración) UANL, 2011.
Resumo:
Tesis (Doctor en Filosofía con Especialidad en Administración) UANL, 2012.
Resumo:
Réalisées aux échelles internationales et nationales, les études de vulnérabilité aux changements et à la variabilité climatiques sont peu pertinentes dans un processus de prise de décisions à des échelles géographiques plus petites qui représentent les lieux d’implantation des stratégies de réponses envisagées. Les études de vulnérabilité aux changements et à la variabilité climatiques à des échelles géographiques relativement petites dans le secteur agricole sont généralement rares, voire inexistantes au Canada, notamment au Québec. Dans le souci de combler ce vide et de favoriser un processus décisionnel plus éclairé à l’échelle de la ferme, cette étude cherchait principalement à dresser un portrait de l’évolution de la vulnérabilité des fermes productrices de maïs-grain des régions de Montérégie-Ouest et du Lac-St-Jean-Est aux changements et à la variabilité climatiques dans un contexte de multiples sources de pression. Une méthodologie générale constituée d'une évaluation de la vulnérabilité globale à partir d’une combinaison de profils de vulnérabilité aux conditions climatiques et socio-économiques a été adoptée. Pour la période de référence (1985-2005), les profils de vulnérabilité ont été dressés à l’aide d’analyses des coefficients de variation des séries temporelles de rendements et de superficies en maïs-grain. Au moyen de méthodes ethnographiques associées à une technique d’analyse multicritère, le Processus d’analyse hiérarchique (PAH), des scénarios d’indicateurs de capacité adaptative du secteur agricole susmentionné ont été développés pour la période de référence. Ceux-ci ont ensuite servi de point de départ dans l’élaboration des indicateurs de capacité de réponses des producteurs agricoles pour la période future 2010-2039. Pour celle-ci, les deux profils de vulnérabilité sont issus d’une simplification du cadre théorique de « Intergovernmental Panel on Climate Change » (IPCC) relatif aux principales composantes du concept de vulnérabilité. Pour la dimension « sensibilité » du secteur des fermes productrices de maïs-grain des deux régions agricoles aux conditions climatiques, une série de données de rendements a été simulée pour la période future. Ces simulations ont été réalisées à l’aide d’un couplage de cinq scénarios climatiques et du modèle de culture CERES-Maize de « Decision Support System for Agrotechnology Transfer » (DSSAT), version 4.0.2.0. En ce qui concerne l’évaluation de la « capacité adaptative » au cours de la période future, la construction des scénarios d’indicateurs de cette composante a été effectuée selon l’influence potentielle des grandes orientations économiques et environnementales considérées dans l’élaboration des lignes directrices des deux familles d’émissions de gaz à effet de serre (GES) A2 et A1B. L’application de la démarche méthodologique préalablement mentionnée a conduit aux principaux résultats suivants. Au cours de la période de référence, la région agricole du Lac-St-Jean-Est semblait être plus vulnérable aux conditions climatiques que celle de Montérégie-Ouest. En effet, le coefficient de variation des rendements du maïs-grain pour la région du Lac-St-Jean-Est était évalué à 0,35; tandis que celui pour la région de Montérégie-Ouest n’était que de 0,23. Toutefois, par rapport aux conditions socio-économiques, la région de Montérégie-Ouest affichait une vulnérabilité plus élevée que celle du Lac-St-Jean-Est. Les valeurs des coefficients de variation pour les superficies en maïs-grain au cours de la période de référence pour la Montérégie-Ouest et le Lac-St-Jean-Est étaient de 0,66 et 0,48, respectivement. Au cours de la période future 2010-2039, la région du Lac-St-Jean-Est serait, dans l’ensemble, toujours plus vulnérable aux conditions climatiques que celle de Montérégie-Ouest. Les valeurs moyennes des coefficients de variation pour les rendements agricoles anticipés fluctuent entre 0,21 et 0,25 pour la région de Montérégie-Ouest et entre 0,31 et 0,50 pour la région du Lac-St-Jean-Est. Néanmoins, en matière de vulnérabilité future aux conditions socio-économiques, la position relative des deux régions serait fonction du scénario de capacité adaptative considéré. Avec les orientations économiques et environnementales considérées dans l’élaboration des lignes directrices de la famille d’émission de GES A2, les indicateurs de capacité adaptative du secteur à l’étude seraient respectivement de 0,13 et 0,08 pour la Montérégie-Ouest et le Lac-St-Jean-Est. D’autre part, en considérant les lignes directrices de la famille d’émission de GES A1B, la région agricole du Lac-St-Jean-Est aurait une capacité adaptative légèrement supérieure (0,07) à celle de la Montérégie-Ouest (0,06). De façon générale, au cours de la période future, la région du Lac-St-Jean-Est devrait posséder une vulnérabilité globale plus élevée que la région de Montérégie-Ouest. Cette situation s’expliquerait principalement par une plus grande vulnérabilité de la région du Lac-St-Jean-Est aux conditions climatiques. Les résultats de cette étude doivent être appréciés dans le contexte des postulats considérés, de la méthodologie suivie et des spécificités des deux régions agricoles examinées. Essentiellement, avec l’adoption d’une démarche méthodologique simple, cette étude a révélé les caractéristiques « dynamique et relative » du concept de vulnérabilité, l’importance de l’échelle géographique et de la prise en compte d’autres sources de pression et surtout de la considération d’une approche contraire à celle du « agriculteur réfractaire aux changements » dans les travaux d’évaluation de ce concept dans le secteur agricole. Finalement, elle a aussi présenté plusieurs pistes de recherche susceptibles de contribuer à une meilleure évaluation de la vulnérabilité des agriculteurs aux changements climatiques dans un contexte de multiples sources de pression.
Resumo:
Lors de ces dix dernières années, le coût de la maintenance des systèmes orientés objets s'est accru jusqu' à compter pour plus de 70% du coût total des systèmes. Cette situation est due à plusieurs facteurs, parmi lesquels les plus importants sont: l'imprécision des spécifications des utilisateurs, l'environnement d'exécution changeant rapidement et la mauvaise qualité interne des systèmes. Parmi tous ces facteurs, le seul sur lequel nous ayons un réel contrôle est la qualité interne des systèmes. De nombreux modèles de qualité ont été proposés dans la littérature pour contribuer à contrôler la qualité. Cependant, la plupart de ces modèles utilisent des métriques de classes (nombre de méthodes d'une classe par exemple) ou des métriques de relations entre classes (couplage entre deux classes par exemple) pour mesurer les attributs internes des systèmes. Pourtant, la qualité des systèmes par objets ne dépend pas uniquement de la structure de leurs classes et que mesurent les métriques, mais aussi de la façon dont celles-ci sont organisées, c'est-à-dire de leur conception, qui se manifeste généralement à travers les patrons de conception et les anti-patrons. Dans cette thèse nous proposons la méthode DEQUALITE, qui permet de construire systématiquement des modèles de qualité prenant en compte non seulement les attributs internes des systèmes (grâce aux métriques), mais aussi leur conception (grâce aux patrons de conception et anti-patrons). Cette méthode utilise une approche par apprentissage basée sur les réseaux bayésiens et s'appuie sur les résultats d'une série d'expériences portant sur l'évaluation de l'impact des patrons de conception et des anti-patrons sur la qualité des systèmes. Ces expériences réalisées sur 9 grands systèmes libres orientés objet nous permettent de formuler les conclusions suivantes: • Contre l'intuition, les patrons de conception n'améliorent pas toujours la qualité des systèmes; les implantations très couplées de patrons de conception par exemple affectent la structure des classes et ont un impact négatif sur leur propension aux changements et aux fautes. • Les classes participantes dans des anti-atrons sont beaucoup plus susceptibles de changer et d'être impliquées dans des corrections de fautes que les autres classes d'un système. • Un pourcentage non négligeable de classes sont impliquées simultanément dans des patrons de conception et dans des anti-patrons. Les patrons de conception ont un effet positif en ce sens qu'ils atténuent les anti-patrons. Nous appliquons et validons notre méthode sur trois systèmes libres orientés objet afin de démontrer l'apport de la conception des systèmes dans l'évaluation de la qualité.
Resumo:
Au Québec, la compétence professionnelle à intégrer les technologies de l’information et de la communication (TIC) est une compétence professionnelle à acquérir par les étudiants en enseignement. Cependant, son acquisition est problématique à plusieurs niveaux. Afin d’évaluer et mieux comprendre la compétence, cette thèse présente trois objectifs : 1) décrire le degré de maitrise des TIC et leurs usages dans les salles de classe 2) identifier les facteurs qui influencent l’intégration des TIC en fonction de la compétence professionnelle, et finalement 3) décrire le niveau d’atteinte des composantes de la compétence. Pour atteindre les objectifs de l’étude, une méthodologie mixte fut employée. Ce sont 2065 futurs enseignants du Québec provenant de neuf universités québécoises qui ont complété le questionnaire en plus de 34 participants à des groupes de discussion (n = 5). Cette thèse rédigée sous forme d’articles, répondra à chacun des objectifs visés. Dans le but de mieux comprendre l’utilisation actuelle des TIC par les futurs maitres, le premier article fournira un aperçu de la maitrise d’outils technologiques susceptibles d’être utilisés lors des stages. Le deuxième article visera à identifier les variables externes ainsi que les différentes composantes de la compétence qui ont une influence sur l’intégration des TIC lors des stages. Dans le troisième article, afin de comprendre où se situent les forces et les faiblesses des futurs maitres quant à la compétence professionnelle à intégrer les TIC, une description du niveau d’atteinte de chacune des composantes sera réalisée afin d’en dégager une appréciation globale. Les principaux résultats montrent que pour la moitié des répondants, seuls cinq outils sur 12 sont intégrés en stage et ce sont principalement les outils peu complexes qui sont bien maitrisés. Le logiciel de présentation Power Point, est le plus fréquemment utilisé. Les données considérées dans le premier article suggèrent aussi l’importance d’augmenter, de façon générale, la maitrise technique des futurs enseignants. Les résultats du second article ont permis de constater que la « prévision d’activités faisant appel aux TIC » est une variable prédictive majeure pour l’intégration des TIC. L’analyse des résultats suggèrent le besoin d’enseigner aux futurs maitres comment développer le réflexe d’inclure les TIC dans leurs plans de leçons. De plus, l’appropriation de la sixième composante de la compétence joue un rôle important sur la probabilité d’intégrer les TIC. Les résultats du troisième article indiquent que les composantes 2, 4, 5 et 6 de la compétence sont partiellement maitrisées. La mieux maitrisée est la première composante. Finalement, la troisième composante de la compétence s’est avérée être encore non atteinte et reste à être développer par les futurs enseignants. Cette thèse nous apprend que des efforts considérables restent encore à accomplir quant à la maitrise de la compétence professionnelle à intégrer les TIC. Ces efforts doivent être accomplis à la fois par les futurs enseignants ainsi que par les universités au niveau de la structure des cours de TIC en formation initiale des maitres.
Resumo:
Les logiciels de correction grammaticale commettent parfois des détections illégitimes (fausses alertes), que nous appelons ici surdétections. La présente étude décrit les expériences de mise au point d’un système créé pour identifier et mettre en sourdine les surdétections produites par le correcteur du français conçu par la société Druide informatique. Plusieurs classificateurs ont été entraînés de manière supervisée sur 14 types de détections faites par le correcteur, en employant des traits couvrant di-verses informations linguistiques (dépendances et catégories syntaxiques, exploration du contexte des mots, etc.) extraites de phrases avec et sans surdétections. Huit des 14 classificateurs développés sont maintenant intégrés à la nouvelle version d’un correcteur commercial très populaire. Nos expériences ont aussi montré que les modèles de langue probabilistes, les SVM et la désambiguïsation sémantique améliorent la qualité de ces classificateurs. Ce travail est un exemple réussi de déploiement d’une approche d’apprentissage machine au service d’une application langagière grand public robuste.
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:
Un objectif principal du génie logiciel est de pouvoir produire des logiciels complexes, de grande taille et fiables en un temps raisonnable. La technologie orientée objet (OO) a fourni de bons concepts et des techniques de modélisation et de programmation qui ont permis de développer des applications complexes tant dans le monde académique que dans le monde industriel. Cette expérience a cependant permis de découvrir les faiblesses du paradigme objet (par exemples, la dispersion de code et le problème de traçabilité). La programmation orientée aspect (OA) apporte une solution simple aux limitations de la programmation OO, telle que le problème des préoccupations transversales. Ces préoccupations transversales se traduisent par la dispersion du même code dans plusieurs modules du système ou l’emmêlement de plusieurs morceaux de code dans un même module. Cette nouvelle méthode de programmer permet d’implémenter chaque problématique indépendamment des autres, puis de les assembler selon des règles bien définies. La programmation OA promet donc une meilleure productivité, une meilleure réutilisation du code et une meilleure adaptation du code aux changements. Très vite, cette nouvelle façon de faire s’est vue s’étendre sur tout le processus de développement de logiciel en ayant pour but de préserver la modularité et la traçabilité, qui sont deux propriétés importantes des logiciels de bonne qualité. Cependant, la technologie OA présente de nombreux défis. Le raisonnement, la spécification, et la vérification des programmes OA présentent des difficultés d’autant plus que ces programmes évoluent dans le temps. Par conséquent, le raisonnement modulaire de ces programmes est requis sinon ils nécessiteraient d’être réexaminés au complet chaque fois qu’un composant est changé ou ajouté. Il est cependant bien connu dans la littérature que le raisonnement modulaire sur les programmes OA est difficile vu que les aspects appliqués changent souvent le comportement de leurs composantes de base [47]. Ces mêmes difficultés sont présentes au niveau des phases de spécification et de vérification du processus de développement des logiciels. Au meilleur de nos connaissances, la spécification modulaire et la vérification modulaire sont faiblement couvertes et constituent un champ de recherche très intéressant. De même, les interactions entre aspects est un sérieux problème dans la communauté des aspects. Pour faire face à ces problèmes, nous avons choisi d’utiliser la théorie des catégories et les techniques des spécifications algébriques. Pour apporter une solution aux problèmes ci-dessus cités, nous avons utilisé les travaux de Wiels [110] et d’autres contributions telles que celles décrites dans le livre [25]. Nous supposons que le système en développement est déjà décomposé en aspects et classes. La première contribution de notre thèse est l’extension des techniques des spécifications algébriques à la notion d’aspect. Deuxièmement, nous avons défini une logique, LA , qui est utilisée dans le corps des spécifications pour décrire le comportement de ces composantes. La troisième contribution consiste en la définition de l’opérateur de tissage qui correspond à la relation d’interconnexion entre les modules d’aspect et les modules de classe. La quatrième contribution concerne le développement d’un mécanisme de prévention qui permet de prévenir les interactions indésirables dans les systèmes orientés aspect.
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:
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:
Les protéines amyloïdes sont retrouvées sous forme de fibres dans de nombreuses maladies neurodégénératives. En tentant d’élucider le mécanisme de fibrillation, les chercheurs ont découvert que cette réaction se fait par un phénomène de nucléation passant par des oligomères. Il semblerait que ces espèces soient la principale cause de la toxicité observée dans les cellules des patients atteints d’amyloïdose. C’est pourquoi un intérêt particulier est donc porté aux premières étapes d’oligomérisation. Dans ce mémoire, nous nous intéressons à une séquence d’acide aminé fortement hydrophobe de l’α-synucléine appelée composante non β -amyloïde (Non-Amyloid β Component ou NAC). Cette dernière est retrouvée sous forme de fibres dans les corps et les neurites de Lewy des patients atteints de la maladie de Parkinson. De plus, elle constitue une composante minoritaire des fibres impliquées dans la maladie d’Alzheimer. Nous avons observé les changements structuraux qui ont lieu pour le monomère, le dimère et le trimère de la séquence NAC de l’α-synucléine. Nous nous sommes aussi intéressés aux conséquences structurelles observées dans des oligomères hétérogènes qui impliqueraient, Aβ1−40. Pour cela nous utilisons des dynamiques moléculaires, d’échange de répliques couplées au potentiel gros-grain, OPEP. Nous constatons une disparition des hélices α au profit des feuillets β , ainsi que le polymorphisme caractéristique des fibres amyloïdes. Certaines régions se sont démarquées par leurs capacités à former des feuillets β . La disparition de ces régions lorsque NAC est combinée à Aβ laisse entrevoir l’importance de l’emplacement des résidus hydrophobes dans des structures susceptibles de former des fibres amyloïdes.
Resumo:
Les systèmes logiciels sont devenus de plus en plus répondus et importants dans notre société. Ainsi, il y a un besoin constant de logiciels de haute qualité. Pour améliorer la qualité de logiciels, l’une des techniques les plus utilisées est le refactoring qui sert à améliorer la structure d'un programme tout en préservant son comportement externe. Le refactoring promet, s'il est appliqué convenablement, à améliorer la compréhensibilité, la maintenabilité et l'extensibilité du logiciel tout en améliorant la productivité des programmeurs. En général, le refactoring pourra s’appliquer au niveau de spécification, conception ou code. Cette thèse porte sur l'automatisation de processus de recommandation de refactoring, au niveau code, s’appliquant en deux étapes principales: 1) la détection des fragments de code qui devraient être améliorés (e.g., les défauts de conception), et 2) l'identification des solutions de refactoring à appliquer. Pour la première étape, nous traduisons des régularités qui peuvent être trouvés dans des exemples de défauts de conception. Nous utilisons un algorithme génétique pour générer automatiquement des règles de détection à partir des exemples de défauts. Pour la deuxième étape, nous introduisons une approche se basant sur une recherche heuristique. Le processus consiste à trouver la séquence optimale d'opérations de refactoring permettant d'améliorer la qualité du logiciel en minimisant le nombre de défauts tout en priorisant les instances les plus critiques. De plus, nous explorons d'autres objectifs à optimiser: le nombre de changements requis pour appliquer la solution de refactoring, la préservation de la sémantique, et la consistance avec l’historique de changements. Ainsi, réduire le nombre de changements permets de garder autant que possible avec la conception initiale. La préservation de la sémantique assure que le programme restructuré est sémantiquement cohérent. De plus, nous utilisons l'historique de changement pour suggérer de nouveaux refactorings dans des contextes similaires. En outre, nous introduisons une approche multi-objective pour améliorer les attributs de qualité du logiciel (la flexibilité, la maintenabilité, etc.), fixer les « mauvaises » pratiques de conception (défauts de conception), tout en introduisant les « bonnes » pratiques de conception (patrons de conception).
Resumo:
Les logiciels sont de plus en plus complexes et leur développement est souvent fait par des équipes dispersées et changeantes. Par ailleurs, de nos jours, la majorité des logiciels sont recyclés au lieu d’être développés à partir de zéro. La tâche de compréhension, inhérente aux tâches de maintenance, consiste à analyser plusieurs dimensions du logiciel en parallèle. La dimension temps intervient à deux niveaux dans le logiciel : il change durant son évolution et durant son exécution. Ces changements prennent un sens particulier quand ils sont analysés avec d’autres dimensions du logiciel. L’analyse de données multidimensionnelles est un problème difficile à résoudre. Cependant, certaines méthodes permettent de contourner cette difficulté. Ainsi, les approches semi-automatiques, comme la visualisation du logiciel, permettent à l’usager d’intervenir durant l’analyse pour explorer et guider la recherche d’informations. Dans une première étape de la thèse, nous appliquons des techniques de visualisation pour mieux comprendre la dynamique des logiciels pendant l’évolution et l’exécution. Les changements dans le temps sont représentés par des heat maps. Ainsi, nous utilisons la même représentation graphique pour visualiser les changements pendant l’évolution et ceux pendant l’exécution. Une autre catégorie d’approches, qui permettent de comprendre certains aspects dynamiques du logiciel, concerne l’utilisation d’heuristiques. Dans une seconde étape de la thèse, nous nous intéressons à l’identification des phases pendant l’évolution ou pendant l’exécution en utilisant la même approche. Dans ce contexte, la prémisse est qu’il existe une cohérence inhérente dans les évènements, qui permet d’isoler des sous-ensembles comme des phases. Cette hypothèse de cohérence est ensuite définie spécifiquement pour les évènements de changements de code (évolution) ou de changements d’état (exécution). L’objectif de la thèse est d’étudier l’unification de ces deux dimensions du temps que sont l’évolution et l’exécution. Ceci s’inscrit dans notre volonté de rapprocher les deux domaines de recherche qui s’intéressent à une même catégorie de problèmes, mais selon deux perspectives différentes.
Resumo:
Dans l'apprentissage machine, la classification est le processus d’assigner une nouvelle observation à une certaine catégorie. Les classifieurs qui mettent en œuvre des algorithmes de classification ont été largement étudié au cours des dernières décennies. Les classifieurs traditionnels sont basés sur des algorithmes tels que le SVM et les réseaux de neurones, et sont généralement exécutés par des logiciels sur CPUs qui fait que le système souffre d’un manque de performance et d’une forte consommation d'énergie. Bien que les GPUs puissent être utilisés pour accélérer le calcul de certains classifieurs, leur grande consommation de puissance empêche la technologie d'être mise en œuvre sur des appareils portables tels que les systèmes embarqués. Pour rendre le système de classification plus léger, les classifieurs devraient être capable de fonctionner sur un système matériel plus compact au lieu d'un groupe de CPUs ou GPUs, et les classifieurs eux-mêmes devraient être optimisés pour ce matériel. Dans ce mémoire, nous explorons la mise en œuvre d'un classifieur novateur sur une plate-forme matérielle à base de FPGA. Le classifieur, conçu par Alain Tapp (Université de Montréal), est basé sur une grande quantité de tables de recherche qui forment des circuits arborescents qui effectuent les tâches de classification. Le FPGA semble être un élément fait sur mesure pour mettre en œuvre ce classifieur avec ses riches ressources de tables de recherche et l'architecture à parallélisme élevé. Notre travail montre que les FPGAs peuvent implémenter plusieurs classifieurs et faire les classification sur des images haute définition à une vitesse très élevée.
Resumo:
La réflexion est considérée comme un élément significatif de la pédagogie et de la pratique médicales sans qu’il n’existe de consensus sur sa définition ou sur sa modélisation. Comme la réflexion prend concurremment plusieurs sens, elle est difficile à opérationnaliser. Une définition et un modèle standard sont requis afin d’améliorer le développement d’applications pratiques de la réflexion. Dans ce mémoire, nous identifions, explorons et analysons thématiquement les conceptualisations les plus influentes de la réflexion, et développons de nouveaux modèle et définition. La réflexion est définie comme le processus de s’engager (le « soi » (S)) dans des interactions attentives, critiques, exploratoires et itératives (ACEI) avec ses pensées et ses actions (PA), leurs cadres conceptuels sous-jacents (CC), en visant à les changer et en examinant le changement lui-même (VC). Notre modèle conceptuel comprend les cinq composantes internes de la réflexion et les éléments extrinsèques qui l’influencent.