27,269 research outputs found

    Pirate plunder: game-based computational thinking using scratch blocks

    Get PDF
    Policy makers worldwide argue that children should be taught how technology works, and that the ‘computational thinking’ skills developed through programming are useful in a wider context. This is causing an increased focus on computer science in primary and secondary education. Block-based programming tools, like Scratch, have become ubiquitous in primary education (5 to 11-years-old) throughout the UK. However, Scratch users often struggle to detect and correct ‘code smells’ (bad programming practices) such as duplicated blocks and large scripts, which can lead to programs that are difficult to understand. These ‘smells’ are caused by a lack of abstraction and decomposition in programs; skills that play a key role in computational thinking. In Scratch, repeats (loops), custom blocks (procedures) and clones (instances) can be used to correct these smells. Yet, custom blocks and clones are rarely taught to children under 11-years-old. We describe the design of a novel educational block-based programming game, Pirate Plunder, which aims to teach these skills to children aged 9-11. Players use Scratch blocks to navigate around a grid, collect items and interact with obstacles. Blocks are explained in ‘tutorials’; the player then completes a series of ‘challenges’ before attempting the next tutorial. A set of Scratch blocks, including repeats, custom blocks and clones, are introduced in a linear difficulty progression. There are two versions of Pirate Plunder; one that uses a debugging-first approach, where the player is given a program that is incomplete or incorrect, and one where each level begins with an empty program. The game design has been developed through iterative playtesting. The observations made during this process have influenced key design decisions such as Scratch integration, difficulty progression and reward system. In future, we will evaluate Pirate Plunder against a traditional Scratch curriculum and compare the debugging-first and non-debugging versions in a series of studies

    Olfoto: designing a smell-based interaction

    Get PDF
    We present a study into the use of smell for searching digi-tal photo collections. Many people now have large photo libraries on their computers and effective search tools are needed. Smell has a strong link to memory and emotion so may be a good way to cue recall when searching. Our study compared text and smell based tagging. For the first stage we generated a set of smell and tag names from user de-scriptions of photos, participants then used these to tag pho-tos, returning two weeks later to answer questions on their photos. Results showed that participants could tag effec-tively with text labels, as this is a common and familiar task. Performance with smells was lower but participants performed significantly above chance, with some partici-pants using smells well. This suggests that smell has poten-tial. Results also showed that some smells were consistently identified and useful, but some were not and highlighted issues with smell delivery devices. We also discuss some practical issues of using smell for interaction

    Perception and Acceptance of an Autonomous Refactoring Bot

    Full text link
    The use of autonomous bots for automatic support in software development tasks is increasing. In the past, however, they were not always perceived positively and sometimes experienced a negative bias compared to their human counterparts. We conducted a qualitative study in which we deployed an autonomous refactoring bot for 41 days in a student software development project. In between and at the end, we conducted semi-structured interviews to find out how developers perceive the bot and whether they are more or less critical when reviewing the contributions of a bot compared to human contributions. Our findings show that the bot was perceived as a useful and unobtrusive contributor, and developers were no more critical of it than they were about their human colleagues, but only a few team members felt responsible for the bot.Comment: 8 pages, 2 figures. To be published at 12th International Conference on Agents and Artificial Intelligence (ICAART 2020

    Mining Version Histories for Detecting Code Smells

    Get PDF
    Code smells are symptoms of poor design and implementation choices that may hinder code comprehension, and possibly increase change-and fault-proneness. While most of the detection techniques just rely on structural information, many code smells are intrinsically characterized by how code elements change over time. In this paper, we propose Historical Information for Smell deTection (HIST), an approach exploiting change history information to detect instances of five different code smells, namely Divergent Change, Shotgun Surgery, Parallel Inheritance, Blob, and Feature Envy. We evaluate HIST in two empirical studies. The first, conducted on 20 open source projects, aimed at assessing the accuracy of HIST in detecting instances of the code smells mentioned above. The results indicate that the precision of HIST ranges between 72 and 86 percent, and its recall ranges between 58 and 100 percent. Also, results of the first study indicate that HIST is able to identify code smells that cannot be identified by competitive approaches solely based on code analysis of a single system\u27s snapshot. Then, we conducted a second study aimed at investigating to what extent the code smells detected by HIST (and by competitive code analysis techniques) reflect developers\u27 perception of poor design and implementation choices. We involved 12 developers of four open source projects that recognized more than 75 percent of the code smell instances identified by HIST as actual design/implementation problems

    Automated Refactoring of Nested-IF Formulae in Spreadsheets

    Full text link
    Spreadsheets are the most popular end-user programming software, where formulae act like programs and also have smells. One well recognized common smell of spreadsheet formulae is nest-IF expressions, which have low readability and high cognitive cost for users, and are error-prone during reuse or maintenance. However, end users usually lack essential programming language knowledge and skills to tackle or even realize the problem. The previous research work has made very initial attempts in this aspect, while no effective and automated approach is currently available. This paper firstly proposes an AST-based automated approach to systematically refactoring nest-IF formulae. The general idea is two-fold. First, we detect and remove logic redundancy on the AST. Second, we identify higher-level semantics that have been fragmented and scattered, and reassemble the syntax using concise built-in functions. A comprehensive evaluation has been conducted against a real-world spreadsheet corpus, which is collected in a leading IT company for research purpose. The results with over 68,000 spreadsheets with 27 million nest-IF formulae reveal that our approach is able to relieve the smell of over 99\% of nest-IF formulae. Over 50% of the refactorings have reduced nesting levels of the nest-IFs by more than a half. In addition, a survey involving 49 participants indicates that for most cases the participants prefer the refactored formulae, and agree on that such automated refactoring approach is necessary and helpful

    Measuring affective states from technical debt: A psychoempirical software engineering experiment

    Get PDF
    Software engineering is a human activity. Despite this, human aspects are under-represented in technical debt research, perhaps because they are challenging to evaluate. This study's objective was to investigate the relationship between technical debt and affective states (feelings, emotions, and moods) from software practitioners. Forty participants (N = 40) from twelve companies took part in a mixed-methods design, consisting of a repeated-measures (r = 5) experiment (n = 200), a survey employing a questionnaire, and semi-structured interviews. The statistical analysis shows that different design smells negatively or positively impact affective states. From the qualitative data, it is clear that technical debt activates a substantial portion of the emotional spectrum and is psychologically taxing. Further, the practitioner's reactions to technical debt appear to fall in different levels of maturity. We argue that human aspects in technical debt are important factors to consider, as they may result in, e.g., procrastination, apprehension, and burnout.Comment: 48 pages, 11 figures, submitted to Empirical Software Engineerin

    Impacts and Detection of Design Smells

    Full text link
    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

    Bad smells in design and design patterns

    Get PDF
    International audienceTo give a consistent and more valuable property on models, model-driven processes should be able to reuse the expert knowledge generally expressed in terms of patterns. We focus our work on the design stage and on the systematically use of design patterns. Choose a good design pattern and ensure the correct integration of the chosen pattern are non trivial for a designer who wants to use them. To help designers, we propose design inspection in order to detect “bad smells in design” and models reworking through use of design patterns. The automatic detection and the explanation of the misconceptions are performed thanks to spoiled patterns. A “spoiled pattern” is a pattern which allows to instantiate inadequate solutions for a given problem: requirements are respected, but architecture is improvable

    Designing a Programming Game to Improve Children’s Procedural Abstraction Skills in Scratch

    Get PDF
    © The Author(s) 2020. The recent shift in compulsory education from ICT-focused computing curricula to informatics, digital literacy and computer science, has resulted in children being taught computing using block-based programming tools such as Scratch, with teaching that is often limited by school resources and teacher expertise. Even without these limitations, Scratch users often produce code with ‘code smells’ such as duplicate blocks and long scripts which impact how they understand and debug projects. These code smells can be removed using procedural abstraction, an important concept in computer science rarely taught to this age group. This article describes the design of a novel educational block-based programming game, Pirate Plunder, which concentrates on how procedural abstraction is introduced and reinforced. The article then reports an extended evaluation to measure the game’s efficacy with children aged 10 and 11, finding that children who played the game were then able to use procedural abstraction in Scratch. The article then uses game analytics to explore why the game was effective and gives three recommendations for educational game design based on this research: using learning trajectories and restrictive success conditions to introduce complex content, increasing learner investment through customisable avatars and suggestions for improving the evaluations of educational games
    • 

    corecore