Buscar

05_4A-Metodos_Ageis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

*
*
*
Tema da Aula
Processos de Software
Modelo Ágil
*
*
*
Conceitos Processos de Software
Processos de Software:
Modelos de Ciclo de Vida do Produto de Software
Clássico (cascata ou linear)
Outros Modelos:
Incremental 
Evolutivo 
Prototipação 
Espiral 
RAD 
Outros 
Processo Unificado (RUP - Unified Process)
Modelo Ágil
Métodos Formais
E outros
Engenharia 
de
Software
Desenvolvimento ágil
Em fevereiro de 2001, um grupo de 17 desenvolvedores experientes, consultores e empresários da área de software reuniram-se em Utah (USA) para discutir idéias e procurar alternativas às abordagens tradicionais para processo de desenvolvimento e de gestão de projetos em software.
Dessa reunião surgiu o “Manifesto Ágil de Software” que destaca as principais diferenças entre as abordagens tradicionais e os métodos ágeis.
Engenharia 
de
Software
Manifesto Ágil
Manifesto para o Desenvolvimento Ágil de Software
“Nós estamos descobrindo melhores maneiras de desenvolver software, fazendo dessa forma e ajudando os outros a fazerem. Por meio desse trabalho nós chegamos aos seguintes valores: 
Indivíduos e Iterações acima de Processos e Ferramentas
Trabalhar o Software acima de Documentação Abrangente
Colaboração do Cliente acima de Negociação de Contrato
Responder às Modificações acima de Seguir um Plano
Ou seja: enquanto os valores estão nos itens à direita, nós valorizamos os itens à esquerda”. Kent Beck et al. fev/2001 
http://agilemanifesto.org/
Engenharia 
de
Software
Processo Clássico x Processo Ágil
Engenharia 
de
Software
Desenvolvimento Ágil
“Agilidade tornou-se atualmente uma palavra mágica quando se descreve um processo moderno de software. Tudo é ágil. Uma equipe ágil é uma equipe esperta, capaz de responder adequadamente as modificações. Modificação é aquilo para o qual o desenvolvimento de software está principalmente focado. Modificações no software que está sendo construído, modificações nos componentes da equipe, modificações por causa de novas tecnologias, modificações de todas as espécies que podem ter impacto no produto que eles constroem ou no projeto que cria o produto. (segue)
Engenharia 
de
Software
. . .
“O apoio para modificações deveria ser incorporado em tudo que fazemos em software, algo que se adota porque está no coração e na alma do software. Uma equipe ágil reconhece que o software é desenvolvido por indivíduos trabalhando em equipes e que as especialidades dessas pessoas e sua capacidade de colaborar estão no âmago do sucesso do projeto”.
Desenvolvimento Ágil
Engenharia 
de
Software
“A história da engenharia de software está congestionada com dúzias de descrições e metodologias obsoletas de processo, métodos de modelagem e notações, ferramentas e tecnologias. Cada uma delas ganhou notoriedade e depois foi eclipsada por algo mais novo e (pretensamente) melhor. Com a introdução de uma ampla gama de modelos ágeis de processo – cada qual lutando por aceitação na comunidade de desenvolvimento de software – o movimento ágil está seguindo o mesmo caminho histórico”. 
Pressman
Desenvolvimento Ágil
Engenharia 
de
Software
Desenvolvimento Ágil
“A agilidade é dinâmica, específica em conteúdo, agressiva no acolhimento de modificações e orientada ao crescimento” 
Steve Goldman et al., apud Pressman
A agilidade é mais que resposta efetiva à modificação.... 
Engloba também a filosofia contida no manifesto ágil.
Encoraja estruturas e atitudes de equipe que tornam a comunicação mais fácil.
Enfatiza a rápida entrega de software operacional ao cliente
Dá menos importância aos produtos de trabalho (artefatos) intermediários do processo (que nem sempre é uma boa coisa)
Adota o cliente como parte da equipe e trabalha para eliminar as velhas atitudes “nós x eles”
Reconhece que planejamento em um mundo incerto tem seus limites e que o plano de um projeto deve ser flexível. 
Engenharia 
de
Software
Doze princípios da Aliança Ágil 
Nossa maior prioridade é satisfazer ao cliente desde o início, por meio de entrega contínua de software valioso.
Modificações de requisitos são bem vindas, mesmo que tardias no desenvolvimento. Os processos ágeis aproveitam as modificações como vantagens para a competitividade do cliente.
Entrega de software funcionando, a cada duas semanas até dois meses, de preferência no menor espaço de tempo.
O pessoal de negócios e os desenvolvedores devem trabalhar juntos diariamente durante todo o projeto. 
Engenharia 
de
Software
Construção de projetos em torno de indivíduos motivados. Forneça-lhes o ambiente e apoio que precisam e confie que eles farão o trabalho.
O método mais eficiente e efetivo de levar informação para e dentro de uma equipe de desenvolvimento é a conversa face a face.
Software funcionando é a principal medida de progresso.
Processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante, indefinidamente.
Doze princípios da Aliança Ágil 
Engenharia 
de
Software
Atenção contínua à excelência técnica e ao bom projeto facilitam a agilidade.
Simplicidade – a arte de maximizar a quantidade de trabalho não efetuado - é essencial.
As melhores arquiteturas, requisitos e projetos surgem de equipes auto-organizadas.
Em intervalos regulares, a equipe reflete sobre como se tornar mais efetiva, então sincroniza e ajusta adequadamente seu comportamento.
Doze princípios da Aliança Ágil 
Engenharia 
de
Software
Desenvolvimento Ágil
Características da “Agilidade”:
Rápida resposta às solicitações de mudanças
Efetiva comunicação entre desenvolvedores e stakeholders
Desenvolvimento conjunto (cliente junto da equipe)
Entrega do produto de forma incremental
Engenharia 
de
Software
Desenvolvimento Ágil
“Processo Ágil”:
Dirigido por descrições do cliente (história, cenário, metáforas etc.
Planos de curta duração
Desenvolvimento iterativo com grande ênfase nas atividades de construção
Liberar incrementos ao fim de cada iteração
Adaptar-se à medida em que as mudanças ocorrem
Engenharia 
de
Software
Desenvolvimento Ágil
Tamanho versus tempo de uma iteração
Cascata: uma iteração
(b) Espiral: iterações médias
(c) XP: iterações curtas
(a) Cascata
(b) Espiral
(c) XP
Engenharia 
de
Software
O que é um “Processo Ágil”?
Define-se em três as suposições-chave que caracterizam a maioria dos processos ágeis:
É difícil prever, antecipadamente, quais requisitos persistirão e quais mudarão. É igualmente difícil prever como as prioridades do cliente mudarão á medida em que o projeto prossegue.
 Para muitos tipos de software, o projeto e a construção devem ser executadas juntas de modo que os modelos de projeto sejam comprovados á medida que são criados. É difícil prever quanto de projeto é necessário antes que a construção seja usada para comprovar o projeto.
Engenharia 
de
Software
O que é um “Processo Ágil”?
Análise, projeto, construção e testes não são tão previsíveis (do ponto de vista do planejamento) como gostaríamos. 
Como criar um processo que possa gerenciar a imprevisibilidade?
- Adaptabilidade do processo. Um processo ágil deve ser adaptável.
AGIL = rapidamente adaptável
Engenharia 
de
Software
Modelos Ágeis de Processos
Família CRYSTAL (Alistair Cockburn): abordagens diferentes são necessárias para equipes de tamanho. diferentes. Permanece em comum as entregas frequentes, reflexão e comunicação e habitabilidade (o mínimo de processo necessário para que a equipe consiga ter sucesso).
FDD-Feature Driven Development (Peter Coad e Jeff de Luca): duas fases compostas por cinco processos bem definidos e integrados.
Fase 1- Concepção e Planejamento: a) desenvolver um modelo abrangente; b) construir uma lista de funcionalidades; e c)Planejar por funcionalidade.
Engenharia 
de
Software
O debate sobre Desenvolvimento Ágil
Jim Highsmtih descreve (jocosamente) os extremos ao caracterizar os sentimentos “pró-agilidade” e os “pró-engenharia de software tradicional”.
Frase que exprime o sentimento dos Agilistas: “Os metodologistas tradicionais são um punhado de bitolados que preferem produzir documentação perfeita a um sistema funcionando que satisfaça às necessidades do negócio”.
Frase que exprime o sentimento dos tradicionalistas: “Os metodologistas levianos, que dizer ‘ageis’, são um punhado de gloriosos hachers que terão uma grande surpresa quando tiverem que ampliar seus brinquedos para chegar a um software que abranja toda a empresa”
Engenharia 
de
Software
O debate sobre Desenvolvimento Ágil
Esse debate está arriscado á polarização, ou seja, virar um embate “quase religioso”, tais como muito que já vimos.... (Mac vs. PC, Windows vs. Linux, etc..)
Se a polarização se estabelecer, este embate levará uma guerra “quase religiosa”, na qual o pensamento racional será deixado de lado em detrimento a uma posição, e “crenças” começarão a aparecer.
A Tomada de decisão orientada por crenças ao invés de fatos, que certamente será desastroso. 
Fato: Ninguém é contra a agilidade. A verdadeira questão é: Qual é o melhor modo de alcançá-la?
Engenharia 
de
Software
O debate sobre Desenvolvimento Ágil
Não existem respostas absolutas para as questões aí colocadas.
Na “escola ágil” há muitos modelos de processo propostos (XP, Scrum, etc..), cada qual como abordagens sutilmente diferentes para agilidade. Em cada modelo há um conjunto de idéias que procuram se afstar da engenharia de software tradicional.
Porém, muitos destes conceitos ágeis nada mais são do que adaptações de bons conceitos de engenharia de software.
Conclusão: Há muito a se ganhar com o melhor de cada escola e quase tudo a se perder se houver polarização que vise a manchar a imagem das abordagens.
Engenharia 
de
Software
Fatores Humanos p/ Desenvolvimento Ágil
“Desenvolvimento ágil enfoca os talentos e habilidades dos indivíduos moldando os processos a pessoas e equipes específicas”
Esta afirmação ressalta que o processo deve se moldar às necessidades das pessoas e da equipe, e não o contrário.
“o que é considerado meramente suficiente por uma equipe é suficiente ou insuficiente demais para outra equipe” Alistari Cokburn, apud. Presmann, pág 62
Se os membros de uma equipe tiverem que estabelecer as características do processo que será aplicado, como preconiza o desenvolvimento ágil, uma série de características são mandatórias para as pessoas da equipe e para a equipe em si.
Engenharia 
de
Software
Fatores Humanos p/ Desenvolvimento Ágil
Características mandatórias para pessoas e para a equipe em si, nos métodos ágeis.
Competência: Inclui talento inato, habilidades específicas relacionadas a software e conhecimento global do processo que a equipe decidiu aplicar
Foco Comum: Mesmo que membros de uma mesma equipe realizem tarefas diferentes e tragam diferentes habilidades e competências ao projeto, todos devem estar focados no mesmo objetivo, ou seja, entregar um incremento do software no prazo e custo prometidos ao cliente.
Engenharia 
de
Software
Fatores Humanos p/ Desenvolvimento Ágil
Colaboração: Para realizar as tarefas da engenharia de software, seja qual for o processo, uma equipe deve manter espírito de colaboração em alta, quer seja entre si ou com os clientes, gerentes e usuários. 
Capacidade de Tomada de Decisão: Uma equipe deve ter controle sobre seus destinos, ou seja, independência para tomar suas decisões técnicas
Habilidade para resolver problemas abstratos: Ter capacidade e lidar continuamente com mudanças e ambigüidades, aceitando que problemas solucionados hoje serão diferentes dos de amanhã e que as lições aprendidas sempre são úteis para a solução de quaisquer outros problemas que venha a ser enfrentado.
Engenharia 
de
Software
Fatores Humanos p/ Desenvolvimento Ágil
Respeito e Confiança mútua: Uma equipe ágil deve ser tornar coesa, ou seja, consolidada a ponto de o todo sempre ser maior que a soma das partes (sinergia) 
Auto-organização: No contexto ágil, implica que a equipe deve preocupar-se com três coisas:
Organizar-se para o trabalho a ser feito
Organizar o processo para melhor se adaptar ao ambiente local do desenvolvimento
Organizar o trabalho com vistas a garantir a melhor entrega de incremento de software
“A equipe seleciona quanto trabalho acredita que pode realizar dentro de uma iteração e se compromete com isso. Nada desmotiva tanto uma equipe como uma pessoa de fora assumir compromisso por ela. Nada motiva tanto como a aceitação da responsabilidade com compromissos que a ela própria estabeleceu”. 
Ken Scwaber, apud Presmman, pag 62
Engenharia 
de
Software
Modelos Ágeis de Processos
FDD-Feature Driven Development 
Fase 2- Construção iterativa: d) detalhar por funcionalidade; e e) construir por funcionalidade.
ASD-Adaptative Software Development (Jim Highsmith): baseado na natureza adaptativa e as incertezas no desenvolvimento de software (sistemas adaptativos complexos) propõe três fases não lineares e provavelmente sobrepostas: a) especulação (planejamento empírico); b) colaboração; e c) aprendizado. Por meio de iterações curtas a equipe desenvolve o conhecimento cometendo pequenas falhas causadas por premissas falsas, que são corrigidas paulatinamente (aprendizado).
Engenharia 
de
Software
Modelos Ágeis de Processos
DSDM-Dynamic System Development Method: (UK-1994) baseado nas idéias do RAD, desenvolvimento iterativo e incremental.
Estudo de viabilidade (DSDM é apropriado?)
Estudo de negócios (entender necessidades de negócios, definir requisitos e uma arquitetura).
Desenvolver protótipos funcionais e documentação de análise inicial
Iteração de design
Construção do sistema
Implementação para entrega e implantação do produto
Engenharia 
de
Software
Modelos Ágeis de Processos
XP-Extreme Programing: (Kent Beck e Ward Cunningham-1999). Desenvolvimento de software baseado em comunicação constante, feedback, simplicidade, coragem e respeito, práticas comprovadas e técnicas para implementar os valores em práticas.
Engenharia 
de
Software
Modelos Ágeis de Processos
SCRUM: (Jeff Sutherland e equipe – década de 90). Pequenas equipes para maximizar a comunicação e compartilhamento de conhecimento e minimizar a supervisão. 
	Processo adaptável tanto a mudanças técnicas quanto de negócios (garantir o melhor produto). 
	O processo produz frequentes incrementos no produto. Testes e documentação são realizados à medida que o produto é construído. 
Engenharia 
de
Software
“Coisas simples devem continuar simples. 
 Coisas complexas devem ser possíveis”.
Allan Kay apud Pressman, 2006 p.103
“A agilidade é dinâmica, específica em conteúdo, agressiva no acolhimento de modificações e orientada ao crescimento” 
Steve Goldman et al., apud Pressman, 2006 p.60
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Outros materiais