Processos ágeis para desenvolvimento de software
Um desafio constante da área de Engenharia de Software é melhorar o processo de desenvolvimento de software. Mesmo com a constante evolução de métodos, técnicas e ferramentas, a entrega de software em prazos e custos estabelecidos nem sempre é conseguida. Uma das causas desse problema é o excesso de formalidade nos modelos de processo propostos nos últimos 30 anos (Fowler, 2003; Larman, 2004). Existe hoje a necessidade de desenvolver software de forma mais rápida, mas com qualidade. Esse desenvolvimento pode ser obtido utilizando métodos ágeis e padrões organizacionais e de processo. A popularização dos métodos ágeis ocorreu com “Manifesto Ágil” (Beck et al., 2001), que indica alguns princípios que são compartilhados por tais métodos:
• Indivíduos e interações são mais importantes que processos e ferramentas;
• Software funcionando é mais importante do que documentação detalhada;
• Colaboração dos clientes é mais importante do que negociação de contratos;
• Adaptação às mudanças é mais importante do que seguir um plano.
Nos últimos anos, métodos ágeis como o XP (Beck, 1999), Scrum (Schwaber,2002) e Crystal (Cockburn, 2002) passaram a ser usados em empresas, universidades, institutos de pesquisa e agências governamentais (Goldman et al., 2004). O reuso de software é uma atividade comum durante o processo de desenvolvimento. Juntamente com outras técnicas, por exemplo desenvolvimento de software baseado em componentes, os padrões de software (software patterns) auxiliam e contribuem para o reuso em níveis mais altos de abstração, como por exemplo, em nível de análise, arquitetural, organizacional e de processo. Das diversas categorias de padrões que surgiram, os padrões organizacionais e de processo são os que têm por objetivo apoiar a construção do software e melhorar o seu desenvolvimento. Além de estarem divididos em categorias, os padrões podem ser agrupados em linguagens de padrões. Uma linguagem de padrões é um sistema de