terça-feira, 5 de abril de 2011

Desenvolvimento Àgil: Tendências de Metodologias

Resumo

Atualmente existe uma tendência em combinar metodologias de desenvolvimento ágil com conceitos de outros campos com o fim de otimizar a aplicabilidade dos mesmos em sistemas de informações. São descritas aqui as combinações de abordagens ágeis com inovação aberta, Extreme Programming (XP) com CMMI e Scrum com Lean e CMMI.

1. Introdução

O desenvolvimento ágil representa uma família de metodologias que surgiu a partir da necessidade de desenvolvimento de software em ambientes nos quais a realidade muda rapidamente. A forte integração entre equipes de projetos possibilitada através do uso da comunicação e da colaboração é enfatizada pelos métodos ágeis por causa de suas flexibilidades e de seus processos leves. Ainda sobre forte integração, existe também entre as equipes e o cliente que conseqüentemente transformam o desenvolvimento de software em uma atividade mais dinâmica e inovadora.

Extreme Programming (XP) é uma metodologia ágil que objetiva melhorar a qualidade do software e o tempo de resposta em relação aos requisitos dos clientes que estão em constante mudança. A metodologia baseia-se no paradigma orientado a objetos e inclui um conjunto de regras e boas práticas que ocorrem no contexto de quatro atividades de arcabouço: planejamento, projeto, codificação e teste. O planejamento começa com a especificação de um conjunto de requisitos fornecido pelos clientes (histórias, no contexto de XP). A Cada requisito é atribuída uma prioridade pelos clientes e posteriormente a equipe do projeto atribui custos a estes requisitos baseando-se na análise realizada pelos clientes. A equipe e os clientes agrupam os requisitos que devem estar no próximo incremento do software e detalhes relativos a prazo de entrega e outros acordos. Os requisitos podem ser implementados de três maneiras possíveis: todos os requisitos serão implementados imediatamente; requisitos cujas prioridades são mais altas serão implementados primeiro; ou requisitos que representam o maior risco para o projeto serão implementados primeiro. É importante ressaltar que os clientes podem mudar os requisitos a qualquer momento paralelamente ao trabalho sendo realizado, portanto a equipe deve estar sempre preparada para a mudança. Na atividade de projeto são usados cartões CRC (Class-Responsibility-Colaborator) que identificam e organizam as classes orientadas a objetos que são relevantes para o incremento atual. Quando é encontrado um requisito cuja regra de negócio é difícil de implementar é recomendado pelas práticas XP que o problema seja abordado o quanto antes e logo em seguida seja implementado um protótipo operacional da parte do projeto relativa ao requisito. A atividade de codificação começa com a criação dos testes unitários para exercitar cada um dos requisitos. Posteriormente é realizada a codificação da solução e a mesma é submetida ao teste. Durante a codificação XP adota a prática de programação em pares que é suportada pela idéia de que “duas cabeças funcionam melhor do que uma”.Finalmente, a fase de teste consiste em realizar o teste de integração e validação do sistema e os testes de aceitação XP que são especificados pelos clientes.

Scrum é uma metodologia ágil iterativa que aborda o planejamento e o desenvolvimento como atividades concorrentes. Por este motivo o Scrum executa dois processos paralelamente: “Executar e Entregar sprints” e “Preparar Product Backlog”. Os sprints são unidades de trabalho que são necessárias para satisfazer a um requisito definido na lista de pendência (Product Backlog). Nesta metodologia são definidas as “reuniões Scrum” que são reuniões curtas feitas diariamente pela equipe na qual devem ser respondidas três perguntas pela equipe.São elas: o que você fez desde a última reunião de equipe? Que obstáculos você está encontrando? O que você planeja realizar até a próxima reunião de equipe?

Lean representa um conjunto de práticas e princípios adaptados do sistema de produção da Toyota centrados em evitar trabalhos que sejam considerados como desperdício porque trabalhos que se encontram nesta classificação não acrescentam valor ao produto ou serviço.

CMMI é um guia de melhoria de processos em organizações. O CMMI provê esta melhoria através de duas representações: por estágios e contínua. A representação contínua foca em capacidade de áreas de processo as quais são medidas por níveis de capacidade (cinco níveis) e a representação por estágios foca em maturidade organizacional usando níveis (cinco níveis) de maturidade como medida.

Quanto à inovação aberta, é importante antes descrever sobre inovação tradicional porque a defasagem deste paradigma em relação à realidade gerou a necessidade da criação da inovação aberta. A inovação tradicional define que a invenção de novos produtos inovadores provém da expertise de talentos internos a organização, implicando assim, a não verificação de conhecimento além de suas fronteiras. Essa abordagem fechada fez com que a inovação tradicional ficasse ultrapassada por causa da evolução da sociedade e da indústria (ambiente externo) que aumentou a disponibilidade de trabalhadores com conhecimento. A inovação aberta surgiu como um novo paradigma para acompanhar essa evolução definindo que as organizações precisam abrir suas fronteiras à procura de conhecimento em parceiros, colaboradores, clientes, fornecedores e até mesmo em competidores com o objetivo de criar um ambiente mais flexível e ágil. Essa necessidade de busca externa de conhecimento é motivada pelo fato de nem todas as mentes brilhantes estarem dentro das fronteiras da organização.

2. Abordagens Ágeis com Inovação Aberta

Conforme a introdução deste artigo, o desenvolvimento ágil inclui intensamente os clientes no processo. De acordo com a proposta em [1], o desenvolvimento ágil pode beneficiar-se de estar inserido dentro do contexto de inovação aberta ao tornar-se mais aberto incluindo stakeholders na interação além dos clientes já inclusos.

A equipe propôs a utilização de um framework baseado em três arquétipos centrais da inovação aberta. São eles: outside-in process, inside-out process e coupled process. A figura abaixo ilustra a estrutura do framework:



O processo Outside-In (de fora para dentro) ilustra a cooperação da organização com fornecedores, clientes, etc. envolvendo integração de conhecimento externo. O processo Inside-Out (de dentro para fora) focaliza em exteriorizar os conhecimentos e as inovações da organização com o objetivo de levar idéias ao mercado contribuindo com sua evolução. O Coupled-Process (processo acoplado) combina os dois processos anteriores através de colaboração e cooperação com outras empresas (exemplo: alianças estratégicas, joint ventures), fornecedores, clientes, universidades e institutos de pesquisa. Uma relação de troca (“dar e receber”) de conhecimento é crucial para o sucesso da colaboração e da cooperação.

De acordo com [1], as metodologias ágeis não deixam claro o beneficio que as mesmas trazem para a criatividade. Esta afirmação está incorreta porque a interação incentivada pelas abordagens ágeis entre equipes e entre equipes e clientes pode aumentar a criatividade da tarefa de desenvolvimento. Segundo Frans Johansson em “O efeito Médici” a inovação pode ser encontrada na interseção de idéias entre diferentes indivíduos com experiências distintas. Frans Johansson prova isso com diversos estudos de casos reais. A afirmação descrita inicialmente é irrelevante ao fato de como as abordagens ágeis podem beneficiar-se ao ampliar o seu escopo de interação. Portanto, o contra-argumento apresentado não invalida esta combinação de conceitos.

No momento atual dados estão sendo coletados de um estudo de caso selecionado para a aplicação do framework. Possíveis pesquisas futuras devem envolver o desenvolvimento de um conjunto de práticas recomendadas para melhorar ainda mais a inovação aberta em ambientes ágeis.

3. Scrum com Lean e CMMI

A experiência realizada em [2] foi em uma empresa CMMI nível cinco, ou seja, uma empresa com “maturidade” alta em termos de CMMI (último nível). Na perspectiva de CMMI o Scrum é um processo pertencente a uma lista de processos que precisam ser monitorados para atingir efetividade e eficiência. desta maneira de visualizar o Scrum a partir de uma granularidade maior permite realizar esta combinação de Scrum com CMMI.

A experiência foi guiada pelos princípios Lean para estabelecer um fluxo de trabalho estável. As medidas adotadas incluíram procedimentos que visam abordar defeitos no momento em que eles são encontrados, ou seja, o que estiver sendo feito no momento deve ser interrompido para o tratamento do defeito. Também foram adotados procedimentos que visam controlar o tempo de implementação de requisitos (histórias de processo).

A próxima fase da pesquisa irá focar em interações entre equipes cujas funcionalidades interceptam-se e em dinâmica.

4. Extreme Programming com CMMI

A equipe da pesquisa [3] listou alguns motivos para a escolha de XP como metodologia adotada para combinar com CMMI:

  • XP é aplicável para projetos pequenos, de média escala e de pequena complexidade;
  • XP é uma das metodologias mais proeminentes que aderem a princípios ágeis;
  • XP é um modelo considerado fácil de aprender;
  • XP pode ser facilmente adaptável a requisitos que mudam constantemente;
  • XP alcança melhoria de processo melhor do que as outras metodologias ágeis; está em conformidade com o nível dois do CMMI;
  • XP é um modelo de processo leve que ajuda pequenas firmas na implementação de melhoria de processo de software;
  • As práticas XP podem trabalhar juntas cuidadosamente aplicando diferentes práticas em um momento que eventualmente levarão a melhoria;


A representação contínua de CMMI-DEV V1.2 foi adotada [3] pelas seguintes razões:

· O CMMI tem sido usado para guiar a melhoria do processo de desenvolvimento de software, como por exemplo, o CMMI-DEV V1.2;
· O CMMI é um modelo de melhoria de processo que está em conformidade com padrões internacionais de alto
grau de relevância;
· As práticas de CMMI estão entre as melhores em relação a outros modelos;
· CMMI obtém aceitação internacional na comunidade de engenharia de software;
· O CMMI tem sido amplamente usado para avaliar e melhorar a maturidade organizacional e a capacidade de processos ao redor do mundo, onde clientes têm confiança no CMMI por causa das suas descrições de como as boas práticas se encaixam bem.

A metodologia proposta é composta por cinco estágios que são usados para estabelecer um novo framework de melhoria de processos de desenvolvimento de software para pequenas empresas de desenvolvimento de software. No primeiro estágio as áreas de processo do CMMI-DEV são comparadas com XP com o objetivo de identificar quais práticas de CMMI-DEV que XP adota e quais estão faltando. No segundo estágio a metodologia XP é estendida acrescentando as práticas CMMI-DEV faltantes. No terceiro estágio o framework proposto é estabelecido e seus requisitos são especificados, como por exemplo, procedimentos, regras, técnicas, ferramentas, documentação e problemas de gerenciamento e outros requisitos. No quarto estágio há a verificação do framework proposto e a modificação do mesmo caso seja necessário. No quinto estágio o framework final é avaliado através de seleção de pequenas empresas de desenvolvimento de software e posteriormente aplicado a essas empresas.

5. Referências

1. http://web.up.ac.za/ecis/ECIS2010PR/ECIS2010/Content/Papers/0424.R1.pdf

2. http://jeffsutherland.com/JakobsenScrumCMMIGoingfromGoodtoGreatAgile2009.pdf

3.http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B9865-527GFKD-12-1&_cdi=59117&_user=10&_pii=S1877050910005211&_origin=gateway&_coverDate=12%2F31%2F2011&_sk=999969999&view=c&wchp=dGLzVlb-zSkzk&md5=2dda762c7b70223cc2f45bdbeced852e&ie=/sdarticle.pdf

4. http://pt.wikipedia.org/wiki/Cmmi

5. http://en.wikipedia.org/wiki/Toyota_Production_System

6. Engenharia de Software – Sexta Edição – Autor: Roger S. Pressman – Editora McGraw Hill – ISBN: 85-86804-57-6

Nenhum comentário: