Engenharia de Software Experimental

download Engenharia de Software Experimental

of 64

Transcript of Engenharia de Software Experimental

  • 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://