Buscar

XP

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Desenvolvimento Ágil
Uma Introdução
Manifesto para o Desenvolvimento Ágil de Software
Proposto em 2001 pela Aliança Ágil composta por Kent e outros 16 membros especialistas em SW 
Decorrente da busca por melhores modos de desenvolver software
Propõe a valorização de:
Indivíduos e interações em vez de processos e ferramentas
Softwares funcionando em vez de documentação abrangente
Colaboração do cliente em vez de negociação de contratos
Resposta a modificações em vez de seguir um plano rígido
Manifesto para o Desenvolvimento Ágil de Software
Um manifesto é normalmente associado a um movimento político emergente
Contrapõe-se à “velha guarda”, sugerindo mudanças revolucionárias (espera-se que para melhor)
Desenvolvimento Ágil – Considerações Iniciais
Os métodos de desenvolvimento ágil foram criados em um esforço para vencer as fraquezas percebidas e reais da Engenharia de Software convencional
Métodos de desenvolvimento tradicionais requerem disciplina na sua aplicação
O ser humano é indisciplinado por natureza…
Desenvolvimento Ágil – Considerações Iniciais
O desenvolvimento ágil pode fornecer importantes benefícios, mas não é aplicável a todos os projetos, produtos, pessoas e situações
Também não é contrário à sólida prática da Engenharia de Software
Na economia moderna é muito difícil (ou impossível) prever como um sistema de informação evoluirá com o passar do tempo
Condições de mercado voláteis
Necessidades de usuários finais evoluem
Surgem novas ameaças de competição
Etc…
Desenvolvimento Ágil – Considerações Iniciais
Em muitas situações, não podemos mais definir completamente os requisitos antes do início do projeto
Os engenheiros de software devem ser ágeis o suficiente para responder a um ambiente de negócios mutável
Tais problemas modernos não devem nos levar a descartar princípios, conceitos, métodos e ferramentas valiosos de Engenharia de Software
A Engenharia de Software deve evoluir frente à crescente e real demanda por agilidade
O que é Agilidade ?
No contexto da Engenharia de Software, conforme :
Palavra “mágica” para descrever um processo de software moderno
Nesse processo, tudo deve ser ágil
Equipe ágil é equipe especializada capaz de responder adequadamente a modificações
Modificações no sotfware, na equipe, na adoção de novas tecnologias, etc…
Requer apoio a modificações
Requer indivíduos trabalhando em equipe
O sucesso do processo depende diretamente das especialidades desses indivíduos e da sua capacidade de colaboração
Desenvolvimento Ágil
O que é ?
Quem faz ?
Por que é importante ?
Quais são os passos ?
Qual é o produto do trabalho ?
Como temos a certeza de que fizemos corretamente ?
Desenvolvimento Ágil
O que é ?
A Engenharia de Software Ágil combina uma filosofia e um conjunto de diretrizes de desenvolvimento
A filosofia:
Encoraja a satisfação do cliente e a entrega incremental de sw
Equipes de projeto pequenas e altamente motivadas
Métodos informais, formulados conforme necessidades da equipe
Produtos de trabalhos de Engenharia de Software mínimos
Simplicidade global de desenvolvimento
As diretrizes de desenvolvimento:
Enfatizam a entrega em contraposição à análise e ao projeto (apesar dessas atividades não serem desencorajadas)
Comunicação contínua, fácil e ativa entre desenvolvedores e clientes. Clientes fazem parte da equipe de trabalho.
Desenvolvimento Ágil
Quem faz ?
Todos os interessados no projeto
Engenheiros de software
Gerentes
Clientes
Usuários finais
Compõem uma equipe ágil, auto-organizada e que controla seu próprio destino
A equipe enfatiza a comunicação e colaboração entre todos que a compõem
Desenvolvimento Ágil
Por que é importante ?
O ambiente moderno de negócios é apressado e sempre mutável
As necessidades do mercado são voláteis
A Engenharia de Software Ágil mostra-se como uma alternativa razoável em relação à Engenharia de Software convencional para certas categorias de software e certos tipos de projeto de software
Caracteriza-se pela entrega rápida de sistemas, em geral bem sucedidos
Desenvolvimento Ágil
Quais são os passos ?
As atividades básicas da Engenharia de Software permanecem:
Comunicação com o cliente
Planejamento
Modelagem
Construção
Entrega
Avaliação
Tais atividades são reduzidas a um conjunto mínimo de tarefas que leva a equipe de projeto à construção e entrega como prioridades
Desenvolvimento Ágil
Qual é o produto do trabalho ?
Incremento de software que é entregue ao cliente na data de entrega combinada
Desenvolvimento Ágil
Como temos a certeza de que fizemos corretamente ?
Na medida em que os incrementos de software entregues aos clientes satisfaçam as expecitativas
Princípios para Agilidade
Foram propostos pela Aliança Ágil:
Maior prioridade é satisfazer ao cliente desde o início por meio de entregas contínuas e incrementais do sw
Modificações de requisitos são bem-vindas, mesmo que tardias. Devem ser encaradas como vantagens para a competitividade do cliente
Entrega frequente de sw funcionando a cada duas semanas até dois meses (no menor intervalo possível)
Pessoal de negócio e desenvolvedores devem trabalhar juntos diariamente durante todo o projeto
Indivíduos motivados, fornecendo ambiente e apoio de que necessitam 
Princípios para Agilidade 
Foram propostos pela Aliança Ágil (cont.):
Melhor método para captação de informação é a interação direta (face a face)
 Software funcionando é a melhor medida de sucesso
O desenvolvimento deve conter ritmo constante sempre
Atenção contínua à excelência técnica e ao bom projeto facilitam a agilidade
Simplicidade (minimização da quantidade de trabalho não efetuado) é essencial
Melhores arquiteturas, requisitos e projetos surgem de equipes auto-organizadas
Em intervalos regulares, a equipe reflete em conjunto sobre como se tornar mais efetiva. Então sintoniza e ajusta adequadamente seu comportamento.
O que é um processo ágil?
É difícil prever quais requisitos de sw vão persistir e quais serão modificados.
Como criar um processo que possa gerenciar essa imprevisibilidade?
A resposta está na adaptabilidade do processo (na capacidade de se realizar modificações rápidas do projeto e das condições técnicas)
Um processo ágil deve, portanto, ser adaptável
A adaptação deve ser contínua porém incremental
É necessário o feedback constante do cliente para que as adaptações prioritárias possam ser feitas
Para tanto, recomenda-se a utilização de protótipos
A Política de Desenvolvimento Ágil
Debate: desenvolvimento ágil x desenvolvimento convencional
No entanto, ninguém é contra a agilidade
A verdadeira questão é:
Como construir sw que satisfaçam às necessidades do cliente atual e que exibam características de qualidade que lhes permitam ser estendidos e ampliados para satisfazer às necessidades do cliente no longo prazo?
Não existem respostas absolutas
Há muito a ser ganho considerando o melhor de ambas as correntes e pouco a ser ganho denegrindo qualquer uma dessas abordagens
Fatores Humanos
Características desejáveis nas pessoas da equipe de desenvolvimento ágil:
Competência
Habilidade
Foco comum
Colaboração
Capacidade de tomada de decisão
Habilidade de resolver problemas vagos (não muito claros)
Respeito e confiança mútua
Auto-organização
Equipe ágil organiza-se para o trabalho a ser feito
Equipe organiza processo para melhor acomodar seu ambiente
Equipe organiza o cronograma de trabalho para conseguir melhor entrega do incremento de software
Metodologia de Desenvolvimento Ágil: Extreme Programing (XP)
Há diferentes modelos de desenvolvimento ágil, muitos com características comuns entre si
XP é um dos exemplos mais representativos dentre esses modelos
XP utiliza uma abordagem de desenvolvimento orientada a objetos
Inclui um conjunto de regras e práticas que ocorrem em quatro atividades: planejamento, projeto, codificação e teste
Extreme Programing (XP)
Planejamento
Começa com a criação de um conjunto de histórias que descrevem as características e funcionalidades para o sw
Cada história (semelhante aos casos de uso) é descrita pelo cliente e
colocada em um cartão de indexação
O cliente atribui um valor de prioridade para cada história em relação ao contexto global do negócio
A equipe XP avalia cada história e atribui um custo medido em semanas de desenvolvimento
Se a história precisar de mais do que três semanas de desenvolvimento, pede-se ao cliente para desmembrá-la em histórias menores
Novas histórias podem ser escritas a qualquer momento 
Extreme Programing (XP)
Planejamento
Equipe XP decide como agrupar histórias na versão seguinte a ser desenvolvida
Uma vez estabelecido um compromisso básico para a versão (histórias a serem incluídas e data de entrega), a equipe determina como as histórias deverão ser desenvolvidas (em um dos três modos):
Todas as histórias serão implementas imediatamente (dentro de poucas semanas)
Histórias com prioridade mais alta serão desenvolvidas primeiro
Histórias de maior risco (custo) serão implementadas primeiro
Após a entrega da primeira versão, a equipe XP calcula a velocidade de projeto  quantidade de histórias implementadas
Extreme Programing (XP)
Planejamento
A velocidade do projeto pode ser usada para:
Ajudar estimar as datas de entrega e o cronograma para as versões subsequentes
Determinar se houve um comprometimento efetivo foi feito sobre todas as histórias implementadas
Na medida em que o desenvolvimento prossegue, o cliente pode:
Adicionar histórias
Mudar a prioridade de uma história existente
Dividir histórias
Eliminar histórias
A equipe XP reconsidera todas as versões remanescentes e modifica seus planos adequadamente
Extreme Programing (XP)
Projeto
Segue rigorosamente o princípio KIS (keep it simple)
O XP encoraja o uso de cartões CRC (Classe-Responsabilidade-Colaboração) como mecanismo para raciocinar sobre o sw no contexto OO
Cartões CRC identificam classes oo que são relevantes para o incremento sdo sw atual
Os cartões CRC são único produto concreto gerado pela etapa do projeto XP
Caso um problema de projeto seja encontrado como parte de uma história, o XP recomenda a criação imediata de um protótipo desta parte
Denominado solução de ponta, o protótipo é implementado e avaliado
Intenção de reduzir o risco, dedicando foco e prioridade a pontos críticos
Extreme Programing (XP)
Projeto
O XP encoraja a refabricação
Refabricação é o processo de modificar um sistema de software de tal modo que ele não altere o comportamento externo do código, mas aperfeiçoe a estrutura interna. É um modo disciplinado de limpar o código, modificando/simplificando o projeto interno
Com a refabricação o projeto ocorre continuamente na medida em que o sistema é construído
Deve-se ter cuidado, no entanto, com o esforço necessário à refabricação que pode crescer muito na medida em que o tamanho da aplicação cresce
Extreme Programing (XP)
Codificação
O XP recomenda que antes da codificação, seja desenvolvida uma série de testes unitários que exercitarão cada uma das histórias incluídas na versão atual (incremento) do sw
Com os testes prontos, o desenvolvedor estará melhor preparado para focalizar no que precisa ser implementado para passar no teste unitário
Nada mais deve ser adicionado à implementação (KIS)
Uma vez completado o código, ele pode ser imediatamente submetido ao teste unitário, fornecendo feedback instantâneo ao desenvolvedor
Um conceito chave na codificação do XP é a programação em pares
Extreme Programing (XP)
Codificação
Um conceito chave na codificação do XP é a programação em pares
O XP recomenda que duas pessoas trabalhem juntas em uma estação de trabalho para criar um código correspondente a uma história
Isso fornece um mecanismo de solução de problemas e de garantia em tempo real
Mantém os desenvolvedores focados no problema
Na prática cada pessoa assume um papel diferente:
Uma pensa nos detalhes de código de uma parte específica do projeto
A outra garante que as normas do XP estejam sendo seguidas e que o código gerado vai se encaixar no projeto mais amplo da história
Extreme Programing (XP)
Codificação
Na medida em que os pares de programadores completam seu trabalho, o código desenvolvido por eles é integrado ao trabalho dos outros
Em alguns casos isso é realizado diariamente por uma equipe de integração
Em outros casos, os pares de programadores tem a responsabilidade pela integração
Essa estratégia de integração contínua, ajuda a evitar problemas de compatibilidade e interface, além de fornecer um ambiente de “teste de fumaça” que ajuda a descobrir rapidamente os erros
Extreme Programing (XP)
Teste
XP recomenda a formulação de testes unitários antes das implementações
Encoraja a adoção da estratégia de testes de regressão
Na medida em que os testes unitários são organizados, os testes de integração e validação podem ocorrer diariamente
Essa abordagem fornece um indicativo de progresso ou deterioração do processo como um todo
Os testes de aceitação XP, também chamados de testes do cliente, são especificados pelo cliente e focalizam as características e funcionalidades do sistema global que são visíveis e passíveis de revisão pelo cliente
Testes de aceitação são derivados das histórias do usuário que foram implementadas como parte de uma versão do software
Extreme Programing (XP)

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais