Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.

Bibliographic Details
Main Author: Sofiato, Bruno
Publication Date: 2021
Format: Master thesis
Language: por
Source: Biblioteca Digital de Teses e Dissertações da USP
Download full: https://www.teses.usp.br/teses/disponiveis/3/3141/tde-01092021-111751/
Summary: Igualdade e ordem são conceitos relacionados que são usados diariamente. Como eles dependem do domínio, o programador tem que eventualmente codificá-los. Essa codificação, porém, não é fácil. Estudos apontam para ela como sendo uma conhecida fonte de defeitos em programas escritos em linguagens orientadas a objetos. Uma das causas é que tal implementação requer múltiplos métodos que devem ser consistentes entre si. Outra causa é mais insidiosa e é devida à como essas linguagens lidam com a passagem de mensagens. Diversas propostas almejam mitigar essas questões. Elas, porém, impõem restrições severas e não lidam com todos os casos. Não obstante, nenhuma lida com a ordem. Este trabalho propõe um método para comparação de objetos que é agnóstico à linguagem e trata os três aspectos distintos da comparação - igualdade, ordem e hash. A proposta é descrita utilizando-se semântica operacional estruturada no estilo de Plotkin. A sua corretude é provada formalmente. Também é descrito um protótipo que é avaliado baseado em três características de qualidade do modelo de qualidade de software da ISO/IEC 25010 - adequação funcional, eficiência de desempenho e manutenibilidade. Resultados sugerem que a qualidade geral dos programas melhorou, apesar da queda de desempenho.
id USP_ec06507e68838d0b3fb4e4968db1e390
oai_identifier_str oai:teses.usp.br:tde-01092021-111751
network_acronym_str USP
network_name_str Biblioteca Digital de Teses e Dissertações da USP
repository_id_str 2721
spelling Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.Equality, order, and hashing: a declarative approach to object comparison.Declarative programmingEqualityHashingLinguagem de programaçãoObject-oriented programmingOrderProgramação declarativaProgramação orientada a objetosProgramming languagesQualidade de softwareSoftware qualityIgualdade e ordem são conceitos relacionados que são usados diariamente. Como eles dependem do domínio, o programador tem que eventualmente codificá-los. Essa codificação, porém, não é fácil. Estudos apontam para ela como sendo uma conhecida fonte de defeitos em programas escritos em linguagens orientadas a objetos. Uma das causas é que tal implementação requer múltiplos métodos que devem ser consistentes entre si. Outra causa é mais insidiosa e é devida à como essas linguagens lidam com a passagem de mensagens. Diversas propostas almejam mitigar essas questões. Elas, porém, impõem restrições severas e não lidam com todos os casos. Não obstante, nenhuma lida com a ordem. Este trabalho propõe um método para comparação de objetos que é agnóstico à linguagem e trata os três aspectos distintos da comparação - igualdade, ordem e hash. A proposta é descrita utilizando-se semântica operacional estruturada no estilo de Plotkin. A sua corretude é provada formalmente. Também é descrito um protótipo que é avaliado baseado em três características de qualidade do modelo de qualidade de software da ISO/IEC 25010 - adequação funcional, eficiência de desempenho e manutenibilidade. Resultados sugerem que a qualidade geral dos programas melhorou, apesar da queda de desempenho.Equality and ordering are relatable concepts we use daily. As they depend on the domain at hand, the programmer must eventually code them. However, coding them is not easy. Several studies show that they are a known source of bugs in programs written in object-oriented languages. One of the causes is that it requires multiple methods that must be consistent with each other. Another cause is more insidious and is due to how these languages deal with message passing. Several proposals aim to mitigate those issues. They, however, enforce hard constraints and do not handle all the cases. Moreover, none of them deals with order. We propose a method of comparing objects that is agnostic of language and handles the three distinct aspects of comparsion - equality, order, and hashing. We use Plotkin\'s style operational semantics (SOS) to describe it. Its soundness is then formally proven. We also describe a prototype that is assessed based on three software quality characteristics of the ISO/IEC 25010 software quality model - functional suitability, performance efficiency, and maintainability. Results hint that the overall quality of the software improved, despite the decline of performance.Biblioteca Digitais de Teses e Dissertações da USPSiqueira, Fabio LevySofiato, Bruno2021-06-24info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://www.teses.usp.br/teses/disponiveis/3/3141/tde-01092021-111751/reponame:Biblioteca Digital de Teses e Dissertações da USPinstname:Universidade de São Paulo (USP)instacron:USPLiberar o conteúdo para acesso público.info:eu-repo/semantics/openAccesspor2024-10-09T12:45:07Zoai:teses.usp.br:tde-01092021-111751Biblioteca Digital de Teses e Dissertaçõeshttp://www.teses.usp.br/PUBhttp://www.teses.usp.br/cgi-bin/mtd2br.plvirginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.bropendoar:27212024-10-09T12:45:07Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)false
dc.title.none.fl_str_mv Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
Equality, order, and hashing: a declarative approach to object comparison.
title Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
spellingShingle Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
Sofiato, Bruno
Declarative programming
Equality
Hashing
Linguagem de programação
Object-oriented programming
Order
Programação declarativa
Programação orientada a objetos
Programming languages
Qualidade de software
Software quality
title_short Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
title_full Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
title_fullStr Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
title_full_unstemmed Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
title_sort Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
author Sofiato, Bruno
author_facet Sofiato, Bruno
author_role author
dc.contributor.none.fl_str_mv Siqueira, Fabio Levy
dc.contributor.author.fl_str_mv Sofiato, Bruno
dc.subject.por.fl_str_mv Declarative programming
Equality
Hashing
Linguagem de programação
Object-oriented programming
Order
Programação declarativa
Programação orientada a objetos
Programming languages
Qualidade de software
Software quality
topic Declarative programming
Equality
Hashing
Linguagem de programação
Object-oriented programming
Order
Programação declarativa
Programação orientada a objetos
Programming languages
Qualidade de software
Software quality
description Igualdade e ordem são conceitos relacionados que são usados diariamente. Como eles dependem do domínio, o programador tem que eventualmente codificá-los. Essa codificação, porém, não é fácil. Estudos apontam para ela como sendo uma conhecida fonte de defeitos em programas escritos em linguagens orientadas a objetos. Uma das causas é que tal implementação requer múltiplos métodos que devem ser consistentes entre si. Outra causa é mais insidiosa e é devida à como essas linguagens lidam com a passagem de mensagens. Diversas propostas almejam mitigar essas questões. Elas, porém, impõem restrições severas e não lidam com todos os casos. Não obstante, nenhuma lida com a ordem. Este trabalho propõe um método para comparação de objetos que é agnóstico à linguagem e trata os três aspectos distintos da comparação - igualdade, ordem e hash. A proposta é descrita utilizando-se semântica operacional estruturada no estilo de Plotkin. A sua corretude é provada formalmente. Também é descrito um protótipo que é avaliado baseado em três características de qualidade do modelo de qualidade de software da ISO/IEC 25010 - adequação funcional, eficiência de desempenho e manutenibilidade. Resultados sugerem que a qualidade geral dos programas melhorou, apesar da queda de desempenho.
publishDate 2021
dc.date.none.fl_str_mv 2021-06-24
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://www.teses.usp.br/teses/disponiveis/3/3141/tde-01092021-111751/
url https://www.teses.usp.br/teses/disponiveis/3/3141/tde-01092021-111751/
dc.language.iso.fl_str_mv por
language por
dc.relation.none.fl_str_mv
dc.rights.driver.fl_str_mv Liberar o conteúdo para acesso público.
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Liberar o conteúdo para acesso público.
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.coverage.none.fl_str_mv
dc.publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
dc.source.none.fl_str_mv
reponame:Biblioteca Digital de Teses e Dissertações da USP
instname:Universidade de São Paulo (USP)
instacron:USP
instname_str Universidade de São Paulo (USP)
instacron_str USP
institution USP
reponame_str Biblioteca Digital de Teses e Dissertações da USP
collection Biblioteca Digital de Teses e Dissertações da USP
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)
repository.mail.fl_str_mv virginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.br
_version_ 1826319211263164416