do que no passado. Foi proposto que o desenvolvimento de software deixasse de ser puramente artesanal e passasse a ser baseado em principios de Engenharia, ou seja, seguindo um enfoque estruturado e metodico. Assim, surgiu o termo Engenharia de Software, que se refere ao desenvolvimento de software por grupos de pessoas, usando principios de engenharia e englobando aspectos tecnicos e nao-tecnicos, de modo a produzir software de qualidade, de forma eficaz e dentro de custos aceitaveis.Portanto, a Engenharia de Software engloba nao apenas o desenvolvimento de programas, mas tambem toda a documentacao necessaria para o desenvolvimento, instalacao, uso e manutencao dos programas. O temo ciclo de vida de software compreende todas as etapas, desde a concepcao inicial do software, ate a sua implementacao, implantacao, uso e manutencao, de modo que, ao final de cada uma destas etapas, um ou mais documentos sao produzidos.Engenheiros de software devem adotar uma abordagem sistematica e organizada para seu trabalho e usar ferramentas e tecnicas apropriadas, dependendo do problema a ser solucionado, das restricoes de desenvolvimento e dos recursos disponiveis. Alem das tecnicas de especificacao e implementacao de software, os engenheiros de software devem ter conhecimento tambem de outras tecnicas como, por exemplo, de gerenciamento de software. Dessa forma, aumenta-se a probabilidade de produzir software de grande porte com qualidade, ou seja, software que satisfaca os requisitos do usuario, bem como as expectativas de tempo e de orcamento.As ODSs (Organizacoes de Desenvolvimento de Software)[1], com o intuito de minimizar os problemas do desenvolvimento do software, tem geralmente adotado metodologias de desenvolvimento de software. Todavia, os paradigmas metodologicos para desenvolvimento de software tem sido considerados somente em termos de um metodo de analise/projeto/implementacao, isto e, um conjunto de conceitos, tecnicas e notacoes. Essa visao elimina os aspectos tecnologicos, contextuais e organizacionais que potencialmente existem dentro de um processo de software.Os ambientes tradicionais das ODSs geralmente suportam apenas a engenharia do produto, assumindo um processo implicito e tendo como foco principal o produto. Essa visao tem limitado as ODSs no que diz respeito a tomada de decisoes, ao estabelecimento e arquivamento de metas organizacionais, a determinacao de pontos para melhoria, a estipulacao de prazos para entrega de produtos e a obtencao de uma certificacao. O capitulo 2 apresenta os aspectos evolutivos das ODSs e seus produtos de software.De forma geral, pode-se dividir as funcoes de uma ODS em tres grupos principais [Garg1996][2]:1. Definir, analisar, simular, medir e melhorar os processos da organizacao; 2. Construir o produto de software;3. Medir, controlar, modificar e gerenciar os projetos de software.Estes tres grupos sao abordados, respectivamente, pela Engenharia de Processo, pela Engenharia de Produto e pelo Gerenciamento de Projeto. O relacionamento entre estes grupos e mostrado na Figura 1.1. Figura 1.1: Relacionamento entre engenharia de processo, gerenciamento de projeto e engenharia do produtoA engenharia de processo tem como meta a definicao e a manutencao dos processos da ODS. Ela deve ser capaz de facilitar a definicao, a analise e a simulacao de um processo, assim como estar apta a implanta-lo, avalia-lo, medi-lo e melhora-lo. A engenharia de processo trata os processos de software