Escolar Documentos
Profissional Documentos
Cultura Documentos
Inserir Título
de Software
Aqui
Inserir Título Aqui
Lean e DevOps
Revisão Textual:
Prof.ª Me. Sandra Regina F. Moreira
Lean e DevOps
Objetivos
• Conceituar e conhecer as metodologias atuais LEAN para desenvolvimento e entrega
de software.
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
Lean e DevOps
Contextualização
Para começarmos nossos estudos, gostaria de propor que você que assistisse à
entrevista em vídeo intitulada “Filosofia Lean em 4 minutos”. Conforme Renato Willi,
produtor do vídeo: “Esta é uma breve apresentação sobre uma metodologia ágil de de-
senvolvimento de software, derivada do Modelo Toyota de Produção, chamada Lean
(“enxuto” em inglês) ”.
6
Feature Driven Development - FDD
Trata-se de uma forma de desenvolver projetos de software de forma iterativa, ou
seja, seguindo os princípios ágeis de desenvolvimento e incrementando cada funciona-
lidade (ou parte) em produção cumulativamente, de modo a termos, ao final, o sistema
completamente operacional e atualizado.
O idealizador desse método foi Jeff de Lucca por volta de 1997, e dentro de
sua visão, o FDD foi criado para, entre outras coisas, dar visibilidade ao projeto de
software, principalmente quanto a situação atual, já que como o próprio nome diz, o
desenvolvimento é direcionado às funcionalidades. A medição também utiliza como item
de desempenho, a quantidade das funcionalidades feitas e ainda por fazer.
Algo importante que deve ser feito para que o FDD funcione efetivamente é a or-
ganização das entregas, ou seja, os “milestones”, demonstrando às partes interessadas
quando e qual funcionalidades eles irão receber ao longo do tempo.
Muitas vezes os usuários e/ou clientes são impacientes, e, desta forma, mantê-los
abastecidos de novidades operacionais demonstra não apenas que o software está evo-
luindo, mas também, que está funcionando da forma que eles precisam e acrescentando
valor ao negócio, uma vez que eles enxergam a complementaridade funcional.
Os diagramas UML são muito usados para representar objetos de alto nível, como
diagramas de domínio e diagramas de classe.
Tudo isso é possível graças à abordagem FDD, que a partir de uma situação complexa
de domínio, a quebra em partes pequenas e mais simples. E cada uma delas é resolvida
num período de tempo curto, como já mencionado anteriormente (de 2 a 3 semanas
no máximo).
Perceba ainda que o tempo para achar erros e corrigir é bem menor, exatamente por
causa dessa redução de tempo entre a análise e o teste, já que as iterações, e consequen-
te integração da funcionalidade na aplicação operacional, é curta.
7
7
UNIDADE
Lean e DevOps
Initial Model
Modeling Storming
Segundo Ambler (2005), o ciclo de vida FDD pode ser descrito conforme o excerto:
[...] existem cinco atividades principais em FDD que são realizadas de
forma iterativa. O primeiro é desenvolver um modelo geral, com obje-
tos de alto nível e notas. No início de um projeto, seu objetivo é iden-
tificar e entender os fundamentos do domínio, e ao longo do projeto,
irá modelar para refletir o que se está construindo. O segundo passo
é Build A Features List, agrupando-os em conjuntos relacionados e
áreas temáticas. Em seguida, planejamos por recurso, o resultado final
será um desenvolvimento, a identificação de proprietários de classe e a
identificação de proprietários de conjuntos de recursos. A maior parte
do esforço em um projeto de FDD, aproximadamente 75%, é com-
posto pelos passos 4 de 5 da figura acima: (Design By Feature e Build
By Feature). Essas duas atividades incluem tarefas como modelagem
detalhada, programação, teste e embalagem do sistema.
Plano de
Desenvolvimento
Pacotes de Trabalho
8
Podemos explicar o ciclo acima de forma simplificada, adotando as seguintes ações:
• Desenvolver um modelo geral com membros da equipe familiarizados com o domí-
nio comercial para construir um modelo geral do domínio, e, dessa forma, estabe-
lecer o escopo do produto de software.
• Criar uma lista de recursos (em FDD você desenvolve recursos e um recurso pode
ser, por exemplo, login de acesso ao sistema, ou cálculo de impostos sobre a NF de
serviços). Portanto, o time escreve uma lista de recursos e os agrupa em conjuntos,
e depois determina quais os conjuntos de recursos principais.
• Planejar por recurso, ou seja, a equipe estabelece um plano de desenvolvimento que
inclui a ordem em que os conjuntos de recursos serão realizados, que desenvolvedor
é responsável por qual recurso e os analistas responsáveis por cada classe.
• Design e desenvolvimento por recurso: design, construção e teste em sprints de
2 semanas.
• Os passos acima são repetidos até não existir mais recursos para desenvolver e integrar.
O FDD precisa de uma excelente articulação e um time experiente para poder ser
executado com maestria e proporcionar resultados esperados. Mas compensa cada
centavo, e é um dos processos de desenvolvimento de software mais utilizado porque é
flexível e focado nas pessoas e em suas responsabilidades.
Todavia, há a necessidade de pessoas sabendo quais serão seus papéis nesse processo.
Veja quais papeis existem num time de projeto FDD:
• Papéis-chave:
»» Gerente de Projeto (PM);
»» Arquiteto Chefe (CA);
»» Gerente de Desenvolvimento (DM);
»» Chefe dos Programadores;
»» Donos das Classes;
»» Especialistas no Domínio.
• Papéis de Suporte:
»» Gerente de lançamento;
»» Guru de Linguagem de Programação;
»» Engenheiro de Construção de Software;
»» Especialista em Ferramentas;
»» Administrador do Sistema.
• Papéis Adicionais:
»» 1. Testadores;
»» 2. Analistas de Subida em Produção;
»» 3. Escritores Técnicos.
9
9
UNIDADE
Lean e DevOps
Clifton e Dunlap (2003) enfatizam que “[...] enquanto nas metodologias de desenvol-
vimento tradicionais, a funcionalidade é fixa e o tempo e os recursos são variáveis, no
DSDM, o tempo é fixo e a funcionalidade é variável”. Podemos ver a compressão dessa
dimensão em foco na figura 3.
Traditional
Variable
Time Resources Functionality
Figura 3 − Tempo como dimensão fixa num projeto DSDM
10
Os testes são realizados em todo o ciclo de vida, e não apenas antes da
entrega (quando geralmente é tarde demais para corrigir alguma coisa).
Feasibility
Agree Study Implement
Plan
Business Study
Create Identify Review Train
Functional Functional Functional Business Implementation Users
Prototype Model Prototype Aspects
User
Review
Review Approval &
Functional
Design Guidelines
Prototype
Prototype
Identify Create
Design
Design Design
& Build
Prototype Prototype
Agree
Plan
A figura acima pode ser melhor compreendida quando colocamos atividades numa
linha de tempo, na qual o primeiro item a ser feito é um estudo de viabilidade, ou
seja, se o projeto vai vingar, por isso é importante realizar um estudo do negócio, pois
os aspectos comerciais podem gerar desafios de software que precisam ser avaliados
quanto aos riscos oferecidos ao próprio projeto.
11
11
UNIDADE
Lean e DevOps
Crystal
Sob encomenda da IBM, para se desenvolver uma metodologia ágil e funcional
orientada a objetos, foi criado por Cockburn.
O nome do método também foi criado por Cockburn com base no cristal, que visto de
cima, possui um elemento central que mostra os valores que são seguidos na aplicação do
método, e as faces são elementos específicos como ferramentas e técnicas, dentre outros.
12
• Ambiente técnico com gerenciamento de configuração, testes automatizados e
que permita integração de funcionalidades ou partes de software desenvolvido de
maneira frequente e estável.
Crystal é adaptativo para cada tipo de porte de projeto. Dessa forma, Cockburn,
elaborou cores para o Crystal, em que cada uma representa o tamanho de um time de
projeto que pode possuir até 6 pessoas para o Crystal Clear, até 20 para o Crystal
Yellow, até 80 para o Crystal Orange e acima de 80 até 200 para o Crystal Red, e
assim por diante.
Por fim, para evoluir utilizando a metodologia Crystal, devemos utilizar diversas
estratégias e técnicas como:
• Técnica exploratória 360 graus. Nesse caso, entende-se analisar sob todos os
ângulos e aspectos a viabilidade do projeto.
• Ganho rápido, ou se preferir, pegue alguma entrega com alto valor agregado e a
ponha para funcionar logo de cara no projeto.
• Esqueleto que anda. Aqui estamos falando em conseguir implementar uma funcio-
nalidade de ponta a ponta, validando a arquitetura da solução proposta e encan-
tando o cliente - porque ele verá algo tangível e funcional. E, se houver problemas,
você já descobre logo de início, e consegue dar atenção. Ao passo que se isso for
descoberto no final do projeto, pode-se constituir em um elemento gerador de des-
gaste, retrabalho e não entrega – que, na pior das hipóteses, tenderá a naufragar o
projeto como um todo.
• Re-arquitetura incremental. Nesse aspecto entendemos como é importante
a estratégia do “esqueleto que anda”, porque com um esqueleto arquitetural já
13
13
UNIDADE
Lean e DevOps
Entre eles, podemos destacar que o envolvimento dos usuários, especialistas nos ne-
gócios, praticamente deveria blindar a falhas de entregas. O controle da gestão transpa-
rente gera controle mais efetivo e evita suposições. Também o fato das entregas serem
contínuas dentro de horizontes de tempos conhecidos de todos diminui o estresse da
comunicação incompleta e interpretações errôneas do que ocorre.
Kanban
Quando falamos em Kanban, a primeira coisa que nos vem em mente é o famoso
processo empregado nas linhas de produção na Toyota, onde ele foi criado, e também
pelos mais diversos exemplos e metáforas empregados para seu entendimento, como
por exemplo, a sinalização nas mesas dos rodízios de churrasco no Brasil.
O Kanban foi projetado para gerar eficácia. Portanto, fazer, e fazer certo da primeira vez,
e, desta forma, resolver o problema. Ou seja, precisamos de gente sênior para ser eficaz
em desenvolvimento, orientando e elevando os trainees, juniores e plenos até a excelência.
14
• Como o método Kanban é “uma represa”, devemos nos basear no volume de vazão;
ou, se preferir, em seu fluxo. Se você passar trabalho demais, vai comprometer o
time de desenvolvimento e “afogá-los”; assim, devemos limitar o quanto de trabalho
eles poderão assumir ao mesmo tempo.
• Mas o Kanban também é seletivo, e se temos um longo backlog, obviamente de-
vemos puxar os itens de prioridade mais alta de desenvolvimento assim que o time
terminar uma tarefa.
E o que é interessante é que o time fica focado no que pegou para fazer, e somente
naquilo. Somente quando terminam vão para o próximo job. O trabalho a ser feito é
priorizado pelo proprietário do produto, e, dessa forma, ele deve manter os itens mais
importantes no topo da lista “buffer”.
Outro item interessante é que quando um cartão de trabalho passa por todas as co-
lunas do quadro visual, dizemos que ele completou um ciclo. A ideia lógica aqui é que
um cartão demore o menor ciclo possível, numa melhoria contínua. Como disse ante-
riormente, o foco é a eficácia, ou seja, andar rápido e fazer certo sempre. Isto também
significa que a responsabilidade por dar certo é do time todo, inclusive nos testes, que
são feitos também pelos desenvolvedores, e não apenas pelos testadores.
Caso queira, pode-se acrescentar outras colunas como, por exemplo, uma coluna
TESTE. Mas lembre-se de que quanto mais colunas, mais troca de contexto o cartão
- e consequentemente, a atividade vai sofrer, afetando o tempo e uma das funções do
Kanban, que é um ciclo correto e curto.
15
15
UNIDADE
Lean e DevOps
• Testes;
• Desdobramentos e Correções;
• Feito.
Por fim, devemos deixar claro que Kanban não é uma ferramenta do Scrum, nem
vice-versa. O Kanban é uma forma de liberar software o mais rápido possível, e de ma-
neira correta.
Kanban Scrum
Papéis pré-definidos do mestre Scrum, proprietário do
Sem papéis prescritos
produto e membro da equipe
Entrega Contínua Sprints de caixa
O trabalho é??? puxado??? através do sistema (fluxo de O trabalho é??? puxado??? através do sistema em lotes (o
peça única) backlog de sprint)
As mudanças podem ser feitas a qualquer momento Nenhuma alteração permitida no meio do sprint
Tempo de ciclo Velocidade
Mais apropriado em ambientes operacionais com alto grau Mais apropriado em situações onde o trabalho pode ser
de variabilidade em prioridade priorizado em lotes que podem ser deixados sozinhos
16
• Visão do todo: nesse item devemos ter cuidado em ficarmos otimizando coisas
pequenas que não gerem impacto no todo sistêmico, pois normalmente se gasta
um esforço em tempo e dinheiro enorme às custas do dinheiro do projeto - e
quando precisar de um dos dois, verá que não os possui.
Trata-se de um processo integrado que requer também alto grau de automação para
garantir a entrega constante, ou seja, automação de infraestrutura e entrega contínua.
Conforme o excerto do artigo de Mueller (2010), podemos definir que DevOps segue
os princípios ágeis de desenvolvimento em todas as suas etapas.
Valores do DevOps: creio que os valores fundamentais do DevOps
são efetivamente capturados no Manifesto ágil - com talvez uma leve
emenda para se concentrar no serviço geral ou software totalmente
entregue ao cliente em vez de simplesmente “software de trabalho”.
Algumas definições anteriores do DevOps, como “People Over
Process, Over Tools”, de Alex Honor, faz eco às declarações básicas
do Agile Manifesto e solicita a colaboração direta de dev + ops (nesse
caso, literalmente, apoio de desenvolvimento e operações).
17
17
UNIDADE
Lean e DevOps
18
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Feature Driven Development (FDD) and Agile Modeling
Desenvolvimento desenvolvido por características (FDD) e modelagem ágil.
https://goo.gl/V2Ep4b
What is DevOps?
Ciclo de desenvolvimento e operação DEVOPS com sugestão de ferramental para cada
item do processo.
https://goo.gl/y6hECM
Ciclo de vida de um projeto DSDM
https://goo.gl/kEivQ4
Lean Thinking: Mentalidade Enxuta para Desenvolvimento Ágil de Software
Exemplo de quadro Kanban.
https://goo.gl/oDfNDL
Feature Driven Development (FDD) and Agile Modeling
O ciclo de vida do projeto FDD.
https://goo.gl/V2Ep4b
What is Kanban? Kanban Software Tools
Quadro comparativo entre Kanban x SCRUM.
https://goo.gl/8vSAIg
Alistair Cockburn
Riqueza do canal de comunicação versus a efetividade da comunicação.
https://goo.gl/RMlCS
Vídeos
Kanban no Desenvolvimento Ágil de Software by Dilbert
https://youtu.be/LJOiFRsp0Z8
DevOps Tools | Automation using DevOps Tools | DevOps Training | DevOps Tutorial | Edureka
https://youtu.be/3eiYRPeNKMs
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutorial | Edureka
https://youtu.be/xuB1Id2Wxak
What is Docker\Docker Tutorial for Beginners\Docker Container\DevOps Tools\Edureka
https://youtu.be/lcQfQRDAMpQ
What is Jenkins\Jenkins Tutorial for Beginners\Jenkins Continuous Integration Tutorial\Edureka
https://youtu.be/p7-U1_E_j3w
What is Puppet\Puppet Tutorial for Beginners\Puppet Configuration Management Tutorial\Edureka
https://youtu.be/PL_J5Gj3GAQ
Ansible Playbook Tutorial\Ansible Tutorial For Beginners\DevOps Tools\Edureka
https://youtu.be/dCQpaTTTv98
19
19
UNIDADE
Lean e DevOps
Leitura
O que é DSDM
https://goo.gl/XPCKNG
Proposta de utilização de FDD e APF para melhoria do processo de software
https://goo.gl/zcCF4W
Comparação entre os Processos dos Métodos Ágeis: Xp, Scrum, Fdd e Asd em Relação ao
Desenvolvimento Iterativo Incremental
https://goo.gl/if5KVZ
Entrega contínua – como entregar software de forma rápida e confiável
https://goo.gl/cJkqEX
What Is DevOps?
https://goo.gl/8ehILD
Understanding DSDM - PC Network Advisor
https://goo.gl/R9es6H
DevOps and user experience at Concur
Ciclo de desenvolvimento e operação DEVOPS.
https://goo.gl/HhMc1l
Metodologias Crystal e Metodologia DSDM(Dynamic Systems Development Method)
Família Crystal baseada na relação de indivíduos empregados em projetos que envolvam
níveis de criticidade.
https://goo.gl/aP2Nn3
Proposta de Utilização de FDD e APF para Melhoria do Processo de Software
Processo de gerenciamento de projetos com o FDD.
https://goo.gl/zcCF4W
O que é DSDM
Tempo como dimensão fixa num projeto DSDM.
https://goo.gl/XPCKNG
20
Referências
FOGGETTI Cristiano, ORG. Gestão ágil de projetos. São Paulo, Pearson, 2015. (e-book)
21
21