Você está na página 1de 48

Engenharia de Software

Prof. Victor Sotero

Aula 05 – Processos de Software Cont.


Processo de Desenvolvimento
• É importante definir:
• Quais são as fases que compõem o processo de
desenvolvimento?
• Quais as suas finalidades?
• Qual a ligação entre as fases?
• Documentação e modelos utilizados em cada fase.
Concepção Requisitos Análise Projeto
Manutenção
Codificação Testes Homologação Implantação

Prof. Victor Sotero


Fase - Projeto
• Também conhecida como desenho/design;

• Como a solução precisa ser desenhada?

• Como fazer? – Detalhes sobre a implementação interna;

• Fase de transformação dos diagramas de casos de uso, de


classe e de sequência.

Prof. Victor Sotero


Visões do Projeto
• Visões externas:
• Usuário
• Interfaces (UX/UI)

• Visões internas:
• Quais o componentes do sistema?
• Como os componentes se acoplam?
• Como o sistema se integra com outros?

Prof. Victor Sotero


Decomposição em Módulos
• Modelo orientado a objetos:

• Diagrama de Classes;

• Diagrama de Componentes;

• Diagrama de Sequência;

Prof. Victor Sotero


Diagrama de Classes
• Já conhecemos anteriormente

Prof. Victor Sotero


Diagrama de Componentes
• Define quais os módulos o sistema deve ter

• Tem relação direta com a lógica de programação a ser utilizada

• Determina como cada componente deve interagir

• Um componente, normalmente, é representado por uma classe.

Prof. Victor Sotero


Diagrama de Componentes

Prof. Victor Sotero


Meta principal da fase de projeto
• REUSABILIDADE:

• Utilizar ideias que já existem


• Reduz tempo e dinheiro
• Garante a segurança: um componente reutilizado já foi testado
anteriormente.

Prof. Victor Sotero


Reutilização
Outras atividades da fase de projeto

• Definição das interfaces dos usuários


• Definição da arquitetura do sistema operacional e de
hardware
• Qual a linguagem de programação utilizada
• Como será a estrutura de redes
• Qual SGBD utilizado

Prof. Victor Sotero


Processo de Desenvolvimento
• É importante definir:
• Quais são as fases que compõem o processo de
desenvolvimento?
• Quais as suas finalidades?
• Qual a ligação entre as fases?
• Documentação e modelos utilizados em cada fase.
Concepção Requisitos Análise Projeto
Manutenção
Codificação Testes Homologação Implantação

Prof. Victor Sotero


Fase de testes
• Onde estão os erros?

• Após a identificação e correção podemos:

• Começar a implantar e manter

Prof. Victor Sotero


Definição de Teste
• Sua finalidade é encontrar erros;

• Nessa fase é preciso coletar os erros e consertá-los antes da


implantação do sistema;

• Uma das fases mais importantes – infelizmente muitas vezes


esquecidas;

• Tem relação direta com a qualidade so sistema.

Prof. Victor Sotero


Prof. Victor Sotero
Fase de testes
• Análise de todos os componentes e funções do sistema;

• Validar se estão em conformidade com os requisitos

• O ideal é que essa fase seja realizada por uma equipe


independente

Prof. Victor Sotero


Modalidades de testes
• Testes de verificações (estáticos)
• Realizado antes da implementação
• Auditoria e inspeções
• Tem relação com a qualidade no processo

• Testes de validações(dinâmicos)
• Durante e/ou após a implementação
• Qualidade no produto

Prof. Victor Sotero


Modalidade de Testes

TESTES DINÂMICOS

Prof. Victor Sotero


Custo no Reparo

Prof. Victor Sotero


Importância do Teste
• Em média é gasto entre 30% e 40% do esforço total na fase
de Testes de Software;

• Um teste de software para sistemas de tempo real (ex.:


controlador de vôo) tende a custar de três a cinco vezes mais
do que todos os outros processos.

Prof. Victor Sotero


Real x Desejado

Prof. Victor Sotero


Definição - Teste de Software
• Verificação se o software faz aquilo que foi definido de
acordo com os seus requisitos.
• “Qualquer atividade que, a partir da avaliação de um
atributo ou capacidade de um programa ou sistema, seja
possível determinar se ele alcança os resultados desejados.
(Bill Hetzel – 1988)”.
• Testes servem para mostrar a presença de um erro, e não
para mostrar a sua ausência.

Prof. Victor Sotero


Estratégias para o Teste
• Antes do início do teste é importante realizar revisões técnicas.
Isso faz com que muitos erros sejam eliminados logo de início;
• Um teste começa a nível de componente, chegando até a parte
de integração do sistema;
• Diferentes técnicas são importantes para diferentes projetos;
• O teste é feito pelo desenvolvedor do software ou por equipe
contratada;
• Teste e depuração são atividades diferentes. A segunda ocorre
em decorrência da primeira.

Prof. Victor Sotero


Estratégias de Teste
• A principal finalidade do teste é ser executado e elicitar
algum erro;

• Um bom teste é aquele que demonstra uma grande


quantidade de erros.

Prof. Victor Sotero


Processos de Teste

Prof. Victor Sotero


Processos de Teste
• Planejamento: elaboração da Estratégia de teste e do plano
de teste;
• Preparação: preparação do ambiente de teste, seja em
relação a equipamentos, redes, pessoal, etc;
• Procedimentos iniciais; estabelecer um documento oficial
em comum acordo entre as partes que deve possuir:
• Objetivo do projeto de teste; • Plano preliminar de trabalho;
• Pessoal envolvido; • Avaliação dos riscos;
• As responsabilidades de todos; • Níveis de serviços acordados.

Prof. Victor Sotero


Processos de Teste
• Especificação: elaboração e revisão dos casos de testes,
“scripts” e dos roteiros de teste;
• Execução: execução dos testes planejados na fase anterior;
• Entrega: conclusão da fase de testes com a entrega do
sistema.

Prof. Victor Sotero


Revisões de Software
• Na medida que a Engenharia de Software vai avançando em
suas fases é natural que ocorram erros.
• Um dos métodos para a detecção desses erros no início é a
revisão de software.
• É importante lembrar que:
• Errar é humano e alguns erros podem passar
despercebidamente.

Prof. Victor Sotero


Revisões de Software

• A revisão visa:
1. Mostrar possíveis aperfeiçoamentos no produto;
2. Mostrar em que partes do produto um aperfeiçoamento é
realmente necessário.
3. Obter trabalho técnico e uniforme.

Prof. Victor Sotero


Revisões Técnicas Formais
• O erro, muitas vezes é utilizado para indicar um problema de
qualidade no software que foi descoberto antes do sistema
ser liberado para os usuários;

• As revisões técnicas encontram os erros durante o processo


de desenvolvimento e não deixam que se tornem defeitos na
liberação.

Prof. Victor Sotero


Revisões Técnicas Formais
• Por que são importantes?
• Quanto mais cedo é descoberto um erro, menos caro ficará a
correção.

• Por que são importantes?


• Um erro, inicialmente insignificante, pode ser tornar gravíssimo
com o passar do tempo.

Prof. Victor Sotero


Revisões Técnicas Formais
• Atividade realizada por um engenheiro de software e outros
profissionais da área que visam garantir a qualidade do
software;

• Cada RTF é realizada com um encontro e deve ser


adequadamente planejada, controlada e assessorada;

Prof. Victor Sotero


Objetivos das RTFs
• Descobrir erros em funções, lógicas ou em implementações;
• Verificar se o software está atendendo aos requisitos;
• Garantir que o software esteja de acordo com os padrões;
• Tornar os projetos mais gerenciáveis.

Prof. Victor Sotero


Principais Fases - RTF
• Planejamento: selecionar a equipe, alocar funções e verificar
quais as partes do documento serão vistas;

• Kick-off: distribuir os documentos explicando seus objetivos


e processos;

Prof. Victor Sotero


Principais Fases - RTF
• Preparação individual: trabalho feito de forma antecipada
por cada participante. Serve para tomar conhecimento dos
potenciais defeitos, questionamentos e comentários.
• Retrabalho: atividade realizada pelo autor. Serve para
resolver defeitos encontrados;
• Acompanhamento: checar se os defeitos foram
encaminhados, obtendo métricas.

Prof. Victor Sotero


Restrições - RTF
• Essas revisões visam uma parte pequena e específica do
software. Isso garante um melhor foco dos participantes;
• Deve possuir entre 3 e 5 participantes;
• Deve haver uma preparação prévia com duração máxima de
2h por participante;
• A duração de uma reunião com todos não deve durar mais
do que 2h.

Prof. Victor Sotero


Funcionamento de uma RTF
1. Um revisor registra todos os problemas levantados;

2. Os problemas são sintetizados no final da reunião e é


criado uma lista de problemas de revisão;

3. É criado, também, um relatório sintetizado da revisão


técnica formal (formulário com o anexo da lista de
problemas de revisão).

Prof. Victor Sotero


Fechamento de uma RTF
• Ao final, deve ser decidido se:

• Aceitam o produto sem realizar modificações;

• Rejeitam o produto devido aos erros graves;

• Aceitam, provisoriamente, o produto.

Prof. Victor Sotero


Depuração
• Tarefa que descobre os defeitos e os remove;
• A depuração tem características diferentes no decorrer do
ciclo vida do software:
• Durante a codificação, a depuração é uma atividade
complementar;
• A depuração após o teste é ativada com o teste “bem-
sucedido”. Revela um defeito;
• A depuração durante a fase de manutenção demonstra a
necessidade de adicionar novas características ou por um
defeito que surgiu após ter sido liberado o software.

Prof. Victor Sotero


Depuração
• Quando um caso de teste encontra um erro é o depurador
que irá remover o mesmo.

• O processo de depuração combina o sintoma com a causa.


Isso leva a correção do erro.

• Normalmente leva um desses resultados:


1. A causa é encontrada e corrigida;
2. A causa não será encontrada.

Prof. Victor Sotero


Depuração - Abordagens
• Independente da abordagem adotada, a Inicie conjunto de hipóteses
finalidade da depuração é corrigir a causa do
erro ou defeito;
Modifique conjunto de hipóteses
O responsável pela depuração estabelece
hipóteses com relação à localização do defeito e à
modificação para corrigi-lo.
Selecione hipótese

O processo de depuração é guiado pela


certificação/reprovação das hipóteses levantadas,
bem como pela geração de novas hipóteses e Verifique hipótese
refinamentos das já existentes.

Sim Corrigido? Não

Prof. Victor Sotero


Depuração
• Pressman diz que a depuração é uma mistura de avaliação
sistemática, intuição e sorte;
• Para isso, existem três estratégias que podem ser utilizadas:
• Força Bruta
• Rastreamento (backtracking)
• Eliminação da causa

Prof. Victor Sotero


Força Bruta
• É o método mais comum, porém ineficiente;

• Realiza uma grande quantidade de testes sem nenhum tipo


de planejamento;

• É utilizado quando todos os outros métodos falham.

Prof. Victor Sotero


Rastreamento (Backtracking)
• A partir do local onde foi descoberto um problema, rastreia-
se para trás até encontrar a causa;
• Bastante comum;
• Restringe-se a programas pequenos, uma vez que os
caminhos retroativos são menores;
• Se utilizado em sistemas de médio e grande porte sua
eficácia é bastante reduzida.

Prof. Victor Sotero


Eliminação da Causa
• Os dados relacionados aos erros são isolados para encontrar
a causa;

• É utilizado uma “hipótese de causa” e os dados citados são


utilizados para provar ou reprovar a hipótese;

• É criado uma lista com todas as possíveis causas e são


desenvolvidos novos testes para pôr fim à essas causas.

Prof. Victor Sotero


Algumas Pistas para Depuração
• Sintoma e causa podem estar distantes;
• Um sintoma pode ser causado por um não erro.
• Ex.: arredondamento;
• Um sintoma pode ser causado por um erro humano;
• Um sintoma pode desaparecer quando é corrigido um outro
erro;

Prof. Victor Sotero


Correção do Erro
• A causa do defeito é encontrada em outra parte do programa?
• Em várias situações, um defeito pode ser descoberto pela falha em um
padrão de lógica que pode ser reproduzido em outros lugares do software.
• Qual defeito pode surgir a partir da correção que estou prestes a
fazer?
• Se a correção for realizada em um módulo fortemente acoplado, é preciso
ter muito cuidado.
• O que poderíamos ter feito para eliminar este defeito logo no início?
• Se corrigirmos o processo ou produto, o defeito pode ser eliminado
dos programas futuros.

Prof. Victor Sotero


Considerações
• Efetuar testes e depuração pode ser uma característica inata
do ser humano;
• Nem todos estão aptos para fazer isso;
• A depuração chega a ser uma das partes mais frustrantes da
programação. Motivo: comprovação de que erramos;
• Quando o erro chega a ser corrigido vem uma grande
sensação de alívio.

Prof. Victor Sotero

Você também pode gostar