Baixe o app para aproveitar ainda mais
Prévia do material em texto
AULA 1 Qualidade de Software, o que é? O conceito de Qualidade de Software pode ser considerado como um processo sistemático que focaliza todas as etapas e artefatos produzidos com o objetivo de garantir a conformidade de processos e produtos especificados, prevenindo e eliminando defeitos. Existem diversas definições para qualidade e, na visão simples de algumas pessoas, estas a definem como sendo: estar em conformidade com os requisitos dos clientes. antecipar e satisfazer os desejos dos clientes. escrever tudo o que se deve fazer e fazer tudo o que foi escrito. E ainda, segundo Pressman (1995, pg. 724): Conformidade a requisitos funcionais e de desempenho explicitamente declarados a padrões de desenvolvimento claramente documentados e a características implícitas que são esperadas de todo software profissionalmente desenvolvido. Destaca-se que Pressman (2002), faz referência a padrões de desenvolvimento explicitamente documentados, ou seja, refere-se à aplicação por órgãos especializados, de normas conjuntas que registrem as próprias condições e objetivos propostos pelo desenvolvedor. Da mesma forma, o autor cita as características implícitas, que significam aplicação de normas conjuntas com vistas a atender as diferenças entre os usuários, a evolução do tempo, as éticas, as questões de segurança e outras visões subjetivas do software desenvolvido. Para ajudar nessa questão, a International Organization for Standardization – ISO e a International Electrotechnical Comission – IEC, orgãos normalizadores com importância internacionalmente reconhecida no setor de software, se uniram para editar normas internacionais conjuntas para os mais diversos setores, no mundo inteiro. Essas normas podem ser, no que diz respeito a sua origem: Nivel Internacional - Normas como as da ISO e IEC, resultantes da cooperação e acordo entre determinado número de nações com interesses comuns. Nivel Regional - Normas estabelecidas por um limitado grupo de países de um mesmo continente para benefício mútuo e normas editadas após consenso dos interessados em um país por uma organização nacional de normas que seja reconhecida como autoridade no respectivo país. Por ser assim, Pressman (2002) complementa que: Os requisitos de software são a base da medição da qualidade. Os padrões especificados (standards) definem um conjunto de critérios de desenvolvimento. Existe um conjunto de características implícitas não mencionadas: o Facilidade de uso; o Boa manutenção . Por outro lado, Sommerville (2007) estabelece que o gerenciamento de qualidade está estruturado em três atividades principais: GARANTIA DE PLANEJAMENTO DE CONTROLE DE Padrões que conduzem a um software de alta qualidade Seleção de procedimentos e padrões apropriados adaptados para um projeto de software específico. Aprovação de processos que assegurem que o desenvolvimento de software tenha seguido corretamente os procedimentos e padrões de qualidade de projeto. Enfim, nesta visão, os padrões exigidos devem englobar boas práticas para que sejam gerados produtos de alta qualidade. Dessa forma, acredita-se que há muito mais gerenciamento de qualidade do que padrões e burocracia associada para assegurar que os padrões foram seguidos. Complementa o autor que a base do gerenciamento da qualidade advém de aspectos intangíveis tais como a elegância, a capacidade de leitura do código e da documentação de qualidade gerada ao longo da existência de um software. A documentação de qualidade deve variar de acordo com o tamanho do software tendo como propósito a comunicação entre a equipe que participa do desenvolvimento do software. Qualidade de Produto X Qualidade de Processo de Software A qualidade de um sistema de software pode ser entendida sob diversas formas e, utilizando-se de diferentes abordagens. Assim, um conjunto de normas que tratam deste assunto no âmbito da ISO, estabelece um modelo de qualidade com os seguintes componentes: Processo de desenvolvimento - Cuja qualidade afeta a qualidade na forma como o produto de software foi gerado. Qualidade em uso - Consiste na qualidade percebida pelo usuário e na aferição da qualidade do software em cada contexto específico de usuário. Produto - Compreende os atributos de qualidade e dividem-se em atributos internos e externos, que se diferenciam pela forma como são aferidos (interna ou externamente ao produto de software) e, em conjunto, compõem a qualidade do produto de software em si. Destaca-se que a qualidade do processo contribui para a melhoria da qualidade do produto, que, por sua vez, contribui para a melhoria da qualidade em uso: >>>>>>>>>>Influencia Qualidade de Processo Atributos de Qualidade Interna Atributos de Qualidade Externa Atributos de Qualidade em uso <<<<<<<<<Depende Qualidade do software na visão do usuário Até aqui, abordamos o conceito de qualidade com foco no processo de desenvolvimento do software e no produto final, agora, trataremos de uma importante questão: a visão do usuário do software. Muitas vezes os desenvolvedores de software se esquecem das necessidades implícitas de seus clientes, questões tais como: O cliente pode ter desejos e necessidades diferentes em relação ao mesmo tipo de produto? E qual o interesse dos usuários de software? Em primeiro lugar, vamos considerar que o efeito da globalização expandiu o elenco de atores no mercado aumentando a oferta de produtos, tornando assim o cliente mais consciente de seu poder. Dessa forma, esse novo cliente vai demandar por produtos e processos de software de melhor qualidade. AULA 2 Existe uma imensa variedade de coisas diferentes que podem ser medidas sob vários aspectos. A medição ajuda a tornar visíveis características específicas de processos e produtos. Sendo assim, os fatores que afetam a qualidade de software podem ser categorizados em grupos de fatores que podem ser medidos diretamente (unidade de tempo) ou apenas indiretamente (usabilidade ou manutenibilidade). A intenção em cada um dos grupos de fatores é a medição e a comparação de software com algum dado e obter uma indicação de qualidade. A garantia da qualidade de software (Software Quality Assurance – SQA) trata-se de uma atividade “guarda-chuva”, aplicada ao longo de todo o processo de engenharia de software. Abrange uma série de tarefas vinculadas especificamente a sete atividades que compõem um plano que realiza avaliações, auditorias, revisões, define padrões para o projeto, procedimentos para relato, acompanhamento de erros, documentação necessária e realimenta a equipe com informações conclusivas do projeto. Aplicação de métodos e ferramentas técnicas - O estudo dos métodos e ferramentas técnicas de análise, projeto, codificação e teste são atribuídos aos princípios fundamentais da análise de requisitos de software de sistemas. Ajudam o analista e o projetista a produzirem um projeto de elevada qualidade. Atividade Central de Revisão técnica formal(Formal Technical Review – FTR) - Tem o propósito único de descobrir problemas de qualidade. Essa atividade é específica da equipe técnica e, em muitas situações, tem descoberto que as revisões são tão efetivas quanto os testes para detecção de problemas de qualidade. Atividade de Teste de Software - Conhecida como “rede de segurança” de garantia de software, combina uma série de métodos de projetos de casos de testes que auxiliam a garantir uma detecção de erros efetiva. As atividades de teste aplicadas de forma cuidadosa revelam a maioria dos erros, aliviando a necessidade de outras atividades de SQA. Porém, considera-se atualmente que não seja a mais efetiva para todas as classes de erros. Padrões e procedimentos formais - São aplicados no processo de engenharia de software e validados pelos desenvolvedores quanto ao cumprimento dos padrões exigidos pelo software. Em alguns casos, o grupo de SQA poderealizar uma auditoria independente do atendimento aos padrões exigidos. Atividades de Controle de Mudanças - Formaliza pedidos de mudança, avalia a natureza da mesma e controla o respectivo impacto que ela pode causar. O controle de mudança é aplicado durante o desenvolvimento de software e após a manutenção do software. Medição de Software - Coleta um conjunto de medidas técnicas e orientadas para a administração das especificações do software. Anotação e manutenção de registros(documentação) - É essencial para a garantia da qualidade de software no que diz respeito à coleta e à disseminação de informações de SQA. Os resultados de revisões, auditorias, controle de mudanças, testes e outras atividades de SQA devem torna-se parte de um registro histórico de um projeto documentado. A documentação deve ser acessível a todos que participam da equipe de desenvolvimento de software. Fatores de Qualidade de Software Alguns fatores afetam a qualidade de software, por isso, determinados aspectos devem ser considerados em um software tais como: características operacionais, manutenibilidade de mudanças e adaptabilidade a novos ambientes. McCall (1977) considera as seguintes categorizações sobre os fatores que afetam a qualidade de software e podem ser descritos da seguinte forma: Revisão o Manutenibilidade: capacidade de reparação de erros no programa de forma a torná-lo disponível para uso. o Flexibilidade: esforço para se modificar um programa operacional. o Testabilidade: tempo necessário para se testar um programa a fim de garantir que ele execute a função pretendida. Operação o Corretitude: é o atendimento do programa às especificações e objetivos visados pelo cliente. o Confiabilidade: o quanto um programa executa a função pretendida com a precisão exigida. o Eficiência: quantidade de recursos de computação e de código necessária para um programa executar a função desejada. o Integridade: controle de acesso ao software ou a dados de forma controlada. o Usabilidade: esforço para aprender, operar, preparar a entrada e interpretar a saída de um programa. Transição o Portabilidade: demanda de esforço para transferir um programa de um ambiente de hardware e/ou software para outro. o Reusabilidade: propriedade de reutilizar um programa ou partes de um programa em outras aplicações (refere-se ao empacotamento e escopo de funções que o programa executa). o Interoperabilidade: esforço exigido para se acoplar um sistema a outro. Por outro lado, segundo Pressman (2002), existe a dificuldade de se desenvolver medidas diretas dos fatores de qualidade desenvolvidos por McCall (1997) por considerar que muitas das métricas só podem ser medidas subjetivamente. Cavano e MCCall (1978), citados por Pressman (2002), consideram importante a utilização de uma lista de verificação (checklist) para graduar outros atributos específicos do software. McCall (1977) considera relevante a utilização de uma escala padrão que varia de 0 (baixo) a 10 pontos (elevado), no estabelecimento de métricas de qualidade para cada fator que altera a qualidade de software. Pressman (2002) comenta que os fatores e atributos da qualidade descritos anteriormente podem ser usados para estabelecer métricas de qualidade para cada etapa do processo de desenvolvimento de software. Além dos fatores evidenciados pelos autores citados, outros também interferem na aquisição de qualidade durante o processo de desenvolvimento de software, tais como: Falta de um modelo corporativo de qualidade. Ausência de procedimentos de testes automatizados. Ausência de profissionais capacitados em qualidade. Deficiência no planejamento e aplicação dos testes. Qualidade é aplicada tardiamente no processo. Em contrapartida, o predomínio da qualidade no processo de desenvolvimento de software traz alguns benefícios, como: Torna o ciclo de desenvolvimento de software confiável. Garante ações corretivas no ciclo de desenvolvimento. Evita a ingerência do projeto de software. Amplia as chances de sucesso do projeto de software. Amplia a produtividade do desenvolvimento. Evita a propagação de erros. Automação de testes reduz custos do projeto. Revisões de Sofware As revisões são métodos de validação de qualidade de um processo ou produto amplamente usado pela equipe técnica do projeto. São consideradas como verdadeiros “filtros” de erros e inconsistências no processo de desenvolvimento de software. Qualquer revisão é uma maneira de usar a diversidade de um grupo de pessoas para apontar melhorias necessárias ao produto gerado por uma equipe, confirmar partes ou o todo de um produto que devem ser melhorados (ou não) e realizar um trabalho mais técnico com uma qualidade mais uniforme e previsível, de forma a tornar o trabalho técnico mais administrável. Alguns bons exemplos de revisões são levados em consideração a efeito de contribuírem na garantia da qualidade de software. Por exemplo, um encontro informal em torno da máquina de café é uma forma de revisão quando tratados problemas técnicos. Uma apresentação técnica do projeto a clientes, à administração e ao pessoal técnico também pode ser considerada uma forma de revisão. São tipos de revisão específicos do gerenciamento de qualidade, segundo Sommerville (2007, pg 431). Inspeções de projeto ou de programa - Detectar erros detalhados nos requisitos, projeto ou código. Revisões de progresso - Fornecer informações para a gerência sobre o progresso geral do projeto (revisão de processo, produto com foco em custos, planejamento e prazos). Revisões de qualidade - Conduzir análise técnica de componentes de produto ou documentação para encontrar inconsistências entre especificação e projeto, código ou documentação; assegurar que padrões de qualidade definidos foram seguidos. Custos da qualidade Um outro aspecto importante é referente aos custos da qualidade. Vários são os estudos conduzidos por especialistas da área de qualidade intencionados em obter um referencial para os custos reais da qualidade, a fim de poderem identificar maneiras de reduzir custos da qualidade e fornecer uma base de comparação entre os demais custos envolvidos no processo de desenvolvimento de software. Os custos operacionais da função qualidade podem ser classificados em quatro categorias: prevenção, avaliação, falhas internas e falhas externas. Veja a seguir esses quesitos detalhadamente: Custos de prevenção (prevenção de defeitos 5-15%) - São controláveis e caracterizam investimento. o Atividades decorrentes: planejamento da qualidade revisões técnicas formais equipamentos de teste treinamento Custos de Avaliação(remover do processo produtos com defeitos 20-25%)-São incontroláveis e caracterizam perdas e prejuízo. o Atividades decorrentes: inspeção intra e interprocessos calibração e manutenção do equipamento teste Custo de Falha Interna(defeito antes da entrega ao cliente 65-70%)-São incontroláveis e caracterizam perdas e prejuízo. o Atividades decorrentes: trabalho para refazer esforço para reparar análise do modo como a falha ocorreu o Custos de Falha Externa(defeitos após a entrega ao cliente 65 -70%) - São incontroláveis e caracterizam perdas e prejuízo. solução de queixas devolução e substituição do produto manutenção da linha de suporte Interessante ressaltar que na medida em que migramos dos custos de prevenção para os de detecção de falhas internas até os de falhas externas aumentamos significativamente os custos de identificação e reparo de um defeito. Uma análise numérica justifica o impacto de custo de detecção de erros feita precocemente. Considere que, na descoberta de um erro durante a fase de projeto, o custo seja de uma (1,0) unidade monetária para ser corrigido. Em relação a esse custo, o mesmo erro, descoberto logo antes que as atividades de teste se iniciem, custará 6,5 unidades; duranteos testes, 15 unidades; e, após o lançamento, entre 60 e 100 unidades (PRESSMAN, 2002). Como sugestão de prática da revisão, os especialistas recomendam não terem medo de assumir custos de prevenção significativos. Seu investimento terá excelente retorno. Revisões Técnicas Formais As revisões técnicas formais são consideradas como a principal atividade de um SQA. Conhecida como walkthroughs, inspeções, reuniões round - robin e outras avaliações técnicas de software, as revisões técnicas formais têm como objetivos: 1. descobrir erros de função, lógica ou implementação do software; 2. verificar se o software em revisão atende aos requisitos; 3. garantir que o software está representado de acordo com padrões predefinidos; 4. obter um software desenvolvido de forma uniforme; e 5. tornar os projetos mais administráveis (SOMMERVILLE, 2007). Assim como a revisão de software, a revisão técnica formal (Formal Technical Review - FTR) deve contar com algumas etapas, segundo Pressman (2002): Reunião da revisão: entre três a cinco pessoas com preparação antecipada de 2 horas de trabalho de cada pessoa para uma duração de não mais que 2 horas. 1. A reunião ocorre a partir da informação do produtor do software ao líder do projeto quanto a necessidade de revisão. 2. O líder de projeto comunica ao líder de revisão que avalia o produto e demais materiais e os distribui aos revisores selecionados. 3. Os revisores selecionados revisam o produto fazendo anotações devidas para efeito de posteriores reuniões. 4. Por fim, o líder de revisão toma conhecimento das anotações e convoca nova reunião para tomadas de decisão quanto à aceitação com correção, rejeição devido a erros graves, solicitação de nova revisão ou aceitação provisória do produto. Comunicação e manutenção de registros de revisão: consiste na atividade de um revisor atuar durante a FTR para registrar todas as questões que foram levantadas para efeito de revisão do produto de software em estudo. No final da reunião, um relatório de revisão resumido simples é concluído e distribuído ao líder do projeto e a outras partes interessadas. O objetivo da lista de questões de revisão é identificar as áreas problemáticas do produto de software e servir de conferência de itens de ação que apóiem o produtor nas correções a serem feitas. Interessante enfatizar que a comunicação deve ser contínua durante o processo de revisão e por isso, requer um procedimento de resposta aos itens da lista de questões levantadas para efeito de confirmar a devida correção das questões levantadas. Diretrizes de revisão: estabelecida antecipadamente e distribuída a todos os revisores para a concordância de todos e assim ser encaminhada mantendo a organização no processo de revisão técnica formal. Requer um conjunto de diretrizes necessárias para a perfeita realização do processo: • Revisar o produto, não o produtor. • Fixe e mantenha uma agenda. • Limite ao debate e a refutação. • Foco nas áreas problemáticas. • Registre as anotações por escrito. • Reduzir número de participantes. • Definir uma lista de conferência (checklist) para cada produto revisado. • Atribuir recursos e uma programação de tempo para as FTRs. • Realizar treinamento para os revisores. • Rever antigas revisões. Lista de conferência de revisão – cada etapa do processo de engenharia de software pode realizar uma FTR a partir de um produto derivado de outras FTRs anteriores. Dessa forma, importante considerar a lista de conferência como parâmetro ou ponto de partida para cada revisão. Algumas questões pertinentes a cada etapa do processo de desenvolvimento abrangem determinados questionamentos. As listas de conferência não pretendem ser abrangentes o suficiente, mas apenas oferecem um ponto de partida para cada revisão. AULA 3 Nas aulas anteriores, enfatizou-se que a qualidade de software é responsabilidade de todos os participantes envolvidos no desenvolvimento de software. Qualidade de Software - Pode ser conseguidos através de análise, projeto, codificação e teste de componente, mas, com toda certeza, uma efetiva aplicação de revisões técnicas formais para controle de produtos de trabalho de software e de modificações feitas neles são consideradas técnicas eficientes de obtenção de qualidade de software. Garantia estatística de qualidade de software - Reflete uma tendência entre os profissionais da área de computação e apoia-se na questão quantitativa a respeito da frequência de ocorrência de erros e inconsistências nos softwares rastreados ao longo de um período específico de tempo. Com o decorrer da industrialização acelerada, algumas questões relativas à padronização começaram a ser questionadas no sentido de estimular procedimentos quanto à gerência de processos e a obtenção de qualidade nos produtos fabricados. Ao iniciar o século XX, Frederick Taylor, se destacou nos estudos quanto a racionalização das etapas de produção visando a maior produtividade de seus funcionários. Logo após, seguiram os estudos de Henry Ford que apoiado pela ideia de racionalização no processo industrial implantou a linha de montagem com a implementação de processos padronizados. Com a acentuação da globalização na década de 1980, aumenta a necessidade de normas internacionais, nomeadamente a partir da criação da União Europeia que suplantou a norma padrão internacional, a ISO 9000 (International Organization for Standardization), através da criação de uma organização não governamental, cuja função é a de promover a normatização de produtos e serviços, para que a qualidade dos mesmos seja permanentemente melhorada. ISO 9000 - Grupo de normas técnicas que estabelecem um modelo de gestão da qualidade para organizações em geral, qualquer que seja o seu tipo ou dimensão. Passos para a SQA estatística Pressman (2004) destaca alguns passos necessários para realizar a SQA estatística e criar um processo adaptativo de engenharia de software no qual são feitas modificações para aprimorar os elementos do processo que promovem erro: Coletar e categorizar os defeitos de software encontrados. Rastrear o defeito até sua causa subjacente. Considerar que 20% do código têm 80% dos defeitos. Corrigir os problemas que causaram os defeitos. Alguns defeitos são descobertos e rastreados até uma (ou mais) das seguintes causas: 1. Especificações incompletas ou mal formuladas. 2. Distorção na interpretação da comunicação com o cliente. 3. Desvio voluntário das especificações. 4. Violação dos padrões de programação. 5. Erro na apresentação dos dados. 6. Inconsistência na interface de componente. 7. Lógica do projeto inconsistente. 8. Teste incompleto ou errôneo. 9. Documentação imprecisa ou incompleta. 10. Erro na tradução do projeto para a linguagem de programação. 11. Interface entre homem-máquina ambígua ou inconsistente. 12. Miscelânea. Confiabilidade de Software é: 1. Em termos gerais, “a probabilidade de operação livre de falhas de um programa de computador num ambiente específico durante determinado tempo especificado”. Musa (1987) citada por Pressman (2002, pg. 768). 2. Também considerar que um número mínimo de falhas ocorrerá na execução de um software dada garantia de que atenderá ao estabelecimento de parâmetros de conformidade para o sucesso do processo. Exemplo: Suponha um software que tenha como confiabilidade de 0,98, por oito horas corridas de processamento. Significa dizer que, se o software for executado 100 vezes por um tempo de oito horas de tempo de execução, é provável que funcione corretamente 98 das 100 vezes. Segurança de software é: 1. Uma atividade de garantia da qualidade de software que detecta e avalia riscos em potencial, que podem provocar falhas e impactar o desempenho de todo o sistema. 2. É também considerada uma atividade de garantia de qualidade de software, que se concentra na identificação e avaliação de causalidades em potencial que possamexercer impacto negativo sobre o software e provocar falhas no sistema. Para a implementação da segurança, considera-se a necessidade de identificar a presença de riscos o mais cedo possível, de forma a possibilitar que estratégias sejam traçadas no projeto de software que eliminem ou controlem esses riscos em potencial. Atualmente, o hardware e o software de computador são usados regularmente para controlar sistemas de segurança críticos. O passo seguinte seria analisar, por meio de técnicas, a gravidade e a probabilidade de ocorrência. Algumas técnicas são aplicáveis tais como a análise da árvore de falhas e a lógica de tempo real. Análise: 1. Árvore de Falhas - A árvore de falhas consiste em construir um modelo gráfico das combinações sequenciais e concorrentes de eventos que podem apresentar um evento ou estado de sistema perigoso. Com a construção de uma árvore de falhas bem desenvolvida, podem-se observar as consequências de uma sequência de falhas inter-relacionadas que ocorram em diferentes componentes do sistema. 2. Logica de tempo real - A lógica de tempo real consiste no desenvolvimento de um modelo de eventos e ações correspondentes, que é estudado por meio do uso de operações lógicas para testar as pressuposições de segurança sobre os componentes do sistema e o tempo de ocorrência. Após a identificação e análise das causalidades, uma lista de requisitos de segurança pode ser especificada para o software. A lista contém os requisitos indesejáveis e paralelamente, são elaboradas as respostas desejadas do sistema a esses eventos. A partir dessa ação, o software se encarrega de gerenciar os eventos indesejáveis. Princípios da ISO 9000 Até aqui, conhecemos um pouco mais sobre a garantia estatística da qualidade. A partir de agora, trataremos da abordagem da norma ISO 9000. A ISO 9000 descreve os elementos de garantia em termos genéricos, que podem ser aplicados a qualquer negócio independentemente dos produtos ou serviços oferecidos. Dessa forma, um sistema de garantia da qualidade que promove a estrutura organizacional, define responsabilidades, cria procedimentos e processos, capacita recursos para implementar a gestão da qualidade em todo ciclo de vida de um produto, certamente, demanda de uma intervenção normativa para que materiais, produtos, processos e serviços satisfaçam as expectativas do cliente, de acordo com suas especificações. A adoção das normas ISO é vantajosa para as organizações, uma vez que lhes confere: 1. Gestão - Prover confiança a própria administração de que seus produtos atenderão à satisfação dos clientes. 2. Garantia - Prover confiança aos clientes de que os produtos atenderão à sua satisfação. O ganho para as organizações com a adoção das normas ISO está na produtividade e credibilidade aumentando a sua competitividade nos mercados nacional e internacional. Os modelos da norma ISO 9000 1. ISO 9001: Garantia da qualidade em projetos/desenvolvimento, produção, instalação e assistência técnica. 2. ISO 9002: Garantia da qualidade em produção e montagem, instalação, prestação de serviço. 3. ISO 9003: Garantia da qualidade em inspeção e testes finais. 4. ISO 9004: Gestão da qualidade e elementos do sistema de qualidade – diretrizes. Série de normas NBR ISO 9000: edição 1994 1. NBR ISO 8402 1.1. Guia de seleção e Uso das Normas NBR ISO 9000: 1994 1.1.1. Gestão da Qualidade (interna à organização) NBR ISO 9004:1994 – situação não contratuais 1.1.2. Modelos de Garantia da Qualidade – situações contratuais 1.1.2.1. NBR ISO 9001:1994 1.1.2.2. NBR ISO 9002:1994 1.1.2.3. NBR ISO 9003:1994 Princípios ISO 9000:2000 • Foco no cliente. • Liderança. • Envolvimento das pessoas. • Abordagem de processo. • Abordagem sistêmica para a gestão. • Melhoria contínua. • Abordagem para tomada de decisões. • Benefícios mútuos nas relações com fornecedores. Norma base 2000: • ISO 9004: Sistemas de gestão da qualidade - diretriz para melhoria de desempenho • ISO 9001: Sistemas de gestão da qualidade – requisitos Série de normas NBR ISO 9000: edição 2000 1. Sistemas de gestão da qualidade – fundamentos e vocabulário NBR ISO 9000: 2000 1.1. Sistema de Gestão da Qualidade (diretrizes) NBR ISO 9004:2000 - – situações não contratuais 1.2. Sistemas de Gestão da Qualidade – requisitos situações contratuais 1.2.1. NBR ISO 9001:2000 AULA 4 A NBR ISO/IEC 9126-1, publicada em 1991, apresenta uma definição de qualidade como sendo a "totalidade de características de uma entidade que lhe confere a capacidade de satisfazer as necessidades explícitas e implícitas" (2003, p.17). As necessidades explícitas (ou externas) dependem do que foi especificado nos requisitos referentes às condições em que o produto deva ser utilizado, seus objetivos, funções e o desempenho esperado. Já as implícitas (ou diretas) são necessidades que embora não estejam especificadas nos requisitos, devem ser levadas em consideração, pois se baseiam em princípios básicos e óbvios, necessários para que o usuário execute a sua tarefa. Essas duas necessidades são muito importantes, pois são elas que fornecem subsídios para a criação das validações e verificações que ocorrem durante todo o ciclo de vida do sistema. Dentre elas, pode-se citar o teste de software como uma grande ferramenta para garantir a qualidade do software. No entendimento da NBR ISO/IEC 9126 as necessidades explícitas e implícitas são entendidas como características e subcaracterísticas básicas de um produto de software que vise à presença da qualidade. As definições de características e subcaracterísticas de qualidade nos permitem perceber um possível universo de requisitos que se enquadram no conceito de qualidade. A Norma ISO/IEC 12119 é aplicável a pacotes de software, como por exemplo, pacotes de software voltados para funções administrativas, técnicas ou científicas, comunicação de escritórios e outras finalidades, tal como são produzidos. Outros exemplos, incorporados aos pacotes de software compreendem os processadores de texto, planilhas eletrônicas, bancos de dados, softwares gráficos, programas para funções técnicas ou científicas e programas utilitários. Aplicável à avaliação de pacotes de software na forma em que são oferecidos e liberados para uso no mercado e não aos processos de desenvolvimento e fornecimentos de software. Por pacotes de software entende-se como o conjunto completo e documentado de programas fornecidos a diversos usuários para uma aplicação ou função genérica. É conhecido também como software de prateleira. A norma estabelece um conjunto de requisitos de qualidade para pacotes de software, instruções em como executar testes em um pacote de software, em destaque para testes realizados por terceiros. Os requisitos de qualidade incluem que: i) cada pacote de software deve ter uma descrição do produto e documentação do usuário; ii) a descrição de produtos deve conter informações que sejam testáveis e corretas e, iii) requisitos para a documentação do usuário, programas e dados que façam parte do pacote. A descrição do produto inclui as principais propriedades do pacote. A documentação do usuário nada mais é que um documento que será avaliado em relação à sua completitude, correção, consistência, inteligibilidade, apresentação e organização. Programas e dados, na verdade, são os requisitos de programas e dados que devem estar descritos, caso existam, para funcionamento do produto. Um pacote de software está em conformidade com esta Norma se atende a todos os requisitos de qualidade nela definidos. A garantia e controle de qualidade no desenvolvimento de software ao operarem simultaneamente, visam garantir que os artefatos de software sejam desenvolvidos e entregues com melhor aceitabilidade, menos defeitos e menores custos. Garantia de Software - Promove a gerência sênior da organização uma melhor visibilidade apropriada sobre o processo de desenvolvimento. Controle de Qualidade - Objetivatestar os produtos de software de modo a encontrar, relatar e remover seus defeitos. Em contrapartida, na visão do usuário do software , são percebidas as necessidades de qualidade em uso do produto de software no contexto especificado para uso. Essas necessidades identificadas, por sua vez, podem ser usadas quando se especifica qualidade externa e interna usando características e subcaracterísticas de qualidade do produto de software. A Qualidade do produto de software pode ser avaliada pela medição: dos atributos internos (tipicamente medidas estáticas de produtos intermediários); dos atributos externos (tipicamente medidas do comportamento do código quando executado); dos atributos de qualidade em uso. O objetivo é que o produto tenha o efeito desejado em um contexto particular de uso. Modelo de qualidade de software A qualidade de produto de software deveria ser avaliada utilizando um modelo de qualidade. Previamente definido. O modelo de qualidade deve ser usado quando se estabelecem metas de qualidade para produtos de software e produtos intermediários. A qualidade do produto de software deve ser hierarquicamente decomposta para um modelo de qualidade com características e subcaracterísticas que podem ser usadas como um checklist de assuntos relacionados à qualidade. É praticamente impossível medir todas as subcaracterísticas de todas as partes de um grande. produto de software. Similarmente, não é prático medir qualidade em uso de todos os possíveis cenários de tarefas do usuário. Recursos para avaliação precisam ser alocados entre os diferentes tipos de medições dependendo dos objetivos do negócio e da natureza do produto e do processo. A norma NBR ISO/IEC 9126 apresenta, de certa maneira, os instrumentos necessários para realizar uma avaliação, descrevendo de forma ampla como medir qualitativamente e quantitativamente a “presença” de qualidade, formando assim um modelo de qualidade para produto. De acordo com a Associação Brasileira de Normas Técnicas – ABNT, a série da NBR ISO/IEC 9126 se subdivide da seguinte forma: ISO/IEC 9126-2 -> Métricas Externas ISO/IEC 9126-3 -> Métricas Internas ISS/IEC 9126-4 ->Métricas de Qualidade em uso O modelo de qualidade para produto de software tem como público alvo desenvolvedores de software, adquirentes, equipe de qualidade assegurada e avaliadores. Por adquirente entende-se uma organização que obtém, adquire ou intermedia a compra de um sistema, produto de software ou serviço de software de um fornecedor. O adquirente pode ser um comprador, cliente, proprietário ou usuário. No âmbito da norma NBR ISO/IEC 9126-1, um modelo de qualidade cujo componente seja o produto de software deve estabelecer metas de qualidade tanto para produtos finais e intermediários. Assim, torna-se interessante considerar o uso de um modelo de qualidade composto de características e subcaracterísticas que podem ser usadas como uma lista de verificação (checklist) de assuntos relacionados à qualidade interna e externa de produtos. Para Pressman (2002), o uso de um modelo de qualidade apoia a categorização de fatores de McCall (1997), o contexto, a partir da qualidade interna e externa, passa a ser categorizado por seis características >>> Funcionalidade, Confiabilidade, Usabilidade, Eficiência, Manutenibilidade, Portabilidade >>>São subdivididas em subcaracterísticas, conforme apresentado na Figura 1 que segue a especificação da NBR ISO/IEC 9126-1. Cada subcaracterística pode ser medida por meio de métricas internas e externas. Para cada característica e subcaracterística, a capacidade do software é determinada por um conjunto de atributos internos que podem ser medidos. As características e subcaracterísticas atuam como fatores que alteram a qualidade de software interna e externa. Como veremos a seguir. Características e Subcaracterísticas da Qualidade de Software Funcionalidade: capacidade de fornecer funções que correspondam às necessidades explícitas e implícitas do usuário quando o software é utilizado sob condições especificadas. Adequação: capacidade de fornecer um conjunto apropriado de funções para tarefas específicas e objetivos do usuário. Acurácia: capacidade de fornecer o resultado com o grau de precisão desejado. Interoperabilidade: capacidade de interagir com um ou mais sistemas. Segurança de Acesso: capacidade de proteger dados e informações de pessoas ou sistemas não autorizados. Conformidade: capacidade de aderir a padrões, convenções, leis e prescrições similares relativas à funcionalidade. Confiabilidade: capacidade do software de manter seu nível de desempenho quando utilizado em condições estabelecidas. Maturidade: capacidade de evitar defeitos no software. Tolerância a Falhas: capacidade de manter um nível de desempenho estabelecido em caso de defeito no software. Recuperabilidade: capacidade de recuperar dados diretamente afetados no caso de falhas. Conformidade: capacidade de aderir a padrões, convenções, leis e prescrições similares relativas à confiabilidade. Usabilidade: capacidade que o produto tem de ser entendido, aprendido, utilizado e ser atraente para o usuário. Unteligibilidade: capacidade do produto de fazer o usuário entender se o software é adequado e como ele pode ser usado para tarefas particulares. Aprendibilidade: capacidade que o produto deve ter de fazer o usuário entendê-lo. Operacionalidade: capacidade que o produto deve ter para que o usuário possa aprendê-lo e controlá-lo. Atratividade: capacidade do produto em ser atraente para o usuário. Conformidade: capacidade de aderir a padrões, convenções, leis e prescrições similares relativas à usabilidade. Eficiência: relacionamento entre o nível de desempenho do software e a quantidade de recursos utilizados, sob condições estabelecidas. Comportamento em Relação ao Tempo: capacidade de fornecer tempos de resposta e processamento adequados, bem como taxas de transferência. Comportamento em Relação aos Recursos: capacidade de usar quantidade e tipos de recursos adequados. Conformidade: capacidade de aderir a padrões e convenções relativas à eficiência. Manutenibilidade: esforço necessário para se fazer modificações específicas no software. Analisabilidade: capacidade em diagnosticar deficiências e causas de defeitos. Modificabilidade: capacidade que o produto tem de receber modificações. Estabilidade: capacidade de evitar efeitos inesperados a partir de modificações. Testabilidade: capacidade de validar as modificações efetuadas no produto. Conformidade: capacidade de aderir a padrões e convenções relativas a manutenibilidade. Portabilidade: capacidade que o produto tem de ser transferido de um ambiente para outro. Adaptabilidade: capacidade de ser adaptado em diferentes ambientes sem intervenção. Capacidade de Instalação: capacidade de ser instalado em um ambiente específico. Coexistência: capacidade que o produto tem de coexistir com outro software independente em um ambiente comum, compartilhando recursos comuns. Capacidade de Substituição: capacidade que o produto de software deve ter de ser usado no lugar de outro produto de software com o mesmo propósito no mesmo ambiente. Conformidade: capacidade de aderir a padrões e convenções relativas à portabilidade. Princípios da ISO 9000 Até aqui,conhecemos um pouco mais sobre a garantia estatística da qualidade. A partir de agora, trataremos da abordagem da norma ISO 9000. A ISO 9000 descreve os elementos de garantia em termos genéricos, que podem ser aplicados a qualquer negócio independentemente dos produtos ou serviços oferecidos. Dessa forma, um sistema de garantia da qualidade que promove a estrutura organizacional, define responsabilidades, cria procedimentos e processos, capacita recursos para implementar a gestão da qualidade em todo ciclo de vida de um produto,certamente, demanda de uma intervenção normativa para que materiais, produtos,processos e serviços satisfaçam as expectativas do cliente, de acordo com suas especificações. Um processo pode ser avaliado indiretamente pela medição e avaliação do produto, e o produto pode ser avaliado indiretamente pela medição do desempenho da tarefa de um usuário (utilizando métricas de qualidade em uso). Interessante observar que um software nunca é executado sozinho, mas sempre como parte de um sistema maior, que tipicamente, consiste de outros produtos de software que tem sua interface, hardware, operadores e fluxo de trabalho. O produto de software completo pode ser avaliado pelos níveis de métricas externas escolhidas.Nos primeiros estágios de desenvolvimento somente recursos e processos podem ser medidos. Quando produtos intermediários se tornam disponíveis (especificações, código fonte, etc), eles podem ser avaliados pelas métricas internas escolhidas. Essas métricas podem ser usadas para prever valores de métricas externas. Considera-se que a qualidade do usuário pode ser especificada como requisitos de qualidade por métricas de qualidade em uso, por métricas externas e algumas vezes, por métricas internas. Tais requisitos especificados por métricas deveriam ser usados como critério quando um produto é validado. É importante considerar que a qualidade em uso consiste na qualidade percebida pelo usuário e na aferição da qualidade do software em cada contexto específico de usuário. Essas métricas visam descrever a interação com o ambiente e são avaliadas pela observação do software em operação. Qualidade em uso pode ser medida pelo quanto um produto em uso atinge as necessidades do usuário em termos de efetividade, produtividade, segurança esatisfação. A qualidade do usuário pode ser especificada como requisitos de qualidade por métricas de qualidade em uso, por métricas externas e algumas vezes, por métricas internas. Tais requisitos especificados por métricas deveriam ser usados como critério quando um produto é validado. A execução de um produto que satisfaça as necessidades do usuário normalmente requer uma abordagem interativa no desenvolvimento do software, com contínuo feedback da perspectiva do usuário. Para tanto, algumas características de qualidade são pertinentes à aquisição de qualidade de produto de software, na visão do usuário. Qualidade em Uso é a visão de qualidade que o usuário tem do software e é medida em termos do resultado da utilização do software. É a capacidade que o produto de software tem de atender aos anseios e às necessidades dos usuários em seu próprio ambiente de trabalho. É, portanto, a capacidade de software permitir a usuários específicos atingir metas especificadas com efetividade, produtividade, segurança e satisfação em um contexto de uso especificado. Qualidade em uso A Norma ISO/IEC 9126-4 define as métricas de qualidade para as seguintes características: Eficácia - Usuários são capazes de atingir metas especificadas com acurácia e completitude. Produtividade - Usuários empregam quantidade adequada de recursos em relação à eficácia obtida. Segurança - Presença de níveis aceitáveis de riscos de danos a pessoas, negócios, software, propriedades ou ao ambiente. Satisfação - Satisfazer usuários de acordo com as especificações do produto de software. Métricas de qualidade de acordo com a Norma ISO/IEC 9126-1 A precisão da qualidade depende, em grande parte, das métricas escolhidas. Para aumentar a confiabilidade dos resultados são necessárias algumas características que as métricas deveriam apresentar, de acordo com o requisitos especificados na NBR ISO/IEC 9126-1(item 6.4). Significancia - As métricas relevantes devem agregar informações sobre o comportamento do software, porém as não relevantes devem ser descartadas. Custo e complexidade - Aplicação da métrica deve ser econômica e tecnicamente viável. Destaca-se que algumas métricas não satisfazem esse critério por demandarem um investimento acima do orçamento(laboratórios e usuários-teste) ou demandar técnicas sofisticadas como métodos estatísticos. Repetibilidade - Os resultados gerados devem ser idênticos ao aplicar a medição:no mesmo produto;com a mesma especificação de requisitos; com os mesmos avaliadores, usuários- testes e ambiente. Reprodutibilidade - Os resultados gerados devem ser idênticos ao aplicar a medição: no mesmo produto; com a mesma especificação de requisitos; com diferentes avaliadores, usuários-testes e ambiente. Validade - Necessidade de demonstrar correção e precisão em todos os fatores que podem influir no resultado como:característica de hardware como por exemplo, uma má conexão de cabos de rede; característica de configuração de parâmetros do sistema operacional e do próprio software em desacordo ; percepção dos avaliadores no processo de julgamento de definições de botões, janelas, menus em discordância; utilização de modelos matemáticos passíveis de manipulação devem ser explicitados. Objetividade - Ausência de subjetividade dos resultados da medição, isto é, não devem sofrer influência de opinião de avaliadores, usuários-teste, etc. A medição estatística deve ser aplicada caso não seja possível manter a objetividade. Imparcialidade - A medição não deve ser tendenciosa, ou seja, preservar a publicação dos resultados na íntegra e, distribuir o resultado em um ambiente que seja o mais confiável possível. Considera-se que a aplicação das métricas de avaliação do software depende em grande parte do grau de sofisticação do processo de avaliação. Requisitos de Qualidade Descrição do Produto - Consiste em um documento expondo as propriedades de um pacote de software, com o principal objetivo de auxiliar os potenciais compradores na avaliação da adequação do produto antes de sua aquisição. Fornece informações sobre a documentação do usuário, programas e, se existirem, sobre os dados.Inclui as principais propriedades do pacote e é um documento disponível ao usuário independente da aquisição do produto. As declarações sobre funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade devem ser avaliadas. Documentação do Usuário - Trata-se de um conjunto completo de documentos disponível na forma impressa ou não, que é fornecido para a utilização de um produto, sendo também uma parte integrante do produto. Deve incluir todos os dados necessários para a instalação, para o uso da aplicação e para a manutenção do software produto. Deve fazer referência a completude, correção, consistência, intelegibilidade, apresentação e organização. Programas de Dados - Os requisitos de qualidade para Programas e Dados utilizam as mesmas definições das características da norma ISO/IEC 9126. Descreve em detalhes cada uma das funções do software, incluindo declarações sobre funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade. Instruções para teste 1. Pré-requisitos para teste: deve ser considerada a presença de itens de produto; de sistema necessário e treinamento quando mencionado na descrição do produto. 2. Registro de teste: deve conter informações suficientes paia permitir a repetição do teste como a elaboração do plano de teste, casos de teste, registro de resultados com falhas e/ou sucessos e por fim, a identificação de pessoas envolvidas 3. Atividades de teste: testar se estão de acordo com os requisitos de qualidade tais como a descrição do produto, a documentação do usuário e os programas de dados. 4. Relatório de teste: contém a descrição do produto, o hardware e software utilizado no teste, os documentos usados, os resultados dos testes (descricões, documentação, programas e dados), a lista de não conformidades dos requisitosl a lista de não conformidades de recomendações e as datas do inicio e término do teste (horas gastas na atividade). Vamos ver todosesses conceitos na prática? Visite uma empresa de desenvolvimento de software e solicite uma participação na equipe de testes para o acompanhamento e levantamento de dados a respeito do tipo e dos tempos entre a ocorrência de falhas, a fim de mostrar se a confiabilidade está aumentando. Elabore uma tabela de tipos e incidência de falhas, de acordo com a tabela apresentada para identificação dos passos para a SQA estatística (aula anterior). Elabore uma análise crítica da qualidade de software utilizando as características e subcaracterísticas pertinentes a NBR ISO/IEC 9126, tais como: Maturidade: capacidade de evitar defeitos no software. Tolerância a Falhas: capacidade de manter um nível de desempenho estabelecido em caso de defeito no software Recuperabilidade: capacidade de recuperar dados diretamente afetados no caso de falhas. Conformidade: capacidade de aderir a padrões, convenções, leis e prescrições similares relativas à confiabilidade. AULA 5 O objetivo de projetar e avaliar computadores buscando usabilidade consiste em proporcionar que os objetivos sejam alcançados pelos usuários bem como satisfaçam suas necessidades em um contexto particular de uso. Desta forma, a ISO/IEC 9241-11 esclarece os benefícios de medir usabilidade em termos de desempenho e satisfação do usuário, a usabilidade dos computadores depende do contexto de uso e afirma que o nível de usabilidade alcançado dependerá das circunstâncias específicas nas quais o produto é usado. Para tanto, a ISO/IEC 9241 consiste das seguintes partes, sob o título geral de Requisitos ergonômicos para trabalho de escritório com computadores: Parte 1: Introdução Geral Parte 2: Orientações sobre requisitos da tarefa Parte 3: Requisitos para apresentação visual Parte 4: Requisitos para teclado Parte 5: Requisitos posturais e de layout para posto de trabalho Parte 6: Requisitos para ambiente Parte 7: Requisitos para monitores quanto à reflexão Parte 8: Requisitos para apresentação de cores Parte 9: Requisitos para outros dispositivos de entrada que não o teclado Parte 10: Princípios de diálogo Parte 11: Orientações sobre usabilidade Parte 12: Apresentação da informação Parte 13: Orientações ao usuário Parte 14: Diálogos por menu Especificamente, nessa aula, o foco será dado a parte da norma 9241-11 que emprega o termo usabilidade algumas vezes para referenciar mais precisamente os atributos de um produto que o torna mais fácil de usar (hardware, software ou serviços), além das medidas relevantes de usabilidade. A orientação é mais na forma de princípios e técnicas gerais, em vez de requisitos para usar métodos específicos quando considerada as fases de aquisição, projeto, desenvolvimento, avaliação, e comunicação da informação sobre usabilidade. A ISO 9241-11 também explica como medidas de desempenho e satisfação do usuário podem ser usadas para medir como qualquer componente de um sistema afeta todo o sistema de trabalho em uso. Complementando, a ISO 9241, partes 12 a 17, fornece recomendações condicionais que são aplicadas em contextos de uso específico. As partes orientam para identificar a aplicabilidade de recomendações individuais. A ISO 9241-11 não cobre os processos de desenvolvimento de sistema. Os processos de projeto centrados no ser humano para sistemas interativos são descritos na ISO 13407. A seguir, definem-se alguns efeitos da norma: Usabilidade - Medida na qual um produto pode ser usado por usuários específicos para alcançar objetivos específicos com eficácia, eficiência e satisfação em um contexto específico de uso. Eficácia - Completude com as quais usuários alcançam objetivos específicos. Eficiência - Recursos gastos em relação à acurácia e abrangência com as quais usuários atingem objetivos. Satisfação - Ausência do desconforto e presença de atitudes positivas para com o uso de um produto. Contexto de uso - Usuários, tarefas, equipamento (hardware, software e materiais), e o ambiente físico e social no qual um produto é usado. Sistema, composto de usuários, equipamento, tarefas e o ambiente físico e social, com o propósito de alcançar objetivos específicos. Usuário - Pessoa que interage com o produto. Objetivo - Resultado pretendido. Tarefa - Conjunto de ações necessárias para alcançar um objetivo. Produto - Parte do equipamento (hardware, software e materiais) para o qual a usabilidade é especificada ou avaliada. Medida (substantivo) - Valor resultante da medição e o processo usado para obter tal valor. 1. A justificativa da usabilidade de produtos se faz pela incorporação de características e atributos conhecidos como capazes de beneficiar os usuários em um contexto particular de uso. 2. A partir disso, para se determinar o nível de usabilidade alcançado junto ao usuário é necessário medir o desempenho e satisfação destes trabalhando com um produto. 3. A medição possibilita visualizar a complexidade das interações entre o usuário, os objetivos, as características da tarefa e os outros elementos do contexto de uso. A cada circunstância ambiental, diferentes níveis de usabilidade podem ser definidos. Para especificar ou medir usabilidade, algumas informações são necessárias: 1. Descrição dos objetivos pretendidos; 2. Descrição dos componentes do contexto de uso incluindo usuários, tarefas, equipamento e ambientes (contexto existente ou pretendido); 3. Valores reais ou desejados de eficácia, eficiência e satisfação para os contextos pretendidos. Contexto de uso O nível no qual o objetivo global pretendido é estabelecido é uma função do limite do sistema de trabalho em consideração e que fornece o contexto de uso, no que diz respeito a determinados elementos. Veja os componentes que requerem uma especificação de características de uso. Usuário - Consiste em definir as características de conhecimento, habilidade, experiência, educação, treinamento, atributos físicos e capacidades sensoriais e motoras. As experiências individuais dos usuários também são levadas em consideração quando desempenha diferentes funções. Ambiente - As características relevantes do ambiente físico e social precisam ser descritas. Os aspectos que podem ser necessários, por exemplo, a rede de trabalho local, o local de trabalho, mobiliário, temperatura, umidade, práticas de trabalho, estrutura organizacional e atitudes. Tarefas - Necessita da descrição das características das atividades que visam o alcance de um objetivo e que podem influenciar a usabilidade, como por exemplo, a freqüência e a duração de uma tarefa. Convém que qualquer descrição das atividades e passos envolvidos no desempenho da tarefa estejam relacionados aos objetivos a serem alcançados Equipamentos - As características relevantes do equipamento tais como o hardware, software e materiais associados com o computador precisam ser descritos. O conjunto de produtos podem ser o foco da especificação ou avaliação de usabilidade, ou um conjunto de atributos ou características de desempenho do hardware, software ou outros materiais. A escolha e o nível de detalhes de cada medida (eficácia, eficiência e satisfação) depende dos objetivos das partes envolvidas na medição. Deve-se considerar a importância relativa de cada medida para os objetivos. Por exemplo, caso o uso não seja freqüente, pode ser dada grande importância para as medidas de aprendizado e re-aprendizado. Caso não seja possível obter medidas objetivas de eficácia e eficiência, medidas subjetivas baseadas na percepção dos usuários podem fornecer uma indicação de eficácia e eficiência. Veja a seguir cada uma das especificações das características de medidas de uso: Eficacia - Relacionam aos objetivos ou sub-objetivos do usuário quanto a acurácia e completude com que estes objetivos podem ser alcançados. Exemplo: Se o objetivo desejado for reproduzir com acurácia um documento de duas páginas em um formato específico, então a acurácia pode serespecificada ou medida pelo número de erros de ortografia e pelo número de desvios do formato especificado e a completude pelo número de palavras do documento transcrito dividido pelo número de palavras do documento de origem. Eficiência - Relacionam o nível de eficácia alcançada ao dispêndio de recursos. Recursos relevantes podem incluir esforço mental ou físico, tempo, custos materiais ou financeiros. Exemplo: Se o objetivo desejado for imprimir cópias de um relatório, então a eficiência pode ser especificada ou medida pelo número de cópias usáveis do relatório impresso, dividido pelos recursos gastos na tarefa tal como horas de trabalho, despesas com o processo e materiais consumidos. Satisfação - Pode ser especificada e medida pela avaliação subjetiva em escalas de desconforto experimentado, gosto pelo produto, satisfação com o uso do produto ou aceitação da carga de trabalho quando da realização de diferentes tarefas ou a extensão com os quais objetivos particulares de usabilidade (como eficiência ou capacidade de aprendizado) foram alcançados. Outras medidas de satisfação podem ser: número de comentários positivos e negativos registrados durante o uso; informação adicional como taxas de absenteísmo, observação de sobrecarga ou subcarga de trabalho físico ou cognitivo do usuário, problemas de saúde relatados, freqüência com que os usuários requerem A generalização dos resultados de qualquer medição de usabilidade para outro contexto qualquer deve ser evitada, pois certamente existem diferenças significativas de tipos de usuários, tarefas ou ambientes. Portanto, se as medidas de usabilidade são obtidas em curtos períodos de tempo, os valores podem não levar em consideração os eventos pouco freqüentes os quais podem ter um impacto significativo sobre a usabilidade, por exemplo, erros intermitentes do sistema. Para um produto de uso geral, geralmente será necessário especificar ou medir usabilidade em alguns contextos representativos diferentes, os quais serão um subgrupo de possíveis contextos e de tarefas que podem ser realizadas. AULA 6 A norma ISO/IEC 14598 oferece uma visão geral dos processos de avaliação de produtos de software e fornece guias para a avaliação, baseados na utilização prática da norma ISO/IEC 9126. Pela Norma, podem existir três enfoques diferentes para a avaliação da qualidade de produto: 1. Processo para Desenvolvedores 2. Processo para Avaliadores 3. Processo para Compradores Veja a relação entre as Normas desta série: Para tanto, a Norma apresenta-se constituída das seguintes partes: ISO/IEC 14598-1 – Visão geral – fornece uma visão completa das outras partes da norma, as relações entre si e com o modelo de qualidade da norma ISO/IEC 9126. ISO/IEC 14598-2 – Planejamento e gestão - fornece requisitos, recomendações e diretrizes para uma função de suporte e apoio responsável pela gestão da avaliação de produto de software e pelas tecnologias necessárias para a avaliação de produto de software. ISO/IEC 14598-3 – Processo para desenvolvedores – Seleção e registro de indicadores que possam ser medidos e avaliados a partir dos produtos intermediários obtidos nas fases de desenvolvimento para a tomada de decisões estratégicas e gerenciais. ISO/IEC 14598-4 - Processo para adquirentes - contém requisitos, recomendações e orientações para a medição, julgamento e avaliação sistemática da qualidade de produto de software durante a aquisição de produtos de software de prateleira, produtos de software sob encomenda ou modificações em produtos de software existentes. ISO/IEC 14598-5– Processo para avaliadores – descreve um processo para avaliação de produtos de software. ISO/IEC 14598-6 – Documentação de módulos de avaliação – estabelece requisitos e instruções a respeito de como testar um pacote de software em relação aos requisitos estabelecidos para o pacote. A proposta da ISO/IEC 14598 Avaliar a qualidade de um produto de software é: 1. Verificar, através de técnicas e atividades operacionais, o quanto os requisitos são atendidos. 1.1. Tais requisitos, de uma maneira geral, expressam as necessidades explicitadas em termos quantitativos ou qualitativos e apresentam como objetivo a definição das características de um software, a fim de permitir o exame de seu entendimento. Deve-se avaliar a qualidade do produto liberado por diversas razões: 1. Identificar e Entender - As razões técnicas para as deficiências e limitações do produto, que podem manifestar-se através de problemas operacionais e problemas de manutenção; 2. Comparar - Um produto com outro, mesmo que indiretamente; 3. Formular - Um plano de ação de como fazer o produto de software evoluir. Pontos relevantes das partes Segundo a ISO/IEC 14598-2, a função de apoio à avaliação deve fornecer um suporte abrangente à organização para projetos de desenvolvimento de software, aquisição de software e avaliação de software. Ela pode ser interna ou externa à organização que está avaliando o software. Alguns papéis são relevantes, tais como: Criação de critérios para benchmark. Avaliação da eficácia e qualidade de qualquer aquisição. Obtenção de padrões e de informações técnicas. Desenvolvimento de padrões e ferramentas. Desenvolvimento de software. Coleta e análise de resultados de avaliações Distribuição dos resultados de avaliação Facilitação da transferência de tecnologia e suporte a projetos de avaliação A função suporte à avaliação pode ser pensada no setor da organização encarregada de desenvolver, adquirir ou avaliar o software. As responsabilidades de avaliação e de garantia da qualidade devem constar em um plano que vise ao uso e melhoria da tecnologia de avaliação, implementação, transferência e avaliação da tecnologia de avaliação usada e, por fim, o gerenciamento da experiência de avaliar. Por outro lado, a função pode ser direcionada para o projeto de avaliação suportado pela organização. O suporte incluiu o planejamento da avaliação quantitativa e a promoção desse plano de avaliação e tecnologia utilizadas para outros projetos dentro da organização. A estrutura de um plano de avaliação quantitativa deve conter : Introdução Objetivos Características da qualidade aplicáveis Lista de prioridades Objetivos da qualidade Cronograma Definição de responsabilidades Categorias de medição Uso e análise de dados Relatórios Demais requisitos de interesse O plano pode ser divulgado por meio de palestras e reuniões técnicas. A ISO/IEC 14598-4 ao referenciar o processo de aquisição definido pela ISO/IEC 12207 ressalta a existência das seguintes atividades: Iniciação - O adquirente inicia o processo de aquisição ao considerar a necessidade de obter, desenvolver ou melhorar um sistema, produto ou serviço de software. Preparação do pedido de proposta - Elaboração dos documentos de requisitos de aquisição bem como determinados os pontos de controle para revisão e auditoria do progresso do fornecimento. Preparação e atualização de controle - Seleção de fornecedores e suas capacidades firmadas em contrato e, negociado o custo, cronograma de execução. As mudanças no contrato devem ser controladas pelo adquirente. Monitoração e fornecedor - Consiste em atividades de avaliação durante a execução do contrato levando à aceitação e entrega do produto de software. Aceitação e conclusão - Aceitação e entrega do produto de software final, obedecidos aos critérios de aceitação previamente definidos durante a atividade de iniciação. A ISO/IEC 14598-5 – processo para o avaliador que visa fornecer requisitos e recomendações para a correta implementação prática de avaliação de produto de software. Conta com a participação de avaliadores de laboratório, fornecedores e adquirentes de software, usuários e entidades certificadoras que defendem objetivos diferentes. Os avaliadores podem ser especificamente: Os laboratórios de testes As equipes de testes integradas de organizações de produção ou de distribuição de software Os compradores ou usuários de software ou de integradoras de sistemas As organizações que realizam comparações de softwares Pode ser aplicada tanto para produto existente como para produtos em desenvolvimento. Além das partes envolvidas no processo, a norma descreve um procedimento passo a passo dos requisitos de avaliação expressos com as devidas características de qualidade. São gerados vários documentos que passam a ser considerados como parte do produto de software, tais como: documentos de projeto relatórios de teste e validação código fonte documentação de usuário O processo de avaliação envolve um conjunto de atividades conduzidas pelo requisitante da avaliação e pelo avaliador que iniciam o trabalho a partir do uso dos dados fornecidos pelo requisitante, pelo avaliador ou por outros meios e atividades do conjunto. As atividades do processo de avaliação são as seguintes: Estabelecimento de requisitos de avaliação - Descrição dos objetivos da avaliação coerentes com o produto de software e possíveis riscos associados. As percepções dos usuários do produto, fornecedores, compradores, desenvolvedores, operadores e mantenedores do produto devem ser levados em consideração. Especificação da avaliação - Definição do escopo da avaliação e as medições a que o produto será submetido. Dependente dos requisitos de avaliação previamente definidos pelo requisitante. Projeto de avaliação - Preparo de um plano de ação de acordo com a especificação do avaliador e com base nos métodos a serem usados para a realização das medições estabelecidas na especificação. Um documento guarda, portanto, as especificações da avaliação, o cronograma, os recursos necessários e disponíveis para realizar a avaliação. Execução da avaliação - Consiste na inspeção, medição e teste dos produtos e de seus componentes aplicados de acordo com as orientações do plano. Aplicadas as ações de medição, segue-se para as interpretações dos resultados registrados e depurados durante a avaliação. Ao final da execução, uma versão preliminar é gerada do relatório de avaliação. Conclusão da avaliação - Revisão do relatório de avaliação e liberação dos dados de avaliação, bem como a devolução, pelo avaliador, do produto avaliado e seus componentes. No final do processo, os resultados esperados da avaliação de produto devem ser compreensíveis, aceitáveis e confiáveis por quaisquer partes interessadas nos papéis de requisitante de uma avaliação ou de avaliador. Dessa forma, espera-se obter um alto nível de objetividade da avaliação. De acordo com a ISO/IEC 14598-5, as características esperadas do Processo de Avaliação são: Repetitividade - Avaliação repetida de um mesmo produto, com mesma especificação de avaliação, realizada pelo mesmo avaliador, deve produzir resultados que podem ser aceitos como idênticos. Reprodutividade - A avaliação do mesmo produto, com mesma especificação de avaliação, realizada por um avaliador diferente, deve produzir resultados que podem ser aceitos como idênticos. Imparcialidade - A avaliação não deve ser influenciada frente a nenhum resultado particular. Objetividade - Os resultados da avaliação devem ser factuais, ou seja, não influenciados pelos sentimentos ou opiniões do avaliador. Considera-se que as avaliações de um mesmo produto podem ser executadas a partir de diferentes especificações e, portanto, não comparáveis e com resultados diferentes. A documentação do processo de avaliação de um produto de software, representado pela ISO/IEC 14598-5, deve englobar um conjunto de métricas que fornecem informações importantes sobre as propriedades do software e devem ser utilizadas de maneira eficiente de tal forma que possibilite a troca de informações sobre avaliações e entre avaliadores. Para tanto, requer que haja uma padronização na forma de documentação o que é feito pela aplicação de módulos de avaliação (M.A.). A norma ISO/IEC 14598 oferece uma visão geral dos processos de avaliação de produtos de software e fornece guias de requisitos para avaliação. Apesar de a norma possibilitar o uso de qualquer modelo de qualidade, a aplicação desse processo de avaliação se torna menos complexa se for utilizada em parceria com a norma ISO/IEC 9126, pois todas as normas da família 14598 estão ligadas a esse modelo. AULA 7 Melhoria de processo de software Para o avanço das organizações intensivas em software (desenvolvimento/aquisição), a prática da melhoria de processo de software tem se mostrado viável, eficaz e eficiente. Consiste a abordagem na prática de ações orientadas para alteração dos processos aplicados para: Aquisição Fornecimento Desenvolvimento Manutenção e/ou suporte ao sistema de software Atualmente, a melhoria de processo de software faz parte da disciplina da engenharia de processo de software com uma forte tendência em atender concomitantemente aos sistemas. Inicialmente, dois conceitos são fundamentais para a melhoria de processo de software, tais como processo e capacidade de processo. Por processo considera-se a definição como sendo “o que as pessoas fazem, utilizando tecnologias, métodos e ferramentas para produzir um resultado desejado”. O conceito de processo de software fica, portanto, atrelado ao “o que as pessoas fazem, por meio de atividades, métodos, práticas e transformações para desenvolver, manter e melhorar software e produtos associados” (adaptado de Paulk (1993)). Por capacidade de processo entende-se a habilidade do processo em ser executado de forma eficiente e eficaz com a presença de algumas características importantes: Execução consistente e sempre que necessária. Flexibilidade no processo de execução para melhor adaptação das necessidades específicas. Documentação com uma notação representativa de processo identificado por meio de texto, figuras, fluxos, etc. Deve ser apropriado para que as pessoas possam realizar o trabalho. Treinamento para as pessoas inseridas nas atividades do processo de forma a obterem conhecimento, habilidade e experiência. Manutenção para garantir a evolução contínua. Controle de mudanças para garantir a integridade e disponibilidade dos artefatos. Apoio de equipes, ferramentas e recursos apropriados para realização do processo. A capacidade de processo determina que uma organização tenha processos executados de forma que sejam gerenciados, definidos, medidos, controlados, efetivos e melhorados continuamente. Torna-se importante considerar que o grau de formalização do processo e a complexidade da comunicação em um projeto deve ser equilibrados, ou seja, uma formalização do processo adequada e uma comunicação correta para a efetividade de processo (capacidade). A estrutura do guia ISO 9000-3 As normas da série ISO 9000 representam outro marco na utilização de processo. As normas foram desenvolvidas para apoiar organizações de todos os tipos e tamanhos, na implementação e operação de sistemas da qualidade eficazes. Especificamente a ISO 9000-3, interesse desse estudo, define diretrizes para facilitar a aplicação da norma ISO 9001 a organizações que desenvolvem, fornecem e mantém software. Destina-se a fornecer orientação quando um contrato entre duas partes exigir a demonstração da capacidade do fornecedor em desenvolver, fornecer e manter produtos de software. De fato, a ISO 9000-3 é um guia para a aplicação da ISO 9001 para o desenvolvimento, fornecimento e manutenção de software. As diretrizes propostas na ISO 9000-3 cobrem questões como: Entendimento dos requisitos funcionais entre contratante e contratado; Uso de metodologias consistentes para o desenvolvimento de software; Gerenciamento de projeto desde a concepção até a manutenção. Relevante destacar que uma das limitações da ISO 9000-3 é o fato de nãotratar de aspectos como a melhoria contínua do processo de software (SPI – Software Process Improvement). Dessa forma, a ISO 9000-3 considera apenas quais processos a organização deve ter e manter, mas não orienta quanto ao passo que devem ser seguidos para chegar a desenvolvê-los e nem de como aperfeiçoá-los. A documentação do processo de avaliação de um produto de software, representado pela ISO/IEC 14598-5, deve englobar um conjunto de métricas que fornecem informações importantes sobre as propriedades do software e devem ser utilizadas de maneira eficiente de tal forma que possibilite a troca de informações sobre avaliações e entre avaliadores. Para tanto, requer que haja uma padronização na forma de documentação o que é feito pela aplicação de módulos de avaliação (M.A.). As diretrizes da ISO 9000-3 A ISO 9001 baseia-se em 20 diretrizes (ou critérios) que englobam vários aspectos da garantia da qualidade. A ISO 9000-3 engloba somente 12 desses elementos. O ponto central dos critérios de um sistema de gestão da qualidade baseada nas normas ISO 9000 é a apropriada documentação desse sistema. A norma brasileira equivalente à ISO 9000-3 é a ISO 9000-3 de 1993, baseada na edição de 1991, e agrupa as diretrizes em três partes principais: > Estrutura – descreve aspectos organizacionais relacionados ao sistema de qualidade. > Atividades do ciclo de vida: descreve atividades de desenvolvimento de software. > Atividades de suporte: descreve atividades que apoiam as atividades do ciclo de vida. A estrutura, nomenclatura e arranjo da atual ISO 9000-3, de 1997, seguem exatamente a estrutura da ISO 9001 e suas diretrizes têm o mesmo nome. A ISO 9000-3 apoia a aquisição da certificação da qualidade pelas organizações intensas no desenvolvimento de software, assim como as ISO 9001, 9002 E 9003. Diretrizes da ISO 900-3 Responsabilidade da gerencia A política de qualidade deve ser definida, documentada, comunicada, implementada e mantida por uma gerência. Por meio da política, o gerente descreve a atitude da organização em relação à qualidade.>>> Define a estrutura organizacional necessária para o melhor gerenciamento da qualidade.>>>> No momento da definição, o gerente identifica as autoridades e atribui responsabilidades ao pessoal do sistema de qualidade que deve cumprir e assegurar que a interação entre as pessoas envolvidas esteja claramente especificada. Desta forma, o gerente assume as seguintes responsabilidades: Identificar e fornecer os recursos adequados para a execução do trabalho do sistema de qualidade Indicar um executivo experiente com a devida autoridade para gerenciar o sistema de qualidade Possibilitar que os gerentes possam usar os procedimentos e aprimorar a eficiência do sistema de qualidade Revisar periodicamente o sistema de qualidade para o seu aprimoramento Manter os registros de todas as revisões Além disso, o gerente designa um representante da administração para coordenar e controlar o sistema da qualidade. Requisitos do sistema de qualidade O sistema de qualidade deve ser documentado na forma de um manual e, assim, implementado. Para tanto, o desenvolvimento de um Plano de Qualidade torna-se necessário sempre que for preciso controlar a qualidade de um projeto, de um produto, ou de um contrato específico com clientes. O plano deve especificar detalhadamente os procedimentos para controlar a gerência de configuração, a verificação do produto, a validação do produto, a não conformidade do produto e as ações corretivas. Os procedimentos devem ser consistentes com a política de qualidade. O plano deve mostrar como cumprir os requisitos do sistema de qualidade que, por sua vez, devem estar integrados às atividades do ciclo de vida, para assegurar que a qualidade está sendo construída ao longo de todo o projeto. O plano de qualidade aplica-se ao controle dos projetos de desenvolvimento de software. Revisão dos requisitos de contrato Nesse item, os requisitos contratuais precisam ser completos e bem definidos para garantir que a organização atenda às exigências contratuais. Deve ser feita uma cuidadosa análise crítica do contrato. Procedimentos devem ser criados para que a coordenação de atividades de revisão do contrato de desenvolvimento de software possa ser feita junto ao cliente. A participação do cliente na revisão do contrato garante que os requisitos contratuais estabelecidos entre as partes são aceitáveis no correto fornecimento de produtos e/ou serviços. As revisões dos contratos firmadas junto ao cliente devem ser mantidas para consultas posteriores. Procedimentos devem ser desenvolvidos e especificados – como os contratos com os usuários devem ser corrigidos (emendados) – e que assegurem que as alterações serão comunicadas a toda organização. Assim, investigue se as partes envolvidas no contrato (contratada e contratante) concordam: Como os termos são definidos. Como será feita a aceitação dos produtos. Como o cliente irá participar. Como os usuários do software serão treinados. Como as atualizações de software (upgrades) serão feitas. Como os melhoramentos do software serão feitos. Como as mudanças nos requerimentos do cliente serão tratadas. Como os problemas serão tratados após a aceitação do produto. Que o projeto é viável. Que os direitos legais de terceiros serão respeitados. Que o cliente pode cumprir todas as obrigações contratuais. Que um cronograma apropriado para o projeto foi estabelecido. Que os riscos significativos e seus planos de contingência foram identificados. Que todas as obrigações contratuais e respectivas penalidades foram especificadas. Que os procedimentos de desenvolvimento de software foram definidos. Que os recursos estarão definidos quando necessário. Que a extensão das suas responsabilidades para com subcontratos foi definida. Requisitos da fase de projeto do produto As atividades referentes a projetos como planejamento, métodos para revisão, mudanças e verificações ocorridas, no decorrer do desenvolvimento do produto, devem ser documentadas para assegurar que todos os requisitos do produto foram cumpridos. O desenvolvimento de planos de procedimentos na fase de elaboração do projeto de software sugere que seja executado de forma disciplinada, e o mesmo deve ocorrer durante o desenvolvimento de software com vistas a assegurar que é cumprido de forma sistemática. O plano deve conter alguns requisitos necessários com a devida documentação e aprovação dos envolvidos antes de ser implementado. O plano deve: Definir o projeto. Listar os objetivos do projeto. Apresentar o cronograma do projeto. Definir as entradas e saídas do projeto. Identificar planos e projetos relacionados. Explicar como o projeto será organizado. Discutir riscos de projeto assumidos. Identificar todas as estratégias de controle relevantes. Por outro lado, o plano de desenvolvimento de software precisa definir: A responsabilidade dos participantes no desenvolvimento do software. Os meios como as informações técnicas serão compartilhadas e transmitidas entre todos os participantes. O comprometimento do cliente em aceitar, cooperar e dar suporte ao projeto de desenvolvimento de software. A agenda de revisões do projeto para avaliar as atividades e os resultados alcançados por todos os participantes. Desenvolver procedimentos para assegurar que todos os requisitos de entrada da fase de projeto são identificados, documentados e revistos, e que todas as falhas, ambiguidades, contradições e deficiências são resolvidas. Os requisitos de entrada da fase de projeto devem ser especificados pelo cliente, apesar de ocorrer, em alguns casos, uma expectativa do cliente de que os mesmos sejam especificados pelos responsáveis da fase de projeto. Nesse caso, torna-se prudente trabalhar junto ao cliente de forma que evite
Compartilhar