3 resultados para Software eutils-search
em Université de Montréal, Canada
Resumo:
Il est essentiel pour chaque organisme d’avoir la possibilité de réguler ses fonctions afin de permettre sa survie et d’améliorer sa capacité de se reproduire en divers habitats. Avec l’information disponible, il semble que les organismes consacrent une partie assez importante de leur matériel génétique à des fonctions de régulation. On peut envisager que certains mécanismes de régulation ont persisté dans le temps parce qu’ils remplissent bien leurs rôles. Les premières études sur les procaryotes ont indiqué qu’il y avait peu de mécanismes de régulation exerçant le contrôle des gènes, mais il a été démontré par la suite qu’une variété de ces mécanismes est utilisée pour la régulation de gènes et d’opérons. En particulier, les opérons bactériens impliqués dans la biosynthèse des acides aminés, l’ARNt synthétase, la dégradation des acides aminés, les protéines ribosomales et l’ARN ribosomal font l’objet d’un contrôle par l’atténuation de la transcription. Ce mécanisme d’atténuation de la transcription diffère d’autres mécanismes pour la génération de deux structures différentes de l’ARNm, où l’une de ces structures réprime le gène en aval, et l’autre permet de continuer la transcription/traduction. Dans le cadre de cette recherche, nous nous sommes intéressé au mécanisme d’atténuation de la transcription chez les procaryotes où aucune molécule ne semble intervenir comme facteur de régulation, en me concentrant sur la régulation des opérons bactériens. Le but principal de ce travail est de présenter une nouvelle méthode de recherche des riborégulateurs qui combine la recherche traditionnelle des riborégulateurs avec la recherche structurale. En incorporant l’étude du repliement de l’ARNm, nous pouvons mieux identifier les atténuateurs répondant à ce type de mécanisme d’atténuation. Ce mémoire est divisé en quatre chapitres. Le premier chapitre présente une revue de la littérature sur l’ARN et un survol sur les mécanismes de régulation de l’expression génétique chez les procaryotes. Les chapitres 2 et 3 sont consacrés à la méthodologie utilisée dans cette recherche et à l’implémentation du logiciel TA-Search. Enfin, le chapitre 4 expose les conclusions et les applications potentielles de la méthode.
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.