Escolar Documentos
Profissional Documentos
Cultura Documentos
Projeto Estruturado
Critérios de Avaliação
Projeto Estruturado 2
• Produto:
• Um gráfico de estruturas (Diagrama de Estrutura Modular)
complementado com as especificações (pseudo-códigos) de cada
módulo;
Projeto Estruturado 3
Saída de Decisão
dados
<nome do
módulo> = módulo
= decisão
Controlar
Contas Cliente
dados conta-atrasada
conta EOF
Processar
Obter Dados
Conta Não
Conta
Paga
data-atual 1
detalhes-cliente,
detalhes-cliente,
atraso-pequeno
atraso-grande
detalhes-cliente
atraso-médio
Gerar
Gerar Aviso Gerar
Tratamento
data Gentil Advertência
Legal
atual
data
Obter atual
Data Atual
Projeto Estruturado 7
detalhes-cliente
Obter
Detalhes
Cliente
Projeto Estruturado 8
procedimento ControlarContasClientes
data-atual <- ObterDataAtual;
enquanto não é final de arquivo faça
dados-conta <- ObterDadosConta;
se conta atrasada então
ProcessarContaNãoPaga(dados-conta);
fim se
fim enquanto
procedimento ProcessarContaNãoPaga
entrada: conta
detalhes-cliente <- ObterDetalhesCliente;
se atraso-pequeno então
GerarAvisoGentil(detalhes-cliente, conta);
senão se atraso-médio então
GerarAdvertência(detalhes-cliente, conta);
senão se atraso-grande então
GerarTratamentoLegal(detalhes-cliente, conta);
fim se
Projeto Estruturado 9
A Controlar
Contas Cliente
data-atual
dados
conta-atrasada
Obter A conta
Data Atual EOF
Processar
Obter Dados
Conta Não
Conta
Paga
1
detalhes-cliente,
atraso-pequeno detalhes-cliente,
atraso-grande
detalhes-cliente,
atraso-médio
Gerar
Gerar Aviso Gerar
Tratamento
Gentil Advertência
Legal
A A A
Projeto Estruturado 10
• Módulo Aferente
• Módulo Eferente
• Módulo Transformador
• Módulo Coordenador
Projeto Estruturado 11
int Aferente() { B
…
x = B();
…
return x;
}
Projeto Estruturado 12
void A() {
… Módulo
Eferente
Eferente(x);
… X
}
void Eferente(int x) { B
…
B(x);
…
}
Projeto Estruturado 13
• Ex. (C++): A
void A() { X Y
…
y = Transformador(x); Módulo
… Transformador
}
int Transformador(int x) {
…
x *= 3 + 1;
return x;
}
Projeto Estruturado 14
• Ex. (C++):
Módulo
void Coordenador() { Coordenador
…
x = A(); X Y
…
B(x * 2); A B
…
}
int A() {
…
return x;
}
Projeto Estruturado 15
1: Fluxo de 3: Fluxo de
Representação saída
entrada
externa
Informação
2: Fluxo de
transformações
Representação
interna
Tempo
Projeto Estruturado 21
• Exemplo – DFD:
Funcionários
dados-fun
Descontos
matrícula 3.1
impostos
RH sal-bruto
Calcular
Salário Fluxo de
Bruto transformação
Fluxo de 3.2
entrada Calcular dados-salariais
Fluxo de Salário Fluxo de
transformação Líquido saída
3.3
Emitir contra-cheque
Contra-
cheque
Funcionário
Projeto Estruturado 22
Controlador de
Transformação
• Exemplo – DEM:
Pagar Entrada Processamento Saída
Funcionário
dados-fun
matr-inválida
dados-
sal-liq
fun
dados-fun dados-fun sal-bru sal-liq erro de impressão
sal-bru
dados-fun impostos
matr-inválida
matr
matr dados-fun
Obter
Obter Obter
Dados
Matrícula Descontos
Fun.
Projeto Estruturado 23
void PagarFuncionario() {
…
dados_fun = ObterDadosFun();
…
sal_bru = CalcSalBru(dados_fun);
…
sal_liq = CalcSalLiq(dados_fun, sal_bru);
…
if (EmitirContraCheque(dados_fun, sal_liq))
…
}
Projeto Estruturado 24
Transação …
(dados)
… Caminhos de ação
Despachante D …
(Centro de
Transação)
…
…
…
• Exemplo – DFD:
comprovante
dados-cartão
4.1
4.2
Escolher
Cliente pag pag-cartão Receber
Tipo de
em Cartão
Pagamento
Centro de
Transação
pag-espécie
Caminho 1
valor
Caminho 2
4.3 valor
troco
Receber Vendas
em Espécie
comprovante
Projeto Estruturado 27
Despachante
de Transação
pag
• Exemplo – DEM:
Receber Obter
Transação 1 Transação 2
Pagamento Transação
pag-cancelado
pag
pag
tipo-pag transação- troco
recusada
valor pag
pag
resultado-
transação
Comunicar Registrar
TEF Pagamento
Projeto Estruturado 28
DEM Controlador de
Fluxo de Entrada
• Cada módulo de controle recebe
Controlador Controlador de
Principal Fluxo de Transformações
um nome que implica a função
dos módulos subordinados
Controlador de
Fluxo de Saída que ele controla.
Projeto Estruturado 33
B A
Controlador de
Fluxo de Entrada
A B
Controlador D C
Principal
C D
DEM
• Obs:
• Duas, ou até mesmo três bolhas, podem ser combinadas e representadas como um
módulo;
• Uma única bolha pode ser ampliada em dois ou mais módulos;
• Considerações práticas e critérios da qualidade de projeto determinam o resultado
da fatoração do segundo nível.
Projeto Estruturado 34
b Despachante
Processa- b d
mento
d p
a c1
q
Despa- r
chante q r s
s Saída Organização
p do DEM
Projeto Estruturado 38
Critérios de
Avaliação de
Qualidade de um
Projeto Estruturado Projeto Estruturado
Critérios de Avaliação
Critérios de Avaliação 44
• Coesão Funcional:
• Todas as partes de um módulo trabalham em conjunto para executar
uma tarefa bem definida.
• Coesão Comunicacional:
• Partes internas de um módulo operam os mesmos dados de entrada ou
de saída, fazendo sentido agrupá-los, pois existe uma forte relação
entre eles.
• Coesão Sequencial:
• Os resultados de um componente de um módulo são a entrada para o
próximo componente do mesmo módulo.
Critérios de Avaliação 49
A
A
B L
P R
A
Módulo Interface
muito B C D
confuso
fan-out do módulo A = 3
• O fan-out de um módulo é o número de subordinados imediatos para
aquele módulo.
Critérios de Avaliação 50
Módulos de médio
Móduos não Calcular gerenciamento
realocados pagamento
líquido fatorados
Calcular
Calcular Calcular
Obter dados pagamento líquido
pagamento líquido pagamento líquido
pagamento trabalhadores
horistas mensalistas
externos
Móduos realocados
Critérios de Avaliação 52
Evite esta
estrutura Lute por esta estrutura
Critérios de Avaliação 53
Tomada de
decisão
Efeito da Tomada de
decisão decisão