Spelling suggestions: "subject:"génie logiciel"" "subject:"génie progiciel""
231 |
Vers une méthodologie de développement d'outils de réalité virtuelle pour faciliter la convergence métiers en conception de produits centrée sur l'hommeBennes, Lionel 27 November 2013 (has links) (PDF)
La conception concourante de produits matériels centrée sur l'homme est basée sur une collaboration entre le concepteur mécanicien, l'ergonome et le designer industriel. Cette collaboration souvent difficile peut être facilitée par l'utilisation d'objets intermédiaires de conception, tels que la Réalité Virtuelle (RV). Néanmoins, bien que largement utilisée dans l'industrie, la RV souffre d'un déficit d'acceptation de la part des concepteurs de produits. Dans le cadre de ces travaux, nous proposons d'utiliser la RV sous la forme d'outils immersifs d'assistance à la convergence multidisciplinaire développés selon une démarche anthropocentrée en fonction des besoins spécifiques à chaque projet de conception de produits. Afin d'optimiser les délais de développement, nous proposons une méthodologie de conception d'applications immersive dédiée : la méthodologie ASAP(As Soon As Possible). Une première série expérimentale a été conduite dans le cadre de contrats industriels d'études et de recherche afin de valider la faisabilité de la méthodologie et l'efficacité des outils développés.Une deuxième série expérimentale a été effectuée sur plus de 50 sujets dans le cadre de projets, cette fois, pédagogiques qui ont nécessité le développement de 12 applications. Elle a permis de valider quantitativement l'influence des outils immersifs sur l'efficacité perçue des phases de convergence interdisciplinaires ainsi que l'influence de l'approche proposée sur l'acceptation de la RV par les concepteurs de produits. Ces travaux de thèse présentent une première approche qui, selon nous, permettra à terme, de faire évoluer l'usage de la RV vers une intégration plus forte au sein des processus de conception de produits avec, par exemple, une plus large utilisation des applications immersives de modélisation 3D, réelles sources d'innovation.
|
232 |
Impacts and Detection of Design SmellsMaiga, Abdou 08 1900 (has links)
Les changements sont faits de façon continue dans le code source des logiciels pour prendre en compte les besoins des clients et corriger les fautes. Les changements continus peuvent conduire aux défauts de code et de conception. Les défauts de conception sont des mauvaises solutions à des problèmes récurrents de conception ou d’implémentation, généralement dans le développement orienté objet. Au cours des activités de compréhension et de changement et en raison du temps d’accès au marché, du manque de compréhension, et de leur expérience, les développeurs ne peuvent pas toujours suivre les normes de conception et les techniques de codage comme les patrons de conception. Par conséquent, ils introduisent des défauts de conception dans leurs systèmes. Dans la littérature, plusieurs auteurs ont fait valoir que les défauts de conception rendent les systèmes orientés objet plus difficile à comprendre, plus sujets aux fautes, et plus difficiles à changer que les systèmes sans les défauts de conception. Pourtant, seulement quelques-uns de ces auteurs ont fait une étude empirique sur l’impact des défauts de conception sur la compréhension et aucun d’entre eux n’a étudié l’impact des défauts de conception sur l’effort des développeurs pour corriger les fautes.
Dans cette thèse, nous proposons trois principales contributions. La première contribution est une étude empirique pour apporter des preuves de l’impact des défauts de conception sur la compréhension et le changement. Nous concevons et effectuons deux expériences avec 59 sujets, afin d’évaluer l’impact de la composition de deux occurrences de Blob ou deux occurrences de spaghetti code sur la performance des développeurs effectuant des tâches de compréhension et de changement. Nous mesurons la performance des développeurs en utilisant: (1) l’indice de charge de travail de la NASA pour leurs efforts, (2) le temps qu’ils ont passé dans l’accomplissement de leurs tâches, et (3) les pourcentages de bonnes réponses. Les résultats des deux expériences ont montré que deux occurrences de Blob ou de spaghetti code sont un obstacle significatif pour la performance des développeurs lors de tâches de compréhension et de changement. Les résultats obtenus justifient les recherches antérieures sur la spécification et la détection des défauts de conception. Les équipes de développement de logiciels doivent mettre en garde les développeurs contre le nombre élevé d’occurrences de défauts de conception et recommander des refactorisations à chaque étape du processus de développement pour supprimer ces défauts de conception quand c’est possible.
Dans la deuxième contribution, nous étudions la relation entre les défauts de conception et les fautes. Nous étudions l’impact de la présence des défauts de conception sur l’effort nécessaire pour corriger les fautes. Nous mesurons l’effort pour corriger les fautes à l’aide de trois indicateurs: (1) la durée de la période de correction, (2) le nombre de champs et méthodes touchés par la correction des fautes et (3) l’entropie des corrections de fautes dans le code-source. Nous menons une étude empirique avec 12 défauts de conception détectés dans 54 versions de quatre systèmes: ArgoUML, Eclipse, Mylyn, et Rhino. Nos résultats ont montré que la durée de la période de correction est plus longue pour les fautes impliquant des classes avec des défauts de conception. En outre, la correction des fautes dans les classes avec des défauts de conception fait changer plus de fichiers, plus les champs et des méthodes. Nous avons également observé que, après la correction d’une faute, le nombre d’occurrences de défauts de conception dans les classes impliquées dans la correction de la faute diminue. Comprendre l’impact des défauts de conception sur l’effort des développeurs pour corriger les fautes est important afin d’aider les équipes de développement pour mieux évaluer et prévoir l’impact de leurs décisions de conception et donc canaliser leurs efforts pour améliorer la qualité de leurs systèmes. Les équipes de développement doivent contrôler et supprimer les défauts de conception de leurs systèmes car ils sont susceptibles d’augmenter les efforts de changement.
La troisième contribution concerne la détection des défauts de conception. Pendant les activités de maintenance, il est important de disposer d’un outil capable de détecter les défauts de conception de façon incrémentale et itérative. Ce processus de détection incrémentale et itérative pourrait réduire les coûts, les efforts et les ressources en permettant aux praticiens d’identifier et de prendre en compte les occurrences de défauts de conception comme ils les trouvent lors de la compréhension et des changements. Les chercheurs ont proposé des approches pour détecter les occurrences de défauts de conception, mais ces approches ont actuellement quatre limites: (1) elles nécessitent une connaissance approfondie des défauts de conception, (2) elles ont une précision et un rappel limités, (3) elles ne sont pas itératives et incrémentales et (4) elles ne peuvent pas être appliquées sur des sous-ensembles de systèmes. Pour surmonter ces limitations, nous introduisons SMURF, une nouvelle approche pour détecter les défauts de conception, basé sur une technique d’apprentissage automatique — machines à vecteur de support — et prenant en compte les retours des praticiens. Grâce à une étude empirique portant sur trois systèmes et quatre défauts de conception, nous avons montré que la précision et le rappel de SMURF sont supérieurs à ceux de DETEX et BDTEX lors de la détection des occurrences de défauts de conception. Nous avons également montré que SMURF peut être appliqué à la fois dans les configurations intra-système et inter-système. Enfin, nous avons montré que la précision et le rappel de SMURF sont améliorés quand on prend en compte les retours des praticiens. / Changes are continuously made in the source code to take into account the needs of the customers and fix the faults. Continuous change can lead to antipatterns and code smells, collectively called “design smells” to occur in the source code. Design smells are poor solutions to recurring design or implementation problems, typically in object-oriented development. During comprehension and changes activities and due to the time-to-market, lack of understanding, and the developers’ experience, developers cannot always follow standard designing and coding techniques, i.e., design patterns. Consequently, they introduce design smells in their systems. In the literature, several authors claimed that design smells make object-oriented software systems more difficult to understand, more fault-prone, and harder to change than systems without such design smells. Yet, few of these authors empirically investigate the impact of design smells on software understandability and none of them authors studied the impact of design smells on developers’ effort.
In this thesis, we propose three principal contributions. The first contribution is an empirical study to bring evidence of the impact of design smells on comprehension and change. We design and conduct two experiments with 59 subjects, to assess the impact of the composition of two Blob or two Spaghetti Code on the performance of developers performing comprehension and change tasks. We measure developers’ performance using: (1) the NASA task load index for their effort; (2) the time that they spent performing their tasks; and, (3) their percentages of correct answers. The results of the two experiments showed that two occurrences of Blob or Spaghetti Code design smells impedes significantly developers performance during comprehension and change tasks. The obtained results justify a posteriori previous researches on the specification and detection of design smells. Software development teams should warn developers against high number of occurrences of design smells and recommend refactorings at each step of the development to remove them when possible.
In the second contribution, we investigate the relation between design smells and faults in classes from the point of view of developers who must fix faults. We study the impact of the presence of design smells on the effort required to fix faults, which we measure using three metrics: (1) the duration of the fixing period; (2) the number of fields and methods impacted by fault-fixes; and, (3) the entropy of the fault-fixes in the source code. We conduct an empirical study with 12 design smells detected in 54 releases of four systems: ArgoUML, Eclipse, Mylyn, and Rhino. Our results showed that the duration of the fixing period is longer for faults involving classes with design smells. Also, fixing faults in classes with design smells impacts more files, more fields, and more methods. We also observed that after a fault is fixed, the number of occurrences of design smells in the classes involved in the fault decreases. Understanding the impact of design smells on development effort is important to help development teams better assess and forecast the impact of their design decisions and therefore lead their effort to improve the quality of their software systems. Development teams should monitor and remove design smells from their software systems because they are likely to increase the change efforts.
The third contribution concerns design smells detection. During maintenance and evolution tasks, it is important to have a tool able to detect design smells incrementally and iteratively. This incremental and iterative detection process could reduce costs, effort, and resources by allowing practitioners to identify and take into account occurrences of design smells as they find them during comprehension and change. Researchers have proposed approaches to detect occurrences of design smells but these approaches have currently four limitations: (1) they require extensive knowledge of design smells; (2) they have limited precision and recall; (3) they are not incremental; and (4) they cannot be applied on subsets of systems. To overcome these limitations, we introduce SMURF, a novel approach to detect design smells, based on a machine learning technique—support vector machines—and taking into account practitioners’ feedback. Through an empirical study involving three systems and four design smells, we showed that the accuracy of SMURF is greater than that of DETEX and BDTEX when detecting design smells occurrences. We also showed that SMURF can be applied in both intra-system and inter-system configurations. Finally, we reported that SMURF accuracy improves when using practitioners’ feedback.
|
233 |
Programmation d'espace intelligent par l'utilisateur final / End User Programming for smart spacesFontaine, Emeric 12 July 2012 (has links)
Cette thèse traite du problème du développement d'espaces intelligents par l'utilisateur final sous l'angle de l'Interaction Homme-Machine et de l'Intelligence Ambiante. Dans les processus actuels de développement, l'utilisateur est un consommateur contraint par un système pensé et réalisé par d'autres. L'objectif de cette thèse est de redonner le pouvoir à l'utilisateur final par le biais d'outils adaptés au développement d'espaces intelligents. Cette thèse retient l'habitat intelligent comme lieu de vie privilégié. Ses contributions incluent : (1) DisQo (Dispositifs du QuOtidien), une nouvelle méthode d'investigation des besoins, réalisable au domicile de familles, qui sollicite l'imagination et assure un juste équilibre entre contrôle expérimental, respect de la sphère privée et validité écologique des résultats ; (2) Un espace de classification pour une lecture comparative systématique et synthétique des outils portant sur le développement et la programmation d'habitats intelligents. Cette taxonomie met en évidence le peu d'avancées en édition multisyntaxe de même pour l'aide à la mise au point de programmes ; (3) KISS (Knit Your Ideas into Smart Spaces), un outil de programmation et de mise au point dont le langage de programmation est de type déclaratif orienté règles, avec potentiel d'égale opportunité syntaxique entre langue française pseudonaturelle (LPN) et langage visuel iconique. La technique d'interaction de construction des programmes LPN s'appuie sur l'utilisation de menus dont les options sont calculées dynamiquement assurant ainsi la découverte progressive du langage ainsi que l'extensibilité et la correction syntaxique et sémantique des programmes. La mise au point peut se pratiquer, au choix, dans le monde physique ou dans un monde dual numérique. L'évaluation de KISS dans DOMUS, un habitat intelligent d'expérimentation, montre que les utilisateurs parviennent à programmer un scénario réaliste de la vie réelle. / This dissertation addresses the problem of end-user development for smart spaces from a human-computer interaction perspective in the context of ambient intelligence. End-users are currently doomed to be consumers of systems that have been designed and implemented by others. The goal of this thesis is to provide end-users with tools that will enable them to develop their own smart spaces. This work focuses on the home as a key place for smartness. The contribution of this doctoral research is threefold: (1) DisQo, a new method for field studies that combines several techniques to reach a satisfying balance between experimental control, privacy issues, and ecological validity. Its key element is for observers to be able to “visit” people homes through the pictures of intimate objects taken by the participants themselves and to use these pictures as playful cultural probes to envision future use; (2) A problem space that makes explicit the functional coverage (as well as the limits) of the tools from the state of the art in the area of end-user development for smart homes. In particular, the problem space reveals a lack of support for multi-syntax editing as well as for testing and debugging programs; (3) KISS (Knit your Ideas into Smart Spaces), an end-user development tool that uses a declarative rule-based programming paradigm where programs are expressed in a French pseudo-natural language with potentiality for syntactic equal opportunity with an iconic visual language. Programs are constructed by selecting items from pull down menus that are dynamically updated with the functionalities of the smart home. By so doing, the end-user can learn the programming language incrementally and specify programs that are semantically and syntactically correct. Programs can be tested either in a virtual home or in a real home. The evaluation of KISS in the DOMUS experimental platform, shows that users are able to program a real-life scenario.
|
234 |
Impacts and Detection of Design SmellsMaiga, Abdou 08 1900 (has links)
No description available.
|
235 |
Entre le développement durable et l’acceptabilité sociale : pour une éthique de la gestion des ressources naturelles : le cas d’Arianne Phosphate inc.Larouche, Ursula 10 1900 (has links) (PDF)
Pour les projets de développement des ressources naturelles ou tout autre projet ayant un impact sur l’environnement, l’acceptabilité sociale fait désormais partie du langage populaire et scientifique. Malgré les démarches de création de grilles d’analyse de critères qui se sont multipliées pour évaluer le développement durable d’un projet, celles-ci ne sont pas adaptées pour qualifier un projet qui vise à obtenir l’acceptabilité sociale. Grâce à l’analyse d’un cas réel dont nous nous inspirons, le projet de la mine d’apatite du lac à Paul de l’entreprise minière Arianne Phosphate, nous démontrons comment, avec la perspective éthique de la sollicitude de Paul Ricoeur, l’acceptabilité sociale niche dans les valeurs des intervenants concernés par un projet de développement. L’identification des valeurs se fait par l’analyse du rapport du Bureau d’audiences publiques en environnement (BAPE) déposé en août 2015 au ministre du Développement durable, de l’Environnement et de Lutte contre les changements climatiques du Québec sur le projet d’Arianne Phosphate. Ce qui est recherché consiste en la diversité et la multiplication des valeurs rencontrées lors des audiences. Celles-ci permettent de cibler les parties du projet nécessitant un investissement de temps pour que le projet se réalise dans la perspective de l’éthique dans le but d’atteindre l’acceptabilité sociale. À l’aide de l’approche par le « JE-TU-IL » de Paul Ricoeur, nous procédons à interpréter l’analyse des valeurs contenues dans les expressions décrivant les sentiments et l’état d’esprit des participants. Pour chaque partie du projet, grâce au rapport du BAPE, nous avons retracé les valeurs en confrontation à l’aide de tableaux référant aux critères du développement durable (environnementaux, économiques et sociaux) et ceux de l’acceptabilité sociale (transparence, écoute et intégrité), tel que proposé par le Conseil patronal de l’environnement. Les valeurs traduisent le sens que chacun cherche dans le projet et ce qu’il attend du promoteur. Il est donc possible, pour les participants en présence, de savoir sur quelle problématique il faut mettre l’emphase dans le but de l’inscrire dans une recherche d’une plus grande sollicitude, que nous appellerons « l’opérationnalisation » du « TU » de Paul Ricoeur. On constate que dans l’approche de la personne, le « TU » de Ricoeur exprime la sollicitude, attitude qui appelle l’écoute des valeurs. Par le fait même, on peut envisager que c’est dans cet espace précis que logerait l’acceptabilité sociale. Là où peu ou pas de valeurs sont énoncées, les conflits sont peu incommodants et l’acceptabilité sociale mieux rencontrée.
|
236 |
Contextual cues for deep learning models of codeShrivastava, Disha 09 1900 (has links)
Le code source offre un domaine d'application passionnant des méthodes d'apprentissage en profondeur, englobant des tâches telles que la synthèse, la réparation et l'analyse de programmes, ainsi que des tâches à l'intersection du code et du langage naturel. Bien que les modèles d’apprentissage profond pour le code, en particulier les grands modèles de langage, aient récemment connu un succès significatif, ils peuvent avoir du mal à se généraliser à du code invisible. Cela peut conduire à des inexactitudes, en particulier lorsque vous travaillez avec des référentiels contenant des logiciels propriétaires ou du code en cours de travail.
L'objectif principal de cette thèse est d'exploiter efficacement les signaux utiles du contexte disponible afin d'améliorer les performances des modèles de code d'apprentissage profond pour une tâche donnée. En incorporant ces indices contextuels, les capacités de généralisation du modèle sont amplifiées, fournissant des informations supplémentaires non évidentes à partir de l'entrée d'origine et orientant son attention vers des détails essentiels. De plus, l'utilisation d'indices contextuels facilite l'adaptation aux nouvelles tâches et améliore les performances des tâches existantes en effectuant des prédictions plus contextuelles. Pour y parvenir, nous présentons un cadre général comprenant deux étapes : (a) l'amélioration du contexte, qui implique l'enrichissement de l'entrée avec un contexte de support obtenu grâce à l'identification et à la sélection d'indices contextuels pertinents, et (b) la prédiction à l'aide du contexte amélioré, où nous exploitez le contexte de support combiné aux entrées pour faire des prédictions précises. La thèse présente quatre articles qui proposent diverses approches pour ces étapes.
Le premier article divise le problème standard de la programmation par exemples en deux étapes: (a) trouver des programmes qui satisfont des exemples individuels (solutions par exemple) et, (b) combiner ces solutions par exemple en tirant parti de leurs états d'exécution de programme pour trouver un programme qui satisfait tous les exemples donnés.
Le deuxième article propose une approche pour sélectionner des informations ciblées à partir du fichier actuel et les utiliser pour adapter le modèle de complétion de code à un contexte local jamais vu précédemment.
Le troisième article s'appuie sur le deuxième article en tirant parti des indices contextuels de l'ensemble du répertoire de code à l'aide d'un ensemble de requêtes ({\it prompts}) proposées suggérant l'emplacement et le contenu du contexte particulièrement utile à extraire du répertoire. Nous proposons un cadre pour sélectionner la requête la plus pertinente, qui est ensuite utilisée pour demander à un modèle de langage de code de générer des prédictions pour le reste de la ligne de code suivant un curseur positionné dans un fichier.
Le quatrième article prolonge le troisième article en proposant un cadre qui apprend à combiner plusieurs contextes divers à partir du répertoire. Nous montrons que la formation de modèles de language de code plus petits de cette manière fonctionne mieux ou à égalité avec des modèles beaucoup plus grands qui n'utilisent pas le contexte du répertoire de code. / Source code provides an exciting application area of deep learning methods, encompassing tasks like program synthesis, repair, and analysis, as well as tasks at the intersection of code and natural language. Although deep learning models for code, particularly large language models, have recently seen significant success, they can face challenges in generalizing to unseen code. This can lead to inaccuracies especially when working with repositories that contain proprietary software or work-in-progress code.
The main focus of this thesis is to effectively harness useful signals from the available context such that it can improve the performance of the deep learning models of code at the given task. By incorporating these contextual cues, the model's generalization capabilities are amplified, providing additional insights not evident from the original input and directing its focus toward essential details. Furthermore, the use of contextual cues aids in adapting to new tasks and boosts performance on existing ones by making more context-aware predictions. To achieve this, we present a general framework comprising two stages: (a) Context Enhancement, which involves enriching the input with support context obtained through the identification and selection of relevant contextual cues, and (b) Prediction using the Enhanced Context, where we leverage the support context combined with the input to make accurate predictions. The thesis presents four articles that propose diverse approaches for these stages.
The first article breaks the standard problem of programming by examples into two stages: (a) finding programs that satisfy individual examples (per-example solutions) and, (b) combining these per-example solutions by leveraging their program execution states to find a program that satisfies all given examples.
The second article proposes an approach for selecting targeted information from the current file and using it to adapt the code completion model to an unseen, local context.
The third article builds upon the second article by leveraging contextual cues from the entire code repository using a set of prompt proposals that govern the location and content of the context that should be taken from the repository. We propose a framework to select the most relevant prompt proposal context which is then used to prompt a large language model of code to generate predictions for the tokens in the rest of the line following the cursor in a file.
The fourth article extends the third article by proposing a framework that learns to combine multiple diverse contexts from the repository. We show that training smaller models of code this way performs better or at par with significantly larger models that are not trained with repository context.
|
237 |
Programming tools for intelligent systemsConsidine, Breandan 04 1900 (has links)
Les outils de programmation sont des programmes informatiques qui aident les humains à programmer des ordinateurs. Les outils sont de toutes formes et tailles, par exemple les éditeurs, les compilateurs, les débogueurs et les profileurs. Chacun de ces outils facilite une tâche principale dans le flux de travail de programmation qui consomme des ressources cognitives lorsqu’il est effectué manuellement. Dans cette thèse, nous explorons plusieurs outils qui facilitent le processus de construction de systèmes intelligents et qui réduisent l’effort cognitif requis pour concevoir, développer, tester et déployer des systèmes logiciels intelligents. Tout d’abord, nous introduisons un environnement de développement intégré (EDI) pour la programmation d’applications Robot Operating System (ROS), appelé Hatchery (Chapter 2). Deuxièmement, nous décrivons Kotlin∇, un système de langage et de type pour la programmation différenciable, un paradigme émergent dans l’apprentissage automatique (Chapter 3). Troisièmement, nous proposons un nouvel algorithme pour tester automatiquement les programmes différenciables, en nous inspirant des techniques de tests contradictoires et métamorphiques (Chapter 4), et démontrons son efficacité empirique dans le cadre de la régression. Quatrièmement, nous explorons une infrastructure de conteneurs basée sur Docker, qui permet un déploiement reproductible des applications ROS sur la plateforme Duckietown (Chapter 5). Enfin, nous réfléchissons à l’état actuel des outils de programmation pour ces applications et spéculons à quoi pourrait ressembler la programmation de systèmes intelligents à l’avenir (Chapter 6). / Programming tools are computer programs which help humans program computers. Tools come in all shapes and forms, from editors and compilers to debuggers and profilers. Each of these tools facilitates a core task in the programming workflow which consumes cognitive resources when performed manually. In this thesis, we explore several tools that facilitate the process of building intelligent systems, and which reduce the cognitive effort required to design, develop, test and deploy intelligent software systems. First, we introduce an integrated development environment (IDE) for programming Robot Operating System (ROS) applications, called Hatchery (Chapter 2). Second, we describe Kotlin∇, a language and type system for differentiable programming, an emerging paradigm in machine learning (Chapter 3). Third, we propose a new algorithm for automatically testing differentiable programs, drawing inspiration from techniques in adversarial and metamorphic testing (Chapter 4), and demonstrate its empirical efficiency in the regression setting. Fourth, we explore a container infrastructure based on Docker, which enables reproducible deployment of ROS applications on the Duckietown platform (Chapter 5). Finally, we reflect on the current state of programming tools for these applications and speculate what intelligent systems programming might look like in the future (Chapter 6).
|
Page generated in 0.0301 seconds