Engenharia de Software



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

abraçando a mudança extreme Programming Helder da Rocha

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

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

Desenvolvimento Ágil de Software

Daniel Wildt

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

METODOLOGIA ÁGIL. Lílian Simão Oliveira

INTRODUÇÃO A PROJETOS

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

Com metodologias de desenvolvimento

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

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

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

Os Desafios da Segurança no Desenvolvimento com Métodos Ágeis. OWASP Education Project. The OWASP Foundation

Metodologias Ágeis. Aécio Costa

Uma introdução ao SCRUM. Evandro João Agnes

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

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

Scrum. Introdução UFRPE-DEINFO BSI-FÁBRICA DE SOFTWARE

ENGENHARIA DE SOFTWARE I

SCRUM Gerência de Projetos Ágil. Prof. Elias Ferreira

development Teresa Maciel DEINFO/UFRPE

Prof. Me. Marcos Echevarria

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Manifesto Ágil - Princípios

Sistemas de Informação I

Após completar este módulo você deverá ter absorvido o seguinte conhecimento: Uma ampla visão do framework Scrum e suas peculiaridades

Desenvolvendo Software Livre com Programação extrema

Programação Orientada a Testes Rodrigo Rebouças de Almeida

Wesley Torres Galindo

Scrum How it works. Há quatro grupos com papéis bem definidos:

Alexandre Lima Guilherme Melo Joeldson Costa Marcelo Guedes

Wesley Torres Galindo.

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

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

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

SCRUM. Otimizando projetos. Adilson Taub Júnior tecproit.com.br

Géssica Talita. Márcia Verônica. Prof.: Edmilson

Comparativo entre Processos Ágeis. Daniel Ferreira

Metodologias Ágeis de Desenvolvimento de Software

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

Processo de Desenvolvimento de Software Scrum. Prof. Antonio Almeida de Barros Jr.

SCRUM e Requisitos Ágeis

Métodos Ágeis para Desenvolvimento de Software Livre

Desenvolvimento Ágil de Software em Larga Escala

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

Engenharia de Software I

Ferramenta para gestão ágil

Jonas de Souza H2W SYSTEMS

Desenvolvimento Ágil com XP e Scrum. Guilherme Chapiewski guilherme.chapiewski@gmail.com

Scrum Uma breve apresentação. Alfredo Goldman Dairton Bassi

Scrum. Gestão ágil de projetos

5. Métodos ágeis de desenvolvimento de software

Objetivos do Módulo 3

Engenharia de Software II

Programação Extrema. Luis Fernando Machado. Engenharia de Software

EXIN Agile Scrum Fundamentos

Estudo sobre Desenvolvimento de Software Utilizando o Framework Ágil Scrum

Fundamentos do Scrum aplicados ao RTC Sergio Martins Fernandes

SCRUM. É um processo iterativo e incremental para o desenvolvimento de qualquer produto e gerenciamento de qualquer projeto.

ScRUM na prática. Scrum no dia-a-dia. V Semana de Tecnologia da Informação

Gerenciamento de Equipes com Scrum

ELABORAÇÃO DE UM PRODUCT BACKLOG EFETIVO

Engenharia de Software

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

TUTORIAIS. Framework SCRUM. Rafael Buck Eduardo Franceschini. MSc., PMP, CSM MBA

SCRUM: UMA DAS METODOLOGIAS ÁGEIS MAIS USADAS DO MUNDO

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

SCRUM. Fabrício Sousa

Agilidade parte 3/3 - Scrum. Prof. Dr. Luís Fernando Fortes Garcia luis@garcia.pro.br

Agilidade: SCRUM e XP

Engenharia de Software

ANÁLISE COMPARATIVA ENTRE OS MODELOS DE PROCESSO: PROTOTIPAÇÃO, PSP E SCRUM

Metodologia Scrum e TDD Com Java + Flex + Svn Ambiente Eclipse

Scrum. Centro de Informática - Universidade Federal de Pernambuco Sistemas de Informação Kiev Gama kiev@cin.ufpe.br

ágeis para projetos desenvolvidos por fábrica de software

SCRUM Discussão e reflexão sobre Agilidade. Fernando Wanderley

[Agile] Scrum + XP. Wagner Roberto dos Santos. Agilidade extrema. Arquiteto Java EE / Scrum Master wrsconsulting@gmail.com. Globalcode open4education

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

Resumo artigo Agile Modeling- Overview

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

Frederico Aranha, Instrutor. Scrum 100 Lero Lero. Um curso objetivo!

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

METODOLOGIAS ÁGEIS - SCRUM -

LISTA DE EXERCÍCIOS METODOLOGIAS ÁGEIS ENGENHARIA DE SOFTWARE 10/08/2013

Gestão de Projetos com Scrum

Módulo de projetos ágeis Scrum Módulo de Projetos Ágeis Scrum

ENG1000 Introdução à Engenharia

Gerenciamento Ágil de Projetos HEITOR RORIZ FILHO, MSc, PMI-ACP, CST Massimus C&T

Por que o Scrum? o Foco na Gerência de Projetos; o Participação efetiva do Cliente.

Caso Prático: Java como ferramenta de suporte a um ambiente realmente colaborativo no método Scrum de trabalho

Metodologia SCRUM. Moyses Santana Jacob RM Stelvio Mazza RM Tiago Pereira RM Hugo Cisneiros RM 60900

INTRODUÇÃO AOS MÉTODOS ÁGEIS

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Um pouco de história

Transcrição:

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 extreme Programming SCRUM Comparações Conclusão

Manifesto Ágil Indivíduos e interação entre eles mais que processos e ferramentas; Software em funcionamento mais que documentação abrangente; Colaboração com o cliente mais que negociação de contratos; Responder a mudanças mais que seguir um plano.

extreme Programming -XP Método de desenvolvimento de software; Conjunto de valores, princípios e práticas; Ciclo de desenvolvimento curtos e releases frequentes; Permite respostas rápidas a mudanças de requisitos em qualquer etapa do desenvolvimento; Enfatiza o trabalho em equipe que se autoorganiza em que todos são iguais num trabalho colaborativo.

extreme Programming Metodologia ágil para equipes pequenas a médias desenvolvendo software com requesitosvagos ou que mudam freqüentemente. [Beck 2000] Em XP, codificação é principal tarefa Baseia-se em revisão permanente do código, testes freqüentes, participação do usuário final,refatoraçãocontínua, refinamentocontínuoda arquitetura, integração contínua, planejamento, projeto e reprojeto a qualquer hora

Metodologia Ágil Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar: Indivíduos e interações mais que processos e ferramentas; Software em funcionamento mais que documentação abrangente; Colaboração com o cliente mais que negociação de contratos; Responder a mudanças mais que seguir um plano. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas

Partes do XP 1. Values (valores): estabelecem a forma do desenvolvimento XP Principles (princípios): guiam o desenvolvimento do software Activities (atividades): devem ser executadas por todo o ciclo de vida XP Practices (práticas): são utilizadas pelas equipes XP para desenvolver sistemas

XP -Valores Simplicidade; Comunicação; Feedbacks; Coragem;

Simplicity (simplicidade) XP incentiva ao extremo práticas que reduzam a complexidade do sistema A solução adotada deve ser sempre a mais simples que alcance os objetivos esperados Use as tecnologias, algoritmos e técnicas mais simples que permitirão atender aos requisitosdo usuário-final Design, processo e código podem ser simplificados a qualquer momento

XP: Simplicidade Não tente prever o futuro! Comece por soluções simples e que funcionem. Melhorias são adicionadas depois.

Communication (comunicação) Várias práticas do XP promovem uma maior comunicação entre os membros da equipe A comunicação não é limitada por procedimentos formais. Usa-se o melhor meio possível, que pode ser Uma conversa ou reunião informal Um e-mail, um bate-papo, um telefonema O próprio código Preferência à comunicação mais ágil

XP: Comunicação Todos são parte do time, inclusive o cliente! Contato diário e face a face. Pair programming.

Feedback (retroalimentação) Várias práticas dexp garantem um rápido feedback sobre várias etapas/partes do processo Feedbacksobre qualidade do código (testes de unidade, programação em pares, posse coletiva) Feedback sobre estado do desenvolvimento (estórias do usuário-final, integração contínua, jogo do planejamento) Permite maior agilidade Erros detectados e corrigidos imediatamente Requisitos e prazos reavaliados mais cedo Permite estimativas mais precisas

XP: Feedbacks Testes: Cliente: Unitários; Integração. Testes funcionais. Membros do time: Quando um novo requisito chega o time estima quanto tempo será necessário.

Courage (coragem) Testes, integração contínua, programação em pares e outras práticas dexp aumentam a confiança do programador e ajudam-no a ter coragem para melhorar o código que está funcionando para torná-lo mais simples investir tempo no desenvolvimento de testes mexer no design em estágio avançado pedir ajuda aos que sabem mais abandonar processos formais e ter o projetoe a documentação em forma de código

XP: Coragem Não deixe para amanha o que pode ser feito agora! Não ficou bom?! Refaça o quanto necessário! Se não precisa, jogue fora!

XP -Práticas Process On-site customer (cliente no local), testing (testes), small releases (versões pequenas), planning game (planejamento do jogo) Programming Simple design (projeto simples), testing (testes), refactoring(reconstrução), coding standars(código padrão) ; Team Collective ownership (código coletivo), continuous integration (integração continua), metaphor (metáfora), pair programming (programação em par), small releases (versões pequenas) ;

2. Princípios XP Rapid Feedback -(retorno rápido) Assume Simplicity -(simplicidade) Incremental Change -(mudanças incrementais) Embrace Change -(aceitar mudanças) Quality work -(trabalho de qualidade)

Rapid Feedback(retorno rápido) O retorno entre os desenvolvedores é rápido Cliente sabe se o produto que está sendo desenvolvido atende às suas necessidades Modele um pouco, mostre ao cliente e então modele novamente. Garante que o seu modelo será preciso enquanto seu conhecimento do projeto aumenta

AssumaSimplicity (simplicidade) Deixe o seu modelo tão simples quanto possível e assuma que a solução mais simples é a melhor O design do sistema deve ser feito para a iteração corrente. Não deve ser feito design sobre uma possível necessidade futura.

Incremental Change (mudanças incrementais) O modelo não será perfeito na primeira tentativa, ele irá mudar de acordo com o desenvolvimento do projeto Os problemasdevem ser solucionados com um conjunto de pequenas modificações

Embrace Change (aceitar mudanças) Mudanças ocorrerão no projeto de acordo com o crescimento do entendimento do mesmo Aceite as mudanças e tenha coragem para reconstruir

Quality work (trabalho de qualidade) A qualidade do trabalho nunca deve ser comprometida XP eleva a importância da codificação e do teste antes da programação test-first programming

3. Atividades XP Listening -(escutar) Testing -(testar) Coding -(codificar) Designing (projetar)

Listening (escutar) XP é baseado em comunicação Menor importância na documentação formal, maior necessidade de uma comunicação verbal de qualidade Além de dizer que os desenvolvedores devem escutar os clientes, XP tem práticas que dirigem e guiam para uma comunicação melhor

Testing (testar) Teste é um passo integrado no processo de desenvolvimento Desenvolvedores escrevem os teste antes de desenvolverem o código

Coding (codificar) Escrever código que é refinado através de práticas como: Refactory - refatoração Pair programming programação em pares Code review revisão de código

Designing (projetar) O design não é estático nem designado a um cargo (pessoa), ele é dinâmico e de responsabilidade de toda equipe XP aceita a evolução natural do sistema, o que implica em mudanças constantes

4. Práticas XP Whole Team Equipe Plannig Game Jogo do planejamento Customer Tests Testes de aceitação Small releases Versões pequenas Simple Design Projeto simples Pair programming Programação em pares Test-driven Development Desenvolvimento orientado a testes (TDD)

Práticas XP Refactoring Refinamento do projeto Continuos Integration Integração contínua Collective Ownership Posse coletiva Coding Standards Padrões de codificação Metaphor Metáfora Sustainable Place Ritmo saudável

A equipe (Whole Team) Todos em um projeto XP são parte de uma equipe. A equipe deve incluir um representante do cliente: estabelece os requisitosdo projeto define as prioridades controla o rumo do projeto Outros papéis assumidos pelos integrantes da equipe: programadores testadores (que ajudam o cliente com testes de aceitação) analistas (que ajudam o cliente a definir requerimentos) gerente (garante os recursos necessários) coach (orienta a equipe, controla a aplicação dexp) tracker (coleta métricas)

Jogo do Planejamento (Planning Game) Dois passos chaves: Planejamento de um release Cliente propõe funcionalidades desejadas (estórias) Programadores avaliam a dificuldade de implementálas Planejamento de uma iteração Cliente define as funcionalidades prioritárias para a iteração; Programadores as quebram em tarefas e avaliam o seu custo (tempo de implementação)

Teste de aceitação (Customer Tests) Testes de aceitação são elaborados pelo cliente São testes automáticos Quando rodarem com sucesso, funcionalidade foi implementada Devem ser rodados novamente em cada iteração Oferecem feedback: pode-se saber, a qualquer momento, quanto do sistema já foi implementado e quanto falta.

Versões Pequenas(Small Releases) Disponibiliza, a cada iteração, software 100% funcional Benefíciosdo desenvolvimento disponíveis imediatamente Menor risco(se o projeto não terminar, parte existe e funciona) Cliente pode medir com precisão quanto já foi feito Feedbackdo cliente permitirá que problemas sejam detectados cedo e facilita a comunicação entre o cliente e os desenvolvedores Lançamento pode ser destinado a usuário-cliente (que pode testá-lo, avaliá-lo, oferecer feedback) usuário-final (sempre que possível)

Design simples (Simple Design) Design está presente em todas as etapas no XP Projeto começa simples e se mantém simples através de testes e refinamento do design (refactory). Não é permitidoque se implemente nenhumafunção adicional que não será usada na atual iteração Implementação ideal é aquela que Roda todos os testes Expressa todas as idéias que você deseja expressar Não contém código duplicado Tem o mínimo de classes e métodos

Programação em duplas (Pair programming) Todo o desenvolvimento em XP é feito em pares Um computador, um teclado, dois programadores Um piloto, um co-piloto Papéis são alternados freqüentemente Pares são trocados periodicamente Benefícios Melhor qualidade do design, código e testes Revisão constante do código Nivelamento da equipe Maior comunicação

TDD(Test-driven Development) "Test first, then code" Programadores XP escrevem testes primeiro, escrevem código e rodam testes para validar o código escrito Cada unidade de código só tem valor se seu teste funcionar 100% Testes são a documentação executável do sistema

Refatoração(Refactoring) Não existe uma etapa isolada de projeto em XP O código é o projeto! O projeto é melhorado continuamente através de refactory Mudança proposital de código que está funcionando Objetivos: melhorar o design, simplificar o código, remover código duplicado, aumentar a coesão, reduzir o acoplamento Realizado o tempo todo, durante o desenvolvimento

Integraçãocontínua Projetos XP mantêm o sistema integrado o tempo todo Integração de todo o sistema pode ocorrer várias vezes ao dia (pelo menos uma vez ao dia) Todos os testes (unidade e integração) devem ser executados Benefícios Expõe o estado atual do desenvolvimento (viabiliza lançamentos pequenos e freqüentes) Estimula design simples, tarefas curtas, agilidade Oferece feedback sobre todo o sistema Permite encontrar problemas de design rapidamente

Posse coletiva(collective Ownership) Em um projeto XP qualquer dupla de programadores pode melhorar o sistema a qualquer momento. Todo o código em XP pertence a um único dono: a equipe Todo o código recebe a atenção de todos os participantes resultando em maior comunicação Maior qualidade (menos duplicação, maior coesão) Menos riscos e menos dependência de indivíduos Todos compartilham a responsabilidade pelas alterações

Padrões de codificação (Coding Standards) O código escrito em projetos XP segue um padrão de codificação, definido pela equipe Padrão para nomes de métodos, classes, variáveis Organização do código (chaves, etc.) Código com estrutura familiar facilita e estimula Posse coletiva Comunicação mais eficiente Simplicidade Programação em pares Refinamento do design

Metáfora ( Metaphor) Pode ser uma analogia com algum outro sistema (computacional, natural, abstrato) que facilite a comunicação entre os membros da equipe e cliente Facilita a escolha dos nomes de métodos, classes, campos de dados, etc. Serve de base para estabelecimento de padrões de codificação

Ritmo saudável (Sustainable Place) Projetos com cronogramas apertados que sugam todas as energias dos programadores não são projetos XP "Semanas de 80 horas" levam à baixa produtividade Produtividade baixa leva a código ruim, relaxamento da disciplina (testes, refactoring, simplicidade), dificulta a comunicação, aumenta a irritação e o stress da equipe Tempo "ganho" será perdido depois Eventuais horas extras são aceitáveis quando produtividade é maximizada ao longo prazo

Dificuldades Vencer barreiras culturais Deixar alguém mexer no seu código Trabalhar em pares Ter coragem de admitir que não sabe Pedir ajuda Vencer hábitos antigos Manter as coisas simples (e não tentar prever o futuro escrevendo "design flexível") Jogar fora código desnecessário Escrever testes antes de codificar Refactory com freqüência (vencer o medo)

SCRUM Framework iterativo e incremental para desenvolvimento ágil de sofware; Não há prática de engenharia pré-definida; Conjunto de práticas e papéis predefinidos; Sprints (iterações);

SCRUM

Quadro KANBAN

SCRUM: Planejamento, Product Backlog Product Backlog é criado; Data de entrega do produto final é definida; Componentes do sistema são priorizados; Custo e riscos são estimados; Cliente participa.

SCRUM: Sprints Ciclo iterativo de desenvolvimento; 1 a 4 semanas de duração (o time define); Um subconjunto do Product Backlog é selecionado para fazer parte do Sprint atual (Sprint Backlog) ; Durante o sprint, nenhuma funcionalidade deve ser adicionada; no entanto as existentes no Sprint Backlog podem ser atualizadas ou alteradas.

SCRUM: Papéis Dono do produto (Product Owner); ScrumMaster; Equipe.

Dono do Produto Define as funcionalidades do produto e as prioriza; Responsável pela visão de negócios do projeto; Aceita ou rejeita resultados dos trabalhos; Cliente + Analista de Requisitos.

ScrumMaster Facilitador: responsável por remover obstáculos do time e assegurar que as práticas estão sendo executadas corretamente; Escudo contra interferências externas.

Reuniões Sprint Planning 1 Product Backlog (Todos participam); Sprint Planning 2 (Cliente não parzcipa) Sprint Backlog; Daily Scrum (Time + ScrumMaster) Sprint Review/Reflection (30 dias).

Daily Scrum Reunião curta (15 min); ScrumMaster é o responsável e pergunta a cada membro do time: O que fez ontem? O que fará hoje? Existe algum obstáculo?

XP vs SCRUM Semelhanças: Ambos não prevêem o futuro (não definem todos os requisitos já de início); Ambos produzem software que funcionam a cada iteração; Comunicação é essencial (Reuniões diárias).

XP vs SCRUM Diferenças: SCRUM tem papéis pré-definidos; XP a validação do software é feita a todo instante (Testes); SCRUM somente ao final de cada Sprint; XP adota a programação em par como prática fundamental; XP é um método e SCRUM é um FRAMEWORK?!

Quando não usar XP Equipes grandes e espalhadas geograficamente Comunicação é um valor fundamental dexp Não é fácil garantir o nível de comunicação requerido em projetos XP em grandes equipes Situações onde o feedback é demorado Testes muito difíceis, arriscados e que levam tempo Programadores espalhados em ambientes físicos distantes e sem comunicação eficiente

Conclusões Extreme Programming (XP) é uma metodologia de desenvolvimento de software baseada nos valores simplicidade, comunicação, feedback e coragem. Para implementar XP não é preciso usar diagramas ou processos formais. É preciso fazer uma equipe se unir em torno de algumas práticas simples, obter feedback suficiente e ajustar as práticas para a sua situação particular. XP pode ser implementada aos poucos, porém a maior parte das práticas é essencial. Nem todos os projetos são bons candidatos a usar uma metodologia ágil como XP. XP é mais adequado a equipes pequenas ou médias.

Conclusões Ambas abordagens XP e SCRUM procuram resolver limitações dos métodos tradicionais de desenvolvimento ; Reduzir custos com mudanças de requisitos ao longo do desenvolvimento; Reduzir tempo de entrega do produto final ao cliente. Embora SCRUM seja mais abrangente; ambas dependem de uma avaliação do contexto para serem utilizadas.

Referências Extreme Programming Explained: Embrace Change, Kent Beck; http://www.extremeprogramming.org/; http://improveit.com.br. www.edilms.eti.br

Obrigado! Edilberto Silva www.edilms.eti.br