Norma NBR ISO/IEC 12207

A norma internacional ISO/IEC 12207 tem como objetivo principal estabelecer uma estrutura comum para os processos de ciclo de vida e de desenvolvimento de softwares visando ajudar as organizações a compreenderem todos os componentes presentes na aquisição e fornecimento de software e, assim, conseguirem firmar contratos e executarem projetos de forma mais eficaz.

A norma ISO/IEC 12207 estabelece uma arquitetura de alto nível do ciclo de vida de software que é construída a partir de um conjunto de processos e seus inter-relacionamentos.

Os processos são descritos tanto em nível de propósito/saídas como em termos de atividades. A ISO/IEC 12207 não possui nenhuma ligação com métodos, ferramentas, treinamentos, métricas ou tecnologias empregadas. Esta determinação é útil para permitir que a norma seja utilizada mundialmente e possa acompanhar a evolução da engenharia de software nas diversas culturas organizacionais. Ela pode ser utilizada com qualquer modelo de ciclo de vida, método ou técnica de engenharia de software e linguagem de programação. Sua flexibilidade é uma característica importante, as atividades e tarefas do processo de ciclo de vida do software especificam “o que fazer” e não “como fazer”.

Estrutura

Os processos na ISO/IEC 12207 são de responsabilidade de uma organização, mas não são exclusivos desta, ou seja, uma organização pode executar um ou mais processos e um processo pode ser executado por uma ou mais organizações. Neste caso, uma das organizações será a responsável pelo processo total, mesmo que tarefas individuais sejam realizadas por pessoas diferentes. Os processos são agrupados, por uma questão de organização, de acordo com a sua natureza, ou seja, o seu objetivo principal no ciclo de vida de software. Esse agrupamento resultou em 4 diferentes classes de processos, que são:

  • Processos fundamentais;
  • Processo de apoio;
  • Processos organizacionais.

Processos de Fundamentais

Os processos fundamentais são necessários para que um software seja executado. Eles iniciam o ciclo de vida e comandam outros processos.

  • Aquisição: possui o propósito de obter o produto e/ou serviço que satisfaça suas necessidades;
  • Fornecimento: possui o propósito de prover um produto e/ou serviço;
  • Desenvolvimento: possui o propósito de transformar um conjunto de requisitos em um produto ou sistema de software;
  • Operação: possui o propósito de operar o produto no seu ambiente e prover suporte aos usuários;
  • Manutenção: possui o propósito de modificar o produto de software e depois dar liberação para o uso.

Processos de Apoio

Os processos de apoio auxiliam outro processo. Eles são usados para garantir a qualidade, mas não são fundamentais. São eles:

  • Documentação: possui o propósito de prover, manter um registro de informações de software;
  • Gerência de configuração: possui o propósito de estabelecer e manter a integridade de todos os produtos de trabalho (artefato) de um processo do projeto;
  • Garantia da qualidade: possui o propósito de prover garantia de que os produtos e processos estão em conformidade com o requisitos (padrões/normas) pré-definidos;
  • Verificação: possui o propósito de confirmar que os produtos e/ou serviços refletem os requisitos especificados;
  • Validação: possui o propósito de confirmar que os requisitos para o uso específico de um produto e/ou serviço são atendidos;
  • Revisão conjunta: possui o propósito de manter o entendimento (gerencial comum com os stakeholders);
  • Auditoria: possui o propósito de determinar independentemente a conformidade dos produtos e processos contra os requisitos definidos;
  • Resolução de problema: possui o propósito de assegurar que todos os problemas levantados sejam analisados e resolvidos;
  • Usabilidade;
  • Contrato.

Processos Organizacionais

Os processos organizacionais auxiliam a organização e gerência geral dos processos e podem ser empregados fora do domínio de projetos e contratos específicos, servindo para toda a organização. São eles:

  • Gerência: possui o propósito de organizar, monitorar e controlar a iniciação e o desempenho dos processos;
  • Infra-estrutura: possui o propósito de manter uma infra-estrutura estável e confiável;
  • Melhoria: possui o propósito de estabelecer, avaliar, controlar e melhorar um processo de ciclo de vida de software;
  • Recursos humanos: possui o propósito de prover e manter recursos humanos adequados mantendo as suas capacitações consistentes com o negócio.

Autor: Arielson Soldi de Lima