6 research outputs found

    An experience report of the solo iterative process

    Get PDF
    The field of software engineering is over 50 years old; originally, mathematicians and engineers thought software development was more of an art form than a defined process. These first software engineers managed to produce a variety of complex, working software; however, many software engineers today use agile processes. This thesis is an experience report in an agile process called the Solo Iterative Process. In this thesis, previous research is reviewed in previous solo processes, team processes, individual phases of software evolution and software evolution tools. Then the Solo Iterative Process is defined. To begin the experience report a subject software, a change request and the tools and technologies are identified. Then 9 change requests are performed on the subject software. The discussion looks at matters of individual phases that occur over a set of change requests

    A systematic literature review on the code smells datasets and validation mechanisms

    Full text link
    The accuracy reported for code smell-detecting tools varies depending on the dataset used to evaluate the tools. Our survey of 45 existing datasets reveals that the adequacy of a dataset for detecting smells highly depends on relevant properties such as the size, severity level, project types, number of each type of smell, number of smells, and the ratio of smelly to non-smelly samples in the dataset. Most existing datasets support God Class, Long Method, and Feature Envy while six smells in Fowler and Beck's catalog are not supported by any datasets. We conclude that existing datasets suffer from imbalanced samples, lack of supporting severity level, and restriction to Java language.Comment: 34 pages, 10 figures, 12 tables, Accepte

    Explainable, Security-Aware and Dependency-Aware Framework for Intelligent Software Refactoring

    Full text link
    As software systems continue to grow in size and complexity, their maintenance continues to become more challenging and costly. Even for the most technologically sophisticated and competent organizations, building and maintaining high-performing software applications with high-quality-code is an extremely challenging and expensive endeavor. Software Refactoring is widely recognized as the key component for maintaining high-quality software by restructuring existing code and reducing technical debt. However, refactoring is difficult to achieve and often neglected due to several limitations in the existing refactoring techniques that reduce their effectiveness. These limitation include, but not limited to, detecting refactoring opportunities, recommending specific refactoring activities, and explaining the recommended changes. Existing techniques are mainly focused on the use of quality metrics such as coupling, cohesion, and the Quality Metrics for Object Oriented Design (QMOOD). However, there are many other factors identified in this work to assist and facilitate different maintenance activities for developers: 1. To structure the refactoring field and existing research results, this dissertation provides the most scalable and comprehensive systematic literature review analyzing the results of 3183 research papers on refactoring covering the last three decades. Based on this survey, we created a taxonomy to classify the existing research, identified research trends and highlighted gaps in the literature for further research. 2. To draw attention to what should be the current refactoring research focus from the developers’ perspective, we carried out the first large scale refactoring study on the most popular online Q&A forum for developers, Stack Overflow. We collected and analyzed posts to identify what developers ask about refactoring, the challenges that practitioners face when refactoring software systems, and what should be the current refactoring research focus from the developers’ perspective. 3. To improve the detection of refactoring opportunities in terms of quality and security in the context of mobile apps, we designed a framework that recommends the files to be refactored based on user reviews. We also considered the detection of refactoring opportunities in the context of web services. We proposed a machine learning-based approach that helps service providers and subscribers predict the quality of service with the least costs. Furthermore, to help developers make an accurate assessment of the quality of their software systems and decide if the code should be refactored, we propose a clustering-based approach to automatically identify the preferred benchmark to use for the quality assessment of a project. 4. Regarding the refactoring generation process, we proposed different techniques to enhance the change operators and seeding mechanism by using the history of applied refactorings and incorporating refactoring dependencies in order to improve the quality of the refactoring solutions. We also introduced the security aspect when generating refactoring recommendations, by investigating the possible impact of improving different quality attributes on a set of security metrics and finding the best trade-off between them. In another approach, we recommend refactorings to prioritize fixing quality issues in security-critical files, improve quality attributes and remove code smells. All the above contributions were validated at the large scale on thousands of open source and industry projects in collaboration with industry partners and the open source community. The contributions of this dissertation are integrated in a cloud-based refactoring framework which is currently used by practitioners.Ph.D.College of Engineering & Computer ScienceUniversity of Michigan-Dearbornhttp://deepblue.lib.umich.edu/bitstream/2027.42/171082/1/Chaima Abid Final Dissertation.pdfDescription of Chaima Abid Final Dissertation.pdf : Dissertatio

    Avaliação Experimental da Detecção Interativa de Anomalias de Código

    Get PDF
    Anomalias de código são estruturas que frequentemente indicam a presença de problemas no software, dificultando sua manutenção e evolução. Existem várias anomalias catalogadas na literatura e sua detecção geralmente é feita por meio de abordagens de Detecção NãoInterativa (DNI). Essas abordagens não oferecem suporte à interação progressiva dos desenvolvedores com o código afetado, revelando ocorrências de anomalias mais globais apenas sob demanda do desenvolvedor, implicando recorrentemente na identificação tardia destas anomalias. Com o surgimento da Detecção Interativa (DI), busca-se lidar com as limitações das abordagens tradicionais, permitindo a revelação de instâncias de anomalias de código sem uma solicitação explícita do desenvolvedor, incentivando a detecção precoce como uma prática recomendada. Embora os desenvolvedores considerem o uso de abordagens DI, a literatura não oferece diretrizes claras sobre quando e como essas abordagens devem ser utilizadas no contexto das atividades de desenvolvimento de software. Neste trabalho, tem-se como objetivo a avaliação experimental da abordagem de detecção interativa de anomalias de código no contexto das atividades do processo de desenvolvimento de software. Para isso, foram conduzidos estudos no intuito de identificar a necessidade de uso de tal abordagem, avaliar métodos de detecção aderentes, desenvolver suporte automatizado com características DI, apresentar evidências empíricas sobre sua eficácia na detecção de anomalias, bem como descrever um modo de integração ao processo de desenvolvimento de acordo com o arcabouço do Scrum. As tarefas experimentais revelaram que o uso da DI resultou em um aumento de até 40% na medida recall e de até 25% na medida precision na detecção de anomalias durante as atividades de inspeção e desenvolvimento de código. Com base nos resultados dos estudos, conclui-se que fatores associados à DI contribuíram para detecção antecipada de um maior número de ocorrências de anomalias de código se comparada com abordagens tradicionais. Consequentemente, a utilização disciplinada da abordagem DI em um processo de desenvolvimento pode promover uma avaliação contínua e melhorar a qualidade do softwareCode smells generally indicate the presence of deeper problems in the software, making its maintenance and evolution difficult. Several smells are cataloged in the literature, and their detection is traditionally supported by Non-Interactive Detection (NID) approaches. These approaches do not support the progressive interaction of developers with the affected code, revealing occurrences of more global smells only at the developer’s request, recurrently implying a late identification of these smells. With the emergence of Interactive Detection (ID), the aim is to deal with the limitations of traditional approaches, allowing the revelation of instances of code smells without an explicit request from the developer, encouraging early detection as a recommended practice. Although developers consider using ID approaches, guidelines were not found in the literature on when and how such approaches should be used in the context of software development activities. In this work, the objective is the experimental evaluation of the interactive detection of code smells in the context of the activities of the software development process. For doing so, studies were conducted to identify the need to use such an approach, evaluate adherent detection methods, develop automated support with DI characteristics, present empirical evidence on its effectiveness in detecting anomalies, as well as describe a way of integration to the development process according to the Scrum framework. The experimental tasks revealed that using the ID technique led to an increase of up to 40% in the recall and up to 25% in the precision in the detection of code smells during inspection activities and code development. Based on the results of the studies, it is concluded that factors associated with ID contributed to the early detection of a greater number of occurrences of code smells compared to traditional approaches. Consequently, using the ID approach in a disciplined way in a development process can promote continuous evaluation and improve the quality of the software
    corecore