sábado, 4 de julho de 2009

Processo de Software

Atualmente, ouvimos falar de diversos Modelos de Qualidade de Software que consistem numa verdadeira “sopa de letrinhas”, dentre eles: ISO 9126, ISO/IEC 12207, ISO/IEC 15504, CMM, CMMI, MPS.BR, dentre outros. Pretendo discutir mais detalhadamente cada um destes modelos em outros posts.

Apesar de cada modelo ter suas particularidades, existem alguns princípios e conceitos básicos que todos eles devem abranger. Em outras palavras, estes conceitos tratam-se de abstrações que servem como base para qualquer Modelo de Qualidade de Software.

Uma destas abstrações corresponde ao conceito de Processo de Software.

O Processo de Software trata-se de um conjunto de atividades e resultados que geram um produto de software. Entretanto, não existe um processo ideal e cada organização pode adaptar o processo de desenvolvimento para adequar-se à sua necessidade. Contudo, existem algumas atividades fundamentais comuns a qualquer processo de desenvolvimento de software, por mais adaptado que seja:

- Especificação de Software: Aborda a definição da funcionalidade do software e as restrições em suas operações;

- Desenvolvimento de Software: Consiste na construção do software atendendo às especificações;

- Validação do Software: Corresponde a verificar se o software atende o que o cliente deseja;

- Evolução do Software: O software deve seguir uma evolução para atender às necessidades mutáveis do cliente.

Estas atividades podem ser descritas em diferentes níveis de detalhamento, sendo organizados de maneiras distintas nos variados processos de software existentes. Além disso, os prazos das atividades podem variar, bem como os resultados de cada atividade (SOMMERVILLE, 2001).

A partir do conceito de Processo de Software, foram criados modelos de desenvolvimento genéricos que definem uma estrutura de processo. Todavia, não se consegue ter um nível de detalhamento de atividades específicas. Os modelos genéricos existentes são:

- Modelo em Cascata: Este modelo representa as fases de especificação, desenvolvimento, validação e evolução separadas por processo. Assim, para cada novo item a ser desenvolvido no software é preciso concluir etapa por etapa, seguindo a hierarquia dos processos para finalizar o desenvolvimento. Ou seja, surge uma nova demanda de desenvolvimento, você precisa primeiramente concluir toda a especificação para partir ao desenvolvimento, depois concluir todo o desenvolvimento para partir para a validação e assim por diante;

- Desenvolvimento Evolucionário: Neste modelo há uma intercalação entre as atividades de especificação, desenvolvimento e validação. A proposta consiste em desenvolver um modelo inicial do software, bem básico e desenvolvido rapidamente. Após, com base em mais informações coletadas ou recebidas, de clientes, de mercado, de negócio, incrementa-se este modelo inicial para então atender às necessidades e concluir o produto de software. Seria como iniciar o desenvolvimento do software e ir melhorando-o gradativamente;

- Desenvolvimento Formal: Este modelo consiste na produção de um software a partir de métodos matemáticos que praticamente validam cada item a ser desenvolvido de maneira formal. Isto é, para cada desenvolvimento realizado é preciso provar matematicamente o seu resultado. Este tipo de modelo é normalmente utilizado para softwares que necessitam de precisão, por exemplo, software de equipamentos eletrônicos que realizam incisões cirúrgicas em pacientes, onde o corte deve ser preciso para não comprometer a saúde do paciente. Softwares militares, nucleares, também são desenvolvidos utilizando este modelo;

- Desenvolvimento Orientado a Reuso: Como o próprio nome sugere, o modelo orientado a reuso consiste na utilização de componente reutilizáveis. O processo de desenvolvimento se concentra na integração destes componentes em um sistema, ao invés de ter de reescrevê-los para cada nova funcionalidade a ser implementada. Trata-se de uma modelo amplamente utilizado nos dias atuais, servindo como base do desenvolvimento orientado a objetos;

Avaliando estes modelos básicos conseguimos agora facilmente relacioná-los aos padrões de Qualidade de Software citados no início deste post. Além disso, fica evidente que estes conceitos, já existentes desde o início dos anos 90, serviram como base para modelos de processo de desenvolvimento que utilizamos atualmente.

Referências Bibliográficas:

SOMMERVILLE, Ian. Engenharia de Software. 6ª ed. São Paulo: Pearson Addison Wesley, 2003.

Nenhum comentário:

Postar um comentário