Escolar Documentos
Profissional Documentos
Cultura Documentos
Inserir Título
de Software
Aqui
Inserir Título Aqui
Métodos e Ferramentas Ágeis
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Métodos e Ferramentas Ágeis
Objetivos
• Descrever métodos para processos ágeis.
Caro Aluno(a)!
Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o
último momento o acesso ao estudo, o que implicará o não aprofundamento no material
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns
dias e determinar como o seu “momento do estudo”.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de
troca de ideias e aprendizagem.
Bons Estudos!
UNIDADE
Métodos e Ferramentas Ágeis
Contextualização
Para começarmos nossos estudos, proponho a você a leitura do artigo The Impact
of an Agile Methodology on Software Development Costs, de Kristin Fergis.
Obviamente, tudo isso foi feito com objetivos claros de entregar ao Mercado um
software o mais rápido e correto possível e, também, de antecipar e mitigar riscos. Além
de isso ter custo baixo, significa software “barato”, e barato, aqui, significa custo justo;
não quer dizer software a “preço de banana”, com profissionais mal remunerados, sem
experiência, sem treinamento ou mentoria e largados a “Deus dará”.
Coisa que muitos RH de Empresas pelo nosso país têm realizado de forma irrespon-
sável, baseados apenas em custo e em comando de superiores despreparados, mesmo
nas áreas requisitantes, o que acaba gerando como resultado um alto turn-over, insatis-
fação profissional, má contratação, produtos de software de péssima qualidade e conde-
nados a um retrabalho sem fim e a um custo proibitivo.
6
Introdução
A abordagem de processo de desenvolvimento de software orientada a objeto é,
atualmente, a mais difundida no mundo. Isso ocorre por causa da relativa modalização,
segurança e reaproveitamento de código que essa abordagem permite.
Não obstante, vivemos a era da tecnologia em nuvem, mobile, web e Iot sendo
desenvolvidas de forma vertiginosa no mundo todo, e esse tipo de Abordagem Orien-
tada a Objetos se presta mais assertivamente à modalidade de problemas os quais se
pretende resolver quando falamos de desenvolvimento de software.
Procedimentos Procedimentos
Dados Globais ...
Procedimentos
Procedimentos
Procedimentos ...
Procedimentos
Dados Globais ...
Procedimentos
O conceito de classe e objeto deve estar muito bem definido. Classe é um modelo
para criar objetos e estes são uma estrutura de dados específica, fornecendo valores
iniciais para as variáveis ou atributos, bem como inserções comportamentais.
7
7
UNIDADE
Métodos e Ferramentas Ágeis
Observe:
class
car
methods attributes
refuel() getFuel fuel
setSpeed() getSpeed() maxspeed
drive()
8
Scrum
• Desenvolvido por Sutherland e Schwaber, no princípio dos anos 1990;
• É uma Metodologia Ágil de Gerenciamento de Projetos;
• Equipes pequenas e auto-organizadas;
• Itens de trabalho ou desenvolvimento menores, gerenciais, que permitam iterações
numa linha de tempo chamadas de sprints;
• Os times possuem 3 papéis, o de proprietário do produto, o Scrum máster e os
desenvolvedores;
• Possui 4 tipos de reuniões: reunião para planejamento do sprint, reuniões diárias
em pé, reunião de revisão do sprint e reunião de retrospectiva do sprint.
1-4 Week
Product Owner The Team Sprint Sprint Review
1 Team selects
2 Task
3
Prioritized starting at atop Breakout
list of what as much as it
4 is required:
5 can commit Sprint end date and
features, Sprint team deliverable
6 bugs to fix... to deliver by Finished Work
7
end of Sprint Backlog do not change
8
Product Sprint
Backlog Planning
Meeting
Sprint
Retrospective
XP – Extreme Programing
• É uma Metodologia Ágil de Desenvolvimento de Software;
• Processo com o qual criar software de forma ágil e produtiva;
• Desenvolvido por Beck, Jeffries e Cunningham, por volta de 1995;
• Concentra-se nas práticas de Engenharia de Software necessárias para oferecer
software, com qualidade;
• Desenvolvimento orientado por teste;
• Refatoração;
• Programação em pares;
• Histórias de usuários (requisitos);
• Usar em casos de projetos com requisitos mutáveis, projetos com riscos muito altos
e equipes de desenvolvimento pequenas – até 10 pessoas.
9
9
UNIDADE
Métodos e Ferramentas Ágeis
Bugs
User Stories
Bugs
Next Iteration
10
CRC Move People 100%
Cards Around Unit Test
Simple
Design Passed
Complex Change We Need
Problem Pair Help
Failed Run Failed
Next Taks Pair Create Unit New Unit Acceptance
or Failed Up Test Pair Tests Continuous Test
a Unit
Acceptance Passed Programming New Integration
Test Test Unit Functionality
Test Acceptance
Simple Complex Test Passed
Code Code
Refactor
Mercilessly
Figura 8 – Visão detalhada do sub-processo de “COLLECTIVE CODE OWNERSHIP”
Scrum
Daily Scrum
Team
Whole
Team
XP Sprint
Backlog
Collective
Ownership
Coding Burndown
Product TDD Standard Chart
Customer
Backlog Tests Pair
Programming Refactoring Sprint
Product Onsite Planning Planning
Owner Customer Game Meeting
Simple
Continuous Design
Integration Sustainable
Pace
XP Metaphor
Coach Sprint
Scrum Small
Master Releases Retrospective
Sprint
Review
A grande maioria das equipes Scrum está operando como um híbrido Scrum-XP, no
qual empregam pelo menos um subconjunto das práticas originadas no XP.
11
11
UNIDADE
Métodos e Ferramentas Ágeis
Apresenta vantagens quando utilizado, como, por exemplo: reduz os erros no Código
de Produção e, consequentemente, na própria produção, melhora bastante a qualidade
do Código Escrito e fornece testes automatizados quando é necessário o Teste de
Regressão. Afinal, se você utilizar o Teste Manual, o tempo vai aumentar à medida que
o Projeto for ganhando volume, portanto, liberar ficará cada vez mais longo.
Parece simples, mas lembre-se que primeiro você fez o teste, depois escreveu algum
Código de Produção para executar no mundo real e ver se tem falhas ou não e vai
refatorando esse Código até que ele fique limpo.
Todavia, há dificuldade para se a usar TDD, pois grande parte delas está no próprio
fato de que há a necessidade de mudança de cultura para quebrar a resistência da Equipe,
negociar muito bem o prazo de entrega com o cliente, já que, conforme dito, quanto
maior o software, maior a quantidade de testes, mais Teste de Integração entre outros
serão produzidos e, portanto, a liberação de versões vai ficar mais lenta.
Por fim, é importante perceber que os requisitos de baixo nível usados para gerar
o TDD são diretamente derivados dos Testes de Aceitação de alto nível. Portanto, os
Testes de Aceitação descrevem os objetivos comerciais de alto nível, enquanto o TDD
ajuda os desenvolvedores a programá-los como requisitos de negócios no software.
12
É bom lembrar, também, que TDD é baseado em uma multidão de testes e, portanto,
automatizar é mandatório.
Além disso, há ferramentas baseadas em scripts para serem utilizadas como Watir,
Quick Test e Canoo.
INITIAL
TEST
TEST-DRIVEN
DEVELOPMENT
REFACTOR CODE
CYCLE
Figura 10 – Ciclo TDD
13
13
UNIDADE
Métodos e Ferramentas Ágeis
Opportunities
Issues
Integration/ Test
Architecture
Build/Release Implementation
Observe Act
Environment
(Observation) Feedback Interact (Action)
Initiate Execute Close
(Conception) (Innovation) (Cessation)
14
Execute (Inovação).
É evoluir a visão do produto, o roteiro do projeto e a justificativa de
negócios e tecnologia; identificar e enfrentar os riscos; e identificar
e aproveitar oportunidades enquanto arquiteta, desenvolvendo
(implementando e testando) e implantando (integrando, construindo e
liberando) o produto. Existem, geralmente, muitos objetivos, cada um
resultando na implantação do produto.
Estratégia (Definir).
A equipe considera possíveis mudanças no produto e no projeto e
suas ramificações, decide aceitar ou rejeitar as mudanças potenciais, e
incorpora as mudanças aceitas no produto e no projeto (workshops de
mudança de avaliação).
As partes interessadas e os usuários se concentram na evolução da
visão (oficinas de visão e requisitos).
A equipe se concentra na evolução da justificativa de negócios e
tecnologia para o produto e o projeto.
A equipe se concentra na evolução dos riscos e oportunidades e no
roteiro do projeto (oficinas de mapeamento rodoviário).
A equipe se concentra em tomar um pulso do produto e projetar em
metas e objetivos (oficinas de pulso).
Execute (Arquitete, Desenvolva (Implemente e Teste), Implique)
A equipe se concentra em aproveitar oportunidades ao enfrentar
os riscos na arquitetura, desenvolvimento (implementação e teste)
e implantação (integração, construção e liberação) do produto
(workshops de desenvolvimento de produtos).
A equipe aborda questões nas (oficinas de resolução de problemas).
A equipe identifica possíveis mudanças no produto e no projeto.
Close (Cessation)
É retirar o produto e fechar o projeto (oficinas de encerramento).
Pode haver um ou mais objetivos que devem ser alcançados para
atingir esse objetivo.
Visão
Fornece foco e direção geral, o roteiro fornece orientação específica
através de metas e metas de missão, e as colaborações estabelecem
intuição, confiança, unidade e coesão.
(ALHIR, s.d.)
INCEPTION ELEBORATION CONSTRUCITION TRANSITION
• Define project scope • Specify requirements • Model, build and test • System testing
• Estimate cost and in detail system • User testing
schedule • Identify architecture • Develop supporting • System rework
• Define risks • Validate architecture documentation • System deployment
• Develop business • Evolve project
cases environment
• Prepare project • Staff project team
environment
LIFECYCLE OBJETIVES (LCO) LIFECYCLE ARCHITECTURE (LCA) INITIAL OPERATING CAPACITY (LCA) PRODUCT RELEASE (PR)
• Scope concurrence • Vision stability • System stability • Business acceptance
• Initial requirements • Requirements stability • Requirements stability • Operations acceptance
definition • Architecture stability • Prepared stakeholders • Suport acceptance
• Plan concurrence • Risk acceptance • Risk acceptance • Cost and estimate
• Risk acceptance • Cost and estimate • Cost and estimate acceptance
• Process acceptance acceptance acceptance
• Business case • Realistic chance to • Project plan
• Project plan succeed
• Project plan
15
15
UNIDADE
Métodos e Ferramentas Ágeis
Portanto, deve-se tomar cuidado com a adoção AUP, não pela aplicação do método
em si, que é excelente, mas porque em seu time de projeto e desenvolvimento é man-
datório possuir pessoal sênior.
O processo AMDD pode ser mais bem entendido nas visualizações de Ambler (2005):
Iteration 1: Development
Iteration 2: Development
Iteration n: Development
16
Model A Bit
Model
Ahead
Storm
(optional)
Model Concrete
Feedback
Information Information
Estimate
Refactor Build
Requirements
Implement
Defects Feedback
Deployed Software
Usability
Acceptance
Testing
Testing
(optional)
User Test
Figura 14 – Processo de desenvolvimento de Software Ágil durante uma iteração de Desenvolvimento Ágil
Dessa forma, ele hipertrofia o Scrum, tornando-o mais que simplesmente um Processo de
Gestão de Projetos, mas o colocando como um framework robusto, abarcando desde a con-
cepção, passando pela gestão e chegando à produção, aos testes e à entrada em produção.
Forças do DAD:
• É flexível e agrega outras técnicas ágeis;
• Não é prescritivo;
• Focado numa abordagem explícita de arquitetura;
• DevOps é mandatório;
• Aborda governança;
• Focado na solução como um todo, e não apenas no produto de software.
17
17
UNIDADE
Métodos e Ferramentas Ágeis
Não há apenas um ciclo de vida único para DAD; conhece-se ao menos 4 versões.
Todavia, oferecemos para estudo a que possui DevOps, pois é a mais completa e é a que
vem sendo adota em Empresas em geral.
Ciclo de vida do sistema de alto nível DAD ampliando o ciclo de vida SCRUM: https://goo.gl/xVyWFL
Trata-se de um Processo abrangente e complexo que leva em conta uma série de dis-
ciplinas que entendem RUP de forma a torná-lo muito mais completo, tentando manter
as características ágeis e, por isso, na Empresa em sua totalidade.
• Disciplinas de Projeto de Software:
» Modelagem de Negócios;
» Requisitos do Negócio;
» Análise;
» Projeto;
» Implementação;
» Teste;
» Desenvolvimento;
» Configuração e Gerenciamento de Mudanças;
» Gerenciamento de Projetos;
» Ambiente;
» Operações e Suporte.
18
• Disciplinas de Negócios
»» Modelagem de Negócios Empresariais;
»» Gestão de Portfólio;
»» Arquitetura Empresarial;
»» Reuso Estratégico;
»» Gestão de Pessoas;
»» Administração Empresarial;
»» Melhoria de Processos de Software.
Identify
Generalize Program Defects and
Define Rework Assess Enhancements
Initial Define
Management Infrastructure
Documents
Assure Quality, Manage the Project, Train and Educate, Manage People, Manage Risk, Manage Reuse, Manage Metrics, Manage Deliverables, Manage Infrastructure
“Serial in the large, iterative in the small, delivering incremental releases over”
19
19
UNIDADE
Métodos e Ferramentas Ágeis
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Ciclo de vida do sistema de alto nível DAD ampliando o ciclo de vida SCRUM.
https://goo.gl/pgzOFI
Ciclo TDD.
https://goo.gl/jVMwAc
Diferença entre Classe e Objeto
https://goo.gl/p5RjgJ
Equipes Scrum operando um híbrido Scrum-XP.
https://goo.gl/V2m45u
Estruturada versus Orientação a Objetos.
https://goo.gl/yVyh4F
Extreme programming: a gentle introduction.
https://goo.gl/cHsx
Fases e marcos do Ciclo de Vida AUP.
https://goo.gl/crWA8F
Framework SCRUM.
https://goo.gl/gcRTHD
Manifesto para desenvolvimento de software ágil.
https://goo.gl/ruvK
Processo de desenvolvimento de software ágil durante uma iteração de desenvolvimento ágil.
https://goo.gl/nuCvJ7
Projeto utilizando XP.
https://goo.gl/2f7QvR
TDD – Exemplo passo a passo.
https://goo.gl/YZQeFh
Visão detalhada de “ITERATION” em XP.
https://goo.gl/2f7QvR
Visão detalhada do sub-processo “DEVELOPMENT” em XP.
https://goo.gl/2f7QvR
Visão detalhada do sub-processo de “COLLECTIVE CODE OWNERSHIP”.
https://goo.gl/2f7QvR
20
Sites
The Agile Unified Process (AUP)
ALHIR, Sinan Si. O Processo Unificado Agilizado (AUP).
https://goo.gl/jWlwV
The Agile Unified Process (AUP)
AMBLER, Scott W. O Processo Unificado Agilizado (AUP).
https://goo.gl/crWA8F
Examining enterprise unified process
AMIR, A. A Examining enterprise unified process.
https://goo.gl/k4M1Rb
9 Benefícios do Desenvolvimento Test Driven
WINTER, David. 9 Benefícios do Desenvolvimento Test Driven.
https://goo.gl/dWkoC2
Abertura da Classe Carro
https://goo.gl/dgPXFr
Ciclo de Vida Aumentado para o Processo Unificado Empresarial.
https://goo.gl/ipWCpr
Ciclo de vida do Desenvolvimento do Modelo Ágil.
https://goo.gl/nuCvJ7
Ciclo de Vida do Processo de Software Orientado a Objetos.
https://goo.gl/ipWCpr
Leitura
Agile Model Driven Development (AMDD)
AMBLER, Scott W. Agile Model Driven Development (AMDD).
https://goo.gl/k73wco
Agile Unified Process e a Aderência ao Modelo de Processo de Software Mps.Br Nível G.
FURLAN, Renata Cristina.
https://goo.gl/P0lgPy
The Impact of an Agile Methodology on Software Development Costs
FERGIS, Kristin. The Impact of an Agile Methodology on Software Development Costs.
https://goo.gl/LTo5Ct
21
21
UNIDADE
Métodos e Ferramentas Ágeis
Referências
ALHIR, Sinan Si. O Processo Unificado Agilizado (AUP). Disponível em: <http://
www.methodsandtools.com/archive/archive.php?id=21>. Acesso em: 25 jan. 2018;
FOGGETTI Cristiano, ORG. Gestão ágil de projetos. São Paulo: Pearson, 2015.
(e-book)
22