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

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

Acessado em 18 de Setembro de 2016

Comentários