Baixe o app para aproveitar ainda mais
Prévia do material em texto
QUALIDADE E USABILIDADE DE SOFTWARE Christina Paula de Camargo Curcio Te cn o lo g ia Q U A L ID A D E E U S A B IL ID A D E D E S O F T W A R E C hr is tin a P au la d e C am ar g o C ur ci o Neste livro vamos apresentar os conceitos fundamentais relacionados à quali- dade de software, métricas, normas e orientações sobre a gestão da qualida- de. Após este estudo, esperamos que você tenha facilidade para reconhecer a qualidade e usabilidade dos softwares disponíveis no mercado e gerir seus próprios projetos, identificando os requisitos necessários para o desenvolvi- mento de um software com qualidade. Fundação Biblioteca Nacional ISBN 978-85-387-6296-6 9 788538 762966 CAPA_Qualidade e Usabilidade de Software.indd 1 17/08/2017 10:09:01 Christina Paula de Camargo Curcio IESDE BRASIL S/A Curitiba 2017 Qualidade e Usabilidade de Software CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ C984q Curcio, Christina Paula de Camargo Qualidade e usabilidade de software / Christina Paula de Camargo Curcio. - 1. ed. - Curitiba, PR : IESDE Brasil 2017. 184 p. : il. Inclui bibliografia ISBN 978-85-387-6296-6 1. Engenharia de software. 2. Software - Desenvolvimento. I. Título. 17-43661 CDD: 005.1 CDU: 004.41 Direitos desta edição reservados à Fael. É proibida a reprodução total ou parcial desta obra sem autorização expressa da Fael. © 2017 – IESDE Brasil S/A. É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito da autora e do detentor dos direitos autorais. Todos os direitos reservados. IESDE BRASIL S/A. Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200 Batel – Curitiba – PR 0800 708 88 88 – www.iesde.com.br Produção FAEL Direção Acadêmica Francisco Carlos Sardo Coordenação Editorial Raquel Andrade Lorenz Revisão IESDE Projeto Gráfico Sandro Niemicz Capa Vitor Bernardo Backes Lopes Imagem Capa David M G/Shutterstock.com Arte-Final Evelyn Caroline dos Santos Betim Sumário Carta ao Aluno | 5 1. Qualidade de software | 7 2. Normas e padrões | 27 3. Influência dos requisitos na qualidade do software | 47 4. Processo de desenvolvimento de software | 65 5. Gerência da qualidade de software | 89 6. Fundamentos da interação homem-computador (IHC) | 107 7. Usabilidade de software | 127 8. Acessibilidade e inclusão digital | 145 Gabarito | 165 Referências | 175 Carta ao Aluno No mercado atual existe uma diversidade de softwares para uso empresarial ou informal. Os sistemas podem auxiliar bastante os processos de uma empresa e otimizar o tempo de trabalho; para isso, necessitam ser de fácil uso, com uma interface amigável ao usuário e, principalmente, ter qualidade. O que é necessário um software ter de qualidade? A usabilidade de um software deve ser cuidadosamente estudada, pois compreender a interação do homem com o compu- tador pode definir o sucesso ou o fracasso de uma aplicação. Além dos aspectos de usabilidade, se faz necessário reconhecer outros aspectos importantes que garantem a qualidade do software, assim como as etapas de planejamento e produção que devem ser rigo- rosamente seguidas. – 6 – Qualidade e Usabilidade de Software Neste livro vamos apresentar os conceitos fundamentais relacionados à qualidade de software, métricas, normas e a gestão da qualidade de software. Após este estudo, esperamos que você tenha facilidade para gerir e reconhecer a qualidade e usabilidade dos softwares disponíveis no mercado e identificar os requisitos necessários para o desenvolvimento de um software com qualidade. Esperamos que seu estudo não termine por aqui. Com base neste mate- rial, realize as atividades propostas, leia os textos indicados e faça você mesmo a sua pesquisa para aprofundar os conhecimentos aqui apresentados. Bom estudo! Qualidade de software Introdução O dia a dia das organizações demonstra como é frustrante a realidade do desenvolvimento de software: produtos mais caros do que deveriam ser, gastos desnecessários, cronogramas estourados, estresse no trabalho, desenvolvedores desmotivados, erros recorren- tes nos projetos etc. Todos na organização saem perdendo com isso, sem exceção. Para que os problemas enfrentados pelas organizações pro- dutoras de software possam ser resolvidos, faz-se necessária uma conscientização de que, para desenvolver softwares, é preciso muita disciplina, pois somente com um processo ou um modelo de quali- dade é possível construir sistemas de computação adequados. Desse modo, o objetivo deste capítulo é apresentar uma reflexão sobre a qualidade de software (conceito, fundamentos e processo), emba- sada em pesquisa bibliográfica da área. 1 Qualidade e Usabilidade de Software – 8 – 1.1 A qualidade de software Qualidade é a capacidade de um produto ou serviço para atender às neces- sidades do usuário (BEYON, 2011). No desenvolvimento de software, a qua- lidade do projeto acompanha os requisitos de qualidade, as especificações e o design do sistema. Ela está focada principalmente no aspecto de implementa- ção, em que é observado se a execução segue o design planejado e se o sistema resultante está cumprindo com os objetivos e requisitos de desempenho. Para garantir a qualidade do software são necessários: envolvimento de pessoas, definição de requisitos do software, integração e melhoria contínua dos processos, ferramentas atualizadas e métodos de trabalho, conforme observado na Figura 1: Figura 1 – Qualidade do software. Métodos Pessoas e definição de requisitos Ferramentas Integração e melhoria contínua Garantia da qualidade de software Fonte: Elaborada pela autora. De acordo com a Figura 1, para se garantir a qualidade de um soft- ware é preciso pessoas (analistas, programadores, webdesigners, gestores etc.) que tenham não apenas conhecimento da área, mas que saibam trabalhar em equipe e tenham disciplina e comprometimento com a organização. Elas têm de ter em mente os objetivos e as restrições do sistema a ser desenvolvido, de modo a definir suas propriedades e seus requisitos. Os requisitos de um software, também chamados de requerimentos de software ou de requisitos funcionais de um sistema, podem ser compreendi- dos como “as funções ou atividades que o software ou sistema faz (quando pronto) ou fará (quando em desenvolvimento)” e “condições ou capacita- ções que devem ser contempladas pelo software, solicitadas pelo cliente ou – 9 – Qualidade de software usuário para resolver um problema ou alcançar um objetivo” (REZENDE, 2005, p. 123). Para se atingir a qualidade de software, ela deve ser incorporada à inte- gração de todas as funções e recursos de uma empresa, desde a alta admi- nistração. Essa integração deve estar aliada à melhoria contínua e à revisão dos processos. Por último, o uso de ferramentas adequadas para o monitoramento da qualidade de software auxilia a corporação na mensuração da qualidade. Esse monitoramento pode ser feito por meio de métodos estatísticos que são cada vez mais indispensáveis no controle da qualidade. Tais métodos são recursos de verificação e validação da qualidade do software e controlam se o software foi desenvolvido de acordo com as especificações desejadas, de maneira cor- reta, e garantem que o software atenda aos propósitos desejados. 1.1.1 Fundamentos da qualidade de software Originalmente, a qualidade de um programa ou sistema era avaliada de acordo com o número de defeitos a cada mil linhas de código. Atualmente, com a evolução do conceito, outros fatores determinam a qualidade do software (BENYON, 2011): 2 Operações de produtos: ascaracterísticas operacionais. 2 Correção: grau em que um programa atende sua especificação e atinge os objetivos definidos pelo usuário. 2 Confiabilidade: nível de execução esperada de um software para realizar as funções com precisão. 2 Eficiência: número de computadores e recursos exigidos pelo pro- grama para executar suas funções com o tempo de resposta adequado. 2 Integridade: medida em que pode ser controlado o acesso ao software ou dados por usuários não autorizados. 2 Facilidade de uso: esforço necessário para aprender, usar e interpre- tar a funcionalidade do sistema. 2 Revisão do produto: capacidade de resistir a mudanças de tecnologia. Qualidade e Usabilidade de Software – 10 – 2 Facilidade de manutenção: necessária para localizar e corrigir um bug no sistema. 2 Flexibilidade: esforço necessário para modificar um programa. 2 Facilidade de teste: condição necessária para testar um programa, de modo a assegurar que a função desejada não exija esforço. 2 Transição do produto: capacidade de adaptação a novos ambientes. 2 Portabilidade: necessária para transferir um programa de um ambiente de hardware ou software a outra tecnologia. 2 Reutilização: grau em que um componente de programa ou software pode ser reutilizado em outras aplicações. 2 Interoperabilidade: integração entre sistemas e outros aplicativos. O CMM (Capability Maturity Model) é um modelo de qualidade de software que classifica as empresas em níveis de maturidade, ou seja, determina a maturidade dos processos realizados para produzir cada software. De acordo o CMM, as organizações podem ser classificadas em cinco níveis de maturidade: No nível 1 (inicial), o das organizações mais imaturas, não há nenhuma metodologia implementada e tudo ocorre de forma desor- ganizada: por sua vez, no nível 5 (otimizado), o das organizações mais maduras, cada detalhe do processo de desenvolvimento está definido, quantificado e acompanhado. Assim, a organização consegue até absorver mudanças no processo sem prejudicar o desenvolvimento do software. (RESENDE, 2005, p. 137). Para atingir um nível maduro de produção, métodos específicos devem ser implementados (WEBER, 2012): 2 Gerenciamento de requisitos: é o processo contínuo de análise e documentação dos requisitos do software. Ocorre durante o pro- jeto de desenvolvimento de software e envolve os usuários-chave ou stakeholders. 2 Planejamento de projeto: busca refinar e detalhar os objetivos do projeto e planejar o trabalho necessário para alcançá-los. – 11 – Qualidade de software 2 Monitoramento e controle de projetos: consiste em medir e coletar informações sobre o desempenho do projeto, assim como informar os envolvidos. 2 Gestão de fornecedores: é o processo de adoção de boas práticas e de controle e gestão dos fornecedores. 2 Garantia de qualidade: consiste no acompanhamento do projeto e na avaliação de seus diferentes aspectos para garantir que os padrões de qualidade sejam seguidos. 1.1.2 Aspectos no desenvolvimento do software com qualidade A engenharia de software procura auxiliar a produção de programas e sistemas de boa qualidade, com baixo custo e dentro do prazo programado. Ela visa à melhoria de desenvolvimento de software ao longo do tempo, considerando que as tarefas relativas ao processo podem ser aprimoradas, controladas e medidas. Um dos principais benefícios de um processo de desenvolvimento de software definido e disciplinado é a melhoria de sua visibilidade, ou seja, as atividades desse processo são gerenciáveis e, por isso, seus prazos e custos expressam melhor a realidade. Aqui, a engenharia de software será discutida de duas formas: a conven- cional, que detalha os aspectos principais desse ramo, e outra, mais específica, que detalha o uso da orientação por objeto. A engenharia de software procura atender uma necessidade humana, da mesma forma que outras ramificações da engenharia tratam de assuntos relacionados à mineração, agricultura, moradia e tantos outros que justifi- cam a utilização de algum conhecimento científico específico. Ela traz bene- fícios por meio dos recursos tecnológicos disponíveis para o tratamento de informações. Uma parte dos métodos da engenharia de software vem da ciência da computação e a outra da experiência adquirida pelo usuário. A engenharia de software é composta por um conjunto de disciplinas específicas relacionadas à ciência da computação e utiliza as abstrações dessa área, como algoritmos e estruturas de dados, para criar sistemas de computador que atendam às Qualidade e Usabilidade de Software – 12 – necessidades do usuário, usando, para isso, um processo definido e discipli- nado, por meio da tecnologia existente. Existem três conceitos muito importantes na engenharia de software, que se relacionam intrinsecamente: 2 Processo: trata-se de um conjunto de passos ordenados usado para atingir um fim específico, sendo composto por atividades, méto- dos, práticas e transformações. 2 Projeto: é o que concretiza um processo. 2 Produto: é o objetivo do processo. Esses conceitos podem ser relacionados da seguinte maneira: um pro- jeto tem um escopo delimitado por datas de início e de fim, com pontos de controle, chamados de marcos de projeto, para que possa ser acompanhado e gerido. O escopo do projeto é um processo constituído de documentação que detalha o que é feito, quando e por quem, tendo por meta a concretização do produto especificado. De modo geral, um produto tem um ciclo de vida em que é concebido, desenvolvido, entra em operação e sai de operação. Um produto de software é criado a partir do momento em que se percebe a necessidade de sua existên- cia, e, assim, um conjunto de requisitos é determinado e desenvolvido para que seja posto em operação. Quando o produto não é mais necessário ou se torna obsoleto, seu ciclo de vida termina e ele é retirado de operação. A literatura disponível varia muito ao definir as disciplinas da engenha- ria de software, a qual se configura como uma área interdisciplinar que se baseia nos fundamentos de várias disciplinas (RESENDE, 2005). Elas podem ser distribuídas entre os aspectos de requisitos, planejamento de projetos e qualidade, conforme se discutirá a seguir. 1.1.2.1 Engenharia dos requisitos Os requisitos descrevem ou expressam as características de um dado produto de software, podendo ser funcionais ou não funcionais. Requisitos funcionais são aqueles que determinam o comportamento do produto de – 13 – Qualidade de software software de acordo com uma situação específica, enquanto os requisitos não funcionais quantificam aspectos desse produto, como, por exemplo, desem- penho, disponibilidade ou portabilidade. Os requisitos precisam ser especificados em um documento, devendo-se detalhar e distinguir os explícitos e os normativos. Os requisitos explícitos são aqueles levantados por desenvolvedores com base nas informações dos usuários e os requisitos normativos são os provenientes de leis e normas aplicados ao produto de software (PRESSMAN; MAXIM, 2016). Existem, ainda, os requisitos de expectativa do usuário, os quais não estão documentados. Eles são chamados de requisitos implícitos e são totalmente indesejados, porém podem ser minimizados por meio de uma boa especifi- cação de requisitos, ou seja, detalhando-se bem os explícitos e normativos. Para obter uma boa especificação de requisitos, faz-se necessário o uso de técnicas de levantamento, documentação e análise; constitui-se, assim, a engenharia dos requisitos, uma disciplina da engenharia de software. Uma boa engenharia de requisitos aumenta a compreensão do produto para o seu público-alvo e também diminui a instabilidade dos requisitos, ou seja, a alteração dos requisitos constantes no documento de especificação.A instabilidade onera o projeto de várias formas, como, por exemplo, no aumento de prazos e custos. Porém, essa alteração de requisitos também pode acontecer devido a mudanças em requisitos normativos, sendo inevitável a variação do contexto do produto. O controle dos requisitos precisa ser, então, submetido a algum tipo de gestão, pois eles podem ser alterados mesmo à revelia do usuário. Isso constitui a gestão de requisitos, outra disciplina da engenharia de software. 1.1.2.2 Engenharia de gestão de requisitos Além de especificar corretamente os requisitos, gerentes de projetos devem estar atentos a outros dois fatores, os prazos e os custos, pois estes, juntamente com os requisitos, determinam o sucesso ou o fracasso do projeto de software. Um produto de software deve atender aos requisitos e às necessidades dos usuá- rios e também deve ser construído dentro do prazo e do custo estimados. Qualidade e Usabilidade de Software – 14 – O aumento ou a alteração de requisitos acarreta aumentos de prazos e/ ou de custos. No caso da redução de requisitos, os prazos e os custos tam- bém podem sofrer alteração, mas isso não é regra. O bom planejamento de projetos tenta equilibrar os componentes dos vértices desse triângulo crítico (requisitos, prazos e custos), com base em uma boa especificação de requisitos e com técnicas de estimativa e análise de tamanho, esforços, prazos e riscos. O planejamento de projetos é a disciplina da engenharia de software que trata desses aspectos. O planejamento de projetos tem uma disciplina complementar, cha- mada de controle de projetos, cujo objetivo é acompanhar o progresso dos pro- jetos, comparando o previsto com o realizado. Busca solucionar os problemas detectados, replanejar os projetos, quando houver necessidade, e renegociar os compromissos assumidos. Também diz respeito à gestão de requisitos a gestão de contratos. As organizações que terceirizam a produção de software devem estar capacitadas nessa gestão, porque precisam especificar corretamente todos os requisitos do produto, selecionar os candidatos mais qualificados, ter proficiência no acompanhamento do projeto para intervir quando necessário e verificar os critérios para a aceitação do produto (BENYON, 2011). 1.1.2.3 Engenharia de gestão de configurações Para gerir com qualidade todos os artefatos produzidos no processo de desenvolvimento, a engenharia de software tem a disciplina de gestão de con- figurações – gerência de configuração, ou, ainda, gestão de configuração de software, uma área responsável por fornecer o apoio para o desenvolvimento de software. Suas principais atribuições são o controle de versão, o controle de mudança e a auditoria das configurações. Um grupo de pessoas deve ser designado para controlar esses artefatos de software, porque todos são passíveis de alterações. Em caso de organizações pequenas que não disponham de pessoal suficiente, um membro da equipe de desenvolvedores pode ser designado para essa função. Essa é uma disci- plina em que é fortemente recomendado o uso de ferramentas automatizadas, devido ao grande volume de artefatos e de versões destes que são geradas durante todo o processo de desenvolvimento (WEBER, 2012). – 15 – Qualidade de software 1.2 Processos em qualidade de software Para falar sobre qualidade em software, é preciso introduzir uma dis- cussão sobre os erros aos quais um processo de desenvolvimento de software está sujeito. As disciplinas da engenharia de software que regem a garantia da qualidade dizem respeito ao impacto causado por esses erros. 1.2.1 Erros que devem ser evitados A qualidade de um produto é definida pelo grau de conformidade com os seus requisitos e está diretamente relacionada à qualidade do processo uti- lizado em sua construção. Pode-se afirmar, então, que a qualidade é uma relação construída com base em processos, pessoas e tecnologia envolvidos na construção de um produto. Esses três elementos formam o segundo triân- gulo crítico da engenharia de software e indicam os fatores da produção (BENYON, 2011). Os defeitos ocorrem em um produto de software em todas as suas fases de desenvolvimento. Eles são encontrados de diversas formas, como no desempenho aquém do desejado, nas funções que não são executadas correta- mente ou na dificuldade para utilização do sofware. Assim, os defeitos estão relacionados à não conformidade com os requisitos explícitos, os normativos e os implícitos. Os erros relativos ao produto estão vinculados a algum desses fatores e são defeitos de definição de requisitos ou defeitos introduzidos ao longo do projeto. Os mais comuns são a introdução de características desnecessárias aos requisitos, alteração dos requisitos sem uma análise de impacto e erro no foco do desenvolvimento, quando ele é voltado para a pesquisa e não para a produção em si. Os erros relativos ao processo estão relacionados com processos informais ou processos oficiais rígidos e burocráticos. Os mais comuns são (WEBER, 2012): 2 desperdício de tempo antes do início do projeto; 2 pressões por prazos otimistas e o não cumprimento destes por serem impossíveis; Qualidade e Usabilidade de Software – 16 – 2 falha no planejamento de projetos em que se omitem as estimativas de atividades, como as de garantia da qualidade e a omissão da análise de riscos; 2 falha no método de gerir o projeto; 2 pressa para começar a etapa de codificação; 2 falha na subcontratação de serviços; e 2 entrega do produto sem estar totalmente pronto ou testado. Entre os requisitos e a codificação existe o projeto, presente em todas as fases do processo. Os defeitos de projeto são tão graves como os defeitos pro- venientes de requisitos. Eles se caracterizam por dificuldade para utilização do software, desempenho ruim, defeitos aleatórios de difícil reprodução e dados inconsistentes que comprometem a manutenibilidade e a extensão. Um bom projeto deve ser também documentado. Como todas as fases do desenvolvimento do projeto são passíveis de injetar erros no produto, é preciso haver atividades como testes, revisões for- mais e informais e auditorias, que visem garantir a qualidade do software, detectando precocemente cada erro. Estudos já demonstraram que o aumento da qualidade reduz o tempo de desenvolvimento, devido ao refinamento na detecção e eliminação precoce de defeitos, o que é bem mais barato que corri- gir o defeito em um estágio avançado do processo (BENYON, 2011). Os métodos de garantia de qualidade devem levar em consideração o fator humano: é mais fácil detectar erros dos outros do que os próprios. Assim, revisões, testes e auditorias devem ser realizados por pessoas diferentes daquelas que desenvolveram o produto. Por fim, a garantia da qualidade deve ser gerida por um grupo de pessoas independente dos desenvolvedores e que não mantenha nível hierárquico com estes ou com o gerente do projeto e tenha acesso à alta gerência da organização. Já os erros relativos a pessoas podem ocorrer por: falta de patrocínio para o projeto; ausência de participação dos interessados no produto, como os usuários e desenvolvedores; atritos entre as partes envolvidas; defeitos na formação da equipe do projeto, como a falha na contratação de pessoas; falta de entrosamento entre funcionários e dependência em relação a determinadas – 17 – Qualidade de software pessoas; ambiente inadequado ao trabalho, com muito barulho, pouco espaço e fatores ergonômicos inapropriados, e falta de motivação do pessoal (BENYON, 2011). Os erros relativos à tecnologia podem ocorrer por uma estimativa oti- mista de que muitos problemas podem ser resolvidos por meio de alta tecno- logia, esquecendo-se de que para utilizá-la em profundidade é necessário trei- namento e experiência. Assim, pode haver falha na análise para mudançade tecnologia e a substituição desta no meio de um projeto, falta de automação de atividades como as de gestão de configurações, ausência de ferramenta de modelagem e automação de atividades de testes. 1.2.2 Modelos de ciclo de vida Para a existência de um processo de desenvolvimento de software, é pre- ciso ter definido o seu modelo de ciclo de vida. Existem vários tipos de mode- los, que se diferenciam principalmente pelo grau de controle aplicado sobre o processo em questão e sua visibilidade para o cliente no seu decorrer, como especificado a seguir. 2 Codifica-Remenda: é o pior de todos os modelos de ciclo de vida aqui apresentados e, provavelmente, o mais utilizado. Com base em um problema existente, e não um problema modelado ou especifi- cado, mas sim definido de uma forma qualquer, passa-se imediata- mente à codificação. Os erros encontrados são corrigidos conforme a demanda, daí o termo remenda. Muitas vezes não existe um pro- cesso definido ou, se existe, ele não é seguido, é impossível de ser gerido e, portanto, não se pode assumir compromissos confiáveis. 2 Cascata: esse modelo de ciclo de vida tem a vantagem de apresen- tar pontos de controle que permitem demarcar as fases do processo, facilitando a sua gestão. Porém, ele é rígido e burocrático, porque não permite a correção de erros nas fases anteriores e tem baixa visibilidade para o cliente, pois este não recebe feedback nos pontos de controle existentes, assim o único resultado que o cliente vê é o final. Ele apresenta uma variante que permite a realimentação entre fases, porém esta dificulta a gestão de projetos. Qualidade e Usabilidade de Software – 18 – 2 Espiral: modelo de ciclo de vida em que um produto é desen- volvido em diversas iterações (repetições). Uma iteração nova representa uma volta na espiral. Sua vantagem é que permite a construção de produtos com prazos curtos e a desvantagem é que é difícil de ser gerido. 2 Prototipagem evolutiva: utiliza o modelo de ciclo de vida em espi- ral para construir o produto em protótipos, cobrindo progressiva- mente os requisitos até a finalização. Sua vantagem é que apresenta visibilidade e alta flexibilidade para o cliente. Como desvantagem, ele precisa de equipes disciplinadas e experientes; o projeto deve ser robusto para que a estrutura do produto permaneça confiável ao longo dos protótipos, além disso, ele é também difícil de ser gerido. 2 Entrega evolutiva: esse modelo de ciclo de vida é uma combinação dos modelos cascata e prototipagem evolutiva. Apresenta a vantagem de ter alta visibilidade para os clientes e facilidade de gestão, por apresentar pontos de controle bem definidos. Sua desvantagem é a necessidade de um projeto que seja robusto para que a estrutura do produto permaneça confiável ao longo das liberações programadas. 2 Dirigido por prazo: um conjunto de requisitos essenciais é defi- nido e entregue no prazo programado nesse modelo de ciclo de vida. O produto final é, na verdade, um produto parcial e o res- tante é desenvolvido em processos posteriores, geralmente cha- mados de manutenção. 2 Dirigido por ferramenta: utiliza-se um processo proposto por uma ferramenta CASE1 e podem ser adequados a um determinado tipo de produto, porém fica restrito ao domínio da aplicação. Mesmo que uma organização decida por não desenvolver, mas adquirir um produto de software, ela tem de ter competência para gerir os processos de aquisição, implantação, adaptação e integração com outros sistemas e a orga- nização. Isso pode sair mais caro do que o processo de desenvolvimento em si. 1 Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abrange todos os programas (as “ferramentas”) que auxiliam os analistas nas atividades de en- genharia de software, desde análise de requisitos e modelagem, até a programação e os testes. – 19 – Qualidade de software 1.2.3 Processos de desenvolvimento de software Para que a organização possa ser considerada madura, ela precisa ter pro- cessos de desenvolvimento formalmente definidos e que possam ser melhora- dos continuamente, como os processos apresentados a seguir. Processo pessoal de software – PSP: utiliza o modelo de ciclo de vida em entrega evolutiva e não há tratamento específico para requisitos. Na fase de planejamento do PSP, executam-se as atividades de estimativas de tamanho (com base em modelo de orientação a objetos), esforços, crono- gramas e defeitos. O projeto é rigoroso tanto para concepção quanto para verificação e é realizado utilizando-se orientação a objetos, síntese lógica e máquinas sequenciais. Processo de software para times – TSP: utilizando um modelo de ciclo de vida em espiral, esse processo é uma sequência do PSP. O TSP cobre a área de gestão de requisitos, planejamento e controle de projetos, garantia da qualidade e gestão de configurações não cobertas pelo PSP. Processo unificado: esse processo é dirigido a casos de uso, centrado na arquitetura, sendo iterativo e incremental, e usa a UML (Unified Modeling Language) como notação para os modelos que o compõe. Ele utiliza um modelo de ciclo de vida em espiral e é dividido em fases e fluxos de trabalho. Cada fase representa um marco gerencial do projeto e cada fluxo de trabalho trata de um tema técnico específico. O RUP (Rational Unified Process) e o EUP (Enterprise Unified Process) são baseados no processo unificado. Práxis: é um processo com fins didáticos e baseado em tecnologia de orientação a objetos e sua notação de análise e projeto também é UML. Apresenta elementos do processo unificado, mas com influência do PSP e do TSP. Da mesma forma que o processo unificado, o práxis abrange fases e fluxos: uma fase é dividida em uma ou mais iterações, e um fluxo é dividido em uma ou mais atividades. Um dos objetivos de um processo de desenvolvimento de software é capacitar uma organização a identificar rapidamente e solucionar facilmente os problemas. Ora, para isso ela necessita de maturidade. Uma organização imatura é ruim aos profissionais desenvolvedores e gerentes, clientes e usuá- rios. Para os profissionais, é ruim porque o ambiente de trabalho é pouco Qualidade e Usabilidade de Software – 20 – adequado, estressante, o grau de motivação é baixo e os processos são difíceis de gerir. Já para os clientes e usuários, é ruim porque a qualidade do produto final não é boa ou porque foram entregues fora do prazo e do custo estimado. Todos esses problemas podem ser minimizados, e até mesmo resolvidos, pela definição formal de um processo de desenvolvimento de software. O processo precisa ser definido de forma a auxiliar a organização a pro- duzir produtos melhores, com baixo custo e dentro do prazo estimado, e uma consequência inerente ao refinamento do processo é que os produtos são produzidos mais rapidamente. Por outro lado, se a organização erra defi- nindo um processo rígido e burocrático, ele servirá apenas para formalizar uma situação e não será efetivamente usado na prática. Um software é baseado em abstrações lógicas, e não em princípios físicos estáveis. Como consequência, a disciplina para gerir um processo desse tipo deve ser mais rígida que de costume. Assim, um processo de desenvolvimento de software ruim não vai conduzir a um produto de qualidade satisfatória. É um erro imaginar que a qualidade de um software não pode ser medida; ela pode e deve ser medida por meio da produtividade ou do número de defeitos encontrados, por exemplo. As métricas devem ser coletadas, anali- sadas e normatizadas para que o processo possa ser gerido e melhorado. Outro erro muito comum em organizações é acreditar que os problemas da produção são mais técnicos que gerenciais. Com um processo de negócio ruim, pouco adianta a tecnologia e esta não tem retorno; sem processos de negócio mapeadose robustos, um projeto de desenvolvimento de software inicia de forma incorreta, já que aqueles são a base deste. O mesmo se aplica quando a gestão é deficiente. Mais uma vez, os indicadores dos problemas da produção recaem nos problemas gerados por um processo mal definido. As pessoas erram porque a informação chega até elas de forma incorreta, incompleta ou confusa, os recursos disponíveis não são adequados ou não são suficientes, o processo é mal definido ou difícil de seguir e falta treinamento da área de negócio nos processos e tecnologias utilizados (BENYON, 2011). Infelizmente, a tendência é acreditar que os erros são do corpo técnico, por falta de comprometimento e treinamento, e não devido a processos – 21 – Qualidade de software inadequados ou uma gerência de projetos despreparada. Os gerentes podem não conhecer totalmente o domínio da aplicação e precisam ser treinados em gestão de pessoal. Também precisam estar comprometidos com o projeto para se abstrair de paixões pessoais e evitar competições internas que sem- pre existem dentro das organizações, procurando levar ao conhecimento dos desenvolvedores as informações corretas, completas e precisas. A conclusão extraída é óbvia: fatores de produção, pessoas, tecnologia e processos são muito dependentes uns dos outros. Não basta ter tecnolo- gia se não há um corpo técnico com capacidade de operá-la, e isso requer treinamento e experiência. Não basta ter tecnologia e um corpo técnico altamente capacitado se os gerentes acreditam que isso resolverá todos os problemas e eles terão o produto desejado dentro do prazo e custo estima- dos. Para tudo isso, é preciso um processo definido. Para a realização da melhoria de processos, faz-se necessária uma análise em que os problemas relativos a eles são de responsabilidade dos gerentes de projetos. Ora, isso porque os gerentes possuem um universo de variá- veis envolvidas, estando capacitados a procurar e encontrar as deficiências do processo para interferir quando for preciso. A atuação de um gerente de projeto deve ser de forma a estimular melhorias sem procurar efetivamente os culpados, porque isso leva ao ocultamento dos problemas reais. De outra forma, o processo fatalmente não funcionará. É tarefa do gerente promover aperfeiçoamentos, reduzindo o desgaste no ambiente de trabalho, a fim de aumentar a produção. Mas, para isso, é preciso que ele conheça o processo para poder agir eficazmente, ter o apoio da alta administração, que deve estar ciente do investimento a ser feito, envolver o corpo técnico e, por último, mas não menos importante, ele tem de ter em mente que a capacitação no processo não é conseguida da noite para o dia – ela é realizada em etapas, com marcos para pontos de controle bem definidos. Assim, os processos de qualidade de software englobam fases que bus- cam aumentar a eficiência e a eficácia dos softwares produzidos, conforme pode ser observado na Figura 2. O processo de melhoria contínua envolve os procedimentos de planejamento, controle e garantia da qualidade, em que as Qualidade e Usabilidade de Software – 22 – revisões devem ser contínuas ao longo de todo o projeto de desenvolvimento do software. Figura 2 – Processos de qualidade do software. Qualidade do software – Gestão da qualidade do software – conjunto de caracterísiticas de um sistema para atender os requisitos das partes interessadas. direção e coordenação das atividade de qualidade de software Melhoria da qualidade do software – processo de melhoria contínua 2 Estabelecer os objetivos, pro- cessos e recursos Revisão dos processos de qualidade 2 Cumprir os obje- tivos e requisitos de qualidade 2 Garantir que os re- quisitos de qualidade sejam cumpridos Planejamento da qualidade Controle da qualidade Garantia da qualidade Fonte: Elaborada pela autora. A Figura 2 resume o que foi visto até aqui: o processo de melhoria da qualidade do software deve ser contínuo e revisado em todos as etapas. Num primeiro momento é feito o planejamento, em que se estabelecem os obje- tivos, processos e recursos. Durante o desenvolvimento, o controle de quali- dade deve estar sempre presente, buscando-se cumprir os objetivos e atender aos requisitos de qualidade. A garantia de qualidade é uma etapa final, em que é feita uma última avaliação do produto, no entanto, para que ela seja eficaz, também precisa estar presente em todas as etapas anteriores, num ciclo de melhoria contínua. – 23 – Qualidade de software 1.3 Reflexões sobre a qualidade dos softwares Para que o software tenha qualidade, ele deve ter usabilidade, funciona- lidade, confiabilidade, manutenibilidade e desempenho. Para que essas carac- terísticas de qualidade de software sejam atendidas é importante que sejam respondidas questões como: O software satisfaz a necessidade do usuário ou da empresa? Ele é confiável? Tem um bom desempenho? É fácil de usar? Pode ser corrigido com facilidade? Pode ser reutilizado em outro projeto? O software deve satisfazer a necessidade do cliente em relação à fun- cionalidade. Para isso, deve se propor a fazer o que é apropriado, de forma correta, ser capaz de interagir com os sistemas especificados, estar de acordo com as normas de qualidade de sofware e da organização e deve ser protegido para evitar acessos não autorizados. Com relação à confiabilidade o sistema deve ser imune a falhas e ser capaz de recuperar dados em caso de falhas. Além disso, deve ser fácil de usar (com navegação intuitiva) para atender o critério de usabilidade, ou seja, o sistema deve ter um nível fácil de operação para o usuário e ser de fácil com- preensão, pois se for muito complicado exigirá vários treinamentos, o que dificultará seu emprego. Por último, o software deve ser de fácil modificação, adaptação e valida- ção. A eficiência do software é outro item de qualidade a ser verificada pois deve ser enxuto, com bom tempo de resposta e de processamento na execução de suas funções, utilizando recursos e tempo aceitáveis pelo usuário. No contexto da engenharia de software, o processo de gestão de quali- dade é aquele que estabelece o comportamento essencial de um sistema, o qual pode ser mantido, independentemente de como o sistema é implementado. Um modelo de análise deve ser confeccionado visando às abstrações que indicam o que o sistema vai fazer. Assim, pressupõe-se que uma tecnologia perfeita esteja disponível e o analista considere que não haverá restrições de capacidade de memória; a comunicação entre os objetos será realizada na velocidade ideal; a adequação do sistema à plataforma de computador não será um empecilho; não acontecerão erros e outras questões relacionadas às abstrações de como fazer o sistema (BENYON, 2011). Qualidade e Usabilidade de Software – 24 – O modelo AOO (análise orientada a objetos) serve para formalizar a visão do mundo real no contexto do sistema de computador, estabelecendo os principais objetos que representam o domínio de uma aplicação e as estrutu- ras organizacionais impostas a tais objetos, bem como a colaboração existente entre eles, ou seja, as conexões de mensagens que mostram a forma de comu- nicação dos objetos com os demais (WEBER, 2012). Os benefícios trazidos pela melhoria dos processos são muitos. Os prin- cipais deles são (BENYON, 2011): 2 Engenharia de requisitos e gestão de requisitos: são práticas que produzem um retorno de investimento mais significativo porque é mais barato captar o requisito certo do que alterá-lo em fases posteriores do processo. 2 Projeto: menos significativo que o anterior, mas que não deixa de produzir impacto no retorno de investimento. 2 Garantia da qualidade: as atividades de garantia da qualidade – as que mais sofrem devido à pressa para entrega de um produto – dão retornoquando as necessidades de se refazer as etapas iniciais de um processo tendem a diminuir. 2 Prevenção de defeitos: aqui vale o ditado popular “é melhor preve- nir que remediar”. Entre as atividades de garantia da qualidade, as de prevenção de defeitos dão mais retorno do que as de correção. Ampliando seus conhecimentos O texto a seguir trata sobre a importância do trabalho do analista de requisitos no desenvolvimento de um software e as princi- pais dificuldades enfrentadas por esse profissional, cujo traba- lho muitas vezes é desvalorizado ou incompreendido pelos outros colaboradores e até mesmo gestores da organização. (FAGUNDES, 2011, p. 4-5) – 25 – Qualidade de software Quando se trabalha algum tempo com requisitos de software, percebe-se o quão ingrata é a atividade. Não por ser mais ou menos complexa que as outras, mas pela forma como é tratada pelos pares. O Analista de Requisitos é tomado na maioria das vezes como um documentador (até mesmo pelos próprios trabalhadores de requisitos), corrompendo o bem-fazer da atividade e provocando prejuízo aos projetos e degradando ainda mais a forma como se percebe a engenharia de requisitos. A percepção geral que se tem é que os analistas de requi- sitos entram em ação para atrasar os projetos e que a docu- mentação gerada é extensiva e de pouca valia. Às vezes parte dessa percepção é correta, mas a razão imputada é, na maioria das vezes, distorcida, apontando para uma origem incorreta. Muito mais vezes os problemas de requisitos se dão pela falta de preparação dos analistas, seu perfil e por uma fraca postura na relação com o cliente, em vez da len- dária mão invisível do processo. Como resultado desses fatores reais para uma construção ade- quada de requisitos, constrói-se uma escala de retrabalho que a equipe não entende exatamente por quê. Por várias vezes durante um projeto há questionamentos sobre a forma dos requisitos serem especificados ou se a proposta é adequada ou não, desviando o foco da atividade em voga no anda- mento do projeto. Para, então, corrigir o prumo e trabalhar requisitos é premente que se faça uma revisão de propósitos, motivações, formação, discurso e perfis, para que as pessoas corretas estejam aloca- das corretamente para realizar a atividade de maneira eficaz e eficiente. A adoção de novos processos e técnicas não surtirão efeito sem essa revisão. Qualidade e Usabilidade de Software – 26 – Atividades 1. Para se avaliar a qualidade do software, é fundamental medir e moni- torar todo o ciclo de seu desenvolvimento. Por quê? 2. O que são requisitos de software e como devem ser documentados? 3. Com relação aos processos de qualidade de software, quais são os principais erros encontrados? 4. Por que o modelo ciclo de vida codifica-remenda é o mais utilizado e o menos recomendado? Normas e padrões Introdução No Brasil, existe um corpo de normas nacionais baseadas em normas internacionais, que buscam garantir a proteção do con- sumidor por meio de produtos e serviços adequados. A adoção de padrões internacionais leva a melhores oportunidades de comércio global e reduz a produção de itens de baixa qualidade. Para os sistemas de gestão, a normalização também ajuda as organizações e as partes interessadas em suas atividades, em dife- rentes níveis, com seus próprios fins. Esse é um pré-requisito para a evolução de uma cultura de qualidade. A seguir, são apresentadas e discutidas diferentes padroniza- ções, suas aplicações e sua importância para ordenações em diversos contextos, incluindo o da qualidade de software. 2 – 28 – Qualidade e Usabilidade de Software 2.1 Normas e seus organismos normativos A normalização é o processo de desenvolvimento, implementação e melhoria dos padrões que se aplicam a ordens científica, industrial e eco- nômica diferentes, para organizar suas atividades. A Associação Americana de Teste de Materiais define padronização como o processo de formulação e implementação de regras, numa abordagem ordenada para atividades especí- ficas, visando a benefícios e com a cooperação de todos os envolvidos (CYBIS et al., 2015). As grandes somas de dinheiro que os países desenvolvidos inves- tem em organizações nacionais e internacionais de normalização são uma prova da importância dada à padronização (VALERIANO, 2005). A ISO (International Organization for Standardization) desenvolve nor- mas internacionais para diversos campos da tecnologia, exceto o eletrotécnico, coberto pela IEC (International Electrotechnical Comission), e as telecomu- nicações, abrangidas pela UIT (União Internacional de Telecomunicações). De acordo com a ISO, padronização é a atividade que visa estabelecer os problemas reais ou potenciais, provisões para uso comum e repetido, a fim de obter um nível ótimo de ordenação em um dado contexto, que pode ser tecnológico, político ou econômico (WEBER, 2012). A normalização envolve um conjunto de regras convencionais destina- das a simplificar, unificar e especificar produtos (WAZLAWICK, 2013): 2 Simplificar – procura manter apenas o estritamente necessário, seja em documentos, processos, orientações etc. As próprias normas também são simplificadas para serem facilmente assimiladas. 2 Unificar – a ideia é criar um padrão para os produtos, utilizado em todas as partes do mundo para permitir trocas internacionais. 2 Especificar – procura, por meio de uma linguagem clara e pre- cisa, identificar os produtos, definindo-os, categorizando-os, catalogando-os e detalhando suas características, de modo a orientar o consumidor. – 29 – Normas e padrões Em relação às normas técnicas, é importante conhecer os Organismos Nacionais de Normalização (NSB, do inglês National Standards Body) dos paí- ses de interesse, que, em geral, possuem um centro de informação sobre nor- mas. Os NSB têm um arquivo próprio de padronizações de organismos nacio- nais, regionais e internacionais, tais como as do British Standards Institution (BSI, ou Instituto Britânico de Normalização) e da Association Française de Normalisation (AFNOR – Associação Francesa de Normalização). No Brasil, o organismo responsável pela elaboração de normas técnicas é a Associação Brasileira de Normas Técnicas (ABNT). O papel dos NSB tem evoluído nas últimas décadas, com melhorias na infraestrutura física e econômica, avanços na tecnologia da informação, implantação de melhores práticas de fabricação, automação, transporte e mudanças em muitos aspectos que afetam o comércio e a indústria, levando a um aumento acelerado no volume de transações comerciais entre os países (SOMMERVILLE, 2011). Com a globalização, a média das áreas das organizações consideradas sob padronização foi estendida para incluir sistemas de gestão, indústrias de serviços e novas tecnologias que não existiam até a segunda metade do século XX (PRESSMAN; MAXIM, 2016). Os padrões são utilizados cada vez mais para apoiar os regulamentos técnicos, e mais direcionados para tecnologias convergentes e de rápido desenvolvimento, direcionados a uma ampla gama de partes interessadas (PFLEEGER, 2004). Novos produtos reguladores, com períodos mais curtos de desenvolvimento, são uma tentativa, por parte da comunidade normativa, para responder às exigências de governos, empresas e consumidores em todo o mundo (LAUDON; LAUDON, 2004). Assim, as atividades de padronização tornaram-se mais complexas e mais importantes para o desenvolvimento nacional e internacional. A criação da Organização Mundial do Comércio (OMC), em 1995, levou ao desen- volvimento de vários acordos na área, em especial o Acordo sobre Barreiras – 30 – Qualidade e Usabilidade de Software Técnicas ao Comércio e o Acordo sobre a Aplicação de Medidas Sanitárias e Fitossanitárias, ao qual todos os membros da OMC devem aderir (CAIÇARAJR., 2007). Esses acordos são uma tentativa de reduzir o impacto das normas e regulamentações usadas como barreiras técnicas ao comércio entre os países (CYBIS et al., 2015). 2.2 Normas ISO e modelos CCMI 2.2.1 ISO As normas ISO são amplamente respeitadas e aceitas internacio- nalmente pelos setores público e privado (CAIÇARA JR., 2007). A International Organization for Standardization, ou ISO, é uma organização não governamental, uma federação de organismos nacionais de normaliza- ção de todas as regiões do mundo, incluindo países desenvolvidos e países em desenvolvimento (MARSHALL JR. et al., 2012). Cada membro da ISO possui uma agência principal de normalização em seu próprio país. Os países-membros propõem as novas normas, envolvem-se em seu desenvolvimento e prestam apoio, divididos em grupos técnicos, em conjunto com a Secretaria Geral da ISO, localizada em Genebra, na Suíça (PRESSMAN; MAXIM, 2016). O termo ISO tem raiz grega, significando igual, igualdade, o qual dá nome à organização, que também coincide com sua sigla. Esse é um signifi- cado muito adequado a essa entidade, uma federação internacional indepen- dente com o propósito de proporcionar sistemas uniformes de segurança, qualidade e eficiência do trabalho para trocas simples, entre países e regiões, de bens e serviços produzidos (PRESSMAN; MAXIM, 2016). O ano de 1945 foi fundamental para a história da entidade, pois os delegados do Comitê Coordenador de Padronização das Nações Unidas (UNSCC) se reuniram em Nova Iorque para tentar criar uma organização de padrões, fundando as bases para a ISO (PRESSMAN; MAXIM, 2016). Ela foi estabelecida em 1946, com a participação de 64 delegados, de 25 – 31 – Normas e padrões países, em Londres, Inglaterra, na sede do Instituto de Engenheiros Civis. Essas pessoas decidiram aventurar-se no projeto de uma organização cujo objetivo seria facilitar a industrialização e as regras de unificação e melhoria da coordenação internacional das empresas (CAIÇARA JR., 2007). Em 27 de fevereiro de 1947, a ISO foi finalmente oficializada e inicia- ram-se suas operações. Naquele ano, mais de 19.500 normas foram criadas para todos os setores de produção, incluindo o setor da saúde, a indústria de alimentos, a de tecnologia etc. (PRESSMAN; MAXIM, 2016). Em 1987, surge a norma ISO 9000, com a finalidade básica de faci- litar ainda mais o comércio global. Para chegar a um consenso sobre essa legislação, foi necessário o apoio de 75% dos países que a compõem. Essa política baseia-se em dois pilares: melhoria e desempenho, enraizada em princípios, incluindo mercados, regulação, melhorias, responsabilidade, desenvolvimento do intelecto etc. A partir de 1994, foi implementada a versão ISO 9001, quando ela se tornou mais interessante para as empresas (CAIÇARA JR., 2007). A norma passou por um enorme crescimento desde então. A norma de 1994 era especificamente dirigida a empresas com processos de produção e, portanto, na revisão de 2000 (ABNT, 2000), ela foi simplificada e tornou-se aplicável a todos os tipos de empresas, públicas ou privadas. A versão atual do padrão é datada de 2015 – a ISO 9001:2015 (ABNT, 2015), um aperfeiçoamento de sua edição anterior, de 2008 – ISO 9001:2008 (ABNT, 2008). A fim de validar a implementação dessa norma, faz-se necessária uma auditoria de certificação e aplicação das regras de quali- dade, e, se a conformidade for constatada, é emitido um certificado à empresa (MARSHALL JR. et al., 2012). Em relação à engenharia de software, a NBR ISO/IEC 9126-1 é a atual padronização mundial de qualidade de produtos, propondo métricas e atributos para os produtos de software (ABNT, 2003). Sob o título geral Engenharia de Software – qualidade do produto, essa norma abrange, em suas três partes, o modelo de qualidade a ser adotado, as métricas internas e a as métricas externas – características e subcaracterísticas do produto de software. – 32 – Qualidade e Usabilidade de Software 2.2.2 CMMI O Capability Maturity Model Integration (CMMI) foi criado pelo SEI (Software Engineering Institute), um órgão de pesquisa da universidade norte- -americana Carnegie Mellon, e consiste em um modelo de garantia de quali- dade com enfoque voltado para a capacidade de maturidade de processos de software nas empresas. Em 1984, o SEI começou a pesquisa para desenvolver um quadro de melhoria e avaliação da qualidade das empresas de desenvolvimento de software que fornecem serviços para o Departamento de Defesa dos Estados Unidos. O resultado da investigação foi chamado de Capability Maturity Model Software (SW-CMM), um modelo de maturidade de capacidades desenvolvido para processos relacionados com a produção e manutenção de sistemas de software, que teve sua versão 1.0 publicada em agosto de 1991 (MARSHALL JR. et al., 2012). Posteriormente, como resultado do feedback gerado pela comunidade de software, novas versões alteraram e acrescentaram uma série de elementos na CMM, principalmente em relação a sua institucionalização nas organizações. Assim, o SW-CMM pode ser usado para dois fins (CAIÇARA JR., 2007): 2 Melhorar os processos relacionados com a produção e manutenção de software; 2 Definir critérios para a determinação do nível de maturidade de uma organização que produz e mantém software. Com o passar do tempo e a evolução do modelo CMM, estabelece-se o CMMI, que teve como um de seus propósitos unir vários modelos usa- dos em conjunto dentro de organizações, em prol de melhorias de processo (CAIÇARA JR., 2007), como modelos de desenvolvimento de software (SW-CMM), sistemas de engenharia (SECM) e desenvolvimento de produ- tos integrados (IPD-CMM). O CMMI serve como um guia que auxilia as empresas a gerenciar, mensurar e monitorar produtos e serviços e contém as práticas ligadas à gestão de projetos e de processos, à engenharia e ao suporte. Assim, o modelo CMMI busca a melhoria contínua dos processos organizacionais, por meio da análise e redesign, fornecendo, de acordo com Caiçara Júnior (2007): – 33 – Normas e padrões 2 Uma maneira de integrar os elementos funcionais de uma organização; 2 Um conjunto de melhores práticas com base em histórias de sucesso, comprovadas por organizações com experiência em práti- cas de melhoria de processos; 2 Uma ajuda para identificação de metas e prioridades para a melho- ria dos processos, dependendo dos pontos fortes e fracos da organi- zação, obtidos por um método de avaliação; 2 Um suporte às empresas em atividades produtivas complexas para coordenar as suas atividades; 2 Uma referência para avaliar os processos atuais da organização. O CMMI for Services fornece orientação para a prestação de serviços aos clientes internos e externos da organização. Em 2000, foi desenvolvido e publicado o método Requisitos de avaliação para o CMMI, que define os elementos considerados essenciais para avaliar o CMMI em uma empresa, e o Padrão de avaliação CMMI para melhoria de processos. Esses dois docu- mentos também foram atualizados como resultado do feedback da comuni- dade envolvida em CMMI, gerando a versão mais recente 1.2 do SCAMPI1 e ARC2, ambos publicados em 2006 (CAIÇARA JR., 2007). 2.2.2.1 Níveis de maturidade e capacidade O CMMI está dividido em cinco níveis de maturidade, que atestam o grau de evolução de uma organização em determinado momento e tem como objetivo principal guiar a melhoria de processos das empresas. Com ele é possível gerenciar o desenvolvimento e a produção de software, com base em prazos e custos estabelecidos e com mais qualidade. Esses níveis estão demonstrados na Figura 3: 1 Métodos de avaliação SCAMPI (Standard CMMI Appraisal Method for Process Improvement) são os métodos geralmente aceitos para avaliar organizações perante os modelos CMMI (ISD BRASIL, 2017). 2 O documento deavaliação por áreas de resultado-chave ARC (Appraisal Requirements for CMMI) descreve requisitos para diferentes tipos de avaliação, buscando uma uniformidade entre os métodos (CARNEGIE MELLON UNIVERSITY, 2006). – 34 – Qualidade e Usabilidade de Software Figura 3 – Níveis de maturidade do CMMI. 1 - Inicial Processo im- previsível e sem controle 2 - Repetível Processo disci- plinado 3 - Definido Processo consistente e padronizado 4 - Gerenciado Processo previ- sível e contro- lado 5 - Otimizado Processo con- tinuamente melhorado Fonte: Elaborada pela autora, com base em CMMI INSTITUTE, 2017. Esses níveis de maturidade de processos de uma organização são defini- dos a seguir (PRESSMAN; MAXIM, 2016): Nível 1: Inicial No nível 1 de maturidade, a maioria dos processos são ad-hoc e caóticos e a organização geralmente não fornece um ambiente estável para apoiá-los. Sucessos nesse caso ocorrem devido aos esforços para superar a concorrência e de pessoas competentes dentro da organização, e não do uso de proces- sos comprovados. Apesar desse caos, as organizações pertencentes ao nível 1 frequentemente produzem os produtos e serviços que disponibilizam; no entanto, frequentemente excedem seus orçamentos e não cumprem os seus planos. Essas empresas têm como características a tendência a não honrar os seus compromissos, a abandonar processos em tempos de crise e a incapaci- dade de repetir seus sucessos. Ainda, nesse nível os trabalhos são executados de modo redundante por pessoas que não compartilham seus métodos de trabalho com toda a organização. Nível 2: Repetível (Gerenciado) No nível 2, o caos passa a ser ordenado, e as organizações se concentram em tarefas diárias relacionadas com a administração. Cada projeto tem uma série de processos planejados e executados em conformidade com as políticas – 35 – Normas e padrões estabelecidas. São utilizadas pessoas qualificadas, que têm os recursos para produzir saídas controladas. A disciplina de processo refletida pelo nível 2 de maturidade ajuda a garantir práticas e projetos de acordo com planos documentados e tanto a produção como a prestação de serviços são definidos. Os contratos são esta- belecidos entre as partes interessadas e também revistos quando necessário. Artefatos e serviços são devidamente controlados, satisfazendo suas descrições específicas, padrões e procedimentos. Nível 3: Definido No nível 3 de maturidade, os processos são descritos em normas, proce- dimentos, ferramentas e métodos. O conjunto de processos padrão da orga- nização é estabelecido e continuamente melhorado, de modo consistente para toda a empresa. Os projetos são estabelecidos por meio da adaptação desse conjunto de procedimentos e normas de acordo com diretrizes específicas. Uma diferença importante entre os níveis 2 e 3 de maturidade é o escopo das normas: a descrição de processos e procedimentos. No nível 2, as nor- mas podem ser um pouco diferentes em cada instância específica do processo (por exemplo, em um projeto particular). No nível 3, padrões, descrições de processos e procedimentos em um projeto são adaptados com base em um conjunto de processos padrão da organização para determinado projeto ou unidade organizacional e, portanto, são mais consistentes. Outra distinção importante é que no nível de maturidade 3 os proces- sos são geralmente descritos de forma mais rigorosa do que no nível 2. Um processo definido apresenta claramente sua finalidade, insumos, critérios de entrada, atividades, papéis, medidas, etapas de verificação, saídas e critérios de saída. No nível 3, os procedimentos são geridos de forma mais proativa, compreendendo as inter-relações de atividades e medidas detalhadas do pro- cesso, seus artefatos e serviços. Nível 4: Gerenciado quantitativamente No nível 4, a organização e os projetos estabelecem metas quantitativas para medir a qualidade e o desempenho dos processos, as quais são utilizadas – 36 – Qualidade e Usabilidade de Software como critérios na gestão. Os objetivos quantitativos são definidos com base nas necessidades de clientes, usuários finais, organização, processos e atores. A qualidade e o desempenho das atividades são compreendidos em termos estatísticos e tratados em todo o processo de ciclo de vida. Para subprocessos selecionados, são recolhidas e analisadas estatisticamente medidas sobre pro- cessos de execução, as quais são incorporadas nas métricas de repositório da organização, para apoiar a tomada de decisão. As variações dos processos, quando ocorrem, devem ser identificadas e corrigidas na causa raiz para prevenir futuras ocorrências de mudanças de processos. Uma diferença importante entre os níveis 3 e 4 é a previsibilidade do desempenho do processo. No nível 4 de maturidade, esse desempenho é con- trolado usando-se técnicas estatísticas e quantitativas, e o processo é quantita- tivamente previsível; por outro lado, no nível 3 o desempenho do processo é previsível apenas qualitativamente. Nível 5: Otimizado No nível 5 de maturidade, uma organização melhora continuamente seus processos com base no conhecimento das causas comuns de variação inerente a processos. Trata-se de melhorias contínuas, incrementais e tecnoló- gicas. Os objetivos de melhoria de processos quantitativos para a organização são estabelecidos e continuamente revisados, sendo utilizados como critério de qualidade em processos. Uma diferença importante entre os níveis 4 e 5 é o foco da variação do processo. No nível 4 de maturidade, a organização direciona-se para encontrar as causas especiais de variação e fornecer uma previsão estatística dos resultados. No entanto, os resultados podem ser insuficientes para alcançar as metas esta- belecidas. No nível 5, a organização está focada nas causas comuns de variação de processo e modifica os procedimentos afetados para melhorar o desempenho deles e atingir os objetivos quantitativos de melhoria de processos. – 37 – Normas e padrões O quadro a seguir explica resumidamente o que acontece em cada um desses níveis. Quadro 1 – Características dos níveis de maturidade das organizações. Nível Características Inicial 2 Basicamente nenhuma prática forma de gerenciamento de enge- nharia de software está implantada na organização. 2 Tudo é feito à medida em que vão surgindo as necessidades. 2 O padrão usual é o não cumprimento de prazos e orçamentos estabelecidos. 2 A maioria das atividades são respostas a crises e não a tarefas pré-planejadas. 2 O processo de software é imprevisível e depende totalmente da equipe atual. 2 É impossível prever com precisão o tempo necessário para desenvolver um produto ou o seu custo. Repetível 2 Já estão implantadas práticas básicas de gerenciamento de projetos de software. 2 As técnicas de planejamento e gerenciamento se baseiam em expe- riências com produtos similares (daí o termo repetível). 2 Há o acompanhamento meticuloso dos cronogramas de prazo e da planilha de custos. 2 Os gerentes identificam problemas à medida que eles vão surgindo e tomam ações corretivas imediatas para evitar que eles se transformem em crises. 2 Medidas tomadas durante um projeto podem ser usadas para elaborar cronogramas e orçamentos realistas para projetos futuros. Definido 2 O processo para a produção de software é completamente documentado; 2 Tanto aspectos técnicos quanto gerenciais do processo são claramente definidos. 2 São feitos esforços contínuos para melhorar o processo onde for possível. 2 São usadas revisões para atingir as metas de qualidade de software. 2 Há a introdução de novas tecnologias, como as ferramentas CASE para aumentar a produtividade. – 38 – Qualidade e Usabilidade de Software Nível Características Gerenciado 2 A organização estabelecemetas de qualidade e produtividade para cada projeto. 2 A qualidade e a produtividade são medidas continuamente. 2 Ações corretivas são tomadas quando ocorrem desvios inaceitáveis das metas. 2 Controles estatísticos de qualidade são implantados para a gerência ser capaz de distinguir o desvio esporádico de um problema significativo nos padrões de qualidade ou produtividade. Otimizado 2 Há aperfeiçoamento contínuo do processo. 2 São usadas técnicas de controle estatístico de processos e qualidade para orientar a organização. 2 O conhecimento adquirido em cada projeto é utilizado em projetos futuros. 2 O processo incorpora uma curva de realimentação positiva, resultando em uma melhoria contínua na produtividade e na qualidade. Fonte: Elaborado pela autora, com base em SCHACH, 2010, p. 93-94. Dependendo do modelo de representação usada em CMMI, existem duas maneiras de realizar a melhoria de processos. Uma delas é utilizando a representação contínua e a outra é melhorando toda a organização, de acordo com os processos definidos. A representação contínua se concentra em melhorar um procedimento de modo que a organização possa ser certificada para uma área de processo, em um determinado nível de capacidade. Existem seis níveis de capacidade ao longo dos quais os processos são associados em uma área (Quadro 2), e cada um deles é construído sobre o nível anterior – ou seja, um processo, para chegar a determinado nível de capacidade, deve necessariamente ter atingido um nível anterior (CAIÇARA JR., 2007). – 39 – Normas e padrões Quadro 2 – Níveis de representação contínua e escalonada. Representação contínua Representação escalonada Nível de capacidade Nível de maturidade Nível 0 Incompleto Nível 1 Realizado Inicial Nível 2 Manejado Manejado (repetível) Nível 3 Definido Definido Nível 4 Manejado quantitativamente Manejado quantitativamente (gerenciado) Nível 5 Otimizado Otimizado Fonte: CYBIS et al., 2015. Adaptado. Nos processos de representação contínua, os níveis de capacidade são delimitados da seguinte forma: 2 Nível 0 – Incompleto – um processo é chamado de incompleto quando um ou mais objetivos da área de processo não estão em conformidade. 2 Nível 1 – Realizado – é chamado de feito ou realizado o processo que satisfaz todas as metas específicas da área de processo. 2 Nível 2 – Manejado (produzido) – é designado processo de gestão quando o projeto apresenta a infraestrutura para suportá-lo. O pro- cesso é planejado e executado de acordo com a política da empresa, envolvendo as partes interessadas, e emprega pessoas qualificadas – 40 – Qualidade e Usabilidade de Software que tenham recursos adequados para produzir saídas controladas. É monitorado, controlado, revisto e avaliado de acordo com sua descrição específica. 2 Nível 3 – Definido – é uma adaptação do conjunto de normas da organização, de acordo com as diretrizes da empresa, e fornece dispositivos, medidas e outras informações para melhorar os ativos da organização. 2 Nível 4 – Manejado (gerenciado) quantitativamente – é contro- lado usando-se técnicas quantitativas estatísticas e outras. Metas quantitativas para a qualidade e o desempenho do processo são estabelecidas e utilizadas como critérios para sua gestão. 2 Nível 5 – Otimizado – otimização é a melhoria contínua do pro- cesso, com base no entendimento de causas comuns de variação de processo. Esse processo é realizado por meio de aperfeiçoamentos incrementais e usando-se a inovação tecnológica. Na representação escalonada, um método de melhoria de processo estruturado e sistemático, também envolve uma graduação em estágios ou níveis. Para atingir determinado nível, a organização precisa ter uma infraes- trutura robusta, em termos de processos, para se qualificar para o próximo nível. Por isso, a empresa pode ser classificada pelo seu nível de maturidade, de 1 a 5, os quais são compostos por áreas de processo em que os objeti- vos devem ser cumpridos a fim de que a organização possa ser certificada (Quadro 3) (PRESSMAN; MAXIM, 2016). Quadro 3 – Modelo de classificação de áreas de processos organizacionais em níveis de maturidade. Área de processo Categoria Nível de maturidade Análise e resolução das causas Suporte 5 Análise e resolução das decisões Suporte 3 – 41 – Normas e padrões Área de processo Categoria Nível de maturidade Assegurando a qualidade dos processos e produtos Suporte 2 Definição de produtos organizacionais +IPPD (OPD +IPPD) Gestão de processos 3 Desenvolvimento de requerimentos Engenharia 3 Treinamento organizacional Gestão de processos 3 Administração quantitativa de projetos Gestão de projetos 3 Administração de acordo com provedores Engenharia 2 Administração de requerimentos Gestão de projetos 3 Administração de riscos Suporte 2 Administração de configuração Gestão de projetos 3 Administração integral do projeto Gestão de projetos 3 Inovação e desenvolvimento organizacional Gestão de processos 5 Integração de produto Engenharia 3 Medição e análise Suporte 2 Monitoração e controle do projeto Gestão de projetos 2 Planejamento do projeto Gestão de projetos 2 Processos orientados às organizações Gestão de processos 3 Rendimento de processos organizacionais Gestão de processos 4 Solução técnica Engenharia 3 Validação Engenharia 3 Verificação Engenharia 3 Fonte: CYBIS et al., 2015. Adaptado. – 42 – Qualidade e Usabilidade de Software 2.3 Métricas de qualidade de software As métricas de qualidade fornecem uma indicação de que o software está em conformidade com as exigências implícitas e explícitas dos clientes. O principal objetivo da engenharia de software é produzir com uma alta qua- lidade. A fim de atingir esse objetivo, os engenheiros de software devem usar medições técnicas, de modo objetivo, para avaliar a qualidade dos modelos de análise, o código-fonte e casos de teste que foram criados por meio da aplica- ção de engenharia de software (MARSHALL JR. et al., 2012). O primeiro objetivo da equipe de projeto é o de medir os erros e defeitos. As métricas que vêm do resultado dessas medidas fornecem uma indicação da eficácia das atividades de controle e garantia de qualidade (PRESSMAN; MAXIM, 2016). De acordo com Marshall Junior et al. (2012), as métricas de qualidade de software englobam: o resumo dos fatores que afetam a qualidade, a medida de qualidade e a eliminação dos defeitos. 2.3.1 Resumo dos fatores que afetam a qualidade Marshall Jr. et al. (2012), define um conjunto de fatores de qualidade que avaliam o software sob três pontos de vista diferentes: 2 operação do produto (usá-lo); 2 revisão do produto (alterando-o); 2 transição do produto (modificando-o para trabalhar em um ambiente diferente). Assim, se fornece um mecanismo para o operador do produto – ou seja, a pessoa responsável pelo desenvolvimento do software – identificar se ele atende os requisitos de qualidade pré-estabelecidos. – 43 – Normas e padrões 2.3.2 Medida de qualidade Exatidão, facilidade de manutenção, integridade e facilidade de utiliza- ção são medidas de qualidade que fornecem indicadores úteis para a equipe do projeto (MARSHALL JR. et al., 2012) e devem ser avaliadas pela equipe de produção e pelos gestores: 2 Exatidão: é o grau em que o software executa a sua função. 2 Manutenção: é a facilidade com que um programa pode ser corrigido se um erro de sistema, seja de código ou de requisitos, for encontrado. 2 Integridade: mede a capacidade de um sistema para resistir a ata- ques (acidentais e intencionais) à sua segurança. Os ataques podem ser executados em qualquer um dos três componentes de software – programa, dados e documentos3. Para medir a integridade, é preciso definir dois atributos adicionais:ameaça e segurança. Ameaça é a probabilidade de que um ataque dê certo em determinado momento. Já a segurança é a probabili- dade que o sistema tem de repelir um ataque de certo tipo. 2 Facilidade de uso: é uma tentativa de quantificar o quão amigável pode ser o programa para o usuário. 2.3.3 Eliminação dos defeitos É o entendimento dos principais defeitos presentes nos projetos de software – como erros na gestão, prazos curtos, erros de código –, com o obje- tivo de avaliá-los e eliminá-los, de modo a garantir o controle de qualidade em todas as atividades do processo (MARSHALL JR. et al., 2012). 3 A documentação de software consiste em manuais gerais e técnicos ou mesmo relatórios que explicam o funcionamento do programa ou sistema e acompanham o produto, explicando ao cliente como utilizá-lo e suas características. – 44 – Qualidade e Usabilidade de Software As métricas de qualidade, portanto, são fundamentais nos processos de desenvolvimento de softwares, pois auxiliam no monitoramento e no con- trole da qualidade, por meio de testes que ajudam a prever erros e a corrigir defeitos que, por ventura, possam surgir. Ampliando seus conhecimentos O texto a seguir trata sobre a importância de as empresas de desenvolvimento de software terem certificações na área de tecnologia, pois estas não apenas garantem qualidade de processos e produtos, como também atraem clientes. Gestão da qualidade (SILVA; AZEVÊDO, 2015, p. 100-101) A gestão da qualidade de software tem como objetivo nor- matizar e rever periodicamente os conceitos e métodos uti- lizados por uma empresa, garantindo melhoria e correções nos processos de desenvolvimento, com base em estudos e estatísticas minuciosas. A área acompanha todos os processos de construção dos softwares: modelagem de negócio, e lici- tação de requisitos, análise e designer do projeto, implemen- tação, testes, implantação, gerenciamento de configuração e mudança, gerenciamento de projeto e ambiente. A área da qualidade trabalha de acordo com as normas da ISO 9001, ISO 9002 e ISO 9003. Apesar de muitos acha- rem que o procedimento de certificação de uma empresa de tecnologia é muito diferente das empresas industriais, os pro- fissionais vêm mostrando que não. As fábricas de softwares são os grandes exemplos disso, pois as mesmas têm se preo- cupado com a focalização nos clientes, abordagem dos pro- cessos, envolvimento dos stakeholders, comprometimento da – 45 – Normas e padrões liderança, relação com os fornecedores e a melhoria contínua dos processos. Muitos clientes que prezam por mais confiabilidade nos con- tratados buscam empresas que sejam certificadas na área. Hoje são diversas as certificações, onde cada uma atende necessi- dades específicas do negócio. As mais conhecidas da área de tecnologia são: CMMI e MPS.BR. Para se certificar, a empresa precisa atender algumas exigências e demonstrar maturidade nos processos de produ- ção. Essas certificações além de darem um peso maior ao cur- rículo da empresa, atraem clientes que buscam por parceiros com maior qualidade nos processos. A área da qualidade se responsabiliza pela garantia do cumpri- mento dos processos e pela melhoria dos mesmos — melho- ria contínua. O produto é visto como consequência da exe- cução desses processos. Apesar dos esforços serem voltados para o processo, o principal objetivo é garantir um produto final que satisfaça o cliente. [...] Atividades 1. Explique em que as normas para os sistemas de informações auxiliam os processos e como é seu uso. 2. O que é SW-CMM e como ele pode ser usado? 3. Como é possível avaliar os fatores que afetam a qualidade de software? 4. Quais são os cinco níveis de maturidade de uma organização? Influência dos requisitos na qualidade do software Introdução O processo de análise e verificação das necessidades de um cliente/usuário1 para o desenvolvimento de um sistema é chamado de engenharia de requisitos. O objetivo da engenharia de requisitos é entregar um software correto e completo, de acordo com especifica- ções predeterminadas. Os requisitos são a peça fundamental para um projeto de desenvolvimento de software com qualidade, que exige planeja- mento e recursos. Os líderes do projeto utilizam os requisitos de base para estimar os recursos necessários à criação de um software. 1 Em alguns casos, cliente e usuário são a mesma pessoa, mas também podem ser pessoas diferentes. Cliente é a pessoa ou grupo que requisita o software a ser desen- volvido e fornece os requisitos básicos do produto, além de coordenar os recursos financeiros para o projeto. Já usuário é uma pessoa ou grupo que vai realmente usar o software construído (PRESSMAN; MAXIM, 2016, p. 111). 3 Qualidade e Usabilidade de Software – 48 – Assim, os requisitos são a base para a decisão sobre como um produto será executado, ou seja, a base do ciclo de vida de um projeto. Disso decorre a sua importância na definição e gestão de processos. 3.1 Processos de negócio As empresas se diferenciam entre si pela sua capacidade de organização e de processos de negócio. Cada empresa utiliza um procedimento especí- fico para chegar ao resultado desejado, relacionando-o ao produto-fim da empresa. Para um desenvolvimento de software, por exemplo, é fundamental o levantamento dos processos do negócio da empresa para que, no futuro, sejam desenvolvidas tecnologias que auxiliem em sua gestão. Um processo de negócio consiste em um conjunto de tarefas ou ativida- des que são executadas de acordo com certas regras relacionadas a determina- dos objetivos. Trata-se de uma série de tarefas individuais, e cada uma delas é executada em uma ordem específica. Para entender a importância do processo de negócio para a construção de um software, é importante primeiro avaliar com o cliente a sua necessi- dade, saber exatamente o que ele deseja no produto solicitado para se ter uma ideia aproximada das funções que o software deverá apresentar (WEBER, 2006). Com essa informação, os analistas preparam um estudo detalhado sobre a viabilidade do sistema desejado e avaliam a possibilidade de desenvol- vê-lo (VALERIANO, 2005). Esse estudo de viabilidade centra-se no objetivo do projeto, pois analisa os requisitos do software para a sua implementação, a contribuição do projeto para a organização e os limites de custo, sempre de acordo com os valores da empresa (VALERIANO, 2005). Se esse estudo de viabilidade for positivo, a próxima fase começa com a coleta detalhada dos requisitos, por meio de uma entrevista com o cliente/ usuário. Analistas e engenheiros comunicam-se com os clientes/usuários para conhecer as ideias destes sobre os resultados que o software deve fornecer e quais as características que devem ser incluídas (VALERIANO, 2005). – 49 – Influência dos requisitos na qualidade do software 3.1.1 Requisitos de software Como visto no Capítulo 1, os requisitos incluem necessidades quantificadas e documentadas, desejos e expectativas do patrocinador, dos stakeholders2 e dos clientes (VASQUEZ; SIMÕES, 2016) em relação ao software encomendado. De acordo com a definição do glossário do IEEE3, os requisitos do software são (VASQUEZ; SIMÕES, 2016, p. 18): 1. Uma condição ou capacidade do sistema, solicitada por um usuário, para resolver um problema ou atingir um objetivo. 2. Uma condição ou capacidade que deve ser atendida por uma solução para satisfazer um contrato, especificação, padrão ou quaisquer outros documentos formais impostos. 3. Documentação da representação das condições ou capacidades apresentadas nos dois itens anteriores. 4. Uma condição ou capacidade que deve ser alcançada ou pos- suída por um sistema, produto, serviço, resultado ou compo- nente para satisfazer um contrato, padrão, especificação ou outro documento
Compartilhar