Você está na página 1de 13

Qualidade de software - unidade 1

Sumarização

1. Qualidade
 Projeto – especificações sobre o desempenho, segurança, Usabilidade e
Escalabilidade
 Conformidade – Implementações com base nos requisitos levando em
consideração o Desempenho, segurança, Usabilidade e Escalabilidade

2. Definição de qualidade de software


IMPORTANTE:
conformidade a requisitos funcionais e de desempenho explicitamente declarados,
a padrões de desenvolvimento claramente documentados e a características
implícitas que são esperadas de todo software profissionalmente desenvolvido

3. As características de qualidade em três categorias principais por McCall:


 Revisão - geralmente avaliadas antes da implantação do software
 Transição - se concentram na transição do software de um ambiente de
desenvolvimento para um ambiente de produção
 Operação - se relacionam com o comportamento do software quando em
operação no ambiente de produção

4. ISO EIC 25010


 Características da qualidade interna
 Características da qualidade externa

5. Qualidade X Tipo de Software – relacionado a “as características de qualidade em


três categorias principais”.
Cada tipo de software tem seu próprio requisito de qualidade
Por exemplo: Sistema de reserva de automóveis X Sistema de controle de trafego
aéreo, Para um algumas características são mais relevantes do que para outro.
Por exemplo a eficiência de sistema de reserva é mais tolerável do que no sistema
de controle de trafego aéreo, pois no controle de.. exige “O uso eficiente dos
recursos do sistema, como memória e processamento” , por lidar com muitos
dados sensíveis em tempo real.

6. Principais objetivos da Qualidade


 Aprimorar o processo de desenvolvimento
 Avaliar a qualidade do produto
 Adquirir um software

7. Algumas iniciativas visando melhorias do processo de software

8. Avaliação da Qualidade do produto – Como fazer


9. Entraves à qualidade segundo o IEEE 610.12-1990
 Mistake
 Fault (bug)
 Error
 Failure
10. Por que surgem as falhas
 Alteração
 Tempo
 Complexidade

11. Garantia da Qualidade de Software


 Atividades de Garantia de Qualidade

 O que a Garantia da Qualidade visa responder


• O software atende às características de qualidade desejadas ?
• O desenvolvimento do software foi conduzido conforme os padrões
preestabelecidos ?
• As disciplinas técnicas cumpriram adequadamente seus papéis como parte
da atividade de Garantia da Qualidade?

Qualidade – se refere a coisas que podem ser medidas, ou seja, comparadas com padrões
conhecidos, tais como, tamanho, cor, propriedades elétricas, maleabilidade, etc.

Por exemplo, o desempenho, a qualidade do desempenho pode ser medida em termo de


tempo de resposta aceitável para várias operações como, abrir tarefas, atualizar informações,
ou realizar pesquisas.

Por exemplo confiabilidade pode ser medida pela frequência de erros ou falhas encontradas
pelos usuários ou pela equipe de testes.

Por exemplo a usabilidade que pode ser avaliada com base em testes de usabilidade.

Dois tipos de qualidade podem ser encontrados ao se examinar um item baseado em suas
características

Qualidade de projeto

Qualidade de conformidade

Claro, vou fornecer exemplos específicos de Qualidade de Projeto e Qualidade de


Conformidade em relação ao desenvolvimento de software:

**Qualidade de Projeto em Desenvolvimento de Software**:


Imagine que uma equipe de desenvolvimento de software está trabalhando em um sistema de
gerenciamento de banco de dados. A Qualidade de Projeto nesse contexto pode incluir:

1. **Desempenho**: Os projetistas especificaram que o sistema deve ser capaz de manipular


consultas de banco de dados em menos de um segundo, mesmo com grandes conjuntos de
dados.

2. **Segurança**: Foi projetado um sistema de autenticação robusto e medidas de segurança


para proteger os dados do banco de dados contra acessos não autorizados.

3. **Usabilidade**: A interface do usuário foi projetada com base em princípios de


usabilidade, tornando o sistema intuitivo para os usuários finais.

4. **Escalabilidade**: O sistema foi projetado para ser escalável, permitindo adicionar mais
servidores conforme a demanda aumenta.

aaa**Qualidade de Conformidade em Desenvolvimento de Software**:

Agora, considere a Qualidade de Conformidade para o mesmo sistema de gerenciamento de


banco de dados:

1. **Desempenho**: Durante o desenvolvimento, a equipe implementa consultas otimizadas e


faz testes de desempenho para garantir que o sistema atenda aos requisitos de desempenho
definidos no projeto.

2. **Segurança**: A equipe implementa medidas de segurança de acordo com o projeto, como


criptografia de dados e auditorias de acesso, para garantir que o sistema seja seguro conforme
planejado.

3. **Usabilidade**: A equipe de desenvolvimento segue as diretrizes de design de interface do


usuário definidas no projeto para garantir que a interface seja consistente com o design
projetado.

4. **Escalabilidade**: Durante a implementação, a equipe configura o sistema para que possa


ser escalado facilmente, adicionando servidores adicionais conforme necessário.

Portanto, a Qualidade de Projeto em desenvolvimento de software se concentra nas decisões


de design e especificações estabelecidas antes do desenvolvimento, como requisitos de
desempenho, segurança e usabilidade. A Qualidade de Conformidade, por outro lado, está
relacionada à implementação efetiva dessas especificações durante o processo de
desenvolvimento, garantindo que o software construído atenda às especificações de design
planejadas. Ambas são essenciais para entregar um software de alta qualidade aos usuários
finais.

Uma definição de qualidade de software que se encaixa nesse escopo é: “


conformidade a requisitos funcionais e de desempenho explicitamente declarados, a padrões
de desenvolvimento claramente documentados e a características implícitas que são esperadas
de todo software profissionalmente desenvolvido”

Características da Qualidade segundo McCall

As características de qualidade segundo o modelo de qualidade de McCall são amplamente


reconhecidas e estabelecem critérios para avaliar a qualidade de um software. Gerald M.
Weinberg desenvolveu esse modelo em 1977, e ele foi posteriormente expandido por outros
pesquisadores. O modelo de qualidade de McCall divide as características de qualidade em três
categorias principais: características de revisão, características de transição e características de
operação.

1. **Características de Revisão**:

Estas características estão relacionadas com a análise estática do software e são geralmente
avaliadas antes da implantação do software. Elas ajudam a determinar se o software atende às
necessidades dos usuários e aos requisitos especificados. As características de revisão incluem:

- **Correção**: A capacidade do software de operar sem falhas, erros ou defeitos.

Como medir isso antes da implementação?

não existe um teste antes do teste de implementação ?

mas quais são os testes que podem ser iniciados sem ter código em mão ?

Antes de ter o código-fonte do software disponível, ainda é possível realizar alguns tipos de
testes e revisões que não requerem acesso ao código. Esses testes são geralmente realizados
com base na documentação, especificações e requisitos do software. Aqui estão alguns
exemplos de testes que podem ser iniciados sem ter o código em mãos:
1. **Testes de Aceitação de Requisitos**:

- Esses testes são baseados nos requisitos do software. Você verifica se os requisitos
especificados são claros, completos e atendem às necessidades dos usuários.

2. **Testes de Usabilidade**:

- Você pode revisar o design da interface do usuário (UI) e realizar testes de usabilidade com
base em wireframes, protótipos ou mockups para avaliar a facilidade de uso e a experiência do
usuário.

3. **Revisões de Documentação**:

- Revise a documentação do projeto, que pode incluir especificações de requisitos, planos de


projeto, diagramas de fluxo, diagramas de casos de uso, entre outros, em busca de
inconsistências ou lacunas.

4. **Modelagem e Simulação**:

- Use modelos e simulações para avaliar o comportamento esperado do software antes que o
código seja escrito. Por exemplo, em um sistema de simulação de tráfego para um aplicativo de
navegação, você pode avaliar o fluxo de tráfego esperado.

5. **Testes de Acessibilidade**:

- Avalie se o software atende aos padrões de acessibilidade, garantindo que ele seja utilizável
por pessoas com deficiência, mesmo antes de ter o código em mãos.

6. **Revisões de Design**:

- Revisões de design podem ser conduzidas com base nos designs de interface do usuário e
arquitetura do sistema para identificar problemas de usabilidade, escalabilidade e
compatibilidade.

7. **Testes de Integração de Sistema**:

- Se você está trabalhando em um ambiente de desenvolvimento distribuído ou com sistemas


externos, pode avaliar como o software interage com esses sistemas com base em
documentação de integração.

8. **Testes de Requisitos Funcionais**:

- Com base na especificação dos requisitos funcionais, você pode criar casos de teste de alto
nível que não dependem do código, mas sim das funcionalidades esperadas.
9. **Análise Estática de Requisitos**:

- Use técnicas de análise estática para revisar os documentos de requisitos em busca de


problemas lógicos, contradições ou requisitos não atendidos.

10. **Validação de Protótipos**:

- Se protótipos interativos foram desenvolvidos com base nos requisitos, você pode validar a
funcionalidade e a usabilidade desses protótipos com os usuários ou partes interessadas.

É importante notar que esses testes e revisões iniciais são complementares aos testes
realizados após a implementação do código-fonte. Eles visam garantir que a visão e os
requisitos iniciais do software estejam bem definidos e que os problemas sejam identificados o
mais cedo possível no processo de desenvolvimento. Conforme o desenvolvimento avança e o
código é escrito, esses testes e revisões são refinados e complementados por testes mais
detalhados e específicos no código-fonte real.

- **Confiabilidade**: A probabilidade de o software funcionar sem falhas durante um


período específico.

- **Eficiência**: O uso eficiente dos recursos do sistema, como memória e processamento.

- **Manutenibilidade**: A facilidade com que o software pode ser modificado ou corrigido


após a implantação.

- **Integridade**: A capacidade do software de proteger dados e recursos contra acesso não


autorizado.

2. **Características de Transição**:

Essas características se concentram na transição do software de um ambiente de


desenvolvimento para um ambiente de produção. Elas incluem:

- **Portabilidade**: A capacidade do software de ser transferido de um ambiente para outro,


como de um sistema operacional para outro.

- **Reusabilidade**: A capacidade de reutilizar componentes de software em diferentes


partes do sistema ou em outros projetos.

- **Interoperabilidade**: A capacidade do software de interagir com outros sistemas ou


componentes externos de forma eficaz.

3. **Características de Operação**:

Estas características se relacionam com o comportamento do software quando em operação


no ambiente de produção. Elas incluem:

- **Usabilidade**: A facilidade de uso do software pelo usuário final.


- **Efetividade**: A capacidade do software de realizar as tarefas para as quais foi projetado.

- **Eficiência no uso de recursos**: O uso eficiente dos recursos de hardware e software


durante a operação.

- **Adaptabilidade**: A capacidade do software de se adaptar a mudanças nas condições de


operação.

Essas características de qualidade de McCall ajudam a fornecer uma estrutura para avaliar a
qualidade de um software em várias dimensões. A consideração de todas essas características
é importante para garantir que um software atenda aos requisitos e expectativas dos usuários
finais.

A ISO/IEC 25010 é uma norma internacional que define um conjunto de características de


qualidade de software e sistemas de software. Essas características são divididas em duas
categorias principais: características de qualidade interna e características de qualidade
externa. Aqui estão as principais características de qualidade conforme definidas na norma
ISO/IEC 25010:

**Características de Qualidade Interna**:

1. **Manutenibilidade**: A facilidade com que o software pode ser modificado, incluindo a


capacidade de adicionar, modificar ou excluir funcionalidades sem causar problemas
inesperados.

2. **Portabilidade**: A capacidade do software de ser transferido de um ambiente para outro,


como de um sistema operacional para outro, mantendo seu desempenho e funcionalidade.

3. **Eficiência no Uso de Recursos**: O uso eficiente dos recursos de hardware e software,


como CPU, memória e armazenamento.

4. **Usabilidade**: A facilidade com que os usuários podem interagir e utilizar o software para
atingir seus objetivos de maneira eficaz e eficiente.

**Características de Qualidade Externa**:

1. **Funcionalidade**: A capacidade do software de fornecer as funções necessárias para


atender aos requisitos especificados.

2. **Confiabilidade**: A capacidade do software de desempenhar suas funções de forma


confiável e sem erros durante um período específico.

3. **Eficiência**: A capacidade do software de executar suas funções com o uso mínimo de


recursos, como processamento e memória.

4. **Usabilidade**: A facilidade com que os usuários podem aprender a usar o software,


realizar tarefas e navegar pela interface do usuário.

5. **Segurança**: A capacidade do software de proteger dados e recursos contra acessos não


autorizados, bem como de lidar com ameaças de segurança.
6. **Compatibilidade**: A capacidade do software de funcionar corretamente em diferentes
ambientes, como sistemas operacionais, navegadores da web e dispositivos.

Além dessas características principais, a ISO/IEC 25010 também fornece uma estrutura mais
detalhada que inclui subcaracterísticas específicas relacionadas a cada característica de
qualidade. Essas subcaracterísticas ajudam a fornecer uma definição mais detalhada e
específica das expectativas de qualidade.

Essas características e subcaracterísticas de qualidade de software são fundamentais para


avaliar, medir e melhorar a qualidade de software durante o desenvolvimento e após a
implantação. Elas fornecem um conjunto abrangente de critérios para avaliar a qualidade do
software em diversas dimensões.

Qualidade x tipo de software

principais objetivos da qualidade

• Aprimorar o processo de desenvolvimento e, em consequência, melhorar a qualidade do


produto resultante.

• Avaliar a qualidade do produto, visando emitir documento oficial sobre a qualidade de um


software e sua conformidade em relação a uma norma ou padrão.

• Adquirir um software, com o intuito de escolher o produto mais adequado dentre um


conjunto de produtos selecionados

Aprimoramento do processo de software Algumas iniciativas visando melhorias do processo de


software

SEI/CMM

ISO/SPICE
NORMA ISO/IEC 12207

NORMA ISO/IEC 9000-3

ISO/IEC 9126 (NBR 13596)

ISO/IEC 12119

ISO/IEC 14598-5

Avaliação da qualidade do produto

Como fazer ?

No Brasil, para fornecer o certificado ISO 9000, existem empresas credenciadas pelo INMETRO.

avaliar in-house

Utilizar equipe multidisciplinar com especialistas da área de tecnologia e especialistas da área


que se utilizará do software (ie, que vão olhar para o software a partir do ponto de vista do
cliente) ,grupo de Garantia da Qualidade do Software.

- contratar empresas para avaliação

Entraves à qualidade segundo o IEEE 610.12-1990

Sim, tanto "mistake" quanto "error" se referem a situações em que os desenvolvedores


cometem equívocos durante o processo de desenvolvimento de software, embora eles
representem tipos diferentes de equívocos.

- **Mistake (Mistake)**: Trata-se de um erro humano cometido durante o desenvolvimento do


software. Isso pode ocorrer, por exemplo, quando os desenvolvedores interpretam
erroneamente os requisitos, fazem escolhas inadequadas de design ou cometem erros de
codificação. Esses erros humanos levam à introdução de defeitos no software, que podem
resultar em falhas no funcionamento do sistema.

- **Error (Erro)**: Refere-se a discrepâncias entre o valor calculado, observado ou medido e o


valor verdadeiro, especificado ou teoricamente correto durante a execução do software. Essas
discrepâncias podem ocorrer devido a erros no código, problemas de lógica, cálculos incorretos
ou outras razões técnicas. Erros no software podem levar a defeitos e falhas no sistema.
Ambos os conceitos envolvem equívocos dos desenvolvedores, mas em estágios diferentes do
ciclo de desenvolvimento e com causas diferentes. Os "mistakes" geralmente estão
relacionados a decisões e ações errôneas durante a criação do software, enquanto os "errors"
estão relacionados a discrepâncias entre o que foi projetado ou especificado e o que realmente
ocorre durante a execução.

A identificação e a correção atempadas de "mistakes" e "errors" são parte fundamental do


processo de garantia de qualidade de software, visando a minimizar defeitos e garantir um
software confiável e de alta qualidade.

Por que surgem as falhas?

Alterações:

• Alterações degradam a estrutura do software, tornando-o cada vez mais difícil de alterar.
Tempo:

• Com o tempo, os custos das implementações das alterações aumentam, e a capacidade do


sistema em prestar os serviços esperados diminui.

Complexidade:

• difícil de desenvolver: um único desenvolvedor não é capaz de entender o sistema como um


todo;

• difícil de usar;

• difícil de entender: código incompreensível, falta de documentação

Garantia da Qualidade do Software

Visa responder às seguintes questões:

• O software atende às características de qualidade desejadas ?

• O desenvolvimento do software foi conduzido conforme os padrões preestabelecidos ?

• As disciplinas técnicas cumpriram adequadamente seus papéis como parte da atividade de


Garantia da Qualidade?

Norma ISO/IEC 14598 pode ser usada para definir o processo de Avaliação.

Atividades da Garantia de Qualidade segundo Pressman

Aplicação de métodos, técnicas e ferramentas, uso pelos desenvolvedores de métodos e


ferramentas que ajudem a conseguir especificações, projetos, etc., de maior qualidade.

Realização de revisões técnicas, o objetivo é avaliar a qualidade do artefato de software


(especificação, projeto, ...) produzido ao longo do desenvolvimento.

Atividades de testes em complemento às revisões e outras técnicas.

Aplicação de padrões
• padrões podem ser usados: para documentos, documentação do código e estilo de
codificação (como usar linguagem de programação).

• padrões podem ser determinados pelo cliente, por normas internacionais ou pela empresa
de desenvolvimento.

Atividades de Garantia de Qualidade

Controle de alterações, toda mudança no software tem potencial para introduzir erros ou criar
efeitos colaterais, que propagam erros no controle de mudanças durante desenvolvimento e
manutenção, sendo essencial para garantir a qualidade do software.

Seria um exemplo de ferramenta github ?

Medição, obtenção de métricas a fim de rastrear a qualidade do software e avaliar o impacto


de mudanças nos métodos e procedimentos usados para desenvolvimento e manutenção.

Anotação e manutenção de registros para manter histórico com resultados de revisões,


auditorias, controle de alterações e outras atividades de garantia de qualidade, que devem ser
levados ao conhecimento dos desenvolvedores.

Com isso, conseguimos ter uma noção de qualidade e chegar a uma conclusão de qualidade de
software que devido ao aumento da competitividade e a preocupação em oferecer ao mercado
softwares que atendam às expectativas de seus clientes, os desenvolvedores de software têm
buscado aplicar os conceitos de qualidade em seus produtos. Dada a história e os fatos
mencionados, notamos que, nos dias de hoje, a qualidade dos softwares desenvolvidos devem
aumentar significativamente. Algumas certificações existentes no mercado têm dado uma
atenção especial nos processos de qualidade e mobilizado as organizações a adotarem este
tipo de processo em todos seus produtos. Espera-se que as organizações comecem a incluir em
seu processo de desenvolvimento, o processo de qualidade de software, não apenas no
momento que o produto foi finalizado ou desenvolvido, mas desde o início de sua concepção,
para não ser surpreendido com a possibilidade de ocorrerem falhas no ciclo de vida do
software.

Material Complemetar

Para aprofundar seus estudos sobre Qualidade, temos abaixo os sites e as seguintes
referências:

• http://www.sei.cmu.edu/

• http://www.cin.ufpe.br/~in953/olds/relatorios/fabrica1.pdf

• http://www.spinsp.org.br/

• http://ibpi.org/standard/isoiec-15504/
• GAMMA, Erich. Padrões de projeto: soluções reutilizáveis de software orientado a objetivos.
Porto Alegre: Bookman, 2000.

• SOMMERVILLE, Ian. Engenharia de software. 8ª ed. São Paulo: Pearson AddisonWesley, 2007

Pesquisas adicionais.

mas qual é a etapa que escolho a estrutura de dados ?

A escolha da estrutura de dados geralmente ocorre durante a fase de projeto de software, que
é uma etapa posterior à modelagem de negócios. Aqui está um resumo das etapas típicas do
ciclo de desenvolvimento de software, incluindo onde a escolha da estrutura de dados se
encaixa:

1. **Definição de Requisitos**: Nesta fase inicial, você coleta e documenta os requisitos do


software. Isso envolve entender as necessidades dos usuários, os processos de negócios e os
objetivos do sistema. A modelagem de negócios desempenha um papel importante aqui para
representar o contexto e os fluxos de trabalho da organização.

2. **Análise de Requisitos**: Na análise de requisitos, você aprofunda a compreensão dos


requisitos e os desdobra em detalhes. Você cria modelos mais específicos, como diagramas de
caso de uso, diagramas de classe conceitual, diagramas de sequência, etc. Nesta fase, a ênfase
é nos requisitos funcionais e nas relações entre eles.

3. **Projeto de Software**: A fase de projeto é onde você define a arquitetura do software e


seleciona as estruturas de dados e algoritmos apropriados. A escolha da estrutura de dados
ocorre principalmente nesta fase. Aqui, você decide como os dados serão armazenados,
organizados e acessados para atender aos requisitos do sistema. As decisões de projeto afetam
a eficiência, escalabilidade e manutenção do software.

- **Estruturas de Dados**: Nesta etapa, você decide se usará arrays, listas vinculadas,
árvores, tabelas de hash, bancos de dados relacionais, ou outras estruturas de dados para
armazenar informações. A escolha depende dos requisitos específicos do sistema, das
operações que serão realizadas nos dados e das considerações de desempenho.

- **Algoritmos**: Além das estruturas de dados, você seleciona os algoritmos apropriados


para operar nos dados. Isso inclui algoritmos de busca, ordenação, processamento de dados,
etc.

4. **Implementação**: Na fase de implementação, você traduz o projeto de software em


código real. É aqui que você cria as estruturas de dados selecionadas e implementa os
algoritmos escolhidos de acordo com as especificações do projeto.

5. **Teste de Software**: Após a implementação, você realiza testes para garantir que o
software funcione conforme o esperado. Isso inclui testes de unidade para verificar a
funcionalidade das estruturas de dados e algoritmos.
6. **Entrega e Manutenção**: Finalmente, o software é entregue aos usuários e entra em
operação. A manutenção contínua é realizada para corrigir erros, adicionar novos recursos e
garantir a qualidade a longo prazo.

Portanto, a escolha da estrutura de dados é uma parte crítica do processo de projeto de


software, e ela ocorre após a modelagem de negócios e análise de requisitos, mas antes da
implementação. Uma decisão cuidadosa nessa etapa pode ter um impacto significativo no
desempenho e na qualidade do software final.

Você também pode gostar