Igualdade, ordem e hashing: uma abordagem declarativa para a comparação de objetos.
| Main Author: | |
|---|---|
| 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 |