A Relação Entre Desenvolvimento Orientado a Testes e Qualidade de Software

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

Download "A Relação Entre Desenvolvimento Orientado a Testes e Qualidade de Software"

Transcrição

1 A Relação Entre Desenvolvimento Orientado a Testes e Qualidade de Software Cássio L. Ribeiro 1 1 Instituto de Informática Pontifícia Universidade Católica de Goiás (PUC Goiás) Goiânia GO Brasil cassio.landim@gmail.com Abstract. This paper shows how the consequences of the use of test-driven development affect the quality of software. It lists some situations that negatively affect the quality of software, such as the lack of unit testing and presence of disorganized code. It demonstrates how the use of test-driven development mitigates or eliminates the occurrence of these situations. Finally, it highlights other important quality factors that the test-driven development does not resolve properly. Resumo. O presente artigo evidencia de que maneira as consequências do emprego do desenvolvimento orientado a testes afetam a qualidade de um software. São listadas algumas situações que afetam negativamente a qualidade de um software, como a ausência de testes unitários e a presença de código desorganizado. Demonstramos como o emprego do desenvolvimento orientado a testes ameniza ou elimina a ocorrência dessas situações. Ao final, evidencia outros fatores importantes para a qualidade, que o desenvolvimento orientado a testes deixa a desejar. 1. Introdução A natureza ubíqua da computação moderna, software e infraestrutura de informação e, ainda, a demanda crescente por automação e conveniência pela sociedade moderna tem gerado constante aumento de tamanho e complexidade dos sistemas de software modernos. Este incremento em tamanho e complexidade acaba por causar consequências nãointencionais em termos de gerar problemas de qualidade [Tian 2005]. A alta complexidade e o amplo escopo dificultam a prevenção ou eliminação de problemas de software e seus impactos negativos relacionados; consequentemente, várias atividades de garantia da qualidade são realizadas para prevenir e/ou eliminar certas classes de problemas, ou ainda, para reduzir a probabilidade ou severidade de tais impactos quando não se pode evitá-los [Tian 2005]. As metodologias ágeis emergiram da necessidade de se minimizar os riscos do desenvolvimento de softwares. Essas metodologias evoluíram como parte de uma reação contrária aos processos de desenvolvimento utilizados na época, caracterizados como pesados, burocráticos, micro-gerenciados e com uma alta tendência a se produzir documentos formais [Langr 2005]. Como o desenvolvimento orientado a testes (Test-Driven Development - TDD) é uma prática fundamental da Programação Extrema (extreme Programming - XP), que está

2 começando a ganhar uma ampla aceitação entre as entidades desenvolvedoras de software, este estudo visa evidenciar de que maneira o emprego do TDD afeta a qualidade de um software. 2. Conceitos de Qualidade de Software e TDD 2.1. Qualidade de Software [Tian 2005] coloca a qualidade sob a perspectiva das expectativas dos usuários de software. Em geral, o que as pessoas esperam como qualidade em um sistema de software é que eles façam o que foram programados para fazer. Em outras palavras, eles devem fazer a coisa certa, ou seja, eles devem executar suas tarefas específicas corretamente ou satisfatoriamente. Comportamentos inesperados se manifestando na forma de defeitos, podem afetar profundamente a qualidade de um software, porém, este não é o único fator que determina a qualidade. Segundo [Friedman 2009], as metodologias ágeis tratam o processo de incremento da qualidade como um exercício de eliminação do desperdício onde o conceito de desperdício assume o mesmo significado no contexto da manufatura lean 1 [James P. Womack 1990], onde um produto de alta qualidade é aquele que previne o desperdício do esforço investido pelo usuário no processo de produzir algo de valor. [Friedman 2009] identifica três fatores principais de desperdício que reduzem a qualidade de um software. O primeiro e mais comum são os defeitos. Estes podem ser categorizados como ocorrências onde o sistema se comporta de forma inesperada. Enquanto o desenvolvedor espera que o sistema se comporte de certa maneira, o comportamento exibido é diferente devido a defeitos inseridos na fase de codificação. O problema é que quando um defeito afeta o usuário, em casos menos graves, pode forçar o usuário a repetir alguma ação, enquanto que em casos extremos pode causar uma perda substancial de dados que irá requerer um esforço significativo para serem reproduzidos (quando possível). O segundo fator está ligado a problemas de usabilidade, onde um produto de difícil uso causa um desperdício de esforço. Em casos extremos, os usuários fazem uso de caminhos alternativos para atingirem seus objetivos; entretanto, em vários casos, os usuários empregam a forma incorreta de execução ao invés de perceber que a qualidade atual do sistema é insuficiente para atender seus propósitos. O terceiro fator, funcionalidades do sistema que não são utilizadas, também representam um fator de desperdício. Além de inúteis, retardam e dificultam o uso do sistema. Esta é a forma de desperdício que mais despende esforços para ser localizada e eliminada Verificação versus Validação Verificação é provar que o produto atende corretamente os requisitos especificados em atividades prévias durante o ciclo de vida de desenvolvimento, já a validação checa que o 1 O termo lean foi cunhado ao final da década de 80 em um projeto de pesquisa do Massachusetts Institute of Technology (MIT) sobre a indústria automobilística mundial. A pesquisa revelou que a Toyota havia desenvolvido um novo e superior paradigma de gestão nas principais dimensões dos negócios (manufatura, desenvolvimento de produtos e relacionamento com os clientes e fornecedores).

3 sistema atende os requisitos do cliente ao final do ciclo de vida. Tradicionalmente, teste de software tem sido considerado um processo de validação, isto é, uma fase do ciclo de vida [Lewis 2004] Qualidade Externa e Interna Qualidade externa é a qualidade medida pelo cliente, e qualidade interna é a qualidade medida pelas pessoas que possuem acesso ao código, como é o caso dos programadores e arquitetos. As metodologias ágeis pregam que a qualidade interna de um software não é negociável, ela deve ser fixada como ótima durante todo o ciclo de vida do software. Algumas equipes, na esperança de reduzir o prazo de entrega, sacrificam temporariamente a qualidade interna na esperança de que a qualidade externa não sofrerá um grande impacto. Esta estratégia é muito tentadora em um cenário em curto prazo. Porém, eventualmente problemas de qualidade interna o alcançarão e tornarão aquele software proibitivamente caro de manter ou mesmo incapaz de alcançar um nível competitível de qualidade externa [Beck 1999]. Este fenômeno é conhecido como débito tecnológico. Segundo [Friedman 2009], tentar trocar a qualidade por velocidade é uma das estratégias mais errôneas existentes Testes Unitários De acordo com [Lewis 2004], teste unitário é a escala mais micro de testes para testar funções particulares ou módulos de códigos. Tipicamente são feitos pelo programador e não por testadores, já que requerem um conhecimento detalhado do código e do design interno do software. Nem sempre são fáceis de se implementar a não ser que a aplicação tenha uma arquitetura muito bem desenhada com código organizado. [Bellware 2009] acredita que quando testes são escritos após o código de produção já estar pronto, na realidade o que se está fazendo é um tipo de engenharia reversa, que é uma forma de engenharia de que exige uma grande quantidade de esforço. Exige muito esforço porque ao se escrever os testes neste momento, o programador precisará ler todo o código, entender o que ele faz e adivinhar como escrever um teste para este código. Os testes produzidos desta maneira acabarão, provavelmente, não servindo para cobrir o mínimo necessário dos caminhos alternativos de execução do código Desenvolvimento Orientado a Testes As metodologias ágeis já se tornaram populares na área de desenvolvimento de software. A cada dia, mais empresas as adotam para amenizar problemas de qualidade e de entrega de produtos que agreguem o valor real aos seus clientes. Algumas metodologias ágeis como Scrum tem foco em práticas gerenciais e organizacionais, enquanto XP tem foco maior em práticas de programação. O TDD é uma das práticas que fazem parte do núcleo do XP [Beck 1999] que entra em cena durante as fases de desenho e codificação de um software. XP é uma metodologia ágil e leve para equipes de desenvolvimento de software de tamanho pequeno à médio que lidam com requisitos vagos ou que mudam rapidamente

4 [Beck 1999]. XP procura melhorar um projeto de software através da comunicação, simplicidade, feedback, respeito e coragem. Dá ênfase no trabalho em equipe, permitindo que os desenvolvedores respondam com confiança às mudanças de requisitos dos clientes, até mesmo tardiamente no ciclo de vida do projeto. Scrum é um processo ágil para o desenvolvimento de projetos, sendo mais adequado para projetos onde os requisitos estão mudando ou emergindo rapidamente. É mais focado nas pessoas e na forma como elas deverão interagir entre si para atingir um objetivo comum. [Schwaber 2004] afirma que o Scrum baseia todas as suas práticas em uma estrutura de processo incremental e iterativo. Esta estrutura é formada por iterações de atividades de desenvolvimento que ocorrem uma após a outra, sendo que a saída de cada iteração é um incremento do produto. Dentro desta iteração ocorrem várias iterações mais curtas (inspeções diárias), onde os indivíduos membros do time se encontram para inspecionar as atividades dos outros membros e fazerem as adaptações necessárias. Uma lista de requisitos guia a iteração. Este ciclo se repete até que o projeto termine. Ao início de cada iteração, o time analisa o que deve ser feito. Ele então escolhe o que acredita que possa se tornar um incremento de funcionalidade potencialmente entregável ao final da iteração. O time é deixado a sós para fazer seu melhor esforço pelo resto da iteração. Ao final da iteração, o time apresenta o incremento de funcionalidade que construiu para que os patrocinadores do projeto possam inspecioná-lo e fazer ajustes para as próximas iterações do projeto. O processo criativo durante as iterações é o coração da produtividade do Scrum. Já o TDD é uma prática que visa aumentar a velocidade da entrega de produtos através da simplificação das atividades de desenho de software. [Koskela 2008] resume a filosofia do TDD em uma frase somente escreva código para fazer um teste falho passar. [Astels 2003] define o TDD como sendo um estilo de desenvolvimento onde: Uma suíte exaustiva de testes de programadores é mantida; Nenhum código entra em produção a não ser que tenha testes associados; Os testes são escritos antes; Os testes determinam que código precise ser escrito Ciclo Teste-Codificação-Refatoração TDD é uma técnica de desenho e desenvolvimento que nos ajuda a construir um sistema de forma incremental, com a consciência de que nunca nos afastamos de uma baseline funcional e entregável. O ciclo Teste-Codificação-Refatoração é quem dita o ritmo do desenvolvimento através de pequenos e controlados passos. A sequência clássica que nos foi ensinada, onde primeiramente produzimos o desenho, implementamos o desenho, e só então testamos o software em busca dos defeitos, é totalmente invertida quando comparada ao ciclo Teste-Codificação-Refatoração. Primeiramente escrevemos o teste, depois escrevemos o código para fazer este teste passar e então passamos para a fase de desenho. Esta fase de desenho é diferente da fase de desenho tradicional. No TDD ela é chamada de refatoração, onde o desenho atual do código é transformado em um desenho melhor.

5 O ciclo Teste-Codificação-Refatoração também pode ser chamado de ciclo Vermelho-Verde-Refatoração [Astels 2003]. O vermelho simboliza a fase inicial do ciclo TDD onde o teste escrito falha. Ele falha porque o sistema não está funcional; ele não possui as funcionalidades que desejamos que ele tenha. Em alguns ambientes de desenvolvimento, essa falha é evidenciada através da exibição de uma barra vermelha. Na segunda fase implementamos as funcionalidades que faltavam para fazer todos os testes passarem, ou seja, os testes que já existiam e o novo teste recém-introduzido. Neste momento, a barra visual deve se tornar verde. Somente se passa para a próxima etapa quando nenhum teste estiver falho. Na última parte do ciclo é feita a refatoração. Refinamos o desenho do código sem alterarmos seu comportamento externo, mantendo todos os testes passando e a com a barra visual exibindo a cor verde. 3. A Relação entre TDD e Qualidade Qualidade não pode ser alcançada através da avaliação de um produto já feito. O objetivo, portanto, é prevenir defeitos de qualidade ou deficiências em primeiro lugar, tornando os produtos avaliáveis através de medidas de garantia de qualidade [Lewis 2004]. [Beck 1999] cita alguns exemplos de riscos relacionados ao desenvolvimento de software. Dos riscos citados, dois estão diretamente ligados a qualidade de software e podem ser tratados através da utilização de TDD: Taxa de defeitos o software é colocado em produção mas a taxa de defeitos é tão alta que ele acaba não sendo utilizado. TDD eleva a validação de um software a um patamar superior, testando-o função por função; Deterioração do sistema o software é colocado em produção com sucesso, porém após algum tempo o custo de se fazer modificações ou a taxa de defeitos aumenta tanto que o sistema precisa ser substituído. TDD mantém o programador focado na solução, de forma que o software não fica carregado de códigos desnecessários, duplicados ou de difícil manutenção, impedindo a deterioração do sistema. Nesta mesma obra, [Beck 1999] elaborou três frases de impacto, que servem como um ponto de partida para entendermos como o TDD afeta a qualidade de um software: Toda vez que alguém toma uma decisão e não a testa, existe uma grande probabilidade de que esta decisão esteja errada; Funcionalidades de software que não podem ser demonstradas através de testes automatizados simplesmente não existem; Testes nos dão à chance de pensar sobre o que queremos, independente da forma como a solução será implementada. Ao utilizar TDD, devemos escrever testes para cada solução implementada. Dessa forma, diminuímos a probabilidade de tomarmos uma decisão errada. Ao mesmo tempo, temos a oportunidade de experimentar várias implementações diferentes para o mesmo problema e escolher aquela mais limpa, elegante e que apresente o melhor desempenho. Na época em que [Beck 2002] publicou sua obra, afirmou que ainda não haviam estudos que demonstrassem científicamente as diferenças na qualidade, produtividade ou diversão entre a utilização de TDD e quaisquer outras alternativas. Atualmente já existem

6 publicados alguns estudos objetivos sobre o impacto da utilização de TDD com relação à qualidade e produtividade, frente à maneira tradicional de desenvolvimento. Em seu blog, [Hawley 2004] publicou os resultados de uma pesquisa que ele mesmo realizou com a ajuda de seu colega de trabalho. Nesta pesquisa ele constatou que 92% dos desenvolvedores perceberam que TDD os forçaram a produzir código de alta qualidade. Constatou também, através dos códigos produzidos pelos participantes, que houve um incremento na qualidade do código, uma vez que eles tiveram 18% mais de sucesso nos testes de caixa-preta em comparação com os códigos produzidos da maneira tradicional Desenho Simplificado e Evolucionário Escrevendo somente o necessário para os testes e removendo toda a duplicação, você automaticamente obtém um desenho que é perfeitamente adaptado para os requisitos atuais e igualmente preparado para todas as futuras funcionalidades [Beck 2002]. Design simplificado reduz os custos porque ao escrever menos código para atender os requisitos, menos código existirá para ser mantido no futuro. Design simplificado é mais fácil de se construir, manter e entender Refatoração Os testes lhe dão a confiança de que grandes refatorações não mudarão o comportamento do sistema, o que se conclui que, quanto maior a confiança, mais agressivamente você poderá conduzir refatorações em larga escala que estenderão a vida de seu sistema. A refatoração torna a elaboração dos próximos testes muito mais fácil [Beck 2002]. Custos são reduzidos porque a refatoração contínua evita que o desenho se degrade com o passar do tempo, assegurando que o código continue fácil de ser entendido, mantido e modificado Feedback Constante [Beck 2002], no último capítulo de sua publicação, afirma que TDD o ajuda a dar atenção aos problemas certos na hora certa, de forma que o desenho do software fica mais limpo e com muito menos defeitos. O TDD faz com que o programador ganhe confiança sobre seu código com o passar do tempo, isto é, à medida que os testes vão se acumulando (e melhorando), ele ganha confiança no comportamento do sistema. E ainda, à medida que o desenho é refinado, mais e mais mudanças se tornam possíveis. Outra vantagem do TDD que [Beck 2002] acredita poder explicar seus efeitos positivos, é a forma como ele encurta o ciclo de feedback sobre as decisões de desenho. Ele dura apenas segundos ou minutos, e é seguido pela reexecução dos testes dezenas ou centenas de vezes por dia. Ao invés de se projetar um desenho e então esperar semanas ou meses para outra pessoa sentir as dores ou glórias de sua consequência, o feedback emerge em segundos ou minutos, enquanto você tenta traduzir suas idéias em interfaces plausíveis Suíte de Testes (Regressão) Usando TDD, os testes unitários são criados num momento onde a funcionalidade a ser implementada está mais bem definida na mente do programador, e depois podem e devem

7 ser utilizados para fazer testes de regressão. Uma suíte de testes automáticos feita por programadores reduz os custos de um software funcionando como uma rede de segurança de testes que capturam defeitos, problemas de comunicação e ambigüidades antes e permitem que o desenho possa ser modificado de forma incremental. Esta suíte de testes gerada pelo TDD é fundamental para viabilizar procedimentos de Integração Contínua Documentação Para Programadores A suíte de testes serve como uma documentação voltada para o programador que tem um entendimento mais rápido e facilitado do que uma parte do código faz através do código que o testa. Cada teste unitário especifica o uso apropriado de uma classe de produção [Langr 2005]. 4. Conclusões Esta técnica de desenvolvimento produz desenhos menos acoplados que são mais fáceis de manter, reduz altamente a quantidade de defeitos, e reforça a construção e manutenção apenas do que é realmente necessário. Finalmente, testes bem escrito atuam como um tipo de requisitos executáveis que ajudam a manter o entendimento compartilhado da equipe de desenvolvimento, sobre como o sistema de software representa os problemas do mundo real. Por outro lado, o fato de se ter um grande número de testes unitários passando com sucesso, pode passar uma falsa sensação de segurança, resultando na implementação de menos atividades de garantia de qualidade, como testes de integração e testes de conformidade. É importante ressaltar também que, esta técnica não garante a obtenção de níveis aceitáveis em certos aspectos do software final, como usabilidade e desempenho. Além disso, TDD não consegue mitigar riscos relacionados com a falta de requisitos ou com requisitos erroneamente definidos. Referências Astels, D. (2003). Test-Driven Development: A Practical Guide. Prentice Hall PTR. Beck, K. (1999). Extreme Programming Explained: Embrace Change. Addison Wesley. Beck, K. (2002). Test-Driven Development By Example. Addison Wesley. Bellware, S. (2009). Good Test, Better Code - From Unit Testing to Behavior-Driven Development (10:40). Fowler, M. (2006). Continuous integration. Friedman, L. (2009). Quality - an agile point of view. TE: Testing Experience, Setembro: Segundo [Fowler 2006], integração contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente, podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva um software coeso mais rapidamente.

8 Hawley, M. (2004). TDD Research Findings. James P. Womack, Daniel T. Jones, D. R. (1990). The machine that changed the world. Koskela, L. (2008). Test Driven: Pratical TDD and Acceptance TDD for Java Developers. Manning. Langr, J. (2005). Agile Java Crafting Code with Test-Driven Development. Prentice Hall PTR. Lewis, W. E. (2004). Software Testing and Continuous Quality Improvement. Auerbach, 2 edition. Schwaber, K. (2004). Agile Project Management with Scrum. Microsoft Press. Tian, J. (2005). Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement. John Wiley & Sons.

Extreme Programming: Valores e Práticas

Extreme Programming: Valores e Práticas Programação Extrema Extreme Programming: Valores e Práticas Prof. Mauro Lopes 1-31 34 Objetivos Anteriormente trabalhamos os conceitos do Desenvolvimento Tradicional e do Desenvolvimento Ágil. Trouxemos

Leia mais

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata Processo de Desenvolvimento Também chamado de ciclo de vida do software Reflete os passos necessários para se construir um produto de software Existem vários modelos de ciclo de vida Cascata (1956) Iterativo

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Teste de Software Verificação e validação Testes de desenvolvimento Testes de release Testes de usuário Desenvolvimento dirigido a testes Kele Teixeira Belloze kelebelloze@gmail.com

Leia mais

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

A Evolução de XP segundo Kent Beck Parte 1 A Evolução de XP segundo Kent Beck Parte 1 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

Métodos Ágeis e Programação Extrema (XP)

Métodos Ágeis e Programação Extrema (XP) Métodos Ágeis e Programação Extrema (XP) 1 Métodos Ágeis A insatisfação com os overheads envolvidos em métodos tradicionais de desenvolvimento levou à criação dos métodos ágeis. Esses métodos: Focam no

Leia mais

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome: Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS Nome: 1. A figura abaixo representa, simplificadamente, as fases do Modelo de Ciclo de Vida Cascata.

Leia mais

Processos Ágeis de Desenvolvimento de Software

Processos Ágeis de Desenvolvimento de Software Processos Ágeis de Desenvolvimento de Software -Focono XP - Rodrigo Rebouças de Almeida rodrigor@rodrigor.com Processo Conjunto de atividades ordenadas, restrições e recursos que produzem um resultado

Leia mais

Extreme Programming. Projeto de. Desenvolvimento. Software. Prof.: Ari Oliveira

Extreme Programming. Projeto de. Desenvolvimento. Software. Prof.: Ari Oliveira Projeto de Desenvolvimento Software Extreme Programming Prof.: Ari Oliveira O Extreme Programming (XP) é uma metodologia de desenvolvimento de software que auxilia na produção de sistemas de maior qualidade,

Leia mais

BEHAVIOR DRIVEN DEVELOPMENT BRUNO ROLIM MANSUR

BEHAVIOR DRIVEN DEVELOPMENT BRUNO ROLIM MANSUR BEHAVIOR DRIVEN DEVELOPMENT BRUNO ROLIM MANSUR AGENDA Motivação Processo Tradicional Processo BDD Fazer certo o certo Ciclo BDD Ferramentas Exemplo - Vídeo Rspec Vantagens e Desvantagens Referências MOTIVAÇÃO

Leia mais

RUP/PSDS. Introdução e Comparação

RUP/PSDS. Introdução e Comparação RUP/PSDS Introdução e Comparação Agenda RUP Introdução Mlehores Práticas Estrutura Tempo Conteúdo Contraponto PSDS Introdução Objetivos Promover planejamento, medição e controle dos projetos Reduzir riscos

Leia mais

Programação Extrema na Prática

Programação Extrema na Prática Programação Extrema na Prática Engenharia de Software Conference - 13:40-15:00 maio/09 São Paulo Dairton Bassi - dbassi@gmail.com Assuntos de Hoje Métodos Ágeis Valores Ágeis Programação Extrema Princípios

Leia mais

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software Teste de Software Competência: Entender as técnicas e estratégias de testes de Software Conteúdo Programático Introdução O que é teste de software? Por que é necessário testar um software? Qual a causa

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 4 http://www.ic.uff.br/~bianca/engsoft2/ Aula 4-03/05/2006 1 Modelos Prescritivos de Processo Modelo em cascata Modelos incrementais Modelo incremental Modelo RAD Modelos

Leia mais

Desenvolvimento ágil de software

Desenvolvimento ágil de software Desenvolvimento ágil de software Prof. Cristiane Aparecida Lana slide 1 Bibliografia utilizada: Mais opções visite meu site, clique aqui para acessá-lo. slide 2 2011 Pearson 2011 Pearson Prentice Prentice

Leia mais

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 12 Março 2012 Inconsistente: perguntei laranjas, respondeu

Leia mais

Desenvolvimento Ágil de Software. Prof. Edjandir Corrêa Costa

Desenvolvimento Ágil de Software. Prof. Edjandir Corrêa Costa Desenvolvimento Ágil de Software Prof. Edjandir Corrêa Costa edjandir.costa@ifsc.edu.br Métodos Ágeis História Na início da década de 90 havia uma visão de que a melhor maneira para se criar software era

Leia mais

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto

Leia mais

Metodologias Ágeis de Desenvolvimento. Fernando Trinta

Metodologias Ágeis de Desenvolvimento. Fernando Trinta Metodologias Ágeis de Desenvolvimento Fernando Trinta Contextualização A Engenharia de software vêm recorrentemente enfrentando o cenário onde... as aplicações são cada vez mais complexas... o tempo de

Leia mais

Sumário. Capítulo 3 Valores do XP Feedback Comunicação... 46

Sumário. Capítulo 3 Valores do XP Feedback Comunicação... 46 Sumário Sobre o autor... 6 Revisores técnicos... 7 Agradecimentos... 9 Prefácio... 17 Introdução... 19 Capítulo 1 Extreme Programming: visão geral... 21 Valores do XP... 22 Práticas do XP... 23 Cliente

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Processos de Software Professor: Charles Leite O processo de software Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessários para o desenvolvimento

Leia mais

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje 1 Introdução Testar é o conjunto de tarefas ou passos executados para verificar se um produto ou serviço atende à sua proposta. Dessa forma, a execução de testes em um programa contribui para a melhoria

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Desenvolvimento Ágil de Software

Desenvolvimento Ágil de Software DCC / ICEx / UFMG Desenvolvimento Ágil de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Agenda Métodos ágeis Histórico e Motivação Manifesto ágil Desenvolvimento dirigido a planos e ágil

Leia mais

Introdução à Programação extrema (XP)

Introdução à Programação extrema (XP) Introdução à Programação extrema (XP) Cursos de Verão 2008 - IME/USP Mariana Bravo e Hugo Corbucci Departamento de Ciência da Computação www.agilcoop.org.br O que é? XP é leve XP é focado no desenvolvimento

Leia mais

Estágio II. Aula 04 Testes Ágeis. Prof. MSc. Fred Viana

Estágio II. Aula 04 Testes Ágeis. Prof. MSc. Fred Viana Estágio II Aula 04 Testes Ágeis Prof. MSc. Fred Viana Agenda Manifesto dos Testes Ágeis Testes Ágeis x Testes Tradicionais Sinais de que os Testes Não São Ágeis Testador Ágil Testador Ágil em Equipe Independente

Leia mais

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr. Teste de Software Prof. Camila Pedro de Assis Sobreira Jr. 2 Técnicas de Testes Técnica de Teste Funcional Técnica de Teste Estrutural 3 Testes Funcionais Teste de Especificação de Requisitos. Teste de

Leia mais

Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil)

Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil) Programação Extrema Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil) Prof. Mauro Lopes 1-31 25 Plano de Aula Desafios do Desenvolvimento de Software Introdução

Leia mais

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software ENGENHARIA DE SOFTWARE Aula 12 Testes de software OBJETIVOS Compreender os estágios de teste durante o desenvolvimento para os testes de aceitação por parte dos usuários de sistema; Apresentar as técnicas

Leia mais

Processo de Desenvolvimento de Software

Processo de Desenvolvimento de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático desta aula Fases do Processo. Ciclo de vida do processo. Processo Unificado Orientado por Casos de Uso, surgiu para realizar o

Leia mais

Introdução a Métodos Ágeis. Curso de Verão IME/USP

Introdução a Métodos Ágeis. Curso de Verão IME/USP Introdução a Métodos Ágeis Curso de Verão 2008 - IME/USP www.agilcoop.org.br Danilo Sato Mariana Bravo Tradicional ou Ágil? 2 Tradicional ou Ágil? Forecast-driven vs Feedback-driven 3 O Que é Sucesso?

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Para Sommerville a arquitetura de sistemas descreve o sistema em termos de um conjunto de unidades

Leia mais

1. A função DevOps, que se concentra principalmente em Produtos & Serviços:

1. A função DevOps, que se concentra principalmente em Produtos & Serviços: Questões de múltipla escolha 1. A função DevOps, que se concentra principalmente em Produtos & Serviços: a) Desenvolvimento Ágil b) Melhoria Contínua c) Automatizar tudo d) Centralizar o Desenvolvimento

Leia mais

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil Análise de Sistemas Prof. Filipe Arantes Fernandes filipe.arantes@ifsudestemg.edu.br 2 Vale a pena ver de novo Modelo de Processo:

Leia mais

Processo Unificado Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Introdução

Processo Unificado Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Introdução Processo Unificado Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Introdução 1 Processo Unificado (PU) 1.1 Bibliografia Autoria:Aristófanes

Leia mais

Informática I. Aula Aula 21-29/11/06 1

Informática I. Aula Aula 21-29/11/06 1 Informática I Aula 21 http://www.ic.uff.br/~bianca/informatica1/ Aula 21-29/11/06 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Práticas Ágeis de Teste

Práticas Ágeis de Teste Práticas Ágeis de Teste Edson Saraiva de Almeida Maio/2012 Teste Ágil Teste ágil = Teste improvisado 1 Processo de Teste Desenvolvimento Tradicional Testadores teste e GQ Programadores - codificam uma

Leia mais

Introdução. Conteúdo. Usabilidade. Engenharia de software X Usabilidade. Benefícios. Introdução. Introdução. Introdução. Introdução.

Introdução. Conteúdo. Usabilidade. Engenharia de software X Usabilidade. Benefícios. Introdução. Introdução. Introdução. Introdução. Engenharia de Usabilidade Prof.: Clarindo Isaías Pereira da Silva e Pádua Synergia / Gestus Departamento de Ciência da Computação - UFMG Clarindo Pádua 2 Referências Hix, D.; Hartson, H. R. Developing

Leia mais

MANIFESTO ÁGIL, SCRUM E EXTREME PROGRAMMING COMO CONSTRUIR SOFTWARE COM QUALIDADE E QUE AGREGAM VALOR AO CLIENTE?

MANIFESTO ÁGIL, SCRUM E EXTREME PROGRAMMING COMO CONSTRUIR SOFTWARE COM QUALIDADE E QUE AGREGAM VALOR AO CLIENTE? MANIFESTO ÁGIL, SCRUM E EXTREME PROGRAMMING COMO CONSTRUIR SOFTWARE COM QUALIDADE E QUE AGREGAM VALOR AO CLIENTE? CAIO ROSÁRIO DIAS FORMADO EM TÉCNICO DE INFORMÁTICA IFBA; QUINTO SEMESTRE DO CURSO DE ANALISE

Leia mais

RUP RATIONAL UNIFIED PROCESS CONCEITOS CHAVES. Prof. Fabiano Papaiz IFRN

RUP RATIONAL UNIFIED PROCESS CONCEITOS CHAVES. Prof. Fabiano Papaiz IFRN RUP RATIONAL UNIFIED PROCESS CONCEITOS CHAVES Prof. Fabiano Papaiz IFRN Conceitos Chaves do RUP Fases Iterações Disciplinas (ou Workflow / Fluxo de Trabalho) Papéis Atividades / Tarefas Artefatos / Produtos

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE CURSO TÉCNICO DE INFORMÁTICA Módulo A ENGENHARIA DE SOFTWARE Processos de Software O PROCESSO É LENTO... Todo software deve ser construído de forma organizada, através de processos. Um processo pode ser

Leia mais

Processos de Software

Processos de Software Riscos Processos de Software Gidevaldo Novais (gidevaldo.vic@ftc.br) Muitos problemas no desenvolvimento de software provêm de riscos Seriam problemas potenciais que poderão ocorrer em um futuro próximo

Leia mais

Introdução 27/9/2005. Prof.: Clarindo Isaías Pereira da Silva e Pádua Departamento de Ciência da Computação UFMG Gestus. Usabilidade.

Introdução 27/9/2005. Prof.: Clarindo Isaías Pereira da Silva e Pádua Departamento de Ciência da Computação UFMG Gestus. Usabilidade. Introdução Prof.: Clarindo Isaías Pereira da Silva e Pádua Departamento de Ciência da Computação UFMG Gestus Referências Hix, D.; Hartson, H. R. Developing User Interfaces: ensuring usability through product

Leia mais

Testes Ágeis com BDD. Por que o BDD pode salvar o agile? Paloma Costa

Testes Ágeis com BDD. Por que o BDD pode salvar o agile? Paloma Costa Testes Ágeis com BDD Por que o BDD pode salvar o agile? Paloma Costa paloma.costa@gmail.com Agenda Sobre a Palestrante Introdução Entender o Comportamento O que é BDD? O que Cucumber? Testes Orientados

Leia mais

Vinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee

Vinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee Vinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee Novatec Copyright 2004, 2014 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610

Leia mais

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO CURSO ANÁLISE E DESENVOLVIMENTO DE SISTEMA MODELO DOS PROCESSOS DE SOFTWARE ALUNO SAMUEL BRAGA LOPES SUMÁRIO - AGENDA INTRODUÇÃO MODELO CASCATA

Leia mais

Disciplina: Engenharia de Software. 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE

Disciplina: Engenharia de Software. 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE Disciplina: Engenharia de Software 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE Quando termina o desenvolvimento de um software? A maioria das grandes empresas gasta mais na manutenção de sistemas existentes

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 O desenvolvimento de software envolve usuários, clientes e desenvolvedores. Avalie as seguintes afirmações

Leia mais

Normas ISO:

Normas ISO: Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Normas ISO: 12207 15504 Prof. Luthiano Venecian 1 ISO 12207 Conceito Processos Fundamentais

Leia mais

Princípios e práticas de extremme Programming

Princípios e práticas de extremme Programming Princípios e práticas de extremme Programming Tiago Eugenio de Melo tiago@comunidadesol.org 1 Sumário Introdução Princípios Práticas Quando não usar Conclusões Referências 2 extreme Programming É uma metodologia

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE Nickerson Fonseca Ferreira nickerson.ferreira@ifrn.edu.br Introdução 2 Antes de qualquer

Leia mais

Métodos ágeis no Brasil: estado da prática em times e organizações

Métodos ágeis no Brasil: estado da prática em times e organizações I Questionário Nacional sobre Métodos Ágeis SETEMBRO, 2011 IME-USP Métodos ágeis no Brasil: estado da prática em times e organizações Neste ano o Manifesto Ágil completa 10 anos e, no mundo todo, empresas

Leia mais

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado) Processo UP Unified Process (Processo Unificado) Conjunto de passos que tem como objetivo atingir uma meta Processo de software na ES, processo que visa a produzir o software - de modo eficiente e previsível

Leia mais

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds TS03 Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE COTI Informática Escola de Nerds Teste do Desenvolvedor O Teste do Desenvolvedor denota os aspectos de design e implementação de teste mais apropriados

Leia mais

Processo de Desenvolvimento. Edjandir Corrêa Costa

Processo de Desenvolvimento. Edjandir Corrêa Costa Processo de Desenvolvimento Edjandir Corrêa Costa edjandir.costa@ifsc.edu.br Processo de Desenvolvimento Definição: É um roteiro que determina quais são as tarefas necessárias e em que ordem elas devem

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 APRESENTAÇÃO DO CURSO As empresas brasileiras passam por uma grande e rápida transformação, impulsionadas pela busca de maior qualidade e produtividade,

Leia mais

Reuso de Software Aula Maio 2012

Reuso de Software Aula Maio 2012 Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Componentes Modelos de Componentes

Leia mais

PROJETO EM SISTEMAS DE INFORMAÇÃO. Unidade I - Metodologia de desenvolvimento a ser adotada. Luiz Leão

PROJETO EM SISTEMAS DE INFORMAÇÃO. Unidade I - Metodologia de desenvolvimento a ser adotada. Luiz Leão Unidade I - Metodologia de desenvolvimento a ser adotada Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático Exposição das metodologias possíveis, conforme o tipo de projeto; Fundamentação

Leia mais

Processos de Software

Processos de Software DCC / ICEx / UFMG Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Processos Procedimentos e métodos definindo relação entre tarefas PROCESSO Pessoas com habilidades, treinadas

Leia mais

Dificuldades na implantação de Métodos Ágeis

Dificuldades na implantação de Métodos Ágeis Dificuldades na implantação de Métodos Ágeis Encontro Ágil 2008 IME/USP www.agilcoop.org.br Prof. Dr. Fabio Kon IME / USP Os Princípios Ágeis e as dificuldades Software funcionando... Adaptação a mudanças...

Leia mais

Problemas e Práticas Recomendadas no Desenvolvimento de Software

Problemas e Práticas Recomendadas no Desenvolvimento de Software Problemas e Práticas Recomendadas no Desenvolvimento de Software Objetivos deste módulo Levantar problemas enfrentados na prática do desenvolvimento de software Discutir boas práticas para o desenvolvimento

Leia mais

O impacto de práticas de teste na velocidade de DevOps. Renato Quedas VP Solutions Marketing

O impacto de práticas de teste na velocidade de DevOps. Renato Quedas VP Solutions Marketing O impacto de práticas de teste na velocidade de DevOps Renato Quedas VP Solutions Marketing A consequência da Inovação Desafios de Hoje na Entrega de Aplicações Time to Market Proliferação de Dispositivos

Leia mais

Refatoração: uma introdução. Prof. André Luiz Peron Martins Lanna

Refatoração: uma introdução. Prof. André Luiz Peron Martins Lanna Refatoração: uma introdução Prof. André Luiz Peron Martins Lanna Agenda Introdução Idéias preliminares Um primeiro exemplo Conclusões Bibliografia Introdução Em DSW o assunto principal foi o Projeto de

Leia mais

Comparação entre Metodologias Rational Unified Process (RUP) e extreme Programming(XP)

Comparação entre Metodologias Rational Unified Process (RUP) e extreme Programming(XP) Comparação entre Metodologias Rational Unified Process (RUP) e extreme Programming(XP) Fundamentos de Engenharia de Software PPGIA Carlos G. Vasco, Marcelo H. Vithoft, Paulo R. Estante Design and programming

Leia mais

Verificação e Validação (V & V)

Verificação e Validação (V & V) Verificação e Validação (V & V) Objetivo: assegurar que o software que o software cumpra as suas especificações e atenda às necessidades dos usuários e clientes. Verificação: Estamos construindo certo

Leia mais

2. Modelos de Desenvolvimento de Software

2. Modelos de Desenvolvimento de Software 2. Modelos de Desenvolvimento de Software Patrícia Macedo Joaquim Filipe João Ascenso Engenharia de Software 2005/06 EST, Setúbal Ciclo de Vida do Software Um sistema de software é desenvolvido gradualmente

Leia mais

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome: ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Estudos Disciplinares Campus: Data: / / Nome: RA: Turma: Questão 1: Assinale a função correta de engenharia de requisitos:

Leia mais

Introdução ao RUP. Livar Correia de O. C. Cunha Effektiv Solutions

Introdução ao RUP. Livar Correia de O. C. Cunha Effektiv Solutions Introdução ao RUP Livar Correia de O. C. Cunha livarcocc@gmail.com 1 Rational Unified Process (RUP) É um framework de processo de desenvolvimento de software Uma metodologia é uma instanciação dos processos

Leia mais

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando

Leia mais

- 8ª Lista de Exercícios -

- 8ª Lista de Exercícios - - 8ª Lista de Exercícios - Teste de Software Questão 1) (FCC - 2015 - TRT - 15ª Região - Analista Judiciário - Tecnologia da Informação) Os testes de software podem ser aplicados no ciclo de desenvolvimento

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 7 http://www.ic.uff.br/~bianca/engsoft2/ Aula 7-12/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do

Leia mais

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - O teste nas fases de vida e de desenvolvimento de um software. 1.2 - O teste na engenharia de sistemas e na engenharia de

Leia mais

Desenvolvimento de Software de Qualidade através de Testes Automatizados

Desenvolvimento de Software de Qualidade através de Testes Automatizados Desenvolvimento de Software de Qualidade através de Testes Automatizados Paulo Cheque (paulocheque@agilcoop.org.br) Cursos de Verão 2010 Licença: Creative Commons: Attribution-Share Alike 3.0 Unported

Leia mais

Prof. Luiz A. Nascimento. As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software.

Prof. Luiz A. Nascimento. As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software. Prof. Luiz A. Nascimento As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software. Porque metodologias ágeis? A história dos fracassos no desenvolvimento de

Leia mais

Dificuldades na implantação de Métodos Ágeis

Dificuldades na implantação de Métodos Ágeis Dificuldades na implantação de Métodos Ágeis Curso de Verão 2009 IME/USP Dairton Bassi Baseado na palestra Dificuldades na implantação de Métodos Ágeis apresentada no Encontro Ágil 2008 pelo Prof. Dr.

Leia mais

Gerenciamento de Requisitos de Software

Gerenciamento de Requisitos de Software L A B O R A T Ó R I O D E E N G E N H A R I A D E S O F T W A R E Gerenciamento de Requisitos de Software Leffingwell, Dean & Widrig, Don. Managing Software Requirements: A Unified Approach Addison-Wesley

Leia mais

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno PDS Aula 1.4 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br 2 Introdução Há alguns anos, o desenvolvimento de softwares era muito obsoleto; Existiam diversos problemas relacionados

Leia mais

XP EXTREME PROGRAMMING. AGO106 - Gestão

XP EXTREME PROGRAMMING. AGO106 - Gestão XP EXTREME PROGRAMMING AGO106 - Gestão de Processos de Desenvolvimento de Software DESENVOLVIMENTO TRADICIONAL Sequencial: Análise, Design, Implementação, Teste, Implantação e Manutenção Características:

Leia mais

Análise e Projeto Orientado a Objetos

Análise e Projeto Orientado a Objetos Análise e Projeto Orientado a Objetos Contextualizando Por que Análise e Projeto? Análise versus Projeto Análise e Projeto OO Processo de Desenvolvimento de Software Alguns Processos de Desenvolvimento

Leia mais

Teste de Software. Professor Maurício Archanjo Nunes Coelho

Teste de Software. Professor Maurício Archanjo Nunes Coelho Teste de Software Professor Maurício Archanjo Nunes Coelho Conteúdo 1. Definição de Teste e suas Classificações 1.1 - Introdução 1.2 O que é homologação 1.3 História do teste. 1.4 A falta de teste 1.5

Leia mais

Testes de Software. Prof. Edjandir C. Costa

Testes de Software. Prof. Edjandir C. Costa Testes de Software Prof. Edjandir C. Costa edjandir.costa@ifsc.edu.br Sumário - Processo de teste - Estágios de teste - Diferenças entre tipos de testes Processo de Teste Dois objetivos distintos: - Demonstrar

Leia mais

Modelos de Gestão de Projetos

Modelos de Gestão de Projetos Modelos de Gestão de Projetos Gestão de Projetos Tradicionais Criados para situações de baixo risco e incertezas, já existe conhecimento sobre o que será desenvolvido, o escopo envolvido e o objetivo proposto

Leia mais

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software ENGENHARIA DE SOFTWARE Aula 03 Processos de Software AGENDA Modelos de processo de software Atividades do processo Lidando com mudanças Rational Unified Process (RUP) 14/03/2017 IFPR QUEDAS DO IGUAÇU -

Leia mais

Model Driven Development (MDD)

Model Driven Development (MDD) Model Driven Development (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros adrianamedeiros@puro.uff.br Sumário Introdução Desenvolvimento de Software

Leia mais

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

INTRODUÇÃO A ENGENHARIA DE SOFTWARE Universidade TESTE Estadual DE SOFTWARE Vale do Acaraú O que são testes? INTRODUÇÃO A ENGENHARIA DE SOFTWARE Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se ele

Leia mais

Uma introdução a Domain Driven Design. Daniel Cukier IME-USP

Uma introdução a Domain Driven Design. Daniel Cukier IME-USP Uma introdução a Domain Driven Design Daniel Cukier danicuki@ime.usp.br IME-USP Padrões Um padrão é uma regra de três partes que expressa a relação entre um certo contexto 1, um problema 2 e uma solução

Leia mais

Guia do Processo de Teste Metodologia Celepar

Guia do Processo de Teste Metodologia Celepar Guia do Processo de Teste Metodologia Celepar Agosto de 2009 Sumário de Informações do Documento Documento: guiaprocessoteste.odt Número de páginas: 11 Versão Data Mudanças Autor 1.0 26/12/07 Criação.

Leia mais

Princípios em refatoração. Prof. André Luiz Peron Martins Lanna

Princípios em refatoração. Prof. André Luiz Peron Martins Lanna Princípios em refatoração Prof. André Luiz Peron Martins Lanna Agenda Definição de refatoração. Por que refatorar? Quando refatorar? Problemas com refatoração. Refatoração e projeto. Refatoração e performance.

Leia mais

ISO/IEC 12207: Manutenção

ISO/IEC 12207: Manutenção ISO/IEC 12207: Manutenção O desenvolvimento de um sistema termina quando o produto é liberado para o cliente e o software é instalado para uso operacional Daí em diante, deve-se garantir que esse sistema

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 6 http://www.ic.uff.br/~bianca/engsoft2/ Aula 6-10/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do

Leia mais

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome: Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS Nome: 1. No ciclo de vida de software, a estrutura de dados, a arquitetura, os detalhes procedimentais

Leia mais

Scrum Foundations. Fundamentos de Scrum

Scrum Foundations. Fundamentos de Scrum Scrum Foundations Fundamentos de Scrum Sobre o curso Curso base para as funções de Scrum Developer e Scrum Master Histórico, Estrutura e Funções Scrum Product Owner Scrum Developer Scrum Master Artefatos

Leia mais

Scrum e Extreme Programming

Scrum e Extreme Programming Scrum e Extreme Programming CODEX Sumário Objetivo 3 Scrum 4 Papéis de Atuação 4 Eventos do Scrum 5 Artefatos do Scrum 5 Porque Scrum? 5 Extreme Programming 6 Práticas do Extreme Programming 6 Porque XP?

Leia mais

Processos de Software

Processos de Software Processos de Software Um processo de software é um conjunto de atividades que leva à produção de um produto de software Um modelo de processo de software é uma representação abstrata de um processo de

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Processo Por quê um processo Padronizar a geração de produtos e serviços Garantir a repetitividade da geração de produtos e serviços Reter o conhecimento Oferecer

Leia mais

Capítulo 8 Teste de Software 1

Capítulo 8 Teste de Software 1 Capítulo 8 - Teste de Software Capítulo 8 Teste de Software 1 Assuntos abordados Testes de desenvolvimento Desenvolvimento orientado a testes Testes de liberação Testes com utilizadores Capítulo 8 Teste

Leia mais

ISO/IEC Prof. Alexandre Luís Franco

ISO/IEC Prof. Alexandre Luís Franco ISO/IEC 9126 Prof. Alexandre Luís Franco ISO/IEC 9126 Contém as seguintes partes, sobre o título genérico de Engenharia de Software Qualidade do Produto Parte 1 Modelo de Qualidade Parte 2 Métricas Externas

Leia mais

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU)

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU) Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU) Prof. Seiji Isotani (sisotani@icmc.usp.br) Modelos de Processo de

Leia mais