Uma técnica para verificar não conformidades em programas especificados com contratos.
| Autor(a) principal: | |
|---|---|
| Data de Publicação: | 2013 |
| Tipo de documento: | Dissertação |
| Idioma: | por |
| Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFCG |
| Texto Completo: | https://dspace.sti.ufcg.edu.br/handle/riufcg/1622 |
Resumo: | A escrita de especificações formais por contratos é uma maneira confiável e prática de construir softwares, em que desenvolvedores e clientes mantêm um acordo contendo direitos e obrigações a serem cumpridos. Essas responsabilidades são expressas basicamente através de pré-condições, pós-condições, e invariantes. Como exemplo de linguagem de especificação por contrato tem-se Java Modeling Language (JML) específica para programas Java. Apesar de a especificação formal melhorar a confiabilidade do software, deve-se haver certificação de que a implementação está em conformidade com a especificação definida. Verificação de conformidade em programas com contratos é geralmente realizada através de análises manuais ou verificação dinâmica, e em fases tardias do processo de desenvolvimento do software, ou seja, quando o produto final encontra-se disponível para o cliente. Nesta situação, o tempo despendido para detectar não-conformidades pode ser muito longo, ocasionando, consequentemente, atrasos no cronograma e aumento nos custos. Neste trabalho, propomos uma abordagem para checar conformidade entre código fonte e especificação formal por contratos através da geração e execução de testes. Testes de unidade são gerados automaticamente, resultando em casos de testes com sequências de chamadas aos métodos e construtores. Os contratos são transformados em assertivas que funcionam como oráculo para os testes. Esta abordagem não garante corretude total do software, mas aumenta a confiança quando uma não-conformidade é encontrada e, além disso, encoraja o uso de especificação por contratos. Nós implementamos JMLOK, uma ferramenta que executa os passos desta abordagem automaticamente no contexto de programas Java especificados com Java Modeling Language (JML). JMLOK foi avaliada em grupos de programas Java/JML, incluindo um módulo do projeto JavaCard. Todas as unidades experimentais totalizam 18 KLOC e 5K de linhas de especificação JML. Todo o processo consumiu menos que 10 minutos de execução e gerou como resultado a detecção de 29 não-conformidades. As causas das ocorrências das não-conformidades foram analisadas manualmente e classificadas em categorias de falhas. |
| id |
UFCG_d400670c3e1077ac916e0fe55671cac7 |
|---|---|
| oai_identifier_str |
oai:dspace.sti.ufcg.edu.br:riufcg/1622 |
| network_acronym_str |
UFCG |
| network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| repository_id_str |
4851 |
| spelling |
Uma técnica para verificar não conformidades em programas especificados com contratos.A technique for verifying nonconformities in specified programs with contracts.Verificação de Conformidade em ProgramasContratos - ConformidadeDesenvolvimento de SoftwareTeste de SoftwareChecagem Automática de Contratos - SoftwareDefinição de ConformidadeDesenvolvimento Baseado em Contratos - SoftwareJava Modeling Language - JMLSoftware TestingOráculo dos Testes - SoftwareCiência da Computação.A escrita de especificações formais por contratos é uma maneira confiável e prática de construir softwares, em que desenvolvedores e clientes mantêm um acordo contendo direitos e obrigações a serem cumpridos. Essas responsabilidades são expressas basicamente através de pré-condições, pós-condições, e invariantes. Como exemplo de linguagem de especificação por contrato tem-se Java Modeling Language (JML) específica para programas Java. Apesar de a especificação formal melhorar a confiabilidade do software, deve-se haver certificação de que a implementação está em conformidade com a especificação definida. Verificação de conformidade em programas com contratos é geralmente realizada através de análises manuais ou verificação dinâmica, e em fases tardias do processo de desenvolvimento do software, ou seja, quando o produto final encontra-se disponível para o cliente. Nesta situação, o tempo despendido para detectar não-conformidades pode ser muito longo, ocasionando, consequentemente, atrasos no cronograma e aumento nos custos. Neste trabalho, propomos uma abordagem para checar conformidade entre código fonte e especificação formal por contratos através da geração e execução de testes. Testes de unidade são gerados automaticamente, resultando em casos de testes com sequências de chamadas aos métodos e construtores. Os contratos são transformados em assertivas que funcionam como oráculo para os testes. Esta abordagem não garante corretude total do software, mas aumenta a confiança quando uma não-conformidade é encontrada e, além disso, encoraja o uso de especificação por contratos. Nós implementamos JMLOK, uma ferramenta que executa os passos desta abordagem automaticamente no contexto de programas Java especificados com Java Modeling Language (JML). JMLOK foi avaliada em grupos de programas Java/JML, incluindo um módulo do projeto JavaCard. Todas as unidades experimentais totalizam 18 KLOC e 5K de linhas de especificação JML. Todo o processo consumiu menos que 10 minutos de execução e gerou como resultado a detecção de 29 não-conformidades. As causas das ocorrências das não-conformidades foram analisadas manualmente e classificadas em categorias de falhas.Writing formal specifications by contracts is a practical and reliable way to build softwares in which developers and clients keep an agreement with rights and obligations to be fulfilled. These responsibilities are expressed basically by pre-conditions, post-conditions and invariants. As example of specification language by contract there is Java Modeling Language (JML) that is specific to Java programs. Although formal specification improves software rehabihty, it should exist certification of conformance with defined specification. Verify conformance between programs and contracts is usually performed by manual analysis or dynamic verification, and in late stages of software development process, that is, when the final product is available to client. In this situation, the time required to detect nonconformances could be so long, causing, consequently, schedule delays and increased costs. In this work, we propose an approach to check conformance between source code and contract formal specification through testing generation and execution. Unit tests are generated automatically resulting in test cases with call sequences of methods and constructors. The contracts are translated in assertions that work like test oracle. We have implemented JMLOK, a tool performs the approach steps automatically in the context of Java programs specified with Java Modeling Language (JML). JMLOK was evaluated in Java/JML programs groups, including a module of the JavaCard project. All the experimental units totalize 18 KLOC and 5K lines of JML specification. All process took less than 10 minutes of running and generated as result 29 nonconformances. The causes of nonconformances occurring were analyzed manually and classified in categories of fails.Universidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGMASSONI, Tiago Lima.MASSONI, T. L.http://lattes.cnpq.br/3563923906851611GHEYI, RohitGHEYI, R.http://lattes.cnpq.br/2931270888717344FARIAS, Adalberto Cajueiro de.CORNÉLIO, Márcio Lopes.OLIVEIRA, Catuxe Varjão de Santana.2013-03-152018-08-31T22:55:43Z2018-08-312018-08-31T22:55:43Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttps://dspace.sti.ufcg.edu.br/handle/riufcg/1622OLIVEIRA, Catuxe Varjão de Santana. Uma técnica para verificar não conformidades em programas especificados com contratos. 2013. 84 f. (Dissertação de Mestrado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraíba - Brasil, 2013. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1622porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2025-07-24T06:21:51Zoai:dspace.sti.ufcg.edu.br:riufcg/1622Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512025-07-24T06:21:51Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
| dc.title.none.fl_str_mv |
Uma técnica para verificar não conformidades em programas especificados com contratos. A technique for verifying nonconformities in specified programs with contracts. |
| title |
Uma técnica para verificar não conformidades em programas especificados com contratos. |
| spellingShingle |
Uma técnica para verificar não conformidades em programas especificados com contratos. OLIVEIRA, Catuxe Varjão de Santana. Verificação de Conformidade em Programas Contratos - Conformidade Desenvolvimento de Software Teste de Software Checagem Automática de Contratos - Software Definição de Conformidade Desenvolvimento Baseado em Contratos - Software Java Modeling Language - JML Software Testing Oráculo dos Testes - Software Ciência da Computação. |
| title_short |
Uma técnica para verificar não conformidades em programas especificados com contratos. |
| title_full |
Uma técnica para verificar não conformidades em programas especificados com contratos. |
| title_fullStr |
Uma técnica para verificar não conformidades em programas especificados com contratos. |
| title_full_unstemmed |
Uma técnica para verificar não conformidades em programas especificados com contratos. |
| title_sort |
Uma técnica para verificar não conformidades em programas especificados com contratos. |
| author |
OLIVEIRA, Catuxe Varjão de Santana. |
| author_facet |
OLIVEIRA, Catuxe Varjão de Santana. |
| author_role |
author |
| dc.contributor.none.fl_str_mv |
MASSONI, Tiago Lima. MASSONI, T. L. http://lattes.cnpq.br/3563923906851611 GHEYI, Rohit GHEYI, R. http://lattes.cnpq.br/2931270888717344 FARIAS, Adalberto Cajueiro de. CORNÉLIO, Márcio Lopes. |
| dc.contributor.author.fl_str_mv |
OLIVEIRA, Catuxe Varjão de Santana. |
| dc.subject.por.fl_str_mv |
Verificação de Conformidade em Programas Contratos - Conformidade Desenvolvimento de Software Teste de Software Checagem Automática de Contratos - Software Definição de Conformidade Desenvolvimento Baseado em Contratos - Software Java Modeling Language - JML Software Testing Oráculo dos Testes - Software Ciência da Computação. |
| topic |
Verificação de Conformidade em Programas Contratos - Conformidade Desenvolvimento de Software Teste de Software Checagem Automática de Contratos - Software Definição de Conformidade Desenvolvimento Baseado em Contratos - Software Java Modeling Language - JML Software Testing Oráculo dos Testes - Software Ciência da Computação. |
| description |
A escrita de especificações formais por contratos é uma maneira confiável e prática de construir softwares, em que desenvolvedores e clientes mantêm um acordo contendo direitos e obrigações a serem cumpridos. Essas responsabilidades são expressas basicamente através de pré-condições, pós-condições, e invariantes. Como exemplo de linguagem de especificação por contrato tem-se Java Modeling Language (JML) específica para programas Java. Apesar de a especificação formal melhorar a confiabilidade do software, deve-se haver certificação de que a implementação está em conformidade com a especificação definida. Verificação de conformidade em programas com contratos é geralmente realizada através de análises manuais ou verificação dinâmica, e em fases tardias do processo de desenvolvimento do software, ou seja, quando o produto final encontra-se disponível para o cliente. Nesta situação, o tempo despendido para detectar não-conformidades pode ser muito longo, ocasionando, consequentemente, atrasos no cronograma e aumento nos custos. Neste trabalho, propomos uma abordagem para checar conformidade entre código fonte e especificação formal por contratos através da geração e execução de testes. Testes de unidade são gerados automaticamente, resultando em casos de testes com sequências de chamadas aos métodos e construtores. Os contratos são transformados em assertivas que funcionam como oráculo para os testes. Esta abordagem não garante corretude total do software, mas aumenta a confiança quando uma não-conformidade é encontrada e, além disso, encoraja o uso de especificação por contratos. Nós implementamos JMLOK, uma ferramenta que executa os passos desta abordagem automaticamente no contexto de programas Java especificados com Java Modeling Language (JML). JMLOK foi avaliada em grupos de programas Java/JML, incluindo um módulo do projeto JavaCard. Todas as unidades experimentais totalizam 18 KLOC e 5K de linhas de especificação JML. Todo o processo consumiu menos que 10 minutos de execução e gerou como resultado a detecção de 29 não-conformidades. As causas das ocorrências das não-conformidades foram analisadas manualmente e classificadas em categorias de falhas. |
| publishDate |
2013 |
| dc.date.none.fl_str_mv |
2013-03-15 2018-08-31T22:55:43Z 2018-08-31 2018-08-31T22:55:43Z |
| 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://dspace.sti.ufcg.edu.br/handle/riufcg/1622 OLIVEIRA, Catuxe Varjão de Santana. Uma técnica para verificar não conformidades em programas especificados com contratos. 2013. 84 f. (Dissertação de Mestrado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraíba - Brasil, 2013. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1622 |
| url |
https://dspace.sti.ufcg.edu.br/handle/riufcg/1622 |
| identifier_str_mv |
OLIVEIRA, Catuxe Varjão de Santana. Uma técnica para verificar não conformidades em programas especificados com contratos. 2013. 84 f. (Dissertação de Mestrado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraíba - Brasil, 2013. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1622 |
| 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.publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
| publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
| dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFCG instname:Universidade Federal de Campina Grande (UFCG) instacron:UFCG |
| instname_str |
Universidade Federal de Campina Grande (UFCG) |
| instacron_str |
UFCG |
| institution |
UFCG |
| reponame_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| collection |
Biblioteca Digital de Teses e Dissertações da UFCG |
| repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG) |
| repository.mail.fl_str_mv |
bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br |
| _version_ |
1850320903714373632 |