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