Reengenharia de um sistema ERP visando sua testabilidade

Detalhes bibliográficos
Autor(a) principal: Moraes, Alex Pedroso
Data de Publicação: 2018
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UFRGS
Texto Completo: http://hdl.handle.net/10183/184951
Resumo: Uma forma de reduzir os custos de manutenção de um sistema de software é a aplicação de técnicas de verificação e validação para garantir a sua qualidade. Dentre essas técnicas, testes unitários são especialmente recomendados devido a sua execução rápida. A aplicação de testes unitários exige que o sistema respeite alguns requisitos, em particular os de possuir baixo acoplamento e baixa complexidade ciclomática, para permitir que seus métodos sejam executados em isolamento durante o teste. O objetivo deste trabalho foi a aplicação da técnica de reengenharia em um sistema de software comercial com seis anos de mercado para adequá-lo a esses requisitos e permitir a adoção de testes unitários em seu processo de desenvolvimento. Foi realizada uma análise da comunicação interna da empresa, na qual foram detectados muitos defeitos no sistema encontrados por usuários, bem como atrasos na entrega de novas funcionalidades. Foi adotada a estratégia de reengenharia parcial para retrabalhar o módulo de emissão de notas fiscais do sistema, que consiste de um único método com mais de 400 linhas de código, uma complexidade ciclomática de 114 e 61 dependências, o que inviabiliza a adoção de testes unitários. Após a aplicação da técnica, o módulo de emissão de notas fiscais foi desmembrado em 33 métodos em 10 classes distintas, respeitando os princípios SOLID. Em média, o número de linhas de código desses novos métodos é de 5,03, com complexidade ciclomática 2,27 e 4,97 dependências por método. Com isso foi possível atingir 100% de cobertura sob o critério de cobertura de caminhos primos com apenas 68 casos de teste. Futuramente, é recomendado reavaliar o processo de desenvolvimento, coletando novamente dados sobre a incidência de defeitos e sobre a eficiência do processo de desenvolvimento para verificar o impacto da adoção dos testes unitários na produtividade da equipe.
id UFRGS-2_5cd713d8e9730371b226e70776e68df5
oai_identifier_str oai:www.lume.ufrgs.br:10183/184951
network_acronym_str UFRGS-2
network_name_str Repositório Institucional da UFRGS
repository_id_str
spelling Moraes, Alex PedrosoCota, Erika Fernandes2018-11-23T02:44:21Z2018http://hdl.handle.net/10183/184951001077825Uma forma de reduzir os custos de manutenção de um sistema de software é a aplicação de técnicas de verificação e validação para garantir a sua qualidade. Dentre essas técnicas, testes unitários são especialmente recomendados devido a sua execução rápida. A aplicação de testes unitários exige que o sistema respeite alguns requisitos, em particular os de possuir baixo acoplamento e baixa complexidade ciclomática, para permitir que seus métodos sejam executados em isolamento durante o teste. O objetivo deste trabalho foi a aplicação da técnica de reengenharia em um sistema de software comercial com seis anos de mercado para adequá-lo a esses requisitos e permitir a adoção de testes unitários em seu processo de desenvolvimento. Foi realizada uma análise da comunicação interna da empresa, na qual foram detectados muitos defeitos no sistema encontrados por usuários, bem como atrasos na entrega de novas funcionalidades. Foi adotada a estratégia de reengenharia parcial para retrabalhar o módulo de emissão de notas fiscais do sistema, que consiste de um único método com mais de 400 linhas de código, uma complexidade ciclomática de 114 e 61 dependências, o que inviabiliza a adoção de testes unitários. Após a aplicação da técnica, o módulo de emissão de notas fiscais foi desmembrado em 33 métodos em 10 classes distintas, respeitando os princípios SOLID. Em média, o número de linhas de código desses novos métodos é de 5,03, com complexidade ciclomática 2,27 e 4,97 dependências por método. Com isso foi possível atingir 100% de cobertura sob o critério de cobertura de caminhos primos com apenas 68 casos de teste. Futuramente, é recomendado reavaliar o processo de desenvolvimento, coletando novamente dados sobre a incidência de defeitos e sobre a eficiência do processo de desenvolvimento para verificar o impacto da adoção dos testes unitários na produtividade da equipe.A way to reduce maintenance costs in a software system is the application of verification and validation techniques to ensure its quality. Of all those techniques, unit testing is especially recommended because of its fast execution. The use of unit tests demands the system to respect some requirements, mainly to have low coupling and low cyclomatic complexity, allowing its methods to be executed in isolation during testing. The primary goal of this study was the application of the reengineering in a commercial software system that is in the market for six years to comply with those requirements and allow the use of unit tests in its development process. The internal communication of the company was analyzed, and many user-reported failures and new features shipment delays were detected. The reengineering strategy was used to rework one specific module of the system ("emissão de notas fiscais"), which is a single method with more than 400 lines of code, cyclomatic complexity of 114 and 61 dependencies. After the application of the technique, the module was separated in 33 methods in 10 different classes, respecting SOLID principles. The number of lines of code of these new methods was, on average, 5.03, with a cyclomatic complexity of 2.27 and 4.97 dependencies per method. Coverage of 100% was achieved under the prime paths criteria through only 68 test cases. In the future, it is recommended the re-evaluation of the development process and a new data collection about the incidence of failures and the efficiency of the development process to check the impact of the use of unit testing on the productivity of the team.application/pdfporMicroeletrônicaUnit testingReengineeringTestabilityReengenharia de um sistema ERP visando sua testabilidadeReengineering of an ERP system aiming for its testability info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisUniversidade Federal do Rio Grande do SulInstituto de InformáticaPorto Alegre, BR-RS2018Engenharia de Computaçãograduaçãoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRGSinstname:Universidade Federal do Rio Grande do Sul (UFRGS)instacron:UFRGSTEXT001077825.pdf.txt001077825.pdf.txtExtracted Texttext/plain78462http://www.lume.ufrgs.br/bitstream/10183/184951/2/001077825.pdf.txtbed99c7c165b041e9329db1f859bf2a8MD52ORIGINAL001077825.pdfTexto completoapplication/pdf1226007http://www.lume.ufrgs.br/bitstream/10183/184951/1/001077825.pdfd568fab11145e678845e0fefdd774be5MD5110183/1849512018-11-24 03:14:22.134221oai:www.lume.ufrgs.br:10183/184951Repositório de PublicaçõesPUBhttps://lume.ufrgs.br/oai/requestopendoar:2018-11-24T05:14:22Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)false
dc.title.pt_BR.fl_str_mv Reengenharia de um sistema ERP visando sua testabilidade
dc.title.alternative.en.fl_str_mv Reengineering of an ERP system aiming for its testability
title Reengenharia de um sistema ERP visando sua testabilidade
spellingShingle Reengenharia de um sistema ERP visando sua testabilidade
Moraes, Alex Pedroso
Microeletrônica
Unit testing
Reengineering
Testability
title_short Reengenharia de um sistema ERP visando sua testabilidade
title_full Reengenharia de um sistema ERP visando sua testabilidade
title_fullStr Reengenharia de um sistema ERP visando sua testabilidade
title_full_unstemmed Reengenharia de um sistema ERP visando sua testabilidade
title_sort Reengenharia de um sistema ERP visando sua testabilidade
author Moraes, Alex Pedroso
author_facet Moraes, Alex Pedroso
author_role author
dc.contributor.author.fl_str_mv Moraes, Alex Pedroso
dc.contributor.advisor1.fl_str_mv Cota, Erika Fernandes
contributor_str_mv Cota, Erika Fernandes
dc.subject.por.fl_str_mv Microeletrônica
topic Microeletrônica
Unit testing
Reengineering
Testability
dc.subject.eng.fl_str_mv Unit testing
Reengineering
Testability
description Uma forma de reduzir os custos de manutenção de um sistema de software é a aplicação de técnicas de verificação e validação para garantir a sua qualidade. Dentre essas técnicas, testes unitários são especialmente recomendados devido a sua execução rápida. A aplicação de testes unitários exige que o sistema respeite alguns requisitos, em particular os de possuir baixo acoplamento e baixa complexidade ciclomática, para permitir que seus métodos sejam executados em isolamento durante o teste. O objetivo deste trabalho foi a aplicação da técnica de reengenharia em um sistema de software comercial com seis anos de mercado para adequá-lo a esses requisitos e permitir a adoção de testes unitários em seu processo de desenvolvimento. Foi realizada uma análise da comunicação interna da empresa, na qual foram detectados muitos defeitos no sistema encontrados por usuários, bem como atrasos na entrega de novas funcionalidades. Foi adotada a estratégia de reengenharia parcial para retrabalhar o módulo de emissão de notas fiscais do sistema, que consiste de um único método com mais de 400 linhas de código, uma complexidade ciclomática de 114 e 61 dependências, o que inviabiliza a adoção de testes unitários. Após a aplicação da técnica, o módulo de emissão de notas fiscais foi desmembrado em 33 métodos em 10 classes distintas, respeitando os princípios SOLID. Em média, o número de linhas de código desses novos métodos é de 5,03, com complexidade ciclomática 2,27 e 4,97 dependências por método. Com isso foi possível atingir 100% de cobertura sob o critério de cobertura de caminhos primos com apenas 68 casos de teste. Futuramente, é recomendado reavaliar o processo de desenvolvimento, coletando novamente dados sobre a incidência de defeitos e sobre a eficiência do processo de desenvolvimento para verificar o impacto da adoção dos testes unitários na produtividade da equipe.
publishDate 2018
dc.date.accessioned.fl_str_mv 2018-11-23T02:44:21Z
dc.date.issued.fl_str_mv 2018
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10183/184951
dc.identifier.nrb.pt_BR.fl_str_mv 001077825
url http://hdl.handle.net/10183/184951
identifier_str_mv 001077825
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRGS
instname:Universidade Federal do Rio Grande do Sul (UFRGS)
instacron:UFRGS
instname_str Universidade Federal do Rio Grande do Sul (UFRGS)
instacron_str UFRGS
institution UFRGS
reponame_str Repositório Institucional da UFRGS
collection Repositório Institucional da UFRGS
bitstream.url.fl_str_mv http://www.lume.ufrgs.br/bitstream/10183/184951/2/001077825.pdf.txt
http://www.lume.ufrgs.br/bitstream/10183/184951/1/001077825.pdf
bitstream.checksum.fl_str_mv bed99c7c165b041e9329db1f859bf2a8
d568fab11145e678845e0fefdd774be5
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)
repository.mail.fl_str_mv
_version_ 1815447231726092288