Introdução à Qualidade de Software Profº Aldo Rocha
Agenda O que é Qualidade? O que é Qualidade de Software? Qualidade do Produto e do Processo Normas e Organismos Normativos Qualidade de Software e Processos Relacionados 2
O que é Qualidade? O que um determinado produto apresenta para considerarmos que o mesmo tem qualidade? Ex.: Celular Qualidade é um conceito relativo. Diversos aspectos são levados em conta. No caso de um Celular, fatores como design, acessibilidade, desempenho e custo têm estreita relação com a qualidade. 3
O que é Qualidade? Qualidade está fortemente relacionada à conformidade com os requisitos. O que é conformidade em relação a requisitos? observado x especificado. Pode haver problemas na observação. O analista observa superficialmente o fluxo do processo e abstrai os requisitos de forma incompleta. 4
O que é Qualidade? Qualidade está fortemente relacionada à conformidade com os requisitos. Pode haver problemas na especificação. 5
O que é Qualidade? Qualidade está fortemente relacionada à conformidade com os requisitos. Pode haver problemas na especificação. 6
O que é Qualidade? Qualidade diz respeito à satisfação do cliente. Requisitos são especificados por pessoas e com o objetivo de satisfazer outras pessoas. Uma especificação depende das escolhas feitas (clientes alvo). Pode haver problemas na especificação. 7
Breve Histórico da Qualidade Relatos Históricos de 4.000 anos atrás no Egito. Marco Importante: Revolução Industrial 1920: Controle Estatístico da Produção 1940: Surgimento de vários organismos ligados à qualidade ASQC (American Society for Quality Control) ABNT (Associação Brasileira de Normas Técnicas) ISO (International Standardization Organization) Ainda década de 1940: Japão destaca-se. Década de 1970: Qualidade de Software 8
O que é Qualidade de Software? Conferência da NATO (1968) Crise de Software Problemas detectados: Cronogramas não observados. Projetos abandonados. Módulos que não operam corretamente quando combinados. Programas que não fazem exatamente o que era esperado. Sistemas tão difíceis de usar que são descartados. Sistemas que simplesmente param de funcionar. Passados 40 anos, o que mudou? 9
O que é Qualidade de Software? Qualidade em geral: é um conceito relativo. está fortemente relacionada à conformidade com requisitos. diz respeito à satisfação do cliente. Como isso se manifesta em software? 10
Desenvolvimento de Software O aspecto não repetitivo do desenvolvimento de software torna essa atividade difícil e, em boa medida, imprevisível. Delimitar o escopo de um sistema não é trivial. A volatilidade dos requisitos é lugar comum no desenvolvimento de software. 11
Fatores que afetam o Desenvolvimento de Software e influenciam a Qualidade Tamanho e complexidade do software; Número de pessoas envolvidas no projeto; Métodos, técnicas e ferramentas utilizadas; Custo x benefício do sistema; Custos associados à existência de erros; Custos associados à detecção e remoção de erros; etc. 12
O que é Qualidade de Software? Conjunto de características a serem satisfeitas em um determinado grau, de modo que o software satisfaça às necessidades de seus usuários. Desenvolvedores Usuários Finais Usuários Indiretos 13
Qualidade do Produto x Qualidade do Processo de Software Qualidade do produto de software não se atinge de forma espontânea. A qualidade do produto depende fortemente da qualidade do processo de desenvolvimento. 14
O que é Processo de Software? Processos de Software devem estabelecer: atividades a serem realizadas durante o processo, sua estrutura e organização (decomposição e precedência), incluindo a definição de um modelo de ciclo de vida quando pertinente (ex.: processo de desenvolvimento); artefatos requeridos e produzidos por cada uma das atividades do processo; procedimentos (métodos, técnicas, roteiros e padrões) a serem adotados na realização das atividades; recursos necessários (humanos, hardware e software) para a realização das atividades. 15
Qualidade do Processo de Software Um bom processo não garante que os produtos produzidos são de boa qualidade, mas é um indicativo de que a organização é capaz de produzir bons produtos. 16
Motivação para a busca da Qualidade do Processo de Software Aumento da qualidade do produto. Diminuição do retrabalho. Maior produtividade. Redução do tempo para atender o mercado (time to market). Maior competitividade. Maior precisão nas estimativas. 17
Como definir um processo? Apoio de Normas e Modelos de Qualidade de Processos de Software. 18
Normas e Organismos Normativos Normas internacionais de qualidade são criadas no trabalho voluntário de especialistas do mundo todo. Essas normas tornaram-se a base para especificar produtos, organizar o fornecimento de serviços e até mesmo para a elaboração de legislação em vários países. 19
Padrões de Facto Muitas vezes padrões surgem espontaneamente, a partir de uma necessidade ou como uma solução amplamente adotada quando comparada a outras alternativas. Padrões de facto são padrões aplicados na prática, mas que não foram formalizados como um regulamento. Podem ser criados involuntariamente ou por razões comerciais. 20
Padrões de Jure São criados de maneira formal, regulamentada. São escritos seguindo regulamentos e aprovados por instituições reconhecidas publicamente como capacitadas para tal (ex., ISO, IEEE etc). 21
Uso de Padrões Adequação x Certificação. Adequação: deve preceder a certificação e consiste em colocar em prática, total ou parcialmente, aquilo que é proposto no padrão. Certificação: Envolve a participação de um organismo ou empresa externa que possa atestar que a empresa candidata segue efetivamente o padrão. 22
Qualidade e Processos Relacionados Documentação Gerência de Configuração de Software Qualidade de Software Verificação e Validação 23
Qualidade e Processos Relacionados Documentação Gerência de Configuração de Software Qualidade de Software Verificação e Validação 24
Documentação e Gerência de Configuração Artefatos registram a evolução do software para que sejam criadas as bases para o desenvolvimento, utilização e manutenção efetivos. Artefatos devem retratar fielmente o software, de modo que as atividades de avaliação e modificação possam ser realizadas sem maiores transtornos. Artefatos evidenciam a evolução do projeto. Mas é muito importante registrar modificações que ocorrem nos mesmos, de modo a se ter um histórico da evolução, o que é feito por meio da Gerência de Configuração de Software (GCS). 25
Gerência de Configuração Permite manter o controle da evolução dos artefatos de software, além de ajudar a cumprir metas de garantia da qualidade. Envolve, dentre outros: a identificação de itens de configuração de software, controle de alterações, registro e apresentação da situação dos itens e das solicitações de alteração, garantia da consistência dos itens alterados, controle de versão, armazenamento, manipulação e distribuição de itens. 26
Qualidade e Processos Relacionados Documentação Gerência de Configuração de Software Qualidade de Software Verificação e Validação 27
Verificação e Validação Verificação: assegurar que o software, ou determinada função do mesmo, está sendo desenvolvido corretamente, o que inclui verificar se os métodos e processos estão sendo aplicados adequadamente. Validação: assegurar que o software que está sendo desenvolvido é o software correto. 28
Exercício 1) Qualidade de software é uma área da engenharia de software que tem como objetivo garantir a qualidade pela definição e normatização dos processos de desenvolvimento de sistemas. O grupo de normas técnicas "ISO 9000/2000" define qualidade como o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para esses. Assinale a alternativa que melhor define "qualidade", dentro da área de engenharia de software. a) Conformidade de um sistema com os requisitos levantados no início do processo de desenvolvimento. b) Tempo de vida útil de um sistema e sua efetiva utilidade e aplicação. c) É medida pelo máximo de tempo de uso entre falhas ocorridas (MTBF) no ciclo de vida do software. d) Desempenho medido pelo tempo de resposta no processamento e apresentação das informações. e) Equilíbrio entre o prazo de entrega do sistema e o atendimento mínimo dos requisitos levantados. 29
Exercício 2) Por que podemos afirmar que mesmo utilizando a fase de especificação de requisitos de um sistema este sistema ainda assim pode ser um sistema considerado sem qualidade? 3) Alguns dos motivos que ocasionaram a chamada Crise do software foram: Cronogramas não observados e Projetos abandonados. Conforme o explicado em sala o que pode ter dado causa a esses motivos? 4) Justifique porque delimitar o escopo e os requisitos de um sistema não é uma tarefa trivial. 5) Porque o tamanho de um software pode comprometer a sua qualidade? 6) Porque podemos afirmar que a qualidade de um produto de software não se atinge de forma espontânea? 7) Em seu ponto de vista qual a principal estratégia para definir um processo de desenvolvimento de software e porque? 30
Exercício 8) Escreva que fatores são motivadores para a implantação de processo de software em busca da qualidade. 9) Verificação e Validação são processos que garantem a qualidade no processo de software. Você concorda com a afirmativa? Porquê? 10) Qual o propósito da gerência de configuração e no que em sua opinião contribui para qualidade? 31