Actualmente, a indústria de software representa uma importante actividade económica para praticamente todos os países, oferece múltiplas possibilidades de negócio, e promete ser uma grande oportunidade para o desenvolvimento das economias. A garantia da qualidade do software, através da melhoria de processos e da certificação, é uma estratégia que as empresas podem seguir com dois objectivos em mente. O primeiro consiste em melhorarem a sua imagem nacional e internacional, de modo a poderem participar no mercado global. O segundo tem a ver com a necessidade de tornarem os seus projectos mais eficientes e eficazes.
Em países como Portugal, uma das características da indústria de software é a predominância de PMEs (pequenas e médias empresas). Várias delas optaram por aplicar métodos ágeis nos seus processos de desenvolvimento de software, sobretudo devido ao baixo investimento inicial que é necessário, bem como á necessidade de tirarem partido da competitividade do seu pessoal.
Seja como for, dado que a maior parte dos standards e modelos de desenvolvimento de software foram criados com base em processos e metodologias tradicionais rigorosos, é necessário definir quais as novas práticas que estas empresas precisam de implementar de modo a obterem uma certificação utilizando metodologias ágeis.
O CMMI
Existem actualmente vários modelos e standards reconhecidos internacionalmente para as vertentes da qualidade e melhoria. Entre eles, destacam-se o CMMI e a ISSO. O SEI desenvolveu o modelo de processos CMMI, o seu método de avaliação SCAMPI, e o método de melhoria associado IDEAL. A International Standard Organization (ISO) desenvolveu o modelo de processos ISO 15504 (que se baseia na norma ISO/IEC 12207), bem como o método de avaliação ISO 15504 (quarta parte), e o método de melhoria associado SO 15504 (sétima parte). Também é importante considerar a família das normas ISO 9001:2000.
Os modelos de melhoria e de qualidade mais aceites pela indústria em todo o mundo são a ISO 9001:2000 e o CMMI. Este último integra os modelos de qualidade CMM e ISO/IEC 15504 (também conhecido por SPICE). Os modelos CMMI envolvem o conceito do CMM, estabelecido pelo Capability Maturity Model for Software (SW-CMM), mas a um novo nível, que promete o crescimento e expansão contínuos do conceito CMM para múltiplas disciplinas.
Os modelos CMMI são ferramentas para ajudar as organizações a melhorarem os seus processos e serviços de desenvolvimento, aquisição e manutenção. As empresas podem utilizar um modelo CMMI para ajudar a estabelecer os seus objectivos de melhoria, para melhorar os próprios processos, e para fornecerem orientações de modo a assegurarem um processo estável, capaz e maduro. Uma vez que estão disponíveis múltiplos modelos CMMI, é necessário decidir sobre aquele que é mais adequado para as necessidades particulares de uma organização.
Tem que ser seleccionada uma das duas representações ? a faseada ou a contínua. Cada modelo CMMI foi concebido para ser utilizado conjuntamente com outros modelos CMMI, tornando assim mais fácil para as organizações a melhoria de diferentes áreas de uma forma consistente. A representação faseada (staged) do CMMI organiza as áreas de processo em cinco níveis de maturidade, de modo a apoiar e a orientar a melhoria de processos. O agrupamento das áreas de processo indica quais aquelas que precisam de ser implementadas para se alcançar um determinado nível de maturidade.
Os níveis de maturidade representam um caminho que ilustra a evolução completa da organização ao longo de um trabalho de melhoria de processos. Para cada área de processo, está definida uma lista de objectivos e práticas. A representação faseada utiliza quatro características comuns para a organização das práticas genéricas: elevado compromisso por parte da gestão, capacidades para ser desenvolvido, orientação à implementação, e verificação da implementação. O nível de maturidade de uma certa organização permite prever o seu desempenho em dadas disciplinas. Cada nível de maturidade estabelece uma parte importante do processo organizacional e prepara a organização para atingir o nível de maturidade seguinte.
A representação contínua utiliza níveis de capacidade para medir a melhoria de processo alcançada. Os níveis de capacidade são aplicados ao processo organizacional para cada área de processo. Existem seis níveis de capacidade, numerados de zero a cinco. A representação contínua do CMMI também inclui perfis de capacidade, nível objectivo e nível equivalente como elementos organizacionais dos componentes do modelo.
A representação contínua agrupa as áreas de processo de acordo com categorias e níveis de capacidade similares concebidos para a melhoria de processos dentro de cada área de processo. Os perfis de capacidade representam caminhos de melhoria de processos para ilustrar a evolução de cada melhoria de área de processo. O nível equivalente é utilizado para relacionar o nível de capacidade das áreas de processo com os níveis de maturidade da representação faseada.
Os métodos ágeis
Aparentemente em contraponto aos processos standardizados, existe uma outra tendência formada pelas denominadas metodologias ágeis. Esta tendência é motivada pela profunda consciência da crise do software, pela responsabilidade atribuída às metodologias tradicionais como causa dessa crise, e pela vontade de propor soluções. A expressão ?ágil? aplicada à indústria de software foi criada em Fevereiro de 2001, após uma reunião no Utah, USA, onde foi criada a ?Agile Alliance?, uma organização destinada a promover conceitos de desenvolvimento de software ágeis e a ajudar as organizações na adopção desses conceitos.
O ponto de partida foi um documento que resume a filosofia ágil, designado por manifesto ágil. Este manifesto inclui um conjunto de princípios e de valores que suportam a filosofia. Descrevemos a seguir algumas dessas metodologias.
Extreme programming
A Extreme programming (XP) é um método criado por Kent Beck, Ron Jeffries e Ward Cunningham. O XP foi criado para equipas de desenvolvimento de software pequenas e de média dimensão, em que os requisitos são vagos, mudam rapidamente, ou são muito críticos. Esta metodologia foi criada tendo em mente o problema das metodologias de desenvolvimento tradicionais relativo a prazos e à satisfação do cliente. O objectivo principal do XP é conseguir a satisfação do cliente, tentando manter a sua confiança no produto. As recomendações do XP estão orientadas para a obtenção de software de alta qualidade.
Scrum
O Scrum começou por ser aplicado por Jeff Sutherland e elaborado mais formalmente por Ken Schwaber. Seguidamente, Sutherland e Schwaber aliaram esforços para refinarem e alargarem o Scrum, através da aplicação de métodos de controlo industrial em conjunto com experiências metodológicas na Microsoft, Borland e Hewlett-Packard. O Scrum não foi concebido como método independente, mas antes como complemento de outros métodos, nomeadamente o XP, ou o Unified Process (UP).
Enquanto método, o Scrum coloca o enfoque nos valores e práticas de gestão, e não inclui práticas para as partes técnicas (requisitos, desenho, implementação). É esta a razão porque é aconselhável a sua utilização em combinação com outro método ágil. O Scrum é um processo de gestão e de controlo que implementa técnicas de controlo de processos.
Agile Modeling
A Agile Modeling (AM) é um complemento para metodologias ágeis, de modo a facilitar a modelação e a documentação eficaz dos sistemas baseados em software. A AM é um conjunto de práticas orientadas por princípios e valores destinados a serem aplicados pelos engenheiros de software. Não define um procedimento específico de modelação com um detalhe completo; apenas fornece aconselhamento para tornar a modelação mais eficaz. A AM pode ser aplicada nos requisitos, arquitectura, e modelação do desenho. Trata-se de uma estratégia de modelação destinada a acautelar o facto de que os métodos ágeis não se preocupam com a modelação ou com a documentação enquanto produtos de trabalho.
Método Evo
O método Evo, criado por Tom Gilb, é o método ágil mais antigo. Em 1976, Gilb teve que lidar com tópicos como o desenvolvimento iterativo e a gestão evolutiva. Posteriormente, tratou estes tópicos de uma forma mais aprofundada e publicou o título ?Evolutionary Development? em 1981. Nos anos 90, Gilb continuou a desenvolver o Evo, que acabaria por influenciar outros métodos, como o XP, o Scrum, ou mesmo o UP. Este modelo é constituído por cinco elementos principais: objectivos, valores e custos, soluções, estimação de impacto, plano evolutivo e funções.
Crystal
O Crystal é uma família de metodologias criada por Alistair Cockburn. Estas metodologias baseiam-se no facto de que, comparando a construção de software com outros processos de engenharia, faz-nos pensar sobre ?especificações? e ?modelos? de software, sobre a sua totalidade, exactidão, e operação. Cockburn acha que estas questões não são contributivas, uma vez que depois de algum tempo ficam obsoletas e irrelevantes.
Existem quatro variantes das metodologias Crystal: o Crystal Clear (para equipas de um máximo de oito pessoas), o Yellow (para equipas entre oito a 20 pessoas), o Orange (para 20 a 50 pessoas), e o Red (para equipas de 50 a 100 pessoas). Está prometida a continuidade das variantes com o Brown, Blue, e Violet. A variante documentada de forma mais exaustiva é o Crystal Clear (CC). O CC pode ser utilizado em pequenos projectos com um grau de criticidade médio, mas também pode aplicado a projectos críticos com algumas extensões.
Feature Driven Development
O Feature Driven Development (FDD) é um método ágil, iterativo e adaptativo. É diferente de outros métodos ágeis, na medida em que não cobre o ciclo de vida completo do software, mas antes apenas as fases de desenho e de implementação. Este método é considerado adequado para os projectos críticos mais importantes. O FDD aplica um desenvolvimento iterativo com as melhores práticas, de modo a serem eficazes dentro dos parâmetros da indústria. Coloca o enfoque nos aspectos da qualidade e inclui pequenos entregáveis tangíveis, conjuntamente com o controlo preciso do progresso do projecto.
Adaptive Software Development
O Adaptive Software Development (ASD) concentra-se no problema do desenvolvimento de sistemas grandes e complexos. Este método utiliza uma abordagem incremental e iterativa, com prototipagem contínua. Pretende atingir ?o rigor estritamente necessário?, e propõe para isso a execução do mínimo controlo necessário.
Dynamic System Development Method
O Dynamic System Development Method (DSDM) é uma framework para o desenvolvimento de aplicações rápidas (RAD ? rapid application development), e tem sido promovido como um standard de facto para o desenvolvimento de soluções de negócio com limites de tempo rígidos. O DSDM pode complementar outras metodologias, como o XP, UP, ou uma combinação de metodologias.
Resultados
Aplicando a mesma abordagem a outras áreas, apresentamos a informação no quadro apresentado a seguir, onde resumimos os resultados da primeira abordagem para cada área de processo do nível dois de maturidade, exceptuando a gestão de subcontratos, dado que não é normalmente aplicável a pequenas organizações. Desta forma, se atribuirmos um peso equivalente a todas as áreas de processo, podemos calcular a percentagem geral para atingir o nível três de maturidade, algo que incluímos no final do quadro.
Área Métodos com maior contribuição Percentagem de execução (Nível de capacidade + Percentagem)
Gestão de requisitos XP CL-2 em 75 por cento, CL3 em 50 por cento
Medição e análise XP, ASD, Scrum CL-2 em 75 por cento, CL3 em 50 por cento
Planeamento de projecto XP, Scrum CL-3 em 100 por cento
Monitorização e controlo XP, Scrum CL-3 em 100 por cento
Gestão de subcontratos Não aplicável -
Garantia de qualidade de produtos e processos FDD, Crystal, Evo CL-2 em 75 por cento, CL3 em 50 por cento
Gestão de configurações Nenhuma CL-1 em 10 por cento
Percentagem de execução para o nível dois de maturidade 72 por cento
Percentagem de execução para o nível três de maturidade 60 por cento
Resumo do valor da contribuição dos métodos ágeis
para executar as áreas de processo do nível de maturidade dois.
(Cliqure na imagem para a visualizar em tamanho maior).
A área ?gestão de requisitos? do CMMI pode ser implementada utilizando práticas ágeis. Apesar de nenhum dos métodos ágeis analisados definir um processo completo de gestão de requisitos, é possível criar um utilizando uma combinação de elementos encontrados em vários métodos. Utilizando um artefacto de base (por exemplo, lista de requisitos, histórico de utilizador, ou funcionalidade), as organizações podem definir um modelo de gestão de requisitos baseado em práticas de gestão no Scrum, ou noutro método que considerem adequado.
A área de processo ?gestão e análise? não é definida por nenhum método particular. No entanto, é possível implementá-la como uma combinação de elementos de diferentes métodos. Duas estratégias interessantes a considerar são as time boxes do ASD, e a medição da velocidade do projecto definida no XP. Qualquer destas estratégias pode suportar a medição da qualidade e da produtividade. As práticas do Scrum também podem ser de grande valor.
A área ?planeamento de projecto? é coberta por praticamente todos os métodos ágeis. A diferença reside no facto do planeamento ser aplicado a iterações curtas e não ser um documento exigido. O planeamento é a base para o trabalho, mas o planos podem mudar. O objectivo é desenvolver um produto que satisfaça o cliente. Os planos são ajustados ao longo do projecto, o risco é tido em conta através da priorização das actividades, e os participantes são envolvidos nestas actividades.
A ?monitorização e controlo do projecto? é exercitada como parte dos métodos ágeis, mas não de uma forma muito organizada, exceptuando alguns deles (nomeadamente o XP, onde existe algo mais formal), e o Scrum (onde a gestão é o ponto forte mais relevante). Consequentemente, é possível implementar esta área com a contribuição destes métodos.
A ?garantia da qualidade de produto e de processo? é uma área fraca em todos os métodos ágeis, uma vez que não é apresentada de forma muito clara. O FDD inclui uma estrutura básica que vai para além dos testes. O Crystal Clear propõe uma alternativa para sincronizar o processo no tempo, e o Evo tem uma abordagem onde o produto e o processo são melhorados como parte intrínseca do projecto de desenvolvimento. Dado que o Scrum é o mais forte em termos de gestão, as suas práticas podem ser aplicadas num processo de garantia da qualidade.
A ?gestão de configurações? é a área mais fraca, uma vez que nem sequer atinge o nível de capacidade um utilizando técnicas dos métodos ágeis. Alguns métodos, como o XP ou o Crystal, propõem um ambiente técnico orientado principalmente para a gestão da configuração do código. É possível alargar estas técnicas para gerir outros itens de configuração e para utilizar ferramentas destinadas a suportar algumas das tarefas de rotina. O AM favorece a utilização de artefactos intermédios, que também podem ser considerados como itens de configuração para os processos.
É importante sublinhar que é possível atingir o nível dois de maturidade utilizando métodos ágeis, desde que sejam resolvidas as seguintes questões:
Baseado num artigo de Julio Ariel Hurtado Alegría e Maria Cecilia Bastarrica, com o título ?Implementing CMMI using a Combination of Agile Methods?.
Produzido em 2008