O QUE É DESENVOLVIMENTO ÁGIL NA ENGENHARIA DE SOFTWARE - Quais são suas características e modelos aplicáveis
Introdução - Requisitos para agilidade
Este trabalho
apresenta uma proposta sobre níveis de requisitos ágeis, práticas
correspondentes aos papéis sugeridos e um modelo organizacional que proporciona
um formato de desenvolvimento ágil na engenharia de software e empresa.
De que se trata o trabalho
Este trabalho
apresenta uma proposta sobre níveis de requisitos ágeis, práticas
correspondentes aos papéis sugeridos e um modelo organizacional que proporciona
um formato de empresa ágil. O objetivo é escrever os requisitos que se fazem
necessários para a criação de uma equipe ágil, programas que ofereçam suporte
ao primeiro nível e a fase e maturidade da empresa ágil.
Em que situação o tema é útil
Na última
década, a criação de modelos de engenharia de software cada vez mais ágeis foi
a mudança mais significativa que afetou as empresas de software desde o advento
do modelo em cascata na década de 1970. Nos últimos cincos anos, as metodologias
ágeis começaram a se espalhar nas empresas de software. As iniciativas
geralmente começaram com equipes individuais, com a adoção de alguns métodos
como XP, Scrum, Lean entre outros. No entanto, esses métodos começaram a se
espalhar para o nível das empresas e uma série de fatores começaram a exigir um
escopo organizacional mais amplo para suportar os desafios da governança desses
novos processos.
definição e características
A gestão de
projetos ágil nasceu como uma modalidade de gerenciamento usada na Engenharia
de Software. Pode-se dizer que é uma abordagem leve, que tem como
característica principal a pouca intervenção por parte do gestor. É também um
modelo que se destaca por promover empowerment em todos os níveis do projeto.
E por mais que
um gerente ágil deva ser fortalecido juntamente com seus líderes de equipes,
são os desenvolvedores e testadores os protagonistas do desenvolvimento das
tarefas, quem efetivamente põe a mão na massa. Por isso, devem também receber
poder.
Empowerment
O termo se
traduz com a ideia de o indivíduo assumir a responsabilidade pela entrega de
determinado item com valor agregado. Esse compromisso faz com que o indivíduo
determine o que é efetivamente necessário e atue junto aos demais membros para
conceber a melhor forma de entregar essa saída, sempre com o máximo de
qualidade e o mínimo de esforço. Esse tipo de delegação de responsabilidade
transforma cada membro do time em autor do desempenho do projeto. É traduzido
como Empoderamento por alguns autores.
Valor
Para que a
consciência de poder seja fortalecida de forma eficaz, os colaboradores
precisam compreender o conceito de criação de valor agregado. Eles precisam
entender exatamente o que sua organização realiza, para assim poder acrescentar
valor ao negócio. Se o grupo de desenvolvimento é parte de um departamento de
TI, por exemplo, então os desenvolvedores precisam ter o entendimento sobre o
valor de negócio que será entregue pelo desenvolvimento de suas aplicações. O
segredo está em focar na entrega de valor da forma mais eficiente possível. É
esse o cerne da ciência do gerenciamento. Na prática, membros fortalecidos da
equipe não precisam necessariamente entender de gerenciamento, mas sim ter uma
boa noção de criação de valor.
Objetividade
Uma boa gestão
de projetos ágeis é objetiva e está fundamentada na realidade. Por isso, bons
gerentes devem não só conhecer, mas também aceitar a realidade. Para que possa
se tornar autor de decisões assertivas, um gerente precisa conhecer a fundo o
contexto de um negócio. Para isso, as métricas do projeto precisam ser
coletadas, já que são essas as ferramentas que oferecem um diagnóstico sobre o
cenário atual do projeto.
Métrica
Durante muitos
anos, por mais que diversas métricas tenham sido coletadas, duas se sobressaíram.
São elas: o número de horas trabalhadas em uma atividade e a quantidade de
linhas de código. Mas há também uma outra métrica muito utilizada que se refere
ao número de defeitos por mil linhas de código. Contudo, muitas metodologias
ágeis criticam veementemente a coleta de métricas. De toda forma, ainda que não
haja consenso, a gestão ágil evidencia que as métricas podem sim ser
instrumentos muito eficazes no desenrolar de um projeto.
E o objetivo
realmente não é afirmar que as teorias da administração na Engenharia de
Software estão equivocadas. Em vez disso, a intenção é dizer que alguns
aspectos de gestão de projetos em desenvolvimento de software foram mal
orientados, errando ao deixar de lado o fator mais importante: a criação de
valor. De fato, se a maior parte dos autores de metodologias de software
tivessem dado atenção à prática em detrimento da teoria, os métodos se
concentrariam na criação de valor em vez de nas restrições de custo,
destacando-se mais cedo e, consequentemente, proporcionado melhores resultados.
Assim, podemos afirmar que as métricas ideais são simples e relevantes,
mensurando o valor criado.
Foco
Considerando que
o gerente de projetos deve entregar resultados, ele precisa manter o foco. A
teoria das restrições estabelece que esse profissional precisa se voltar para o
fator restritivo, ou seja, aos ofensores que prejudicam a produtividade. E essa
perspectiva é muito poderosa principalmente por duas razões:
• Direciona os
esforços da gerência para onde ela é mais urgentemente necessária e concentra
os investimentos nas áreas geradoras de maior retorno, por meio do aumento na
produtividade;
• Aumenta a
produtividade geral ao se concentrar na restrição do sistema.
Essa teoria
consiste, portanto, em um método para atingir a eficácia global (eficiência de
valor) em vez de a eficiência de custo local dos métodos gerenciais
tradicionais. Muitas tentativas antes aplicadas à gestão de métricas para
desenvolvimento de softwares eram embasadas na eficiência e nas otimizações
locais inspiradas por modelos tradicionais. A gestão ágil, por sua vez, é
fundamentada, sobretudo, na eficiência de valor.
Pessoal
Uma boa gestão
de projetos ágil compreende que o modelo de serviço ideal vem de baixo para
cima. Nesse caso, um bom gerente cumpre o papel de servir a equipe com sua
força de trabalho. Consequentemente, os gerentes falhos agem como se os
colaboradores devessem trabalhar para eles. Com isso em mente, percebe-se logo
que os papéis se encontram invertidos na maior parte das empresas. De fato, são
os membros do time que criam valor. Os gerentes apenas guiam. Assim, se os
gerentes não são geradores de valor, seu papel consiste em servir a equipe,
exterminando os impeditivos que cerceiam sua produtividade.
Agilidade
O Extreme
Programming (XP), o Scrum e o Feature Driven Development (FDD) são ótimos
exemplos de métodos de desenvolvimento ágil, já que todos seguem princípios
centrados na geração de valor agregado. Eles focam na entrega efetiva de valor,
estabelecem a delegação e o empowerment (termos também conhecidos como
autogestão), além de fomentarem um estilo gerencial livre, com intervenção
mínima. Fora isso, eles também valorizam o capital humano, reconhecendo que são
os membros do time que fazem a diferença. Vale a pena insistir que no desenvolvimento
de software, o modelo de serviço deve funcionar de baixo para cima, dando aos
desenvolvedores autonomia suficiente para criarem os códigos com geração de
valor.
Gestão
A gestão de
projetos tradicional e o desenvolvimento ágil definitivamente não são
mutuamente excludentes. E ninguém deve se convencer do contrário. Enquanto é
possível se valer das métricas de gestão, é necessário construir modelos de
aferição orientados ao valor agregado nas entregas. E isso sim é agilidade!
metodologias
Este trabalho
discute o tema requisitos para agilidade no desenvolvimento de software. Para
isso, será apresentado, sob diferentes perspectivas, como a questão da
agilidade pode ser considerada em equipes de projetos de software que trabalhem
considerando os princípios da agilidade.
O
desenvolvimento de software se tornou um dos fatores mais importantes da
tecnologia. O software que é produzido hoje se torna rapidamente um item
fundamental para organizações e usuários finais no intuito de acelerar e
auxiliar a execução de diferentes tarefas.
Nos últimos 50
anos diferentes grupos, especialistas e pesquisadores da área de TI, vêm
disponibilizando diversas metodologias para apoiar essa difícil tarefa de
desenvolvimento de software, tais como:
·
modelo
cascata
·
espiral
·
RAD
·
RUP
·
Crystal
·
Scrum
·
XP
·
FDD
·
Lean
·
DSDM
·
entre
outros.
Scrum
Scrum é um
framework para gerenciamento de projetos ágeis muito utilizado na área de
desenvolvimento de software. Uma das principais características do Scrum é
permitir o desenvolvimento de produtos complexos de uma forma incremental e
iterativa, contribuindo para decompor um grande produto complexo, em pequenos
subprodutos mais simples, mais rápidos e mais fáceis de serem desenvolvidos e
entregues. No Scrum estas iterações são chamadas de Sprints, e uma
característica marcante de sua estrutura e aplicação é o controle sobre os
trabalhos realizados, e a possibilidade de correção e adaptação rápida,
permitindo que a equipe altere sua forma de agir ou de pensar o mais breve
possível, evitando que problemas ou erros causem danos maiores ao projeto.
XP
O eXtreme
Programming ou XP é um modelo ágil de desenvolvimento de software criado em
1996 por Kent Bech no Departamento de Computação da montadora de carros Daimler
Chrysler. Ele possui muitas diferenças em relação a outros modelos, podendo ser
aplicado a projetos de alto risco e com requisitos dinâmicos (vagos ou em
constante mudança), conduzidos por equipes de tamanho médio e pequeno.
Como todo método
ágil, o XP procura responder com velocidade às mudanças nas especificações do
projeto, com base em princípios, valores e práticas bem definidos. Este método
enfatiza o desenvolvimento rápido garantindo a satisfação do cliente e
cumprindo as estimativas do projeto. O XP baseia-se em cinco valores para guiar
o desenvolvimento: Comunicação, Coragem, Feedback, Respeito e Simplicidade.
Segundo Beck, o método oferece ainda 12 práticas, a saber:
1.
Jogo do
planejamento;
2.
Versões
pequenas;
3.
Metáfora;
4.
Projeto
simples;
5.
Teste;
6.
Refatoração;
7.
Programação
em pares;
8.
Propriedade
coletiva do código;
9.
Integração
contínua;
10. 40 horas de trabalho semanal;
11. Cliente presente; e
12. Padrões de codificação.
FDD
O FDD é uma
metodologia que serve tanto para o gerenciamento de projetos quanto para a
Engenharia de Software. Isto a torna mais complexa quando comparada com outras
metodologias ágeis. Por exemplo, o RUP (Rational Unified Process) da IBM, uma
metodologia considerada tradicional, trata o gerenciamento de projetos como uma
disciplina dentro do seu framework, já que o seu foco está na Engenharia de
Software em si. Já o SCRUM, tem no papel do Scrum Master, uma figura parecida
com a de um Gerente de Projetos formal, mas que tem seu foco na facilitação dos
trabalhos por parte da equipe técnica. O foco dessa metodologia está na
auto-organização da equipe e, para isso, são necessários analistas seniores.
DSDM
Metodologia de
Desenvolvimento de Sistemas Dinâmicos (do inglês Dynamic Systems Development
Method - DSDM) é uma metodologia de desenvolvimento de software originalmente
baseada em "Desenvolvimento Rápido de Aplicação" (RAD). DSDM é uma
metodologia de desenvolvimento iterativo e incremental que enfatiza o
envolvimento constante do usuário.
Seu objetivo é
entregar softwares no tempo e com custo estimados através do controle e ajuste
de requisitos ao longo do desenvolvimento. DSDM é um dos modelos de Metodologia
Ágil de desenvolvimento de software, e seu formato é propriedade da Agile
Alliance.
Lean manufacturing
Lean
manufacturing, traduzível como manufatura enxuta ou manufatura esbelta, e
também chamado de Sistema Toyota de Produção é uma filosofia de gestão focada
na redução dos sete tipos de desperdícios (super-produção, tempo de espera,
transporte, excesso de processamento, inventário, movimento e defeitos). Eliminando
esses desperdícios, a qualidade melhora e o tempo e custo de produção diminuem.
As ferramentas "lean" incluem processos contínuos de análise
(kaizen), produção "pull" (no sentido de kanban) e
elementos/processos à prova de falhas (Poka-Yoke).
A Manufatura
Enxuta foi desenvolvida pelo executivo da Toyota, Taiichi Ohno, durante o
período de reconstrução do Japão após a Segunda Guerra Mundial. O termo foi
popularizado por James P. Womack e Daniel T. Jones no livro “A Mentalidade
Enxuta nas Empresas Lean Thinking: Elimine o Desperdício e Crie Riqueza“.
Foi baseado no
conceito de Manufatura Enxuta (Lean Manufacturing) que Eric Ries criou o
conceito de Startup Enxuta (Lean Startup).
Ele usou várias metodologias utilizadas pela Toyota e uniu com outras
(como o Design Thinking) para criar esse conceito. Isso prova que mesmo uma
metodologia utilizada para produção carros pode ser adaptada para qualquer
outra área de negócio.
Um aspecto
crucial é que a maioria dos custos são calculados na fase de projeto de um
produto. Um engenheiro especificará materiais e processos conhecidos e custos
às custas de outros processos baratos e eficientes. Isto reduz os riscos do
projeto. As empresas que seguem essa metodologia desenvolvem e reencaminham
folhas de verificação para validar o projeto do produto.
Os pontos-chave do lean manufacturing são:
·
Qualidade
total imediata - ir em busca do "zero defeito", e detecção e solução
dos problemas em sua origem.
·
Minimização
do desperdício - eliminação de todas as atividades que não têm valor agregado e
redes de segurança, otimização do uso dos recursos escassos (capital, pessoas e
espaço).
·
Melhoria
contínua - redução de custos, melhoria da qualidade, aumento da produtividade e
compartilhamento da informação
·
Processos
"pull" - os produtos são retirados pelo cliente final, e não
empurrados para o fim da cadeia de produção.
·
Flexibilidade
- produzir rapidamente diferentes lotes de grande variedade de produtos, sem
comprometer a eficiência devido a volumes menores de produção.
·
Construção
e manutenção de uma relação a longo prazo com os fornecedores tomando acordos
para compartilhar o risco, os custos e a informação.
Lean é
basicamente tudo o que concerne a obtenção de materiais corretos, no local
correto, na quantidade correta, minimizando o desperdício, sendo flexível e
aberto a mudanças.
Princípios por trás do manifesto ágil
O que devemos seguir:
·
Nossa
maior prioridade é satisfazer o cliente, através da entrega adiantada e
contínua de software de valor.
·
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.
·
Entregar
software funcionando com frequência, na escala de semanas até meses, com
preferência aos períodos mais curtos.
·
Pessoas
relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente,
durante todo o curso do projeto.
·
Construir
projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte
necessário, e confiar que farão seu trabalho.
·
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.
·
Software
funcional é a medida primária de progresso.
·
Processos
ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e
usuários, devem ser capazes de manter indefinidamente, passos constantes.
·
Contínua
atenção à excelência técnica e bom design, aumenta a agilidade.
·
Simplicidade:
a arte de maximizar a quantidade de trabalho que não precisou ser feito.
·
As
melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.
·
Em
intervalos regulares, o time reflete em como ficar mais efetivo, então, se
ajustam e otimizam seu comportamento de acordo.
Quais vantagens do desenvolvimento ágil de software?
Até os projetos
de software fornecidos para o governo estão mudando. Isto ficou claro em junho
passado em Brasília no Agile Brazil, que é o maior fórum de discussão de
metodologias e práticas de desenvolvimento de software do Hemisfério Sul. O
Tribunal de Contas da União (TCU) fez uma apresentação mostrando ser aberto e
favorável à adoção das metodologias ágeis.
Já existem
órgãos do governo contratando desenvolvimento de software baseado nesse modelo.
É o caso do Supremo Tribunal Federal (STF), o Tribunal Superior do Trabalho
(TST), o Instituto do Patrimônio Histórico e Artístico Nacional (Iphan), o
Banco Central do Brasil (Bacen), o Serviço Federal de Processamento de Dados
(Serpro) e o Departamento de Informática do Sistema Único de Saúde (Datasus).
Nas empresas
privadas não é diferente. A Version One realiza anualmente uma pesquisa sobre o
estado da agilidade. A 7ª edição, publicada este ano, mostrou que 84% das que responderam praticam o
desenvolvimento ágil.
A cada ano o
relatório CHAOS Manifesto da consultoria Standish Group mostra mais vantagens
para o ágil em relação ao Waterfall – projetos tidos como tradicionais. Em 2011
o percentual de sucesso dos projetos ágeis foi de 42% contra 14% dos
tradicionais. E os projetos ágeis falharam em 9% contra 29% dos projetos
Waterfall.
O crescimento à
adesão aos métodos ágeis se justifica. Uma vantagem inegável do desenvolvimento
ágil é a adaptabilidade às mudanças. Metodologias tradicionais tentam prever
todas as possibilidades sem deixar espaço para descobertas durante o
desenvolvimento.
Estão perdendo
força projetos que começam com uma lista de requisitos muito rígidos e
detalhados. O desenvolvimento de software é um processo complexo não definido e
não repetitivo. Dada a dificuldade de prever tudo antecipadamente, é importante
ter entregas frequentes e validações rápidas – característica básica dos
métodos ágeis.
As metodologias
ágeis também têm como princípio básico a valorização das pessoas. Está
explícito na primeira das quatro proposições do Manifesto Ágil que os
indivíduos e a interação entre eles são mais importantes que processos e
ferramentas. É o reconhecimento que desenvolvimento de software é um trabalho
intelectual ao invés de atividade determinística repetitiva.
Mudanças nos testes de software
Além disso, o
ambiente das empresas está ficando mais descontraído. Muitas estão se engajando
em projetos sociais e incentivando práticas esportivas. A maior valorização das
pessoas não é uma exclusividade das empresas de software. Mas é mais um motivo
para adoção de métodos que ponham as pessoas em primeiro plano.
Os conceitos de
controle de qualidade também mudaram. Antes os produtos eram testados depois de
fabricados. Segundo Deming e outros, a qualidade não deve se originar da inspeção,
mas do melhoramento do processo. No desenvolvimento de software não pode ser
diferente. As práticas ágeis impõem o hábito de fazer testes o tempo todo. Isto
garante a qualidade das partes e não apenas no fim do projeto.
Conlusão
A busca pela
inovação também impulsiona o desenvolvimento ágil. Mesmo que ainda não esteja
comprovado que sua adoção torne o time mais inovador, se sabe que pode
favorecer a inovação um ambiente mais aberto e descontraído, onde as pessoas
têm liberdade de experimentar. Isto é comum nos times ágeis.
Definitivamente,
estão caindo antigas barreiras e resistências ao desenvolvimento ágil de
software e o mercado parece pedir agilidade.
Ocorre mesmo em
projetos do governo baseados em licitações. Uma legião enorme de desenvolvedores
passou por cursos e treinamentos. E grande parte dos fornecedores de serviços
de desenvolvimento de software no Brasil adota metodologias ágeis.
Está chegando ao
desenvolvimento de software o processo geral de desburocratização que muitas
empresas já ultrapassaram.
Referências
Secchieri, Flavio. Requisitos para agilidade - Revista Engenharia de Software Magazine 44. Devmedia
Disponível em:
Acessado em 16
de Setembro de 2016
Sampaio, Juliana. Gestão de projetos: afinal, o que é agilidade?. projectbuilder
Disponível em:
Acessado em 16 de Setembro de 2016
Princípios por trás do manifesto ágil. manifestoagil
Disponível em: http://www.manifestoagil.com.br/principios.html
Acessado em 16 de Setembro de 2016
Bastos, Lucas. Quais vantagens do desenvolvimento ágil de software?. computerworld
Disponível em:
Acessado em 16 de Setembro de 2016
Metodologia de desenvolvimento de sistemas dinâmicos. wikipedia
Disponível em:
Acessado em 18 de Setembro de 2016
Lean manufacturing. Wikipedia
Disponível em: https://pt.wikipedia.org/wiki/Lean_manufacturing
Acessado em 18 de Setembro de 2016
Comentários
Postar um comentário