Você está na página 1de 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.

SALVADOR - BA 2008

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

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 Neiva Professor do Curso de Bacharelado em Informtica Universidade Catlica do Salvador

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.

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.

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.

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

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.

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 Administration QIP- Quality Improvement Paradigm

SUMRIO

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 se confirmam. 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 obtidos atravs 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.

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 interesses comerciais. 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

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 estudantes de 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 na Cincia 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.

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 de crise do software. O processo de criao de software estava em crise. O preo do hardware

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

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 (ComputerAided 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 a recuperao 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).

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 a experimentao 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

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 de suspense: 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 de forma 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

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 com as 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 fluxo definido pela figura 3.1 apresenta um ciclo de vida de um experimento.

20

Figura 2.2.3- Fabrica de Experincias Fonte: (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 de experimentao. 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-efeito numa 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.

21

2.

Alunos vs. Profissionais: Define a equipe que vai executar o Problema de sala de aula vs. Problema real: Mostra o tamanho do Especfico vs. Geral: Mostra se os resultados do experimento so

experimento.
3.

problema que est sendo estudado.


4.

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.

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.

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 Ordinal Intervalo Apresenta o atributo de uma entidade como o nome ou smbolo. Ordena as entidades segundo um critrio definido. 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 Subjetiva Se o valor da medida depende somente do objeto em si. Pode ser tomada vrias vezes e o mesmo valor ser sempre recebido. 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 Direta Indireta mesmo objeto vrias vezes. No envolve a medio de outros atributos. 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.

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 do experimento 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 da validade externa a interao do tratamento com as pessoas, o lugar e o tempo devem ser considerados.

25

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 so

os 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

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 invivo, 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 objetos 1 2

27

Nmero

de 1 2 mais

Estudo objeto ou Estudo

de de

nico Estudo da variao de objetos objeto Estudo agrupado por

participantes

com vrios testes

objetos e participantes

Tabela 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. 2. 3. 4. 5. 6. Caracterizao do processo de negcio. Definio dos objetivos quantitativos. Escolha do processo de melhoria. Processo de desenvolvimento do software. Avaliao das prticas atuais. Empacotamento.

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 Experincia Fonte: (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.

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.

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 cada instruo e acompanhar a evoluo do contedo da memria. Os depuradores atuais permitem inclusive a modificao do contedo de variveis durante a execuo do cdigo. 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). Tais recursos oferecem condies para que o programador consiga avaliar hipteses e isolar

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 abordagem clara 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 bug que aparece aleatoriamente essencialmente insolvel. Precisa-se de uma garantia de causa e efeito para fazer inferncias 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

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 UNIX em 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).

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 alto nvel 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 padronizadas 3. 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.

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 global Verificar 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;

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 ou Computao 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.

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 ao desenvolvimento 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?

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. P1 P2 P3 P4 Nome Ordenao Ordenao com vetor Fatorial Fibonacci Descrio Organiza em ordem crescente 03 nmeros inteiros e exibe na tela. Organiza em ordem crescente 10 nmeros inteiros com a utilizao de vetor e exibe na tela. Executa o clculo de fatorial a partir de um nmero inteiro passado como parmetro e exibe na tela. Executa o clculo da srie de Fibonacci a partir de um nmero 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

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 o desenvolvimento 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;

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 bacharelado de 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

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 infraestrutura de rede, problemas de hardware e problemas de software durante a experimentao. Os problemas foram contornados, pois, existiam computadores reservas. foi 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 estudo proposto. 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. O tempo para treinamento da populao demonstrou-se insuficiente, pois, um expressivo nmero de dvidas

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:

o Nunca 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

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 o No
Voc utiliza a Linguagem de programao C profissionalmente?

o Sim o No
Voc tem experincia com outra linguagem de programao?

o Sim o No
A disciplina cursada pr-requisito de outra disciplina?

o Sim o No
Voc vai dar continuidade ao estudo de programao computacional?

o Sim o No
Voc enxerga aplicao prtica da linguagem de programao em seu domnio de aplicao profissional?

o Sim

43

o No

7.2. Questionrio de competncias

44

Tabela 7.2 - Questionrio de competncias

45

7.3. Questionrio de avaliao de atividades Como voc avalia a atividade realizada: Os cdigos apresentados foram escritos de forma clara?

o Sim o No
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?

o Nenhum o1 o2 o3 o4

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

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
4; 17% 0; 0%
10 Engenharia Qumica 8 7 5 4 7 Engenharia Eltrica Engenharia Civil Engenharia Mecatrnica Engenharia Mecnica 1 0 0 Engenharia de Produo Cincia da Computao

Perfil dos participantes: Formao - Cursos

Particular Pblica Particular e Pblica 20; 83%

6 4 2 0

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.

Tempo e nvel de experincia dos participantes


3 2,5 2 1,5 1 0,5 0 1 3 5 7 9 11 13 15 17 19 21 23
Tempo Nvel

Grfico 7.3 Tempo e nvel de experincia dos participantes.

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 convertidos em 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.

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.

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.

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.

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.

5 4 3 2 1 0 1 2 3

Avaliao individual de dificuldade x moda ref. dificuldade x avaliao de tempo disponvel Dificuldade
Tempo Moda ref. dificuldade

10 11 12 13 14 15 16 17 18 19 20 21 22

23 24

Grfico 8.4 Relao: Dificuldade x Tempo

A resoluo das tarefas propostas foi pouco significativa em relao ao tempo disponibilizado. 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
5 4 3 2 1 0 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

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?


2; 8%

Sim No

22; 92%

Grfico 8.6 Clareza dos cdigos propostos.

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.

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 um ambiente 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 semicontrolado tem que ser bastante planejado sendo necessrio quantificar a populao para calcular 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 como o 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.

56

Experimentalistas

devem

executar

seus

experimentos,

incrementando

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.

57

REFERNCIAS BIBLIOGRFICAS

A.A. PORTER and P.M. Johnson, Assessing Software Review Meetings: Results of a Comparative 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 Software Requirements 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, SIGSoft Software Eng. Notes,ACM Press, New York, 1996, pp. 11-15.

BASILI, V.R., CALDIERA, G. and ROMBACH, H.D. (1994) The Goal Question Metric Approach; Encyclopedia of Software Engineering. New York: Wiley-Interscience.

BASILI, V.R., SHULL, F., Lanubile, F. (1997). Building Knowledge through Families of 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.

58

TRAVASSOS, G.H.; SHULL, F.; FREDERICKS, M.; BASILI, V. R. (1999) Detecting Defects in Object Oriented Designs: Using Reading Techniques to increase Software Quality. 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 in Computers, 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., A Environment to Support Large Scale Experimentation in Software Engineering, 13th IEEE International Conference on Engineering of Complex Computer Systems, Abril, 2008.

SEAMAN, C.B. (1999) Qualitative Methods in Empirical Studies of Software Engineering, 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 Academic Publishers. 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 Validating Technology, 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.

59

SANTO, E. (1992). Delineamentos de metodologia cientfica. Publicado por Edicoes Loyola.

TICHY, F. Should ComputerScientists Experiment More? (1998), In:IEEE Computer.

KERNIGHAN, Brian W. e RITCH, Dennis M., C: A Linguagem de Programao, Rio de Janeiro, 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

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 Mdia 2: 3: # include <stdio.h> 4: # include <conio.h> 5: 6: int main(void) 7: { 8: int Vetor[10],i; 9: float Media = 0; 10: 11: for (i=0 ; i<10 ; i++) 12: { 13: printf("Digite o nmero %d: ",i+1); 14: scanf("%d",&Vetor[i]); 15: } 16: for (i=0 ; i<10 ; i++) 17: { 18: printf("%d\n",Vetor[i]); 19: Media = Media + Vetor[i]; 20: } 21: Media=Media/10; 22: printf("A Media foi de: %.2f ",Media); 23: getch(); 24: }

61

Programa 1: Classifica em ordem crescente 03 nmeros inteiros passados como parmetro e exibe na tela. 1: // Ordenao 2: 3: #include <stdlib.h> 4: #include <stdio.h> 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.

62

Programa 2: Classifica em ordem crescente 10 nmeros inteiros passados como parmetro para um vetor e exibe na tela. 1: // Ordenao com vetor 2: 3: #include <stdio.h> 4: #include <conio.h> 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;l<10;l++) 13: { 14: printf("%d -->",l); 15: scanf("%lf",&VET[l]); 16: 17: } 18: } 19: 20: void imp_vet(double *VET) 21: { 22: 23: printf("\n\n Vetor digitado:\n"); 24: for( int l=0;l>10;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<10"

63

Programa 3: Executa o clculo de fatorial a partir de um nmero inteiro passado como parmetro e exibe na tela. 1: // Clculo Fatorial 2: 3: #include<conio.h> 4: #include<stdlib.h> 5: #include<stdio.h> 6: 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<=numlido;fat++) 23: { 24: total=total*fat; 25: } 26: } Nesse programa foi inserido o seguinte erro: - Linha 8: "total=0". Correo: "total=1"

64

Programa 4: Executa o clculo da srie de Fibonacci a partir de um nmero inteiro passado como parmetro e exibe na tela. 1: //Srie de Fibonacci: 2: //1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 3: 4: #include <stdio.h> 5: #include <stdlib.h> 6: 7: int main(){ 8: int a,b,c,d,x,y; 9: a=1; 10: b=0; 11: printf("---------- Serie de Fibonacci -----------\n\n\n") 12: printf("Ate qual termo voce deseja vizualizar?(10 ate 30) "); 13: scanf("%d",&d); 14: if (d<=30 && d>=10) { 15: for (x=1;x<=d;x++) { 16: c=a+b; 17: printf("%d\n",c); 18: a=c; 19: b=c; 20: } 21: } 22: else { 23: if (d>30) { 24: printf("\n\nDigite um numero menor que 30!\n\n\n"); 25: } 26: if (d<10) { 27: printf("\n\nDigite um numero maior que 10!\n\n\n"); 28: } 29: } 30: printf("--------- Serie de Fibonacci ---------\n\n\n") 31: system("PAUSE"); 32: return 0; 33: } Nesse programa foi inserido o seguinte erro: - Linha 18: "a=c" Correo: "a=b"

Você também pode gostar