Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

DEFINIÇÃO DE PROCESSOS EM UM AMBIENTE DE ..., Notas de aula de Evolução

Tabela 4.1 – Derivação de conceitos da ontologia de processo de software . ... definir processos de qualidade e automatizar esses processos, ...

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

usuário desconhecido
usuário desconhecido 🇧🇷

4.6

(84)

74 documentos

1 / 118

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
DEPARTAMENTO DE INFORMÁTICA
MESTRADO EM INFORMÁTICA
GLEIDSON BERTOLLO
DEFINIÇÃO DE PROCESSOS EM UM AMBIENTE DE
DESENVOLVIMENTO DE SOFTWARE
VITÓRIA
2006
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe DEFINIÇÃO DE PROCESSOS EM UM AMBIENTE DE ... e outras Notas de aula em PDF para Evolução, somente na Docsity!

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO

DEPARTAMENTO DE INFORMÁTICA

MESTRADO EM INFORMÁTICA

GLEIDSON BERTOLLO

DEFINIÇÃO DE PROCESSOS EM UM AMBIENTE DE

DESENVOLVIMENTO DE SOFTWARE

VITÓRIA

GLEIDSON BERTOLLO

DEFINIÇÃO DE PROCESSOS EM UM AMBIENTE DE

DESENVOLVIMENTO DE SOFTWARE

Dissertação apresentada ao Mestrado em Informática da Universidade Federal do Espírito Santo, como requisito parcial para obtenção do Grau de Mestre em Informática. Orientador: Prof. Dr. Ricardo de Almeida Falbo.

VITÓRIA

iii

RESUMO

Atualmente, é amplamente reconhecido que a qualidade dos produtos de software depende da qualidade dos processos de software utilizados em seu desenvolvimento e manutenção. Com isso, muito trabalho tem sido feito no sentido de apoiar organizações em seus esforços pela busca da qualidade de processo. Pesquisas na área de processos de software têm explorado duas principais vertentes: (i) abordagens para modelagem, análise e melhoria do processo de software e (ii) tecnologia de apoio ao processo de software.

A primeira vertente focaliza abordagens para estruturação, organização, documentação e descrição de processos de software e inclui normas de qualidade de processo de software. A segunda está voltada para o desenvolvimento de Ambientes de Desenvolvimento de Software (ADSs) Centrado em Processos, que integram ferramentas de apoio ao desenvolvimento de artefatos com ferramentas de apoio à modelagem e execução de processos de software, utilizados na construção desses artefatos. A representação explícita de processos, seus produtos e suas interações é a base sobre a qual modernos ambientes de desenvolvimento são construídos. Provendo formas mais poderosas de descrever e implementar processos de software, ADSs centrado em processos têm provido também um poderoso meio de integrar processos e ferramentas, e de automatizar, pelo menos parcialmente, tarefas.

Esta dissertação apresenta uma infra-estrutura de processos de software que define uma ferramenta de definição de processos construída e integrada ao ambiente ODE (Ontology- based software Development Environment). Para apoiar essa integração, a infra-estrutura proposta foi construída tomando por base uma ontologia de processos de software. Essa ontologia foi evoluída no contexto deste trabalho, procurando capturar conceituações importantes definidas em normas e modelos de qualidade de processo recentes.

Palavras-chave: Processos de Software, Modelos de Qualidade de Processos, Ambientes de Desenvolvimento de Software, Ontologias.

iv

ABSTRACT

Nowadays, it is widely recognized that the quality of a software product depends on the quality of the software processes used in its development and maintenance. With this, much work has been done aiming to support organizations in their efforts towards process quality. The software process research area has explored two main directions: (i) approaches for modeling, analyzing and improving software processes, and (ii) support technology for software processes.

The first goal focuses on approaches for structuring, organizing, documenting and describing software processes and includes process quality standards and maturity models. The second goal is concerned with the development of Process-Centered Software Engineering Environments (PSEEs) that integrate tool support for the development of artifacts with tool support for software process modeling and execution. The explicit representation of processes, its products and its interactions are the basis over which the modern development environments are built. Providing more powerful ways of describing and implementing software processes, PSEEs have also provided a powerful way to integrate processes and tools, and to automate, at least partially, tasks.

This work presents a software process infrastructure that includes a tool for defining software processes. This tool was built and integrated to ODE (Ontology-based software Development Environment). To support this integration, the proposed infrastructure was built based on a software process ontology. This ontology was evolved in the context of this work, taking into account recent quality models and standards.

Keywords: Software Process, Process Quality Models, Software Engineering Environments, Ontologies.

Capítulo 4 – Uma Ferramenta de Apoio à Definição de Processos de Software em ODE

vii

ix

  • Capítulo 1 – Introdução SUMÁRIO
    • 1.1 Contexto e Objetivo do Trabalho
    • 1.2 Metodologia
    • 1.3 Organização do Trabalho
  • Capítulo 2 – Processos de Software
    • 2.1 Definição de Processos de Software
    • 2.2 Qualidade de Processos de Software....................................................................
      • 2.2.1 ISO
      • 2.2.2 ISO/IEC
      • 2.2.3 ISO/IEC
      • 2.2.4 CMMI
      • 2.2.5 MPS.BR
      • 2.2.6 Processo Unificado da Rational
    • 2.3 Automatização de Processos de Software
      • 2.3.1 A Estação TABA
      • 2.3.2 O Ambiente ODE
    • 2.4 Conclusões do Capítulo........................................................................................
  • Capítulo 3 – Evoluindo uma Ontologia de Processo de Software
    • 3.1 Ontologias
    • 3.2 Evoluindo as Sub-ontologias da Ontologia de Processo
      • 3.2.1 Ontologia de Atividade
      • 3.2.2 Ontologia de Recurso
      • 3.2.3 Ontologia de Procedimento
    • 3.3 Ontologia de Processo de Software
      • 3.3.1 Decomposição e Interação entre Processos
      • 3.3.2 Definição de Processo
      • 3.3.3 Tipos e Níveis de Abstração de Processos
      • 3.3.4 Modelo de Ciclo de Vida de Processo de Projeto
    • 3.4 Mapeando Normas e Modelos de Qualidade na Ontologia vi
      • 3.4.1 As Normas ISO e a Ontologia de Processo de Software
      • 3.4.2 O CMMI e a Ontologia de Processo de Software
      • 3.4.3 O MPS.BR e a Ontologia de Processo de Software
      • 3.4.4 O RUP e a Ontologia de Processo de Software
    • 3.5 Conclusões do Capítulo........................................................................................
    • 4.1 A Antiga Infra-estrutura de Processos de Software de ODE
    • 4.2 A Nova Infra-estrutura de Processos em ODE
      • 4.2.1 O Pacote ConhecimentoProcesso
      • 4.2.2 O Pacote ProcessoPadrao
      • 4.2.3 O Pacote ControleProcesso
      • 4.2.4 Definindo Processos em ODE
    • 4.3 Conclusões do Capítulo.........................................................................................
  • Capítulo 5 – Considerações Finais
    • 5.1 Conclusões
    • 5.2 Perspectivas Futuras
  • Referências Bibliográficas
  • Figura 2.1 – Abordagem em Níveis para a Definição de Processos LISTA DE FIGURAS
  • Figura 2.2 – Componentes do Modelo CMMI
  • Figura 2.3 – Geração de ambientes a partir da Estação TABA (BERGER, 2003)
  • Figura 2.4 – Os três níveis da arquitetura conceitual de ODE
  • Figura 3.1 – Perfil UML para construção de ontologias e seus axiomas
  • Figura 3.2 – Ontologia de processo de software e suas sub-ontologias
  • Figura 3.3 – Ontologia de atividade
  • Figura 3.4 – Parte da Ontologia de Artefato de Software (NUNES, 2005)
  • Figura 3.5 – Ontologia de recurso
  • Figura 3.6 – Ontologia de procedimento
  • Figura 3.7 – Decomposição e interação de processos
  • Figura 3.8 – Definição de processo
  • Figura 3.9 – Tipos de processo e nível de abstração
  • Figura 3.10 – Modelo de ciclo de vida de processo de projeto
  • Figura 4.1 – Modelo original do pacote Conhecimento.................................................
  • Figura 4.2 – Modelo original do pacote Controle
  • Figura 4.3 – Definição de processos na primeira versão da ferramenta
  • Figura 4.4 – Modelo de Conhecimento da segunda versão da ferramenta
  • Figura 4.5 – Definição de processos padrão e especializado
  • Figura 4.6 – Modelo de Controle da segunda versão da ferramenta
  • Figura 4.7 – Diagrama de Pacotes
  • Figura 4.8 – Modelo Parcial do Pacote ConhecimentoProcesso
  • Figura 4.9 – Interação Seqüencial
  • Figura 4.10 – Interação Paralelo Independente
  • Figura 4.11 – Interação Paralelo Dependente
  • Figura 4.12 – Interação Pontual
  • Figura 4.13 – Interação Sob-demanda
  • Figura 4.14 – Modelo Parcial do Pacote ProcessoPadrao
  • Figura 4.15 – Definição de Processo Padrão
  • Figura 4.16 – Modelo Parcial do Pacote ControleProcesso
  • Figura 4.17 – Novo processo padrão viii
  • Figura 4.18 – Definição dos sub-processos
  • Figura 4.19 – Definição de macro-atividades
  • Figura 4.20 – Propriedades de uma atividade
  • Figura 4.21 – Modelos de ciclo de vida de um processo padrão
  • Figura 4.22 – Inclusão de um modelo de ciclo de vida de um processo padrão
  • Figura 4.23 – Caracterização de um processo especializado
  • Figura 4.24 – Selecionar modelo de ciclo de vida para um processo de projeto...........
  • Figura 4.25 – Definir sub-atividades em um processo de projeto
  • Figura 4.26 – Justificativa de exclusão de processo
  • Tabela 2.1 – Níveis de Maturidade LISTA DE TABELAS
  • Tabela 3.1 – Descrição dos Novos Termos da Ontologia de Recurso
  • Tabela 3.2 – Termos Novos e Alterados da Ontologia de Procedimento
  • Tabela 3.3 – Termos Novos e Alterados da Ontologia de Processo de Software
  • Tabela 3.4 – ISO X Ontologia de Processo de Software
  • Tabela 3.5 – CMMI X Ontologia de Processo de Software
  • Tabela 3.6 – MPS.BR X Ontologia de Processo de Software
  • Tabela 3.7 – RUP X Ontologia de Processo de Software
  • Tabela 4.1 – Derivação de conceitos da ontologia de processo de software
  • Tabela 4.2 – Derivação de conceitos da ontologia de atividade
  • Tabela 4.3 – Derivação de conceitos da ontologia de recurso ..........................................
  • Tabela 4.4 – Derivação de conceitos da ontologia de procedimento ...............................

1 Capítulo 1

Introdução

Com a crescente demanda no setor de desenvolvimento de software, aumenta a necessidade de se dispor de ambientes automatizados que apóiem todo o processo de desenvolvimento. Essa necessidade se deve também à grande complexidade dos sistemas atuais, à expectativa de que eles tenham alta qualidade e que sejam desenvolvidos respeitando os prazos estabelecidos, sem a necessidade de alocação de mais recursos. Ambientes de Desenvolvimento de Software (ADSs) surgem, então, com o intuito de integrar diferentes ferramentas, construídas para finalidades específicas, mas que operam juntas para apoiar a construção de um produto de software. Tal integração é fundamental para os ADSs e envolve diversas dimensões, tais como apresentação, dados, plataforma, processo, controle e conhecimento (PFLEEGER, 2001). Contudo, apenas automatizar o desenvolvimento não é suficiente para atingir todos os critérios de qualidade necessários no desenvolvimento de software. Uma outra vertente de evolução é o próprio domínio de processos de software. Nos últimos anos, diversas normas de qualidade de software foram revisadas, tais como a ISO 9001 (ISO, 2000a) e o CMM (PAULK, 1993), e até mesmo elaboradas, como foi o caso da ISO/IEC 15504 (ISO/IEC, 2003). Em geral, essas normas descrevem requisitos de processos para serem implementados nas organizações, além de estabelecerem critérios para avaliação da maturidade e capacidade das organizações em desenvolver e manter software. Essas abordagens tiveram uma grande aceitação do mercado e passaram a ser uma ferramenta, de fato, para avaliar o nível da qualidade de organizações desenvolvedoras de software. Dessa forma, essas duas vertentes se completam, pois estabelecem uma forma de definir processos de qualidade e automatizar esses processos, buscando garantir eficiência e rapidez no desenvolvimento. Um problema quando se utiliza diversas normas e modelos de qualidade de processo distintos é que não há um vocabulário comum compartilhado por eles. Cada norma, família de

capturava conceitos como composição de processos, interação de processos e níveis de abstração de processos, que são essenciais na modelagem de processos. O objetivo principal deste trabalho é evoluir a infra-estrutura de processos de software de ODE e, por conseguinte, dado que essa infra-estrutura é construída sobre a base ontológica da ontologia de processo de software, evoluir essa ontologia. Assim, a ontologia de processo de software foi revisada para se adequar aos novos conceitos acerca do domínio de processo de software. Para tal, foi necessário estudar o estado da arte e o estado da prática de processos de software e propor uma revisão na ontologia de forma a acompanhar esse novo contexto. Após a revisão da ontologia de processo de software, torna-se necessário evoluir também a infra-estrutura de processo de software do ambiente, de forma a incorporar os novos conceitos, relações e restrições descritos na ontologia. Assim, a ferramenta de definição de processos de software de ODE foi revisada, de forma a atender à nova conceituação. Essa ferramenta foi desenvolvida já integrada a ODE e estabelece o ponto de partida para a execução de projetos no ambiente.

1.2 Metodologia

Este trabalho teve início com uma revisão bibliográfica sobre os principais temas que o compõem. Como fonte de pesquisa foram utilizados artigos científicos, relatórios técnicos, livros e trabalhos acadêmicos que tratam sobre Ontologias, Ambientes de Desenvolvimento de Software, Processo de Software e Qualidade de Software. A partir desse estudo, constatou-se a evolução de diversos conceitos relacionados com o domínio de processos de software. Dessa forma, a Ontologia de Processo de Software, publicada originalmente em (FALBO, 1998) e que compõe a base de ontológica de ODE, teve que ser revisada para incluir e adequar-se a novos conceitos. Um dos objetivos da ontologia é determinar um vocabulário comum acerca de um domínio, descrevendo a conceituação que envolve esse domínio. Dessa forma, para avaliar os conceitos da ontologia e sua aderência à literatura sobre processos de software, foi feito um mapeamento dos conceitos da ontologia com os conceitos envolvidos nas principais normas e modelos de qualidade de software existentes. O próximo passo foi avaliar a infra-estrutura de processos de software de ODE, analisando o impacto que a revisão da ontologia teria na abordagem de processos de software

adotada em ODE. Outro insumo para a evolução da infra-estrutura de processos de ODE foi a implantação, em caráter experimental, desse ambiente em uma organização de desenvolvimento de software. Do feedback dado por ela, verificou-se a necessidade de incorporar novas funcionalidades. Assim, a ferramenta de definição de processos do ambiente (BERTOLLO e FALBO, 2003) teve que ser revisada para atender aos novos conceitos da ontologia e aos novos requisitos identificados para a infra-estrutura de processos de ODE. O texto da dissertação foi elaborado à medida que o trabalho avançava, documentando os resultados dos estudos realizados, as técnicas utilizadas e as soluções adotadas, servindo inclusive de base para outros trabalhos. Parte do trabalho realizado foi publicado nos anais do I Workshop on Vocabularies, Ontologies and Rules for the Enterprise (VORTE’2005), realizado em Enschede, Holanda, em setembro de 2005, no artigo intitulado “Establishing a Common Vocabulary for Software Organizations Understand Software Processes” (FALBO e BERTOLLO, 2005). Esse trabalho foi convidado para ser submetido em versão estendida para a revista International Journal of Business Process Integration and Management, tendo sido submetido sob o título “A Software Process Ontology as a Common Vocabulary about Software Processes”, em março de 2006. Outro artigo oriundo desta trabalho, intitulado “Definição de Processos de Software em um Ambiente de Desenvolvimento de Software Baseado em Ontologias” (BERTOLLO et al., 2006), foi aceito para publicação nos anais do V Simpósio Brasileiro de Qualidade de Software (SBQS’2006).

1.3 Organização do Trabalho

Nesta dissertação há, além deste capítulo que apresenta a Introdução, mais quatro capítulos. O Capítulo 2 – Processos de Software – apresenta os conceitos do domínio de processos de software, descrevendo uma abordagem para tratamento de processos de software em diferentes níveis de abstração. Além disso, discute os principais aspectos relacionados à Qualidade de Software, apresentando as principais normas e modelos de qualidade de processo. Nesse capítulo também é discutida a automatização do processo de software por meio dos Ambientes de Desenvolvimento de Software e é apresentado ODE, ambiente no qual está inserido este trabalho.

2 Capítulo 2

Processos de Software

Um dos principais objetivos da Engenharia de Software é desenvolver sistemas com qualidade, dentro dos prazos estabelecidos e sem a necessidade de alocação de mais recursos. Para que tal objetivo seja alcançado, o foco não deve estar apenas nos produtos gerados, mas também no seu processo de desenvolvimento. A qualidade de um produto de software depende fortemente da qualidade do processo de software utilizado em seu desenvolvimento (FUGGETTA, 2000). Assim, a definição de um processo de software é um requisito básico para se chegar a produtos de qualidade. Porém, a definição de um processo de software não é uma tarefa trivial. Processos devem ser definidos caso a caso, levando-se em consideração as especificidades do projeto em questão. Deve-se considerar a adequação às tecnologias envolvidas, ao tipo de software em questão, ao domínio de aplicação, ao grau de maturidade (ou capacitação) da equipe em engenharia de software, às características próprias da organização e às características do projeto e do grupo de desenvolvimento (ROCHA et al., 2001). Embora diferentes projetos requeiram processos com características específicas para atender às suas particularidades, é possível estabelecer um conjunto de ativos de processo de software (software process assets) a ser utilizado na definição de processos de software de uma organização. Essas coleções de ativos de processo constituem os chamados processos padrão de software. Processos para projetos específicos podem, então, ser definidos a partir da instanciação de um processo de software padrão da organização, levando em consideração suas características particulares. Essa necessidade de estruturação, organização, documentação e descrição padronizada de processos de software vem se tornando prática de mercado, sendo advogada por diversas normas e modelos de qualidade, tais como ISO/IEC 12207 (ISO, 1995), CMMI (CHRISSIS et al., 2003) e o MPS.BR (SOFTEX, 2005). À medida que aumenta a complexidade dos sistemas a serem desenvolvidos, o processo de software torna-se também mais complexo e cresce a necessidade de automatizá-

lo, através da utilização de ferramentas. Porém, ferramentas isoladas podem oferecer apenas soluções parciais, enquanto o que se deseja é utilizar ferramentas de apoio ao longo de todo o processo de desenvolvimento de software. Surgem, então, os Ambientes de Desenvolvimento de Software (ADSs), que podem ser descritos como coleções de ferramentas integradas que facilitam as atividades da engenharia de software, durante todo o processo ou pelo menos em porções significativas dele (HARRISON et al., 2000). Uma evolução desses ambientes são os ADSs Centrados em Processo, que integram ferramentas de apoio ao desenvolvimento de artefatos com ferramentas de apoio à modelagem e execução de processos de software, utilizadas na construção desses artefatos (HARRISON et al., 2000). A representação explícita de processos, seus produtos e suas interações é a base sobre a qual os modernos ambientes de desenvolvimento são construídos. Provendo formas mais poderosas de descrever e implementar processos de software, ADSs centrados em processo têm provido também um poderoso meio de integrar processos e ferramentas, e de automatizar, pelo menos parcialmente, tarefas (HARRISON et al., 2000). Este capítulo procura dar uma visão geral dos conceitos relativos a processos de software. A seção 2.1 discute aspectos relacionados à definição de processos de software. Na seção 2.2 é discutida a qualidade de processos de software, apresentando os principais modelos e normas de qualidade de processo. Na seção 2.3, o enfoque está na automatização de processos de software, sendo discutidos os ambientes de desenvolvimento de software e a evolução por que tem passado essa classe de sistemas. Apresenta, ainda, o ambiente ODE (Ontology-based software Development Environment) (FALBO et al., 2003), ambiente no qual este trabalho foi desenvolvido. Finalmente, a seção 2.4 apresenta as conclusões deste capítulo.

2.1 Definição de Processos de Software

Um processo de software pode ser definido como um conjunto coerente de políticas, estruturas organizacionais, tecnologias, procedimentos e artefatos necessários para conceber, desenvolver, implantar e manter um produto de software (FUGGETTA, 2000). Um processo de software bem definido deve indicar as atividades a serem executadas, os recursos

Definição do Processo Organizacional

Normas, Modelos de Qualidade e Cultura Organizacional

Especialização do Processo Padrão

Tipo de Software, Paradigma, Domínio do Problema

Instanciação do Processo de Projeto

Características do Projeto e da Equipe

Processos de Software de Projeto

Processos de Software Padrão Especializados

Processo de Software Padrão da Organização

Figura 2.1 – Abordagem em Níveis para a Definição de Processos. Em uma abordagem de definição de processos em níveis, inicialmente a organização define seu processo de software padrão, contemplando apenas os ativos de processo essenciais (atividades, artefatos, recursos e procedimentos) que devem ser incorporados a quaisquer processos da organização. Idealmente, o processo padrão da organização deve ser definido considerando padrões e modelos de qualidade, como CMMI e ISO/IEC 12207. Além disso, a cultura organizacional e a prática da organização em engenharia de software influenciam diretamente na definição do seu processo de software padrão. Conforme citado anteriormente, para acomodar todos os projetos, esse processo estará em um nível de abstração muito alto, normalmente, ainda dando muito trabalho para que um gerente de projeto o adapte para seu projeto específico. Mas em uma organização pode ocorrer de muitos projetos serem realizados para um mesmo tipo de software (sistemas de informação, aplicações Web etc) ou seguindo um mesmo paradigma (por exemplo, orientado a objetos - OO). Assim, no nível intermediário, o processo padrão da organização pode ser especializado para considerar algumas classes de tipos de software, paradigmas ou domínios de aplicação. Durante a especialização, ativos de processo podem ser adicionados ou modificados de acordo com o contexto da especialização. Por último, o processo padrão especializado mais indicado pode ser instanciado para um projeto específico. Durante a instanciação do processo de projeto, particularidades desse projeto e características da equipe devem ser levados em conta. Nesse momento, o modelo de

ciclo de vida deve ser definido e novas atividades, assim como artefatos consumidos e produzidos, recursos requeridos e procedimentos, podem ser adicionados. É importante ressaltar que estabelecer um processo bem definido para um projeto de software não garante a qualidade do produto final, contudo aumenta consideravelmente a probabilidade de se obter, ao término de sua execução, um produto de software que atenda aos requisitos levantados. Conhecer o processo significa conhecer como os produtos são planejados e produzidos. A partir da definição de processo, é possível fazer medições e coletar dados de execução, dando visibilidade aos gerentes do andamento dos projetos.

2.2 Qualidade de Processos de Software

Organizações bem sucedidas melhoram continuamente seus processos. Com a definição de um processo padrão organizacional, a melhoria sistemática dos processos é mais efetiva e eficiente se guiada por normas e modelos de qualidade de processo. A finalidade da maioria desses padrões é ajudar as organizações de software a conseguir a excelência seguindo processos e atividades adotados por organizações com alto grau de maturidade. Contudo, não é fácil selecionar os padrões apropriados. Existem muitas opções com uma grande sobreposição entre elas. Muitas vezes, é vantagem para uma organização de software usar ou implementar mais de um padrão ao mesmo tempo. Nessa situação, é melhor implementá-los simultaneamente. Tal abordagem permite aos engenheiros de processo maximizar os pontos fortes de um padrão e diminuir suas fraquezas (MUTAFELIJA, STROMBERG, 2003). A seguir, é apresentado um breve resumo das principais normas e modelos de qualidade, a saber: ISO 9000, ISO/IEC 12207, ISO/IEC 15504, CMMI e MPS.BR. Além desses modelos e normas, o modelo do Processo Unificado da Rational (Rational Unified Process – RUP) é também descrito, dada a sua ampla disseminação e aceitação.

2.2.1 ISO 9000

Em 2000, uma revisão da família de normas ISO 9000 – Sistemas de gestão da qualidade – foi publicada, substituindo a versão anterior, cuja versão em português da ABNT