Em muitos setores da economia existem padrões que apresentam um conjunto de modelos e boas praticas aperfeiçoadas ao longo do tempo através de contribuições sucessivas de organizações e universidades. No setor de tecnologia da informação e comunicações (TIC) isto também é uma realidade pois temos um número grande de padrões e modelos desenvolvidos por organizações como, por exemplo, IEC (http://www.iec.ch), ISO (http://www.iso.org ), IEEE (http://www.ieee.org ) e SEI (http://www.sei.cmu.edu).
No Brasil a palavra norma é muito utilizada para se referir aos conjuntos de modelos de boas práticas, enquanto que internacionalmente a palavra mais utilizada é “standard”. Isto é compreensível porque no dicionário de Inglês vemos que norma é um dos seus sinônimos, porem a ideia que vem na nossa cabeça quando pensamos em norma é daquilo que é normal, ou ainda, daquilo que deve ser seguido ao pé da letra e de forma burocrática. Se pensarmos nestes “standards” sob esta perspectiva estaremos limitando em muito o seu potencial. Prefiro entender “standard” como padrão ou modelo de referência, pois considero este significado mais corrente com tudo que eles podem nos oferecer. Saem as normas e chegam os padrões.
Minha proposta é fazermos uma análise de um destes padrões sob a ótica de modelo de referência. O padrão escolhido para nossa pequena jornada é o IEC/ISO 12207:1998 ou ABNT ISO/IEC 12207:1998 intitulado Processos de Ciclo de Vida de Software. Em 2008 a IEC/ISO e IEEE publicaram uma revisão deste padrão. Uma análise comparativa entre a revisões de 1998 e 2008 podem ser objeto de outro artigo.
O padrão ISO/IEC 12207:1998 estabelece uma estrutura comum e que é referencia pela indústria de software. Esta estrutura possui processos, atividades e tarefas. Estes processos podem ser aplicados na aquisição de um sistema que contém software, de um produto de software independente ou de um serviço de software, incluindo o fornecimento, desenvolvimento, operação e manutenção de produtos de software. Além disso, o padrão também oferece modelos para definir, controlar e melhorar os processos de ciclo de vida de software.
Na revisão de 1998 estão definidos cinco processos fundamentais, oito processos de apoio e quatro processos organizacionais. Cada processo de ciclo de vida é composto por um conjunto de atividades e cada atividade, por sua vez, é composta por um conjunto de tarefas.
Os processos fundamentais são: aquisição, fornecimento, desenvolvimento, operação e manutenção. Os processos classificados como de apoio são: documentação, gerência de configuração, garantia da qualidade, verificação, validação, revisão conjunta, auditoria e resolução de problema. Já os processos organizacionais são: gerência, infraestrutura, melhoria e treinamento. A figura abaixo resume e nos permite entender melhor como estes processos estão organizados.
Ao todo temos 13 processos definidos no padrão. Neste momento o leitor pode estar pensando “Tudo é muito bonito de se ler mas muito complicado de se aplicar” Que tal pensar de outra forma? No início do artigo definimos padrão como sendo também um modelo de referência. Sendo um modelo, é possível fazer uma análise do quão pertinente é cada um destes processos em sua empresa, no seu projeto ou na sua aquisição. A beleza dos modelos está na correta definição do nível de abstração que ele deve se posicionar, cabendo a quem o utiliza, dentro dos conceitos do padrão, definir quais e como cada um dos processos deve ser implementado. Não é a toa que a primeira atividade de muitos processos fundamentais é a de implementação do processo em questão.
E por falar em nível de abstração lembrei-me de outro motivo que me levou a escolher como exemplo o padrão 12207 (já estamos mais próximos então podemos utilizar o nome curto). Este padrão pode ser considerado como sendo um meta-modelo de referência. Isto significa que o 12207 define o que é essencial de cada processo, deixando espaço para que outros padrões, de menor nível de abstração, possam se encaixar no meta-modelo. Nesta linha temos um número grande padrões mais específicos para gestão de configuração, manutenção e testes, por exemplo, que se adequam ao meta-modelo de referência 12207. Existem muitos trabalhos acadêmicos e de indústria que se dedicaram a fazer o mapeamento entre os processos definidos no 12207 (meta-modelo) e os modelos de referência definidos nos padrões específicos de cada área do conhecimento da engenharia de software.
Um exemplo brasileiro é o modelo de referência MPS-SW desenvolvido pela Softex (Associação para Promoção da Excelência do Software Brasileiro), entidade designada pelo Ministério da Ciência, Tecnologia e Inovação (MCTI) para gerir o programa SOFTEX. O padrão MPS-SW oferece um modelo de referência para melhoria dos processos de software tendo por base a versão de 2008 do padrão 12207 entre outros. Recomendo a visita ao site http://www.softex.br/mpsbr
O meu objetivo com este artigo foi provocar a reflexão sobre a importância de entendermos aquilo que geralmente chamamos simplesmente de normas como sendo padrões de modelo de referência. Para ilustrar este conceito sobrevoamos a 10 mil pés o padrão IEC/ISO 12207:1998 e o apresentamos como um meta-modelo de referência. Pretendo voltar a este tema nos próximo artigo com o objetivo de aprofundar a analise em um dos processos fundamentais. Sugestões são bem-vindas.