Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Fundamentos das Metodologias Ágeis - Revista Engenharia de Software Magazine 41
Nesse artigo são descritas de forma geral a origem e as motivações para a utilização de métodos ágeis e também detalhes sobre os principais métodos. Os métodos ágeis são descritos principalmente sob o ponto de vista do fluxo de atividades e práticas conduzidas durante o desenvolvimento de software.
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Engenharia de Software Magazine 41
Para enfrentar problemas com prazos e complexidade de métodos
tradicionais da engenharia de software, diversos métodos ágeis de
desenvolvimento estão sendo utilizados em projetos de software. Estes métodos
possuem como principal objetivo a satisfação do cliente, preocupando-se com a
entrega incremental de software desde as etapas iniciais de desenvolvimento,
produtos de trabalho de engenharia de software minimizados e simplicidade
global no desenvolvimento.
Métodos ágeis foram desenvolvidos para beneficiarem a entrega rápida de código que agregue valor ao cliente por meio do desenvolvimento em pequenos ciclos. Para atingir esse objetivo, esses métodos são focados na contínua interação entre desenvolvedores e clientes, que garantem que o software atenda as necessidades de mudança dos requisitos do cliente. Os métodos ágeis mudam o foco de artefatos complexos de projeto, fortemente utilizados em métodos tradicionais, para técnicas focadas no desenvolvimento de código-fonte e testes. A prototipação ágil também ajuda a acelerar a velocidade de desenvolvimento, reduzindo o excesso de planejamento e a documentação.
Todo esse dinamismo dos métodos ágeis tem provocado um grande impacto na forma de se conduzir um projeto de software fortemente sensível a mudanças. Uma grande diversidade de métodos ágeis tem sido utilizada. Como exemplos mais conhecidos tem-se o XP (eXtreme Programming), o Scrum, a família Crystal, o FDD (Feature Driven Development ), o ASD (Adaptative Software Development), o DSDM (Dynamic System Development Method) e o Lean Software Development. Esses métodos seguem princípios semelhantes, mas o que os diferencia são as suas práticas e a forma de condução do processo de desenvolvimento. O XP é o método mais conhecido, além de ser o método mais avaliado por estudos acadêmicos. Ele propõe um conjunto de valores, princípios e práticas em um cenário no qual os requisitos são vagos e mudam constantemente. Nesse contexto o objetivo do método é a excelência no desenvolvimento de software, visando baixo custo, poucos defeitos, alta produtividade e alto retorno de investimento. Outro método que vem se destacando é o Scrum, que é o mais utilizado na indústria de software atualmente, sendo mais focado em aspectos de gerenciamento de projeto.
Para satisfazer o cliente por meio da entrega rápida e contínua de software de qualidade são utilizadas diversas práticas que serão detalhadas no ao longo deste artigo. Como exemplo pode-se citar a presença do cliente para ajudar na correção e refinamento de requisitos, a programação em pares utilizada para melhorar a qualidade do desenvolvimento e promover a diminuição de defeitos, e a refatoração que otimiza o código já existente. A agilidade descrita anteriormente traz consigo uma forte preocupação com a melhoria constante do processo e do produto durante todo o ciclo de desenvolvimento do software, no qual o progresso do projeto é avaliado diariamente. Em projetos que utilizam métodos ágeis, a atividade de teste de software vem sendo considerada uma atividade primordial, com o objetivo de evitar que a qualidade do produto e a condução do projeto não sejam afetados por processos menos formais de documentação e projeto em relação aos métodos tradicionais.
A importância da atividade de teste em métodos ágeis pode ser constatada no método XP, que considera a atividade tão importante quanto a atividade de programação. No XP todo pedaço de código tem um conjunto de testes de unidade automatizados, que deve ser integrado ao repositório de código-fonte. Os resultados dos testes servem como uma forma de feedback instantâneo, no qual o desenvolvedor pode detectar em pouco tempo se o método desenvolvido ainda precisa ser modificado ou refatorado. O código é considerado completo apenas se passar por todos os testes de unidade. Além disso, no fim de cada iteração, todos os testes de aceitação (business testing) que foram criados durante a fase de planejamento serão executados por usuários e clientes. Esses testes incluem os testes de iterações prévias e aqueles da última iteração, para determinar se as novas funcionalidades são aceitáveis e prevenir que novas mudanças causem efeitos colaterais em funcionalidades que estavam funcionando até o momento.
Entre as práticas de teste utilizadas em métodos ágeis pode-se citar os testes de unidade utilizando Test Driven Development (TDD), testes de integração contínuos, testes de aceitação com o cliente e testes de regressão associados à prática de refatoração. Para complementar essas práticas a equipe pode utilizar testes exploratórios, teste da interface gráfica (GUI) e teste de requisitos não-funcionais que podem envolver, por exemplo, requisitos de desempenho, carga ou stress. Todas essas práticas de testes devem ser executadas preferencialmente de forma automatizada, buscando a agilidade no processo de testes.
Neste contexto, o objetivo deste artigo é descrever de forma detalhada um referencial teórico a respeito das metodologias ágeis considerando algumas de suas principais abordagens. Para isso, nesse artigo são descritas de forma geral a origem e as motivações para a utilização de métodos ágeis e também detalhes sobre os principais métodos. Os métodos ágeis são descritos principalmente sob o ponto de vista do fluxo de atividades e práticas conduzidas durante o desenvolvimento de software.
Motivação em estudar
Métodos Ágeis
Atualmente pode-se observar uma grande sinergia entre a academia e a indústria na área de métodos ágeis, que pode ser constatada em eventos de larga importância como o International Conference on XP (http://xp2010.org), Agile Conference (http://agile2010.agilealliance.org) e mais recentemente em eventos nacionais e latino-americanos, como o Agiles (http://agiles2010.agiles.org) e o Agile Brazil (http://www.agilebrazil.com).
Em relação à maturidade das pesquisas da área de métodos ágeis, Dingsøyr et al. (2008) afirmam que há um nível intermediário nas pesquisas em relação ao método XP, a programação em pares e TDD. Tópicos como: modelagem ágil, DSDM, Lean, Scrum e a educação de engenharia de software com métodos ágeis ainda são nascentes. Nesse contexto, é importante realizar mais estudos, por exemplo, com o método Scrum. Além disso, os estudos devem ser conduzidos com organizações experientes na aplicação de métodos ágeis e devem explorar a utilização de práticas ágeis em diversos contextos, procurando encontrar como aplicar princípios ágeis em situações reais e aplicar práticas e princípios do desenvolvimento ágil em áreas já estabelecidas como engenharia de requisitos, teste de software ou arquitetura de software.
A utilização de métodos ágeis de desenvolvimento tem crescido sensivelmente. Esses métodos vêm sendo adotados em diversos contextos, em pequenas, médias e grandes empresas e até agências governamentais e universidades. As pesquisas da área de métodos ágeis têm mostrado por meio de diversos estudos experimentais a efetividade e algumas deficiências das principais práticas de métodos ágeis tanto na indústria, quanto na academia.
Os benefícios da utilização de métodos ágeis envolvem a capacidade de reação a mudanças constantes, a colaboração com o cliente, processos eficientes para gerar produtos de qualidade (que atendem ao cronograma, possuem menos defeitos e que resultam em usuários mais satisfeitos), aprendizagem e melhoria contínua do projeto. Nesse contexto, estudos com o cliente relataram sua satisfação com oportunidades de feedback constante. Empresas de desenvolvimento que utilizam XP relatam que seus funcionários ficaram mais satisfeitos com os seus trabalhos e com o produto final e estudantes universitários acreditam que a utilização de métodos ágeis melhora a produtividade do time.
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
André Abe Vicente
Mestre em Ciências da Computação e Matemática Computacional (LabES - Laboratório de Engenharia de Software) pela Universidade de São Paulo (USP) - 2010. Bacharel em Informática pela Universidade Estadual do Oeste do Paraná (Unioeste - Campus Cascavel). Têm experiência na área de Engenharia de Softw...



