Engenharia de Software II - ic.uff.brbianca/engsoft2/index_arquivos/Aula16-EngSoft2.pdf · Aula 16...

24
Aula 16 - 14/05/2006 1 Engenharia de Software II Aula 16 http://www.ic.uff.br/~bianca/engsoft2/

Transcript of Engenharia de Software II - ic.uff.brbianca/engsoft2/index_arquivos/Aula16-EngSoft2.pdf · Aula 16...

Aula 16 - 14/05/2006 1

Engenharia de Software II

Aula 16

http://www.ic.uff.br/~bianca/engsoft2/

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