44
METODOLOGIAS ÁGEIS DE DESENVOLVIMENTO DE SOFTWARE Por Emerson Henrique, Luciano Almeida e Márcio Lins

Metodologias Ágeis de Desenvolvimento de Software

Embed Size (px)

DESCRIPTION

Apresentação realizada na Mostra ASPER 2009.

Citation preview

Page 1: Metodologias Ágeis de Desenvolvimento de Software

METODOLOGIAS ÁGEIS DE

DESENVOLVIMENTO DE SOFTWARE

Por Emerson Henrique, Luciano Almeida e Márcio Lins

Page 2: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

2

Quem somos? Emerson Henrique

Aluno concluinte do curso de Ciência da Computação Analista Desenvolvedor da Ativasystems

Luciano Almeida Graduado em Gestão de Sistemas de Informação Possui MBA em Novas Tecnologias Cursa Especialização em Gerenciamento de Projetos Professor, Consultor, Agilista e Owner do SCRUM Paraíba

Márcio Lins Analista Programador da Construtora Alliance Trabalha com AdvPL (Protheus) E cursa Sistemas para Internet

Page 3: Metodologias Ágeis de Desenvolvimento de Software

Sumário

Introdução Caos AgileManifesto.org Metodologias Ágeis XP SCRUM SCRUM + XP Conclusão

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 3

Page 4: Metodologias Ágeis de Desenvolvimento de Software

Introdução Projetos de

Construção Civil São geralmente

construídos como planejados

Clientes acompanham a evolução

Se algo dá errado, faz-se um relatório

Projetos de Software Precisam suportar

mudanças nas regras de negócio

Clientes só vêem algo funcionando perto do fim ou em prazos longos

Se algo dá errado, se esquece ou mascara o erro

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 4

Page 5: Metodologias Ágeis de Desenvolvimento de Software

Introdução Algumas empresas adotam metodologias de

desenvolvimento e práticas extremamente formais e controladoras, porém ainda não conseguem obter qualidade.

Por quê? Pouca preocupação com as pessoas e a interação entre elas Pouca comunicação com o cliente Custos muito altos Excesso de formalismo

Qual a consequência disso? Alta rotatividade No fim o software não serve mais Projeto cancelado Prazos estourados

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 5

Page 6: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

6

Introdução

Além disso muitas empresas vivem em uma situação de total descontrole e falta de qualidade, e não são nada ágeis, vivem o ...

Page 7: Metodologias Ágeis de Desenvolvimento de Software

... CAOS

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 7

Page 8: Metodologias Ágeis de Desenvolvimento de Software

CAOS

Situação perturbadora, desmotivante; Utilizando processo definido ou não; Altos riscos nos projetos; Custos muito altos; Projetos sem boa qualidade interna e

externa.

Mas esse problema não é novo, em 2001, 17 caras lançaram o ...

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 8

Page 9: Metodologias Ágeis de Desenvolvimento de Software

... Agilemanifesto.org O que é isso?

Um manifesto que criticava algumas mitos/práticas da engenharia de software e da gerência de projetos adotadas por abordagens tradicionalistas

Foi assinado por 17 pessoas envolvidas com desenvolvimento de software, dentre eles consultores e programadores experientes

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 9

Kent BeckMike BeedleArie van BennekumAlistair CockburnWard CunninghamMartin Fowler

Robert C. MartinSteve MellorKen SchwaberJeff SutherlandDave Thomas

James GrenningJim HighsmithAndrew HuntRon JeffriesJon KernBrian Marick

Page 10: Metodologias Ágeis de Desenvolvimento de Software

... Agilemanifesto.org 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

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 10

Page 11: Metodologias Ágeis de Desenvolvimento de Software

Agilemanifesto.org 12 princípios por traz do Manifesto Ágil

Satisfazer o cliente As mudanças são bem vindas Entrega periódica de funcionalidade Todos juntos Indivíduos Motivados Conversas face a face Medida primária é o software trabalhado Manter um ritmo constante sempre Atenção contínua, excelência técnica e bom projeto Simplicidade Equipes auto-organizáveis ou auto-gerenciáveis Reflexão de melhoria regularmente

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 11

Page 12: Metodologias Ágeis de Desenvolvimento de Software

Metodologias

XP – eXtreme Programming SCRUM LEAN CRYSTAL FDD ...

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 12

Page 13: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme Programming Começou a engatinhar 1987 e a se estruturar

em 1996 com o projeto C3 da Chrysler Criado pro Kent Beck, que utilizou pela

primeira vez em conjunto as práticas que formam a estrutura do Extreme Programming nesse projeto da Chrysler

“Jeito leve, eficiente, de baixo risco, flexível, previsível, científico e divertido de desenvolver software” – Kent Beck

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 13

Page 14: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme Programming Valores:

ComunicaçãoSimplicidadeFeedbackCoragem

Abordagem Incremental

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 14

Page 15: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme Programming12 Práticas

Planejamento Entregas

Frequêntes Metáfora Projeto Simples Testes Programação em

pares

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 15

• Refatorar• Propriedade Coletiva• Integração Contínua• 40 horas semanais

de trabalho• Cliente presente• Padronização do

Código

Page 16: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingJogo de Planejamento

Por quê?Gasta-se tempo fazendo coisas inúteis que

servem para aumentar o escopo, o tempo e o custo do projeto

Como?Triando o que é essencial, importante e

desejávelAssumindo a regra “80-20”

○ Entregando 80% dos benefícios com apenas 20% dos requisitos

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 16

Page 17: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingJogo de Planejamento

Como?Definição de históriasValor de negócio das históriasDefinição de releasesEstimativa com base nas experiências

anterioresObservação de riscosMedições de progresso

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 17

Page 18: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingEntregas Frequêntes

Consiste em colocar o sistema em produção com frequência, em prazos curtos, normalmente de dois ou três meses.

Objetivos:Feedbacks rápidos do cliente e para o clienteAceitação de mudanças rápidas e sem

burocracia

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 18

Page 19: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingMetáfora

Utilizam as metáforas para inserir a estrutura conceitual do negócio

Objetivos:Facilidade de entendimento e compreensãoEnvolvidos compreendem o que se quer,

mesmo não dominando a linguagem do negócio

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 19

Page 20: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingProjeto Simples

Projete um software do jeito que o usuário espera:Primeiro que funcioneE funcione corretamenteQue seja fácil de utilizar (modelo mental

coerente)E que possa evoluir com o tempo

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 20

Page 21: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingDesenvolvimento Orientado a Testes

Partindo do pressuposto que achar as causas do bug é mais difícil e demorado que corrigir

Então vamos evitar o problema Evitar problema é mais inteligente que resolver TDD (Test Driven Development) consiste em

escrever um mecanismo de teste automatizado antes de codificar cada história e cada método do sistema (BECK, 2000)

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 21

Page 22: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingDesenvolvimento Orientado a Testes

“O XP se concentra sobretudo em dois tipos de testes: o teste de unidade e o teste de aceitação.

O primeiro tenta assegurar que cada componente do sistema funcione corretamente.

O segundo procura testar a interação entre os componentes, as quais dão origem às

funcionalidades.” [BECK, 2000 apud TELLES, 2005]

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 22

Page 23: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingProgramação em Par Dois programadores

continuamente colaborando no mesmo projeto, algoritmo, código e teste.

Diminui erros de código, permite a refatoração instantânea, aprendizado contínuo, etc.

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 23

Page 24: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingRefatoração A “refatoração é o processo de fazer

mudanças em um código existente e funcional sem alterar seu comportamento externo. [...]” [ASTELS, 2003 apud TELLES,2005

Objetivos:Enxugar o código (Tornar simples e claro)Melhor a eficiência do códigoMinimizar chances de introduzir bugs

GarantiasMelhoria interna contínua

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 24

Page 25: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingPropriedade Coletiva O desenvolvedor tem acesso a todo o código O código é de todos os desenvolvedores e

qualquer um pode melhorar até aquilo que não fez

As alterações podem causar erros. Por segurança, é indicado adotar essa

prática apenas quando se tem testes de regressão automatizados

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 25

Page 26: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingIntegração Contínua

Os pares trabalham de forma isolada, mas integram o que produzem diversas vezes ao dia.

Objetivos:Identificar conflitos cedo, para evitar futuras

falhas de integração Consequência:

Identificação quase que instantânea de conflito, já que se produz pouco código em poucas horas

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 26

Page 27: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingTrabalho em 40 horas semanais

Hora extra é exceção Em atividade de 40 horas semanais já

ocorre a diminuição do fator foco Pressões não aumentam o fator foco,

pelo contrário diminuem

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 27

Page 28: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingCliente presente “O melhor e mais participativo cliente não será

capaz de obter o software desejado se a equipe de desenvolvimento não implementar corretamente o que é pedido e a melhor equipe não será capaz de produzir o software certo se o cliente não for capaz de especificá-lo adequadamente e prover feedback ao longo do projeto.” [TELLES, 2005]

Junte-os e terá: Feedbacks mais rápidos Mudanças rápidas sem burocracia

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 28

Page 29: Metodologias Ágeis de Desenvolvimento de Software

XP – EXtreme ProgrammingPadronização de código

É importante definir um padrão de codificação no inicio do projeto

Objetivo:Familiarizar todos com o como o mesmo

padrão de código (código legível a todos)Simplificar a comunicação E tornar o código coletivo

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 29

Page 30: Metodologias Ágeis de Desenvolvimento de Software

SCRUM

O nome é originado da organização de uma equipe de Rugby para o reinicio da partida.

Formalizado e implantado no desenvolvimento de software em 1995 por Ken Shwaber

A função primária do Scrum é ser utilizado para o gerenciamento de projetos de desenvolvimento de software

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 30

Page 31: Metodologias Ágeis de Desenvolvimento de Software

SCRUM

O que é de fato?É um framework de desenvolvimento de produto,

sobre um ciclo de vida interativo e incremental Objetivos:

Acompanhamento contínuoIterações curtasRetorno mais rápido

SCRUM NÃO É A BALA DE PRATA! “Não garante sozinho o sucesso de um projeto”

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 31

Page 32: Metodologias Ágeis de Desenvolvimento de Software

SCRUM Quais são os papeis envolvidos?

Product Owner (PO)

Scrum Team

Scrum Master

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 32

Page 33: Metodologias Ágeis de Desenvolvimento de Software

SCRUMPapel do Product Owner Conhece o produto e as

necessidades do cliente Representa o cliente Define os requisitos do

produto, bem como sua importância e urgência

É responsável pelo retorno do investimento

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 33

Page 34: Metodologias Ágeis de Desenvolvimento de Software

SCRUMPapel do Scrum Master É o líder servidor Responsável por remover

os impedimentos do time Por remover interferências

externas E por garantir o uso correto

do Scrum Ensina Scrum aos

envolvidos

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 34

Page 35: Metodologias Ágeis de Desenvolvimento de Software

SCRUMPapel do Scrum Team Fazem parte do Scrum team

todos os desenvolvedores, arquitetos, analistas, ... que participam do projeto

O time é auto-gerenciável e multifuncional ou multidisciplinar (pessoas com diferentes aptidões)

Decidem junto com o PO o que entra no Sprint

E são responsáveis pelas estimativas de esforço

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 35

Page 36: Metodologias Ágeis de Desenvolvimento de Software

SCRUMCerimônias

São elas:Planejamentos de SprintRevisões de SprintRetrospectivas de SprintReuniões diárias

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 36

Page 37: Metodologias Ágeis de Desenvolvimento de Software

SCRUMArtefatos

Product BacklogLista priorizada de requisitos (Lista

mutável) Sprint Backlog

Itens que serão feitos na Sprint (Lista não mutável)

Burndown ChartsO trabalho acumulado ou realizado

(atualizados diariamente durante um Sprint)

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 37

Page 38: Metodologias Ágeis de Desenvolvimento de Software

SCRUMExemplo de Burndown Chart

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 38

Page 39: Metodologias Ágeis de Desenvolvimento de Software

SCRUMExemplo de Burndown Chart

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 39

Page 40: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

40

SCRUM + XP

Scrum não define técnicas de Engenharia de Software

Foi construído inicialmente para o desenvolvimento de software

Porém, é um framework para gerenciamento do desenvolvimento de um produto

Por isso uma parceria de sucesso no desenvolvimento de software é:SCRUM + XP (Algumas práticas)

Page 41: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

41

Conclusão SCRUM é uma excelente alternativa para

empresas que estão no CAOS É interessante para equipes pequenas, onde a

comunicação possa funcionar de forma tranquila

XP define boas práticas que contribuem para uma boa comunicação e para a prevenção de problemas

Ambas se preocupam e melhoria contínua da qualidade, através de avaliação contínua do trabalho e do processo

Page 42: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

42

Dúvidas?

Page 43: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

43

REFERÊNCIAS BECK, Kent. Extreme Programming explained: embrace

change. 1. ed. Reading, MA: Addison-Wesley, 2000. 190 p.

TELLES, Vinícius Magalhães. UM ESTUDO DE CASO DA ADOÇÃO DAS PRÁTICA E VALORES DO EXTREME PROGRAMMING. 2005.

KINIBERG, Herink. Scrum e XP direto das Trincheiras. 2008. Disponível em: <http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches>

<http://improveit.com.br/scrum> Acesso em: 21/10/2009 <http://www.adaptworks.com.br/scrum/> Acesso em:

21/10/2009

Page 44: Metodologias Ágeis de Desenvolvimento de Software

10/04/2023 Metodologias Ágeis de Desenvolvimento de Software

44

Contatos Emerson Henrique

[email protected] http://emersonhss.wordpress.com http://twitter.com/emersonhss

Luciano Almeida [email protected] http://twitter.com/lucianohenrique

Márcio Lins [email protected] http://twitter.com/marciolins

SCRUM PARAÍBA http://scrumpb.org/