introdução qualidade de software

33
Introdução à Qualidade de Software

Upload: wellington-oliveira

Post on 25-Jul-2015

691 views

Category:

Education


2 download

TRANSCRIPT

Introdução à Qualidade de Software

2

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

3

O que é Qualidade?

O que um determinado produto apresenta para considerarmos que o mesmo tem qualidade? Ex.: Carro (vamos discutir...)

Qualidade é um conceito relativo. Diversos aspectos são levados em conta. No caso de um automóvel, fatores como conforto, segurança, desempenho, beleza e custo têm estreita relação com a qualidade.

4

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. Pode haver problemas na especificação.

5

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.

6

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

7

O que é Qualidade de Software? Conferência da NATO (1968) – relatou a 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?

8

O que é Qualidade de Software? Qualidade:

é um conceito relativo. está fortemente relacionada à conformidade com

requisitos. diz respeito à satisfação do cliente.

Como isso se manifesta em software?

9

Desenvolvimento de Software

O aspecto não repetitivo do desenvolvimento de software (não padronizado - hoje em dia já existem padrões - design patterns por exemplo) torna essa atividade difícil e, em boa medida, imprevisível.

Delimitar o escopo de um sistema não é trivial.

A volatilidade dos requisitos (mudam muito, com muita frequência) é lugar comum no desenvolvimento de software.

10

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ícios do sistema; Custos associados à detecção e remoção de

erros; etc.

11

O que é Qualidade de Software?

Conjunto de características a serem satisfeitas, de modo que o software satisfaça às necessidades de seus usuários.

UsuáriosFinais

Desenvolvedores

UsuáriosIndiretos

12

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 de software.

Esses dois conceitos fundamentais usados nas áreas de engenharia de software e qualidade de software são advindos da área de engenharia.

13

O que é Processo de Software? Processos de Software devem estabelecer:

atividades a serem realizadas durante o processo, sua estrutura e organização (decomposição [decompor uma etapa em sub-etapas] e precedência [o que deve ser executado antes para executarmos esta etapa em questão]), incluindo a definição de um modelo de ciclo de vida quando pertinente (ex.: processo de desenvolvimento - cascata, espiral, XP, RUP);

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.

14

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.

15

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.

16

Como definir um processo? Apoio de Normas e Modelos de Qualidade de

Processos de Software (ISO, CMM, Spice).

17

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.

18

Padrões

Muitas vezes padrões surgem espontaneamente, a partir de uma necessidade ou como uma solução amplamente adotada quando comparada a outras alternativas.

Podem ser criados involuntariamente ou por razões comerciais.

Existem padrões já pré-estabelecidos e criados com estudos e fundamentação teórica e prática: 23 padrões de Gamma (Design Patterns)

19

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).

20

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 (por exemplo a Fundação Vanzolini certifica com relação ao padrão ISO).

21

Qualidade e Elementos Relacionados

Qualidade de Software

Documentação Gerência de Configuração de Software

Verificação e Validação

22

Qualidade e Elementos Relacionados

Qualidade de Software

Documentação Gerência de Configuração de Software

Verificação e Validação

23

Documentaçã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).

24

Verificação e Validação Verificação: a verificação tem o objetivo de

avaliar se o que foi planejado realmente foi realizado. Ou seja, se os requisitos, funcionalidades e performance documentados foram implementados.

Validação: A validação tem o objetivo de avaliar se o que foi entregue atende as expectativas. Ou seja, se os requisitos, independente do que foi planejado, estão implementados para atender ao negócio (cliente).

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: 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 (definição próx. slide),

armazenamento e distribuição de itens.

26

Sistema de Controle de Versão Um sistema de controle de versão (ou

versionamento), VCS (do inglês version control system) ou ainda SCM (do inglês source code management):

na função prática da Engenharia de Software, é um sistema com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer. Esses sistemas são comumente utilizados no desenvolvimento de software para controlar as diferentes versões — histórico e desenvolvimento — dos códigos-fontes e também da documentação.

27

Qualidade e Elementos Relacionados

Qualidade de Software

Documentação Gerência de Configuração de Software

Verificação e Validação

28

Subversion - SVN É um sistema de controle de versão desenhado

especificamente para ser um substituto moderno do CVS, que se considera ter algumas limitações.

Servidor HTTP Apache como servidor de rede, WebDAV/DeltaV como protocolo (também existe um processo independente de servidor que usa um protocolo personalizado sobre TCP/IP).

Projeto Open-Source.

29

Vantagens Controle do histórico: facilidade em desfazer e

possibilidade de analisar o histórico do desenvolvimento, como também facilidade no resgate de versões mais antigas e estáveis. A maioria das implementações permitem analisar as alterações com detalhes, desde a primeira versão até a última.

30

Vantagens Trabalho em equipe: um sistema de controle de

versão permite que diversas pessoas trabalhem sobre o mesmo conjunto de documentos ao mesmo tempo e minimiza o desgaste provocado por problemas com conflitos de edições. É possível que a implementação também tenha um controle sofisticado de acesso para cada usuário ou grupo de usuários.

31

Vantagens Marcação e resgate de versões estáveis: a

maioria dos sistemas permite marcar onde é que o documento estava com uma versão estável, podendo ser facilmente resgatado no futuro.

Ramificação de projeto: a maioria das implementações possibilita a divisão do projeto em várias linhas de desenvolvimento, que podem ser trabalhadas paralelamente, sem que uma interfira na outra.

32

Como Funciona

33

Esquema Lógico