Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA

Detalhes bibliográficos
Ano de defesa: 2017
Autor(a) principal: RODRIGUES, Alessandro Borges
Orientador(a): GARCIA, Vinicius Cardoso
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pernambuco
Programa de Pós-Graduação: Programa de Pos Graduacao em Ciencia da Computacao
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
Link de acesso: https://repositorio.ufpe.br/handle/123456789/25232
Resumo: A constante evolução tecnológica, tanto de hardware quanto de software, faz com que muitos sistemas tornem-se obsoletos, apesar de ainda atenderem seus requisitos e serem estáveis. Outrora foi a época dos sistemas procedurais, hoje vemos que a própria evolução deles, os orientados a objetos, em muitos casos, se tornaram obsoletos, grandes e complexos, com tecnologias ultrapassadas e contendo centenas ou milhares de classes, sendo esses problemas agravados naqueles que foram construídos de forma monolítica, possuindo assim apenas um único arquivo como resultado. A arquitetura orientada a serviços permite a criação de sistemas com menor complexidade, já que seus serviços possuem baixo acoplamento, permitindo atualizações individuais sem afetar os demais serviços. Porém, a reconstrução dos sistemas já existentes nessa nova arquitetura é inviável, devido ao custo necessário (tempo, mão de obra etc.), sendo a reengenharia deles uma possível solução, que permite a reformulação desses sistemas de uma maneira menos onerosa. Apesar da arquitetura em camadas ser bastante utilizada nos sistemas orientados a objetos, faltam soluções de reengenharia que leve esse fato em consideração, não sendo tão efetivas quando executadas em sistemas com essa arquitetura. Este trabalho busca definir uma abordagem para modernização de sistemas monolíticos, orientados a objetos e que tenham sido desenvolvidos com a arquitetura em camadas, para a arquitetura orientada a serviços, de uma forma semi-automatizada, sem a necessidade de o engenheiro de software possuir um profundo conhecimento do sistema a ser modernizado. No sistema reconstruído, as classes das camadas de negócio e persistência serão agrupadas de acordo com seus relacionamentos, e os métodos das classes de negócio serão disponibilizados como serviços. As etapas da abordagem proposta são constituídas de técnicas, cujas fórmulas e algoritmos podem ser adicionados/transformados em ferramentas que automatizarão o processo. Esta metodologia de modernização permite que os web services criados possuam uma quantidade menor de classes, além de menor complexidade em cada serviço, mantendo a funcionalidade original. Isso é conseguido tanto através de refatorações no código original que diminui a quantidade de dependência entre as classes, quanto através da separação de agrupamentos de classes em pedaços menores. Foram obtidos resultados satisfatórios no estudo de caso, como redução de 24% da dependência média entre as classes, diminuição de 80% e 6,33% do tamanho e da complexidade estática do componente (CSC), respectivamente e 100% de sucesso nos testes de regressão.
id UFPE_a19f4b1cac2383ea3e7f7ba4d6c8cfd9
oai_identifier_str oai:repositorio.ufpe.br:123456789/25232
network_acronym_str UFPE
network_name_str Repositório Institucional da UFPE
repository_id_str
spelling RODRIGUES, Alessandro Borgeshttp://lattes.cnpq.br/0653133885527174http://lattes.cnpq.br/6613487636748832GARCIA, Vinicius Cardoso2018-07-27T16:50:13Z2018-07-27T16:50:13Z2017-03-27https://repositorio.ufpe.br/handle/123456789/25232A constante evolução tecnológica, tanto de hardware quanto de software, faz com que muitos sistemas tornem-se obsoletos, apesar de ainda atenderem seus requisitos e serem estáveis. Outrora foi a época dos sistemas procedurais, hoje vemos que a própria evolução deles, os orientados a objetos, em muitos casos, se tornaram obsoletos, grandes e complexos, com tecnologias ultrapassadas e contendo centenas ou milhares de classes, sendo esses problemas agravados naqueles que foram construídos de forma monolítica, possuindo assim apenas um único arquivo como resultado. A arquitetura orientada a serviços permite a criação de sistemas com menor complexidade, já que seus serviços possuem baixo acoplamento, permitindo atualizações individuais sem afetar os demais serviços. Porém, a reconstrução dos sistemas já existentes nessa nova arquitetura é inviável, devido ao custo necessário (tempo, mão de obra etc.), sendo a reengenharia deles uma possível solução, que permite a reformulação desses sistemas de uma maneira menos onerosa. Apesar da arquitetura em camadas ser bastante utilizada nos sistemas orientados a objetos, faltam soluções de reengenharia que leve esse fato em consideração, não sendo tão efetivas quando executadas em sistemas com essa arquitetura. Este trabalho busca definir uma abordagem para modernização de sistemas monolíticos, orientados a objetos e que tenham sido desenvolvidos com a arquitetura em camadas, para a arquitetura orientada a serviços, de uma forma semi-automatizada, sem a necessidade de o engenheiro de software possuir um profundo conhecimento do sistema a ser modernizado. No sistema reconstruído, as classes das camadas de negócio e persistência serão agrupadas de acordo com seus relacionamentos, e os métodos das classes de negócio serão disponibilizados como serviços. As etapas da abordagem proposta são constituídas de técnicas, cujas fórmulas e algoritmos podem ser adicionados/transformados em ferramentas que automatizarão o processo. Esta metodologia de modernização permite que os web services criados possuam uma quantidade menor de classes, além de menor complexidade em cada serviço, mantendo a funcionalidade original. Isso é conseguido tanto através de refatorações no código original que diminui a quantidade de dependência entre as classes, quanto através da separação de agrupamentos de classes em pedaços menores. Foram obtidos resultados satisfatórios no estudo de caso, como redução de 24% da dependência média entre as classes, diminuição de 80% e 6,33% do tamanho e da complexidade estática do componente (CSC), respectivamente e 100% de sucesso nos testes de regressão.The constant technological evolution, both hardware and software, makes many systems become obsolete, although they still attend their requirements and are stable. Once was the time of procedural systems, today we see that the very evolution of them, the object-oriented, in many cases, have become obsolete, large and complex, with outdated technologies and containing hundreds or thousands of classes, these problems being aggravated in those that were built in a monolithic way, thus possessing only a single file as a result. The service-oriented architecture allows the creation of systems with less complexity, as their services have low coupling, allowing individual updates without affecting other services. However, reconstruction of existing systems in this new architecture is not feasible due to the cost needed (time, labor etc), reengineering them being a possible solution, which allows the reformulation of these systems in a less costly way. Although the layered architecture is the most used in object oriented systems, it lacks reengineering solutions that take this fact into account, not being so effective when executed in systems with this architecture. This work aims to define an approach to the modernization of monolithic and layered systems for service-oriented architecture, in a semi-automated manner, without the need for the sotware engineer has a deep knowledge of the system to be modernized. In the rebuilt system, the business and persistences layer classes will be grouped according to their relationships, and methods of business classes will be made available as services. The steps of the proposed approach are techniques, whose formulas and algorithms can be added/transformed into tools that will semi-automate the process. This modernization methodology allows the created web services to have a smaller number of classes, in addition to less complexity in each service, maintaining the original functionality. This is accomplished both by refactoring in the original code that decreases the amount of dependency between classes, and by separating class clusters into smaller pieces. Satisfactory results were obtained in the case study, such as a reduction of 24% in average dependence between classes, a decrease of 80% and 6.33% in component size and static complexity (CSC), respectively, and a 100% success rate in the tests regression analysis.porUniversidade Federal de PernambucoPrograma de Pos Graduacao em Ciencia da ComputacaoUFPEBrasilAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia de softwareArquitetura de softwareUma abordagem gradativa de modernização de software monolítico e em camadas para SOAinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesismestradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPETHUMBNAILDISSERTAÇÃO Alessandro Borges Rodrigues.pdf.jpgDISSERTAÇÃO Alessandro Borges Rodrigues.pdf.jpgGenerated Thumbnailimage/jpeg1257https://repositorio.ufpe.br/bitstream/123456789/25232/6/DISSERTA%c3%87%c3%83O%20Alessandro%20Borges%20Rodrigues.pdf.jpgfc8608cfd6c55fc525cbe5591807c436MD56ORIGINALDISSERTAÇÃO Alessandro Borges Rodrigues.pdfDISSERTAÇÃO Alessandro Borges Rodrigues.pdfapplication/pdf1761535https://repositorio.ufpe.br/bitstream/123456789/25232/1/DISSERTA%c3%87%c3%83O%20Alessandro%20Borges%20Rodrigues.pdff866b884b141e0ff0be99ea5d2d502ceMD51LICENSElicense.txtlicense.txttext/plain; charset=utf-82311https://repositorio.ufpe.br/bitstream/123456789/25232/3/license.txt4b8a02c7f2818eaf00dcf2260dd5eb08MD53CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufpe.br/bitstream/123456789/25232/4/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD54TEXTDISSERTAÇÃO Alessandro Borges Rodrigues.pdf.txtDISSERTAÇÃO Alessandro Borges Rodrigues.pdf.txtExtracted texttext/plain165090https://repositorio.ufpe.br/bitstream/123456789/25232/5/DISSERTA%c3%87%c3%83O%20Alessandro%20Borges%20Rodrigues.pdf.txt1ef8ed450542b5d31e3bb8b77aecfa41MD55123456789/252322019-10-26 01:14:05.416oai:repositorio.ufpe.br:123456789/25232TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLMKgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVGUEUgaWRlbnRpZmljYXLDoSBjbGFyYW1lbnRlIG8ocykgbm9tZShzKSBkbyhzKSBhdXRvciAoZXMpIGRvcyBkaXJlaXRvcyBkbyBkb2N1bWVudG8gZW50cmVndWUgZSBuw6NvIGZhcsOhIHF1YWxxdWVyIGFsdGVyYcOnw6NvLCBwYXJhIGFsw6ltIGRvIHByZXZpc3RvIG5hIGFsw61uZWEgYykuCg==Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-26T04:14:05Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false
dc.title.pt_BR.fl_str_mv Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
title Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
spellingShingle Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
RODRIGUES, Alessandro Borges
Engenharia de software
Arquitetura de software
title_short Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
title_full Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
title_fullStr Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
title_full_unstemmed Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
title_sort Uma abordagem gradativa de modernização de software monolítico e em camadas para SOA
author RODRIGUES, Alessandro Borges
author_facet RODRIGUES, Alessandro Borges
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/0653133885527174
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/6613487636748832
dc.contributor.author.fl_str_mv RODRIGUES, Alessandro Borges
dc.contributor.advisor1.fl_str_mv GARCIA, Vinicius Cardoso
contributor_str_mv GARCIA, Vinicius Cardoso
dc.subject.por.fl_str_mv Engenharia de software
Arquitetura de software
topic Engenharia de software
Arquitetura de software
description A constante evolução tecnológica, tanto de hardware quanto de software, faz com que muitos sistemas tornem-se obsoletos, apesar de ainda atenderem seus requisitos e serem estáveis. Outrora foi a época dos sistemas procedurais, hoje vemos que a própria evolução deles, os orientados a objetos, em muitos casos, se tornaram obsoletos, grandes e complexos, com tecnologias ultrapassadas e contendo centenas ou milhares de classes, sendo esses problemas agravados naqueles que foram construídos de forma monolítica, possuindo assim apenas um único arquivo como resultado. A arquitetura orientada a serviços permite a criação de sistemas com menor complexidade, já que seus serviços possuem baixo acoplamento, permitindo atualizações individuais sem afetar os demais serviços. Porém, a reconstrução dos sistemas já existentes nessa nova arquitetura é inviável, devido ao custo necessário (tempo, mão de obra etc.), sendo a reengenharia deles uma possível solução, que permite a reformulação desses sistemas de uma maneira menos onerosa. Apesar da arquitetura em camadas ser bastante utilizada nos sistemas orientados a objetos, faltam soluções de reengenharia que leve esse fato em consideração, não sendo tão efetivas quando executadas em sistemas com essa arquitetura. Este trabalho busca definir uma abordagem para modernização de sistemas monolíticos, orientados a objetos e que tenham sido desenvolvidos com a arquitetura em camadas, para a arquitetura orientada a serviços, de uma forma semi-automatizada, sem a necessidade de o engenheiro de software possuir um profundo conhecimento do sistema a ser modernizado. No sistema reconstruído, as classes das camadas de negócio e persistência serão agrupadas de acordo com seus relacionamentos, e os métodos das classes de negócio serão disponibilizados como serviços. As etapas da abordagem proposta são constituídas de técnicas, cujas fórmulas e algoritmos podem ser adicionados/transformados em ferramentas que automatizarão o processo. Esta metodologia de modernização permite que os web services criados possuam uma quantidade menor de classes, além de menor complexidade em cada serviço, mantendo a funcionalidade original. Isso é conseguido tanto através de refatorações no código original que diminui a quantidade de dependência entre as classes, quanto através da separação de agrupamentos de classes em pedaços menores. Foram obtidos resultados satisfatórios no estudo de caso, como redução de 24% da dependência média entre as classes, diminuição de 80% e 6,33% do tamanho e da complexidade estática do componente (CSC), respectivamente e 100% de sucesso nos testes de regressão.
publishDate 2017
dc.date.issued.fl_str_mv 2017-03-27
dc.date.accessioned.fl_str_mv 2018-07-27T16:50:13Z
dc.date.available.fl_str_mv 2018-07-27T16:50:13Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://repositorio.ufpe.br/handle/123456789/25232
url https://repositorio.ufpe.br/handle/123456789/25232
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.publisher.program.fl_str_mv Programa de Pos Graduacao em Ciencia da Computacao
dc.publisher.initials.fl_str_mv UFPE
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPE
instname:Universidade Federal de Pernambuco (UFPE)
instacron:UFPE
instname_str Universidade Federal de Pernambuco (UFPE)
instacron_str UFPE
institution UFPE
reponame_str Repositório Institucional da UFPE
collection Repositório Institucional da UFPE
bitstream.url.fl_str_mv https://repositorio.ufpe.br/bitstream/123456789/25232/6/DISSERTA%c3%87%c3%83O%20Alessandro%20Borges%20Rodrigues.pdf.jpg
https://repositorio.ufpe.br/bitstream/123456789/25232/1/DISSERTA%c3%87%c3%83O%20Alessandro%20Borges%20Rodrigues.pdf
https://repositorio.ufpe.br/bitstream/123456789/25232/3/license.txt
https://repositorio.ufpe.br/bitstream/123456789/25232/4/license_rdf
https://repositorio.ufpe.br/bitstream/123456789/25232/5/DISSERTA%c3%87%c3%83O%20Alessandro%20Borges%20Rodrigues.pdf.txt
bitstream.checksum.fl_str_mv fc8608cfd6c55fc525cbe5591807c436
f866b884b141e0ff0be99ea5d2d502ce
4b8a02c7f2818eaf00dcf2260dd5eb08
e39d27027a6cc9cb039ad269a5db8e34
1ef8ed450542b5d31e3bb8b77aecfa41
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)
repository.mail.fl_str_mv attena@ufpe.br
_version_ 1862741880445337600