MODELOS DE QUALIDADE DE SOFTWARE - PDF
Download "MODELOS DE QUALIDADE DE SOFTWARE"
Luiz Henrique Barroso Abreu
1 UNIVERSIDADE FEDERAL DO ESTADO DO RIO DE JANEIRO ESCOLA DE INFORMÁTICA APLICADA CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO MODELOS DE QUALIDADE DE SOFTWARE LUIZ FERNANDO SALGUEIRO E MARCUS VINÍCIUS DO ARTE ORIENTADOR: PROF. MARCIO BARROS Agosto 2005
2 MODELOS DE QUALIDADE DE SOFTWARE Projeto de Graduação apresentado à Escola de Informática Aplicada da Universidade Federal do Estado do Rio de Janeiro (UNIRIO) para obtenção do título de Bacharel em Sistemas de Informação LUIZ FERNANDO SALGUEIRO E MARCUS VINÍCIUS DO ARTE ORIENTADOR: PROF. MARCIO BARROS 2
3 Sumário 1 Introdução Objetivos Estrutura do texto Qualidade de Software Processo Projeto Ciclo de Vida Controle da Qualidade Garantia da Qualidade Qualidade dos Produtos de Software Métricas Conclusão Norma Norma ISO Histórico das normas ISO Norma ISO Processos fundamentais Processos de apoio Processos organizacionais NBR ISO/IEC Subcaracterísticas de Qualidade de Software segundo a ISO/IEC ISO 9001: Responsabilidade da Administração Gerenciamento dos Recursos Realização do Produto Medição, Análise e Melhoria Modelo de Qualidade CMM-Capability Maturity Model Maturidade Níveis Descrição dos Níveis CMM
4 3.6.4 Entendendo os níveis de maturidade CMMI Conclusão Referências Bibliográficas
5 Lista de Figuras Figura 1 Processo de software Figura 2 Histórico Normas ISO Figura 3 Processo do ciclo do vida do software Figura 4 Características da qualidade de software Figura 5 Ciclo PDCA Figura 6 Organizações maduras X Organizações imaturas Figura 7 Níveis de Maturidade Figura 8 Organizações certificadas
6 Resumo As necessidades e exigências de mercado têm influenciado as empresas produtoras e prestadoras de serviços de software a alcançar alto patamar de qualidade e produtividade para enfrentarem a competitividade no setor. Muitas dessas organizações buscam novos paradigmas que conduzam a uma melhoria contínua e progressiva da qualidade de seus processos, atenuando os problemas no desenvolvimento de seus produtos. Pensando nisso, resolvemos realizar uma pesquisa sobre a qualidade de software e os principais padrões existentes, hoje, no mercado. Serão apresentadas abordagens importantes, sobre as normas ISO 9000, os modelos CMM e CMMI, destacando suas principais características e aplicabilidade. O tema proposto faz parte do cotidiano da organização em que trabalhamos, sendo considerado um de nossos objetivos em relação ao plano de carreira profissional. Acreditamos que este foi um dos grandes fatores de motivação para a pesquisa realizada. 6
7 1 Introdução A Engenharia de Software, embora possua várias definições, é uma disciplina que pode ser vista de forma objetiva como o uso dos princípios básicos da engenharia com a finalidade de desenvolver software de maneira sistemática e econômica, resultando em produtos confiáveis e eficientes [Pressman, 2002]. Ela agrega três elementos fundamentais: Métodos Fornecem uma base técnica de como construir o software. Os métodos incluem um amplo conjunto de tarefas, que abrange análise de requisitos, projeto, construção de programas, teste e manutenção. Métodos de engenharia de software repousam num conjunto de princípios básicos, que regem cada área da tecnologia e incluem também atividades de modelagem; Ferramentas Oferecem suporte aos métodos. Quando ferramentas são integradas, de modo que a informação criada por uma delas possa ser usada por outra, um ambiente para apoio ao desenvolvimento de software é estabelecido; Processos Estabelecem as ligações ente os métodos e as ferramentas. O processo é o adesivo que mantém unidas as camadas de tecnologia e permite o desenvolvimento racional e oportuno de sistemas para computadores. Obter qualidade nos processos e produtos de software não é uma tarefa trivial. O desconhecimento de ferramentas e a resistência aos processos internos dentro de um ambiente organizacional são alguns dos fatores que dificultam atingir os objetivos de qualidade. No entanto, nada é mais decepcionante do que produzir um software que não satisfaça as necessidades dos clientes.[maldonado, 2001] As características da organização, do pessoal técnico e do domínio da aplicação podem causar impacto na qualidade e na produtividade de processos e, consequentemente, dos produtos. Além de conhecer os métodos e processos de engenharia de software, é preciso saber como avaliá-los para propiciar uma base sólida à evolução do processo. A 7
8 disponibilidade de uma base histórica de dados abrangendo as diversas perspectivas e os fatores que afetam o desenvolvimento também é um elemento indispensável nesse cenário. 1.1 Objetivos Com base no conhecimento adquirido, este trabalho possui os seguintes objetivos: Compreender o papel da qualidade e a sua importância no de desenvolvimento de sistemas; Identificar os principais fatores para um produto de software de qualidade; Apresentar alguns modelos de qualidade do processo de desenvolvimento software, destacando seus principais tópicos. 1.2 Estrutura do texto Produzir software de qualidade exige, também, o entendimento do que é qualidade de software. A primeira parte do nosso trabalho foi baseada em uma pesquisa voltada para os conceitos de: qualidade, processo, ciclo de vida, projeto, controle e garantia da qualidade e, por último, métricas. Apresentaremos as partes envolvidas em cada um destes itens e suas principais características. O foco da segunda parte deste documento é direcionada aos modelos e normas para avaliação e melhoria de processos de software, visto que a conquista de uma certificação para uma empresa significa alcançar um padrão internacional de qualidade. 8
9 2- Qualidade de Software Qualidade é, fundamentalmente, a adequação ao uso; ou ainda, a totalidade das características de um produto ou serviço que se relacionam com sua capacidade de atender às necessidades de um cliente [Campos,1992]. A qualidade é atualmente o principal fator que o consumidor busca quando decide pela aquisição de um produto ou serviço e pode ser entendida como o atendimento das necessidades ou aspirações do usuário, seja ele uma pessoa ou uma empresa. A qualidade deve ser incorporada a um produto ou serviço e requer a conjugação de esforços de todos os membros de uma empresa, a integração de todas as funções e recursos que ela dispõe, desde a alta administração até o mais simples empregado. A estruturação de recursos, métodos, passos e equipamentos envolvidos com a qualidade constitui o sistema de qualidade da empresa. Demonstrar que a empresa é capaz de atingir e manter a qualidade de seus produtos e serviços e continuamente aperfeiçoá-la é um corolário deste esforço e, por sua repercussão na produtividade e competitividade, vem merecendo permanente cuidado das organizações líderes em suas áreas de atividade. O comprometimento com a política de qualidade é uma responsabilidade do mais alto nível da administração. Os elementos do sistema de qualidade devem estar estruturados para estabelecer um controle adequado e uma garantia sobre todos os processos operacionais que afetam a qualidade do produto ou serviço. Ações preventivas devem ser enfatizadas para que se evite a ocorrência de problemas sem sacrificar a capacidade de responder e de corrigir falhas que possam ocorrer. 9
10 2.1 Processo Negócios são viabilizados por intermédio de processos. Os processos, portanto, são importantíssimos em uma organização bem sucedida. É comum o entendimento de processo como uma seqüência de etapas executadas para realizar um determinado objetivo [Campos, 1992]. Em um ambiente organizacional existem diversos processos, de produção, de gerência, de controle, de planejamento estratégico, etc. Processos são a rede produtiva de uma organização, onde cada nó é um ponto de partida para outros novos processos, cada qual com suas características, peculiaridades e tecnologias específicas, mas onde todos concorrem para um único fim: o negócio. O processo de software envolve métodos, ferramentas e pessoas. Esse conjunto deve estar integrado para que um processo funcione de maneira eficaz. Para um processo funcionar corretamente, ele deve possuir: Procedimentos e métodos que descrevam a relação entre as tarefas; Ferramentas e equipamentos que ofereçam suporte à realização das tarefas, simplificando e automatizando o trabalho; Pessoas com perfil adequado, treinadas nos métodos e nas ferramentas para poderem realizar as atividades previstas, adequadamente. Figura 1 - Processo de Software (adaptado Paulk, 1995). 10
11 2.2 - Projeto Um projeto é um empreendimento temporário com o objetivo de criar um produto ou um serviço único. Pode ser considerado temporário porque possui um começo e um fim bem definidos. Pode ser único porque o produto ou serviço produzido é de alguma forma diferente de todos os outros produtos ou serviços semelhantes [Zwass, 1998]. É uma representação de engenharia de algo que vai ser construído. Os projetos são desenvolvidos em todos os níveis da organização e podem envolver uma única pessoa ou milhares delas. Os projetos têm um ciclo de vida formado por etapas distintas, que se subdividem em tarefas ou atividades que podem ou não ser executadas de uma única vez. Um projeto é composto por uma seqüência de atividades, cujo planejamento é essencial para que ele se encerre em um prazo e custo adequados. Projetos possuem um conjunto de etapas pelas quais progridem e, no final de cada etapa, um produto é concluído. O número de fases, seus nomes e seus inter-relacionamentos variam de caso a caso. De forma geral podemos dizer que um projeto possui quatro etapas genéricas [Zwass, 1998] : Conceitualização - formulação do escopo do projeto, definição do problema e de uma possível solução para o mesmo. Nesta fase é realizado um estudo da viabilidade e um plano estratégico é apresentado; Desenvolvimento - com base nos resultados e conclusões da fase anterior, iniciase o desenvolvimento dos componentes e a integração das partes envolvidas como um todo; Execução - é realizada uma simulação do que irá ser implementado. São feitos alguns testes para confirmar se o projeto foi construído corretamente dentro do que foi solicitado;. Finalização - é a considerada a última etapa tendo como objetivo corrigir os erros que foram identificados na fase anterior. Com base nos requerimentos completos produz-se um desenho final para a solução. 11
12 As partes envolvidas num projeto são indivíduos e organizações diretamente envolvidas ou aqueles cujos interesses podem ser afetados, de forma positiva ou negativa, no decorrer do seu desenvolvimento ou mesmo após a sua conclusão. Essas partes podem também exercer variadas influências no projeto e nos seus resultados [PMBOK, 2003]. A equipe de gerência do projeto deve identificar as partes envolvidas, conhecer suas necessidades, expectativas e, então, gerenciar e influenciar os requisitos de forma a garantir o seu pleno sucesso. Vejamos quais são as partes envolvidas em um projeto: Gerente do projeto indivíduo responsável pela gerência do projeto; Cliente indivíduo ou organização que fará uso do produto do projeto. Podem existir muitos tipos de clientes. Por exemplo, os clientes de um novo produto farmacêutico incluem os médicos que o prescrevem, os pacientes que o tomam e as companhias de seguro que pagam por ele. Em muitas áreas de aplicação, clientes e usuários são sinônimos, enquanto em outras o termo cliente se aplica à entidade que comprou o resultado do projeto, enquanto usuários são aqueles que usarão diretamente o produto do projeto; Organização executora empresa cujos funcionários estarão mais diretamente envolvidos na execução do projeto; Membros da equipe do projeto o grupo que realiza o trabalho do projeto; Patrocinador indivíduo ou grupo dentro da organização executora que provê os recursos financeiros, em dinheiro ou espécie, para o projeto. No contexto da engenharia de software, a maioria das organizações encontra os seguintes projetos: [Pressman,2002] Projetos de desenvolvimento conceitual: são iniciados para explorar algum conceito novo de negócio ou a aplicação de alguma tecnologia nova; Projetos de desenvolvimento de novas aplicações: são efetuados como conseqüência de um pedido específico de cliente; 12
13 Projetos de aperfeiçoamento de aplicações: ocorrem quando o software existente passa por modificações importantes na função, desempenho ou interfaces que são observáveis pelo usuário final; Projetos de manutenção de aplicações: corrigem, adaptam ou ampliam o software existente em aspectos que não são imediatamente óbvios ao usuário final; Projetos de reengenharia: são efetuados com o objetivo de reconstruir um sistema existente (herdado) no seu todo ou em parte Ciclo de Vida O conjunto de fases de um projeto é conhecido como ciclo de vida do projeto [PMBOK, 2003]. Um projeto normalmente é dividido em várias fases visando um melhor controle gerencial e uma ligação mais adequada de cada um dos seus processos operacionais. No ciclo de vida dos projetos, alguns pontos são definidos: que trabalho deve ser realizado; quem deve estar envolvido em cada fase; qual o valor estimado do seu custo; quais as datas de início e conclusão das atividades; quais os riscos etc. O processo do ciclo de vida de software tem como principal objetivo fornecer uma estrutura comum para que o adquirente, fornecedor, desenvolvedor, mantenedor, operador, gerentes e técnicos envolvidos com o desenvolvimento de software utilizem uma linguagem comum. Esta linguagem comum é estabelecida na forma de processos bem definidos. Os processos que envolvem o ciclo de vida do desenvolvimento de um produto de software são agrupados em três classes que representam sua natureza: processos fundamentais, processos de apoio e processos organizacionais [ISO 12207]. Cada processo é definido em termos de suas próprias atividades, e cada atividade é definida em termos de suas tarefas. Uma abordagem mais detalhada sobre essas três classes será apresentada nos próximos capítulos. 13
14 2.4 Controle da Qualidade O controle da qualidade é um modelo gerencial centrado no controle do processo, tendo como meta a satisfação das necessidades das pessoas [Campos,1992]. O objetivo mais importante deste controle é garantir a qualidade do produto para o seu cliente externo ou interno. A prática consciente do controle de qualidade por todas as pessoas da empresa, assumindo responsabilidades sobre os resultados ( do seu processo) e autoridade (meios) sobre o seu processo, é a base do gerenciamento participativo e o pilar de sustentação para o controle da qualidade [Campos,1992]. O controle da qualidade possui três objetivos principais : Planejar a qualidade desejada pelos clientes: isto implica num esforço de localizar o cliente, saber de suas necessidades, traduzir estas necessidades em características mensuráveis, de forma que seja possível gerenciar todo processo; Manter a qualidade desejada pelo cliente, cumprindo os padrões previamente acordados; Melhorar a qualidade desejada pelo cliente: neste caso é preciso localizar os resultados indesejáveis e utilizar um método de solução de problemas com a finalidade de melhorá-los. O controle da qualidade envolve também a monitoração dos resultados específicos do projeto, para determinar se eles estão de acordo com os padrões de qualidade previamente estabelecidos, além de identificar formas de eliminar as causas dos resultados insatisfatórios. Este controle deve ser executado ao longo de todo o projeto. 14
15 2.5 Garantia da Qualidade A garantia da qualidade é um processo sistemático de verificação para certificar-se de que a inspeção da qualidade e as operações de controle estão sendo conduzidas de forma correta, além de verificar também se os setores de projeto, produção e vendas estão trabalhando em conjunto, alinhados a um mesmo objetivo [Maldonado,2001]. Essa prática é considerada uma atividade essencial para qualquer negócio onde um produto ou serviço será colocado no mercado e será comercializado. A meta da garantia da qualidade é fornecer à gerência os dados necessários para que fique informada sobre a qualidade do produto, ganhando compreensão e confiança de que a qualidade do produto está satisfazendo suas metas [Pressman, 2002]. A garantia da qualidade é conseguida pelo gerenciamento correto e obstinado de todas as atividades de qualidade em cada projeto e em cada processo, buscando, sistematicamente, eliminar totalmente as suas falhas, pela constante preocupação com a satisfação total das necessidades do consumidor e pela participação e responsabilidade de todos na empresa. Portanto, a garantia da qualidade envolve alguns pontos importantes [Campos,1992]: Tradição: um cliente só poderá comprar um produto ou serviço com confiança se a empresa tornar-se conhecida por sua confiabilidade ao longo do tempo. Não se consegue tradição da noite para o dia. A tradição é um conceito comercialmente tão importante que fica difícil avaliar os prejuízos decorrentes de um produto defeituoso colocado no mercado. Isto tem que ser evitado a todo o custo; Satisfação total das necessidades do consumidor: o produto ou serviço além de não possuir defeitos ou falhas, precisa satisfazer as características verdadeiras da qualidade, ou seja, satisfazer às expectativas do consumidor. Sob este aspecto, é bom lembrar que as expectativas do consumidor não são fixas; elas mudam. Daí o cuidado que se deve ter com propaganda comercial, conteúdo do catálogo de vendas e treinamento de pessoal, para que não sejam criadas expectativas negativas. 15
16 Para que uma empresa possa dizer que tem garantia da qualidade ela deve ser capaz de: [Campos,1992] Detectar necessidades humanas não atendidas; Especificar produtos/serviços que satisfaçam a estas necessidades; Projetar estes produtos/serviços ao mais baixo custo possível; Projetar e operar processos que fabriquem este produtos/serviços conforme as especificações, ao mais baixo custo; Inspecionar os produtos de tal forma a verificar a sua conformidade com as especificações; Dar assistência técnica e total atenção ao seu cliente, de tal forma a assegurar a sua satisfação por um longo tempo. 2.6 Qualidade dos Produtos de Software Qualidade de software pode ser vista como um conjunto de características que devem ser alcançadas em um determinado grau para que o produto atenda às necessidades de seus usuários [Weber, 2001]. Ao se desenvolver um produto de software, o objetivo não é alcançar a qualidade perfeita, mas sim a qualidade necessária e suficiente para o uso especificado, quando o produto for entregue e realmente usado pelos usuários [Maldonado,2001]. É necessário identificar quais são as características de qualidade necessárias para um determinado produto de software e definir em que grau essas características precisam ser alcançadas para satisfazer às necessidades dos usuários. Podemos classificar um produto de software segundo as seguintes características [Maldonado, 2001]: Funcionalidade: refere-se à existência de um conjunto de funções, que satisfazem às necessidades explícitas ou implícitas e suas propriedades específicas; 16
17 Confiabilidade: refere-se à capacidade de o software manter seu nível de desempenho sob condições estabelecidas, por um período de tempo; Usabilidade: refere-se ao esforço necessário para usar um produto de software, bem como o julgamento individual de tal uso por um conjunto explícito ou implícito de usuários; Eficiência: refere-se ao relacionamento entre o nível de desempenho do software e a quantidade dos recursos utilizados sob as condições estabelecidas; Manutenibilidade: refere-se ao esforço necessário para fazer modificações específicas no software; Portabilidade: refere-se à capacidade do software ser transferido de um ambiente para o outro; Efetividade: refere-se à capacidade do produto de software possibilitar aos usuários atingir metas especificadas com acurácia e completeza em um contexto de uso especificado; Produtividade: refere-se à capacidade de possibilitar aos usuários utilizar uma quantidade adequada de recursos; Segurança: refere-se à capacidade de oferecer níveis aceitáveis de risco de danos a pessoas, negócios, software, propriedade ou ao ambiente especificado; Satisfação: refere-se à capacidade de satisfazer os usuários em um contexto de uso especificado. Muito tem sido escrito sobre qualidade e seus vários adjetivos. No entanto, o fundamental é que o software seja confiável, ou seja, que seja eficaz e siga os padrões exigidos pelo contexto onde irá atuar. 17
18 2.7 Métricas As métricas e estimativas de software vêm se tornando um dos principais tópicos na Engenharia de Software com a crescente exigência de seus consumidores pela qualidade, rapidez, comodidade e baixo custo de implantação e manutenção. É impossível não enxergar tais técnicas como alavanca para um produto de melhor qualidade, com custos adequados [Pressman, 2002]. Quando falamos de métricas, então, temos que ter em mente que se trata de dados (números) quantitativos que irão mostrar, em forma de indicadores, o estado atual de um determinado projeto [Pressman, 2002]. A busca pela qualidade utilizando métricas de software deve ser aplicada tanto às pessoas que produzem o produto quanto ao processo em que se desenvolve o mesmo produto. Com métricas podemos estimar prazos de entregas finais e ter uma visão global de todo o projeto. Um projeto de software é um processo de tomada de decisão, onde as métricas são usadas para fornecer uma base de identificação de procedimentos que não estejam em conformidade com os alvos pretendidos e com as medidas de atributos de projetos, além de auxiliar na elaboração de novas soluções, que levam à melhoria da qualidade. Quando falamos em métricas, devemos destacar os seguintes aspectos [Maldonado,2001] : Tempo: tempo total do projeto, tempo nas fases de análise, projeto, codificação testes, tempo em reuniões, tempo em retrabalho; Precisão da estimativa de cronograma: precisão da estimativa de cronograma de todo o projeto e de suas fases; Esforço: esforço total do projeto, dos recursos, de pessoal, esforço em reuniões de revisão, esforço em retrabalho; Tamanho do sistema: número de linhas de código; pontos de função ; 18
19 Número de erros: número de erros na especificação de requisitos e no projeto do sistema, encontrados em reuniões de revisão, erros de código, encontrados nos teste de unidade; Número de modificações: número de modificações na especificação de requisitos, projeto ou código após sua aprovação; Densidade de defeitos: número de erros somados ao número de modificações em relação ao tamanho do sistema; Rotatividade de pessoal: percentual de pessoas que saíram, entraram ou mudaram de função durante o desenvolvimento do projeto; Produtividade: número de códigos produzidas por unidade de esforço; Deterioração do software: relação entre o esforço gasto para corrigir os problemas após a liberação do sistema comparado ao esforço gasto antes da liberação do software para o usuário; Experiência da equipe: experiência na linguagem de programação, no domínio da aplicação, nas ferramentas, no método e no processo de desenvolvimento, tempo total de experiência do profissional. 2.8 Conclusão Vivemos, nos dias de hoje, tempo de mudanças. Mudanças muito rápidas e também muito radicais. Novas tecnologias se tornam obsoletas da noite para o dia. Processos sofrem modificações a todo o momento interferindo, nos produtos e serviços que são oferecidos a um mercado cada vez mais competitivo. Nas empresas, os custos são rigorosamente contabilizados. A realidade mostra, ainda, que os menores preços e a qualidade são diferenciais importantíssimos para uma clientela extremamente exigente. Dentro desse contexto, as empresas especializadas no desenvolvimento de software, obrigatoriamente, têm que se manter atualizadas, perseguir os critérios de qualidade 19
20 exigidos pelo mercado, incorporando sempre tecnologias mais apropriadas, a fim de poder enfrentar, com sucesso, a feroz competitividade da atualidade. No capítulo seguinte, trataremos de melhoria na qualidade do processo de desenvolvimento de software através de padrões e normas mais conceituados do mercado. Veremos que algumas características, tradicionalmente aceitas, são muito importantes para que se obtenha vantagens consideráveis sobre seus concorrentes. 20
21 3 - Norma Uma norma é um documento estabelecido por consenso e aprovado por um organismo reconhecido, que fornece, para o uso comum e repetitivo, regras, diretrizes ou características para atividades ou resultados, visando à obtenção de um grau ótimo de ordenação em um dado contexto [ABNT-Associação Brasileira de Normas Técnicas,1996 ]. As normas são aprovadas por consenso por seus comitês técnicos, que partem de práticas já em andamento, reunindo as experiências dos diversos países-membros. O processo adotado faz com que estas normas sejam empregadas em praticamente todo o mundo, facilitando o intercâmbio dos produtos e serviços entre os países que a adotam Norma ISO A sigla ISO representa uma organização internacional, não governamental, que elabora normas internacionais. Ela significa Organização Internacional para Normalização (International Organization for Standardization). A sigla é uma referência à palavra grega ISO, que significa igualdade. O propósito das normas ISO é desenvolver e promover preceitos e padrões mundiais que traduzam o consenso dos diferentes países do mundo de forma a facilitar o comércio internacional [Maldonado,2001]. No Brasil, a Associação Brasileira de Normas Técnicas (ABNT) é a representante brasileira das normas ISO. Com a remoção de barreiras comerciais entre os países, novos aspectos nas relações comerciais estão sendo considerados. Há indícios de que a implantação das normas ISO seja um fator relevante à concretização de negócios em diversas partes do mundo: nos Estados Unidos, na Europa, na Ásia e na América Latina, principalmente em relação às transações comerciais do MERCOSUL. Os representantes de diferentes países discutem, analisam e buscam o consenso quanto ao conteúdo das normas ISO. 21
22 3.2 - Histórico das normas ISO Durante os anos oitenta, a maioria das empresas fazia uso de TI (Tecnologia da Informação) para apoiar processos internos (ex. finanças, recursos humanos etc) de modo independente, desconectado de seus processos de negócios. O objetivo dos sistemas de qualidade daquela época era o controle da qualidade dos produtos. A década de 90 mostra as empresas começando a usar TI para apoiar seus processos de negócio, com foco na cadeia produtiva (ex. produção, distribuição e gestão empresarial). Nesse período, o objetivo das empresas mudou, passando do controle de qualidade de produtos para a garantia da qualidade de processos relacionados a projetos, desenvolvimento, produção, instalação e serviços associados. A primeira versão das normas internacionais ISO 9001, 9002 e 9003 para a garantia da qualidade foi lançada em A seguir, um breve histórico: Figura 2 - Histórico Normas ISO. Fonte: ISO série Ao alcance de todos - 8ª edição. MCG Qualidade. 22
23 O uso das normas ISO cresceu rapidamente no Brasil. No ano de 1990, apenas 13 empresas possuíam 18 certificados ISO Já no ano de 2000, empresas detinham certificados [Weber, 2001], números esses que não param de crescer. No período de 2000 a 2009, as empresas deverão usar TI como parte integrante dos processos de negócios ligados à cadeia de demanda (ex. relacionamento com clientes, gerência de contas, serviços de pós-venda e processamento de pedidos). Com a nova ISO 9001 versão 2000, os sistemas de gestão de qualidade deverão mudar o seu objetivo da garantia da qualidade para a satisfação dos clientes [Campos,1992]. O processo de certificação de uma empresa de software segundo as normas ISO 9001 segue um conjunto de passos bem definido [ISO, 2000] 1º A empresa estabelece o seu sistema de qualidade; 2º A empresa faz uma solicitação formal a um órgão certificador, incluindo detalhes do negócio da empresa, escopo da certificação solicitada e cópia do manual de qualidade; 3º O órgão certificador faz uma visita à empresa, colhe mais dados e explica o processo de certificação; 4º O órgão certificador verifica se a documentação do sistema de qualidade está de acordo com a norma ISO; 5º O órgão certificador envia uma equipe à empresa com fins de auditoria. Nesta visita, será verificado se todos na empresa cumprem o que está documentado no manual de qualidade; 6º O órgão certificador emite o certificado de qualidade; 7º O órgão certificador realiza visitas periódicas à empresa para assegurar que o sistema continua sendo efetivo Norma ISO Sob o título de Information Technology - Software Life Cycle Process ( tecnologia da informação - Processos de Ciclo de Vida de Software), a ISO foi criada para estabelecer uma estrutura comum de processos, sendo utilizada como referência em 23
24 negócios relacionados a produtos de software [Maldonado,2001]. O desenvolvimento e manutenção do software devem ser conduzidos de forma semelhante a engenharia, ou seja, este padrão formaliza a arquitetura do ciclo de vida do software, que é um assunto básico em Engenharia de Software. A Norma NBR ISO/IEC Processos do Ciclo de Vida do Software tem como principal objetivo fornecer uma estrutura comum para que o comprador, fornecedor, desenvolvedor, mantenedor, operador, gerentes e técnicos envolvidos com o desenvolvimento de software utilizem uma linguagem comum. Esta linguagem comum é estabelecida na forma de processos bem definidos [NBR ISO/IEC 12207]. Esta norma agrupa os processos de ciclo de vida do software em três classes, Processos Fundamentais, Processos de Apoio e Processos Organizacionais. Figura 3 - Processos de ciclo de vida do software [ISO 12207]. 24