Upload
duongnguyet
View
223
Download
0
Embed Size (px)
Citation preview
Aula 16 - 14/05/2006 2
Correção da Prova
1. O que é uma atividade guarda-chuva? Dê dois exemplos.
• São atividades aplicáveis durante todo o processo de software.
– Exemplos: medição, gestão de risco, testes, revisões formais.
Aula 16 - 14/05/2006 3
Correção da Prova
2. Qual é a principal desvantagem de se aperfeiçoar um protótipo para torná-lo um produto de produção?
• A principal desvantagem é gerar um produto final de baixa qualidade porque:– O protótipo é feito para demonstrar funcionalidade
rapidamente, logo seu projeto raramente é bem feito.
– As escolhas feitas para o protótipo (linguagem, algoritmos, arquitetura) raramente são apropriadas para o produto final.
Aula 16 - 14/05/2006 4
Correção da Prova
3. Dadas as características de cada projeto de software abaixo, indique qual o modelo de processo é o mais apropriado.
a) Diferentes níveis de funcionalidade e pouca disponibilidade de mão-de-obra: incremental.
b) Requisitos fixos, orçamento fixo e funcionalidade simples: cascata.
c) Orçamento flexível, requisitos mal definidos e cronograma flexível: espiral.
d) Requisitos fixos, funcionalidade modularizável, prazos curtos e grande disponibilidade de mão de obra: RAD.
Aula 16 - 14/05/2006 5
Correção da Prova
4. Sobre o processo XP (Extreme Programming):a) Os testes de unidade devem ser criados antes ou
depois do código? Por quê? Antes. Porque o então o desenvolvimento fica mais orientado para passar nos testes, ou seja, cumprir os requisitos. Além disso, facilita a aplicação dos testes assim que o código fica pronto.
b) Cite uma vantagem da programação em pares. A principal vantagem é o controle de qualidade em tempo real. Enquanto um programador escreve o código, o outro verifica se o programa segue as normas de qualidade. Além disso, a programação em pares possibilita a resolução de problemas em tempo real.
Aula 16 - 14/05/2006 6
Correção da Prova
5. Sobre estratégias de teste:a) O que é um pseudo-controlador (driver)?
É um programa que recebe os dados do caso de teste, passa os dados ao componente a ser testado e imprime os resultados relevantes.
b) O que é um pseudo-controlado (stub)?É um programa que substitui módulos que são chamados pelo componente a ser testado. Ele tem a mesma interface do módulo sendo substituído, mas com o mínimo de funcionalidade.
c) Cite uma vantagem e uma desvantagem da integração descendente.
• Vantagem: demonstração de capacidade funcional logo no início.• Desvantagem: necessidade de criação de pseudo-controlados.
Aula 16 - 14/05/2006 7
Correção da Prova
6. Sobre o fluxograma ao lado:
a) Transforme o fluxograma em um grafo de fluxo.
A,B
D
F
C
E G
H
Aula 16 - 14/05/2006 8
Correção da Prova
b) Calcule a complexidade ciclomática.
V(G) = E – N + 2 = 9 – 7 + 2 = 4
V(G) = 4 regiões
V(G) = P + 1 = 3 + 1 = 4
A,B
D
F
C
E G
H
R1
R2
R3
R4
Aula 16 - 14/05/2006 9
Correção da Prova
c) Dê um conjunto-base de caminhos independentes para esse grafo de fluxo.
A,B,C,E,HA,B,C,F,H
A,B,D,HA,B,D,G,H
A,B
D
F
C
E G
H
Aula 16 - 14/05/2006 10
Correção da Prova
d) Prepare casos de teste para exercitar cada caminho independente, especificando o valor de x na entrada e na saída.
A,B,C,E,H: entrada x=1, saída x=2A,B,C,F,H: entrada x=3, saída x=4A,B,D,H: entrada x=5, saída x=5A,B,D,G,H: entrada x=7, saída x=9
Aula 16 - 14/05/2006 11
Correção da Prova
7. Sobre a análise de valor limite (BVA):
a) Qual é o objetivo da BVA?
O objetivo da BVA é testar o funcionamento do programas nos valores limites das classes de equivalência de entrada, onde normalmente ocorrem erros.
b) Quando uma condição de entrada especifica um intervalo limitado pelos valores a e b, que casos de teste devem ser criados segundo a BVA?
Casos de teste com valores a e b, e imediatamente acima e abaixo de a e de b (a-1, a+1, b-1 e b+1).
Aula 16 - 14/05/2006 12
Correção da Prova
8. Que falhas são detectadas pelo teste de matriz ortogonal e não por testes de modo singular? Dê uma justificativa.
Falhas de modo duplo, isto é, falhas que involvem uma combinação de dois parâmetros. O teste de modo singular testa cada parâmetro independentemente, enquanto o teste de matriz ortogonal garante que cada combinação de dois parâmetros é testada.
Aula 16 - 14/05/2006 13
Correção da Prova
9. Na métrica ponto por função, qual é a diferença entre uma entrada externa e uma consulta externa?
A entrada externa geralmente modifica algum arquivo lógico interno e fornece informação de controle.A consulta externa resulta na geração de uma saída imediata e não modifica nenhum arquivo.
Aula 16 - 14/05/2006 14
Correção da Prova
10. Explique como as seguintes métricas CK são calculadas:
a) Acoplamento entre as classes de objetos.É calculada através das colaborações listadas para cada classe. Soma-se o número de colaborações para cada classe.
a) Falta de coesão em métodos.É o número de métodos que têm acesso a um ou mais dos mesmos atributos. Para cada atributo, verifica-se quantos métodos lêem ou modificam o atributo.
Aula 16 - 14/05/2006 15
Ementa
• Processos de desenvolvimento de software (Caps. 2, 3 e 4 do Pressman)
• Estratégias e técnicas de teste de software (Caps. 13 e 14 do Pressman)
• Métricas para software (Cap. 15)– Métricas para o modelo de análise– Métricas para o modelo de projeto– Métricas de código fonte– Métricas para teste
• Gestão de projetos de software: conceitos, métricas, estimativas, cronogramação, gestão de risco, gestão de qualidade e gestão de modificações
• Reengenharia e engenharia reversa
Aula 16 - 14/05/2006 16
Métricas para Projeto Orientada a Objeto
• Métricas orientadas a classe– Métricas CK
– Métricas MOOD– Métricas de Lorenz e Kidd
• Métricas orientadas a operação
Aula 16 - 14/05/2006 17
Métricas MOOD
• Fator de herança de métodos (MIF)– Mede o grau em que a arquitetura de classes de um
sistema OO faz uso de heranças.
– MIF = Σi Mh(Ci) / Σi Mt(Ci)onde Mh é o número de métodos herdados e Mt é o número total de métodos (herdados + definidos).
• Fator de acoplamento (CF)– Dá uma indicação das conexões entre os elementos
do projeto OO.
– CF = Σi Σj é_cliente(Ci,Ci) / (n2-n)onde n é o número de classes.
Aula 16 - 14/05/2006 18
Métricas de Lorenz e Kidd
• Em um livro sobre métricas OO, Lorenz e Kidd dividem as métricas baseadas em classe em quatro categorias amplas:– Tamanho: contagem de atributos e operações
para uma classe individual e valores médios para o sistema.
– Herança: modo pelo qual as operações são reusadas ao longo da hierarquia de classes.
– Estrutura interna: coesão e operação.– Estrutura externa: acoplamento.
Aula 16 - 14/05/2006 19
Métricas Orientadas a Operação
• São métricas para os métodos (operações) que residem dentro de uma classe.
• Exemplos:– Tamanho médio da operação: é o número de
mensagens (chamadas de outros métodos).– Complexidade da operação: pode ser calculada
usando qualquer das métricas de complexidade propostas para software convencional (por exemplo, complexidade ciclomática).
– Número médio de parâmetros por operação.
Aula 16 - 14/05/2006 20
Métricas de Código-Fonte
• Halstead foi o primeiro cientista a propôr leis quantitativas para o desenvolvimento de software em 1977.
• A utilidade dessas métricas é um assunto controverso na comunidade de engenharia de software.
• Elas são usadas principalmente para estimar o esforço de manutenção do código.
Aula 16 - 14/05/2006 21
Métricas de Halstead
• Baseadas nas seguintes medidas:– n1: número de operadores (aritméticos e de fluxo de controle)
distintos que aparece em um programa.– n2: número de operandos (variáveis e constantes) distintos que
aparece em um programa.– N1: número total de ocorrências de operador.– N2: número total de ocorrências de operando.
• A partir dessas medidas, cinco métricas são derivadas:– Tamanho: N = N1 + N2
– Vocabulário: n = n1 + n2
– Volume: V = N log2n (informação em bits necessária para especificar o programa).
– Dificuldade: D = (n1/2)(N2/n2) – Esforço: E = V*D
Aula 16 - 14/05/2006 22
Métricas para Teste
• As métricas de complexidade podem ser utilizadas para estimar o esforço de teste.– Complexidade ciclomática– Coesão e acoplamento do projeto OO
• O esforço de teste também pode ser estimado usando a métrica de esforço de Halstead.– A porcentagem total de teste a ser alocada a um
módulo k pode ser estimada usando a seguinte relação:
% do esforço de teste (k) = e(k)/Σie(i)
Aula 16 - 14/05/2006 23
Métricas para Teste OO
• As métricas OO que tem influência direta na “testabilidade” do sistema são:– Falta de coesão em métodos– Porcentagem pública e protegida
• % de atributos que são públicos ou protegidos– Acesso público a dados
• Número de classes que podem acessar atributos de outra classe.
– Número de classes raiz– Convergência (fan-in)
• Indica se uma classe herda de mais de uma classe raiz.– Número de filhos– Profundidade da árvore de herança
Aula 16 - 14/05/2006 24
Métricas de Manutenção
• O índice de maturidade de software (SMI) fornece uma indicação da estabilidade de um produto de software, com base nas modificações.
• Sendo:– MT = número de módulos na versão corrente– Fc = número de módulos na versão corrente que foram
modificados– Fa = número de módulos na versão corrente que foram
adicionados– Fd = número de módulos na versão anterior que foram
descartados na versão corrente.
• SMI = [MT – (Fa + Fc + Fd)]/MT