Please use this identifier to cite or link to this item: http://hdl.handle.net/10362/163258
Title: A Case Study of Reengineering of the CCCExplorer tool
Author: Grilo, Ana Beatriz Domingos
Advisor: Monteiro, Miguel
Keywords: Re-engineering
Refactoring
Legacy Systems
JUnit
CCCExplorer
Design Disharmonies
Defense Date: May-2023
Abstract: Software systems are widely used in various domains, but as these systems evolve over time, they often suffer from poor code quality, lack of testability, and maintenance issues. In this thesis, we present a reengineering study aimed at improving the code quality and testability of a Java system, CCCExplorer. We start by introducing the tools and concepts used in our study, including refactoring and unit testing, and explain the theoretical foundations of these concepts, such as unit test development. We then apply these concepts to a real-world Java system and conduct a thorough examination of its source code to identify its weaknesses, such as code smells. The work in this dissertation started with a code quality analysis, and was the divided into three tasks: (1) analysis of Matlab function headers, (2) developing tests for the operators and keywords, which led to fixing a code error and (3) integrating and developing tests for new functionalities developed by others. The tests ensure that the system’s functionalities are working as intended and helped locate and fix a code error. Specifically, we developed unit tests to test the system’s behavior before and after the fix. Our findings show that this work has improved the code quality and testability of CCCExplorer, and that our approach can be applied to other Java systems with similar issues. Our contributions include a description of our approach to bug fixing using unit tests, which can help guide future reengineering efforts aimed at improving the quality and reliability of software systems, specifically CCCExplorer.
Sistemas de software são amplamente utilizados nas mais diversas áreas mas, com o tempo, esses sistemas podem apresentar inconvenientes, nomeadamente má qualidade de código, dificuldade em testar e problemas de manutenção. Na presente tese, é apresentado um estudo para melhorar a qualidade do código e a testabilidade de um sistema Java: o CCCExplorer. Em primeiro lugar, é fundamental introduzir as ferramentas e conceitos utilizados ao longo deste trabalho e explicar as bases teóricas desses conceitos, que incluem refatorização e testes unitários. Estes são então aplicados a um sistema Java real, tendo sido conduzida uma análise minuciosa do seu código-fonte para identificar as suas fraquezas, como "code smells". O trabalho começou por uma análise de qualidade de código, e foi dividido em três tarefas: (1) análise dos cabeçalhos das funções do Matlab, (2) desenvolvimento de testes para operadores e palavras-chave, que permitiu a correção de um erro de código, e (3) integração e desenvolvimento de testes para novas funcionalidades desenvolvidas por outros. Os testes garantem que as funcionalidades do sistema estão a atuar corretamente e ajudaram a localizar e corrigir um erro de código. Especificamente, foram desenvolvidos testes unitários para testar o comportamento do sistema antes e depois da correção. Os nossos resultados constatam que este trabalho melhorou a qualidade de código e testabilidade do CCCExplorer, e que a nossa abordagem pode ser aplicada a outros sistemas Java com problemas semelhantes. As nossas contribuições incluem uma descrição da nossa abordagem para correção de erros através de testes unitários, o que pode ajudar a orientar futuros esforços de reengenharia destinados a melhorar a qualidade e fiabilidade de sistemas de software, especificamente do CCCExplorer.
URI: http://hdl.handle.net/10362/163258
Designation: MASTER IN COMPUTER SCIENCE
Appears in Collections:FCT: DI - Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
Grilo_2023.pdf4,64 MBAdobe PDFView/Open


FacebookTwitterDeliciousLinkedInDiggGoogle BookmarksMySpace
Formato BibTex MendeleyEndnote 

Items in Repository are protected by copyright, with all rights reserved, unless otherwise indicated.