Metodologias Ágeis de Desenvolvimento de Software

Preview:

DESCRIPTION

Apresentação realizada na Mostra ASPER 2009.

Citation preview

METODOLOGIAS ÁGEIS DE

DESENVOLVIMENTO DE SOFTWARE

Por Emerson Henrique, Luciano Almeida e Márcio Lins

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

Sumário

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

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 3

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

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

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

... CAOS

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 7

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

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

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

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

Metodologias

XP – eXtreme Programming SCRUM LEAN CRYSTAL FDD ...

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 12

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

XP – EXtreme Programming Valores:

ComunicaçãoSimplicidadeFeedbackCoragem

Abordagem Incremental

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 14

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SCRUM Quais são os papeis envolvidos?

Product Owner (PO)

Scrum Team

Scrum Master

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 32

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

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

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

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

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

SCRUMExemplo de Burndown Chart

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 38

SCRUMExemplo de Burndown Chart

10/04/2023Metodologias Ágeis de Desenvolvimento de

Software 39

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)

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

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

42

Dúvidas?

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

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

44

Contatos Emerson Henrique

emerson.hss@gmail.com http://emersonhss.wordpress.com http://twitter.com/emersonhss

Luciano Almeida lucianohgalmeida@gmail.com http://twitter.com/lucianohenrique

Márcio Lins slackware.20@gmail.com http://twitter.com/marciolins

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

Recommended