ISO/IEC 12207

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

{{fusão}}

A ISO/IEC 12207 é a norma ISO/IEC que define processo de desenvolvimento de software.

A norma internacional ISO/IEC 12207 [1] 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.

Introdução[editar | editar código-fonte]

Um processo é uma seqüência de passos realizados para um determinado propósito [IEEE 610.12, 1690]; o processo de software envolve métodos, técnicas, ferramentas e pessoas. Um processo pode ser descrito de duas formas: por propósito ou resultado e por atividade.

A descrição por propósito ou resultado é utilizada quando não há necessidade de detalhar o processo, apenas indicar o objetivo e o resultado. Essa abordagem poderá ser utilizada na avaliação do processo em relação aos modelos de maturidade de software como, por exemplo, o modelo CMMI e o modelo da ISO/IEC 15504.

A descrição por atividade é a abordagem mais conhecida e intuitiva. Nela são descritas as atividades com as inter-relações e o algoritmo de execução de cada atividade. As atividades devem atingir o propósito do processo. Para isso deve adotar as premissas:

  • Que procedimentos e métodos serão usados para a execução das atividades;
  • Que ferramentas e equipamentos suportarão a realização das atividades, de forma a simplificar e automatizar o trabalho;
  • Qual o perfil adequado de quem irá executar as atividades e qual o treinamento requerido nos procedimentos, métodos, ferramentas para que se possam realizar as atividades de forma adequada;
  • Quais as métricas de processo que poderão ser empregadas para que a execução do processo possa ter a qualidade avaliada.

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".

Os processos da ISO/IEC 12207 são modulares, ou seja, são fortemente coesos e fracamente acoplados. Isto significa que todas as partes de um processo são fortemente relacionadas, mas a quantidade de interfaces entre os processos é mínima.

As regras listadas a seguir são importantes para identificação, escopo e estruturação dos processos e devem ser seguidas.

  • Um processo deve ser modular, isto é, convém que um processo execute uma e somente uma função dentro do ciclo de vida e é conveniente que as interfaces entre dois processos quaisquer sejam mínimas;
  • Cada processo é invocado na arquitetura;
  • Se um processo A é invocado por um processo B e somente por ele, então A pertence a B;
  • Se uma função é invocada por mais de um processo, então esta função torna-se um processo;
  • Deve ser possível verificar qualquer função dentro do modelo de ciclo de vida;
  • Convém que cada processo tenha uma estrutura interna suficientemente definida para que possa ser executável.

Estrutura[editar | editar código-fonte]

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 adaptação.

Processos fundamentais[editar | editar código-fonte]

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

  • 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[editar | editar código-fonte]

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[editar | editar código-fonte]

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;

Processos de Reuso de Software[editar | editar código-fonte]

São os processos específicos no desenvolvimento de software, processos estes da atualização da ISO/IEC 12207 - 2008

  • Gestão de ativos: possui o propósito de gerenciar a vida dos ativos (reusáveis) desde a concepção até a desativação;
  • Gestão de programa de reuso: possui o propósito de planejar, estabelecer, controlar, monitorar os programas de reuso;
  • Engenharia de domínio: possui o propósito de desenvolver e manter modelos de domínio, arquiteturas e ativos deste domínio.

Processos de adaptação[editar | editar código-fonte]

Os processos são adaptáveis a:

  • Projeto;
  • Organização;
  • Cultura;
  • Modelo de ciclo de vida, métodos e técnicas, e linguagens.

Atividades do desenvolvimento[editar | editar código-fonte]

Algumas atividades importantes para o desenvolvimento de software serão descritas a seguir. São elas:

  • Levantamento de requisitos;
  • Análise dos requisitos do software;
  • Projeto da arquitetura do software;
  • Projeto detalhado do software;
  • Implementação;
  • Codificação e testes do software;
  • Integração do software;
  • Teste de qualificação do software;
  • Instalação do software;
  • Testagem e aprovação do software

Elas foram descritas com base na norma ISO/IEC 12207.

Levantamento dos requisitos[editar | editar código-fonte]

O levantamento dos requisitos consiste em entender os requisitos e solicitações do sistema; obter e definir os requisitos e solicitações do cliente através de sua solicitação direta ou através de outras entradas como revisão da proposta de negócio, objetivos operacionais, ambiente de hardware e outros documentos.

É imprescindível entender as expectativas do cliente e assegurar que tanto o cliente quanto o fornecedor entendam os requisitos da mesma forma. Isso pode ser feito através do processo de apoio "Revisão Conjunta" descrito na norma ISO/IEC 12207. É necessário acordar os requisitos e obter um acordo entre as equipes que irão desenvolver o trabalho em relação aos requisitos do cliente.

É importante gerenciar todas as mudanças feitas nos requisitos do cliente em relação à linha-básica definida assegurando que o resultado de mudanças tecnológicas e de necessidades do cliente são identificados e os impactos de introdução dessas mudanças são avaliados.

Análise dos requisitos do sistema[editar | editar código-fonte]

Após o levantamento, segue para a especificação dos requisitos do sistema. Esta especificação deve descrever:

  • Funções e capacidades do sistema;
  • Requisitos de negócio, organizacionais e de usuários;
  • Requisitos de proteção, de segurança, de engenharia de fatores humanos (ergonomia), de interface, de operações e de manutenção;
  • Restrições de projeto e requisitos de qualificação.

Os requisitos precisam ser avaliados. Por isso, para formalizar e facilitar a avaliação, os critérios listados a seguir devem ser seguidos:

  • Rastreabilidade com os requisitos do cliente e necessidades de aquisição;
  • Consistência com as necessidades de aquisição e com o levantamento dos requisitos;
  • Testabilidade;
  • Viabilidade do projeto da arquitetura do sistema;
  • Viabilidade da operação e manutenção.

Após a avaliação é importante estabelecer mecanismos de comunicação para disseminar os requisitos do sistema e suas atualizações para todas as partes interessadas.

Projeto da arquitetura do sistema[editar | editar código-fonte]

Com os requisitos elaborados e validados, pode-se estabelecer uma arquitetura de alto nível para o sistema. A arquitetura deve identificar itens de hardware, software e operações manuais. Após a arquitetura ser estabelecida, é necessário avaliá-la, considerando os critérios listados a seguir:

  • Rastreabilidade para os requisitos do sistema;
  • Consistência com os requisitos do sistema;
  • Adequação dos métodos e padrões de projeto utilizados;
  • Viabilidade dos itens de software atenderem seus requisitos alocados;
  • Viabilidade da operação e da manutenção.

Análise dos requisitos do software[editar | editar código-fonte]

Para garantir a qualidade do produto entregue, as características de qualidade descritas a seguir devem ser observadas nos requisitos de software:

  • Especificações funcionais e de capacidade, incluindo desempenho, características físicas e condições do ambiente sob o qual o item de software será executado;
  • Interfaces externas ao item de software;
  • Requisitos de qualificação;
  • Especificações de proteção, incluindo aquelas relacionadas aos métodos de operação e manutenção, influências do ambiente e danos pessoais;
  • Especificações de segurança, incluindo aquelas relacionadas com o comprometimento de informações sigilosas;
  • Especificações de engenharia de fatores humanos (ergonomia), incluindo aquelas relacionadas com operações manuais, interações entre homem-máquina, restrições a pessoal e áreas que necessitam de maior atenção humana, que são sensíveis a erros humanos e treinamento;
  • Definição de dados e requisitos de bases de dados;
  • Requisitos de instalação e aceitação do produto de software entregue nos locais de operação e manutenção;
  • Documentação do usuário;
  • Requisitos do usuário para execução e operação;
  • Requisitos do usuário para manutenção.

Após a análise de requisitos de software é necessário fazer a avaliação desses requisitos considerando os critérios listados a seguir:

  • Rastreabilidade para os requisitos do sistema e projeto do sistema;
  • Consistência externa com os requisitos do sistema;
  • Consistência interna;
  • Testabilidade;
  • Viabilidade do projeto do software;
  • Viabilidade da operação e manutenção.

Pode-se conduzir uma ou mais revisões conjuntas e estabelecer as baselines.

Projeto da arquitetura do software[editar | editar código-fonte]

O projeto de arquitetura de software busca transformar os requisitos em uma arquitetura que descreve sua estrutura de alto nível e identifica os componentes de software. As versões preliminares da documentação do usuário, dos requisitos preliminares e de testes devem ser garantidas e documentadas. O cronograma para a Integração do Software deve ser criado. A avaliação da arquitetura do item de software e os projetos de interface e base de dados, considerando os critérios listados a seguir:

  • Rastreabilidade para os requisitos do item de software;
  • Consistência externa com os requisitos do item de software;
  • Consistência interna entre os componentes de software;
  • Adequação dos métodos e padrões de projeto utilizados;
  • Viabilidade do projeto detalhado;
  • Viabilidade da operação e manutenção.

Pode-se conduzir uma ou mais revisões conjuntas e estabelecer as baselines.

Projeto detalhado do software[editar | editar código-fonte]

Após o projeto de arquitetura, desenvolve-se um projeto detalhado de software para cada componente do software. Os componentes de software devem ser refinados em níveis mais baixos, contendo unidades de software que possam ser codificadas, compiladas e testadas. O projeto detalhado das interfaces deve permitir a codificação sem a necessidade de informação adicional. Durante o detalhamento de software, se for necessário, deve ser feita a atualização da documentação do usuário. É importante definir e documentar os requisitos de teste e o cronograma para testar unidades de software.

Após detalhamento do projeto de software é necessário fazer a avaliação deste detalhamento, considerando os critérios listados a seguir:

  • Rastreabilidade para os requisitos do item de software;
  • Consistência externa com o projeto da arquitetura;
  • Consistência interna entre os componentes e unidades de software;
  • Adequação dos métodos e padrões de projeto utilizados;
  • Viabilidade dos testes;
  • Viabilidade da operação e manutenção.

Pode-se conduzir uma ou mais revisões conjuntas e estabelecer as baselines.

Implementação[editar | editar código-fonte]

A implementação consiste na definição ou seleção de um modelo de ciclo de vida de software apropriado ao escopo, magnitude e complexidade do projeto e na execução de documentação dos resultados, de acordo com o processo de documentação; colocação dos resultados sob o processo de gerência de configuração; execução do controle de alterações, de acordo com ele; documentação e resolução de não-conformidades e problemas encontrados nos produtos de software e tarefas, de acordo com o processo de resolução de problema; execução dos processos de apoio, conforme especificado no contrato; seleção, adaptação e utilização de padrões, métodos, ferramentas e linguagens de programação de computador; desenvolvimento dos planos para conduzir as atividades do processo de desenvolvimento.

Codificação e testes do software[editar | editar código-fonte]

Para, finalmente, executar a codificação e os testes é necessário desenvolver e documentar cada unidade de software com base em procedimentos a serem definidos. Os testes devem garantir que os requisitos documentados sejam atendidos. Os resultados dos testes devem ser documentados. Durante esta fase, a atualização e documentação do usuário pode ser feita, se necessário. Após a codificação e testes é importante fazer a avaliação do código do software e dos resultados dos testes, considerando os critérios listados a seguir:

  • Rastreabilidade para os requisitos e projeto do item de software;
  • Consistência externa com os requisitos e projeto do item de software;
  • Consistência interna entre os requisitos da unidade;
  • Cobertura de teste das unidades;
  • Adequação dos métodos e padrões de codificação utilizados;
  • Viabilidade da integração e testes do software;
  • Viabilidade da operação e manutenção.

Os resultados das avaliações devem ser documentados.

Integração do software[editar | editar código-fonte]

Para poder homologar o sistema é necessário desenvolver um plano de integração para integrar as unidades e componentes de software. O plano deve incluir requisitos de teste, procedimentos, dados, responsabilidades e cronograma. Deve-se testar essas agregações à medida que forem sendo integradas, de acordo com o plano de integração. Durante esta fase, a atualização e documentação do usuário pode ser feita, se necessário.

Após a codificação e testes é importante fazer a avaliação do plano de integração, projeto, código, testes, resultados dos testes e a documentação do usuário, considerando os critérios listados:

  • Rastreabilidade para os requisitos do sistema;
  • Consistência externa com os requisitos do sistema;
  • Consistência interna;
  • Cobertura de teste dos requisitos do item de software;
  • Adequação dos métodos e padrões de teste utilizados;
  • Conformidade com os resultados esperados;
  • Viabilidade do teste de qualificação do software;
  • Viabilidade da operação e manutenção.

Pode-se conduzir uma ou mais revisões conjuntas e estabelecer as baselines.

Teste de Qualificação do software[editar | editar código-fonte]

Deve-se desenvolver e documentar os requisitos de qualificação de software e elaborar casos de teste( entradas, saídas e critérios de teste) e procedimentos de teste para conduzir o Teste de Qualificação do Software de acordo com os requisitos de qualificação para o item de software. Após a codificação e testes é importante fazer a avaliação do projeto, códigos, testes, resultados dos testes e a documentação dos usuários, considerando os critérios listados a seguir:

     ·Cobertura de teste dos requisitos do item de software;
     ·Conformidade com os resultados esperados;
     ·Viabilidade da integração e testes do sistema, se conduzidos;
     ·Viabilidade da operação e manutenção.

É importante estar preparado para dar apoio às auditorias.

Integração do sistema[editar | editar código-fonte]

A integração do sistema faz-se a partir da integração dos itens de configuração de software ao sistema. Após a integração deve-se conduzir ao teste de qualificação do sistema. Após a codificação e testes é importante fazer a avaliação do sistema, considerando os critérios listados a seguir:

  • Cobertura de teste dos requisitos do sistema;
  • Adequação dos métodos e padrões de teste utilizados;
  • Conformidade com os resultados esperados;
  • Viabilidade do teste de qualificação do sistema;
  • Viabilidade da operação e manutenção.

Teste de qualificação do sistema[editar | editar código-fonte]

Para garantir a qualidade do produto entregue é importante conduzir o teste de qualificação do sistema e fazer a avaliação do sistema, considerando os critérios listados a seguir:

  • Cobertura de teste dos requisitos do sistema;
  • Conformidade com os resultados esperados;
  • Viabilidade da operação e manutenção.

É importante estar preparado para dar apoio às auditorias.

Instalação do software[editar | editar código-fonte]

Na instalação do software deve-se executar um plano para instalar o produto de software no ambiente alvo, conforme designado no contrato. Deve ser assegurado que o código do software e as bases de dados sejam iniciados, executados e finalizados, conforme especificado no contrato. Os eventos e resultados da instalação devem ser documentados.

Apoio à aceitação do software[editar | editar código-fonte]

No apoio à aceitação do software é preciso garantir o apoio à revisão de aceitação do adquirente e testes do produto de software. A revisão de aceitação e testes deve considerar os resultados de Revisões Conjuntas, Auditorias, Teste de Qualificação do Software e Teste de Qualificação do Sistema (se executado). Conclusão e entrega do produto de software deve ser feita, conforme especificado no contrato e o desenvolvedor deve prover treinamento inicial e contínuo e suporte ao adquirente, conforme especificado no contrato.