Buscar

Programação Modular - Anotações de todas as aulas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Modular - ECSRV Página 1 
 
SUMÁRIO 
1. INTRODUÇÃO 
1.1. PRINCÍPIOS DE MODULAR IDADE 
1.1.1. MÓDULO 
1.1.2. ELEMENTOS DE PRO GR AMA 
1.1.3. INT ERFACE 
1.1.4. PRO CES SO DE DES ENVO LV I MENTO 
1.1.5. T IPO ABST RAT O DE DADO S 
1.1.6. ART EFATO E CO NS TR UT O 
1.1.7. ENCAP SULAMENTO 
1.1.8. ACOP LAMEN TO 
1.1.9. CO ES ÃO 
1.1.10. EXER CÍ CIOS 
 
2. MODELAGEM DE ESTRUTURAS 
2.1. NOTAÇÃO 
2.2. VETOR 
2.3. LISTA DUPLAMENT E ENCADEADA COM NÓ C ABEÇA 
2.4. ÁRVORE BINÁRIA COM NÓ CABEÇA 
 
3. ASSERTIVAS ESTRUTURAIS 
3.1. LISTA 
3.2. GRAFO 
 
4. ESPECIFICAÇÃO DE REQUISITOS 
4.1. DEFINIÇÃO 
4.2. NÍVEIS DE ESPECIFICAÇ ÃO 
4.3. REQUISITOS 
4.4. HIPÓTESES 
4.5. RESTRIÇÕES 
4.6. TIPOS DE REQUISITO 
4.7. CRITÉRIOS DE QUALIDAD E DE ESPECIFICAÇÃO 
4.8. EXEMPLO DE REQUISITOS 
 
5. ASSERTIVAS 
5.1. DEFINIÇÃO 
5.2. EXEMPLO DE ASSERTIVAS 
5.3. QUALIDADE DE ARTEFATO S 
5.4. ASSERTIVAS DE ENTRADA E SAÍDA 
5.5. ASSERTIVAS ESTRUTURAIS 
Programação Modular - ECSRV Página 2 
 
6. IMPLEMENTAÇÕES DA PROGRAMAÇÃO 
6.1. ESPAÇO DE DADOS 
6.2. TIPOS DE DADOS 
6.3. DECLARAÇÃO E DEFINIÇÃ O DE ELEMENTOS 
6.3.1. DECLAR AR 
6.3.2. DEFINI R 
6.3.3. IMP LEMENT AÇÃO EM C E C++ 
 
6.4. PRÉ – PROCESSAMENTO 
6.5. EXERCÍCIOS 
 
7. ESTRUTURA DE FUNÇÕES 
7.1. PARADIGMA 
7.2. EXEMPLO DE ESTRUTURA DE FUNÇÕES 
7.3. EXEMPLO DE ESTRUTURA DE CHAMADAS 
7.4. FUNÇÃO 
7.5. ESPECIFICAÇÃO DE FUNÇ ÃO 
7.6. HOUSE KEEPING 
7.7. REPETIÇÕES 
7.8. RECURSÃO 
7.9. ESTADO 
7.10. ESQUEMA DE ALGORITMO 
7.11. VALORES DO TIPO FUNÇÃO 
7.12. PARÂMETROS DO TIPO PO NTEIRO PARA FUNÇÃO 
 
8. DECOMPOSIÇÃO SUCESSIVA 
8.1. CONCEITOS 
8.2. NÍVEIS DE ABSTRAÇÃO 
8.3. PROJETO ESTRUTURADO 
8.4. PASSOS DE PROJETO 
8.4.1. D IR EÇÃO DE PRO JETO 
 
8.5. ELEMENTOS DE UM PASSO DE PROJETO 
8.6. COMPONENTE DA ESTRUTURA 
8.6.1. DEFINI ÇÃO 
8.6.2. ADEQ UAÇÃO 
8.6.3. NECESSI DADE 
8.6.4. SUFI CI ÊN CI A 
8.6.5. ORT OGON ALI DADE 
 
 
Programação Modular - ECSRV Página 3 
 
9. ARGUMENTAÇÃO DE CORRETUDE 
9.1. ARGUMENTAÇÃO DE SEQUE NCIA 
9.2. ARGUMENTAÇÃO DE SELEÇ ÃO 
9.3. ARGUMENTAÇÃO DE REPET IÇÃO 
 
10. INSTRUMENTAÇÃO 
10.1. PROBLEMAS AO EXECUTAR TESTES 
10.2. O QUE É INSTRUMENTAÇÃO 
10.3. OBJETIVO 
10.4. CONCEITOS 
10.4.1. PROGR AMA RO BUS TO 
10.4.2. PROGR AMA TO LER AN TE A FALHAS 
10.4.3. DET ERIO RAÇÃO CONT R OLADA 
 
10.5. INCLUSÃO DE INSTRUMENTOS NO CÓDIGO (C++) 
10.6. ASSERTIVAS EXECUTÁVEI S 
10.7. DETURPADORES 
10.8. TRACES 
10.9. CONTROLADORES DE COBERTURA 
10.10. DETURPADOR DE ESTRUTURAS DE DADOS 
10.11. VALIDADOR DE ESTRUTUR AS DE DADOS 
 
11. TESTES 
11.1. CENÁRIOS DE TESTE 
11.2. REGISTRO DE FALHAS 
11.3. CRITÉRIOS DE SELEÇÃO D E CASOS DE TESTE 
11.4. PROCESSOS DE GERAÇÃO DE CASOS DE TESTE 
11.5. CRITÉRIOS DE COBERTURA 
11.6. COBERTURA DE REPETIÇÕES 
11.7. TESTE CAIXA FECHADA 
 
12. QUALIDADE DE SOFTWARE 
12.1. OBJETIVO 
12.2. QUALIDADE POR CONSTRUÇÃO 
12.3. QUALIDADE X CONTROLE DE QUALIDADE 
12.4. TIPOS DE QUALIDADE 
12.4.1. QUALI DADE R EQ UERI DA 
12.4.2. QUALI DADE ASS EGUR ADA 
12.4.3. QUALI DADE OBS ERV ADA 
12.4.4. QUALI DADE EFETIV A 
 
Programação Modular - ECSRV Página 4 
 
1. INTRODUÇÃO 
1.1. PRINCÍPIOS DE MODULARIDADE 
 
1.1.1. MÓDULO 
Modularidade, por definição lógica significa: um único conceito. 
Já a definição física, diz que modularidade é uma unidade de 
compilação independente. 
 
1.1.2. ELEMENTOS DE PROGRAMA 
 
 
1.1.3. INTERFACE 
 
É um mecanismo de troca de dados, comandos, estados entre 
elementos e estados entre elementos de programa (mesmo nível). 
Existem cinco tipos de interface: arquivo, banco de dados, 
parâmetros, variáveis globais e interface fornecida por terceiros. 
 
Exemplos de sintaxe (regra): 
 Condição da representação de valores (int, float) 
 Como organizar determinado tipo (CPF) 
 
 
 
 
 
 
Programação Modular - ECSRV Página 5 
 
Exemplos de semântica (significado): 
 tpDadosAluno * ObterAluno (int idAluno) 
a. Interface esperada pelo servidor 
a.1. idAluno 
a.2. Acesso à base de dados 
 
b. Interface esperada pelo cliente 
b.1. Ponteiro para os dados do aluno solicitado 
 
c. Interface esperada por ambos 
c.1. tpDadosAluno 
 
 
 
Observações: 
 
 Ocorre a troca de papéis quando o servidor precisa de 
uma informação que só o cliente possui. (call-back) 
 
 Protocolo de uso: forma de utilizar os itens que 
compõem uma interface para que esta possa ser 
operada corretamente 
 
 A validação de dados na interface é feita na 
documentação ou na especificação (embutido no 
código). Exemplo: raiz quadrada (dados maiores ou 
iguais a zero) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 6 
 
1.1.4. PROCESSO DE DESENVOLVIMENTO 
 
 
O arquivo .c é o módulo de desenvolvimento, enquanto o 
arquivo .h é o módulo de definição. 
Observação: 
 A .lib ocupa memória enquanto a .dll é só em tempo de 
execução. Reuso de código sem precisar fazer alguma 
alteração 
 
1.1.5. TIPO ABSTRATO DE DADOS 
 
 
1.1.6. ARTEFATO E CONSTRUTO 
Artefato é qualquer coisa criada no processo de 
desenvolvimento que tenha entidade própria. Exemplo: módulo, 
documentação, ata. 
Construto (build) é o resultado mesmo que parcial do que está 
sendo desenvolvido. 
 
 
 
 
Programação Modular - ECSRV Página 7 
 
1.1.7. ENCAPSULAMENTO 
Encapsulamento garante a proteção, facilita a manutenção e 
permite várias implementações para um mesmo módulo sem precisar 
recompilar tudo. 
Existem dois tipos de encapsulamento: 
a. ENCAPSULAMENTO DE DOCUMENTAÇÃO 
a.1. Documentação interna é voltada para o programador 
do módulo servidor 
a.2. Documentação externa é voltada para o 
programador do módulo cliente 
a.3. Documentação de uso é voltada para o usuário 
 
b. ENCAPSULAMENTO DE CÓDIGO 
b.1. Variável local é encapsulada no bloco de código 
b.2. Private é encapsulada no objeto 
b.3. Static é encapsulada na classe 
b.4. Global static é encapsulada no módulo 
b.5. Global não é encapsulada 
b.6. Public não é encapsulada 
b.7. Protected é encapsulada na estrutura de herança 
 
1.1.8. ACOPLAMENTO 
É uma propriedade relacionada com os itens de uma interface, 
além de ser um conector. 
A qualidade de acoplamento possui três critérios: 
 Número de conectores (criação de uma struct para 
produzir o número de conectores) 
 Complexidade de conectores 
 Tamanho do construtor (quanto menos, melhor) 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 8 
 
1.1.9. COESÃO 
É uma propriedade relacionada com o grau de 
interdependência dos elementos pertencentes ao módulo. 
Tipos de coesão: 
a.1. INCIDENTAL 
É a mais fraca, quando escolhemos sem distinção os 
elementos de um módulo, não havendo interdependência entre 
eles. 
 
a.2. LÓGICA 
Não é tão ruim quando à incidental. Exemplo: guardar 
tudo que cadastra em um mesmo módulo. 
 
a.3. TEMPORAL 
Execução de funções, ao mesmo tempo, com significados 
diferentes. 
 
a.4. PROCEDURAL 
Execução de funções, uma seguida da outra, com 
significados diferentes. 
 
a.5. FUNCIONAL 
Funções com funcionalidades parecidas com tipos de 
dados diferentes. 
 
a.6. ABSTRAÇÃO DE DADOS 
A melhor. Agrupa assuntos semelhantes e abstrai/ ignora 
o que não é necessário, considerando somente o que é 
importante. 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 9 
 
1.1.10. EXERCÍCIOS 
1. Crie uma arquitetura de um programa modularizado 
que utiliza uma estrutura de lista para implementaruma matriz 
genérica utilizada na criação de um tabuleiro de xadrez. 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 10 
 
 
 
 
 
2. Explique e dê exemplo de uma interface fornecida por 
terceiros. 
 
Uma interface fornecida por terceiros é utilizada quando um 
módulo não consegue se comunicar com outro diretamente, ou seja, um tipo 
não conhece o outro. Para não inserir o tipo em cada módulo, insere em um 
terceiro módulo e inclui nos dois módulos. 
Exemplo: struct Peca não “conversa” com struct Casa 
 
 
 
Programação Modular - ECSRV Página 11 
 
2. MODELAGEM DE ESTRUTURAS 
2.1. NOTAÇÃO 
Um artefato tem que representar todos os exemplos possíveis. Notação 
parecida com a UML. 
 
 
2.2. VETOR 
 
 
 
2.3. LISTA DUPLAMENTE ENCADEADA COM NÓ CABEÇA 
 
 
 
 
Programação Modular - ECSRV Página 12 
 
2.4. ÁRVORE BINÁRIA COM NÓ CABEÇA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 13 
 
3. ASSERTIVAS ESTRUTURAIS 
3.1. LISTA 
Se o ponteiro prox de um nó corrente é diferente de nulo, então o 
ponteiro ant do prox aponta para o nó corrente. 
 
 
3.2. GRAFO 
 
Cria-se uma lista para cada vértice que mostre as relações entre os 
vértices (arestas). 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 14 
 
4. ESPECIFICAÇÃO DE REQUISITOS 
4.1. DEFINIÇÃO 
Requisitos são funções, condições, atributos e propriedades a serem 
satisfeitos por um artefato. 
Observação: 
 Falha na especificação x falha na implementação (especificação 
serve como um contrato). Na especificação deve ser dito o que 
deve ser feito e não como deve ser feito. 
 
4.2. NÍVEIS DE ESPECIFICAÇÃO 
 
Existem dois níveis de especificação: o mais baixo e mais alto. 
 
Observação: 
 A análise de domínio (descobrir as regras que existem no 
sistema) consiste em identificar o que é genérico para todos os 
sistemas que atuam no domínio de aplicação e o que é específico 
para o sistema que atua nesse domínio 
 
4.3. REQUISITOS 
São reduzidos em: documento próprio e no comentário do código 
(requisito de implementação). 
Observação: 
 Requisito é feito em linguagem natural 
 
4.4. HIPÓTESES 
Já está garantida antes de começar a especificação. São consideradas 
válidas antes de se desenvolver o artefato. 
Exemplo: validação de CPF. Se o seu sistema recebe o CPF através de 
outro sistema, será preciso validar o CPF? Não necessariamente, o sistema 
que enviou o CPF já pode ter feito a validação. 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 15 
 
4.5. RESTRIÇÕES 
São condições que restringem a liberdade de escolha de alternativa na 
construção de um artefato. 
Exemplo: ler trilhões de dados. Há a opção de filtros, porém nem 
sempre é eficaz. Contar dia por dia em um script e registrar o resultado das 
informações, não teria como recuperar tudo de uma vez. 
 
4.6. TIPOS DE REQUISITO 
Os requisitos podem ser funcionais (funcionalidades do sistema), não 
funcionais (características que não estão atreladas às funcionalidades do 
sistema) e inversos (o que o sistema não deve fazer). 
 
4.7. CRITÉRIOS DE QUALIDADE DE ESPECIFICAÇÃO 
Devem reduzir o escopo de efeito. Para tal, deve-se verificar: 
 Não ambiguidade 
 Nivelamento (não misturar requisitos de alto nível com 
requisitos de baixo nível) 
 Exatidão (conformidade com o mundo real) 
 
4.8. EXEMPLO DE REQUISITOS 
Exemplo1: o tempo de resposta deve ser menor que dez segundos. 
(bem formulado) 
 
Exemplo2: o sistema deve mostrar ao usuário os seus dados mais 
importantes. (mal formulado) 
 
Exemplo3: o programa deve fornecer resultados confiáveis. (mal 
formulado) 
 
Exemplo4: a interface deve ser adequada ao usuário. (mal formulado) 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 16 
 
5. ASSERTIVAS 
5.1. DEFINIÇÃO 
São relações envolvendo os dados e os estados manipulados que 
devem estar satisfeitas em determinados pontos do algoritmo. 
 
São utilizadas em algoritmos corretos por construção. 
Instrumentação é a capacidade de o código conseguir reconhecer 
por ele mesmo se está correto. 
 
5.2. EXEMPLO DE ASSERTIVAS 
∀ elemento: elemento ∈ à lista, se elementopAnt != NULL => 
elementopAntprox == elemento. 
 
∀ registros i e j: i e j ∈ arquivo A se i antecede j => i . chave < j . 
chave 
Um aluno “a” está matriculado se e somente se: “a” ∈ 
AlunosRegistrados e ∃d: d ∈ à DisciplinasOferecidas => matriculados (a,d). 
 
5.3. QUALIDADE DE ARTEFATOS 
Para garantir a qualidade, o programa depende de requisitos 
satisfeitos, hipóteses satisfeitas e assertivas satisfeitas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 17 
 
5.4. ASSERTIVAS DE ENTRADA E SAÍDA 
Delimitam fragmentos de código. 
 
Exemplo: retirar nó corrente de uma lista duplamente encadeada. 
A.E.1 valem as assertivas estruturais da lista duplamente encadeada. 
A.E.2 ponteiro corrente aponta para o nó a ser retirado. 
 
A.S.1 valem as assertivas estruturais da lista duplamente encadeada. 
A.S.2 nó foi excluído 
A.S.3 ponteiro corrente foi excluído 
 
5.5. ASSERTIVAS ESTRUTURAIS 
São condições satisfeitas pelos elementos de uma estrutura de dados 
em repouso. Cada função de acesso deve garantir a satisfação dessas 
assertivas antes e depois da execução. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 18 
 
6. IMPLEMENTAÇÕES DA PROGRAMAÇÃO 
6.1. ESPAÇO DE DADOS 
São áreas de armazenamento alocadas em um meio que possuem 
um tamanho e podem estar associadas a um ou mais nomes de referência. 
Exemplo1: A[j], onde j é o j – ésimo elemento do vetor A. 
Exemplo2: *pAux é o espaço de dados apontado por pAux. 
Exemplo3: pAux é o espaço de dados que contém um espaço de 
memória. 
pElemTabSimb * ObterElemSimb (char * pSimbolo) (* 
ObterElemTabSimb (char * pSimbolo) . 
Id é o subcampo da estrutura apontada pelo retorno da função 
ObterElemTabSimb (char * pSimbolo)Id 
 
6.2. TIPOS DE DADOS 
Determina a organização, codificação, tamanho em byte e conjunto 
de valores permitidos. 
Observação: 
 Um espaço de dados precisa estar associado a um tipo para 
que possa ser interpretado pelo programa desenvolvido em 
linguagem tipada 
São tipos computacionais: int, float, char*, entre outros. Tipos 
básicos de usuários: enum, union, typedef e struct. Tipo abstrato de dados: 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 19 
 
6.3. DECLARAÇÃO E DEFINIÇÃO DE ELEMENTOS 
 
6.3.1. DECLARAR 
O nome existe. Corresponde ao valor de um determinado 
tipo. Exemplo: struct tpNo. 
 
6.3.2. DEFINIR 
Aloca espaço de dados. Amarra um espaço ao nome. 
Exemplo: malloc. 
Observação: 
 Tipo computacional declara e define. Exemplo: int x. 
 
6.3.3. IMPLEMENTAÇÃO EM C E C++ 
Exemplo de declaração e definições de nomes globais 
exportados pelo módulo servidor: 
int A; 
int F (int B); 
Exemplo de declarações externas contidas no módulo cliente e 
que somente declaram o nome sem associá-lo a um espaço de dados: 
extern int A; 
extern F (int B); 
Exemplo de declarações e definições de nomes globais 
encapsulados no módulo: 
static int A; 
static F (int B); 
 
 
 
 
Programação Modular - ECSRV Página 20 
 
6.4. PRÉ – PROCESSAMENTO 
 
 
Programação Modular - ECSRV Página 21 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 22 
 
6.5. EXERCÍCIOS 
1. Como é possível definir uma variável sem declará-la?Alocando espaço na memória de tamanho igual ao tipo da 
estrutura. 
 
 
2. Necessito criar uma interface compartilhada por terceiros 
apenas por alguns módulos. Apresente um exemplo 
mostrando como isso é possível se a mesma está definida 
em um módulo de definição incluído em todos os módulos 
de implementação do projeto. 
 
Observação: 
 A interface fornecida por terceiros só pode ser vista 
pelo módulo que a utiliza. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 23 
 
7. ESTRUTURA DE FUNÇÕES 
7.1. PARADIGMA 
É a forma de programar. Um paradigma pode ser orientado a 
objetos (programação modular) ou procedural. 
 
7.2. EXEMPLO DE ESTRUTURA DE FUNÇÕES 
 
 
 
 
7.3. EXEMPLO DE ESTRUTURA DE CHAMADAS 
 
 
Programação Modular - ECSRV Página 24 
 
F1 origem 
F2 F8 F3 F5 F9 chamada recursiva indireta 
F10 função morta 
F8 F3 F5 F6 F7 dependência circular entre métodos 
F4 F4 chamada recursiva direta 
 
7.4. FUNÇÃO 
É uma porção autocontida de código. Possui nome, assinatura 
composta de retorno, nome, parâmetro e corpo da função (um ou mais). 
 
7.5. ESPECIFICAÇÃO DE FUNÇÃO 
Possui um objetivo (pode ser igual ao nome), acoplamento (itens 
da interface), condições de acoplamento (assertivas de entrada e saída), 
interface com o usuário (em um input pedindo ao usuário), requisitos 
(todos os requisitos que são elicitados têm que ser armazenados em 
alguma documentação ou parte do código), hipóteses (consideradas 
válidas antes do desenvolvimento da função) e restrições (limitações do 
desenvolvimento da função). 
 
 
7.6. HOUSE KEEPING 
É o módulo responsável por liberar recursos alocados a programas, 
componentes ou funções ao terminar a execução. 
 
7.7. REPETIÇÕES 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 25 
 
7.8. RECURSÃO 
 
 
7.9. ESTADO 
É a fotografia da situação atual. Conjunto de dados ou condições. 
 
Descritor de estados é variável que define o estado. 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 26 
 
7.10. ESQUEMA DE ALGORITMO 
É a parte mais genérica mais a parte específica do código. 
 
Permite encapsular a estrutura de dados utilizada. É correto, 
independente da estrutura, e incompleto, logo precisa ser instanciado. 
Observação: 
 Hotspot são funções de interface (parte específica) 
 Se o esquema está correto e o hotspot possui assertivas 
válidas, então o programa está correto 
 
7.11. VALORES DO TIPO FUNÇÃO 
 
 
 
 
 
 
Programação Modular - ECSRV Página 27 
 
7.12. PARÂMETROS DO TIPO PONTEIRO PARA FUNÇÃO 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 28 
 
8. DECOMPOSIÇÃO SUCESSIVA 
8.1. CONCEITOS 
Tem por objetivo vencer a barreira de complexidade (top down) e 
reduzir a ocorrência de erros em virtude da melhor compreensão de 
problemas elementares. 
 
8.2. NÍVEIS DE ABSTRAÇÃO 
Cada patamar da estrutura de decomposição. 
 
Abstrair é concentrar em determinado grau de detalhe a partir de 
um dado ponto de vista ignorando detalhes mais finos e outros pontos de 
vista. 
Exemplos de ponto de vista: 
 Estático (estrutura de dados e modelos de dados) 
 Funcional (serviços disponibilizados para o usuário) 
 Dinâmico (comportamento do tempo) 
 
8.3. PROJETO ESTRUTURADO 
Gera a estrutura de decomposição. A ideia é ter uma estrutura boa, 
ou seja, resolver o problema com eficiência, fácil manutenção e fácil 
implementação. 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 29 
 
8.4. PASSOS DE PROJETO 
 
 
Direção de projeto pode ser top down (começa um problema de cima 
para baixo), bottom up (integração de um problema menor em um 
problema maior). 
 
 
 
 
8.5. ELEMENTOS DE UM PASSO DE PROJETO 
 
 
 
 
 
 
Programação Modular - ECSRV Página 30 
 
8.6. COMPONENTE DA ESTRUTURA 
 
8.6.1. DEFINIÇÃO 
 
A intenção do componente deve estar atrelada. 
 
8.6.2. ADEQUAÇÃO 
 
Conjunto solução satisfaz usuário. 
 
8.6.3. NECESSIDADE 
 
Cada elemento do conjunto contribui para a solução. 
 
8.6.4. SUFICIÊNCIA 
 
Todos os componentes juntos satisfazem a solução. 
 
8.6.5. ORTOGONALIDADE 
 
Cada elemento resolve uma parte de abstração em que não é 
resolvida por qualquer outro elemento. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 31 
 
9. ARGUMENTAÇÃO DE CORRETUDE 
9.1. ARGUMENTAÇÃO DE SEQUENCIA 
 
 
 
Programação Modular - ECSRV Página 32 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 33 
 
9.2. ARGUMENTAÇÃO DE SELEÇÃO 
 
 
 
 
 
Programação Modular - ECSRV Página 34 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 35 
 
9.3. ARGUMENTAÇÃO DE REPETIÇÃO 
 
 
Programação Modular - ECSRV Página 36 
 
 
 
Programação Modular - ECSRV Página 37 
 
 
 
 
Programação Modular - ECSRV Página 38 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 39 
 
10. INSTRUMENTAÇÃO 
10.1. PROBLEMAS AO EXECUTAR TESTES 
Esforço de diagnose (origem do problema, grande e muito sujeito a 
erros). 
Contribuem para esta dificuldade: 
 Dificuldade de estabelecer com exatidão a causa a partir dos 
problemas observados 
 Tempo decorrido entre o instante da falha e o observado 
 Falhas intermitentes 
 Causa externa ao código (ponteiros loucos, comportamento 
inesperado do hardware) 
 
 
10.2. O QUE É INSTRUMENTAÇÃO 
São fragmentos inseridos no módulo (código e dados). Não 
contribui para o objetivo do programa, monitora o programa ao longo de sua 
execução, consome recursos de execução e custa para ser desenvolvido. 
 
10.3. OBJETIVO 
Detectar falhas de funcionamento do programa o mais cedo 
possível de forma automática e impedir que falhas se propaguem. 
 
10.4. CONCEITOS 
10.4.1. PROGRAMA ROBUSTO 
Interpreta a execução quando observa o problema e 
mantém o dano confinado. 
 
10.4.2. PROGRAMA TOLERANTE A FALHAS 
É robusto e possui mecanismos de recuperação. 
 
 
 
Programação Modular - ECSRV Página 40 
 
10.4.3. DETERIORAÇÃO CONTROLADA 
Habilidade de continuar operando corretamente, 
embora com alguma perda de funcionalidade. 
 
10.5. INCLUSÃO DE INSTRUMENTOS NO CÓDIGO (C++) 
 
 
10.6. ASSERTIVAS EXECUTÁVEIS 
São assertivas que foram criadas (texto) e transformadas em 
código. Possui as seguintes vantagens: 
 Informam o problema quase imediatamente após ter sido 
gerado (controle de integridade feito pela máquina) 
 Reduz o risco de falha humana 
 Precisam ser corretas e completas 
 
 
10.7. DETURPADORES 
Os deturpadores acompanham interativamente o programa em 
execução, incluem pontos de interrupção (breakpoints), executa o programa 
comando a comando, apresenta conteúdo de usuários e é utilizado somente 
como último recurso. 
 
 
Programação Modular - ECSRV Página 41 
 
10.8. TRACES 
São sequencias de impressões ou exibições de conteúdo de 
variáveis produzidas no decorrer da execução do programa. Exemplo: printf. 
Sempre que a execução passa por um ponto ocorre trace de 
instrução. Sempre que o valor de uma variável muda, ocorre trace de 
evolução. 
 
10.9. CONTROLADORES DE COBERTURA 
Obtém estatísticas relativas à execução do programa através da 
contagem do númerode vezes que a execução passou por um determinado 
ponto do programa. Os contadores estarão armazenados num vetor global 
estático manipulado por funções de acesso. 
 
 
10.10. DETURPADOR DE ESTRUTURAS DE DADOS 
Instrumento projetado para adulterar estruturas de dados sob 
controle do testador. Permite enxergar até o ponto onde se deseja corromper, 
selecionando o item e as formas de corrupção. 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 42 
 
10.11. VALIDADOR DE ESTRUTURAS DE DADOS 
Verifica se as estruturas de dados satisfazem suas assertivas 
estruturais. 
Observação: 
 É possível determinar o tipo de elemento referenciado 
por valor? (Inserção de campo “tipo” para identificar o 
tipo do espaço de dado) 
 É possível caminhar por todos os campos adjacentes da 
estrutura? (Ponteiro para nó pai) 
 É possível determinar a ocupação do espaço? 
(Totalizador do número de nós na cabeça da árvore, 
número de bytes no nó da árvore e número de bytes no 
espaço apontado) 
 É possível determinar todos os elementos ativos e se 
todos os elementos alocados são ativos? (Utilizando uma 
lista de espaço alocado) 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 43 
 
11. TESTES 
11.1. CENÁRIOS DE TESTE 
A partir dos cenários de teste é possível defini-los, definir a 
massa de teste, o ambiente de teste, a organização necessária, as ferramentas 
que serão usadas e as pessoas que estarão envolvidas. 
“Testes podem ser utilizados para detectar a presença de erros 
e nunca ausência” (teste orientado à destruição). 
Observação (teste x objetivo): 
 Maior rigor (serviço com elevado valor e risco grande) 
 Menor rigor (serviço de baixo valor e risco pequeno) 
 
11.2. REGISTRO DE FALHAS 
 Data 
 Identificação do teste 
 Sintoma 
 Data da correção 
 Artefatos alterados 
 Classe da falta (conjunto de problema = erro de 
especificação, de máquina) 
 Correção realizada 
 
11.3. CRIÉTERIOS DE SELEÇÃO DE CASOS DE TESTE 
O critério é válido quando apresenta falha se existe falha no 
artefato, completo quando cobre todas as condições estabelecidas por um 
padrão de completeza, confiável quando não mascara erros, eficaz quanto 
mais falhas encontrarem e eficiente quanto menos recurso gastar. 
O teste caixa fechada, caixa preta, é aquele que abre (caso de 
teste gerado a partir da especificação). O teste caixa aberta, caixa branca, é o 
caso de teste gerado a partir da estrutura do código. Já o teste de estrutura de 
dados é aquele que é gerado a partir do modelo das estruturas de dados 
utilizadas. 
 
 
 
 
 
Programação Modular - ECSRV Página 44 
 
11.4. PROCESSOS DE GERAÇÃO DE CASOS DE TESTE 
Quando o caso de teste é abstrato devemos descobrir o que 
tem que ser testado. Exemplo: deve ser retirado um nó da lista. 
Quando o caso de teste é semântico devemos descobrir como 
deve ser testado. Exemplo: para retirar um nó intermediário da lista é preciso 
criar a lista, inserir três nós, ir ao nó intermediário e exclui-lo. 
Quando o caso de teste é valorado devemos colocar o valor no 
que deve ser testado. Exemplo: excluir nó intermediário. 
 
Recomendações básicas para criação de caso de teste, com o 
objetivo de maximizar a probabilidade de resolver o problema: 
 Ao testar a <= b tem que testar a < b, a = b e a > b. 
 Valores de entrada de tamanhos variáveis 
 
 Valores pertencentes a conjuntos criados dinamicamente 
(conjunto vazio, conjunto com um elemento, conjunto 
com três ou mais elementos) 
 
 
 
 
 
 
Programação Modular - ECSRV Página 45 
 
11.5. CRITÉRIOS DE COBERTURA 
 
 
Programação Modular - ECSRV Página 46 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 47 
 
11.6. COBERTURA DE REPETIÇÕES 
 
Arrasto é o menor número de iterações necessárias para que 
todas as variáveis ou estados inicializados antes e modificados durante a 
repetição passem a depender exclusivamente de valores computados. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 48 
 
11.7. TESTE CAIXA FECHADA 
Serve para definir elementos, casos de teste (neste caso, 
criados a partir das especificações) e scripts de teste. 
Quando cada caso exercita pelo menos uma condição não 
tratada em qualquer outro teste do conjunto é chamado de partição em 
classes de equivalência. 
 
 
 
 
 
 
 
 
 
 
 
 
Programação Modular - ECSRV Página 49 
 
12. QUALIDADE DE SOFTWARE 
12.1. OBJETIVO 
Diferenciar elevada qualidade (produto) da qualidade 
satisfatória (usuário). 
 
12.2. QUALIDADE POR CONSTRUÇÃO 
Atingida em virtude do trabalho disciplinado, utilizando 
padrões, ferramentas adequadas, qualidade requerida, identificando falhas 
o mais cedo possível. 
 
12.3. QUALIDADE X CONTROLE DE QUALIDADE 
Qualidade não pode ser assegurada através do controle (errado 
ou incompleto) de qualidade. 
Controle é o indicador do grau de qualidade que artefato 
possui e não do que deveria possuir. 
 
12.4. TIPOS DE QUALIDADE 
 
12.4.1. QUALIDADE REQUERIDA 
É especificada para o artefato de acordo com o que o 
cliente solicitou. 
 
12.4.2. QUALIDADE ASSEGURADA 
Técnicas de ferramentas, métodos e processos 
conseguem assegurar por construção. 
 
12.4.3. QUALIDADE OBSERVADA 
Observada através do controle de qualidade. 
 
12.4.4. QUALIDADE EFETIVA 
É a que o artefato efetivamente possui.

Continue navegando