dc.creator.ID |
MILANEZ, A. F. |
pt_BR |
dc.creator.Lattes |
http://lattes.cnpq.br/2166423222266686 |
pt_BR |
dc.contributor.advisor1 |
MASSONI, Tiago Lima. |
|
dc.contributor.advisor1ID |
MASSONI, T. L. |
pt_BR |
dc.contributor.advisor1Lattes |
http://lattes.cnpq.br/3563923906851611 |
pt_BR |
dc.contributor.referee1 |
LIMA, Ricado Massa Ferreira. |
|
dc.contributor.referee2 |
ANDRADE, Wilkerson de Lucena. |
|
dc.description.resumo |
Teste é comumente usado para verificar conformidade em programas baseados em contrato;
uma vez que verificação por provas formais tem baixo poder de escalabilidade e análise
estática é, em alguns casos, limitada para identificar não-conformidades mais gerais. Casos
de teste tradicionais, com dados de teste providos manualmente, podem ser ineficazes
para detectar não-conformidades sutis que surgem apenas após diversas criações e modificações
nos objetos sob teste. Essas não-conformidades podem sinalizar bugs mais sutis,
diminuindo os benefícios de usar programas baseados em contrato. Casos de teste gerados
aleatoriamente com dados de teste gerados automaticamente, por outro lado, são uma
abordagem promissora quando testes mais substanciais são necessários. No presente trabalho,
propomos e avaliamos uma abordagem, JMLOK 2.0, para detecção e categorização
de não-conformidades, no contexto de Java Modeling Language (JML). Nossa abordagem
objetiva auxiliar o programador no processo de correção de não-conformidades.
A detecção é suportada por uma abordagem de Testes Gerados Aleatoriamente (RGT).
E a categorização por uma abordagem baseada em heurísticas. Realizamos duas avaliações.
Na primeira, realizamos uma avaliação de nossa abordagem para detecção de
não-conformidades e de nosso processo para categorização manual: detectamos 84 nãoconformidades
em mais de 29 KLOC e mais de 9 K linhas de contratos JML (que iremos
nos referir como KLJML); aplicando nosso modelo de categorização manual, obtivemos
que a maioria das não-conformidades detectadas foram classificadas como erros de póscondição;
também observamos que uma não-conformidade é detectada após 2.54 top-level
chamadas num caso de teste, em média, e que o número de chamadas internas ao caso de
teste que revela a não-conformidade é, em média, de 2.23, nos dando evidências da necessidade
de uma estrutura de testes mais elaborada para detecção de não-conformidades. Além
disso, comparamos nossa abordagem com JET, uma ferramenta existente para detecção de
não-conformidades em programas JML baseada em testes, utilizando um subconjunto dos
programas usados no primeiro estudo (6 KLOC e 5 KLJML). JMLOK 2.0 detectou 30
não-conformidades com cobertura Java de 78.44% e JML de 67.67%, enquanto que JET
detectou 9 não-conformidades cobrindo 47.97% de Java e 56.97% de JML. Na segunda,
realizamos uma avaliação da nossa abordagem automática de categorização: comparamos a categorização manual e a automática e tivemos um valor de coincidências de 0.73 (considerando
as não-conformidades da primeira avaliação) indicando que há similaridade entre
as abordagens de categorização manual e automática; além disso, comparamos os resultados
da categorização automática com a categorização realizada por experts em JML e também
observamos alguma similaridade entre as abordagens. |
pt_BR |
dc.publisher.country |
Brasil |
pt_BR |
dc.publisher.department |
Centro de Engenharia Elétrica e Informática - CEEI |
pt_BR |
dc.publisher.program |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO |
pt_BR |
dc.publisher.initials |
UFCG |
pt_BR |
dc.title |
"Aprimorando a verificação de conformidade em programas baseadas em contratos". |
pt_BR |
dc.date.issued |
2014-06-06 |
|
dc.description.abstract |
Testing is commonly used to check conformance in contract-based programs, as verification
by formal proofs is hard to scale and static analysis is, sometimes, limited for detecting
general nonconformances. Traditional test cases, with manually-provided data, may be ineffective
in detecting subtle nonconformances that arise only after several instantiations and
modifications in objects under test. Those nonconformances may signalize more subtle bugs,
hindering the benefits of using contract-based programs. Random-generated tests with automatic
test data generation, on the other hand, is a promising approach when more substantial
testing is demanded. In this work, we propose and evaluate an approach, JMLOK 2.0, for
automatically detecting and categorizing nonconformances, in the context of Java Modeling
Language (JML). Our approach aims to help the programmer in the process of nonconformances
correction. The detection is backed by Randomly-Generated Tests (RGT) approach.
And the categorization is backed by heuristics-based approach. We perform two evaluations.
First, we perform an evaluation of our detection approach and our manual categorization
process: we detected 84 nonconformances in over 29 KLOC and 9 K lines of JML contracts
(that we will refer as KLJML henceforth); applying our manual classification system we
got that most detected nonconformances were classified as postcondition errors; we also observed
that a nonconformance is detected after 2.54 top-level test case calls, in average, and
the number of internal calls within the faulty test case call is an average of 2.23, providing
evidence for the need of a more complex generated test structure in nonconformance detection;
furthermore, we compare our approach with JET, an existing test-based approach for
detecting nonconformances in JML programs, using a subset of programs from first study
(6 KLOC and 5 KLJML). JMLOK 2.0 detected 30 nonconformances with Java coverage of
78.44% and JML coverage of 67.67%, while JET detected 9 nonconformances by covering
47.97% of Java and 56.97% of JML. Second, we perform an evaluation of our automatic categorization
approach: we compare automatic and manual categorization and got a matches
value of 0.73 (considering the nonconformances from first evaluation) indicating similarity
between automatic and manual approaches; furthermore, we compare our results with the
categorization performed by voluntary JML experts and we also observed some similarity. |
pt_BR |
dc.identifier.uri |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/4875 |
|
dc.date.accessioned |
2019-07-15T12:15:49Z |
|
dc.date.available |
2019-07-15 |
|
dc.date.available |
2019-07-15T12:15:49Z |
|
dc.type |
Dissertação |
pt_BR |
dc.subject |
Programação por Contratos |
|
dc.subject |
Verificação de Conformidade |
|
dc.subject |
Sistemas de Software |
|
dc.subject |
Programming by Contract |
|
dc.subject |
Compliance Check |
|
dc.subject |
Software Systems |
|
dc.rights |
Acesso Aberto |
pt_BR |
dc.creator |
MILANEZ, Alysson Filgueira. |
|
dc.publisher |
Universidade Federal de Campina Grande |
pt_BR |
dc.language |
por |
pt_BR |
dc.title.alternative |
"Enhancing compliance checking in contract-based programs". |
pt_BR |
dc.identifier.citation |
MILANEZ, Alysson Filgueira. "Aprimorando a verificação de conformidade em programas baseadas em contratos". 2014. 123f. (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, 2014. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/4875 |
pt_BR |