Beruflich Dokumente
Kultur Dokumente
PALMAS
2014
Trabalho apresentado ao Curso de Cincia da Computao da Universidade Federal do Tocantins, como parte integrante
da disciplina Leitura e Produo de Textos Cientficos.
Professor: Patrick Letouze.
Resumo
Contexto: O software cientfico desempenha um papel importante na tomada de decises crticas,
por exemplo, ao fazer previses do tempo com base em modelos climticos, e no cmputo de
evidncias para publicaes de pesquisa.
Recentemente, cientistas tiveram de retratar publicaes devido a erros causados por falhas de
software. Testes sistemticos podem identificar tais falhas no cdigo.
Objetivo: Este estudo visa identificar desafios especficos, as solues propostas e problemas no
resolvidos enfrentados durante o teste de software cientfico.
Mtodo: Realizamos uma reviso de literatura sistemtica para identificar e analisar a literatura
relevante. Identificamos 62 estudos que forneceram informao relevante sobre testes de software
cientfico.
Resultados: Consideramos que desafios enfrentados ao testar o software cientfico se encaixam em
duas categorias principais: (1) desafios para testar software que ocorrem devido a caractersticas do
software cientfico, tais como problemas de orculo e (2) desafios para testar software que ocorrem
devido a diferenas culturais entre os cientistas e a comunidade de engenharia de software tal como
entender o cdigo e o modelo que ele implementa como entidades inseparveis. Alm disso, ns
identificamos mtodos para potencialmente superar estes desafios e suas limitaes. Finalmente
descrevemos desafios no resolvidos e como praticantes e pesquisadores de engenharia de software
podem ajudar na sua superao.
Concluses: O software cientfico apresenta desafios especiais para testes. Especificamente, as
diferenas culturais entre os cientistas desenvolvedores e engenheiros de software, bem como as
caractersticas do software cientfico, tornam os testes mais difceis. Tcnicas existentes, tais como
a deteco do cdigo clone podem ajudar a melhorar o processo de testes. Engenheiros de software
devem considerar desafios especiais impostos pelo software cientfico, tais como problemas de
orculo, ao desenvolver tcnicas para testes.
Sumrio
1. Introduo ........................................................................................................................................ 1
2. Mtodo de pesquisa .......................................................................................................................... 2
2.1 Planejando a RSL ........................................................................................................................... 2
2.1.1. Questionrio ............................................................................................................................... 2
2.1.2. Elaborao e validao do protocolo de reviso ........................................................................ 3
2.2. Realizando a reviso ..................................................................................................................... 4
2.2.1. Identificao de estudos relevantes e estudos primrios ............................................................ 4
2.2.2. Avaliao de extrao e qualidade de dados .............................................................................. 4
2.3. Relatando a reviso ....................................................................................................................... 5
3. Resultados ........................................................................................................................................ 5
3.1 QP1: Como o software cientfico definido na literatura? ............................................................ 6
3.2 QP2: Existem caractersticas especiais ou defeitos no software cientfico ou no seu
desenvolvimento que dificultam os testes? ...................................................................................... 9
3.4 QP4: H desafios que no puderam ser respondidos atravs de tcnicas existentes? .................. 19
4. Discusso ....................................................................................................................................... 19
4.1 Principais resultados .................................................................................................................... 19
4.2 Tcnicas potencialmente tis em testes de software cientfico .................................................. 20
5. Concluso e trabalho futuro ........................................................................................................... 22
Agradecimentos ................................................................................................................................. 22
Pontos fortes e fracos da RSL ............................................................................................................ 21
Referncias ......................................................................................................................................... 24
1. Introduo
teste de software cientfico. Uma RSL um meio de avaliar e interpretar toda pesquisa disponvel
relevante para uma questo de pergunta em particular ou rea do tpico ou fenmeno de interesse
[41]. O objetivo de realizar uma RSL metodicamente revisar e reunir resultados de pesquisa para
uma determinada questo de pesquisa e ajudar no desenvolvimento de diretrizes baseadas em
evidncias para os praticantes, [42]. Devido abordagem sistemtica seguida ao realizar uma RSL,
o pesquisador pode estar confiante de que ela localizou a informao necessria, tanto quanto
possvel.
Pesquisadores de engenharia de software pesquisadores realizaram RSL em diversas reas de
engenharia de software. Walia et al [77] realizou uma RSL para identificar e classificar os erros de
requisito de software. Engstrm et al. [23] realizou uma RSL sobre avaliaes empricas de tcnicas
de seleo de teste de regresso com o objetivo de encontrar uma base para pesquisa adicional em
um projeto de pesquisa conjunta da indstria e do meio acadmico. Afzal et al. [3] realizou uma
RSL sobre a aplicao testes, baseados em pesquisa, na realizao de testes no funcionais. O
objetivo deles examinar os trabalhos existentes investigando testes de software, baseados em
pesquisa, no funcionais. Enquanto estas RSLs no so restritas ao software em um domnio
especfico, nos focamos em software cientfico, uma rea que tem recebido menos ateno do que o
software de aplicativo. Alm disso, quando comparado a Engstrm et al., no limitamos a nossa
RSL a uma tcnica de teste especfica.
O objetivo geral [42] da nossa RSL identificar desafios especficos enfrentados ao testar o
software cientfico, como se tem lidado com esses desafios, e quaisquer desafios no resolvidos.
Desenvolvemos um conjunto de questes de pesquisa baseadas neste objetivo global para orientar o
processo de RSL. Ento realizamos uma pesquisa extensa para identificar publicaes que podem
ajudar a responder essas questes de pesquisa. Finalmente, ns sintetizamos as informaes
coletadas dos estudos selecionados para fornecer respostas s nossas questes de pesquisa.
Esta RSL identifica duas categorias de desafios em testes de software cientfico. A primeira
categoria so os desafios que se devem s caractersticas do software em si como a falta de um
orculo. A segunda categoria so desafios que ocorrem porque o software cientfico desenvolvido
por cientistas e/ou cientistas desempenham um papel chave em projetos de desenvolvimento de
software cientfico, ao contrrio do desenvolvimento de software de aplicativos onde os
engenheiros de software desempenham um papel chave. Identificamos as tcnicas usadas para testar
o software cientfico incluindo tcnicas que podem ajudar a superar problemas de orculo e desafios
de criao/seleo de casos de teste. Alm disso, ns descrevemos as limitaes dessas tcnicas e
problemas abertos.
Este artigo organizado da seguinte forma: Seo 2 descreve o processo de RSL e como
podemos aplic-lo para encontrar respostas para as nossas questes de pesquisa. Ns relatamos os
achados da RSL na Seco 3. A Seco 4 contm a discusso sobre os resultados. Finalmente
fornecemos concluses e descrevemos o trabalho futuro na seo 5.
2. Mtodo de pesquisa
Realizamos nossa RSL seguindo as diretrizes publicadas por Kitchenham [41]. As atividades
realizadas durante uma RSL podem ser divididas em trs fases principais: (1) planejamento da RSL
(2) realizando a reviso e (3) relatando a reviso. Descrevemos as tarefas realizadas em cada fase
abaixo.
2.1 Planejando a RSL
2.1.1 Questionrio
O objetivo principal desta RSL identificar desafios especficos enfrentados ao testar o software
cientfico, como se tem lidado com esses desafios, e quaisquer desafios no resolvidos.
Desenvolvemos as seguintes questes de pesquisa para atingir o nosso objetivo maior:
2
http://www.geoscientific-Model-Development.net/.
obteve resposta 'Sim' para a pergunta de avaliao de qualidade G2 (Os mtodos de coleta de dados
esto descritos adequadamente?) e para a G5 (O estudo pode ser replicado?). A Tabela 9 mostra os
resultados da avaliao de qualidade para estudos primrios qualitativos. Todos os estudos
primrios qualitativos obtiveram resposta 'Sim' para a pergunta de avaliao de qualidade A (Os
objetivos do estudo so declarados claramente?) e B (A avaliao aborda os seus objetivos e
propsito declarados?). A maioria dos estudos primrios qualitativos obteve resposta 'Sim' para a
pergunta de avaliao de qualidade D (So fornecidas evidncias suficientes para sustentar as
reivindicaes?).
2.3. Relatando a reviso
Dados extrados dos 62 documentos primrios foram usados para formular respostas para as
quatro questes de pesquisa constantes da seco 2.1.1. Seguimos atentamente as orientaes
fornecidas por Kitchenham [41] na preparao do relatrio de RSL.
Tabela 2
Avaliao da qualidade para estudos quantitativos.
Pesquisa
G1:Os objetivos do estudo so
declarados claramente?
S1: O mtodo para coletar a amostra
de dados foi especificado (e.g.
correio, entrevista, internet)?
S2: H um grupo de controle?
N/A
G2: Os mtodos de coleta de dados
esto descritos adequadamente?
G3: Houve qualquer avaliao
estatstica dos resultados?
S3: O que foi observado sustentou as
reivindicaes?
G4: So relatadas ameaas validade
e/ou limitaes?
G5: O estudo pode ser replicado?
Estudo de caso
Experincia
N/A
N/A
N/A
N/A
Tabela 3
Avaliao da qualidade para estudos qualitativos.
Perguntas de avaliao de qualidade
A: Os objetivos do estudo so declarados claramente?
B: A avaliao aborda os seus objetivos e propsito declarados?
C: A seleo do plano amostral/populao amostrada dos casos/documentos est definida?
D: H evidncias suficientes para sustentar as reivindicaes?
E: o estudo pode ser replicado?
S3: O que foi observado sustentou as reivindicaes?
G4: So relatadas ameaas validade e/ou limitaes?
G5: O estudo pode ser replicado?
3. Resultados
Usamos os documentos primrios selecionados para fornecer respostas para as questes de
pesquisa.
5
Descrio
Geral
Identificador
Bibliografia
Tipo de artigo
Objetivos do estudo
Projeto do estudo
Definio
Exemplos
Desafio/Problema
Descrio da falha
Causas
Mtodo de teste
Existente/novo/extenso
QP1
QP2
QP3/QP4
Desafio/problema
Defeitos/falhas encontrados
Evidncias
Limitaes
Tabela 5
Estudos primrios selecionados (Parte 1).
N do
Estudo
EP1
N de
Ref.
[1]
EP2
[2]
EP3
[5]
EP4
EP5
EP6
[7]
[8]
[9]
EP7
[11]
EP8
[12]
EP9
EP10
[13]
[14]
Foco de estudo
Um estudo de caso sobre testes de pacotes de software usados em
metrologia
Tarefas de engenharia de Software realizadas durante o desenvolvimento de
software cientfico
Gerao de caso de teste para programas de ponto flutuante que utilizam
execuo simblica
Estudos de caso de projetos de desenvolvimento de software cientfico
Levantamento sobre engenheiros e cientistas computacionais
Aplicando testes metamrficos a programas sobre equaes diferenciais
parciais
Estudos de caso sobre a aplicao de testes metamrficos para programas
bio informticos
Estudos de caso sobre a aplicao de desenvolvimento dirigido por testes
em modelos climticos
Usando conjuntos de dados de referncia para testes de software cientfico
Eficcia das diferentes polticas de execuo de contrato de interface para
componentes cientficos
N de
Ref.
[15]
[16]
[17]
EP14
EP15
[18]
[20]
EP16
EP17
EP18
[21]
[22]
[24]
EP19
[26]
EP20
[27]
EP21
EP22
[28]
[30]
EP23
[29]
EP24
[31]
EP25
[32]
EP26
[33]
EP27
[36]
EP28
[37]
EP29
[38]
EP30
[39]
Foco de estudo
Execuo parcial de asseres para componentes de software cientfico
Usando pseudo orculos para testar programas sem orculos
Um estudo de caso sobre o desenvolvimento de um modelo de sistema
climtico
Uma ferramenta para automatizar os testes de simulaes cientficas
Discusso sobre os desafios de software enfrentados no desenvolvimento de
programas de modelagem climtica
Estudo etnogrfico dos cientistas do clima que desenvolvem software
Um framework de unidade de teste para programas em MATLAB
Um framework para verificao contnua automatizada de simulaes
numricas
Resultados de um levantamento realizado para identificar como os cientistas
desenvolvem e usam o software em suas pesquisas
Experincias para analisar a preciso do software cientfico atravs da
anlise esttica e comparaes com implementaes independentes do
mesmo algoritmo
Experincia de programao N-version conduzida em software cientfico
Aplicando prticas de garantia de qualidade de software em um projeto de
software cientfico
Prticas de engenharia de software apropriadas para as equipes de
desenvolvimento de software cientfico identificadas atravs de um estudo
de caso
Processo de desenvolvimento de software de cinco softwares de cincia da
computao de grande escala
Avaliando a eficcia do uso de um pequeno nmero de casos de teste
cuidadosamente selecionados para testes de software cientfico
Estudo qualitativo de abordagens de desenvolvimento gil para criar e
manter software biomdico
Comparando a eficcia de casos de teste aleatrios e casos de teste
concebidos para a deteco de falhas em software cientfico
Tcnicas de engenharia de software teis para os cientistas computacionais
obtidas atravs da experincia dos cientistas que tiveram sucesso
Prticas de avaliao de qualidade de cientistas que desenvolvem software
computacional
Como a pesquisa de engenharia de software pode fornecer solues para os
desafios encontrados pelos cientistas desenvolvendo de software
Tabela 6
Estudos primrios selecionados (Parte 2).
N do
Estudo
EP31
N de
Ref.
[40]
EP32
[47]
EP33
[45]
EP34
[48]
EP35
[49]
EP36
[50]
EP37
EP38
[52]
[53]
EP39
[55]
Foco de estudo
Um estudo de caso sobre a aplicao de atividades de testes de software
cientfico
Levantamento sobre ferramentas para programas cientficos escritos em
FORTRAN
Um estudo de caso sobre o uso de uma arquitetura de testes de trs nveis
para testar programas cientficos
Aplicando testes metamrficos para programas de processamento de
imagem
Usando orculos estatsticos para testar aplicativos de processamento de
imagem
Um mtodo baseado em aprendizado para gerao automtica de casos de
teste para programas numricos
Lies aprendidas atravs de revises de cdigo de programas cientficos
Desafios enfrentaram por engenheiros de software desenvolvendo software
para cientistas no campo da biologia molecular
Um framework para gerar aleatoriamente grandes conjuntos de dados para
aplicativos de aprendizado de mquina de teste
N de
Ref.
[54]
[56]
EP42
[57]
EP43
EP44
[59]
[60]
EP45
[61]
EP46
EP47
[62]
[63]
EP48
EP49
[64]
[66]
EP50
[65]
EP51
[70]
EP52
[68]
EP53
[72]
EP54
[71]
EP55
[69]
EP56
[67]
EP57
[73]
EP58
EP59
EP60
[74]
[75]
[76]
EP61
EP62
[78]
[79]
Foco de estudo
Tabela 7
Local de publicao
International Workshop on Software Engineering for Computational
Science and Engineering
Computing in Science & Engineering
IEEE Software
BMC Bioinformatics
Geoscientific Model Development
International Conference on Software Engineering and Knowledge
Engineering
International Journal of High Performance Computing Applications
Lecture Notes in Computer Science
Journal of the Brazilian Society of Mechanical Sciences and Engineering
International Conference on Software Testing, Verification and Validation
International Conference on Software Engineering
Tipo
Quantidade
Oficina
11,3
Peridico
Peridico
Peridico
Peridico
Conferncia
7
5
2
2
2
11,3
8,1
3,2
3,2
3,2
Peridico
Captulo de livro
Peridico
Conferncia
Conferncia
2
2
1
1
1
3,2
3,2
1,6
1,6
1,6
Local de publicao
Tipo
Quantidade
Relatrio Tcnico
Conferncia
Peridico
Oficina
1
1
1
1
1,6
1,6
1,6
1,6
Conferncia
Oficina
Peridico
Peridico
Conferncia
1
1
1
1
1
1,6
1,6
1,6
1,6
1,6
Peridico
Peridico
Relatrio Tcnico
Peridico
Conferncia
Captulo de livro
Conferncia
Conferncia
Oficina
Conferncia
1
1
1
1
1
1
1
1
1
1
1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6
Peridico
1,6
Conferncia
Conferncia
Conferncia
Conferncia
Peridico
Peridico
Peridico
Conferncia
1
1
1
1
1
1
1
1
1,6
1,6
1,6
1,6
1,6
1,6
1,6
1,6
Conferncia
Peridico
1
1
1,6
1,6
G1
S1
S2
E1
E2
G2
G3
Sim
N/A
N/A
N/A
N/A
No
No
Sim
N/A
N/A
No
No
Sim
No
Sim
N/A
N/A
No
No
Sim
No
Sim
N/A
N/A
Sim
No
Sim
Sim
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
No
No
Sim
Sim
Sim
Sim
No
N/A
N/A
Sim
Sim
Sim
Sim
No
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
Sim
No
Sim
No
Sim
N/A
N/A
Sim
No
Sim
No
Sim
N/A
N/A
No
No
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
N/A
N/A
Sim
No
Sim
No
Sim
Sim
No
N/A
N/A
Sim
No
Sim
N/A
N/A
No
No
Sim
Sim
Sim
N/A
N/A
No
No
Sim
Sim
Sim
N/A
N/A
Sim
No
Sim
No
Sim
N/A
N/A
N/A
N/A
Sim
No
Sim
Sim
No
N/A
N/A
Sim
Sim
Os objetivos do estudo so declarados claramente?
O mtodo para coletar a amostra de dados foi especificado?
H um grupo de controle?
S3
C1
E3
G4
G5
N/A
N/A
N/A
N/A
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
Sim
N/A
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
Sim
Sim
N/A
N/A
N/A
Sim
Sim
Sim
N/A
N/A
N/A
N/A
N/A
Sim
N/A
N/A
Sim
Sim
Sim
N/A
N/A
Sim
N/A
N/A
N/A
N/A
Sim
Sim
Sim
N/A
N/A
N/A
Sim
N/A
Sim
Sim
Sim
N/A
N/A
No
Sim
Sim
No
Sim
No
No
No
Sim
No
No
No
No
No
Sim
No
Sim
No
Sim
No
No
No
No
No
No
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
No
Sim
Sim
No
No
Sim
Sim
Sim
10
G1
S1
S2
E1
E2
G2
G3
S3
C1
E3
G4
G5
ii.
iii.
iv.
v.
Tabela 9
Resultados da avaliao de qualidade estudos quantitativos.
N de
A
B
C
D
Ref.
[62]
Sim
Sim
Sim
Sim
[64]
Sim
Sim
No
Sim
[67]
Sim
Sim
No
Sim
[53]
Sim
Sim
Sim
Sim
[2]
Sim
Sim
Sim
Sim
[40]
Sim
Sim
No
Sim
[39]
Sim
Sim
Sim
Sim
[75]
Sim
Sim
No
Sim
[30]
Sim
Sim
Sim
Sim
[47]
Sim
Sim
No
Sim
[20]
Sim
Sim
No
Sim
[38]
Sim
Sim
Sim
Sim
[66]
Sim
Sim
Sim
Sim
[12]
Sim
Sim
No
Sim
[18]
Sim
Sim
Sim
Sim
[74]
Sim
Sim
Sim
Sim
[45]
Sim
Sim
Sim
Sim
[56]
Sim
Sim
Sim
Sim
[31]
Sim
Sim
Sim
Sim
[49]
Sim
Sim
Sim
Sim
[16]
Sim
Sim
No
Sim
[70]
Sim
Sim
Sim
Sim
[71]
Sim
Sim
Sim
Sim
[7]
Sim
Sim
Sim
Sim
[68]
Sim
Sim
Sim
Sim
[54]
Sim
Sim
Sim
Sim
[29]
Sim
Sim
Sim
Sim
[33]
Sim
Sim
Sim
Sim
[24]
Sim
Sim
Sim
Sim
[37]
Sim
Sim
No
Sim
[52]
Sim
Sim
Sim
Sim
[21]
Sim
Sim
Sim
Sim
[22]
Sim
Sim
No
No
[65]
Sim
Sim
Sim
Sim
[72]
Sim
Sim
Sim
Sim
[69]
Sim
Sim
Sim
Sim
[73]
Sim
Sim
Sim
Sim
[78]
Sim
Sim
No
No
A: Os objetivos do estudo so declarados claramente?
B: A avaliao aborda os seus objetivos e propsito declarados?
C: A seleo do plano amostral/populao amostrada dos casos/documentos est definida?
D: H evidncias suficientes para sustentar as reivindicaes?
E: O estudo pode ser replicado?
E
Sim
No
No
No
No
No
No
No
No
No
No
No
No
No
Sim
No
No
Sim
Sim
Sim
No
Sim
Sim
No
No
Sim
No
No
No
No
Sim
Sim
No
Sim
No
No
Sim
No
viii.
i.
ii.
iii.
iv.
v.
vi.
3.3 QP3: Podemos usar mtodos de teste existentes (ou adapt-los) para testar o software
cientfico eficazmente?
Uso de testes em nveis de abstrao diferentes e para diferentes fins de teste. Vrios estudos
primrios relataram a realizao de testes em nveis de abstrao diferentes: testes de unidade, teste
de integrao e teste do sistema. Alm disso, alguns estudos relataram o uso de testes de aceitao e
testes de regresso. De 62 estudos primrios, 12 aplicaram pelo menos um desses mtodos de teste.
A Fig. 1 mostra a porcentagem de estudos que aplicaram cada mtodo entre os 12 estudos. O teste
de unidade foi o mtodo mais comum relatado entre os 12 estudos.
13
[62]
[17,20]
[67]
[53]
[2]
[57]
[55]
[60]
[40]
[1]
[75]
[15]
[30]
[61]
[24]
[63]
[12]
[12]
Descrio
Software mdico (e.g., software para analisador da
qumica do sangue e sistema de processamento de
imagem mdica)
Software de simulao armas nucleares
Software de modelagem climtica
Software embarcado para naves espaciais
Software desenvolvido para cientistas e bilogos
espaciais
Software de aquisio de dados e controle para
estaes experimentais de fonte de radiao
sincrotron (SRS) experimento estaes
Software de simulao de assistncia mdica (e.g.,
mecanismo de simulao de eventos discretos e
simulao de algoritmos de titulao de insulina)
Implementaes de algoritmos de classificao de
aprendizado de mquina
Software de modelagem climtica
Pacote de software de astronomia
Pacotes de software, fornecendo estimativas de
incerteza para medies tridimensionais
A implementao de uma simulao dependente de
tempo de um sistema fsico complexo
Implementao de algoritmos transversais de malha
cientfica
Implementaes de algoritmos solucionadores
paralelos e bibliotecas para aplicaes cientficas,
de grande escala, complexas, de engenharia multi
fsica
Software para modelagem cardaca em biologia
computacional
Simulaes numricas em dinmica de fluidos
geofsica
Programa para resolver equaes de derivadas
parciais
Calcula a trajetria dos bilhes de partculas de ar
na atmosfera
Implementao de um modelo numrico que simula
o crescimento de flocos de neve virtuais
Linguagem de Programao
N/S
Tamanho
N/S
FORTRAN
N/S
N/S
N/S
500 KLO
N/S
N/S
N/S
Java
N/S
Java, MATLAB
N/S
Perl, C
N/S
FORTRAN, C
MATLAB, C++
N/S
400 KLOC
10 KLOC
N/S
N/S
N/S
N/S
38-50 LOC
N/S
N/S
C++, Python
50 KLOC
N/S
N/S
C++
250 KLOC
C++
N/S
C++
N/S
http://junit.org/.
14
Tabela 10
Detalhes do software cientfico relacionado nos estudos primrios.
N de Ref.
[14]
[48]
[11]
[55,54]
[31]
[79]
[49]
[71]
[7]
[7]
[7]
[7]
[7]
[5]
[29]
Descrio
Implementaes de algoritmos transversais de
malha
Aplicativo de processamento de imagem
programa de bioinformtica para analisar e simular
redes de regulao genica e mapear leituras de
sequncia curta para um genoma de referncia
Implementaes de algoritmos de aprendizado de
mquina
Simulaes em mecnica dos slidos, mecnica dos
fluidos e combusto
Programa para avaliar o desempenho de um
esquema numrico para resolver um problema de
adveco-difuso do modelo
Implementao de dilatao de imagem binria
Software de infraestrutura para a comunidade de
protena estrutural
Software de previso de desempenho de um
produto que de outra forma requereria testes
empricos grandes, caros e potencialmente
perigosos para avaliao de desempenho
Fornecer previses computacionais para analisar o
processo de fabricao de produtos materiais
compostos
Simulao de comportamento do material quando
colocado sob estresse extremo
Fornecer processamento em tempo real de dados do
sensor
Calcular as propriedades das molculas usando
modelos de mecnica quntica computacional
Programa para evitar colises em aeronaves no
tripuladas
Bibliotecas numricas para utilizao pela cincia
da computao e projetos de engenharia de
software
Linguagem de Programao
N/S
Tamanho
N/S
N/S
N/S
N/S
N/S
N/S
N/S
C, C++,FORTRAN
100-500 KLOC
Ruby
2.5 KLOC
N/S
N/S
N/S
N/S
FORTRAN, C
405 KLOC
C++, C
134 KLOC
FORTRAN
200 KLOC
C++, MATLAB
100 KLOC
FORTRAN
750 KLOC
N/S
N/S
N/S
3. Teste de sistema: Vrios estudos relatam o uso de teste de sistema [33,24,64]. Em particular,
a comunidade de modelagem climtica de utiliza bastante o teste de sistema [12].
4. Teste de aceitao: Encontramos apenas um estudo que relata teste de aceitao realizado
pelos usurios para garantir que os programadores implementaram corretamente a
funcionalidade necessria [33]. Uma das razes para o teste de aceitao ser raramente utilizado
que os cientistas que esto desenvolvendo o software so, muitas vezes, tambm os usurios.
5. Teste de regresso: Vrios estudos descrevem o uso de teste de regresso para comparar a
corrente de sada com sadas anteriores para identificar falhas introduzidas quando o cdigo
modificado [24,17,31,75]. Alm disso, Smith desenvolveu uma ferramenta para auxiliar testes
de regresso [74]. Esta ferramenta permite que os testadores especifiquem o valores de variveis
a ser comparados e as tolerncias para as comparaes.
Tcnicas utilizadas para superar problemas de orculo. Anteriormente ns descrevemos
vrias tcnicas utilizadas para testar programas que no tm orculos [35]. Alm disso, vrios
estudos propem tcnicas para atenuar o problema de orculo:
1. Um pseudo orculo um programa desenvolvido independentemente que preenche a mesma
especificao que o programa em teste [1,59,24,21,62,65,78,16,27]. Por exemplo, Murphy et al
15
Percentagem
Percentagem
resultaro nas mesmas falhas. Mas Brilliant et al. concluram que mesmo programas
desenvolvidos independentemente podem produzir as mesmas falhas [6].
2. As solues obtidas analiticamente podem servir como orculos? Por vezes, usar solues
analticas prefervel a usar pseudo orculos uma vez que eles podem identificar erros
algortmicos comuns entre as implementaes. Por exemplo, uma taxa de convergncia
calculada teoricamente pode ser comparada taxa produzida pelo cdigo para verificar se h
falhas no programa [1,38,24].
Limitaes: Solues analticas podem no estar disponveis para todos os aplicativos [9] e
podem ser imprecisas devido a erros humanos [65].
3. Resultados obtidos experimentalmente podem ser usados como orculos?
[1,38,59,62,65,45].
Limitaes: difcil determinar se um erro devido a uma falha no cdigo ou devido a um erro
cometido durante a criao do modelo [9]. Em algumas situaes, as experincias no podem
ser realizadas devido a questes de segurana, jurdicas ou de custo elevado [7].
4. Valores de medio obtidos atravs de eventos naturais podem ser usadas como orculos?
Limitaes: As medies podem no ser precisas e geralmente so limitadas devido ao custo
16
1. Hook et al. concluram que muitos defeitos podem ser identificados por um pequeno nmero
de casos de teste que empurram os limites da computao representada pelo cdigo [32]. Em
seguida, Kelly et al. concluram que testes aleatrios aliados a casos de teste especialmente
projetados para contemplar as partes do cdigo reveladas pelos testes aleatrios so eficazes em
identificar falhas [36]. Ambos os estudos utilizaram funes do MATLAB em seus
experimentos.
2. Casos de teste gerados aleatoriamente foram utilizados com testes metamrficos para
automatizar os testes de aplicaes de processamento de imagem [48].
3. Vilkomir et al desenvolveram um mtodo para gerar automaticamente casos de teste quando
um programa cientfico tem muitos parmetros de entrada com dependncias [76]. Vilkomir et
al representam o espao de entrada como um grafo direcionado. Parmetros de entrada so
representados por vetores no grafo. Os valores especficos dos parmetros e a probabilidade de
um parmetro adotar esse valor so representados por arcos. Dependncias entre valores de
parmetro de entrada so tratados com a mesclagem/diviso de vetores. Esse mtodo cria um
modelo que satisfaz a lei de probabilidade das cadeias de Markov. Casos de teste vlidos podem
ser gerados automaticamente, tomando um caminho por esse grafo direcionado. Este modelo
tambm oferece a possibilidade de gerar casos de teste aleatrios e ponderados de acordo com a
probabilidade de assumir os valores de parmetro.
4. Bagnara et al usaram execuo simblica para gerar dados de teste para programas de ponto
flutuante [5]. Este mtodo gera dados de teste para percorrer caminhos de programas que
envolvem clculos de ponto flutuante.
5. Meinke et al desenvolveram uma tcnica para a gerao automtica de casos de teste para
software numrico a partir de testes baseados em aprendizado (LBT) [50]. Os autores criaram
primeiro um modelo polinomial como uma abstrao do programa em teste. Em seguida, os
casos de teste so gerados pela aplicao de um algoritmo de satisfatibilidade para o modelo
aprendido.
6. gerao de dados aleatrios parametrizada uma tcnica descrita por Murphy et al. [55] para
a criao de dados de teste para aplicativos de aprendizado de mquina. Esse mtodo gera
conjuntos dados aleatoriamente usando propriedades de classes de equivalncia
7. Remmel et al desenvolveram uma framework de testes de regresso para um framework
cientfico complexo [63]. Eles adotaram uma abordagem de engenharia de linha de produtos de
software (SPLE) para lidar com a grande variabilidade da framework cientfica. Eles
desenvolveram um modelo de variabilidade para representar essa variabilidade e o usaram para
derivar casos de teste, enquanto se certificavam de que as combinaes de variantes necessrias
estavam cobertas. Essa abordagem requer que cientistas ajudem a identificar combinaes
inviveis.
Informaes sobre a cobertura do teste. Apenas dois estudos primrios mencionam o uso de
algum tipo de informao sobre cobertura do teste [33,2]. Kane et al. descobriu que, enquanto
alguns desenvolvedores estavam interessados em medir a cobertura de sentenas, a maioria os
desenvolvedores estava interessado em cobrir a funcionalidade significativa do programa [33].
Ackroyd et al. [2] usaram a ferramenta Emma para medir a cobertura do teste.
Verificao de assero. A verificao de assero pode ser usada para garantir a correo dos
componentes plug-and-play cientficos. Mas a verificao de assero apresenta uma sobrecarga de
desempenho. Dahlgren et al. desenvolveram um sistema de seleo de assero para reduzir a
sobrecarga de desempenho do software cientfico [15,14].
Processo de desenvolvimento de software. Vrios estudos relataram que a utilizao de
prticas geis de desenvolvimento de software cientfico melhorou as atividades de teste [73,61,79].
Alguns projetos tm usado desenvolvimento orientado por testes (TDD), onde os testes so escritos
para verificar a funcionalidade antes que o cdigo seja escrito. Mas adotar essa abordagem pode ser
um desafio cultural visto que os estudos primrios relatam que o TDD pode atrasar o
18
3.4 QP4: H desafios que no puderam ser respondidos atravs de tcnicas existentes?
Apenas um documento primrio forneceu respostas diretas para a QP4. Kelly et al. [39]
descrevem problemas de orculo como problemas-chave a resolver e a necessidade de pesquisar
sobre como realizar testes eficazes sem orculos. No encontramos outras respostas a esta pergunta
de pesquisa.
4. Discusso
4.1.
Principais resultados
classes de equivalncia. Alm disso, estudos relatam o uso de tcnicas especficas para
executar a gerao automatizada de casos de teste para programas de ponto flutuante. Essas
tcnicas foram aplicadas apenas a um conjunto restrito de programas. A aplicabilidade destas
tcnicas precisa ser investigada na prtica.
Ao levar em considerao testes de unidade, de sistema, de integrao, de aceitao e de
regresso, poucos estudos aplicaram mais do que um tipo de teste nos seus programas. No
encontramos estudos que aplicassem mais do que trs destas tcnicas de teste.
Apenas dois estudos primrios avaliaram algum tipo de informao de cobertura de teste
durante o processo de testes.
1. Investigao da comunidade de engenharia de software pode ajudar a melhorar o processo de
testes, atravs da investigao de como realizar testes eficazes de para programas com
problemas de orculo.
4.2. Tcnicas
Problemas de orculo so problemas chave a resolver. necessria pesquisa sobre como realizar
testes eficazes sem orculos [39]. Tcnicas como o teste baseado em propriedades e em redundncia
de dados podem ser utilizadas quando um orculo no est disponvel [4]. Asseres podem ser
usadas para executar testes com base em propriedades dentro do cdigo fonte [35]. Outra
abordagem possvel usar uma golden run [46]. Com uma execuo golden run, um rastreamento
de execuo gerado durante uma execuo livre de falha de uma entrada. Ento esse rastreamento
de execuo comparado com rastreamentos de execuo obtidos ao executar o programa com a
mesma entrada quando uma falha observada. Ao comparar os rastreamentos da golden run com a
execuo com falha a robustez do programa determinada. Pode-se tambm aplicar testes baseados
em modelos, mas testes baseados em modelos precisam de requisitos bem definidos e estveis para
desenvolver o modelo. Contudo na maioria do software cientfico, requisitos esto em constante
mudana, que pode tornar difcil aplicar testes baseados em modelos. No encontramos a aplicao
de testes baseados em propriedades, redundncia de dados, golden run e testes baseados em
modelos para testar software cientfico nos estudos primrios. Alm disso, a pesquisa sobre a
seleo de casos de teste e adequao de dados de teste no levou em considerao o efeito do
orculo usado. Orculos perfeitos muitas vezes no esto disponveis para programas cientficos.
Portanto, ser til desenvolver tcnicas de seleo/criao de testes que levem em considerao
caractersticas do orculo utilizado no teste.
Testes metamrficos so uma tcnica de teste promissora para abordar o problema de
orculo. Testes metamrficos podem ser usados para realizar tanto testes de unidade quanto de
sistema. Mas identificar as relaes metamrficas que devem ser atendidas por um programa um
desafio. Portanto, so necessrias tcnicas que possam identificar relaes metamrficas para um
programa [34].
Somente alguns estudos aplicaram novas tcnicas desenvolvidas pela comunidade de
engenharia de software para superar alguns dos desafios de testes comuns. Por exemplo, nenhum
dos estudos primrios empregou tcnicas de seleo de teste para selecionar os casos de teste,
embora a execuo de um grande nmero de casos de teste seja difcil devido aos longos tempos de
execuo de software cientfico. Mas muitas tcnicas de seleo de testes partem de um orculo
perfeito e, portanto, no vo funcionar bem para a maioria dos programas cientficos.
Vrios estudos relatam que os desenvolvedores de software cientfico usaram testes de
regresso durante o processo de desenvolvimento. Mas no conseguimos determinar se o teste de
regresso foi automatizado ou se foi utilizada alguma tcnicas de priorizao de caso de teste. Alm
disso, encontramos apenas dois estudos que utilizaram frameworks de testes de unidade para
realizar testes de unidade. Ambos os estudos relatam o uso do framework JUnit para programas
Java. Nenhum dos estudos primrios relatou informaes sobre como os testes de unidade foram
conduzidos para programas escritos em outras linguagens.
Um dos desafios ao testar programas cientficos o cdigo duplicado. Apesar de uma falha
20
estar fixa em um nico local, a mesma falha pode existir em outros locais e as falhas podem passar
despercebidas, quando h cdigo duplicado tcnicas de deteco automtica de clones seria til para
encontrar o cdigo duplicado, especialmente ao lidar com cdigo legado.
4.3.
Estudos primrios que forneceram as informaes relevantes para esta reviso de literatura
foram identificados atravs de uma pesquisa baseada em palavras chave em trs bases de dados. A
pesquisa encontrou estudos relevantes publicados em peridicos, anais de conferncias e relatrios
tcnicos. Usamos uma abordagem sistemtica, incluindo a incluso/excluso detalhada de critrios
indicados na Tabela 1 para selecionar os estudos primrios relevantes. Inicialmente ambos os
autores aplicaram o processo de seleo de estudos a um subconjunto dos resultados retornados pela
pesquisa com base em palavras-chave. Depois de verificar que ambos os autores selecionaram o
mesmo conjunto de estudos, o primeiro autor aplicou o processo de seleo de estudo para o resto
dos resultados retornados pela pesquisa com base em palavras-chave.
Alm disso, examinamos as listas de referncia dos estudos primrios selecionados para
identificar quaisquer estudos adicionais que se relacionam com nosso foco de pesquisa.
Encontramos 13 estudos adicionais relacionados ao nosso foco de busca. Esses estudos foram
encontrados pela pesquisa com base em palavras-chave, mas no passaram em uma filtragem
baseada em ttulos. Isso indica que a seleo estudos com base apenas no ttulo pode no ser
confivel e, para melhorar a confiabilidade talvez tenhamos que rever o resumo, as palavras-chave e
concluses antes de exclu-los. Esse processo consumiria muito tempo devido ao grande nmero de
resultados retornados pela pesquisa com base em palavras-chave. Depois de selecionar os estudos
primrios, utilizamos formulrios de extrao de dados para obter as informaes relevantes
consistentemente reduzindo, ao mesmo tempo, o vis. As informaes extradas foram validadas
por ambos os autores.
Usamos as perguntas de avaliao de qualidade dadas nas tabelas 2 e 3 para avaliar a
qualidade dos estudos primrios selecionados. Todos os estudos primrios selecionados so de alta
qualidade. Os estudos primrios so uma mistura de estudos observacionais e experimentais. Um
ponto fraco a dependncia das facilidades da busca baseada em palavras-chave fornecidas pelos
trs bancos de dados para selecionar o conjunto de documentos inicial. No podemos garantir que
os meios de pesquisa retornaram todos os estudos relevantes. Mas, o processo de pesquisa retornou
independente todos os estudos que conhecamos anteriormente como relevantes para as nossas
questes de pesquisa.
Muitos estudos primrios foram publicados em locais que no so relacionados com a
engenharia de software. Portanto, pode haver solues fornecidas pela comunidade de engenharia
de software para alguns dos desafios apresentados na seo 3.2, tais como problemas de orculo.
Mas no encontramos evidncias da ampla utilizao dessas solues pela comunidade de
desenvolvedores de software cientfico.
4.4. A contribuio
Que tenhamos conhecimento, esta a primeira reviso sistemtica de literatura realizada para
identificar os desafios, as solues propostas, de teste de software e problemas no resolvidos em
testes de software cientfico. Ns identificamos desafios em testes de software cientfico usando um
grande nmero de estudos. Destacamos as solues utilizadas pelos praticantes para superar esses
desafios, bem como solues nicas que foram propostas para superar problemas especficos. Alm
disso, identificamos vrios problemas no resolvidos.
O nosso trabalho pode contribuir para concentrar os esforos de pesquisa com o objetivo de
melhorar os testes de software cientfico. Esta RSL ajudar os cientistas que esto desenvolvendo o
software a identificar desafios de teste especficos e possveis solues para super-los. Alm disso,
cientistas desenvolvedores podem tornar-se conscientes de suas diferenas culturais com a
21
Agradecimentos
Este projeto apoiado pelo prmio nmero 1R01GM096192 do National Institute of General
Medical Sciences Estados Unidos. O contedo exclusivamente da responsabilidade dos autores
e no representa necessariamente as opinies oficiais do National Institute of General Medical
Sciences ou dos National Institutes of Health. Agradecemos aos revisores pelas suas observaes
perspicazes sobre verses anteriores deste artigo.
22
23
Referncias
[1] A.J. Abackerli, P.H. Pereira, N. Calnego Jr., A case study on testing CMM uncertainty
simulation software (VCMM), J. Brazilian Soc. Mech. Sci. Eng. 32 (2010) 814.
[2] K. Ackroyd, S. Kinder, G. Mant, M. Miller, C. Ramsdale, P. Stephenson, Scientific software
development at a research facility, IEEE Softw. 25 (4) (2008) 4451.
[3] W. Afzal, R. Torkar, R. Feldt, A systematic review of search-based testing for non-functional
system properties, Inform. Softw. Technol. 51 (6) (2009) 957976.
[4] P. Ammann, J. Offutt, Introduction to Software Testing, first ed., Cambridge University Press,
New York, NY, USA, 2008.
[5] R. Bagnara, M. Carlier, R. Gori, A. Gotlieb, Symbolic path-oriented test datageneration for
floating-point programs, in: 2013 IEEE Sixth International Conference on Software Testing,
Verification and Validation (ICST), 2013, pp. 110.
[6] S. Brilliant, J. Knight, N. Leveson, Analysis of faults in an n-version software experiment, IEEE
Trans. Softw. Eng. 16 (2) (1990) 238247.
[7] J. Carver, R.P. Kendall, S.E. Squires, D.E. Post, Software development environments for
scientific and engineering software: a series of case studies, in: Proceedings of the 29th
International Conference on Software Engineering (ICSE 07), IEEE Computer Society,
Washington, DC, USA, 2007, pp. 550559.
[8] Jeffrey Carver, R. Bartlett, D. Heaton, L. Hochstein, What scientists and engineers think they
know about software engineering: a survey, Tech. Rep. SAND2011-2196, Sandia National
Laboratories, 2011.
[9] T. Chen, J. Feng, T.H. Tse, Metamorphic testing of programs on partial differential equations: a
case study, in: Proceedings of the 26th Annual International Computer Software and Applications
Conference, 2002 (COMPSAC 2002), 2002, pp. 327333.
[10] T.Y. Chen, S.C. Cheung, S.M. Yiu, Metamorphic testing: a new approach for generating next
test cases, Tech. Rep. HKUST-CS98-01, Department of Computer Science, Hong Kong University
of Science and Technology, Hong Kong, 1998.
[11] T.Y. Chen, J.W.K. Ho, H. Liu, X. Xie, An innovative approach for testing bioinformatics
programs using metamorphic testing, BMC Bioinform. 10 (2009).
[12] T. Clune, R. Rood, Software testing and verification in climate model development, IEEE
Softw. 28 (6) (2011) 4955.
[13] M. Cox, P. Harris, Design and use of reference data sets for testing scientific software, Anal.
Chim. Acta 380 (23) (1999) 339351.
[14] T. Dahlgren, Performance-driven interface contract enforcement for scientific components, in:
H. Schmidt, I. Crnkovic, G. Heineman, J. Stafford (Eds.), Component-Based Software Engineering,
Lecture Notes in Computer Science, vol. 4608, Springer, Berlin, Heidelberg, 2007, pp. 157172.
[15] T.L. Dahlgren, P.T. Devanbu, Improving scientific software component quality through
assertions, in: Proceedings of the Second International Workshop on Software Engineering for High
Performance Computing System Applications (SE-HPCS 05), ACM, New York, NY, USA, 2005,
pp. 7377. [16] M.D. Davis, E.J. Weyuker, Pseudo-orculos for non-testable programs, in:
Proceedings of the ACM 81 conference (ACM 81), ACM, New York, NY, USA, 1981, pp. 254
257.
[17] J.B. Drake, P.W. Jones, G.R. Carr Jr., Overview of the software design of the community
climate system model, Int. J. High Perform. Comput. Appl. 19 (3) (2005) 177186.
[18] P. Dubois, Testing scientific programs, Comput. Sci. Eng. 14 (4) (2012) 6973.
[19] T. Dyba, T. Dingsoyr, G. Hanssen, Applying systematic reviews to diverse study types: an
experience report, in: First International Symposium on Empirical Software Engineering and
Measurement, 2007 (ESEM 2007), September 2007, pp. 225234.
[20] S.M. Easterbrook, Climate change a grand software challenge, in: Proceedings of the FSE/SDP
Workshop on Future of Software Engineering Research (FoSER 10), ACM, New York, NY, USA,
2010, pp. 99104.
24
[21] S.M. Easterbrook, T.C. Johns, Engineering the software for understanding climate change,
Comput. Sci. Eng. 11 (6) (2009) 6574.
[22] S.L. Eddins, Automated software testing for matlab, Comput. Sci. Eng. 11 (6) (2009) 4855.
[23] E. Engstrm, P. Runeson, M. Skoglund, A systematic review on regression test selection
techniques, Inform. Softw. Technol. 52 (1) (2010) 1430.
[24] P.E. Farrell, M.D. Piggott, G.J. Gorman, D.A. Ham, C.R. Wilson, T.M. Bond, Automated
continuous verification for numerical simulation, Geosci. Model Develop. 4 (2) (2011) 435449.
[25] R. Guderlei, J. Mayer, Statistical metamorphic testing programs with random output by means
of statistical hypothesis tests and metamorphic testing, in: Seventh International Conference on
Quality Software, 2007 (QSIC 07), October 2007, pp. 404409.
[26] J.E. Hannay, C. MacLeod, J. Singer, H.P. Langtangen, D. Pfahl, G. Wilson, How do scientists
develop and use scientific software?, in: Proceedings of the 2009 ICSE Workshop on Software
Engineering for Computational Science and Engineering (SECSE 09), IEEE Computer Society,
Washington, DC, USA, 2009, pp 18.
[27] L. Hatton, The T experiments: errors in scientific software, IEEE Comput. Sci. Eng. 4 (2)
(1997) 2738. [28] L. Hatton, A. Roberts, How accurate is scientific software?, IEEE Trans Softw.
Eng. 20 (10) (1994) 785797.
[29] M. Heroux, J. Willenbring, Barely sufficient software engineering: 10 practices to improve
your CSE software, in: ICSE Workshop on Software Engineering for Computational Science and
Engineering, 2009 (SECSE 09), 2009, pp. 1521. [30] M.A. Heroux, J.M. Willenbring, M.N.
Phenow, Improving the development process for CSE software, in: 15th EUROMICRO
International Conference on Parallel Distributed and Network-Based Processing, 2007 (PDP 07),
February 2007, pp. 1117.
[31] L. Hochstein, V. Basili, The asc-alliance projects: a case study of large-scale parallel scientific
code development, Computer 41 (3) (2008) 5058.
[32] D. Hook, D. Kelly, Testing for trustworthiness in scientific software, in: ICSE Workshop on
Software Engineering for Computational Science and Engineering, 2009 (SECSE 09), May 2009,
pp. 5964.
[33] D.W. Kane, M.M. Hohman, E.G. Cerami, M.W. McCormick, K.F. Kuhlmman, J.A. Byrd, Agile
methods in biomedical software development: a multi-site experience report, BMC Bioinform. 7
(2006) 273.
[34] U. Kanewala, J. Bieman, Using machine learning techniques to detect metamorphic relations
for programs without test orculos, in: 2013 IEEE 24th International Symposium on Software
Reliability Engineering (ISSRE), November 2013, pp. 110.
[35] U. Kanewala, J.M. Bieman, Techniques for testing scientific programs without an orculo, in:
Proc. 5th International Workshop on Software Engineering for Computational Science and
Engineering, IEEE, 2013, pp. 4857.
[36] D. Kelly, R. Gray, Y. Shao, Examining random and designed tests to detect code mistakes in
scientific software, J. Comput. Sci. 2 (1) (2011) 4756. [37] D. Kelly, D. Hook, R. Sanders, Five
recommended practices for computational scientists who write software, Comput. Sci. Eng. 11 (5)
(2009) 4853.
[38] D. Kelly, R. Sanders, Assessing the quality of scientific software, in: First International
Workshop on Software Engineering for Computational Science and Engineering, 2008.
[39] D. Kelly, S. Smith, N. Meng, Software engineering for scientists, Comput. Sci. Eng. 13 (5)
(2011) 711.
[40] D. Kelly, S. Thorsteinson, D. Hook, Scientific software testing: analysis with four dimensions,
IEEE Softw. 28 (3) (2011) 8490.
[41] B. Kitchenham, Procedures for performing systematic reviews, Technical report, Keele
University and NICTA, 2004.
[42] B. Kitchenham, O.P. Brereton, D. Budgen, M. Turner, J. Bailey, S. Linkman, Systematic
literature reviews in software engineering a systematic literature review, Inform. Softw. Technol. 51
(1) (2009) 715.
25
26