Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

26
Engenharia de Software Processos de Software - Desenvolvimento Ágil

description

Com intuito de esclarecer sobre como surgiu o manifesto ágil e discutir as metodologias ágeis mais utilizadas. Esse material é parte de um conjunto de materiais sobre Engenharia de Software Software Engineering - Agil Development.

Transcript of Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Page 1: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Engenharia de SoftwareProcessos de Software - Desenvolvimento Ágil

Page 2: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Objetivos da Aula

Apresentar o desenvolvimento ágil e os principais modelos conhecidos.

Page 3: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento ÁgilBreve Histórico

2001 - Kent Beck e outros dezesseis desenvolvedores e consultores se reunem e formam a “ Agile Alliance “ - “ Aliança dos Ágeis”, e assinam o manifesto ágil. E decidiram valorizar no desenvolvimento, ver o link para o Manifesto Ágil:

1.Indivíduos e interação entre eles mais que processos e ferramentas

2.Software em funcionamento mais que documentação abrangente

3.Colaboração com o cliente mais que negociação de contratos4.Responder a mudanças mais que seguir um plano

Page 4: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil

Os 12 princípios do manifesto ágil:

1. Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.

2. Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.

3. Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência aos períodos mais curtos.

4. Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diáriamente, durante todo o curso do projeto.

5. Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.

Page 5: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil

Os 12 princípios do manifesto ágil:

6. O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.

7. Software funcional é a medida primária de progresso.8. Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e

usuários, devem ser capazes de manter indefinidamente, passos constantes.9. Contínua atenção à excelência técnica e bom design, aumenta a agilidade.

10. Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.11. As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.12. Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam

seu comportamento de acordo.

Page 6: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil

Com base nesses princípios e valores algumas metodologias ágeis de desenvolvimento foram surgindo. Entre elas podemos destacar: XP e Scrum.

Page 7: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

“Extreme Programming (XP) é uma metodologia de desenvolvimento de software, nascida nos Estados Unidos ao final da década de 90. Vem fazendo sucesso em diversos países, por ajudar a criar sistemas de melhor qualidade, que são produzidos em menos tempo e de forma mais econômica que o habitual. Tais objetivos são alcançados através de um pequeno conjunto de valores, princípios e práticas, que diferem substancialmente da forma tradicional de se desenvolver software. “ (Extreme Programming)

Page 8: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

Foi definido um conjunto de 5 valores que estabelecem as bases para todo trabalho utilizando XP:

● Comunicação;● Simplicidade;● Feedback;● Coragem (Disciplina) e● Respeito.

Page 9: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

Para estabelecer comunicação efetiva entre engenheiros de software e demais envolvidos no sistema, a XP enfatiza a colaboração estreita, embora muitas vezes informal ( de forma verbal), entre clientes e desenvolvedores, o estabelecimento de metáforas eficazes para comunicar conceitos importantes, feedback contínuo e evitar documentação volumosa como meio de comunicação.

Page 10: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

Para alcançar a simplicidade, a XP restringe os desenvolvedores a projetar apenas para as necessidades imediatas, em vez de considerarem as necessidades futuras. O intuito é criar um projeto simples que possa ser facilmente implementado em código. Caso precise melhorar, isso poderá ser facilmente feito posteriormente.

Page 11: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

O feedback provém de três fontes: do próprio software implementado, do cliente e dos outros membros da equipe de software. Através de uma estratégia para elaboração eficazes dos testes, eles podem fornecer um feedback para a equipe ágil.

O XP valoriza os testes unitários, a medida que as classes são implementadas os testes unitários são feitos para cada operação , de acordo com a funcionalidade especificada. A medida que, um incremento é entregue a um cliente, as histórias de usuários ou casos de uso implementados pelo incremento são usados como base para testes de aceitação.

Page 12: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

A XP foca no desenvolvimento para o software hoje, sem se preocupara com o que pode vir a ocorrer com o software no futuro para isso é preciso coragem, ou disciplina, para atenter as necessidades atuais do projeto. Por este motivo muitas equipes que utilizam métodos ágeis sucubem, pois é um engano querer projetar o “futuro do sistema” já que as mudanças são bem aceitas, logo se a equipe ao inves de preocupar-se com o problema atual preocupa-se com problemas futuros podem ter realmente perdas significativas de trabalho já que o amanhã do sistema pode sofrer grandes mudanças.

Page 13: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

A XP foca no desenvolvimento para o software hoje, sem se preocupara com o que pode vir a ocorrer com o software no futuro para isso é preciso coragem, ou disciplina, para atenter as necessidades atuais do projeto. Por este motivo muitas equipes que utilizam métodos ágeis sucubem, pois é um engano querer projetar o “futuro do sistema” já que as mudanças são bem aceitas, logo se a equipe ao inves de preocupar-se com o problema atual preocupa-se com problemas futuros podem ter realmente perdas significativas de trabalho já que o amanhã do sistema pode sofrer grandes mudanças.

Page 14: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

Por fim o respeito, respeitar os membros envolvidos no processo e outros envolvidos , de forma direta ou indireta.

Page 15: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

O processo XP

utiliza-se de 4 atividades metodológicas:

● Planejamento;● Projeto;● Codificação e ● Testes.

Page 16: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

O processo XP: Planejamento

ouvir - Levantamento de requisitos ( ouvir as partes interessadas )histórias - semelhante aos casos de uso, entender o ambiente de negócios do software - permite uma percepção ampla dos resultados solicitados e esperados para o sistema.

“ouvir “ conduz à criação de um conjunto de “histórias” que descrevem os resultados, caracteristicas e funcionalidades esperadas pelo usuário.

Page 17: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

O processo XP: Projeto

● Segue o lema KIS (Keep It Simple), mantenha simples.● Quando aparece um requisito problemático ou confuso, é recomendado a

criação de um protótipo.● Projeto é algo transitório, deve ser continuamente alterado conforme a

construção prossegue.● Essa fase ocorre tanto antes quanto depois da codificação.

Page 18: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

O processo XP: Codificação

Conceito chave é a programação em duplas ( duas pessoas em um única máquina codificando para criar o código de uma história) ;

Conforme a dupla termina uma história, o código gerado é integrado ao software.

Page 19: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - XP

O processo XP: Codificação

Conceito chave é a programação em duplas ( duas pessoas em um única máquina codificando para criar o código de uma história) ;

Conforme a dupla termina uma história, o código gerado é integrado ao software.

Page 20: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - Scrum

De acordo com Pressman [PRESSMAN, 2011], o nome Scrum vem de uma atividade do rugby.

Desenvolvido no início de 1990 e foi concebido por Jeff Sutherland e sua equipe de desenvolvimento.

As atividades estruturais do Scrum são: Requisitos, Analise, projeto, evolução e Entrega.

Page 21: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - Scrum

“No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados de Sprints. O Sprint representa um Time Box dentro do qual um conjunto de atividades deve ser executado. Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações, que são chamadas de Sprints no caso do Scrum.” [SCRUM]

Page 22: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - Scrum

“As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint Planning Meeting, ou seja, uma reunião de planejamento na qual o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que ela será capaz de implementar durante o Sprint que se inicia. As tarefas alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.” [SCRUM]

Page 23: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Desenvolvimento Ágil - Scrum

“A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente de manhã), chamada Daily Scrum. O objetivo é disseminar conhecimento sobre o que foi feito no dia anterior, identificar impedimentos e priorizar o trabalho do dia que se inicia. Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting. Finalmente, faz-se uma Sprint Retrospective e a equipe parte para o planejamento do próximo Sprint. Assim reinicia-se o ciclo. Veja a ilustração abaixo:” [SCRUM]

Page 24: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Scrum - Ciclo

Page 25: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Exercícios1 - Escreva uma história de usuário XP que descreva o recurso “ sitea favoritos “ disponível em grande parte dos navegadores;2 - Leia o Manifesto Ágil (http://manifestoagil.com.br/) e comente sobre os “valores” que poderiam levar a quipes a terem problemas.3 - Pesquise e responda: Qual o papel do Scrum Master e do Product Owner e quem assume essas responsabilidades em um projeto?

Page 26: Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil

Referência BibliográficaPRESSMAN, Roger S. Engenharia de Software: Uma abordagem Profissional / Roger S. Pressman; tradução Ariovaldo Griesi, Mario Moro Fecchio; revisão técnica Reginaldo Arakaki, Julio Arakaki, Renato Mazan de Andrade. - 7. ed. - Porto Alegre :AMGH, 2011.

SOMMERVILLE, Ian. Engenharia de Software, 8º edição / Ian Sommerville; tradução: Selma Shin Shimizu Melnikoff, Reginaldo Arakaki, Edílson de Andrade Barbosa; revisão técnica: Kechi Kirama. -- 8 º ed. -- São Paulo: Pearson Addison - Wesley, 2007.

Manifesto Ágil. Disponível em <http://manifestoagil.com.br/>. Acessado em 19 de agosto de 2014.

Extreme Programming. Disponível em <http://desenvolvimentoagil.com.br/xp/> . Acessado em 19 de agosto de 2014.

Scrum. Disponhttp://desenvolvimentoagil.com.br/scrum/ível em < http://desenvolvimentoagil.com.br/scrum/ > . Acessado em 19 de agosto de 2014.