UNIVERSIDADE FEDERAL DA BAHIA

Tamanho: px
Começar a partir da página:

Download "UNIVERSIDADE FEDERAL DA BAHIA"

Transcrição

1 UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Daniela Soares Feitosa Um estudo sobre o impacto do uso de Desenvolvimento Orientado por Testes na melhoria da qualidade de software Salvador 2007

2 Daniela Soares Feitosa Monografia apresentada ao Curso de graduação em Ciência da Computação, Departamento de Ciência da Computação, Instituto de Matemática, Universidade Federal da Bahia, como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação. Orientador: Antonio Soares de Azevedo Terceiro Salvador 2007

3 RESUMO O desenvolvimento de software orientado por testes (TDD - Test Driven Development) é uma das técnicas utilizadas no modelo de programação XP - extreme Programming, cujo uso tem aumentado bastante. Esta técnica tem como um de seus objetivos antecipar a identificação de defeitos durante o desenvolvimento do software e, para isso, os testes são feitos antes da implementação do código. Esse tipo de desenvolvimento ajuda os desenvolvedores a focar na funcionalidade das aplicações e a disponibilidade de testes antes do desenvolvimento permite um rápido feedback. Este trabalho é uma revisão sistemática que tem como objetivo analisar se a utilização desta técnica diminui a quantidade de defeitos numa aplicação, melhorando sua qualidade e confiança. Palavras-chave: engenharia de software, desenvolvimento orientado por testes, revisão sistemática.

4 ABSTRACT Test Driven Development is one of the techniques used in the practices of XP - extreme Programming, whose use has increased significantly. This technique has as one of its goals to previously identify defects during software development and, therefore, the tests are written prior to implementation of the code. This type of development help developers to focus on the functionality of applications and the availability of tests before the development allows a rapid feedback. This work is a systematic review that aims to examine whether the use of this technique reduces the amount of defects in an application, improving its quality and reliability. Keywords: software engineering, test-driven development, systematic review.

5 LISTA DE FIGURAS 2.1 Test Driven Development (BHAT; NAGAPPAN, 2006, p.357) Hierarquia dos estudos para Engenharia de Software (KITCHENHAM, 2004, p.13) Gráfico dos resultados obtidos a partir do estudo na Microsoft - (BHAT; NA- GAPPAN, 2006, p.361) Densidade dos defeitos encontrados no estudo na IBM - (VOUK, Nov. 2003, p.7)

6 LISTA DE ABREVIATURAS E SIGLAS CASE Computer-Aided Software Engineering, p. 10 TDD Test-Driven Development, p. 13 XP extreme Programming, p. 14

7 SUMÁRIO 1 Introdução 8 2 Conceitos Engenharia de Software Testes de Software Fases de teste Testes automatizados de software Test-Driven Development (TDD) Extreme Programming (XP) Metodologia Protocolo Descrição do problema Objetivo Questões da pesquisa Palavras-chave Método utilizado para pesquisa de fontes primárias Critério de seleção dos estudos Critério de qualidade dos estudos Método de avaliação dos estudos Método de extração dos dados Método de síntese dos dados

8 3.2 Execução da Revisão Sistemática Resultados Discussão dos resultados Conclusão Uso de revisão sistemática TDD X Quantidade de defeitos Contribuições do trabalho Apêndice A -- Formulário de condução da revisão 30 Apêndice B -- Formulário de seleção de estudos 32 Apêndice C -- Formulário de extração de dados 47 Referências Bibliográficas 50

9 8 1 INTRODUÇÃO O processo de desenvolvimento de um software é uma atividade complexa que envolve diferentes questões. Entre elas, destaca-se uma das mais difíceis de ser respondida, que é sobre como garantir a qualidade do software. Testes sistemáticos e tecnicamente completos são utilizados para garantir essa qualidade. Alguns dos fatores que afetam a qualidade de software podem ser medidos diretamente, como defeitos por quantidade de linhas de código e por unidade de tempo, enquanto outros podem ser medidos apenas indiretamente, como usabilidade e manutenibilidade. Estes fatores devem ser calculados e as medidas encontradas indicarão a qualidade do software (PRESSMAN, 2005). Segundo Ian Sommerville (SOMMERVILLE, 2003), a Engenharia de Software enfrenta três desafios principais neste século: Sistemas legados: A maioria dos grandes softwares utilizados atualmente foi desenvolvido há muitos anos. O desafio é manter e atualizar estes sistemas legados de uma forma economicamente viável e garantindo a entrega dos serviços prestados por estes sistemas; Heterogeneidade: O software desenvolvido deve ser confiável e flexível o bastante para ser bem-sucedido em diferentes combinações de hardware e software; Entrega: O aumento da complexidade do software e diminuição dos prazos de entrega comprometem a qualidade do software; A importância da qualidade do software se mostra ainda mais evidente ao tentar solucionar este último ponto. Se a complexidade do software aumenta e o prazo de entrega diminui, devese encontrar uma forma de garantir a qualidade do software apesar dos desafios. Test Driven Development (TDD) surgiu como uma possível solução para este problema. TDD já é usada informalmente por bons programadores a muito tempo, mas as primeiras tentativas de definí-la como uma prática de desenvolvimento começaram no final de 2002, com

10 9 as publicações de Kent Beck (BECK, 2003) e David Astels (ASTELS, 2003). Esta técnica consiste em implementar testes para cada nova funcionalidade do software antes mesmo de implementá-la. Os testes deverão ser executados regularmente para verificar se o código foi bem implementado. Essa forma de desenvolver ajuda os desenvolvedores a focar na funcionalidade das aplicações e, caso os testes passem, o desenvolvedor saberá que o código foi bem implementado, garantindo a qualidade da aplicação. TDD ajuda os desenvolvedores a focar na funcionalidade das aplicações e a disponibilidade de testes antes do desenvolvimento permite um rápido feedback. Entretanto, não é garantido que a quantidade de defeitos diminuirá. Neste trabalho, foi conduzida uma revisão sistemática com o objetivo de analisar se a utilização de TDD diminui a quantidade de defeitos no software, comparando com outras técnicas de desenvolvimento. Para isso, alguns estudos que obtiveram resultados experimentais foram identificados, analisados e avaliados como proposto em (KITCHENHAM, 2004). Em função do número reduzido de estudos específicos sobre o impacto de TDD na quantidade de defeitos no software, não é possível estatisticamente afirmar que há uma diminuição na quantidade de defeitos, apesar dessa ser uma tendência apontada por esses mesmos estudos. Este trabalho encontra-se dividido em 6 capítulos. O capítulo 2 fará uma introdução sobre os principais conceitos envolvendo TDD. O capítulo 3 descreve a metodologia utilizada, apresentando detalhadamente o protocolo e a condução da revisão. O capítulo 4 apresenta os resultados obtidos da revisão. O capítulo 5 apresenta as conclusões. E, finalmente, os formulários utilizados na condução da revisão são apresentados nos apêndices A, B e C.

11 10 2 CONCEITOS Neste capítulo serão apresentados os resumos dos conceitos necessários para o entendimento deste trabalho: Engenharia de Software, Testes de software e Test Driven Development. 2.1 ENGENHARIA DE SOFTWARE Uma primeira definição de engenharia de software foi proposta por Fritz Baur na primeira conferência dedicada ao assunto (NAUR; RANDELL, 1969 apud PRESSMAN, 2005): Engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais. A criação da engenharia de software surgiu numa tentativa de contornar a crise do software e dar um tratamento mais sistemático e controlado ao desenvolvimento de sistemas de software complexos. A engenharia de software é a área da computação que se preocupa com todos os aspectos da produção de software e procura garantir a qualidade do software desenvolvido. Segundo Pressman (PRESSMAN, 2005), ela é composta por um conjunto de três elementos fundamentais: métodos, ferramentas e processos, que possibilita o controle do processo de desenvolvimento do software. Os métodos provêm os detalhes de como fazer a implementação do software e incluem os modelos, a especificação do software, guia do processo e um conjunto de critérios para qualidade do software. As ferramentas tem como objetivo proporcionar apoio automatizado ou semi-automatizado para as atividades do processos. é um sistema de suporte ao desenvolvimento de software que abrange toda ferramenta baseada em computadores que auxiliam atividades de engenharia de software, desde análise de requisitos e modelagem até programação e testes. Os processos constituem a interação dos métodos, ferramentas e pessoas. Eles definem a sequência de práticas que será utilizada para o desenvolvimento, garantia de qualidade e entrega

12 11 dos produtos (documentos, relatórios, formulários etc). Estas práticas englobam as atividades de especificação, desenvolvimento, validação e evolução. 2.2 TESTES DE SOFTWARE Teste de software é o processo de executar um software de uma maneira controlada com o objetivo de avaliar se o mesmo se comporta conforme o especificado. Envolve ações que vão do levantamento de requisitos até a execução do teste propriamente dito. Segundo Sommerville (SOMMERVILLE, 2003), teste de software é uma técnica de verificação e validação. Verificação e validação são processos de checagem e análise de software. O objetivo da verificação é mostrar se um programa está de acordo com a especificação e a validação mostra se um programa faz o que o cliente/usuário deseja. Um erro de software é um erro de implementação no código e um defeito de software é a manifestação de um ou mais erros, fazendo com que o software não execute da forma esperada. Testes de software revelam a presença de defeitos. O teste é considerado bom se revela um ou mais defeitos. Teste de software não pode provar a ausência de defeitos, pode apenas mostrar a presença de defeitos, por isso seu objetivo é executar um programa com a intenção de revelar a presença de defeitos, e não a sua ausência. Após a realização de um teste, o resultado deve ser avaliado e comparado ao resultado esperado. Caso os resultados sejam diferentes, chega-se à conclusão que há defeitos e que deve ser feita a depuração. Todos os softwares possuem defeitos, então, para promover um ambiente mais estável para o usuário final, é importante que a maioria desses defeitos não sejam críticos. Os testes de software tentam garantir que a qualidade, o custo, a segurança e a confiabilidade do software não sejam prejudicados pela presença desses defeitos FASES DE TESTE Ian Sommerville (SOMMERVILLE, 2003) declara que os testes devem ser feitos em duas fases. Na primeira fase, são feitos os testes de componentes e na segunda fase, os testes de integração. Durante a fase de testes de componentes duas técnicas de testes são muito utilizadas: Teste da caixa-preta: Dados de entrada são fornecidos, o teste é executado e o resultado

13 12 obtido é comparado a um resultado esperado previamente conhecido. É chamado de caixa-preta porque o comportamento interno do componente não é considerado, apenas as entradas e saídas fornecidas pelo componente são conhecidas. Teste da caixa-branca: Também é chamado de teste estrutural, pois avalia a estrutura e implementação do software. Depois de testar todos os componentes do software individualmente e verificar que funcionam, eles devem ser integrados para criar o software completo. Para garantir que o software resultante da interação dos componentes não apresenta problemas são feitos os testes de integração. Estes testes são aplicados na construção da estrutura do programa, realizando testes para descobrir defeitos associados às interfaces entre os componentes, verificando se todos os componentes funcionarão corretamente quando estiverem integrados. A integração dos componentes podem ser feitas na forma não-incremental ou incremental. Na integração não-incremental, todos os módulos do software são combinados ao mesmo tempo e o software resultante é testado. Neste caso, muitos defeitos podem ser encontrados e a correção pode se tornar complicada, pois será mais difícil encontrar a origem do defeito. Na integração incremental, o software é construído e testado em pequenos segmentos, permitindo que os erros sejam mais fáceis de ser isolados e corrigidos e as interfaces têm maior probabilidade de serem testadas completamente. 2.3 TESTES AUTOMATIZADOS DE SOFTWARE Para facilitar a execução dos testes, foram criadas ferramentas que ajudam na criação de código para a automação de testes, como o JUnit. Com essas ferramentas, o desenvolvedor escreve um teste pensando na interface do código, ao invés de se preocupar em como será implementado, verificando se os métodos e classes funcionam da forma esperada. Utilizando estas ferramentas, executar testes passou a ser tão fácil quanto compilar um software (FOWLER, 2001). Por ser fácil de executar automaticamente, os desenvolvedores podem executar os testes automáticos várias vezes por dia, permitindo que os defeitos sejam encontrados mais rapidamente. Por exemplo, se após a execução de todos os testes, um bug for inserido no software, o desenvolvedor saberá que o defeito foi causado pelas linhas de código inseridas entre a última execução dos testes e a revelação do bug.

14 TEST-DRIVEN DEVELOPMENT (TDD) Desenvolvimento Orientado por Testes (TDD) é uma técnica que consiste de pequenas iterações onde novos casos de testes são escritos contemplando uma nova funcionalidade ou melhoria e, depois, o código necessário e suficiente para passar esses teste é implementado. Então, o software é refatorado para contemplar as mudanças de forma que os testes continuem passando. Segundo Kent Beck (BECK, 2003), os seguinte passos são necessários para a utilização dessa técnica: Adicionar um novo teste; Executar todos os testes; Implementar o código necessário para passar no teste; Executar todos os testes; Refatorar o código. Como todas as funcionalidades e melhorias do código começam com um teste, o desenvolvedor precisa conhecer os casos de uso e estórias que contemplem todos os requisitos e exceções do sistema. Essa técnica obriga o desenvolvedor a focar no requisito para escrever bons testes. Cada teste adicionado deve cobrir uma funcionalidade ou melhoria que ainda não foi implementada, então esse teste deverá falhar na sua primeira execução. Isso garante que o teste não passará sem a necessidade de alterar o código. Com a falha no teste, o desenvolvedor deve implementar o código necessário e suficiente para passar no novo teste, sem se preocupar com a elegância do código. Após implementado a nova funcionalidade/melhoria, os testes devem ser executados novamente e, se todos os testes passarem, o desenvolvedor tem a garantia que o código cumpre todos os requisitos testados. Se algum não passar, o código referente ao teste que falhou deverá ser corrigido. Antes de adicionar um novo teste no software, o desevolvedor deve refatorar o código, para evitar duplicação. Bhat e Nagappan (BHAT; NAGAPPAN, 2006), resumiram os passos na Figura 2.1.

15 14 Figura 2.1: Test Driven Development (BHAT; NAGAPPAN, 2006, p.357) EXTREME PROGRAMMING (XP) Extreme Programming (ou XP) é uma metodologia de programação ágil composta por um conjunto de valores, princípios e práticas que visa desenvolver softwares de alta qualidade de forma ágil, econômica e flexível (JEFFRIES, 2007). Os cinco valores que guiam o desenvolvimento XP são: Comunicação: A comunicação entre os desenvolvedores e clientes é importante para que os desenvolvedores entendam as necessidades do cliente e estes acompanhem o desenvolvimento do projeto de perto. Também é essencial que haja comunicação entre os desenvolvedores, para garantir que todos entendam o software da mesma forma. A comunicação verbal e presencial é priorizada para garantir que todas as partes envolvidas tenham a chance de se compreender da melhor maneira possível. Simplicidade: A equipe de desenvolvedores deve se concentrar em codificar primeiro tudo que é claramente importante para o software, evitando desenvolver o que ainda não é essencial. Este valor está relacionado com a comunicação, pois a simplicidade do código permite que ele seja entendido mais facilmenet por todos os desenvolvedores do projeto. Feedback: No desenvolvimento de software quanto mais cedo um defeito é encontrado, mais barata é sua correção. A metodologia XP propões ciclos de desenvolvimento curtos

16 15 (1 a 4 semanas). Em cada ciclo ocorrem todas as fases de desenvolvimento (planejamento, análise de requisitos, codificação, teste e documentação), que são entregues ao cliente. Este, então, analisa se tudo o que pediu está contido na versão entregue e informa aos desenvolvedores suas sugestões, críticas e dúvidas. Coragem: Os desenvolvedores que utilizam XP têm consciência que os clientes podem querer mudanças no software. Então, têm coragem de permitir que essas mudanças sejam feitas, pois confiam nas proteções que o software possui quando é desenvolvido utilizando as práticas do XP, como desenvolvimento orientado por testes, programação em par e integração contínua. Os princípios (BEEDLE et al., 2001) seguidos pelos desenvolvedores são: A maior prioridade é a satisfação do cliente através da entrega rápida e contínua de software útil As mudanças de requisito serão bem recebidas em qualquer momento, mesmo que o desenvolvimento já esteja adiantado. A entrega do software deverá ser frequente, em poucas semanas ou meses, dando preferência à menor escala. As pessoas que entendem de negócios e os desenvolvedores devem trabalhar juntos diariamente durante o projeto. Desenvolva projetos com pessoas motivadas. Dêem todo o ambiente e suporte que as pessoas precisarem e confie que elas produzirão. o método mais eficiente e eficaz de transmitir informações em uma equipe de desenvolvimento é a conversa frente-a-frente. Um software que funciona é a primeira medida de progresso. Processos ágeis promovem desenvolvimento sustentável. Os clientes, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente. Atenção contínua à excelência técnica e um bom projeto aumentam a agilidade. Simplicidade a arte de maximizar a quantidade de trabalho a não ser feito é essencial. As melhores arquiteturas, requisitos e projetos emergem de grupos auto-organizáveis.

17 16 Em intervalos regulares, o grupo deve refletir sobre como se tornar mais eficaz, então devem ajustar seu comportamento de acordo com isso. A metodologia XP é baseada nas 12 melhores práticas de engenharia de software para aumentar a produtividade e qualidade, com ênfase em testes via TDD. Essas práticas foram descritas por Kent Beck (BECK, 2000) e estão listadas abaixo: O processo de planejamento: Esta prática permite que o cliente defina as funcionalidades que serão prioritárias no desenvolvimento, a partir dos custos estimados fornecidos pelos desenvolvedores. Pequenas versões: Consiste em colocar um sistema simples em produção rapidamente e atualizá-lo frequentemente, um ciclos curtos. Metáfora: Compartilhar um sistema de nomes e uma descrição do sistema para guiar o desenvolvimento e a comunicação. Design simples: O programa desenvolvido deve ser o programa mais simples possível que contemple os requisitos do momento. Nada que ainda não tenha sido descrito como uma funcionalidade deve ser implementado. Testes: A validação do software deve ser feita em todos os momentos. Os programadores devem escrever os testes primeiro e, depois, o código que contemple os requisitos refletidos nos testes (TDD). Refatoração: Esta prática é utilizada para reestruturar o sistema sem mudar seu comportamento. É utilizado para eliminar duplicações, melhorar a comunicação, simplicidade ou adicionar mais flexibilidade. Programação em pares: Todo o código é produzido em pares: dois desenvolvedores trabalhando juntos em uma máquina. Dessa forma, os desenvolvedores se ajudam. Enquanto um escreve o código, o outro pode analisar a necessidade de revisão do código e/ou refatoração. Propriedade coletiva: Todo o código produzido pertence à todos os desenvolvedores. Isto permite que um grupo produza mais rápido. Se algo precisa ser mudado, ele será mudado sem demora, pois qualquer desenvolvedor poderá modificar qualquer parte do código. Integração contínua: Os grupos de desenvolvedores integram e produzem software várias vezes por dia, permitindo que o progresso do desenvolvimento seja mais rápido.

18 17 40 horas por semana: Desenvolvedores cansados cometem mais erros. Então, nenhum desenvolvedor deve trabalhar mais de 40h por semana. Cliente sempre presente: Um cliente/usuário deve estar sempre presente no desenvolvimento, determinando requisitos, estabelecendo prioridade e respondendo às questões que os desenvolvedores fizerem. Padrões de codificação: Para um grupo trabalhar efetivamente em pares e compartilhar a propriedade do código, todos os desenvolvedores devem produzir código da mesma forma, com regras que garantem que auxiliem a comunicação através do código. Como o objetivo do XP é desenvolver em pequenos ciclos, TDD se torna essencial para ter a garantia que o código que foi produzido atende às necessidades do cliente. E, se o cliente sugerir alterações, os desenvolvedores se sentirão seguros em fazer as mudanças, já que os testes já produzidos possibilitarão indicar eventuais defeitos introduzidos pela alteração.

19 18 3 METODOLOGIA A metodologia utilizada neste trabalho é a Revisão Sistemática. A maior parte das pesquisas começa com uma revisão de literatura, no entanto, segundo Kitchenham (KITCHENHAM, 2004), para ter valor científico é necessário que essa revisão seja feita de forma abrangente, não tendenciosa, aberta e objetiva. Esse é a principal razão de uma revisão sistemática, que deve identificar, avaliar e interpretar todas as pesquisas disponíveis e relevantes sobre uma questão e, para isso, precisa ser executada seguindo um protocolo pré-definido e rigoroso. Obrigatoriamente, nesse protocolo deve conter todas as informações que permitam que a revisão seja repetida por outros pesquisadores interessados. A revisão sistemática deve reunir informações sobre uma determinada questão ou fenômeno, identificar lacunas na pesquisa atual e indicar um direcionamento para pesquisas futuras. Uma revisão sistemática envolve três fases: planejamento, execução e análise dos resultados. Na fase de planejamento, o protocolo que deverá orientar toda a revisão sistemática é construído. Nele deve conter as informações sobre o objetivo, a descrição do problema, as questões da pesquisa e os métodos e critérios utilizados para a busca, seleção, avaliação e extração de dados. Na fase de execução, os métodos descritos no protocolo são aplicados e documentados nos formulários de condução da revisão e de seleção dos estudos. O objetivo do formulário de condução da revisão é documentar o processo de busca. Possui campos para a armazenagem de informações sobre a fonte onde a busca foi realizada, o endereço virtual da fonte, a data de realização da busca, as combinações de palavras-chave que proporcionaram a busca dos artigos, a quantidade de artigos encontrados e a quantidade de arquivos pré-selecionados. O formulário de seleção de estudos documenta a busca e possui campos informando o nome do artigo, a lista de autores, data de sua publicação, veículo de publicação do artigo, fonte de onde foi obtido, situação do artigo (pendente, incluído e excluído) e informações sobre se os critérios foram atendidos.

20 19 Na fase de análise dos resultados os dados dos estudos são extraídos e sintetizados e os resultados são analisados. A extração é documentada no formulário de extração de dados, que possui campos informando o título, abstract, objetivo do estudo, descrição do estudo experimental, resultados do estudo, além de comentários adicionais do pesquisador que extraiu os dados. Na seção seguinte será apresentado o protocolo utilizado para esta revisão sistemática. 3.1 PROTOCOLO O protocolo da revisão especifica os métodos que serão utilizados para a revisão sistemática. Segundo Kitchenham, um protocolo pré-definido é necessário para reduzir a possibilidade de uma pesquisa tendenciosa, já que sem um protocolo, um pesquisador poderia selecionar estudos de acordo com suas expectativas DESCRIÇÃO DO PROBLEMA Na maioria dos projetos de desenvolvimento de software, quanto mais se distancia das fases iniciais do desenvolvimento mais custosa fica sua correção. Então, a utilização da técnica de desenvolvimento orientado por testes passa a ser uma boa opção, pois esta tem como um de seus objetivos antecipar a identificação de defeitos durante o desenvolvimento do software. Esta técnica faz parte do modelo de programação XP, cuja utilização tem aumentado bastante nos últimos anos. Para permitir que os defeitos sejam identificados previamente, os testes são feitos antes da implementação do código. Esse tipo de desenvolvimento ajuda os desenvolvedores a focar na funcionalidade das aplicações e a disponibilidade de testes antes do desenvolvimento permite um rápido feedback. Entretanto, não é garantido que a quantidade de defeitos diminuirá OBJETIVO O foco desta revisão sistemática é analisar se a utilização da técnica de desenvolvimento de software orientado por testes diminui a quantidade de defeitos numa aplicação. Caso seja verificado que a quantidade de defeitos é menor, esta revisão também verificará o impacto da utilização da técnica TDD na quantidade de defeitos do software.

21 QUESTÕES DA PESQUISA Essas questões deverão ser respondidas ao final da revisão sistemática. Questão Primária: O uso da metodologia TDD no desenvolvimento de software diminui a quantidade de defeitos no software? População: Projetos de desenvolvimento Intervenção: Test Driven Development Resultado: Diminuição da quantidade de defeitos Questão Secundária: Qual o impacto da utilização de TDD na quantidade de defeitos em um software? PALAVRAS-CHAVE Essas palavras serão utilizadas para fazer as buscas de estudos. População software development, software process, software project Intervenção: development test, test, tests, software test, tdd, test driven development Resultado: errors, error, error detection, error identification, failure, defect MÉTODO UTILIZADO PARA PESQUISA DE FONTES PRIMÁRIAS As fontes serão pesquisada pela web nas bases eletrônicas de dados e ACM Digital Library. As strings de busca utilizadas serão formada pela interseção das palavras que formam a população, a intervenção e o resultado listados na subseção A busca será documentada e apresentada no apêndice A CRITÉRIO DE SELEÇÃO DOS ESTUDOS Serão incluídos na revisão todos os artigos encontrados com a utilização do método descrito na subseção que satisfaçam todos os seguintes critérios:

22 21 Os artigos devem ter sido publicados entre 1990 e 2007 Os artigos devem estar escritos em inglês. A escolha do inglês como idioma padrão devese à sua universalidade. Os artigos devem estar disponíveis na web Os artigos devem contemplar a execução de estudos experimentais. Os artigos devem abordar o uso da metodologia TDD no desenvolvimento de softwares e a quantidade de defeitos ao final do desenvolvimento. A seleção dos estudos será documentada e apresentada no apêndice B CRITÉRIO DE QUALIDADE DOS ESTUDOS Os artigos que atenderem aos critérios descritos na subseção serão avaliados baseado nos critérios para avaliação de estudos experimentais em engenharia de software definidos por Barbara Kitchenham e ilustrados na figura 3.1 (KITCHENHAM, 2004). Apenas os estudos com nível 5 serão excluídos da revisão sistemática. Figura 3.1: Hierarquia dos estudos para Engenharia de Software (KITCHENHAM, 2004, p.13)

23 MÉTODO DE AVALIAÇÃO DOS ESTUDOS Cada artigo que atender aos critérios listados na subseção será lido e os estudos selecionados serão avaliados de acordo com os critérios de qualidade estabelecidos na subseção Os artigos que se enquadrarem nesses critérios serão utilizados para a finalidade deste estudo MÉTODO DE EXTRAÇÃO DOS DADOS Para cada artigo que atender aos critérios listados na subseção será preenchido uma cópia do formulário de extração de dados que será apresentado no apêndice C MÉTODO DE SÍNTESE DOS DADOS Os dados dos estudos selecionados serão comparados, com a finalidade de realçar as similaridades e diferenças entre os estudos de acordo com as questões da pesquisa (ver apêndice C). Foi considerada a idéia de realizar meta-análise sobre os dados quantitativos dos estudos, mas como a quantidade de artigos encontrados foi muito baixa, a idéia foi desconsiderada. 3.2 EXECUÇÃO DA REVISÃO SISTEMÁTICA O processo de busca foi executado utilizando as combinações de palavras-chave seguindo o método de pesquisa de fontes primárias do protocolo (subseção 3.1.5) e restringindo a busca aos anos entre 1990 e Foram listados 489 artigos somando o material encontrados nas duas bases eletrônicas de dados. Devido ao grande número de artigos encontrados, primeiro foi feita uma pré-seleção a partir da leitura do resumo dos estudos. Os artigos que claramente eram irrelevantes para a revisão foram descartados. Foram pré-selecionados 43 estudos, todos eles abordavam estudos experimentais, testes, metodologias ágeis ou XP. Os formulários de busca podem ser vistos no apêndice A. Todos os artigos pré-selecionados estavam descritos em inglês e estavam disponíveis na WEB, atendendo três dos critérios citados na subseção (recentes, em inglês e disponíveis na WEB). Os artigos pré selecionados, então, foram lidos e verificados através dos critérios ainda não atendidos de inclusão e exclusão estabelecidos. A seleção foi documentada no formulário de seleção de estudos, juntamente com os critérios e se estes foram atendidos ou não (apêndice B). Dos 43 artigos pré-selecionados, 2 estavam de acordo com os critérios previstos

extreme Programming extreme Programming (XP) Metodologia Ágil Partes do XP Communication (comunicação) 1. Valores do XP

extreme Programming extreme Programming (XP) Metodologia Ágil Partes do XP Communication (comunicação) 1. Valores do XP extreme Programming extreme Programming (XP) Metodologia ágil para equipes pequenas a médias desenvolvendo software com requesitos vagos ou que mudam freqüentemente. [Beck 2000] Em XP, codificação é principal

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO Santa Maria, 27 de Setembro de 2013. Revisão aula anterior Desenvolvimento Ágil de Software Desenvolvimento e entrega

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO Santa Maria, 24 de Setembro de 2013. Revisão aula anterior Processos de Software Engenharia de Requisitos, Projeto,

Leia mais

Desenvolvimento Ágil de Software

Desenvolvimento Ágil de Software Desenvolvimento Ágil de Software Métodos ágeis (Sommerville) As empresas operam em um ambiente global, com mudanças rápidas. Softwares fazem parte de quase todas as operações de negócios. O desenvolvimento

Leia mais

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas. Métodos Ágeis Edes Garcia da Costa Filho edes_filho@dc.ufscar.br 1 Tópicos Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Extreme Programming (XP). Referências Bibliográficas. 2 Histórico

Leia mais

Utilização de FMEA nos Processos de Desenvolvimento e Teste de Software

Utilização de FMEA nos Processos de Desenvolvimento e Teste de Software Utilização de FMEA nos Processos de Desenvolvimento e Teste de Software Bolívar Arthur Butzke 1, Karine Baiotto 1, Msc. Adalberto Lovato 1, Msc. Vera Lúcia Lorenset Benedetti 1 1 Sistemas de Informação

Leia mais

Capítulo 1. Extreme Programming: visão geral

Capítulo 1. Extreme Programming: visão geral Capítulo 1 Extreme Programming: visão geral Extreme Programming, ou XP, é um processo de desenvolvimento de software voltado para: Projetos cujos requisitos são vagos e mudam com freqüência; Desenvolvimento

Leia mais

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis Profª Esp.: Maysa de Moura Gonzaga 2º Semestre / 2011 Extreme Programming (XP); DAS (Desenvolvimento Adaptativo de Software)

Leia mais

Ágil. Rápido. Métodos Ágeis em Engenharia de Software. Introdução. Thiago do Nascimento Ferreira. Introdução. Introdução. Introdução.

Ágil. Rápido. Métodos Ágeis em Engenharia de Software. Introdução. Thiago do Nascimento Ferreira. Introdução. Introdução. Introdução. Introdução Métodos Ágeis em Engenharia de Software Thiago do Nascimento Ferreira Desenvolvimento de software é imprevisível e complicado; Empresas operam em ambiente global com mudanças rápidas; Reconhecer

Leia mais

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com Engenharia de Software: conceitos e aplicações Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com 1 Objetivos da aula Apresentar os conceitos de Engenharia de Software e explicar a sua importância.

Leia mais

DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT

DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT DOMAIN-DRIVEN DESIGN E TEST-DRIVEN DEVELOPMENT Jaqueline Rissá Franco email: jaquerifr@gmail.com Karla Marturelli Mattos Luciano Mathias Doll João Almeida Resumo: Este artigo mostra novas abordagens na

Leia mais

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM) Programação Extrema Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM) Prof. Mauro Lopes Programação Extrema Prof. Mauro Lopes 1-31 45 Manifesto Ágil Formação da Aliança Ágil Manifesto Ágil: Propósito

Leia mais

Jonas de Souza H2W SYSTEMS

Jonas de Souza H2W SYSTEMS Jonas de Souza H2W SYSTEMS 1 Tecnólogo em Informática Fatec Jundiaí MBA em Gerenciamento de Projetos FGV Project Management Professional PMI Mestrando em Tecnologia UNICAMP Metodologia de apoio à aquisição

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Guide to the SWEBOK (Guide to the Software Engineering Body of Knowledge) IEEE Computer Society Professor José Eduardo A. de O. Teixeira - Slide 1 IEEE Institute of Eletric and Eletronic

Leia mais

Metodologias Ágeis. Aécio Costa

Metodologias Ágeis. Aécio Costa Metodologias Ágeis Aécio Costa Metodologias Ágeis Problema: Processo de desenvolvimento de Software Imprevisível e complicado. Empírico: Aceita imprevisibilidade, porém tem mecanismos de ação corretiva.

Leia mais

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com http://www.luizleao.com

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com http://www.luizleao.com Processo de Desenvolvimento de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático desta aula Modelo Cascata (Waterfall) ou TOP DOWN. Modelo Iterativo. Metodologia Ágil.

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2015 Desenvolvimento Rápido de Software 2 1 Para quê o Desenvolvimento Rápido de Software? Os negócios

Leia mais

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática Disciplina: INF5008 Prof.: (monalessa@inf.ufes.br) Conteúdo 8. Metodologias

Leia mais

Teste de software. Definição

Teste de software. Definição Definição O teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Quando se testa o software, o programa é executado usando dados

Leia mais

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil Profª Esp.: Maysa de Moura Gonzaga 2º Semestre / 2011 O Processo Unificado dos autores Ivar Jacobson, Grady Booch e James

Leia mais

Metodologia de Desenvolvimento de Sistemas

Metodologia de Desenvolvimento de Sistemas Metodologia de Desenvolvimento de Sistemas Aula 1 Ementa Fases do Ciclo de Vida do Desenvolvimento de Software, apresentando como os métodos, ferramentas e procedimentos da engenharia de software, podem

Leia mais

Métodos de Avaliação para Sites de Entretenimento. Fabricio Aparecido Breve Prof. Orientador Daniel Weller

Métodos de Avaliação para Sites de Entretenimento. Fabricio Aparecido Breve Prof. Orientador Daniel Weller Métodos de Avaliação para Sites de Entretenimento Fabricio Aparecido Breve Prof. Orientador Daniel Weller 1 Introdução O objetivo deste trabalho é verificar a eficiência da Avaliação com o Usuário e da

Leia mais

Metodologias Ágeis. Gerenciando e Desenvolvendo Projetos de forma eficiente. Gabriel Verta 0767948 Rafael Reimberg 0767701 Vinicius Quaiato - 0767697

Metodologias Ágeis. Gerenciando e Desenvolvendo Projetos de forma eficiente. Gabriel Verta 0767948 Rafael Reimberg 0767701 Vinicius Quaiato - 0767697 Metodologias Ágeis Gerenciando e Desenvolvendo Projetos de forma eficiente Gabriel Verta 0767948 Rafael Reimberg 0767701 Vinicius Quaiato - 0767697 Introdução Ao longo dos anos a indústria de desenvolvimento

Leia mais

LINGUAGEM DE ESPECIFICAÇÃO E DESCRIÇÃO (SDL) APLICADA AO PROCESSO DE VERIFICAÇÃO E VALIDAÇÃO DE SISTEMAS REATIVOS

LINGUAGEM DE ESPECIFICAÇÃO E DESCRIÇÃO (SDL) APLICADA AO PROCESSO DE VERIFICAÇÃO E VALIDAÇÃO DE SISTEMAS REATIVOS LINGUAGEM DE ESPECIFICAÇÃO E DESCRIÇÃO (SDL) APLICADA AO PROCESSO DE VERIFICAÇÃO E VALIDAÇÃO DE SISTEMAS REATIVOS Fabiana Fraga Ferreira Bacharelanda em Sistemas de Informação Bolsista de Iniciação Científica

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Profª Dra. Ana Paula Gonçalves Serra Engenharia de O Processo Uma Visão Genérica Capítulo 2 (até item 2.2. inclusive) Engenharia de - Roger Pressman 6ª edição McGrawHill Capítulo

Leia mais

METODOLOGIA ÁGIL. Lílian Simão Oliveira

METODOLOGIA ÁGIL. Lílian Simão Oliveira METODOLOGIA ÁGIL Lílian Simão Oliveira Fonte: Pressman, 2004 Aulas Prof. Auxiliadora Freire e Sabrina Schürhaus Alexandre Amorin Por quê???? Principais Causas Uso das Funcionalidades Processos empírico

Leia mais

Metodologias Ágeis de Desenvolvimento de Software

Metodologias Ágeis de Desenvolvimento de Software "Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE." Engenharia de Software de Desenvolvimento de Software Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 5 http://www.ic.uff.br/~bianca/engsoft2/ Aula 5-05/05/2006 1 Dúvidas da aula passada RUP (Rational Unified Process) é uma ferramenta ou um processo? Resposta: os dois. O

Leia mais

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software Análise e Projeto de Sistemas Análise e Projeto de Sistemas Contextualização ENGENHARIA DE SOFTWARE ANÁLISE E PROJETO DE SISTEMAS ENGENHARIA DA INFORMAÇÃO Perspectiva Histórica Engenharia de Software 1940:

Leia mais

A Evolução de XP segundo Kent Beck Parte 2

A Evolução de XP segundo Kent Beck Parte 2 A Evolução de XP segundo Kent Beck Parte 2 O que mudou nesses 5 anos? Danilo Toshiaki Sato dtsato@ime.usp.br Agenda PARTE 1 1. Introdução 2. O que é XP? 3. O que mudou em XP? Valores, Princípios e Práticas

Leia mais

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho.

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho. - DSI DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho. Preocupação: Problema técnicos Mudança na natureza e conteúdo do trabalho

Leia mais

Uma Introdução a Engenharia de Software e Sistemas

Uma Introdução a Engenharia de Software e Sistemas Uma Introdução a Engenharia de Software e Sistemas Centro de Informática - Universidade Federal de Pernambuco Engenharia da Computação Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 3 Teste Estático SUMÁRIO INTRODUÇÃO... 3 1. Definição... 3 2. Custo Versus Benefício...

Leia mais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o

Leia mais

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson QUALIDADE Simpósio Brasileiro de Qualidade de Software - SBQS Instituto Nokia de Tecnologia Unit Test Sucess Bug INdT Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua

Leia mais

Desenvolvimento ágil de software

Desenvolvimento ágil de software Desenvolvimento ágil de software Desenvolvimento ágil de software (do inglês Agile software development) ou Método ágil é um conjunto de metodologias de desenvolvimento de software. O desenvolvimento ágil,

Leia mais

Com metodologias de desenvolvimento

Com metodologias de desenvolvimento Sociedade demanda grande quantidade de sistemas/aplicações software complexo, sistemas distribuídos, heterogêneos requisitos mutantes (todo ano, todo mês, todo dia) Mas, infelizmente, não há gente suficiente

Leia mais

Desenvolvendo Software Livre com Programação extrema

Desenvolvendo Software Livre com Programação extrema Desenvolvendo Software Livre com Programação extrema Dairton Bassi FISL 7.0 abril/2006 Panorama sobre o Desenvolvimento de Software A sociedade demanda: Grande quantidade de sistemas/aplicações Sistemas

Leia mais

Investigando aspectos da geração de novos produtos de software. Daniel Arcoverde (dfa@cin.ufpe.br)

Investigando aspectos da geração de novos produtos de software. Daniel Arcoverde (dfa@cin.ufpe.br) Investigando aspectos da geração de novos produtos de software Daniel Arcoverde (dfa@cin.ufpe.br) Estrutura Parte1. Inovação é igual em software? Parte 2. Processo de Desenvolvimento de Novos Produtos

Leia mais

Sistemas de Informação e Programação II Odorico Machado Mendizabal

Sistemas de Informação e Programação II Odorico Machado Mendizabal Sistemas de Informação e Programação II Odorico Machado Mendizabal Universidade Federal do Rio Grande FURG C3 Engenharia de Computação 16 e 23 de março de 2011 Processo de Desenvolvimento de Software Objetivos

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

Introdução a Engenharia de Software. Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA

Introdução a Engenharia de Software. Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA Introdução a Engenharia de Software Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA Bibliografia Engenharia de Software, Roger Pressman, Makron Books: o mais

Leia mais

MANUTENÇÃO DE SOFTWARE

MANUTENÇÃO DE SOFTWARE MANUTENÇÃO DE SOFTWARE Francisco Luiz Sobrinho, Samily Rocha Gois Faculdade de Tecnologia SENAC Goiânia/GO (SENAC/GO) Av. Independência número 1002 - CEP 74645-010 Setor Leste Vila Nova - Goiânia GO Brasil

Leia mais

Fundamentos em Teste de Software. Vinicius V. Pessoni viniciuspessoni@gmail.com

Fundamentos em Teste de Software. Vinicius V. Pessoni viniciuspessoni@gmail.com Fundamentos em Teste de Software Vinicius V. Pessoni viniciuspessoni@gmail.com Objetivos do treinamento 1. Expor os fundamentos de Teste de Software; 2. Conceituar os Níveis de Teste; 3. Detalhar sobre

Leia mais

Módulo 4. Visão geral dos controles do COBIT aplicáveis para implantação da Sarbanes, o papel de TI, a importância dos softwares e exercícios

Módulo 4. Visão geral dos controles do COBIT aplicáveis para implantação da Sarbanes, o papel de TI, a importância dos softwares e exercícios Módulo 4 Visão geral dos controles do COBIT aplicáveis para implantação da Sarbanes, o papel de TI, a importância dos softwares e exercícios Estruturas e Metodologias de controle adotadas na Sarbanes COBIT

Leia mais

Métodos Ágeis para Desenvolvimento de Software Livre

Métodos Ágeis para Desenvolvimento de Software Livre Métodos Ágeis para Desenvolvimento de Software Livre Dionatan Moura Jamile Alves Porto Alegre, 09 de julho de 2015 Quem somos? Dionatan Moura Jamile Alves Ágil e Software Livre? Métodos Ágeis Manifesto

Leia mais

2 Fundamentação. 2.1 Manutenção e Evolução de Sistemas

2 Fundamentação. 2.1 Manutenção e Evolução de Sistemas 2 Fundamentação O objetivo deste trabalho é contribuir com pesquisas relacionadas à detecção de anomalias de modularidade em código orientado a objetos. Esses problemas normalmente trazem impactos negativos

Leia mais

Introdução Engenharia de Software

Introdução Engenharia de Software Introdução Engenharia de Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1 EMENTA Parte 1 Conceitos de Engenharia de Software. Processo de desenvolvimento

Leia mais

Mapeamento Sistemático sobre Métricas no Contexto de Métodos Ágeis aplicadas a Teste de Software

Mapeamento Sistemático sobre Métricas no Contexto de Métodos Ágeis aplicadas a Teste de Software sobre Métricas no Contexto de Métodos Ágeis aplicadas a Teste de Software Thaynã Gonçalves Mota Arilo Claudio Dias Neto (arilo@icomp.ufam.edu.br) Roteiro deste apresentação Introdução 2 Problema e Motivação

Leia mais

Autor(es) BARBARA STEFANI RANIERI. Orientador(es) LUIZ EDUARDO GALVÃO MARTINS, ANDERSON BELGAMO. Apoio Financeiro PIBIC/CNPQ. 1.

Autor(es) BARBARA STEFANI RANIERI. Orientador(es) LUIZ EDUARDO GALVÃO MARTINS, ANDERSON BELGAMO. Apoio Financeiro PIBIC/CNPQ. 1. 19 Congresso de Iniciação Científica ESPECIFICAÇÃO E IMPLEMENTAÇÃO DE UMA FERRAMENTA AUTOMATIZADA DE APOIO AO GERSE: GUIA DE ELICITAÇÃO DE REQUISITOS PARA SISTEMAS EMBARCADOS Autor(es) BARBARA STEFANI

Leia mais

Desenvolvimento Ágil de Software com Programação extrema (XP) Ricardo Argenton Ramos

Desenvolvimento Ágil de Software com Programação extrema (XP) Ricardo Argenton Ramos Desenvolvimento Ágil de Software com Programação extrema (XP) Ricardo Argenton Ramos Novos ventos no mundo do Desenvolvimento de Software Sociedade demanda grande quantidade de sistemas/aplicações software

Leia mais

Introdução ao TDD. Dionatan Moura. #guma10anos Abril de 2014. about.me/dionatanmoura

Introdução ao TDD. Dionatan Moura. #guma10anos Abril de 2014. about.me/dionatanmoura Introdução ao TDD #guma10anos Abril de 2014 Dionatan Moura about.me/dionatanmoura Introdução ao TDD Extreme Programming TDD Refatoração xunit Baby Steps Clean Code Patterns para TDD Red Bar Test Green

Leia mais

Tipos de teste de software

Tipos de teste de software Tipos de teste de software Volnys Borges Bernal volnys@lsi.usp.br Adilson Hira ayhira@lsi.usp.br Laboratório de Sistemas Integráveis Departamento de Sistemas Eletrônicos Escola Politécnica da USP Sumário

Leia mais

Evolução de Software e Refatoração

Evolução de Software e Refatoração Evolução de Software e Refatoração Mudança de software Mudança de software é inevitável Novos requisitos surgem quando o software é usado; O ambiente de negócio muda; Erros devem ser reparados; Novos computadores

Leia mais

7HVW'ULYHQ'HYHORSPHQW

7HVW'ULYHQ'HYHORSPHQW 81,9(56,'$'()('(5$/'25,2*5$1'('268/,167,7872'(,1)250È7,&$ 7HVW'ULYHQ'HYHORSPHQW Otávio Gaspareto REJDVSDUHWR#LQIXIUJVEU,QWURGXomR 7HVWGULYHQGHYHORSPHQW, ou TDD, também conhecido por WHVWILUVWGHYHORSPHQW,

Leia mais

Prof. Me. Marcos Echevarria

Prof. Me. Marcos Echevarria Prof. Me. Marcos Echevarria Nas décadas de 80 e 90 a visão geral sobre a melhor maneira de desenvolver software era seguir um cuidadoso planejamento para garantir uma boa qualidade; Esse cenário era aplicável

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Metodologias para Desenvolvimento de Software XP e SCRUM Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com http://www.edilms.eti.br Agenda Desenvolvimento Ágil de Software

Leia mais

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software. Processos de Software Objetivos Apresentar os modelos de processo de software Conjunto coerente de atividades para especificar, projetar, implementar e testar s de software Descrever os diferentes modelos

Leia mais

Orientações para o Planejamento e Realização do Projeto Final

Orientações para o Planejamento e Realização do Projeto Final Orientações para o Planejamento e Realização do Projeto Final Simone Diniz Junqueira Barbosa Versão: 1.0.4 Orientações para o Planejamento e Realização do Projeto Final Sumário 1 Introdução... 3 2 Projeto

Leia mais

Introdução a Métodos Ágeis de Desenvolvimento de Software

Introdução a Métodos Ágeis de Desenvolvimento de Software Introdução a Métodos Ágeis de Desenvolvimento de Software Curso de Verão Centro de Competência em Software Livre Departamento de Ciência da Computação - IME / USP Realização: AgilCoop Verão Ágil 2010 Copyleft

Leia mais

Requisitos para ferramentas de registro de defeitos de software

Requisitos para ferramentas de registro de defeitos de software Requisitos para ferramentas de registro de defeitos de software Alessandro Liebmam Departamento de Ciência da Computação Instituto de Ciências Exatas Universidade Federal de Minas Gerais (UFMG) CEP: 31270-010

Leia mais

UMA ABORDAGEM SOBRE TESTES AUTOMATIZADO DE SOFTWARES EM AMBIENTES DE DESENVOLVIMENTO

UMA ABORDAGEM SOBRE TESTES AUTOMATIZADO DE SOFTWARES EM AMBIENTES DE DESENVOLVIMENTO UMA ABORDAGEM SOBRE TESTES AUTOMATIZADO DE SOFTWARES EM AMBIENTES DE DESENVOLVIMENTO Robson L. Nascimento 1, Késsia R. C. Marchi¹ 1 Universidade Paranaense (UNIPAR) Paranavaí-PR-Brasil robsonluisn@yahoo.com.br,

Leia mais

Requisitos para Gestão de Requisitos no Desenvolvimento de Software que Utilizam Prática Ágeis

Requisitos para Gestão de Requisitos no Desenvolvimento de Software que Utilizam Prática Ágeis Requisitos para Gestão de Requisitos no Desenvolvimento de Software que Utilizam Prática Ágeis Abstract. Resumo. 1. Introdução Vinicius A. C. de Abreu 1 Departamento de Ciência da Computação - DCC Universidade

Leia mais

SISTEMA DE GESTÃO DE PROJETOS DE SOFTWARE - SGPS

SISTEMA DE GESTÃO DE PROJETOS DE SOFTWARE - SGPS SISTEMA DE GESTÃO DE PROJETOS DE SOFTWARE - SGPS Lilian R. M. Paiva, Luciene C. Oliveira, Mariana D. Justino, Mateus S. Silva, Mylene L. Rodrigues Engenharia de Computação - Universidade de Uberaba (UNIUBE)

Leia mais

Introdução ao OpenUP (Open Unified Process)

Introdução ao OpenUP (Open Unified Process) Introdução ao OpenUP (Open Unified Process) Diferentes projetos têm diferentes necessidades de processos. Fatores típicos ditam as necessidades de um processo mais formal ou ágil, como o tamanho da equipe

Leia mais

Proposta de um Processo Sistematizado de Controle de Manutenção de Software para Micro e Pequenas Empresas

Proposta de um Processo Sistematizado de Controle de Manutenção de Software para Micro e Pequenas Empresas Proposta de um Processo Sistematizado de Controle de Manutenção de Software para Micro e Pequenas Empresas Dayler Vinicius M. Alves 1, Carlos Renato Storck 1 1 Instituto de Informática Pontifícia Universidade

Leia mais

DESENVOLVIMENTO DE IDE PARA PLATAFORMA OMAP. Larissa Lucena Vasconcelos¹, Raul Fernandes Herbster², Joseana Macêdo Fechine³

DESENVOLVIMENTO DE IDE PARA PLATAFORMA OMAP. Larissa Lucena Vasconcelos¹, Raul Fernandes Herbster², Joseana Macêdo Fechine³ DESENVOLVIMENTO DE IDE PARA PLATAFORMA OMAP Larissa Lucena Vasconcelos¹, Raul Fernandes Herbster², Joseana Macêdo Fechine³ 1 Aluna do Curso de Ciência da Computação, integrante do PET-Computação, Depto.

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Critérios para Apoiar a Decisão Sobre o Momento de Parada dos Testes de Software

Critérios para Apoiar a Decisão Sobre o Momento de Parada dos Testes de Software Critérios para Apoiar a Decisão Sobre o Momento de Parada dos Testes de Software Victor Vidigal Ribeiro Guilherme Horta Travassos {vidigal, ght}@cos.ufrj.br Agenda Introdução Resultados da revisão Corpo

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Engenharia de Software Introdução Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Tópicos Apresentação da Disciplina A importância do Software Software Aplicações de Software Paradigmas

Leia mais

Guia Projectlab para Métodos Agéis

Guia Projectlab para Métodos Agéis Guia Projectlab para Métodos Agéis GUIA PROJECTLAB PARA MÉTODOS ÁGEIS 2 Índice Introdução O que são métodos ágeis Breve histórico sobre métodos ágeis 03 04 04 Tipos de projetos que se beneficiam com métodos

Leia mais

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Engenharia de Software Introdução Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Tópicos Apresentação da Disciplina A importância do Software Software Aplicações de Software Paradigmas

Leia mais

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB Testes de Software 1 AULA 01 INTRODUÇÃO A TESTES DE SOFTWARE Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB Conteúdo Programático do Curso Introdução a Testes de Software Técnicas de Testes de Software

Leia mais

Teste de Software Apresentação

Teste de Software Apresentação Teste de Software Apresentação Prof Daves Martins Msc Computação de Alto Desempenho Email: daves.martins@ifsudestemg.edu.br Agenda Teste de Software VV&T e Defeitos de Software Inspeção de Software Teste

Leia mais

05/05/2010. Década de 60: a chamada Crise do Software

05/05/2010. Década de 60: a chamada Crise do Software Pressman, Roger S. Software Engineering: A Practiotioner s Approach. Editora: McGraw- Hill. Ano: 2001. Edição: 5 Introdução Sommerville, Ian. SW Engineering. Editora: Addison Wesley. Ano: 2003. Edição:

Leia mais

Fatores Críticos de Sucesso em GP

Fatores Críticos de Sucesso em GP Fatores Críticos de Sucesso em GP Paulo Ferrucio, PMP pferrucio@hotmail.com A necessidade das organizações de maior eficiência e velocidade para atender as necessidades do mercado faz com que os projetos

Leia mais

Especialização em Arquitetura e Engenharia de Software

Especialização em Arquitetura e Engenharia de Software Especialização em Arquitetura e Engenharia de Software O curso vai propiciar que você seja um especialista para atua atuar na área de Arquitetura de Software em diferentes organizações, estando apto a:

Leia mais

Melhores práticas para gerenciamento de suporte a serviços de TI

Melhores práticas para gerenciamento de suporte a serviços de TI Melhores práticas para gerenciamento de suporte a serviços de TI Adriano Olimpio Tonelli Redes & Cia 1. Introdução A crescente dependência entre os negócios das organizações e a TI e o conseqüente aumento

Leia mais

ENGENHARIA DE SOFTWARE II. Modelos de Ciclo de Vida e Processos de Software AULA 2

ENGENHARIA DE SOFTWARE II. Modelos de Ciclo de Vida e Processos de Software AULA 2 ENGENHARIA DE SOFTWARE II Modelos de Ciclo de Vida e Processos de Software AULA 2 Sumário Motivação Conceitos de Processo de Desenvolvimento de Software Atividades que compõem os processos de desenvolvimento

Leia mais

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES Marcelo Augusto Lima Painka¹, Késsia Rita da Costa Marchi¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil

Leia mais

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp web@cercomp.ufg.br

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp web@cercomp.ufg.br XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp web@cercomp.ufg.br Introdução Criada por Kent Baeck em 1996 durante o projeto Daimler Chrysler. O sucesso

Leia mais

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software O que é software? Software e Engenharia de Software Programas de computador Entidade abstrata. Ferramentas (mecanismos) pelas quais: exploramos os recursos do hardware. executamos determinadas tarefas

Leia mais

Proposta de um método para auditoria de projetos de desenvolvimento de software iterativo e incremental

Proposta de um método para auditoria de projetos de desenvolvimento de software iterativo e incremental Proposta de um método para auditoria de projetos de desenvolvimento de software iterativo e incremental Francisco Xavier Freire Neto 1 ; Aristides Novelli Filho 2 Centro Estadual de Educação Tecnológica

Leia mais

Qualidade de Software. Anderson Belgamo

Qualidade de Software. Anderson Belgamo Qualidade de Software Anderson Belgamo Qualidade de Software Software Processo Produto Processo de Software Pessoas com habilidades, treinamento e motivação Processo de Desenvolvimento Ferramentas e Equipamentos

Leia mais

Introdução à Revisão Sistemática da Literatura. Fernando Kenji Kamei @fkenjikamei

Introdução à Revisão Sistemática da Literatura. Fernando Kenji Kamei @fkenjikamei Introdução à Revisão Sistemática da Literatura Fernando Kenji Kamei @fkenjikamei Quais são as razões para conduzirmos uma Revisão da Literatura? Algumas possíveis razões... Delimitar o problema de pesquisa;

Leia mais

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico.  Crise do Software Agenda Introdução a Engenharia de Cleidson de Souza cdesouza@ufpa.br http://www.ufpa.br/cdesouza! e! e Programação! Histórico " Crise do! No Silver Bullet! Fases Genéricas do Processo de Desenvolvimento

Leia mais

Um Mapeamento Sistemático da Pesquisa sobre a Influência da Personalidade na Engenharia de Software

Um Mapeamento Sistemático da Pesquisa sobre a Influência da Personalidade na Engenharia de Software 1 1 2 Um Mapeamento Sistemático da Pesquisa sobre a Influência da Personalidade na Engenharia de Software Shirley Jacinto (ssj@cin.ufpe.br) Orientador: Fabio Q. B. da Silva (fabio@cin.ufpe.br) Questões

Leia mais

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico.  Crise do Software Agenda Introdução a Engenharia de Cleidson de Souza cdesouza@ufpa.br http://www.ufpa.br/cdesouza! e Engenharia de! Engenharia de e Programação! Histórico " Crise do! No Silver Bullet! Fases Genéricas do

Leia mais

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

Leia mais

PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS

PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS Élysson Mendes Rezende Bacharelando em Sistemas de Informação Bolsista de Iniciação Científica

Leia mais

Fundamentos de Engenharia de Software. Josino Rodrigues (josinon@gmail.com)

Fundamentos de Engenharia de Software. Josino Rodrigues (josinon@gmail.com) Fundamentos de Engenharia de Software Josino Rodrigues (josinon@gmail.com) Apresentação Quem sou eu Quem são vocês? Qual seu nível de conhecimento associado a disciplina e quais suas expectativas? Objetivo

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 10 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 10 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 10 PROFª BRUNO CALEGARO Santa Maria, 10 de Outubro de 2013. Revisão aula anterior Documento de Requisitos Estrutura Padrões Template Descoberta

Leia mais

Engenharia de Software. Gerenciamento de Requisitos. Prof. Rodolfo Miranda de Barros rodolfo@uel.br

Engenharia de Software. Gerenciamento de Requisitos. Prof. Rodolfo Miranda de Barros rodolfo@uel.br Engenharia de Software Gerenciamento de Requisitos Prof. Rodolfo Miranda de Barros rodolfo@uel.br Engenharia de Requisitos (ER) Engenharia de O termo Engenharia implica em dizer que um processo sistemático

Leia mais

Engenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br

Engenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br Engenharia de Software 01 - Introdução Márcio Daniel Puntel marciopuntel@ulbra.edu.br Engenharia de Software Nações desenvolvidas dependem de software; Cada vez mais sistemas são controlados por software;

Leia mais

MSF- MICROSOFT SOLUTIONS FRAMEWORK. Cesar Eduardo Freitas Italo Alves

MSF- MICROSOFT SOLUTIONS FRAMEWORK. Cesar Eduardo Freitas Italo Alves MSF- MICROSOFT SOLUTIONS FRAMEWORK Cesar Eduardo Freitas Italo Alves A ORIGEM DO MSF (MICROSOFT SOLUTIONS FRAMEWORK) Baseado na experiência da empresa na construção de softwares como Office e Windows e

Leia mais

Capítulo 6: PSP. Capítulo 6: PSP Personal Software Process

Capítulo 6: PSP. Capítulo 6: PSP Personal Software Process Capítulo 6: PSP Personal Software Process Capítulo 1: Introdução Capítulo 2: Conceitos Básicos Capítulo 3: Qualidade de Produto (ISO9126) Capítulo 4: ISO9001 e ISO9000-3 Capítulo 5: CMM Capítulo 6: PSP

Leia mais

UMA ABORDAGEM SOBRE OS PADRÕES DE QUALIDADE DE SOFTWARE COM ÊNFASE EM SISTEMAS PARA WEB

UMA ABORDAGEM SOBRE OS PADRÕES DE QUALIDADE DE SOFTWARE COM ÊNFASE EM SISTEMAS PARA WEB UMA ABORDAGEM SOBRE OS PADRÕES DE QUALIDADE DE SOFTWARE COM ÊNFASE EM SISTEMAS PARA WEB Alan Francisco de Souza¹, Claudete Werner¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil alanfsouza.afs@gmail.com,

Leia mais

Instituto de Computação, Universidade Federal do Amazonas (UFAM) Manaus-AM, Brasil

Instituto de Computação, Universidade Federal do Amazonas (UFAM) Manaus-AM, Brasil Elicitação de Requisitos a partir de Modelos de Processos de Negócio e Modelos Organizacionais: Uma pesquisa para definição de técnicas baseadas em heurísticas Marcos A. B. de Oliveira 1, Sérgio R. C.

Leia mais