engenharia de software experimental
TRANSCRIPT
-
7/29/2019 Engenharia de Software Experimental
1/64
UNIVERSIDADE CATLICA DO SALVADOR
CURSO BACHARELADO EM INFORMTICA
DEPARTAMENTO DE INFORMTICA
ANTNIO AMARAL LIMA DE CARVALHO
EVERTON PARAGUASS DA SILVA
Engenharia de Software Experimental: um estudo sobre a eficcia da utilizao deferramentas de depurao.
SALVADOR - BA
2008
-
7/29/2019 Engenharia de Software Experimental
2/64
UNIVERSIDADE CATLICA DO SALVADOR
CURSO BACHARELADO EM INFORMTICA
DEPARTAMENTO DE INFORMTICA
ANTNIO AMARAL LIMA DE CARVALHO
EVERTON PARAGUASS DA SILVA
Engenharia de Software Experimental: um estudo sobre a eficcia da utilizao de
ferramentas de depurao.
Monografia apresentada por Antnio
Amaral Lima de Carvalho e Everton
Paraguass da Silva como requisito
parcial para aprovao na disciplina
Projeto Final.
Orientador: Prof. Antnio Cludio Neiva
SALVADOR - BA
2008
-
7/29/2019 Engenharia de Software Experimental
3/64
CERTIFICADO
Certifico que a presente memria, Engenharia de Software Experimental: um estudo sobre a
eficcia da utilizao de ferramentas de depurao foi realizada sob minha orientao por
Antnio Amaral Lima de Carvalho e Everton Paraguass da Silva, constituindo o Projeto Final
do Curso de Bacharelado em Informtica da Universidade Catlica do Salvador UCSAL.
Salvador, 12 de dezembro de 2008.
Antnio Cludio NeivaProfessor do Curso de Bacharelado em Informtica
Universidade Catlica do Salvador
-
7/29/2019 Engenharia de Software Experimental
4/64
RESUMO
Para determinar se uma tcnica eficaz, precisa-se mensur-la de alguma forma.
Apenas afirmar que uma tcnica eficaz no transmite informao real. Em vez disso, so
necessrias medidas aplicadas a cada atributo de software para que seja possvel afirmar que
uma tcnica mais ou menos eficaz do que a outra. Sob esta perspectiva foi criado um estudo
para avaliar resultados obtidos atravs de um experimento baseado em Engenharia de
Software Experimental aplicado sobre estudantes de ensino superior, visando verificar a
eficcia da utilizao de ferramentas de depurao em um ambiente de desenvolvimento da
linguagem C, eliminando abordagens inteis e estimulando o uso de metodologias mais
adequadas.
Palavras-chave: Experimentao, Engenharia de Software, hipteses.
-
7/29/2019 Engenharia de Software Experimental
5/64
ABSTRACT
To determine if a technique is effective, it needs to measure it in some way. Just say
that a technique is effective not transmit real information. Rather, it is necessary measures
applied to each attribute of software so that you can say that a technique is more or less
effective than the other. From this perspective was created a study to evaluate results from an
experiment based on Software Engineering Experimental applied on students in higher
education, aiming to verify the effectiveness of the use of tools for debugging in an
environment of developing the C language, eliminating unnecessary approaches and
encouraging the use of most appropriate methodologies.
Keywords: Experimentation, Software Engineering, hypotheses.
-
7/29/2019 Engenharia de Software Experimental
6/64
LISTA DE FIGURAS
Figura 2.2.3- Fbrica de Experincias
Figura 3.1- Os relacionamentos das hipteses
Figura 3.5.1- Fbrica de Experincias
Figura 3.5.2- Fases de um experimento
Figura 6.3.2 Legenda do questionrio de competncias.
-
7/29/2019 Engenharia de Software Experimental
7/64
LISTA DE TABELAS
Tabela 3.1: Tipos de escala de medidas
Tabela 3.2: Tipos de dimenses de medidas
Tabela 3.3: Relao entre nmero de objetos e nmero de participantes
Tabela 6.3.2: Relao de cdigos do experimento
Tabela 7.2: Questionrio de competncias
Tabela 7.4: Tabela de perfil de participantes
Tabela 8.1: Avaliao de atividades
-
7/29/2019 Engenharia de Software Experimental
8/64
LISTA DE GRFICOS
Grfico 7.1:Perfil acadmico (ensino mdio).
Grfico 7.2: Perfil acadmico (graduao).
Grfico 7.3: Tempo e nvel de experincia dos participantes.
Grfico 7.4: Experincia prvia dos participantes.
Grfico 8.1: Competncias oferecidas pelos cursos de graduao.
Grfico 8.2: Comparativo entre tcnicas atravs de erros e acertos.
Grfico 8.3: Comparativo entre tcnicas atravs de erros e acertos.
Grfico 8.4: Relao: Dificuldade x Tempo.
Grfico 8.5: Relao: Dificuldade x Resoluo.Grfico 8.6: Clareza dos cdigos propostos.
-
7/29/2019 Engenharia de Software Experimental
9/64
LISTA DE SIGLAS
CASE - Computer-Aided Software Engineering
CAD - Computer-Aided Design
CeBASE - Center for Empirically Based Software Engineering
GQM - Goal, Question, Metric
IEEE - Institute of Eletrical and Eletronic Engineering
NASA -National Aeronautics and Space AdministrationQIP- Quality Improvement Paradigm
-
7/29/2019 Engenharia de Software Experimental
10/64
SUMRIO
-
7/29/2019 Engenharia de Software Experimental
11/64
11
1. INTRODUO
A cincia e seus fundamentos esto presentes na evoluo das sociedades em diversas
reas do conhecimento humano. A Fsica e a Medicina so exemplos clssicos de reas em
que o conhecimento obtido atravs de pesquisas cientficas direcionado para a aplicao
cotidiana com excelentes resultados.
Um dos principais fundamentos da cincia a experimentao. Com ela, possvel
verificar, comprovar ou questionar uma teoria, alm de explorar novos domnios do
conhecimento (Wohlin et al, 2000).
Segundo Singh (2001), na cincia fenmenos fsicos so associados a hipteses. Os
fenmenos so observados e se as observaes esto de acordo com as hipteses, elas seconfirmam. Experimentos so importantes para testar e validar as hipteses. Caso novos
experimentos apiem as hipteses, surgem mais evidncias a favor das mesmas. Com o
aumento do nmero de evidncias, as hipteses podem ser aceitas como uma teoria cientfica.
A partir da anlise dos experimentos, o objetivo dos pesquisadores entender a
natureza dos processos, produtos e a relao entre ambos, propondo novos modelos ou o
aperfeioamento daqueles existentes. O objetivo dos profissionais explorar a utilizao do
conhecimento obtido pelos pesquisadores.No campo da Fsica, novos conhecimentos esto sendo alcanados atravs da
complementao de teorias j existentes com a aplicao de novos experimentos. Tericos
constroem modelos para explicar o universo. Esses modelos, baseados sobre teorias
anteriores, estabelecem resultados que podem ser mensurados. Experimentalistas observam e
mensuram. Na Medicina, o objetivo do pesquisador entender como funciona o corpo
humano e avaliar um conjunto de relaes de causa e efeito que permitam conhecer melhor a
sade humana. J o objetivo do profissional mdico aplicar os conhecimentos obtidosatravs da cincia visando buscar a cura para os seus pacientes. Nos dois exemplos
mencionados, observa-se a forte relao entre o conhecimento existente e o conhecimento
adquirido com o apoio da pesquisa cientfica.
A indstria, em suas diversas vertentes, em busca da melhoria de processos e
produtos, vem seguindo esse mesmo modelo. nesse contexto que desponta a Engenharia de
Software. De acordo com Basili et al (1997), a Engenharia de Software um laboratrio de
cincia, na medida em que apresenta componentes experimentais para testar ou refutar uma
teoria ou explorar novos domnios.
-
7/29/2019 Engenharia de Software Experimental
12/64
12
A experimentao um daqueles termos que so freqentemente usados
incorretamente na comunidade da cincia da computao. Pesquisadores escrevem
documentos que explicam algumas tecnologias novas depois que eles executam testes para
mostrar como a tecnologia eficaz. Na maioria dos casos, o criador da tecnologia implementa
e demonstra como ela funciona, raramente fazendo essa experimentao envolver qualquer
coleta de dados para comprovar que a tecnologia adere a um modelo ou alguma teoria de
desenvolvimento de software(Zelkowitz, 1998).
Atualmente grande parte das novas tecnologias de software (processos, metodologias,
tcnicas e ferramentas) apresentada no baseada em pesquisas cientficas, investigaes e
experimentaes, mas em opinies prprias ou propagandas, indo de encontro a critrios
utilizados pelos mtodos cientficos, que no podem ser baseados em opinies ou interessescomerciais. Esse cenrio motiva a aplicao da Engenharia de Software Experimental (ESE)
atravs da utilizao de tcnicas adequadas que contribuam para o alcance de uma
metodologia que visa obter um melhor controle dos prazos de projetos, um melhor
gerenciamento sobre os custos de produo e manuteno, alm de assegurar melhor
qualidade para o processo e para o produto de software.
Para determinar se uma tcnica eficaz, precisa-se mensur-la de alguma forma.
Apenas afirmar que uma tcnica eficaz no transmite informao real. Em vez disso,precisa-se de medidas aplicadas a cada atributo de software para que seja possvel afirmar que
uma tcnica mais ou menos eficaz do que a outra. Sem uma confirmao sobre o
experimento, qual deveria ser a razo pela qual a
indstria selecionaria um novo mtodo ou ferramenta? Em que base os pesquisadores
melhorariam uma linguagem e desenvolveriam ferramentas de apoio? Em uma disciplina
cientfica, necessrio fazer mais do que simplesmente afirmar: "Eu tentei, e eu gosto disso"
(Wallace, 2002).A carncia da experimentao pode ser facilmente percebida na indstria, mas
tambm na academia. No ambiente acadmico, as metodologias de desenvolvimento de
software so propostas sem uma fundamentao experimental. Esta, que seria a base para um
processo futuro de desenvolvimento consistente, est atualmente sustentada sobre vises no
empricas. Ferramentas, linguagens, paradigmas de desenvolvimento e metodologias
permeiam o ambiente acadmico sem um processo adequado de validao.
Segundo Parr (2004), um dos fatores mais preocupantes dentro do processo de
identificao de falhas em cdigos de softwares que muitos estudantes no demonstram
atitude diante de problemas inesperados. Alguns literalmente tentam fazer alteraes
-
7/29/2019 Engenharia de Software Experimental
13/64
13
aleatrias ou, pior, tentam executar o programa mais algumas vezes com a esperana de que o
mesmo ir comear a funcionar novamente. Estas aes ilustram duas questes principais: Os
estudantes no tm idia sobre a abordagem de depurao, e eles no tm a confiana de que
podem identificar o problema.
Propondo estimular a adoo do processo de experimentao na academia, este projeto
de pesquisa expe tcnicas de engenharia de software experimental de um estudo que foi
conduzido durante os Cursos de Bacharelado nas Engenharias Qumica, Eltrica, Mecnica,
Mecatrnica, de Produo e Cincia da Computao da Universidade do Salvador. Sendo
aplicado a uma amostra populacional de alunos das turmas de Linguagem de Programao I.
O objetivo especfico desse estudo avaliar resultados obtidos atravs de
experimentos baseados em Engenharia de Software Experimental aplicados sobre estudantesde curso de ensino superior, visando verificar a eficcia da utilizao de ferramentas de
depurao em um ambiente de desenvolvimento da linguagem C, eliminando abordagens
inteis e estimulando o uso de metodologias mais adequadas.
1.1. Metodologia
1 Etapa: Delimitao do Tema
A idia inicial do projeto visava explorao de temas relacionados com a Engenharia
de Software. Aps consultas a professores do Curso de Informtica da UCSal e pesquisas
realizadas na internet, foi possvel detalhar bastante esse ramo do conhecimento e decidir
focar o projeto em Engenharia de Software Experimental.
O tema Engenharia de Software Experimental atual e prope a experimentao para
contribuir com a determinao da eficcia das propostas de teorias e mtodos aplicados naCincia da Computao. Segundo Zelkowitz et al (1998), a Cincia da Computao no tem
desenvolvido uma taxonomia concisa de mtodos para demonstrar a validade das novas
tcnicas.
Estimular na academia a adoo da experimentao, principalmente no Curso de
Informtica da UCSal, demonstrou ser uma opo bastante interessante, pois, alm de
possibilitar a difuso de tcnicas cientficas na Universidade, oferece tambm a possibilidade
de uma discusso mais aprofundada sobre o tema.
-
7/29/2019 Engenharia de Software Experimental
14/64
14
2 Etapa: Definio do experimento
Aps a definio do tema, a etapa seguinte foi o estudo de Engenharia de Software
com nfase em Engenharia de Software Experimental e conseqentemente a definio de um
experimento. A opo escolhida foi avaliar os resultados obtidos atravs de experimentos
baseados em Engenharia de Software Experimental aplicados sobre estudantes de curso de
ensino superior, visando verificar a eficcia da utilizao de ferramentas de depurao em um
ambiente de desenvolvimento da linguagem de programao C. A escolha da linguagem C
deve-se ao fato dessa linguagem ser estudada em diversas instituies de ensino superior, o
que contribui para a repetio do experimento.
3 Etapa: Elaborao do experimento
Para a realizao de um experimento, faz-se necessrio seguir as etapas:
o Definio: Estabelecimento dos objetivos, das questes, das mtricas e das
hipteses.
o Planejamento: Seleo e caracterizao do projeto de medio.
o Execuo: Coleta dos dados experimentais para anlise e avaliao.
o Anlise e interpretao: Processamento dos dados a respeito das mtricas,
questes, e objetivos definidos.
o Apresentao e empacotamento: Possibilitam a criao de bibliotecas de
experimentao, ou seja, permitem a repetio do experimento de forma
adequada.
2. FUNDAMENTAO TERICA
2.1. Engenharia de Software
2.1.1. Conceitos
Segundo Sommerville (2007) o conceito de engenharia de software foi inicialmente
proposto em 1968, em uma conferncia organizada para discutir o que foi ento chamada decrise do software. O processo de criao de software estava em crise. O preo do hardware
-
7/29/2019 Engenharia de Software Experimental
15/64
15
estava diminuindo enquanto o custo de software aumentava rapidamente. Novas tcnicas e
mtodos eram necessrios para controlar a complexidade inerente aos grandes sistemas de
software. Essas tcnicas tornaram-se parte da engenharia de software e so amplamente
utilizadas at hoje.
A Engenharia de Software, de acordo com Rezende (2006), corresponde a uma
metodologia de desenvolvimento e manuteno de sistemas modulares, com as seguintes
caractersticas:
Processo dinmico, integrado e inteligente de solues tecnolgicas;
Adequao aos requisitos funcionais do negcio do cliente e seus respectivos
procedimentos pertinentes;
Efetivao de padres de qualidade, produtividade e efetividade em suas
atividades e produtos;
Fundamentao na Tecnologia da Informao disponvel, vivel, oportuna e
personalizada;
Planejamento e gesto de atividades, recursos, custos e datas.
Rezende (2006) apresenta ainda os seguintes conceitos:
Engenharia - a arte das construes, com base no conhecimento cientfico e
emprico. Arte adequada ao atendimento das necessidades humanas. O conhecimento
emprico est relacionado s experincias prticas.
Engenhar - idear, maquinar, inventar, engendrar, produzir.
Sistema - um conjunto de partes que interagem entre si, visando um objetivo
comum. Em informtica o conjunto de software, hardware e recursos humanos.
Software um subsistema de um sistema computacional. So programas de
computadores.
Para o Institute of Eletrical and Eletronic Engineering a engenharia de software a
aplicao sistemtica, disciplinada e com abordagem quantitativa para o desenvolvimento,
operao e manuteno de software (IEEE, 1990). Segundo Chiossi et al. (2001), a
Engenharia de Software uma disciplina que rene metodologias e ferramentas que so
utilizadas desde a identificao do problema at o momento em que o sistema desenvolvido
deixa de ser operacional, visando resolver problemas inerentes ao processo de
desenvolvimento e ao produto de software.
A Engenharia de Software pode ser caracterizada pela produo de software de forma
ordenada e medida, visando obteno de sistemas satisfatrios e que respeitem prazos e
-
7/29/2019 Engenharia de Software Experimental
16/64
16
oramentos (Peters, Pedrycz, 2001). o estabelecimento e uso de slidos princpios de
engenharia para que se possa obter economicamente um software que seja confivel e que
funcione eficientemente em mquinas reais. descendente da engenharia de sistemas e de
hardware (Pressman, 1995).
A Engenharia de Software composta por trs elementos fundamentais definidos por
Rezende (2006):
Mtodos de engenharia de software: Estabelecem as regras de construo, incluindo
planejamento, estimativas, anlise de requisitos e sistemas, projeto da estrutura de
dados, arquitetura de programa e algoritmo de processamento, codificao, teste e
manuteno.
Ferramentas de engenharia de software: So tcnicas de suporte aos mtodos
aplicados, que operam de forma automatizada ou semi-automatizada, como por
exemplo, a anlise estruturada, a orientao a objetos, ferramentas CASE(Computer-
Aided Software Engineering), CAD (Computer-Aided Design) e respectivas
ferramentas, tais como, banco de dados e linguagens de programao dentre outras.
Procedimentos de engenharia de software: Correspondem integrao entre os
mtodos e as ferramentas utilizadas no processo de desenvolvimento de software. So
os procedimentos que antecedem e sucedem o software.
2.1.2. Objetivos da engenharia de software
Os objetivos da engenharia de software so o aprimoramento da qualidade dos
produtos de software e o aumento da produtividade dos engenheiros de software, alm do
atendimento aos requisitos de eficcia e eficincia, ou seja, efetividade (Maffeo, 1992).
A Engenharia de Software visa sistematizar a produo, a manuteno, a evoluo e arecuperao de produtos intensivos de software, de modo que ocorra dentro de prazos e custos
estimados, com progresso controlado e utilizando princpios, mtodos, tecnologia e processos
em contnuo aprimoramento. Os produtos desenvolvidos e mantidos, seguindo um processo
efetivo e segundo os preceitos da Engenharia de Software, asseguram, por construo,
qualidade satisfatria, apoiando adequadamente os seus usurios na realizao de suas tarefas.
Operam satisfatria e economicamente em ambientes reais e podem evoluir continuamente,
adaptando-se a um mundo em constante evoluo (Fiori, 1998).
-
7/29/2019 Engenharia de Software Experimental
17/64
17
2.2. Engenharia de software experimental
Engenharia de Software uma cincia e a experimentao um ingrediente necessrio
a qualquer cincia. Os primeiros trabalhos relacionados com a Engenharia de Software
Experimental foram realizados por volta de 1974, com pesquisas isoladas e propostas
especficas, realizadas atravs de estudos de caso e experimentos controlados. O foco era o
aprendizado sobre medio e a identificao de um conjunto de mtricas. Muitos estudos
eram realizados isoladamente, no havendo, portanto, uma grande pesquisa (Basili, 2007).
A ruptura do formato de estudos isolados comeou no Software Engineering
Laboratory,NASA Goddard Space Flight Center. Isso estimulou o reconhecimento de que aexperimentao e a medio eram aspectos importantes do desenvolvimento de software e
que o planejamento de experimentos uma parte importante da melhoria do processo.
Avaliao e opinio so necessrias para a aprendizagem. A indstria de software precisa de
experincias com tecnologias para reduzir riscos e adequar o ambiente de desenvolvimento. A
experincia deve ser avaliada, adaptada, e repetida (Basili, 1994).
De acordo com o Center for Empirically Based Software Engineering (CeBASE)
importante antes de construir um grande modelo: Formular hipteses
Recolher dados empricos e experincias
Registrar variveis que influenciam sobre o contexto
Construir modelos (lies, heursticas, padres de apoio deciso, quadros quantitativos,
modelos e ferramentas)
Integrar modelos em um quadro
Teste de hipteses Empacotar aquilo que foi aprendido para que ele possa ser utilizado novamente.
necessrio construir conhecimento, identificar folclores, teorias, fazer estudos
etnogrficos, entrevistas, observaes, construir modelos (Wohlin et al, 2000).
2.2.1. Experimentao
Construir teorias exige replicao, variao de ameaas, variao de artefatos, e
variao de populao. Estes estudos requerem coordenao, colaborao e independncia. A
-
7/29/2019 Engenharia de Software Experimental
18/64
18
obteno de experincia por parte de uma equipe lenta, demorada e envolve vrios grupos,
de mltiplas disciplinas (Basili et al., 1992).
Segundo Tichy (1998), o fenmeno estudado na cincia da computao fabricado,
contudo, computadores e programas so criaes humanas. Ento possvel concluir que
cincia da computao no uma cincia natural no senso tradicional. Para compreender
processos de informao, cientistas da computao devem observar fenmenos, formular
explicaes e test-las. Este o mtodo cientfico. Matemticos afirmam que experimentos
no provam nada. Nem todo experimento prova uma teoria com absoluta certeza. A
comunidade acadmica geralmente aceita uma teoria se todos os fatos conhecidos dentro de
seu domnio podem ser deduzidos a partir de uma teoria, havendo repetio dos testes e se ele
prediz corretamente novos fenmenos. No entanto, existe permanentemente um elemento desuspense: Parafraseando Dijkstra (1999), um experimento pode mostrar apenas a presena de
falhas em uma teoria, no a sua ausncia. Os cientistas esto atentos a esta incerteza e, por
isso, esto prontos para refutar uma teoria caso contradies sejam comprovadas.
Os experimentos tambm so utilizados nos casos em que teoria e a anlise dedutiva
no se aplicam. Experimentos verificam a influncia das hipteses, eliminam explicaes
alternativas de fenmenos e descobrem novos fenmenos na necessidade de explicao.
Dessa forma, as experincias ajudam com induo: gerando teorias a partir da observao(Wohlin et al., 2000).
As redes neurais so um bom exemplo de explorao da experimentao. Atravs de
experimentos, fundamentos tericos foram descartados e demonstraram-se propriedades que
permitiram aos pesquisadores desenvolver melhores teorias (Wohlin, 2000).
O mtodo cientfico tradicional explora os testes e a observao porque eles ajudam a
formular novas teorias que podem ser validadas posteriormente. Um importante requisito para
qualquer experincia a repetio, pois essa assegura que os dados possam ser controlados deforma independente e, assim, inspira confiana nos resultados. Ela ajuda a eliminar erros,
farsas e fraudes (Travassos et al, 2002).
Experimentao ajuda a determinar a eficcia das propostas de teorias e mtodos. Mas
a cincia da computao no tem desenvolvido uma taxonomia concisa de mtodos para
demonstrar a validade das novas tcnicas. Software eficaz pode significar que o software de
baixo custo, confivel, desenvolvido dentro de um prazo estimado, seguro, ou tem algum
outro atributo relevante. Para determinar se uma determinada tcnica eficaz, preciso
mensur-la de alguma forma. Apenas afirmar que uma tcnica eficaz no transmite
informao real. Em vez disso, precisa-se de medidas aplicadas a cada atributo de software
-
7/29/2019 Engenharia de Software Experimental
19/64
19
para que seja possvel afirmar que uma tcnica mais ou menos eficaz do que a outra
(Travassos et al, 2002).
Sem uma confirmao sobre o experimento, qual deveria ser a razo pela qual a
indstria selecionaria um novo mtodo ou ferramenta? Em que base os pesquisadores
melhorariam uma linguagem e desenvolveriam ferramentas de apoio? Em uma disciplina
cientfica, preciso fazer mais do que afirmar: "Eu tentei, e eu gosto disso." (Zelkowitz,
Wallace, 1998).
2.2.2. Experimento
Mtodos relevantes para a conduo de experimentos na rea de Engenharia de Software(Travassos, 2002):
Cientfico:Paradigma indutivo. Abordagem para construo de modelos.
De Engenharia:Abordagem orientada melhoria evolutiva.
Experimental: Abordagem orientada melhoria revolucionria. Sugere o
modelo, desenvolve o mtodo qualitativo/quantitativo, aplica um experimento,
mede e analisa, avalia o modelo e repete o processo.
Analtico:Paradigma dedutivo. Sugere uma teoria formal, comparando-a comas observaes empricas.
2.2.3. Objetivos da experimentao
Os objetivos relacionados execuo de experimentos em Engenharia de Software so
a caracterizao, avaliao, previso, controle e melhoria a respeito de produtos,
processos, recursos, modelos, teoria entre outros (Travassos et al, 2002). O fluxodefinido pela figura 3.1 apresenta um ciclo de vida de um experimento.
-
7/29/2019 Engenharia de Software Experimental
20/64
20
Figura 2.2.3- Fabrica de ExperinciasFonte: (Wohlin, 2000)
A experimentao pode ajudar a construir a base de conhecimento confivel e reduzir
assim a incerteza sobre quais teorias, ferramentas e metodologias so adequadas. Pode
acelerar o processo eliminando abordagens inteis e suposies errneas, alm disso, a
experimentao ajuda tambm a orientar a engenharia e a teoria nas direes promissoras da
pesquisa (Wohlin, 2000). Os experimentos podem ser custosos, mas um experimento
significativo pode oferecer um retorno muito positivo aos seus patrocinadores (Travassos,
2002).
3. DESCRIO GERAL DA EXPERIMENTAO
3.1. Vocabulrio da experimentao
Os elementos mais importantes de um experimento so as variveis, os objetos, a
populao, a amostra, o contexto do experimento e as hipteses. Segundo Travassos (2002),
as variveis so classificadas como:
Independentes: Referem-se entrada do processo de experimentao. Tambm
chamadas de fatores. Apresentam a causa que afeta o resultado do processo deexperimentao. O valor de um fator se chama tratamento.
Dependentes: Referem-se sada do processo de experimentao. Apresentam
o efeito que causado pelos fatores do experimento. O valor de uma varivel
de sada se chama resultado.
Alguns conceitos definidos por Travassos (2002):
Objetos so ferramentas utilizadas para verificao de relacionamento causa-efeitonuma teoria. Participantes so indivduos que foram especialmente selecionados da populao
sob interesse para a conduo do experimento. Contexto do experimento a composio das
condies em que o experimento est sendo executado e pode ser caracterizado sob quatro
dimenses:
1. In-vitro vs In-vivo: O primeiro refere-se experimentao sob
condies controladas em laboratrio. O segundo considera o estudo de um
projeto real.
-
7/29/2019 Engenharia de Software Experimental
21/64
21
2. Alunos vs. Profissionais: Define a equipe que vai executar o
experimento.
3. Problema de sala de aula vs. Problema real: Mostra o tamanho do
problema que est sendo estudado.
4. Especfico vs. Geral: Mostra se os resultados do experimento so
vlidos para um contexto particular ou para o domnio integral da Engenharia
de Software.
Para Santo A. (1992), uma hiptese uma declarao de crena relativa a um
fenmeno, fato ou relacionamento entre diversas variveis. Deve ser sempre testada contra
fatos antes de ser aceita ou refutada. As hipteses servem para:
Explicar novos relacionamentos;
Estimular novas pesquisas;
Servir como fontes metodolgicas;
Avaliar tcnicas de pesquisas;
Indicar novos princpios;
Um experimento formulado atravs de hipteses. A hiptese principal se chama
hiptese nula e declara que no h nenhum relacionamento estatisticamente significante entre
a causa e o efeito. O objetivo principal do experimento rejeitar a hiptese nula a favor de
uma ou mais hipteses alternativas. A deciso sobre a rejeio da hiptese nula pode ser
tomada baseada nos resultados da sua verificao utilizando um teste estatstico (Travassos,
2002).
Hipteses tm sido caracterizadas de muitas formas; s vezes sendo confundidas com
proposies ou com teorias, entretanto, as hipteses so derivaes de proposies
(afirmativas provisrias) e constituem afirmativas mais especificas sobre o que o pesquisador
espera encontrar como resultado de busca emprica (Santo, A., 1992).
A figura 2 apresenta a interao de hiptese com teoria, proposio e com busca emprica:
Figura 3.1- Os relacionamentos das hipteses.
-
7/29/2019 Engenharia de Software Experimental
22/64
22
Fonte: (Santo, A., 1992)
Exemplo de hiptese nula: A tcnica estrutural com a ferramenta X revelou a mesma
quantidade de defeitos que a tcnica Y.A composio formada pelos objetos juntamente com o sistema de medio e
diretrizes da execuo do experimento chamada instrumentao do experimento.
A combinao dos objetos, participantes e tratamentos se chama teste experimental ou trial. A
quantidade e a seqncia dos testes experimentais definem o projeto do experimento. O
projeto de experimento determina a maneira como um experimento ser conduzido. A
alocao de objetos e participantes alm da maneira como os tratamentos sero aplicados so
definidas nessa fase.
3.2. Princpios da organizao do experimento
Segundo Basili (1994), a experimentao na Engenharia de Software em relao
experimentao em geral, presume um conjunto dos princpios que devem ser considerados ao
longo do processo de organizao e execuo do experimento tal como no tempo da anlise e
interpretao dos resultados. So eles:
Aleatoriedade: implica que a alocao dos objetos, dos participantes e a ordem de
execuo dos testes experimentais sejam aleatrias. utilizada para evitar o efeito de
algum fator que de outra maneira possa estar presente e tambm para selecionar os
participantes que sejam representativos para a populao de interesse.
Agrupamento: Deve ser utilizado se houver um fator no experimento que
provavelmente tenha um efeito sobre o resultado, mas esse efeito no interessante
para os pesquisadores. O agrupamento elimina o efeito indesejado durante a
comparao dos tratamentos e aumenta a preciso do experimento.
Balanceamento: Se o experimento est organizado de uma forma que todos os
tratamentos tm o mesmo nmero de participantes, o projeto do experimento
balanceado. O balanceamento desejvel porque simplifica e melhora a anlise
estatstica dos dados experimentais.
Medio: A medio a parte central de um estudo experimental. definida como o
mapeamento do mundo experimental para o mundo formal ou relacional. Alguns
conceitos:
Mtrica: O atributo da entidade que est sendo medida.
-
7/29/2019 Engenharia de Software Experimental
23/64
23
Escala: Mapeamentos diferentes do mesmo atributo.
Rescaling: Transformao de uma escala de medio em outra. Tambm chamada de
transformao admissvel.
Existem 03 (trs) tipos de escala conforme tabela 3.1 a seguir:
Nominal Apresenta o atributo de uma entidade como o nome ou
smbolo.Ordinal Ordena as entidades segundo um critrio definido.Intervalo Ordena os valores como a escala ordinal, mas acrescenta a
noo da distncia relativa entre as entidades.Tabela 3.1: Tipos de escala de medidas.
Existem 04 (quatro) dimenses de medidas conforme tabela 3.2 a seguir:
Objetiva Se o valor da medida depende somente do objeto em si. Pode ser tomada
vrias vezes e o mesmo valor ser sempre recebido.Subjetiva Se o valor da medida depende ao mesmo tempo do objeto e da perspectiva
na qual o valor foi tomado. Pode tomar os valores diferentes se medir o
mesmo objeto vrias vezes.Direta No envolve a medio de outros atributos.Indireta derivada da medida de outros atributos.
Tabela 3.2: Tipos de dimenses de medidas.
Alm disso, a medio na Engenharia de Software caracterizada em termos dos atributos
internos e externos.
Atributo interno: Pode ser medido em termos do objeto em si. Geralmente so das
medidas diretas.
Atributo externo: Pode ser medido somente a respeito dos atributos de outros objetos.
So das medidas indiretas e devem ser derivados dos atributos internos.
O objetivo principal da medio na Engenharia de Software aumentar a compreenso do
processo e do produto, control-los definindo antecipadamente as atividades corretivas e
identificar as possveis reas de melhoria. Segundo Travassos (2002), a mediao a base da
abordagem bottom-up para a melhoria do processo do desenvolvimento de software. Essa
abordagem implica a anlise detalhada das prticas de software, a seleo dos objetivos de
melhoria derivados dessa anlise e a gerncia das atividades de melhoria sustentadas pela
medio.
-
7/29/2019 Engenharia de Software Experimental
24/64
24
Um exemplo da abordagem descrita o Paradigma da Melhoria da Qualidade (Quality
Improvement Paradigm QIP). QIP apresenta um framework do processo de melhoria
sustentado pelos princpios do paradigma Goal/Question/Metric (GQM).
3.3. Validade
Existem 04 (quatro) tipos de da validade de resultados do experimento:
Validade de concluso: relacionada habilidade de chegar a uma concluso correta
a respeito dos relacionamentos entre o tratamento e o resultado do experimento.
o Problemas: Os pesquisadores podem influenciar os resultados tentando
receber o resultado especfico. As medidas podem envolver o julgamento
humano e assim os resultados diferentes podem ser recebidos caso um objeto
seja medido vrias vezes.
Validade interna: Define se o relacionamento observado entre o tratamento e o
resultado causal e no o resultado da influncia de outro fator que no controlado
ou mesmo no foi medido. Durante a avaliao da validade interna uma maior ateno
deve ser prestada aos participantes, ou seja, seleo populao, maneira da diviso
nas classes, ao modo de aplicao dos tratamentos e aos aspectos sociais.
o Problemas: So relacionados principalmente aos participantes, que podem
ficar cansados ou desanimados, ou podem ainda, aprender ao longo do estudo.Os grupos participantes podem produzir os resultados diferentes por causa do
comportamento e as habilidades diferentes. Os participantes que receberam o
tratamento menos interessante ou menos desejado podem ser motivados a
reduzir ou inverter os resultados do experimento.
Validade da construo: Considera os relacionamentos entre a teoria e a observao,
ou seja, se o tratamento reflete a causa bem e o resultado reflete o efeito bem. Durante
a avaliao da validade da construo os aspectos relevantes ao projeto doexperimento e os fatores humanos devem ser considerados.
o Problemas: Comportamento incorreto por parte dos participantes ou do
experimentador. O experimento pode ser sub-representado e no oferecer a
imagem completa da combinao dos tratamentos. O ser humano sempre est
tentando parecer melhor quando est sendo avaliado.
Validade da externa: Define as condies que limitam a habilidade de generalizar os
resultados de um experimento para a prtica industrial. Durante a avaliao davalidade externa a interao do tratamento com as pessoas, o lugar e o tempo devem
ser considerados.
-
7/29/2019 Engenharia de Software Experimental
25/64
25
o Problemas: A populao dos participantes pode no ser representativa
populao sob interesse. A instrumentao no ser adequada prtica
industrial. O experimento pode ser executado num dia ou tempo especial que
afete os resultados.
A prioridade dos tipos de validade determinada segundo os objetos da
experimentao. Para os experimentos aplicados, que so a maioria dos experimentos na rea
de Engenharia de Software, a ordem da importncia dos tipos da validade : interna, externa,
construo e concluso.
3.4. Tipos de experimentos
O tipo de experimento mais apropriado em uma situao concreta depender dos
objetivos do estudo, das propriedades do processo de software usado durante a
experimentao ou dos resultados finais esperados. Travassos (2002), descreve trs principais
estratgias experimentais, diferenciadas pelo controle de execuo, controle de medio, o
custo da investigao e a facilidade da repetio:
Survey: uma investigao executada em retrospectiva. conduzido quando algumas
tcnicas ou ferramentas j tenham sido utilizadas. Os objetivos do Survey so:o Descritivo, por exemplo, determinar a distribuio de atributos ou
caractersticas.
o Explanatrio, por exemplo, explicar porque os desenvolvedores escolheram
uma das tcnicas.
o Explorativo, por exemplo, um estudo preliminar para uma investigao mais
profunda.
Os meios principais para coletar a informao quantitativa e qualitativa preliminar soos questionrios. O Survey possui capacidade para levantar um grande nmero de variveis a
serem avaliadas. No oferece nenhum controle sobre a execuo ou medio e sempre
possvel manipular as variveis.
Estudo de caso: utilizado para monitorar os projetos, atividades e atribuies. Visa
observar um atributo especfico e estabelecer o relacionamento entre atributos
diferentes. O nvel de controle num estudo de caso baixo, mas ao contrrio do
Survey, o estudo de caso possui controle sobre a medio das variveis. O maior
-
7/29/2019 Engenharia de Software Experimental
26/64
26
problema do estudo de caso a possibilidade de fatores de confuso, ou seja, difcil
diferenciar o efeito proveniente de um fator do efeito proveniente de outro fator.
Experimento: Geralmente realizado em laboratrio e oferece o maior nvel de
controle. Seu objetivo manipular uma ou mais variveis e manter as outras fixas,
medindo o efeito resultado. Pode ser feito in-vitro sob condies de laboratrio ou in-
vivo, sob condies normais. apropriado para confirmar teorias, confirmar o
conhecimento convencional, explorar relacionamentos, avaliar a predio dos modelos
ou validar as medidas. A maior fora do experimento encontra-se no controle total
sobre o processo, variveis e na possibilidade de ser repetido.
De acordo com as estratgias experimentais existem trs principais mtodos para a
coleta de dados:
Mtodo histrico: Utilizado para coletar dados experimentais dos projetos que j
tenham sido terminados. Os dados j existem e preciso examin-los. Subdiviso:
o Pesquisa bibliogrfica
o Lies aprendidas
o Anlise esttica
Mtodo da observao: Coleta os dados relevantes enquanto o projeto est sendo
executado. Oferece controle fraco sobre o processo de desenvolvimento. Subdiviso:
o Monitoramento do projeto
o Estudo de caso
o Afirmao
o Estudo de campo
Mtodo controlado: Prov instncias mltiplas de uma observao oferecendo a
validade estatstica dos resultados do estudo. Subdiviso:
o Repetio
o Sinttico
o Anlise dinmica
o Simulao
Outra classificao considera as caractersticas do contexto do experimento, ou seja,
diferenciao dos tipos de experimentos dependendo da quantidade dos objetos e participantes
envolvidos no estudo, conforme tabela 3.3:
Nmero de objetos1 2
-
7/29/2019 Engenharia de Software Experimental
27/64
27
Nmero de
participantes
1 Estudo de nico
objeto
Estudo da variao de
objetos2 ou
mais
Estudo de objeto
com vrios testes
Estudo agrupado por
objetos e participantesTabela 3.3: Relao entre nmero de objetos e nmero de participantes
A classificao pode tambm considerar como os dados experimentais foram medidos. H
nove tipos de estudo agrupados em trs categorias gerais:
O estudo qualitativo: Est relacionado pesquisa sobre os objetos quando os
resultados so apresentados em termos naturais.
O estudo quantitativo: Geralmente conduzido atravs de um experimento
controlado. Uma de suas vantagens que os dados qualitativos promovem a
comparao e a anlise estatstica.
Benchmarking: utilizado para a medio do desempenho dos diferentes produtos de
software.
3.5. Processo de experimentao
Metodologia:
De acordo com Travassos (2002), um experimento deve ser tratado como um processo
da formulao ou verificao de uma teoria. A fim de que o processo oferea resultados
vlidos,ele deve ser propriamente organizado e controlado ou, pelo menos,
acompanhado.Com o intuito de alcanar estes objetivos vrias metodologias de organizao
experimentais foram elaboradas.
Um bom exemplo da metodologia da experimentao avanada o Paradigma da
Melhoria da Qualidade (Quality Improvement Paradigm QIP). Sua essncia est na
melhoria contnua do processo de desenvolvimento de software. Etapas:1. Caracterizao do processo de negcio.
2. Definio dos objetivos quantitativos.
3. Escolha do processo de melhoria.
4. Processo de desenvolvimento do software.
5. Avaliao das prticas atuais.
6. Empacotamento.
-
7/29/2019 Engenharia de Software Experimental
28/64
28
O QIP ligado ao conceito de Fbrica de Experincia (Basili,1994) que um conjunto de
ferramentas para o armazenamento, a modificao e a retirada da informao do projeto
empacotada. A figura 4 apresenta a estrutura da Fbrica de Experimentos.
Figura 3.5.1- Fbrica de ExperinciaFonte: (Wohlin, 2000).
Fases do experimento:
O processo da execuo de um experimento presume a realizao de uma seqncia de
atividades. A quantidade e a complexidade devem variar de acordo com a complexidade de
cada estudo em particular. As fases de um experimento esto descritas abaixo:
Definio: a primeira fase, quando se estabelece os problemas e objetivos do
experimento. Fornece a direo geral do experimento. A definio dos objetivos pode
ser apresentada de acordo com a seguinte estrutura:
Analisar, do ponto de vista do orientador, a aplicao de ferramentas de depurao em
ambiente de desenvolvimento da linguagem de programao C, com o propsito de
avaliar a sua eficcia durante o aprendizado de lgica computacional por parte de
estudantes do Curso de Bacharelado de Engenharia Qumica da Universidade Salvador
(UNIFACS).
Planejamento: Determinao do projeto de experimento. Define-se a instrumentao e
a validade do experimento avaliada. Nessa fase, acontecem:
o Seleo do contexto.
o Formulao das hipteses.
o Seleo das variveis.
o Seleo dos participantes.
o Projeto do experimento.
o Preparao conceitual da instrumentao.
-
7/29/2019 Engenharia de Software Experimental
29/64
29
o Considerao da validade do experimento.
O resultado dessa fase apresenta o experimento totalmente elaborado e pronto para
execuo.
Execuo: Coleta dos dados experimentais para anlise e avaliao. O aspecto mais
importante dessa fase que a parte humana entra em jogo a partir da.
Anlise / Interpretao: Oferecem as concluses sobre a possibilidade da rejeio da
hiptese nula usando a estatstica descritiva, a reduo do conjunto de dados e a
verificao das hipteses.Quando os dados so coletados, o pesquisador deve verificar
se os dados so razoveis e se foram coletados corretamente, isto se relaciona com o
fato dos participantes terem entendido e preenchido corretamente os formulrios e
necessrio avaliar a qualidade dos dados e garantir que foram capturados de acordo
com o planejado.
Apresentao e empacotamento: Fase menos elaborada da metodologia da
experimentao na rea de Engenharia de Software.
A figura 3 demonstra as principais fases de um experimento em engenharia de software:
Figura 3.5.2- Fases de um experimento.Fonte: (Travassos, 2002)
4. EMPACOTAMENTO
O foco principal a repetio do experimento. O aumento das repeties traz o
aumento do aprendizado dos conceitos investigados. Com as repeties os pesquisadores
adquirem o conhecimento adicional a respeito dos conceitos estudados, e recebem os
resultados que so iguais ou diferentes dos resultados do experimento original (Travassos,
2002). Aspectos importantes a considerar:
A comunidade do processo de experimento.
A organizao do experimento.
Os artefatos do experimento.
-
7/29/2019 Engenharia de Software Experimental
30/64
30
Os resultados do experimento.
O empacotamento padronizado dos dados experimentais pode servir como base para a
criao das bibliotecas de experimentao (Travassos, 2002). Para uma organizao concreta,
banco de dados com a informao emprica organizada dessa forma pode abrir a possibilidade
de armazenar os diferentes artefatos desde as idias e as hipteses at os resultados e
experincias finais dos projetos realizados. Com certeza vai prover o reuso e ajudar as
possveis descobertas em estudos futuros, providenciar os meios para a classificao dos
dados experimentais e a criao dos relatrios detalhados com os resultados confiveis.
Segundo Basili (1997), a respeito do estado atual empacotamento de experimentos indica a
ausncia de normas internacionais aprovadas. Por um lado, isso estimula tanto a academia
quanto pesquisadores a evoluir o cenrio da Engenharia de Software Experimental.
Depurao
Segundo Kosciansk (2007), depuradores so ferramentas que prestam auxlio
diretamente observao do comportamento do cdigo. Atualmente esto integradas aos
ambientes de desenvolvimento e oferecem um grande conforto de uso, pois permitem
codificar e testar o programa em um nico ambiente.
O primeiro uso comum dos depuradores a realizao de rastreamento (tracing) ou
execuo passo a passo, permitindo dessa forma, monitorar a execuo do programa a cadainstruo e acompanhar a evoluo do contedo da memria. Os depuradores atuais permitem
inclusive a modificao do contedo de variveis durante a execuo do cdigo. Tais
recursos oferecem condies para que o programador consiga avaliar hipteses e isolar
possveis causas de uma falha difcil de ser identificada (Kosciansk, 2007).
Devido freqncia de uso de depuradores as CPUs incorporaram recursos
especficos para essa finalidade, tais como a utilizao de registradores especficos para essa
finalidade (Pressman, 1995).A depurao (debugging) ocorre em conseqncia de testes bem sucedidos, ou seja,
quando um caso de teste revela um erro, a depurao o processo que resulta na remoo do
erro (Pressman, 1995). As tcnicas dependero muito de cada situao particular: ambiente de
hardware e software; sistema operacional; linguagem de programao; outros recursos; e
algoritmos.
O processo eficiente de depurao exige ao intelectual, j que se trata de atividade
pessoal. Requer tambm planejamento adequado, documentao e estrutura modular; atravs
do uso de compilao, relatrio de erro e posies de memria. Exige ainda a aplicao de
lgica coerente(Agans, 2001).
-
7/29/2019 Engenharia de Software Experimental
31/64
31
Segundo Rezende (2006), depurao uma tarefa difcil e trabalhosa, e a dificuldade
varia de acordo com o ambiente de desenvolvimento, o que inclui a linguagem de
programao e as ferramentas disponveis, como depuradores.
Depuradores so ferramentas que permitem ao programador monitorar a execuo de
um programa, par-lo e reinici-lo, ativar pontos de parada e alterar reas de memria.
Linguagens de alto nvel tornam a depurao mais fcil, pois fornecem mais ferramentas para
identificar erros, como o tratamento de excees. Em linguagens de baixo nvel, erros de
cdigo podem causar problemas difceis de serem identificados.
Segundo Parr (2004), um dos fatores mais preocupantes dentro do processo de
identificao de falhas em cdigos de softwares que muitos estudantes no demonstram
atitude diante de problemas inesperados. A idia de Parr (2004) fornecer uma abordagemclara para que os programadores possam seguir, ou pelo menos um ponto de partida,
sugerindo:
1. Reprodutibilidade: fundamental identificar uma maneira confivel para reproduzir o
erro, o que, por si s, muitas vezes garante ir direto ao problema atravs de raciocnio
dedutivo. O bug pode acontecer justamente em uma circunstncia, que s pode
acontecer em um lugar no cdigo. Geralmente um bugque aparece aleatoriamente
essencialmente insolvel. Precisa-se de uma garantia de causa e efeito para fazerinferncias sobre as mudanas introduzidas. Uma alterao no cdigo que corrige o
problema pode ou no realmente corrigi-lo, pois o problema aleatoriamente aparece e
desaparece.
2. Reduo: Reduzir o problema sua essncia. Determinar o menor contexto, tornando
os dados ou o caminho mais simples para a identificao do bug e permitindo a
deduo ou localizao dos problemas. Um grande conjunto de dados introduz uma
grande margem de possibilidades que camuflam a causa essencial dos problemas.3. Deduo: Corresponde tentativa de reduzir o mbito de possibilidades de formao
de erros eliminando hipteses. Num certo sentido, esse processo similar ao que
seguido por fsicos experimentais, que tentam explicar os fenmenos naturais com
uma teoria ou uma equao. Para apoiar as suas reivindicaes, eles cuidadosamente
projetam experincias que, se bem sucedidas, tem apenas uma explicao provvel -
ou seja, a sua teoria. Outros fsicos tentam reproduzir os resultados para confirmar ou
refutar uma hiptese.
4. Experimentao: Psiclogos estudam a mente humana testando-a em diferentes
situaes com diferentes estmulos. Eles usam testes para apoiar as suas hipteses
-
7/29/2019 Engenharia de Software Experimental
32/64
32
sobre como os crebros trabalham. Da mesma forma, possvel alterar as condies
dos testes para confirmar se o problema desaparece ou pelo menos identific-lo.
Atravs da formulao de hipteses, aplica-se a lgica e o raciocnio dedutivo e, em
seguida, filtra-se os resultados atravs da experimentao e da observao.
5. Experincia: A experincia insubstituvel. A experincia ajuda no processo de
depurao de duas maneiras: primeiro, permitindo o aprimoramento da habilidade para
executar os quatro elementos anteriores; e segundo, possibilitando analogias com
problemas semelhantes e j vivenciados. A contratao da experincia de outros
desenvolvedores tambm importante. Pesquisas na Web e interao com outros
desenvolvedores podem poupar uma enorme quantidade de esforo por alavancar
outros conhecimentos.6. Tenacidade: A persistncia deve ser sempre mantida, no importa quanto tempo seja
necessrio para se identificar e corrigir um problema. Isso contribui para a obteno de
mais confiana por parte do programador, medida que o mesmo consegue resolver
um problema.
Na prtica, estes seis elementos so usados em combinao e sua seqncia pode variar,
embora com predominncia inicialmente sejam seguidos os pontos 1 e 2.
5. LINGUAGEM C
5.1. Histrico
Na dcada de 70, a linguagem C foi inventada no centro de pesquisas da Bell
Laboratories por Dennis Ritchie, que a implementou utilizando o sistema operacional UNIXem um DEC PDP-11. A linguagem C descendente da linguagem B, desenvolvida por Ken
Thompson (KERNIGHAN, 1986).
Sua primeira utilizao importante foi a regerao do Sistema Operacional UNIX, que
at ento era escrito em Assembly. Em meados de 1970, com a adoo do UNIX nas
universidades, a linguagem ganhou popularidade, tal que, por volta de 1980, j existiam vrias
verses de compiladores C oferecidas por vrias empresas, compatveis com vrios outros
sistemas operacionais (KERNIGHAN, 1986).
-
7/29/2019 Engenharia de Software Experimental
33/64
33
A linguagem C uma linguagem de propsito geral, sendo adequada programao
estruturada, contudo, mais utilizada para a construo de compiladores, analisadores lxicos,
bancos de dados e editores de texto.
5.2. Por que estudar a linguagem C
Segundo Cocian (2006), uma das principais razes para se utilizar a linguagem de
programao C possibilidade da sua aplicao a um grande nmero de problemas
computacionais. Alm disso, a linguagem apresenta o suporte de compiladores compatveis
com diversas arquiteturas. Outro aspecto bastante relevante a caracterstica apresentada pela
linguagem que atende a necessidades inerentes tanto a linguagens de programao de altonvel quanto a linguagens de programao de baixo nvel, oferecendo maior controle do
programador sobre o hardware e o software.
Algumas caractersticas que contriburam para a popularidade da linguagem C (Cocian,
2006):
1. A portabilidade do compilador
2. O conceito de bibliotecas padronizadas3. A quantidade e variedade de operadores poderosos
4. Gerao de cdigo eficiente
5. Confiabilidade
6. Regularidade
7. A sintaxe elegante
8. Facilidade de uso
Projetada inicialmente para a construo de sistemas operacionais, a linguagem C
bastante utilizada para implementar (Cocian, 2006):
1. Software bsico.
2. Programas executivos e aplicativos em CLPs. (computadores dedicados, utilizados
para a monitorao e controle de processos em sistemas automticos de manufatura).
3. Firmware.
4. Controle eletrnico automtico em automveis.
5. Instrumentos inteligentes.
6. Gateways.
-
7/29/2019 Engenharia de Software Experimental
34/64
34
7. Modems.
8. Perifricos em geral.
9. Interfaces Homem-Mquina.
10. Sistemas operacionais.
11. Drivers de comunicao e de dispositivos.
12. Vrus e antivrus.
13. Processamento digital de sinais.
14. Processamento de imagens.
15. Inteligncia artificial e redes neurais.
16. Modelagem numrica de sistemas fsicos para simulao de efeitos dinmicos em
eletromagnetismo, fenmenos de transporte e termodinmica.
6. APLICAO DO EXPERIMENTO
6.1. Definio dos objetivos
6.1.1. Objetivo globalVerificar a eficcia da utilizao de ferramentas de depurao no
aprendizado de lgica computacional em uma populao de estudantes de
ensino superior, atravs de um experimento de software.
6.1.2. Objetivo da medio
Baseado no contedo programtico do ensino da disciplina Linguagem
de Programao I, identificar:
Quais so as tcnicas oferecidas pela disciplina Linguagem de
Programao I que capacitam os alunos na identificao e
resoluo de problemas em cdigos da linguagem de
programao C;
Quais so as tcnicas oferecidas pela disciplina Linguagem de
Programao I que precisam de um melhor detalhamento;
-
7/29/2019 Engenharia de Software Experimental
35/64
35
Quais so as tcnicas oferecidas pela disciplina Linguagem de
Programao I que apresentam detalhamento excessivo;
Mensurar a eficcia da utilizao de ferramentas de depurao no
processo de desenvolvimento de software;
6.1.3. Objetivo do estudo
Analisar do ponto de vista do orientador, a aplicao de ferramentas de
depurao em ambiente de desenvolvimento da linguagem de
programao C, com o propsito de avaliar a sua eficcia durante o
aprendizado de lgica computacional por parte de estudantes de cursos
de bacharelado de Engenharia Qumica, Engenharia Eltrica, Engenharia
Civil, Engenharia Mecatrnica, Engenharia Mecnica, Engenharia da
Produo e Cincia da Computao da Universidade Salvador
(UNIFACS).
6.2. Questes
Q1: Existem competncias inerentes a linguagem de programao que no fazem parte
do contedo da disciplina Linguagem de Programao I?
Mtrica: A lista de competncias de Linguagem de programao que no fazem parte
do contedo da disciplina Linguagem de Programao I. A nica competncia que no
faz parte do contedo da disciplina a utilizao de tcnicas ou ferramentas de
depurao.
Q2: Qual a capacidade de identificar abordagens nas reas de Engenharia ouComputao que se beneficiem com a utilizao de tcnicas que visam maximizar a
qualidade dos softwares?
Mtrica: Anlise estatstica do questionrio de competncias aplicado sobre a amostra
populacional utilizada no experimento, avaliando a capacidade desta em identificar
abordagens nas reas de Engenharia ou Computao que se beneficiem com a
utilizao de tcnicas que visam maximizar a qualidade dos softwares.
-
7/29/2019 Engenharia de Software Experimental
36/64
36
6.3. Planejamento
6.3.1. Definio das hipteses
Hiptese nula (H0): O desenvolvimento de cdigos computacionais com a utilizao
de tcnicas ou ferramentas de depurao durante o processo de aprendizado da disciplina
Linguagem de Programao I apresenta resultados similares ao desenvolvimento que no se
utiliza de tais tcnicas ou ferramentas.
Hiptese alternativa (H1): O desenvolvimento de cdigos computacionais com a
utilizao de tcnicas ou ferramentas de depurao durante o processo de aprendizado da
disciplina Linguagem de Programao I apresenta melhores resultados frente aodesenvolvimento que no se utiliza de tais tcnicas ou ferramentas.
Hiptese alternativa (H2): O desenvolvimento de cdigos computacionais com a
utilizao de tcnicas ou ferramentas de depurao durante o processo de aprendizado da
disciplina Linguagem de Programao I apresenta resultados inferiores aos apresentados pelo
desenvolvimento que no se utiliza de tais tcnicas ou ferramentas.
6.3.2. Descrio da instrumentao
Nessa etapa so preparados os questionrios, cdigos na Linguagem de Programao
C, material de treinamento da populao e o ambiente de laboratrio para a realizao do
experimento. So preparados trs questionrios para coleta de informaes:
Questionrio 1 Perfil do participante: 05 minutos de aplicao no incio da
abordagem.
Questionrio 2 Competncias: 10 minutos de aplicao no incio da abordagem.Questionrio 3 Avaliao de atividades: 05 minutos de aplicao no final da
abordagem.
Critrios importantes que devem ser considerados e utilizados para a construo de
questionrios, segundo Louis M Rea (2002):
Clareza do questionrio: As perguntas so compreendidas pelos entrevistados? Os
pesquisadores podero constatar a existncia de pequenas ambigidades que confundem os
entrevistados. As opes de resposta so claras o suficiente para extrair as informaes
desejadas?
-
7/29/2019 Engenharia de Software Experimental
37/64
37
Abrangncia do questionrio: As perguntas e opes de resposta so abrangentes o
suficiente para cobrir uma gama razoavelmente completa de alternativas? Os pesquisadores
podero constatar que certas perguntas so irrelevantes, incompletas, redundantes e que elas
no geram todas as informaes importantes exigidas para o estudo.
Aceitabilidade do questionrio: Problemas em potencial, como extenso excessiva ou
perguntas que possam ser consideradas invasivas da privacidade dos entrevistados, assim
como as que possam resumir padres ticos ou morais, devem ser identificadas e corrigidas
pelos pesquisadores.
Para avaliao das competncias oferecidas pela disciplina Linguagem de
Programao I foram apresentadas as seguintes opes:
Figura 6.3.2 Legenda do questionrio de competncias.
Cinco cdigos foram preparados em Linguagem de Programao C:Id. Nome Descrio
P1 OrdenaoOrganiza em ordem crescente 03 nmeros inteiros e exibe
na tela.
P2 Ordenao com vetorOrganiza em ordem crescente 10 nmeros inteiros com a
utilizao de vetor e exibe na tela.
P3 FatorialExecuta o clculo de fatorial a partir de um nmero inteiro
passado como parmetro e exibe na tela.
P4 Fibonacci Executa o clculo da srie de Fibonacci a partir de umnmero inteiro passado como parmetro.
Tabela 6.3.2 - Relao de cdigos do experimento
O quinto programa, chamado Calcula Mdia, calcula a mdia aritmtica de dez
nmeros passados como parmetro para um vetor e foi utilizado para o treinamento dos
participantes nas tcnicas de depurao:
Execuo passo a passo (step in, step through, run till return)
Breakpoints (linha, funo, condio)
Impresso de valores de variveis
-
7/29/2019 Engenharia de Software Experimental
38/64
38
Acompanhamento de variveis
Os programas P1, P2, P3 e P4 foram utilizados pelos participantes na aplicao do
experimento. Para a seleo dos programas foram adotados critrios de acordo com o
semestre letivo, alm do tempo de aplicao do experimento e a disponibilidade de
laboratrio de micro-informtica. Em mdia 01 (uma) falha foi inserida em cada um dos
cdigos, constituindo assim erros de lgica e erros sintticos. Os defeitos inseridos
correspondem a falhas de inicializao de variveis, clculos, fluxos de controle e interface.
Aps a insero dos defeitos os cdigos foram compilados utilizando o ambiente de
desenvolvimento Dev-C++, verso 4.9.9.2 para plataforma Windows XP Professional.
Antes de iniciar a aplicao do experimento, um treinamento com durao de 01 hora
foi apresentado aos participantes. O treinamento foi composto por uma apresentao terica
sobre mecanismos de depurao, tcnicas, ferramentas e exemplos. A parte prtica do
treinamento durou 35 minutos, sendo composta por uma apresentao interativa com a
ferramenta de depurao integrada no ambiente Dev-C++. Logo em seguida, 15 minutos
foram reservados para o esclarecimento de dvidas gerais sobre o processo.
O experimento foi aplicado em duas etapas e a populao utilizada foi dividida em
dois grupos, cada um formado por 12 participantes. Cada grupo contou com 05 minutos de
explicao prvia sobre as atividades que seriam desenvolvidas e 30 minutos para odesenvolvimento de cada fase. Na primeira cada um dos grupos foi avaliado em relao a 02
(dois) programas: P1 e P3, sendo que um grupo se utilizou de tcnicas e ferramentas de
depurao enquanto que o outro grupo utilizou-se de tcnicas convencionais de programao.
Na segunda fase os grupos foram avaliados em relao aos outros 02 (dois) programas: P2 e
P4, entretanto, a abordagem com ou sem utilizao de tcnicas de depurao foi
intencionalmente invertida.
6.4. Seleo do contexto
O contexto pode ser caracterizado conforme 4 (quatro) dimenses:
O processo: on-line /off-line;
Os participantes: alunos / professores;
Realidade: problema real / modelado;
Generalidade: especifico /geral;
-
7/29/2019 Engenharia de Software Experimental
39/64
39
O estudo prope o processo off-line por que os alunos no esto sendo entrevistado
durante todo o tempo do curso, mas em um certo instante. Os participantes do
experimento so os alunos que esto cursando a disciplina Linguagem de Programao I.
O estudo modelado porque as competncias dos alunos no so caracterizadas durante a
resoluo do problema real, mas utilizando as notas subjetivas. Os cdigos gerados e o
tempo de realizao das tarefas so analisados e comparados com um gabarito j
existente, ento, o contexto possui carter especifico.
6.5. Seleo dos indivduos
Para o estudo foram propostos como participantes estudantes de cursos de bachareladode Engenharia Qumica, Engenharia Eltrica, Engenharia Civil, Engenharia Mecatrnica,
Engenharia Mecnica, Engenharia da Produo e Cincia da Computao da Universidade
Salvador (UNIFACS). Assume-se que esses indivduos esto disponveis para o estudo e a
maioria deles desenvolve algoritmos em linguagem de programao C. O experimento
selecionou uma populao de 24 (vinte e quatro) estudantes.
6.6. Variveis
Variveis independentes:
Programas selecionados.
A complexidade dos cdigos em linguagem de programao C.
Tcnica de anlise de erros com depurao.
Tcnica convencional sem o mecanismo de depurao.
Competncias recebidas na disciplina Linguagem de Programao I.
Quantidade de defeitos em cada cdigo.
Variveis dependentes:
Margem de acerto sobre os programas.
Tempo de execuo em cada tarefa executada.
Cdigo executvel gerado aps compilao.
6.7. Validade
-
7/29/2019 Engenharia de Software Experimental
40/64
40
Validade interna: Para o estudo se prope a utilizao de alunos da disciplina de
graduao Linguagem de Programao I, que geralmente costumam desenvolver algoritmos
em linguagem de programao C. Assim, assume-se que eles so representativos para a
populao de estudo com ferramentas de depurao sobre tal linguagem. Como risco
validade interna do experimento destaca-se a diversidade dos cursos de graduao frente ao
nmero representativo de participantes do experimento.
Validade externa: O experimento foi aplicado no laboratrio de microinformtica da
Universidade Salvador, campus Federao, onde foram identificados problemas de infra-
estrutura de rede, problemas de hardware e problemas de software durante a experimentao.
Os problemas foram contornados, pois, existiam computadores reservas. O tempo para
treinamento da populao demonstrou-se insuficiente, pois, um expressivo nmero de dvidasfoi gerado durante a experimentao.
Validade de construo: Esse estudo est caracterizado pela conformidade das
competncias listadas pela grade curricular da Universidade do Salvador com as habilidades
exigidas para o desenvolvimento de algoritmos em linguagem C. A verificao da hiptese
ser feita atravs de simples confirmao de presena ou no de competncias nas listas que
representam as variveis independentes.
Validade de concluso: Alguns fatores representam ameaa validade do estudoproposto. O tamanho da amostra populacional um deles. Alm disso, o curto perodo de
tempo destinado preparao do experimento. Existe a conscincia dos riscos inerentes
validao do experimento, porm, considera-se os resultados apenas como preliminares.
-
7/29/2019 Engenharia de Software Experimental
41/64
41
7. OPERAO
7.1. Questionrio do perfil do participante
Marque um X sobre a opo que representa o seu perfil.
Formao
Ensino mdio cursado em instituio:
o Particular
o Pblica
o Particular e Pblica
Qual Curso de Graduao voc esta cursando?
o Engenharia Qumica
o Engenharia Eltrica
o Engenharia Civil
o Engenharia Mecatrnica
o Engenharia Mecnica
o Engenharia de Produo
o Cincia da Computao
Experincia
Tempo de experincia com lgica de programao:
oNunca teve experincia
o At seis meses
o Entre seis meses e dois anos
o Entre dois e quatro anos
o Entre quatro e seis anos
o Acima de seis anos
-
7/29/2019 Engenharia de Software Experimental
42/64
42
Como voc classifica o seu nvel de conhecimento em lgica computacional?
o Baixo
o Mdio
o Alto
Voc j utilizou alguma ferramenta de depurao durante o aprendizado de lgica
computacional?
o Sim
oNo
Voc utiliza a Linguagem de programao C profissionalmente?
o Sim
oNo
Voc tem experincia com outra linguagem de programao?
o Sim
oNo
A disciplina cursada pr-requisito de outra disciplina?
o Sim
oNo
Voc vai dar continuidade ao estudo de programao computacional?
o Sim
oNo
Voc enxerga aplicao prtica da linguagem de programao em seu domnio de
aplicao profissional?
o Sim
-
7/29/2019 Engenharia de Software Experimental
43/64
43
oNo
7.2. Questionrio de competncias
-
7/29/2019 Engenharia de Software Experimental
44/64
44
Tabela 7.2 - Questionrio de competncias
-
7/29/2019 Engenharia de Software Experimental
45/64
45
7.3. Questionrio de avaliao de atividades
Como voc avalia a atividade realizada:
Os cdigos apresentados foram escritos de forma clara?
o Sim
oNo
Como voc avalia o nvel de dificuldade dos testes?
o Muito fcil
o Fcil
o Mdio
o Difcil
o Extremamente difcil
O tempo disponibilizado para os testes foi:
o Insuficiente
o Suficiente
Quantos testes voc conseguiu resolver?
oNenhum
o 1
o 2
o 3
o 4
-
7/29/2019 Engenharia de Software Experimental
46/64
46
7.4. Perfil dos participantes
Com a tabulao dos dados obtidos atravs do questionrio de perfil de participantes
possvel extrair informaes inerentes formao acadmica do ensino mdio, do curso de
ensino superior em prtica, alm de informaes referentes experincia profissional da
populao consultada. A anlise dessas informaes permite aos patrocinadores da
experimentao identificar caractersticas comuns da populao e oferece um melhor
entendimento sobre os resultados dos testes.
Tabela 7.4 - Tabela de perfil de participantes
-
7/29/2019 Engenharia de Software Experimental
47/64
47
Quanto formao acadmica:
Os grficos 7.1 e 7.2 apresentam de uma forma bastante esclarecedora o perfil
acadmico da populao. A grande maioria dos participantes cursou ensino mdio em
instituies particulares e dentro dos cursos de graduao os mais representativos para o
experimento so os de Engenharia Qumica e Engenharia Mecnica.
Perfil dos participantes:
Formao - Ensino Mdio
20; 83%
4; 17% 0; 0%
Particular
Pblica
Particular e Pblica
7
5
0
4
7
1
00
2
4
6
8
10
Perfil dos participantes:
Formao - Cursos
Engenharia Qumica
Engenharia Eltrica
Engenharia Civil
Engenharia Mecatrnica
Engenharia Mecnica
Engenharia de Produo
Cincia da Computao
Grfico 7.1 Perfil acadmico (ensino mdio) Grfico 7.2 Perfil acadmico (graduao)
Quanto experincia (tempo e nvel de conhecimento em lgica de programao):
Ainda de acordo com os dados obtidos atravs do questionrio de perfil de
participantes, o nvel de conhecimento tcnico informado sobre lgica de programao
baixo. O tempo de experincia com lgica de programao dos participantes em mdia de
seis meses a dois anos, conforme apresentado pelo grfico 7.3.
0
0,5
1
1,5
2
2,5
3
1 3 5 7 9 11 13 15 17 19 21 23
Tempo e nvel de experincia dos participantes
Tempo
Nvel
Grfico 7.3 Tempo e nvel de experincia dos participantes.
-
7/29/2019 Engenharia de Software Experimental
48/64
48
Dentre os 24 alunos participantes do experimento apenas 02 j possuam experincia prvia
com tcnicas ou ferramentas de depurao durante o processo de desenvolvimento de cdigos
computacionais, representando apenas 8% da populao conforme grfico 7.4.
Experincia prvia com tcnicas ou ferramentas
de depurao
2; 8%
22; 92%Experincia prvia
Sem experincia
Grfico 7.4 Experincia prvia dos participantes.
8. ANLISE E INTERPRETAO DOS RESULTADOS
Aps a coleta de dados realizada em seguida aplicao do experimento, os mesmos
foram tabulados e a partir da, iniciou-se a extrao de informaes estatsticas. A anlise
estatstica compe o processo de pesquisa por amostragem. O objetivo da amostragem
permitir a generalizao de estudos sobre uma populao baseada em um subconjunto dessa
mesma populao. Segundo Alexandre do Esprito Santo (1992), a Estatstica Descritiva
refere-se a um conjunto de conceitos e mtodos usados na organizao, resumo, tabulao,
representao e descrio de uma coleo de dados, objetivando fornecer uma representao
dos dados que descrevem em forma numrica, grfica ou tabular os resultados da pesquisa.
Analisando os dados obtidos atravs do questionrio de competncias e convertidosem grfico, comprova-se que as principais competncias exigidas para a atividade de
programao computacional esto presentes nos cursos de graduao selecionados para o
experimento. A nica exceo refere-se a tcnicas ou ferramentas de depurao, o que pode
ser evidenciado atravs do grfico 8.1.
-
7/29/2019 Engenharia de Software Experimental
49/64
49
Grfico 8.1 Competncias oferecidas pelos cursos de graduao.
Aps a aplicao dos testes foi possvel realizar a comparao de resultados obtidos
pelos alunos que se utilizaram de tcnicas ou ferramentas de depurao e aqueles que no se
utilizaram desses recursos. Abaixo segue o comparativo entre cada um dos testes realizados,
considerando o desempenho individual e tambm o desempenho por grupo. A anlise
estatstica utilizada prope a verificao dos dados atravs de freqncia, moda e mediana.
-
7/29/2019 Engenharia de Software Experimental
50/64
50
Grfico 8.2 Comparativo entre tcnicas atravs de erros e acertos.
Atravs das informaes representadas no grfico 8.2 verifica-se que nos testes com
programas de Fatorial e Ordenao os resultados obtidos com ou sem uso de tcnicas de
depurao so bastante semelhantes.
-
7/29/2019 Engenharia de Software Experimental
51/64
51
O teste efetuado com o programa de ordenao com vetor apresentou um empate
tcnico entre os resultados, onde em cada grupo 50% dos participantes obteve sucesso. Vide
grfico 8.3.
Grfico 8.3 Comparativo entre tcnicas atravs de erros e acertos.
-
7/29/2019 Engenharia de Software Experimental
52/64
52
Uma das principais preocupaes durante a fase de preparao do experimento foi o
nvel de dificuldade que seria proposto nos testes. A maioria dos participantes classificou o
nvel de dificuldade como mdio. Isso pode ser observado no grfico 8.4, que relaciona a
dificuldade das tarefas com o tempo disponibilizado para execuo.
Avaliao individual de dificuldade x moda ref. dificuldade x
avaliao de tempo disponvel
0
1
2
3
4
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Dificuldade
Tempo
Moda ref. dificuldade
Grfico 8.4 Relao: Dificuldade x Tempo
A resoluo das tarefas propostas foi pouco significativa em relao ao tempodisponibilizado. Apenas dois dos participantes no conseguiram concluir pelo menos uma das
atividades. O grfico 8.5 representa a relao entre o nvel de dificuldade e a resoluo de
atividades, embora esta no tenha carter de acerto nessa fase dos testes propostos.
Relao Dificuldade x Resoluo
0
1
2
3
4
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Dificuldade
Resoluo
Grfico 8.5 Relao: Dificuldade x Resoluo
-
7/29/2019 Engenharia de Software Experimental
53/64
53
A grande maioria da populao participante dos testes classificou como suficiente o
tempo disponibilizado para a aplicao do experimento. Pode-se concluir que a clareza dos
cdigos, bem como o nvel de dificuldade proposto, contriburam para tal avaliao, o que
fica evidenciado atravs da tabela 4.1 Avaliao de atividades e do grfico 4.6 Clareza dos
cdigos propostos.
Tabela 8.1 Avaliao de atividades
Clareza dos cdigos: Os cdigos apresentados
foram escritos de forma clara?
22; 92%
2; 8%
Sim
No
Grfico 8.6 Clareza dos cdigos propostos.
-
7/29/2019 Engenharia de Software Experimental
54/64
54
9. VERIFICAO DAS HIPTESES
Pelo curto perodo de tempo oferecido ao experimento, considerando o treinamento e
a aplicao dos testes, os resultados obtidos matematicamente so bastante semelhantes.
Dentre os quatro testes, os testes de Fatorial e de Fibonacci apresentaram, ainda que
discretos melhores nveis de acerto com a utilizao de tcnicas ou ferramentas de
depurao. O teste de ordenao com vetor apresentou resultados iguais para ambas as
abordagens. J o teste de ordenao simples apresentou melhor resultado sem a utilizao
de tcnicas de depurao. Isso refora a idia de aceitao da hiptese nula, bem como,
sugere a repetio do experimento com uma populao maior.
-
7/29/2019 Engenharia de Software Experimental
55/64
55
10. CONCLUSO
O processo experimental em Engenharia de Software oferece discusso sobre os
conceitos bsicos de estudos na rea de Engenharia de Software. A experimentao oferece
um modelo sistemtico, disciplinado e computvel para avaliao das atividades de sistemas
de informao. Novas propostas e metodologias no deveriam ser apenas impostas,
publicadas ou colocadas a venda sem ao menos comparadas com as existentes.
Com o intuito de avaliar a necessidade da utilizao de ferramentas de depurao no
ciclo de vida acadmico, um experimento foi conduzido. Neste experimento, buscou-se o
estado da utilizao de tcnicas de debug no ensino de Linguagem de Computao em umambiente acadmico e foi concludo atravs de estudos estatsticos que na amostra
populacional apenas 04 (quatro) participantes conheciam tais mtodos.
O experimento foi realizado em 01 (um) dia apenas para no colocar em risco
princpios de validao. Essa metodologia levou a concluso de que os estudos experimentais
variam de caso a caso e nem sempre somente 01 dia para todo experimento a melhor
abordagem. O treinamento dos participantes antes da fase de execuo num ambiente semi-
controlado tem que ser bastante planejado sendo necessrio quantificar a populao paracalcular o nmero de executores do experimento, obtendo ento um melhor aproveitamento
do mesmo.
Uma das evidncias encontradas neste estudo foi que a amostra populacional no foi
suficiente para obter concluses mais exatas. A necessidade de um estudo aprofundado em
estatstica descritiva se torna evidente ao longo do estudo. Testes mais sofisticados com
estatstica descritiva sobre os dados coletados seriam necessrio para evidenciar resultados
com menor margem de erro. Da mesma forma algumas caractersticas foram evidncias comoo no conhecimento ou conhecimento parcial das tcnicas de depurao de um grande
percentual dentro da amostra experimentada, como demonstra o Grfico 4.1.
Sabendo que o processo experimental prova certo conhecimento sobre um fenmeno,
sugere-se que o processo de aquisio deste conhecimento seja iterativo e incremental por
natureza. A fase inicial de execuo deste experimento tende a ser menos precisa se
comparada a futuros refinamentos. Embora a repetio externa seja fundamental para estudos
empricos, o processo de aprendizagem de um experimento de alta complexidade.
-
7/29/2019 Engenharia de Software Experimental
56/64
56
Experimentalistas devem executar seus experimentos, incrementando a
complexidade a cada ciclo e verificando os resultados obtidos at que concluses vlidas
possam ser extradas. Este processo iterativo necessita de um esforo maior, mas justifica-se,
pois, a obteno de resultados vlidos e generalizveis e uma primeira tentativa quase
impossvel.
Para dar suporte ao processo iterativo e incremental de experimentos, sugerem-se a
criao de frameworks para facilitar sua adoo. O reuso de um universo de mtricas
previamente validadas pode minimizar o esforo em torno da execuo de experimentos.
Alm disso, frameworks podem fornecer boas diretrizes para aqueles que desejam realizar
experimentos em diferentes reas do conhecimento. De maneira correlata a frameworks
utilizados em desenvolvimento de software, frameworks para experimentao devem fornecer
guias para o processo experimental e mtricas para serem customizados dependendo do
estudo em questo.
-
7/29/2019 Engenharia de Software Experimental
57/64
57
REFERNCIAS BIBLIOGRFICAS
A.A. PORTER and P.M. Johnson, Assessing Software Review Meetings: Results of aComparative Analysis of Two Experimental Studies, IEEE Trans. Software Eng., vol. 23,no. 3, pp. 129-145, Mar.1997.
A.A. PORTER, L.G. Votta, and V.R. Basili, Comparing Detection Methods for SoftwareRequirements Inspections: A Replicated Experiment, IEEE Trans. Software Eng., vol. 21,no. 6, pp. 563-575, Junho 1995.
A.M. PORTER, Misuse of Correlation and Regression in Three Medical Journals, J.Royal Soc. Medicine, vol. 92, no. 3, pp. 123-128, 1999.
B.A. KITCHENHAM, Evaluating Software Engineering Methods and Tools, SIGSoftSoftware Eng. Notes,ACM Press, New York, 1996, pp. 11-15.
BASILI, V.R., CALDIERA, G. and ROMBACH, H.D. (1994) The Goal Question MetricApproach; Encyclopedia of Software Engineering. New York: Wiley-Interscience.
BASILI, V.R., SHULL, F., Lanubile, F. (1997). Building Knowledge through Familiesof Experiments, In: IEEE Trans. on Software Engineering, vol. 25, No. 4.
COSAIN, C. E.(2006) Manual Da Linguagem C. Editora ULBRA.
M.V. Zelkowitz and D. Wallace, Experimental Validation in Software Engineering,Information and Software Technology, Vol. 39, 1997, pp. 735-743.
TRAVASSOS, G.H. and BARROS, M.O. (2003). Contributions of In Virtuo and In Silico
Experiments for the Future of Empirical Studies in Software Engineering, Workshop
Series on Empirical Software Engineering, WSESE, ESERNET, ISBN 3-8167-6418-5.
-
7/29/2019 Engenharia de Software Experimental
58/64
58
TRAVASSOS, G.H.; SHULL, F.; FREDERICKS, M.; BASILI, V. R. (1999) DetectingDefects in Object Oriented Designs: Using Reading Techniques to increase SoftwareQuality. ACM SIGPLAN Notices, USA, v. 34, n. 10, p. 47-56.
TRAVASSOS, G.H.; SHULL, F.; CARVER, J. (2001). Working with UML: A software
design process based on inspections for the unified modeling language.Advances inComputers, San Diego, v. 54, n. 1, p. 35-97.
TRAVASSOS, G. (2002). Introduo engenharia de software experimental. Relatrio
Tcnico RT-ES.
TRAVASSOS, G. H., SANTOS, P. S. M., Mian, P. G., Dias Neto A. C., Biolchini, J., AEnvironment to Support Large Scale Experimentation in Software Engineering, 13thIEEE International Conference on Engineering of Complex Computer Systems, Abril,2008.
SEAMAN, C.B. (1999) Qualitative Methods in Empirical Studies of SoftwareEngineering, IEEE Transactions on Software Engineering, Vol 25, no. 4, Julho.
WOHLIN, C., Runeson, P., Hst, M., Ohlsson, M., Regnell, B., Wessln, A.,Experimentation in Software Engineering An Introduction. Kluwer AcademicPublishers. 2000.
WOHLIN, C., Runeson, P., Host, M., Ohlsson, M. C., Regnell, B., eWesslen, A. (2000).Experimentation in software engineering: an introduction. Kluwer Academic Publishers.
ZELKOWITZ, M.V, Wallace, D.R. (1998). Experimental Models for ValidatingTechnology, In: IEEE Computer, 31 (5), p. 23-31.
REA, L. M., Rea, , M. R. A., P. (2002). Metodologia de pesquisa: do planejamento execuo, Colaborador Nivaldo M. Jr, Otto N. Publicado por Cengage Learning Editores.
-
7/29/2019 Engenharia de Software Experimental
59/64
59
SANTO, E. (1992). Delineamentos de metodologia cientfica. Publicado por EdicoesLoyola.
TICHY, F. Should ComputerScientists Experiment More? (1998), In:IEEE Computer.
KERNIGHAN, Brian W. e RITCH, Dennis M., C: A Linguagem de Programao, Rio deJaneiro, Campus, 1986.
PARR, T. IBM WebSphere Developer Technical Journal. Disponivel na internet
http://www-128.ibm.com/developerworks/web/library/wa-debug.html?ca=dgr-xw03Dbug,
Acessado em 20.11.08
http://www-128.ibm.com/developerworks/web/library/wa-debug.html?ca=dgr-xw03Dbughttp://www-128.ibm.com/developerworks/web/library/wa-debug.html?ca=dgr-xw03Dbughttp://www-128.ibm.com/developerworks/web/library/wa-debug.html?ca=dgr-xw03Dbug -
7/29/2019 Engenharia de Software Experimental
60/64
60
ANEXO CDIGOS EM LINGUAGEM DE PROGRAMAO C
Programa utilizado para o clculo da mdia de 10 nmeros inteiros passados como parmetro.Foi utilizado como exemplo na demonstrao sobre ferramentas e tcnicas de depurao
realizada antes da aplicao do experimento.
1://Calcula Mdia2:3: # include 4: # include 5:6: int main(void)7: {8: int Vetor[10],i;9: float Media = 0;10:11: for (i=0 ; i
-
7/29/2019 Engenharia de Software Experimental
61/64
61
Programa 1: Classifica em ordem crescente 03 nmeros inteiros passados como parmetro eexibe na tela.
1:// Ordenao
2:3: #include 4: #include 5:6: int main()7: {8: int A, B, C, AUX;9: printf("Informe o valor de A: ");10: scanf("%d",&A);11: printf("Informe o valor de B: ");12: scanf("%d",&B);
13: printf("Informe o valor de C: ");14: scanf("%d",C);15: if(A>C){16: AUX=A;17: A=C;18: C=AUX;}19: if(A>B){20: AUX=A;21: B=A;22: B=AUX;}23: if(B>C){
24: AUX=B;25: B=C;26: C=AUX;}27: printf("%d - %d - %d\n",A,B,C);28: system("PAUSE");29: return 0;30: }
Nesse programa foram inseridos os seguintes erros:- Linha 14: Remoo do "&".- Linha 21: B=A.
Correo: Incluso do "&" na linha 14 e "A=B" na linha 21.
-
7/29/2019 Engenharia de Software Experimental
62/64
62
Programa 2: Classifica em ordem crescente 10 nmeros inteiros passados como parmetropara um vetor e exibe na tela.
1:// Ordenao com vetor2:3: #include 4: #include 5:6: void le_vet(double VET[10]);7: void imp_vet(double VET[10]);8:9: void le_vet(double *VET)10: {11:
12: for(int l=0;l10;l++){25: printf("\n%lf ", VET[l]);26: }27: }28:29: int main()30: {31:32: double VET[10];33: le_vet(VET);34: imp_vet(VET);35: getch();
Nesse programa foi inserido o seguinte erro:- Linha 24: ""l>10"
Correo: "l
-
7/29/2019 Engenharia de Software Experimental
63/64
63
Programa 3: Executa o clculo de fatorial a partir de um nmero inteiro passado comoparmetro e exibe na tela.
1:// Clculo Fatorial
2:3: #include4: #include5: #include6:7: int fatorial(int numlido);8: long int total=0, numlido, num;9:10: int main(void)11: {12: printf("Informe o numero a ser calculado o N!:");
13: scanf("%d", &num);14: fatorial(num);15:16: printf("\n\n O Fatorial de %d eh: %d\n",num, total);17: getch();18: }19: int fatorial(int numlido)20: {21: int fat;22: for(fat=1;fat
-
7/29/2019 Engenharia de Software Experimental
64/64
64
Programa 4: Executa o clculo da srie de Fibonacci a partir de um nmero inteiro passadocomo parmetro e exibe na tela.
1://