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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FireScrum: Ferramenta de apoio à gestão de projetos utilizando Scrum

FireScrum: Ferramenta de apoio à gestão de projetos utilizando Scrum C.E.S.A.R.EDU Unidade de Educação do Centro de Estudos e Sistemas Avançados do Recife Projeto de Dissertação de Mestrado FireScrum: Ferramenta de apoio à gestão de projetos utilizando Scrum Eric de Oliveira

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

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

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

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

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

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

Engenharia de Software

Engenharia de Software Engenharia de Software Capítulo 3 Processos de Software Slides do Livro do Sommerville, 2000 Disponíveis em inglês em www.software-engin.com Traduzidos por Jacinta Pereira Graduando do Curso de Letras

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

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

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

ANÁLISE DA UTILIZAÇÃO DE PRÁTICAS DO EXTREME PROGRAMMING PARA A PREVENÇÃO DO DÉBITO TÉCNICO DE PROJETOS DE SOFTWARE

ANÁLISE DA UTILIZAÇÃO DE PRÁTICAS DO EXTREME PROGRAMMING PARA A PREVENÇÃO DO DÉBITO TÉCNICO DE PROJETOS DE SOFTWARE CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇAO EM ENGENHARAIA DE SOFTWARE CENTRADA EM MÉTODOS ÁGEIS ANÁLISE DA UTILIZAÇÃO DE PRÁTICAS DO EXTREME PROGRAMMING

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

Requisitos de Ferramentas de Gestão de Projetos de Desenvolvimento de Software

Requisitos de Ferramentas de Gestão de Projetos de Desenvolvimento de Software Requisitos de Ferramentas de Gestão de Projetos de Desenvolvimento de Software Keyla Guimarães Macharet Brasil 1 1 Departamento de Ciência da Computação Universidade Federal de Minas Gerais (UFMG) CEP

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

Requisitos de Ferramentas de Apoio aos Processos de Medição de Software. Marco Aurélio Vilaça de Melo

Requisitos de Ferramentas de Apoio aos Processos de Medição de Software. Marco Aurélio Vilaça de Melo Requisitos de Ferramentas de Apoio aos Processos de Medição de Software Marco Aurélio Vilaça de Melo Departamento de Ciência da Computação Universidade Federal de Minas Gerais (UFMG) Belo Horizonte MG

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

Á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

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

Implantando um Programa de Melhoria de Processo: Uma Experiência Prática

Implantando um Programa de Melhoria de Processo: Uma Experiência Prática Implantando um Programa de Melhoria de Processo: Uma Experiência Prática Evandro Polese Alves Ricardo de Almeida Falbo Departamento de Informática - UFES Av. Fernando Ferrari, s/n, Vitória - ES - Brasil

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

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

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

Professor: Disciplina:

Professor: Disciplina: Professor: Curso: Disciplina: Marcos Morais de Sousa marcosmoraisdesousa@gmail.com marcosmoraisdesousa.blogspot.com Sistemas de informação Engenharia de Software II Gerenciamento de Qualidade CMMI e MPS.BR

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

Realize revisões e inspeções e evite custos e esforços desnecessários

Realize revisões e inspeções e evite custos e esforços desnecessários Anais da Semana de Informática CESIT/UEA. Volume 1, Número 1. Manaus/AM: UEA Edições, 2013. ISSN 2319-0418 Realize revisões e inspeções e evite custos e esforços desnecessários Andreza Bastos Mourão 1,

Leia mais

Autoria: Nestor de Oliveira Filho, Franciane Silveira

Autoria: Nestor de Oliveira Filho, Franciane Silveira APLICAÇÃO DO PROCESSO TOLL-GATE PARA SELEÇÃO DE OPORTUNIDADES E PROJETOS DE NOVOS PRODUTOS EM EUMA EMPRESA FORNECEDORA DE BENS E SERVIÇOS PARA O SETOR DE ENERGIA Resumo Autoria: Nestor de Oliveira Filho,

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

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

Identificando a Formação de Ilhas de Conhecimento em Projetos de Software

Identificando a Formação de Ilhas de Conhecimento em Projetos de Software Identificando a Formação de Ilhas de Conhecimento em Projetos de Software Francisco Vanderson de Moura Alves 1, Pedro de Alcântara dos Santos Neto 1, Werney Ayala Luz Lira 1, Ricardo de Andrade Lira Rabêlo

Leia mais

O que é um processo de software?

O que é um processo de software? O que é um processo de software? Um conjunto de atividades realizadas por pessoas cujo objetivo é desenvolvimento ou evolução de software e sua documentação. Atividades genéricas em todos os processos:

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

Engenharia de Software I CURSO DE INFORMÁTICA. 3O SEMESTRE PROF.: LUIS AUGUSTO MACHADO MORETTO. ESP.

Engenharia de Software I CURSO DE INFORMÁTICA. 3O SEMESTRE PROF.: LUIS AUGUSTO MACHADO MORETTO. ESP. Engenharia de Software I CURSO DE INFORMÁTICA. 3O SEMESTRE PROF.: LUIS AUGUSTO MACHADO MORETTO. ESP. Na aula passada... Atividade em grupo Intro Eng. Software Conhecimento, Problemas Video habilidades

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

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

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

Test-Module: uma ferramenta para gerenciamento de testes de software integrada ao FireScrum

Test-Module: uma ferramenta para gerenciamento de testes de software integrada ao FireScrum Test-Module: uma ferramenta para gerenciamento de testes de software integrada ao FireScrum Audrey B. Vasconcelos, Iuri Santos Souza, Ivonei F. da Silva, Keldjan Alves Centro de Informática Universidade

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

Artigos científicos / Scientific articles

Artigos científicos / Scientific articles Artigos científicos / Scientific articles Rev. Ibirapuera, São Paulo, n. 1, p. 31-35, jan./jun. 2011 REUSO DE REQUISITOS PARA FAMÍLIAS DE PRODUTOS EM SISTEMAS EMBARCADOS Cristiano Marçal Toniolo Universidade

Leia mais

Processo de Teste de Software

Processo de Teste de Software Processo de Teste de Software Introdução Auri Marcelo Rizzo Vincenzi Gilcimar Divino de Deus Instituto de Informática Universidade Federal de Goiás 22 de agosto de 2008 Organização Teste Desafios do Teste

Leia mais

SIPTEST System Intelligent Process Testing. Abordagens de teste para metodologias de desenvolvimento específicas.

SIPTEST System Intelligent Process Testing. Abordagens de teste para metodologias de desenvolvimento específicas. SIPTEST System Intelligent Process Testing. Abordagens de teste para metodologias de desenvolvimento específicas. SIPTEST - System Intelligent Testing Link Consulting,SA Pág. 0 de 8 Índice 1 Introdução...

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

MÉTODO ÁGIL XP (EXTREME PROGRAMMING)

MÉTODO ÁGIL XP (EXTREME PROGRAMMING) MÉTODO ÁGIL XP (EXTREME PROGRAMMING) Luciano Malaquias de Souza* * RESUMO: Como o emprego dos métodos para desenvolvimento de software tem se tornado mais popular, existe uma grande demanda, pela industria,

Leia mais

(STUDY OF AGILITY IN SOFTWARE DEVELOPMENT PROCESS WITH TEAMS AT DIFFERENT WORK UNITS USING A ON-LINE MANAGEMENT TOOL)

(STUDY OF AGILITY IN SOFTWARE DEVELOPMENT PROCESS WITH TEAMS AT DIFFERENT WORK UNITS USING A ON-LINE MANAGEMENT TOOL) ESTUDO DE AGILIDADE NO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE COM EQUIPES EM DIFERENTES UNIDADES DE TRABALHO UTILIZANDO UMA FERRAMENTA DE GERENCIAMENTO ON-LINE (STUDY OF AGILITY IN SOFTWARE DEVELOPMENT

Leia mais

Comparação entre Metodologias RUP e XP

Comparação entre Metodologias RUP e XP Comparação entre Metodologias RUP e XP Carlos G. Vasco, Marcelo Henrique Vithoft, Paulo Roberto C. Estante Programa de Pós Graduação em Informática Aplicada Pontifícia Universidade Católica do Paraná (PUCPR)

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

METODOLOGIA DE GERENCIAMENTO DE PROJETOS SCRUM: ESTUDO DE REVISÃO. Bruno Edgar Fuhr 1

METODOLOGIA DE GERENCIAMENTO DE PROJETOS SCRUM: ESTUDO DE REVISÃO. Bruno Edgar Fuhr 1 METODOLOGIA DE GERENCIAMENTO DE PROJETOS SCRUM: ESTUDO DE REVISÃO Bruno Edgar Fuhr 1 Resumo: O atual mercado de sistemas informatizados exige das empresas de desenvolvimento, um produto que tenha ao mesmo

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

Casos de Teste de Uso: uma alternativa de especificação para o desenvolvimento dirigido por testes

Casos de Teste de Uso: uma alternativa de especificação para o desenvolvimento dirigido por testes Casos de Teste de Uso: uma alternativa de especificação para o desenvolvimento dirigido por testes Simone Tejo Salgado Beato Instituto de Pesquisas Tecnológicas de São Paulo SP Brasil sisalgado@uol.com.br

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

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

Uma Análise da História do VEM, WBVS e WMSWM

Uma Análise da História do VEM, WBVS e WMSWM VEM Uma Análise da História do VEM, WBVS e WMSWM Renato Novais, Thiago S. Mendes, Fernando Teles Instituto Federal da Bahia (IFBA) Salvador Bahia Brasil {renato,thiagosouto,fernandoteles}@ifba.edu.br Abstract.

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

Conceitos e Benefícios do Test Driven Development

Conceitos e Benefícios do Test Driven Development Conceitos e Benefícios do Test Driven Development Eduardo N. Borges Instituto de Informática Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 91.501-970 Porto Alegre RS Brazil enborges@inf.ufrgs.br

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

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

Extreme Programming e Qualidade de Software

Extreme Programming e Qualidade de Software Extreme Programming e Qualidade de Software Antonio Sergio Ferreira Bonato Departamento de Sistemas Digitais Escola Politécnica da USP Objetivo (I) mostrar que o uso de um processo de desenvolvimento de

Leia mais

Table 1. Dados do trabalho

Table 1. Dados do trabalho Título: Desenvolvimento de geradores de aplicação configuráveis por linguagens de padrões Aluno: Edison Kicho Shimabukuro Junior Orientador: Prof. Dr. Paulo Cesar Masiero Co-Orientadora: Prof a. Dr. Rosana

Leia mais

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças. METODOLOGIAS ÁGEIS SURGIMENTO As metodologias ágeis surgiram em resposta ao problema dos atrasos no desenvolvimento de software e aos cancelamentos, devido ao fato dos sistemas demorarem muito tempo para

Leia mais

UNIVERSIDADE ESTADUAL DE CAMPINAS - UNICAMP FACULDADE DE TECNOLOGIA - FT GUSTAVO ARCERITO MARIVALDO FELIPE DE MELO

UNIVERSIDADE ESTADUAL DE CAMPINAS - UNICAMP FACULDADE DE TECNOLOGIA - FT GUSTAVO ARCERITO MARIVALDO FELIPE DE MELO UNIVERSIDADE ESTADUAL DE CAMPINAS - UNICAMP FACULDADE DE TECNOLOGIA - FT GUSTAVO ARCERITO MARIVALDO FELIPE DE MELO Análise da Metodologia Ágil SCRUM no desenvolvimento de software para o agronegócio Limeira

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

Indicações de Abordagens para Rastreabilidade de Requisitos no contexto do MR-MPS-SW por meio de uma Revisão Sistemática da Literatura

Indicações de Abordagens para Rastreabilidade de Requisitos no contexto do MR-MPS-SW por meio de uma Revisão Sistemática da Literatura X Workshop Anual do MPS (WAMPS 2014) Indicações de Abordagens para Rastreabilidade de Requisitos no contexto do MR-MPS-SW por meio de uma Revisão Sistemática da Literatura Apresentador: Paulo Malcher Autores:

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

FASES DO DESENVOLVIMENTO DE SOFTWARE

FASES DO DESENVOLVIMENTO DE SOFTWARE COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO FASES DO DESENVOLVIMENTO DE SOFTWARE FOZ DO IGUAÇU 2013 1 1. DESENVOLVIMENTO DE SOFTWARE...

Leia mais

Métodos Ágeis de Desenvolvimento de Software

Métodos Ágeis de Desenvolvimento de Software Conteúdo Métodos Ágeis de Desenvolvimento de Software Engenharia de Software Profa. Elisa Yumi Nakagawa 2. Semestre 2005 Material inicialmente elaborado por André Figueiredo e mantido por pesquisadores

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

Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software

Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software MICHEL DOS SANTOS SOARES 1 Unipac - Universidade Presidente Antônio Carlos Faculdade de Tecnologia e Ciências de Conselheiro

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

GESTÃO DO CONHECIMENTO PARA O DESENVOLVIMENTO DE SOFTWARE COM MÉTODOS ÁGEIS

GESTÃO DO CONHECIMENTO PARA O DESENVOLVIMENTO DE SOFTWARE COM MÉTODOS ÁGEIS GESTÃO DO CONHECIMENTO PARA O DESENVOLVIMENTO DE SOFTWARE COM MÉTODOS ÁGEIS Jeandro Maiko Perceval 1 Carlos Mario Dal Col Zeve2 Anderson Ricardo Yanzer Cabral ² RESUMO Este artigo apresenta conceitos sobre

Leia mais

Análise comparativa entre a engenharia de requisitos e o método de desenvolvimento ágil: Scrum

Análise comparativa entre a engenharia de requisitos e o método de desenvolvimento ágil: Scrum Análise comparativa entre a engenharia de requisitos e o método de desenvolvimento ágil: Scrum Patrícia Bastos Girardi, Sulimar Prado, Andreia Sampaio Resumo Este trabalho tem como objetivo prover uma

Leia mais

Gerenciamento de Requisitos em Scrum baseado em Test Driven Development

Gerenciamento de Requisitos em Scrum baseado em Test Driven Development Gerenciamento de Requisitos em Scrum baseado em Test Driven Development Rafael Soares 1, Thiago Cabral 1, Fernanda Alencar 1,2 1 Programa de Pós Graduação em Engenharia da Computação, Universidade de Pernambuco,

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

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

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

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

A IMPORTÂNCIA DO TESTE DE SOFTWARE PARA A QUALIDADE DO PROJETO

A IMPORTÂNCIA DO TESTE DE SOFTWARE PARA A QUALIDADE DO PROJETO A IMPORTÂNCIA DO TESTE DE SOFTWARE PARA A QUALIDADE DO PROJETO Autora: LUCIANA DE BARROS ARAÚJO 1 Professor Orientador: LUIZ CLAUDIO DE F. PIMENTA 2 RESUMO O mercado atual está cada vez mais exigente com

Leia mais

João Arthur Brunet Monteiro. Março de 2008

João Arthur Brunet Monteiro. Março de 2008 Revisão Bibliográfica em Automação de Testes João Arthur Brunet Monteiro Universidade Federal de Campina Grande Março de 2008 João Arthur Brunet Monteiro (UFCG) Revisão Bibliográfica em Automação de Testes

Leia mais

Ferramenta para Inclusão do Código de Testes na Documentação das Classes

Ferramenta para Inclusão do Código de Testes na Documentação das Classes Ferramenta para Inclusão do Código de Testes na Documentação das Classes Herbert Vieira 1, Jolienai Viegas 1, Eduardo Guerra 1, Fábio Silveira 2, Clovis Fernandes 1 1 Instituto Tecnológico de Aeronáutica

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

Modelos de processos de desenvolvimento de software

Modelos de processos de desenvolvimento de software Definição Um modelo de processo de software é uma representação abstrata de um processo. Os modelos de processo podem ser desenvolvidos a partir de várias perspectivas e podem mostrar as atividades envolvidas

Leia mais