INF1413 Aula02 QualidadeConceitos - PUC-Rioinf1413/docs/INF1413_Aula02_QualidadeConceitos.pdf ·...

25
1 Qualidade de Software Conceitos Arndt von Staa Departamento de Informática PUC-Rio Fevereiro 2018 Arndt von Staa © LES/DI/PUC-Rio Especificação Objetivo da aula Contextualizar qualidade de software Leitura complementar: Pezzè – capítulos 1 e 2 Fev 2018 2

Transcript of INF1413 Aula02 QualidadeConceitos - PUC-Rioinf1413/docs/INF1413_Aula02_QualidadeConceitos.pdf ·...

1

Qualidade de SoftwareConceitos

Arndt von Staa

Departamento de Informática

PUC-Rio

Fevereiro 2018

Arndt von Staa © LES/DI/PUC-Rio

Especificação

• Objetivo da aula

– Contextualizar qualidade de software

Leitura complementar: Pezzè – capítulos 1 e 2

Fev 2018 2

2

Perguntas

• O que interessa mais: muitas características (features) ou alta fidedignidade (posso confiar no resultado, está disponível quando preciso, não destrói arquivos nem trava quando cometo um erro, é fácil aprender como usar, ... )

• Quando você muda a versão de um software, você acha razoável ter que reaprender como se usa o software?

• Quanto custam falhas em produção?

– segundo o NIST em torno de 50 Bilhões por ano nos EUA• Tassey, G. ed; NIST - National Institute of Standards and Technology; The Economic

Impacts of Inadequate Infrastructure for Software Testing, 2002

• O que isto tem a ver com teste? Ou, melhor, com garantia da qualidade?

3Arndt von Staa © LES/DI/PUC-RioFev 2018

Arndt von Staa © LES/DI/PUC-Rio

Engenharia de software

Engenharia de Software visadesenvolver economicamente software

adequado a todos os interessadospossuindo qualidade assegurada

e capaz de operar fidedignamenteem ambientes reais

Fev 2018 4

Engineering is the application of mathematics and scientific, economic, social, and practical knowledge in order to invent, innovate, design, build, maintain, research, and improve structures, machines, tools, systems, components, materials, processes, solutions, and organizations. (Wikipedia)

3

Arndt von Staa © LES/DI/PUC-Rio

Definição de qualidade

A qualidade de um artefato é um conjunto de propriedades a serem

satisfeitas em determinado grau, de modo que o artefato satisfaça as

necessidades explícitas e implícitasde todos os seus interessados

• Podem existir conflitos entre propriedades, precisam ser balanceados

Problema: necessidades implícitas, como saber quais são elas?

Fev 2018 5

ABNT

O que é um artefato de software?

Sistema

Ambiente dedesenvolvimento

Documentaçãopara usuário

Documentaçãotécnica

Material dedivulgação

Instalação

Manualde uso

Arquitetura

Requisitos

Documentação

Fonte Executável

Código

Programas

Compo-nentes

Persis-tência

Controle daqualidade

Suítesde teste

Padrões

6Arndt von Staa © LES/DI/PUC-RioFev 2018

• Artefato é qualquer coisa tangível que possua qualidade controlada e que componha o sistema em questão

• Artefato é um conceito recursivo: artefatos podem ser compostos por artefatos

• Artefato forma uma estrutura de relacionamentos: artefato A depende de artefatos B, C, ... formando um grafo dirigido acíclico

exemplos de artefatos

4

Fev 20187Arndt von Staa © LES/DI/PUC-Rio

Quem são usuário e cliente?

• Usuário (user) pode ser

– pessoa interessada no serviço prestado pelo artefato sob teste

– pessoa interessada em manter o artefato sob teste

– pessoa interessada em por em operação o artefato sob teste

– pessoa interessada em compor o artefato sob teste com outros

– outro artefato (software) com o qual o artefato sob teste interagirá

– equipamento (máquina) com o qual o artefato sob teste interagirá

– . . .

• Cliente (customer) é a pessoa ou organização

– que disponibiliza recursos para a aquisição, desenvolvimento ou manutenção do artefato

– interessada na redução de custos e riscos incorridos pelos processos

– interessada na viabilização de um serviço impossível de ser realizado sem o emprego de sistemas intensivos em software

– . . .

Quem, ou o que, é o interessado?

• Exemplos de interessados humanos, ou stakeholders– papel desempenhado por humanos que interagem com o

artefato– comprador– motorista– operador de distribuição de energia– ...

• o que interessa é o papel, ou seja, usuário é a classe de todos os interessados na qualidade do serviço prestado pelo sistema

– use o termo usuário somente quando não for relevante saber o papel que desempenha

– outros interessados• desenvolvedores• controladores externos da qualidade• mantenedores• operadores• auditores • . . .

8Arndt von Staa © LES/DI/PUC-RioFev 2018

Uso o termo humano ao invés de usuário ou pessoa seguindo a terminologia de IHC - interface humano computador

5

Quem, ou o que, é o interessado?

• Exemplos de interessados sistemas e máquinas– um sistema intensivo em software é uma coletânea de

hardware, software e humanos que visa prestar serviços a outros interessados, ex.

– sistema de comércio eletrônico

– sistema de controle do despacho de carga elétrica

– sistema de controle de carros flex

• o software interage com o hardware (ex. máquina) através de sensores (dispositivos de entrada) e atuadores (dispositivos de saída)

– a interação com humanos não é similar?

– software de terceiros que presta serviço a um software cliente – componente, biblioteca

– software como serviço (SaaS)

• interage através de mensagens (chamadas) e respostas (retornos)

– . . .

9Arndt von Staa © LES/DI/PUC-RioFev 2018

O que é um sistema?

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 10

Dados Criar / manterelemento

Erro

?

?

?

Observadorde erros

Defeito

Elemento

Sistema

a

b

c

d

e

f

g

h

i

j

k

Controles

Lesão(consequêncianão observada

de um erro)

Falha(erro observado)

Resultados

Engano do produtorou erro de ferramenta

introduz defeito

Engano do produtor

introduz vulnerabilidadeou erro de ferramenta

Causaendógenaprovocaum erro

Causaexógenaprovocaum erro

Vulnera-bilidade

Dano(consequência

observadade um erro)

Erro humanoexplora

vulnerabilidade

Falha internaexplora

vulnerabilidade

Agressãoexplora

vulnerabilidade

Benefícios

Inter-dependência

6

• Artefatos são resultados tangíveis possuindo qualidade controlada e resultantes do desenvolvimento ou da manutenção

• Defeito é um fragmento de um artefato que, se utilizado de forma patogênica, pode levar a um erro

• Erro é um desvio entre o que é desejado ou intencionado e o que é gerado ou derivado. Erro é causado por um defeito

• Falha é um erro observado. Enquanto não observado trata-se de um erro, após observado trata-se de uma falha, portanto um erro é sempre desconhecido.

• Latência do erro é o tempo decorrido entre o momento em que o erro é gerado e o momento em que é observado

• Dano é a consequência externa conhecida (prejuízo observado) provocada por uma falha

• Lesão é a consequência externa desconhecida provocada por um erro ainda não observado

Definições

Fev 2018 11Arndt von Staa © LES/DI/PUC-Rio

Bug - é um termo impreciso, pois pode ser defeito, erro ou falha. Obs. é usado em engenharia (americana) desde 1870, ou seja, não foi inventado pela Grace Hopper, a mariposa foi uma demonstração física do bug (causa da falha). (Wikipedia)

• Vulnerabilidade é um fragmento de um artefato, que, quando usado em condições peculiares, pode gerar um erro

• ex. 1. proteção mal feita permite acesso a pessoas não autorizadas

• ex. 2. interface do usuário mal organizada induz erros de uso

• ex. 3. dados confidenciais armazenados de forma legível por terceiros permitem não autorizados a utilizar dados críticos

– na realidade vulnerabilidades são defeitos

• precisa-se procurar explicitamente por elas -> teste de vulnerabilidade

Definições

Fev 2018 12Arndt von Staa © LES/DI/PUC-Rio

7

Definições

• Inadequação ex.

– não atender às reais necessidades dos interessados

– não satisfazer os requisitos não funcionais e inversos estabelecidos

• Deficiência ex.

– interface humana ruim

– induz humanos a cometerem erros de uso

– documentação e auxílios não coerentes com o implementado

• Anomalia (bad smell) ex.

– o artefato está correto, do ponto de vista funcional e não funcional, mas é difícil de manter

– engenharia ruim

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 13

Definições

• MTBF – mean time between failures

– tempo médio entre falhas sucessivas

• MTTRc – mean time to recover

– tempo médio requerido para repor o sistema em funcionamento correto (recuperar) após uma falha

• MTTRp – mean time to repair

– tempo médio requerido do momento em que é observada uma falha até versão corrigida do artefato estar disponível

• alternativa: até a versão corrigida estar em uso

• MTTEv – mean time to evolve

– tempo médio requerido para evoluir ou adaptar o software após o registro de uma solicitação de alteração

14Arndt von Staa © LES/DI/PUC-RioFev 2018

Na realidade o que interessa mesmo é a distribuição dos tempos, uma vez que tempos médios tendem a esconder potenciais problemas sérios -> mínimo , máximo , percentis (25, 50, 75 e 100%)

8

Arndt von Staa © LES/DI/PUC-Rio

Risco e qualidade satisfatória

• É virtualmente impossível desenvolver um sistema perfeito

• Risco é um evento que tem uma probabilidade de ocorrer e, quando ocorre, impacta negativamente um interessado

• Qualidade satisfatória

– Um artefato possui qualidade satisfatória caso satisfaça plenamente os anseios de todos os interessados, oferecendo riscos justificavelmente aceitáveis para cada propriedade

fidedignidade, ver apêndice

– a noção de “satisfatório” varia

• com a finalidade a que se destina o artefato

• com a natureza do artefato

• com o papel desempenhado pelo interessado

• com o nível de treinamento / conhecimento do interessado

• . . .

Fev 2018 15

Arndt von Staa © LES/DI/PUC-Rio

Graus de qualidade

• Qualidade por construção– Um artefato possui qualidade por construção caso possua qualidade

satisfatória, considerando todas as propriedades relevantes, antes do primeiro teste

• um ideal ao qual nos devemos aproximar

• Qualidade por desenvolvimento– Um artefato possui qualidade por desenvolvimento caso possua

qualidade satisfatória, considerando todas as propriedades relevantes, antes de ser posto em uso

• podem sobrar defeitos não conhecidos

• Qualidade por manutenção– Um artefato possui qualidade por manutenção caso possua qualidade

satisfatória, considerando todas as propriedades relevantes, antes de ser reposto em uso

• podem ter sido adicionados defeitos não conhecidos

Fev 2018 16

9

Arndt von Staa © LES/DI/PUC-Rio

Sistema (de informação) intensivo em software

Fev 2018 17

Bases de dados

Processo daorganização 1

Processo daorganização 2

Artefato

Outrosartefatos

Controlese dados

Resultados Dadospersistentes

Interação com outros artefatos

Foco de interesse ConsequênciaUsuário

Sistemasexternos

Software

Sistema intensivo em software

Os interessados humanos são parte do sistema intensivo em software

Necessidade da especificação

• É impossível atingir garantidamente a qualidade desejada quando?

– se os atributos de qualidade relevantes e respectivos graus a atingir não forem definidos antes de desenvolver

– se graus a atingir não forem observáveis

• mensurável

• avaliável estatisticamente

• avaliável por especialista devidamente treinado

• não vale achologia: “acho que está bom” ou similar

• Exemplo

– se tempo de resposta for um item relevante,

• precisa ser dito qual o tempo de resposta a ser atingido

• a exigência precisa ser mensurável– “deve ser rápido”, não é mensurável

– versão mensurável: a resposta em 90 % das vezes deve ser menor do que 0,1s, e em 100% das vezes menor do que 5s

18Arndt von Staa © LES/DI/PUC-RioFev 2018

10

Especificação de baixíssimo nível

• Do ponto de vista do usuário (que tipo de usuário?) isso é uma boa especificação?

double f( double a ){

double x = a / 2.0 ;while ( x * x - a > 0.1E-5 ){

x = ( x + a / x ) / 2.0 ;} /* while */return x ;

}

• E isso:x1 = a / 2 -> xn+1 = xn – f( xn ) / f’(xn)

• E finalmente issosqrt( a ) =: x ::= ? a >= 0 -> 1 – e < x**2 / a < 1 + e

em que e é menor do que 10**-10está completa? O que ocorre se a < 0?

19Arndt von Staa © LES/DI/PUC-RioFev 2018

o que faz esse algoritmo?alguma coisa pode dar errado?

produz definido como

Problema básico

• O desenvolvimento de software é um processo de aquisição e detalhamento de conhecimento

– no início o conhecimento é incompleto e abstrato

• do problema a resolver

• da solução proposta dada ao problema, – no caso de sistemas e componentes: a sua arquitetura

– à medida que vai sendo desenvolvido o conhecimento vai sendo completado

• Consequentemente muitas solicitações de alteração ocorrem durante o desenvolvimento em virtude de novo conhecimento adquirido

– conhecimento sobre o serviço e a qualidade desse serviço

– conhecimento sobre a solução e a qualidade da engenharia

20Arndt von Staa © LES/DI/PUC-RioFev 2018

11

Arndt von Staa © LES/DI/PUC-Rio

Dizeres romanos há bem mais de 2000 anos

• Errare humanum est– errar é inerente ao ser humano

– Corolário 1: como humanos são falíveis e o desenvolvimento de software é intensivo em esforço humano, é utópico esperar que software não contenha defeitos. silogismo

• Sed in errore perseverare dementis – enquanto que perseverar no erro é próprio do louco

– Corolário 2: é sinal de incompetência ou obstinação burra não aceitar que erramos, não querer observar que erramos, não querer aprender com os erros nossos e de outros de modo que evitemos erros futuros

Fev 2018 21

Arndt von Staa © LES/DI/PUC-Rio

Não existe software perfeito

• Não se pode esperar que sistemas não contenham defeitos– caso um sistema não contenha defeitos, não o

saberemos• algumas vezes podemos saber se módulos contêm defeitos

ou não

– isso implica a necessidade de avaliar a corretude (controlar a qualidade) também durante a execução do sistema

• torna necessária a instrumentação do código

Fev 2018 22

12

Arndt von Staa © LES/DI/PUC-Rio

Não existe software perfeito

• Defeitos podem ter causa– no conhecimento incompleto do serviço a ser prestado

– na especificação incorreta dos requisitos de serviço

– na especificação incorreta dos requisitos da solução

– na má organização do trabalho (processo)

– na má qualidade do trabalho realizado

– na pouca proficiência dos participantes do desenvolvimento

– na falta de fidedignidade dos componentes de terceiros e dos instrumentos utilizados

– . . .

Fev 2018 23

https://www.intertech.com/Blog/15-worst-computer-software-blunders/ mostra alguns exemplos de defeitos de software com consequências desastrosas

Arndt von Staa © LES/DI/PUC-Rio

Não existe software perfeito

• Mesmo sistemas perfeitos podem falhar– erros provocados por causas exógenas

• uso incorreto deliberado ou não

– possivelmente induzidos por interfaces humanas ruins

• bases de dados poluídas

• falhas de hardware

• falhas da plataforma de software usada

• falhas de componentes ou bibliotecas de terceiros

• danificados por hackers

• . . .

• Consequência– sistemas precisam ser clementes

• permitir a correção de erros

– sistemas precisam conter observadores dos erros gerados durante a execução

Fev 2018 24

13

Propagação de defeitos

• Defeitos podem ser inseridos na especificação, na arquitetura, nos projetos, no código, nas suítes de teste, ...

• Ex. um defeito em um artefato antecedente leva a erro(s) no(s) artefato(s) consequente(s), o que, em última análise, corresponde a defeito(s) nesse(s) artefatos

– exemplo de defeitos na especificação:

• esquecer requisitos relevantes – ex. esquecer segurança

– exemplos de defeito propagado para a arquitetura

• software não prevê proteção dos dados do usuário contra uso indevido

25Arndt von Staa © LES/DI/PUC-RioFev 2018

Arndt von Staa © LES/DI/PUC-Rio

Por que desenvolver visando qualidade?

• Retrabalho inútil – é trabalho que não precisaria ter sido realizado, se o trabalho original tivesse sido realizado visando fidedignidade por construção

• Uma das principais causas do excessivo tempo gasto (custo) ao desenvolver software é o retrabalho inútil

– é responsável, em média, por cerca de 50% do custo de desenvolvimento

• Fairley, R.E.; Willshire, M.J.; “Iterative Rework: The Good, the Bad, and the Ugly”; IEEE Computer 38(9); Los Alamitos, CA: IEEE Computer Society; 2005; pags 34-41

• Boehm, B.W.; Basili, V.R.; “Software Defect Reduction Top 10 List”; IEEE Computer 34(1); Los Alamitos, CA: IEEE Computer Society; 2001; pags 135-137

existe retrabalho útil?

Fev 2018 26

14

Arndt von Staa © LES/DI/PUC-Rio

Exemplos de retrabalho inútil?

• Desenvolver algo e descobrir que não era bem isso que se queria ou que se precisava inadequação– causa: especificação inexistente ou mal formulada

• Desenvolver algo e descobrir que está eivado de defeitos– causa: falta de disciplina

– causa: falta de conhecimento de como raciocinar sobre programas, componentes, módulos e código

• Trabalhar sem foco– causa: falta de método (disciplina) de trabalho

• processo, planejamento, padrões

• Perfeccionismo patológico – causa: melhorar, melhorar e melhorar mais ainda algo que já

está satisfatório

• . . .

Fev 2018 27

Arndt von Staa © LES/DI/PUC-Rio

Como eliminar causas de retrabalho inútil?

• O que fazer para reduzir ou mitigar de vez esse risco?– organizar e disciplinar (planejar) o trabalho

– utilizar sistematicamente boas práticas ao desenvolver

– saber como será controlada a qualidade antes de iniciar

– controlar continuamente a qualidade de todos os artefatos

– produzir uma boa especificação do que se quer que seja feito• evitar especificações erradas, incompletas ou inexistentes

• procurar usar técnicas formais leves

– produzir uma arquitetura – organização da solução – adequada ao problema a resolver

• modelar o problema a resolver modelagem conceitual

• modelar a solução modelagem física

• desenvolver testes junto com a criação dos modelos desenvolvimento dirigido por testes (test driven development)

Fev 2018 28

15

Controle da qualidade versus evitar defeitos

• Controle da qualidade não leva a sistemas possuindo a qualidade desejada

– somente produz um laudo

– a melhoria da qualidade advém da eliminação dos defeitos observados

• provoca retrabalho inútil mais custos

• se não feito, gera dívida técnica

• Ao invés de fiar-se somente no controle da qualidade, por que não desenvolver de modo que se tenha a (quase) certeza de não ter introduzido defeitos?

– o mais próximo possível de correto por construção

29Arndt von Staa © LES/DI/PUC-RioFev 2018

Arndt von Staa © LES/DI/PUC-Rio

Qualidade dos artefatos

Duas visões da qualidade:

• qualidade do serviço (qualidade externa)– é a qualidade do artefato tal como observada pelo usuário

• usuários – são todos os interessados (stakeholders), exemplos– pessoas – usuário propriamente dito

– outros artefatos

– desenvolvedores cliente

• qualidade da engenharia (qualidade interna)– é a qualidade requerida pela implementação do artefato,

necessária para atingir a qualidade de serviço desejada

– é observada pelos desenvolvedores• exemplos de interessados

– desenvolvedores do artefato

– mantenedores

– testadores

Fev 2018 30

16

Arndt von Staa © LES/DI/PUC-Rio

Qualidade do serviço, qualidade externa

• O foco de interesse são as tarefas que os usuários realizam no contexto da organização em que atua– o usuário não quer meramente usar um artefato (sistema)

– o usuário quer realizar adequada e facilmente tarefas com o apoio do artefato

• COBIT sistemas de informação são parte de um serviço, não são produtos

Fev 2018 31

Bases de dados

Processo daorganização 1

Processo daorganização 2

Artefato

Outrosartefatos

Controlese dados

Resultados Dadospersistentes

Interação com outros artefatos

Foco de interesse ConsequênciaUsuário

Sistemasexternos

Software

Sistema intensivo em software

Arndt von Staa © LES/DI/PUC-Rio

Qualidade de engenharia, qualidade interna

• Alcança-se qualidade de serviço a partir daqualidade de engenharia

– O objetivo primário é a qualidade do serviço

– Qualidade de engenharia é objetivo secundário

• é incorporada na medida do necessário

Fev 2018 32

17

Consequências da falta de qualidade

• Perdas financeiras, exemplos

– custo (impacto) da falha

– custo da manutenção corretiva e da recuperação

– perda de mercado

– litígios com clientes insatisfeitos

– falência

• Perdas materiais, exemplos

– máquinas quebradas em virtude do software de controle

– material perdido

• Perdas humanas

– perda de vidas

• Perdas ecológicas

• . . .

33Arndt von Staa © LES/DI/PUC-RioFev 2018

Modelo de economia da qualidade 1/2

Fev 2018 34Arndt von Staa © LES/DI/PUC-Rio

Valor do serviço

Custo do desenvolvimento

Qualidade assegurada pelo desenvolvimento

Custo

Perda por faltade qualidade

Perda por excessode qualidade

serve somente para ilustrar

18

Arndt von Staa © LES/DI/PUC-Rio

Modelo de economia da qualidade 2/2

Fev 2018 35

Custo decorrente do risco= F( probabilidade, impacto, relevância)

Custo total

Valor do serviço

Custo do desenvolvimento

Valor líqüido

Qualidade assegurada pelo desenvolvimento

Custo

Perda por faltade qualidade

Perda por excessode qualidade

impacto do evento

Conclusão - simplificada

• Desde o início do projeto

– identificar todos os interessados, respectivos interesses e seus graus de relevância

– identificar os potenciais riscos decorrentes do uso

– identificar os requisitos de qualidade externa (do serviço)

– realizar garantia e controle da qualidade

• Assegurar manutenibilidade

– identificação e registro (log) das falhas

• de preferência identificação automatizada

– apoiar a diagnose e eliminação das causas dessas falhas

– assegurar a existência de testes de regressão

36Arndt von Staa © LES/DI/PUC-RioFev 2018

19

Apêndice

37Arndt von Staa © LES/DI/PUC-RioFev 2018

Fev 2018 38Arndt von Staa © LES/DI/PUC-Rio

Evolução da abstração

Sistema

Programa

Componente

Arquivos, bases de dados,mensagens, plataformaalto

Linha de código

Bloco

Função

Módulo

Classe

Módulos de definiçãoheader files

Módulos de definiçãoAPI - Aplication program

interface

Elementos públicos(e protected)

Parâmetrosgeneralizados

Escopo visível

Escopovisível

Níveis deabstração

concreto

baixo

Interface típica

20

Fev 2018 39Arndt von Staa © LES/DI/PUC-Rio

Características do desenvolvimento

Rep 1Rep 6

Rep 3

Rep 4

Rep 5

Rep 2

Operações sobre representações ciclo completo

alteração

transformaçãoadição

consolidação

reflexão

extração

Arndt von Staa © LES/DI/PUC-Rio

Não existe software perfeito

• Perfeição não existe, densidade de defeitos [Bao, 2007]:– hardware (hardware é hard, ou contém software?)

• INTEL: no more than 80-90 defects in Pentium (em 2012: +- 3*10**9 transistores no

chip; existem GPU’s com +- 7*10**9 transistores [Wikipedia])

– software• Standard Software: 25 defects / 1,000 lines of delivered code (kLOC)

• Good Software: 2 defects / 1,000 lines

• Space Shuttle Software: < 1 defect / 10,000 lines

• Cellular Phone: 3 defects / 1,000 lines

Xinlong Bao; Software Engineering Failures: A Survey; School of EECS, Oregon State University, Corvallis,

OR, U.S.A; apud Huckle, T.; Collection of Software Bugs; http://www5.in.tum.de/~huckle/bugse.html; last update October 5, 2007.

Fev 2018 40

21

Macro operações sobre representações

• Adição• Extração• Modificação• Propagação (para frente)• Reflexão (propagação reversa)• Consolidação, negociação• Pesquisa (procura)• Reuso

– verbatim, as is, assim como está; p.ex. através de referências

• Composição• Decomposição• Verificação

– correto com relação à especificação e aos padrões do artefato

• Validação– correto com relação aos demais artefatos

• Aprovação– correto segundo os interesses dos interessados

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 41

Arndt von Staa © LES/DI/PUC-Rio

Fidedignidade de software

Um sistema intensivo em software é fidedignocaso atenda satisfatoriamente um conjunto de propriedades

de modo que se possa justificavelmente depender dele,assumindo riscos compatíveis com o serviço por ele prestado.

Qual é a diferença entre qualidade e fidedignidade?

O que é qualidade satisfatória?

O que é risco?

• fidedigno (Adjetivo) 1.Digno de fé; merecedor de crédito (Aurélio)

Avizienis, A.; Laprie, J-C.; Randell, B.; "Dependability and Its Threats: A Taxonomy"; in: Jacquart, R.; eds.; Proceedings of the IFIP 18th World Computer Congress: Building the Information Society; Dordrecht: Kluwer; 2004; pags 91-120

Weinstock, C.B.; Goodenough, J.B.; Hudak, J.J.; Dependability Cases; CMU/SEI -2004-TN-016, Software Engineering Institute, Carnegie Mellon University; 2004

Fev 2018 42

22

Fatores da fidedignidade, básicas

Adequação: prestar o serviço que interessa ao usuáriousuário pode ser: pessoa; outro artefato; outro sistema; sensores e/ou atuadores; mantenedores; operadores; programadores clientes; ...

Acurácia: habilidade de assegurar que os dados manipulados estejam em conformidade com o mundo real controlado pelo serviço

Confiabilidade: habilidade de, sempre que solicitado, prestar serviço fidedigno

Disponibilidade: estar pronto para prestar serviço fidedigno sempre que necessitado

Utilizabilidade: habilidade de interagir com o usuário sem induzi-lo a erro, nem permitir que erros de uso (observáveis) fiquem despercebidos; dito de outra forma: habilidade do software poder ser entendido, aprendido, corretamente utilizado e ser atraente ao usuário

Clemência: habilidade do software perdoar erros de uso

As características são adaptadas de (Avizienis, 2004) e de outros autores,são mais abrangentes do que as do autor citado

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 43

Fatores da fidedignidade, básicas

Interoperabilidade: habilidade do software poder ser corretamente conectado com outros sistemas

Escalabilidade: habilidade da capacidade de processamento do software crescer junto com o crescimento da demanda

Durabilidade: habilidade do software operar fidedignamente por períodos de duração indefinida

– longa duração, e.g. 24/7

Economia: habilidade de produzir resultados necessitando de poucos recursos

– ex. computacionais, humanos, financeiros

Desempenho: habilidade de atender à demanda consumindo recursos (ex. tempo, memória) dentro do limite estipulado

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 44

23

Fatores da fidedignidade, segurança

Segurança: habilidade de evitar consequências catastróficasaos usuários, à organização, ou ao ambiente

– safety, risco baixo

Proteção: habilidade de evitar o sucesso de tentativas de agressão

Privacidade: habilidade de proteger dados e código contra acesso (uso) indevido acidental ou deliberado

Integridade: habilidade de evitar a corrupção (adulteração) intencional ou acidental de elementos

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 45

Arndt von Staa © LES/DI/PUC-Rio

Fatores da fidedignidade, tolerância

Robustez: habilidade de, em tempo de execução, detectar erros (reportar falhas) de modo que os possíveis danos possam ser mantidos em um patamar aceitável

– um software robusto não provoca lesões• lesão: “prejuízo” desconhecido causado por erro não

observado

– pode gerar danos, desde que controlados• dano: “prejuízo” causado por erro observado

Recuperabilidade: habilidade de ser rapidamente reposto em operação fidedigna, preventivamente ou após a ocorrência de uma falha

Corrigibilidade: habilidade de ser fácil e rapidamente corrigido quando da ocorrência de uma falha

Resiliência: habilidade de amoldar-se a condições anormais de funcionamento sem comprometer a fidedignidade

Fev 2018 46

24

Arndt von Staa © LES/DI/PUC-Rio

Fatores da fidedignidade, evolução

Manutenibilidade: habilidade de poder ser modificado ou corrigidocom facilidade e sem que novos defeitos sejam inseridos

– manutenção preventiva – refactoring– correção – corrigibilidade (argh!)– melhorias, adaptação e evolução – evolutibilidade

Longevidade: habilidade do software e dos dados persistentes por ele utilizados terem vida longa, evoluindo junto com as necessidades do usuário, com a plataforma, ou com a tecnologia utilizada para a sua implementação

– engenharia reversa– reengenharia– rejuvenescimento

Co-evolutibilidade: facilidade de manter a coerência entre todos os artefatos que constituem o software.

Disponibilizabilidade: facilidade de distribuir e por em uso correto as novas versões.

Fev 2018 47

Arndt von Staa © LES/DI/PUC-Rio

Fatores da fidedignidade, controle

Controlabilidade (Verificabilidade , Validabilidade , Aprovabilidade):

habilidade de ter sua qualidade controlada com facilidade, baixo custo e suficiente rigor sempre que desejado

Testabilidade: habilidade de ser testado com o rigor necessário, a um custo baixo e sempre que desejado

– uma forma de realizar (parcialmente) as três características anteriores

Mensurabilidade: habilidade do software medir seu desempenho

Detectabilidade: habilidade do software em execução observar erros, iniciando alguma operação de recuperação ou de prevenção de danos

Diagnosticabilidade: facilidade de determinar a causa de uma falha ou identificar os pontos de alteração

Depurabilidade: facilidade de remover correta e completamente os defeitos diagnosticados, ou de realizar a alteração

Fev 2018 48

25

Arndt von Staa © LES/DI/PUC-Rio

Fatores do controle da qualidade

Sensitividade se um controle da qualidade (e.g. caso de teste) observa uma falha, esta será sempre observada ao repetir o controle enquanto o artefato não for alterado

Redundância as diferentes formas de dizer ou observar a mesma coisa são coerentes

Modularidade quebrar um problema em n > 1 subproblemas perfeitamente integráveis, cada qual bem definido, bem delimitado e autocontido

• cada módulo, componente ou programa visa um único propósito

• o propósito pode ser estabelecido em níveis de abstração elevados (programas, componentes), ou baixos (módulos)

Visibilidade progresso, especificações e design são observáveis

Feedback (retroalimentação) sempre manter todos os interessados informados

Fev 2018 49

Arndt von Staa © LES/DI/PUC-Rio

FIM

Fev 2018 50