SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
1
TEMA 8
DIAGRAMA DE ESTRUTURA OU ESTRUTUROGRAMA
1. Definição de Diagrama de Estrutura e Módulo
Uma das características do desenho estruturado é produzir sistemas de fácil manutenção,
através da criação de módulos pequenos e independentes, deixando os detalhes físicos
(input, output, formatos) para os módulos mais baixos.
Os sistemas modulares estão muito ligados à programação estruturada, uma das técnicas
primárias que deu atenção à complexidade dos sistemas, criando um conjunto muito
pequeno de instruções de programação para o desenvolvimento da codificação e
reconhecendo que para desenvolver os detalhes de um problema, é muito importante ter
firme compreensão de todo o problema primário.
Estamos a falar da técnica que ficou conhecida como top-down approach (de cima para
baixo) ou step wise refinement (refinamento passo a passo), que consiste em elaborar uma
visão equilibrada partindo de uma visão geral de detalhes do problema.
Fig.1: Exemplo de uma estrutura top-down
Embora os sistemas desenvolvidos através da programação estruturada tivessem menos
falhas do que os sistemas tradicionais, tornou-se ainda quase tão difícil como antes
implementar as mudanças requeridas pelos usuários ou as adaptações do sistema. A razão
principal deste fracasso é que a programação estruturada deixou de levar em consideração
as amplas estruturas do sistema, que é onde uma grande parte da manutenção acontece, e
também porque a abordagem top-down em que se baseia não tem regras que explicam
onde o particionamento do problema em subprogramas deve ocorrer.
Na análise e desenho estruturado de sistemas todos os conceitos da abordagem top-down
permanecem válidos e outros novos foram adicionados, permitindo que uma visão mais
ampla dos sistemas de grande porte seja obtida.
A principal ferramenta utilizada no desenho estruturado para descrever a estrutura de um
sistema é o diagrama de estrutura ou estruturograma.
Estruturograma: é um grafo arborescente que representa a hierarquização do controlo
num sistema.
Um grafo é um objeto básico de estudo da teoria dos grafos. Tipicamente, um grafo é
representado como um conjunto de pontos (vértices) ligados por retas (as arestas).
Dependendo da aplicação, as arestas podem ser direcionadas, e são representadas por
"setas" (http://pt.wikipedia.org/wiki/Grafo).
Geral
Editar ImprimirEntrada
2
O estruturograma é constituído de módulos, evocações e parâmetros.
Um módulo é definido como uma colecção de instruções de programa com quatro
atributos básicos: entrada e saída, função, lógica (ou mecanismos) e dados internos.
Neste caso os atributos básicos significam:
1. Entrada e Saída:
Entrada – o que é recebido pelo chamado (enviado pelo chamador).
Saída – o que retorna do chamado (devolvido ao chamador).
As Entradas e Saídas representam as informações que um módulo necessita e fornece.
2. Função:
O que se faz com a entrada para se produzir à saída
A função de um módulo é o que ele faz para a entrada produzir a saída
Entrada, saída e função fornecem uma visão externa de um módulo. (caixa negra).
3. Lógica:
A codificação de procedimentos ou a lógica pela qual ele executa as suas funções. A
lógica representa as codificações de procedimentos ou algoritmos que executam a
função.
4. Dados internos:
É o seu espaço privado de trabalho, incluindo os dados sobre os quais só o próprio
módulo faz referências.
Dados internos representam o espaço, e é, a área interna de trabalho que um módulo
faz referência.
Lógica e dados internos representam uma visão interna do módulo.
Um módulo tem mais atributos, como:
Ter nome pelo qual pode ser referenciado
O que um módulo faz interessa mais do que como ele faz (visão externa)
Pode usar ou ser usado por outros módulos; (não implica uma descrição ou
codificação única, embora indique chamamento de tipo determinado)
Invocação – chamamento
Em suma:
Módulo: é um conjunto de instruções (lexicalmente contíguas), unificado por elementos
definidores da respectiva fronteira e dotado de um identificador próprio, por exemplo,
Procedure em Pascal.
2. Representação Gráfica de um Módulo
Em um diagrama de estrutura, o módulo é representado por um rectângulo dentro do qual
está contido o seu nome.
3
Fig.1: Exemplo de um diagrama de estrutura
Módulo
Invocação Item de dados
de saída
Item de dados Indicador (flag)
de entrada
Fig.2: Simbologia de um diagrama de estrutura
O nome do módulo é uma declaração da sua função, i.e., o que ele faz cada vez que é
chamado.
Um módulo pré-definido é mostrado graficamente através da adição de linhas internas e
paralelas às linhas verticais rectângulo. Este módulo não poderá ser escrito porque ele já
existe em sistemas ou bibliotecas de aplicações. Pode apresentar macros e rotinas próprias
do sistema operacional, como por exemplo, na figura 3.
Fig.3: Módulo pré-definido
3. Conexões entre Módulos
Um sistema é um conjunto de módulos organizados dentro de uma hierarquia, cooperando
e se comunicando para realizar o trabalho. O símbolo que une os módulos é uma seta
mostrando o “alvo”, ou o mesmo que uma chamada de um módulo.
Movimento de Dados
Designação de
Função
Ler AA Gravar A Validar nº
telefone
Get Hora
do dia
A
B
Indica que A chama B
Designação de
Função
Calcular Juros
Mensais
Módulo
Módulo
Nome do Módulo
4
A – chama (invoca, executa) B
B – executa a sua função
B – retorna (volta) a A imediatamente após o ponto de A chamou B
Por outras palavras a seta da invocação mostra uma chamada de uma sub-rotina, com a
direcção da seta mostrando qual é o módulo que chamou outro.
Esta representação (diagrama) não nos diz nada sobre a codificação de A ou de B, mas,
aquele chamar B pode estar dentro de uma instrução IF ou dentro de instruções muito
complexas.
Tudo o que nos diz é que A é capaz de chamar B e que B está subordinado a A. Esta
técnica do desenho estruturado dá-nos a estrutura do sistema sem nos envolver em
detalhes.
Fig.4: Exemplo de uma conexão entre módulos
4. Comunicação entre Módulos
Quando um módulo chama o outro geralmente tem que dizer alguma coisa e esperar a
resposta do outro. É como telefonar para alguém; geralmente telefonamos para dizer
alguma coisa e esperamos obter uma resposta/reacção.
Número de cartão Nome do doente
Número está correcto
Vejamos: O módulo Obter detalhes do doente chama o módulo Encontrar nome do
doente e se comunicam da seguinte maneira:
Monitor Geral
Monitor Transformação Monitor SaidaMonitor Entrada
DeputorLeitor ExibidorFormatador
Obter detalhes
do doente
Encontrar nome
do doente
5
1. Obter detalhes do doente envia dados (nº do cartão) para Encontrar nome do
doente.
2. Este após executar a sua função, devolve os dados (nome do doente) para Obter
detalhes do doente.
3. Encontrar nome do doente também retorna uma chave (flag) (nº do doente está
correcto) para Obter detalhes do doente. Esta flag é utilizado para dizer a quem
chama, que tudo correu bem, porque às vezes Obter detalhes do doente pode
inadvertidamente enviar um nº de cartão que não existe, ou pertence à outra
unidade sanitária.
Existem duas diferenças entre ligação de dados e controle ou flag
1. Os dados são processados e o controle (flag) é mais testado do que processado.
2. Os dados relacionam-se com o problema e são as razões do processamento de
dados (exemplo: idade do doente, idade da gravidez, nº de partos, etc). Mas o
controle tende a ser um passo externo ao mundo do problema, pois ele comunica
informações (situações) sobre parte dos dados (exemplo: nº do doente é válido)
Fim do registo de pagamento
5. Definição de Dados Campos no Dicionário de Dados
Dado composto é aquele que é formado por itens de dados menores.
Existem 3 maneiras fundamentais pelas quais os dados compostos podem ser construídos:
Sequenciando os itens de dados;
Repetindo um único item de dados várias vezes;
Seleccionando entre vários itens de dados.
No dicionário de dados isso é representado da seguinte maneira:
Sequência: nº de telefone = 258-1-491557 = código do país + código da área + nº
Fig.5: Exemplo de uma representação gráfica sequencial
Repetição: Lista de Estudantes = {nome de estudante}
Emitir Cheques para
pessoal UEM
Obter registo do
empregado a pagar
Número de Telefone
Área NúmeroPaís
6
Fig.6: Exemplo de uma representação gráfica repetitiva
Selecção: Pedido de Reingresso = Aceite ou não aceite
Fig.6: Exemplo de uma representação gráfica selectiva
6 . ACOPLAMENTO
Usamos o diagrama de estrutura para avaliar a qualidade do projecto de sistemas. O
primeiro método de medir a qualidade de um projecto é chamado acoplamento, ou seja, o
o grau de interdependência entre dois módulos. Nosso objectivo é minimizar o
acoplamento, isto é, tornar os módulos tão independentes quanto possível. Um
acoplamento baixo, entre módulos, indica um sistema bem particionado e pode ser obtido
de três maneiras:
• eliminando relações desnecessárias;
• reduzindo o número de relações necessárias;
• enfraquencendo a dependências das relações necessárias.
Um dos pontos cruciais da ligação entre módulos é que nenhum módulo tem que preocupar
com detalhes da construção particular interna de qualquer outro. Os módulos são vistos
pela sua função e aparência externa, isto é, caixas pretas.
Para resumir, queremos um acoplamento fraco porque:
• quanto menos conexões existirem entre módlulos, menor a chance do efeito em
cadeia (um erro em um módulo aparece como sintoma num outro).
• Queremos ser capazes de trocar um módulo com um mínimo de risco de ter de
trocar outro módulo e queremos que cada mudança do usuário afecte o mínimo de
módulos possível.
Lista de Estudantes
Nº + nome do Estudante
Pedido de
Reingresso
Não AceiteAceite
7
Existem cinco tipos diferentes de acoplamento que podem ocorrer entre dois módulos. Em
ordem crescente de acoplamento eles são:
1. Acoplamento de dados boa ou solta
2. Acoplamento de imagens
3. Acoplamento de controle
4. Acoplamento comum
5. Acoplamento de conteúdo ruím ou rígida
Nota: Dois módulos podem estrar ligados por mais de um tipo de acoplamento, ou pelo
mesmo tipo em maior intensidade.
6.1 - ACOPLAMENTO DE DADOS
Dois módulos são acoplados por dados se eles se comunicam por parâmetros de campos
simples. É o melhor tipo de acoplamento, já que o módulo recebe apenas os dados que
necessita para a sua actividade.
Acoplamento de dados é a comunicação de dados necessária entre módulos. Uma vez que
módulos têm de se comunicar, a ligação de dados é inevitável e é inofensiva desde que
mantida à taxas mínimas.
6.2 - ACOPLAMENTO DE IMAGEM
Dois módulos estão ligados por imagem se eles se referem à mesma estrutura de dados. Por
estrurura de dados, deve-se entender um grupo composto de dados, tal como um registo
constituído por vários campos. A figura seguinte mostra 3 módulos ligados por imagem.
QUANT EMPRESTADA
TAXA DE JUROS
PRAZO
TAXA DE REEMBOLSO
CALCULAR
A CONTA
TOTAL DO
CLIENTE
CALCULAR
REEMBOLSO
DA HIPOTECA
8
6.3 - ACOPLAMENTO DE CONTROLE
Dois módulos são acoplados por controle se um passa para o outro um grupo de dados
destinados a controlar a lógica interna do outro. A figura abaixo mostra dois módulos
ligados por controle.
PRODUZIR
RELATORIO
DO CLIENTE
ENCONTRAR
O NOME DO
CLIENTE
Num. conta
do cliente
Nome do
cliente
Não existe
este cliente
Gravar registo
de erro
Num. de conta
é inválido
DADOS, FLAGS DESCRITIVOS E FLAGS DE CONTROLE
Tipo de
informação
Representado por Tipo de nome Exemplo
Preço dos ovos
Dados Substantivo
Idade do estudante
Ovo está podre
Flag descritivo Adjectivo
BI é alfanumérico
Ler próximo registo
Flag de controle verbo
Rejeitar este cliente
6.4 - ACOPLAMENTO COMUM
Dois módulos possuem acoplamento comum, se eles se referem à mesma área de dados.
9
O acoplamento comum não é aconselhável por várias razões. Primeiro, um erro (ou má
programação) em qualquer módulo que use uma área global pode aparecer em qualquer
outro módulo que use aquela área.
Segundo, módulos que referenciam dados globais geralmente o fazem através de nomes
explícitos.
Terceiro, áreas globais ou comuns podem algumas vezes sofrer abusos drásticos, como por
exemplo, quando módulos diferentes usam a mesma área para armazenar diferentes grupos
de informações.
Quarto, programas com muitos dados globais são extremamente difíceis de entendê-los
pelos técnicos encarregues da manutenção, porque é difícil de se saber quais dados são
usados por um certo módulo.
Quinto, é difícil descobrir que dados devem ser mudados se um módulo tem de ser
alterado, também é difícil descobrir quais módulos devem ser alterados se um dado é
modificado.
6.5 - ACOPLAMENTO DE CONTEÚDO
Dois módulos apresentam acoplamento de conteúdo (ou patológico) se um faz referência
ao interior do outro: por exemplo, se um módulo desvia a sequência de instruções para
dentro de um outro ou se um módulo altera um comando do outro. Tal acoplamento torna o
conceito de módulos-caixa preta sem sentido.
ENCONTRAR
NOME DO
MATERIAL
REMOVER
STOCK
TABELA DE
MATERIAIS
FLAG DE
ERRO 3
NOME DO
MATERIAL
NAO EXISTE
TAL Nº DE
MATERIAL
Nº DE
UNIDADES
ANTERIOR
NOVO Nº DE
UNIDADES
STOCK
INSUFICIENTE
Nº DO
MATERIAL
NOME DO
MATERIAL
Nº DO
MATERIAL
Nº DE UNIDADES
A SEREM
REMOVIDAS
10
7 - DETERMINAÇÃO DO TIPO DE ACOPLAMENTO
Já se sabe que dois módulos podem estar acoplados de mais de uma maneira. Neste caso, o
acoplamento entre eles é definido pelo pior tipo que apresentam.
Nível
Coesão
Acopla-
mento
Clareza
Impleme-
ntação
Utilização
em outros
programas
Modificabili-
Dade
Compreensi-
bilidade
Funcional
Sequencial
Comunicacional
Procedural
Temporal
Lógica
Coincidental
Bom
Bom
Médio
Variável
Fraca
Má
Má
Boa
Boa
Boa
Média
Média
Má
Fraca
Boa
Média
Fraca
Fraca
Má
Má
Má
Boa
Boa
Média
Variável
Média
Fraca
Fraca
Boa
Boa
Média
Variável
Média
Fraca
Má
8 - COESÃO
Coesão – representa o grau de relacionamento das actividades de um módulo (ou uma
medida de força do relacionamento funcional dos elementos dentro de um módulo. Um
elemento significa uma instrução, um grupo de instruções, uma definição de dados, ou uma
chamada para outro módulo).
Coesão é, portanto, a segunda maneira de avaliar se a segmentação de um sistema em
módulos foi boa. Na verdade, ter certeza de que todos os módulos têm boa coesão é a
melhor forma de minimizar o acoplamento entre os módulos. Isto também assegura que as
funções do sistema reflectem as funções do problema original.
8.1 - ESCALA DE COESÃO
BOA – ALTA COESÃO
Funcional caixa preta
Sequencial caixa quase
Comunicacional preta
Procedural caixa
Temporal cinzenta
Lógica caixa branca
Coincidental ou transparente
MÁ – BAIXA COESÃO
8.2 - COESÃO FUNCIONAL
11
Um módulo com coesão funcional contém elementos que contribuem para a execução de
uma e apenas uma tarefa relacionada ao problema. Exemplos de módulos funcionalmente
coesos são:
Calcular o total
Formatar a factura
Imprimir a factura
Note que cada um destes módulos tem um propósito forte e único.
8.3 - COESÃO SEQUENCIAL
Um módulo sequencialmente coeso é aquele cujos elementos são envolvidos em
actividades tais que os dados de saída de uma actividade servem como dados de entrada
para a próxima.
8.4 - COESÃO COMUNICACIONAL
Um módulo com coesão comunicacional é aquele cujos elementos contribuem para
actividades diferentes, mas que usem a mesma entrada ou a mesma saída, sendo que sua
ordem de execução é irrelevante.
8.5 - COESÃO PROCEDURAL
Um módulo de coesão procedural é aquele cujos elementos estão envolvidas em
actividades diferentes e possivelmente não relacionadas, nas quais o controlo flui de uma
actividade para a outra. (como se deve lembrar, num módulo com coesão sequencial não é
o controlo, mas os dados que fluem de uma actividade para a próxima). As actividades
estão relacionadas apenas pela ordem de execução.
OBTER
TRANSACCAO
VALIDA
Transacção Transacção
válida
LER
TRANSACCAO
VALIDAR
TRANSACCAO
EDITAR A
TRANSACCAO
Coesão Sequencial
Coesão Funcional
12
8.6 - COESÃO TEMPORAL
Um módulo com coesão temporal é aquele cujos elementos estão envolvidos em
actividades que estão relacionadas no tempo e não têm qualquer outra relação (não têm
dados em comum e a ordem não é importante).
8.7 - COESÃO LÓGICA
Um módulo logicamente coeso é aquele cujos elementos contribuem para actividades da
mesma categoria geral, onde as actividades a serem executadas são seleccionadas fora do
módulo.
8.9 - COESÃO COINCIDENTAL
Um módulo coincidentemente coeso é aquele cujos elementos contribuem para actividades
sem relação significativa entre si.
Um módulo coincidentemente coeso é similar a um logicamente coeso: suas actividades
não estão relaciondas por fluxos de dados ou fluxos de controle. No entanto, as actividades
num módulo logicamente coeso são pelo menos da mesma categoria; num módulo
coincidentemente coeso, nem isto é verdade.
8.10 - UMA ÁRVORE DE DECISÃO PARA COESÃO DE MÓDULOS
O módulo pode
ser considerado
como executando
uma função
relacionada
ao problemas? O que
relaciona as
actividades
do módulo?
DADOS
FLUXO DE
CONTROLE
A sequencia é
importante?
A sequencia é
importante?
NENHUM
DELES As actividades
estão na mesma
categoria geral?
1. Funcional
2. Sequencial
3. Comunicacional
4. Procedural
5. Temporal
6. Lógica
7. Coincidental
S
N
S
N
S
N
S
N
13
Nota: Para encontrar o nível de coesão, se todas as actividades de um módulo estão
relacionadas em mais de um nível de coesão, é só assumir que o módulo tem a força do
nível mais forte de coesão.
9 - FACTORIZAÇÃO
Consiste na partição de um módulo em dois ou mais módulos do nível mais baixo.
Há várias razões que levam à necessidade de factorização, a salientar:
1. redução do tamanho ou da complexidade do módulo;
2. tornar o módulo mais compreensível e permitir modificações e implementação
fácies;
3. evitar a existência de uma mesma função em mais de um módulo;
4. permitir que os módulos tenham utilização generalizada (reusabilidade de
módulos).
Notas: Factoriza-se até que o módulo tenha coesão funcional. 30 linhas para descrever um
módulo é aceitável.
Quando se tem um módulo que exerce funções com muito poucas linhas usa-se o
símbolo ▲ para mostrar que suas linhas de codificação podem ser integradas no módulo
superior.
Sistemas fisicamente dirigidos à entrada- o módulo superior (presidente) lida
directamente com os módulos de leitura e edição de dados.
Sistemas fisicamente dirigidos à saída- o módulo superior lida com dados de
saída como seja a formatação física dos relatórios, ficheiros, ...
O desejável é ter-se sistemas balançados onde o módulo presidente lida com módulos
lógicos e não físicos.
Fan out- número de módulos imediatamente subordinados.
Fan in- número de módulos imediatamente superiores.
9.1 - TIPOS DE MÓDULOS
A
B C D
Aferente Eferente Transformador Coordenador
A B
X X
14
9.2 - REPORTAGEM DE ERROS
Forma de reportagem de erros- aconsedlha-se a definir módulo responsável pela
reportagem de erros. Isto permite a uniformização das mensagens de reportagem de erros,
para o mesmo erro, independentemente do local do programa onde ocorre.
9.3 - PROBLEMAS QUE PODEM SER ENFRENTADOS NA FASE DE DESENHO
DO SISTEMA
1. Lidar com número elevado de alternativas. A solução é o uso de critérios de decisão e
de qualidade: economia, manutenção, robustez, integridade, segurança, software,
hardware.
2. Gestão das opiniões do pessoal envolvido no processo de desenvolvimento.

Weitere ähnliche Inhalte

Was ist angesagt?

Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLEliseu Castelo
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Lógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoLógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoJanynne Gomes
 
Aula 01 - UML e Padrões de Projeto
Aula 01 - UML e Padrões de ProjetoAula 01 - UML e Padrões de Projeto
Aula 01 - UML e Padrões de ProjetoVinícius de Paula
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de SistemasGuilherme
 
Diagramas de implantação
Diagramas de implantaçãoDiagramas de implantação
Diagramas de implantaçãoFitBlar Mit
 
Aula(l) 11 12-software engenhering
Aula(l) 11 12-software engenheringAula(l) 11 12-software engenhering
Aula(l) 11 12-software engenheringcifjovo02
 
Classificação de dados
Classificação de dadosClassificação de dados
Classificação de dadosFernando Vargas
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Gustavo Zimmermann
 

Was ist angesagt? (17)

Uml
UmlUml
Uml
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Lógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoLógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de Seleção
 
Aula 01 - UML e Padrões de Projeto
Aula 01 - UML e Padrões de ProjetoAula 01 - UML e Padrões de Projeto
Aula 01 - UML e Padrões de Projeto
 
Excel
ExcelExcel
Excel
 
4º semestre
4º semestre4º semestre
4º semestre
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
 
Diagramas de implantação
Diagramas de implantaçãoDiagramas de implantação
Diagramas de implantação
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Aula(l) 11 12-software engenhering
Aula(l) 11 12-software engenheringAula(l) 11 12-software engenhering
Aula(l) 11 12-software engenhering
 
Classificação de dados
Classificação de dadosClassificação de dados
Classificação de dados
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
 
Análise e Modelagem com UML
Análise e Modelagem com UMLAnálise e Modelagem com UML
Análise e Modelagem com UML
 
Apostila Software Arena
Apostila Software ArenaApostila Software Arena
Apostila Software Arena
 
UML
UMLUML
UML
 

Andere mochten auch

Tema 9 userinterface_ergonometria
Tema 9 userinterface_ergonometriaTema 9 userinterface_ergonometria
Tema 9 userinterface_ergonometriaPedro A. Uamusse
 
(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...
(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...
(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...Kevin Lazkanu
 
Konica minolta biz hub 163, 211, 220 field service manual
Konica minolta biz hub 163, 211, 220 field service manualKonica minolta biz hub 163, 211, 220 field service manual
Konica minolta biz hub 163, 211, 220 field service manualPedro A. Uamusse
 
Professional Development Manual
Professional Development Manual  Professional Development Manual
Professional Development Manual Khalid Ibrahim
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakShelly Sanchez Terrell
 

Andere mochten auch (6)

Tema 9 userinterface_ergonometria
Tema 9 userinterface_ergonometriaTema 9 userinterface_ergonometria
Tema 9 userinterface_ergonometria
 
(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...
(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...
(Service Manual Di470) Manual de Mantenimiento para Maquinas Fotocopiadoras M...
 
Konica minolta biz hub 163, 211, 220 field service manual
Konica minolta biz hub 163, 211, 220 field service manualKonica minolta biz hub 163, 211, 220 field service manual
Konica minolta biz hub 163, 211, 220 field service manual
 
Quimica apostilafo
Quimica apostilafoQuimica apostilafo
Quimica apostilafo
 
Professional Development Manual
Professional Development Manual  Professional Development Manual
Professional Development Manual
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & Textspeak
 

Ähnlich wie Diagrama de estrutura e estruturograma

Ähnlich wie Diagrama de estrutura e estruturograma (20)

Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Modelagem 21102006_2
Modelagem 21102006_2Modelagem 21102006_2
Modelagem 21102006_2
 
Apostila dfd
Apostila dfdApostila dfd
Apostila dfd
 
Diagrama de fluxo de dados DFD
Diagrama de fluxo de dados DFDDiagrama de fluxo de dados DFD
Diagrama de fluxo de dados DFD
 
Pro model
Pro modelPro model
Pro model
 
Trabalho de análise e projeto 2
Trabalho de análise e projeto 2Trabalho de análise e projeto 2
Trabalho de análise e projeto 2
 
Logica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptxLogica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptx
 
Dfd
DfdDfd
Dfd
 
Aula-04-UML.pptx
Aula-04-UML.pptxAula-04-UML.pptx
Aula-04-UML.pptx
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 
Engenharia de Software I - Aula 10
Engenharia de Software I - Aula 10Engenharia de Software I - Aula 10
Engenharia de Software I - Aula 10
 
MDL - Elaborando diagramas em Micro Development Language
MDL - Elaborando diagramas em Micro Development LanguageMDL - Elaborando diagramas em Micro Development Language
MDL - Elaborando diagramas em Micro Development Language
 
Modelo essencial
Modelo essencialModelo essencial
Modelo essencial
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Aula modelagem de dados
Aula modelagem de dadosAula modelagem de dados
Aula modelagem de dados
 
Análise essencial
Análise essencialAnálise essencial
Análise essencial
 
Aula1
Aula1Aula1
Aula1
 
CursoUML - Unified Modeling Language
CursoUML - Unified Modeling LanguageCursoUML - Unified Modeling Language
CursoUML - Unified Modeling Language
 

Diagrama de estrutura e estruturograma

  • 1. 1 TEMA 8 DIAGRAMA DE ESTRUTURA OU ESTRUTUROGRAMA 1. Definição de Diagrama de Estrutura e Módulo Uma das características do desenho estruturado é produzir sistemas de fácil manutenção, através da criação de módulos pequenos e independentes, deixando os detalhes físicos (input, output, formatos) para os módulos mais baixos. Os sistemas modulares estão muito ligados à programação estruturada, uma das técnicas primárias que deu atenção à complexidade dos sistemas, criando um conjunto muito pequeno de instruções de programação para o desenvolvimento da codificação e reconhecendo que para desenvolver os detalhes de um problema, é muito importante ter firme compreensão de todo o problema primário. Estamos a falar da técnica que ficou conhecida como top-down approach (de cima para baixo) ou step wise refinement (refinamento passo a passo), que consiste em elaborar uma visão equilibrada partindo de uma visão geral de detalhes do problema. Fig.1: Exemplo de uma estrutura top-down Embora os sistemas desenvolvidos através da programação estruturada tivessem menos falhas do que os sistemas tradicionais, tornou-se ainda quase tão difícil como antes implementar as mudanças requeridas pelos usuários ou as adaptações do sistema. A razão principal deste fracasso é que a programação estruturada deixou de levar em consideração as amplas estruturas do sistema, que é onde uma grande parte da manutenção acontece, e também porque a abordagem top-down em que se baseia não tem regras que explicam onde o particionamento do problema em subprogramas deve ocorrer. Na análise e desenho estruturado de sistemas todos os conceitos da abordagem top-down permanecem válidos e outros novos foram adicionados, permitindo que uma visão mais ampla dos sistemas de grande porte seja obtida. A principal ferramenta utilizada no desenho estruturado para descrever a estrutura de um sistema é o diagrama de estrutura ou estruturograma. Estruturograma: é um grafo arborescente que representa a hierarquização do controlo num sistema. Um grafo é um objeto básico de estudo da teoria dos grafos. Tipicamente, um grafo é representado como um conjunto de pontos (vértices) ligados por retas (as arestas). Dependendo da aplicação, as arestas podem ser direcionadas, e são representadas por "setas" (http://pt.wikipedia.org/wiki/Grafo). Geral Editar ImprimirEntrada
  • 2. 2 O estruturograma é constituído de módulos, evocações e parâmetros. Um módulo é definido como uma colecção de instruções de programa com quatro atributos básicos: entrada e saída, função, lógica (ou mecanismos) e dados internos. Neste caso os atributos básicos significam: 1. Entrada e Saída: Entrada – o que é recebido pelo chamado (enviado pelo chamador). Saída – o que retorna do chamado (devolvido ao chamador). As Entradas e Saídas representam as informações que um módulo necessita e fornece. 2. Função: O que se faz com a entrada para se produzir à saída A função de um módulo é o que ele faz para a entrada produzir a saída Entrada, saída e função fornecem uma visão externa de um módulo. (caixa negra). 3. Lógica: A codificação de procedimentos ou a lógica pela qual ele executa as suas funções. A lógica representa as codificações de procedimentos ou algoritmos que executam a função. 4. Dados internos: É o seu espaço privado de trabalho, incluindo os dados sobre os quais só o próprio módulo faz referências. Dados internos representam o espaço, e é, a área interna de trabalho que um módulo faz referência. Lógica e dados internos representam uma visão interna do módulo. Um módulo tem mais atributos, como: Ter nome pelo qual pode ser referenciado O que um módulo faz interessa mais do que como ele faz (visão externa) Pode usar ou ser usado por outros módulos; (não implica uma descrição ou codificação única, embora indique chamamento de tipo determinado) Invocação – chamamento Em suma: Módulo: é um conjunto de instruções (lexicalmente contíguas), unificado por elementos definidores da respectiva fronteira e dotado de um identificador próprio, por exemplo, Procedure em Pascal. 2. Representação Gráfica de um Módulo Em um diagrama de estrutura, o módulo é representado por um rectângulo dentro do qual está contido o seu nome.
  • 3. 3 Fig.1: Exemplo de um diagrama de estrutura Módulo Invocação Item de dados de saída Item de dados Indicador (flag) de entrada Fig.2: Simbologia de um diagrama de estrutura O nome do módulo é uma declaração da sua função, i.e., o que ele faz cada vez que é chamado. Um módulo pré-definido é mostrado graficamente através da adição de linhas internas e paralelas às linhas verticais rectângulo. Este módulo não poderá ser escrito porque ele já existe em sistemas ou bibliotecas de aplicações. Pode apresentar macros e rotinas próprias do sistema operacional, como por exemplo, na figura 3. Fig.3: Módulo pré-definido 3. Conexões entre Módulos Um sistema é um conjunto de módulos organizados dentro de uma hierarquia, cooperando e se comunicando para realizar o trabalho. O símbolo que une os módulos é uma seta mostrando o “alvo”, ou o mesmo que uma chamada de um módulo. Movimento de Dados Designação de Função Ler AA Gravar A Validar nº telefone Get Hora do dia A B Indica que A chama B Designação de Função Calcular Juros Mensais Módulo Módulo Nome do Módulo
  • 4. 4 A – chama (invoca, executa) B B – executa a sua função B – retorna (volta) a A imediatamente após o ponto de A chamou B Por outras palavras a seta da invocação mostra uma chamada de uma sub-rotina, com a direcção da seta mostrando qual é o módulo que chamou outro. Esta representação (diagrama) não nos diz nada sobre a codificação de A ou de B, mas, aquele chamar B pode estar dentro de uma instrução IF ou dentro de instruções muito complexas. Tudo o que nos diz é que A é capaz de chamar B e que B está subordinado a A. Esta técnica do desenho estruturado dá-nos a estrutura do sistema sem nos envolver em detalhes. Fig.4: Exemplo de uma conexão entre módulos 4. Comunicação entre Módulos Quando um módulo chama o outro geralmente tem que dizer alguma coisa e esperar a resposta do outro. É como telefonar para alguém; geralmente telefonamos para dizer alguma coisa e esperamos obter uma resposta/reacção. Número de cartão Nome do doente Número está correcto Vejamos: O módulo Obter detalhes do doente chama o módulo Encontrar nome do doente e se comunicam da seguinte maneira: Monitor Geral Monitor Transformação Monitor SaidaMonitor Entrada DeputorLeitor ExibidorFormatador Obter detalhes do doente Encontrar nome do doente
  • 5. 5 1. Obter detalhes do doente envia dados (nº do cartão) para Encontrar nome do doente. 2. Este após executar a sua função, devolve os dados (nome do doente) para Obter detalhes do doente. 3. Encontrar nome do doente também retorna uma chave (flag) (nº do doente está correcto) para Obter detalhes do doente. Esta flag é utilizado para dizer a quem chama, que tudo correu bem, porque às vezes Obter detalhes do doente pode inadvertidamente enviar um nº de cartão que não existe, ou pertence à outra unidade sanitária. Existem duas diferenças entre ligação de dados e controle ou flag 1. Os dados são processados e o controle (flag) é mais testado do que processado. 2. Os dados relacionam-se com o problema e são as razões do processamento de dados (exemplo: idade do doente, idade da gravidez, nº de partos, etc). Mas o controle tende a ser um passo externo ao mundo do problema, pois ele comunica informações (situações) sobre parte dos dados (exemplo: nº do doente é válido) Fim do registo de pagamento 5. Definição de Dados Campos no Dicionário de Dados Dado composto é aquele que é formado por itens de dados menores. Existem 3 maneiras fundamentais pelas quais os dados compostos podem ser construídos: Sequenciando os itens de dados; Repetindo um único item de dados várias vezes; Seleccionando entre vários itens de dados. No dicionário de dados isso é representado da seguinte maneira: Sequência: nº de telefone = 258-1-491557 = código do país + código da área + nº Fig.5: Exemplo de uma representação gráfica sequencial Repetição: Lista de Estudantes = {nome de estudante} Emitir Cheques para pessoal UEM Obter registo do empregado a pagar Número de Telefone Área NúmeroPaís
  • 6. 6 Fig.6: Exemplo de uma representação gráfica repetitiva Selecção: Pedido de Reingresso = Aceite ou não aceite Fig.6: Exemplo de uma representação gráfica selectiva 6 . ACOPLAMENTO Usamos o diagrama de estrutura para avaliar a qualidade do projecto de sistemas. O primeiro método de medir a qualidade de um projecto é chamado acoplamento, ou seja, o o grau de interdependência entre dois módulos. Nosso objectivo é minimizar o acoplamento, isto é, tornar os módulos tão independentes quanto possível. Um acoplamento baixo, entre módulos, indica um sistema bem particionado e pode ser obtido de três maneiras: • eliminando relações desnecessárias; • reduzindo o número de relações necessárias; • enfraquencendo a dependências das relações necessárias. Um dos pontos cruciais da ligação entre módulos é que nenhum módulo tem que preocupar com detalhes da construção particular interna de qualquer outro. Os módulos são vistos pela sua função e aparência externa, isto é, caixas pretas. Para resumir, queremos um acoplamento fraco porque: • quanto menos conexões existirem entre módlulos, menor a chance do efeito em cadeia (um erro em um módulo aparece como sintoma num outro). • Queremos ser capazes de trocar um módulo com um mínimo de risco de ter de trocar outro módulo e queremos que cada mudança do usuário afecte o mínimo de módulos possível. Lista de Estudantes Nº + nome do Estudante Pedido de Reingresso Não AceiteAceite
  • 7. 7 Existem cinco tipos diferentes de acoplamento que podem ocorrer entre dois módulos. Em ordem crescente de acoplamento eles são: 1. Acoplamento de dados boa ou solta 2. Acoplamento de imagens 3. Acoplamento de controle 4. Acoplamento comum 5. Acoplamento de conteúdo ruím ou rígida Nota: Dois módulos podem estrar ligados por mais de um tipo de acoplamento, ou pelo mesmo tipo em maior intensidade. 6.1 - ACOPLAMENTO DE DADOS Dois módulos são acoplados por dados se eles se comunicam por parâmetros de campos simples. É o melhor tipo de acoplamento, já que o módulo recebe apenas os dados que necessita para a sua actividade. Acoplamento de dados é a comunicação de dados necessária entre módulos. Uma vez que módulos têm de se comunicar, a ligação de dados é inevitável e é inofensiva desde que mantida à taxas mínimas. 6.2 - ACOPLAMENTO DE IMAGEM Dois módulos estão ligados por imagem se eles se referem à mesma estrutura de dados. Por estrurura de dados, deve-se entender um grupo composto de dados, tal como um registo constituído por vários campos. A figura seguinte mostra 3 módulos ligados por imagem. QUANT EMPRESTADA TAXA DE JUROS PRAZO TAXA DE REEMBOLSO CALCULAR A CONTA TOTAL DO CLIENTE CALCULAR REEMBOLSO DA HIPOTECA
  • 8. 8 6.3 - ACOPLAMENTO DE CONTROLE Dois módulos são acoplados por controle se um passa para o outro um grupo de dados destinados a controlar a lógica interna do outro. A figura abaixo mostra dois módulos ligados por controle. PRODUZIR RELATORIO DO CLIENTE ENCONTRAR O NOME DO CLIENTE Num. conta do cliente Nome do cliente Não existe este cliente Gravar registo de erro Num. de conta é inválido DADOS, FLAGS DESCRITIVOS E FLAGS DE CONTROLE Tipo de informação Representado por Tipo de nome Exemplo Preço dos ovos Dados Substantivo Idade do estudante Ovo está podre Flag descritivo Adjectivo BI é alfanumérico Ler próximo registo Flag de controle verbo Rejeitar este cliente 6.4 - ACOPLAMENTO COMUM Dois módulos possuem acoplamento comum, se eles se referem à mesma área de dados.
  • 9. 9 O acoplamento comum não é aconselhável por várias razões. Primeiro, um erro (ou má programação) em qualquer módulo que use uma área global pode aparecer em qualquer outro módulo que use aquela área. Segundo, módulos que referenciam dados globais geralmente o fazem através de nomes explícitos. Terceiro, áreas globais ou comuns podem algumas vezes sofrer abusos drásticos, como por exemplo, quando módulos diferentes usam a mesma área para armazenar diferentes grupos de informações. Quarto, programas com muitos dados globais são extremamente difíceis de entendê-los pelos técnicos encarregues da manutenção, porque é difícil de se saber quais dados são usados por um certo módulo. Quinto, é difícil descobrir que dados devem ser mudados se um módulo tem de ser alterado, também é difícil descobrir quais módulos devem ser alterados se um dado é modificado. 6.5 - ACOPLAMENTO DE CONTEÚDO Dois módulos apresentam acoplamento de conteúdo (ou patológico) se um faz referência ao interior do outro: por exemplo, se um módulo desvia a sequência de instruções para dentro de um outro ou se um módulo altera um comando do outro. Tal acoplamento torna o conceito de módulos-caixa preta sem sentido. ENCONTRAR NOME DO MATERIAL REMOVER STOCK TABELA DE MATERIAIS FLAG DE ERRO 3 NOME DO MATERIAL NAO EXISTE TAL Nº DE MATERIAL Nº DE UNIDADES ANTERIOR NOVO Nº DE UNIDADES STOCK INSUFICIENTE Nº DO MATERIAL NOME DO MATERIAL Nº DO MATERIAL Nº DE UNIDADES A SEREM REMOVIDAS
  • 10. 10 7 - DETERMINAÇÃO DO TIPO DE ACOPLAMENTO Já se sabe que dois módulos podem estar acoplados de mais de uma maneira. Neste caso, o acoplamento entre eles é definido pelo pior tipo que apresentam. Nível Coesão Acopla- mento Clareza Impleme- ntação Utilização em outros programas Modificabili- Dade Compreensi- bilidade Funcional Sequencial Comunicacional Procedural Temporal Lógica Coincidental Bom Bom Médio Variável Fraca Má Má Boa Boa Boa Média Média Má Fraca Boa Média Fraca Fraca Má Má Má Boa Boa Média Variável Média Fraca Fraca Boa Boa Média Variável Média Fraca Má 8 - COESÃO Coesão – representa o grau de relacionamento das actividades de um módulo (ou uma medida de força do relacionamento funcional dos elementos dentro de um módulo. Um elemento significa uma instrução, um grupo de instruções, uma definição de dados, ou uma chamada para outro módulo). Coesão é, portanto, a segunda maneira de avaliar se a segmentação de um sistema em módulos foi boa. Na verdade, ter certeza de que todos os módulos têm boa coesão é a melhor forma de minimizar o acoplamento entre os módulos. Isto também assegura que as funções do sistema reflectem as funções do problema original. 8.1 - ESCALA DE COESÃO BOA – ALTA COESÃO Funcional caixa preta Sequencial caixa quase Comunicacional preta Procedural caixa Temporal cinzenta Lógica caixa branca Coincidental ou transparente MÁ – BAIXA COESÃO 8.2 - COESÃO FUNCIONAL
  • 11. 11 Um módulo com coesão funcional contém elementos que contribuem para a execução de uma e apenas uma tarefa relacionada ao problema. Exemplos de módulos funcionalmente coesos são: Calcular o total Formatar a factura Imprimir a factura Note que cada um destes módulos tem um propósito forte e único. 8.3 - COESÃO SEQUENCIAL Um módulo sequencialmente coeso é aquele cujos elementos são envolvidos em actividades tais que os dados de saída de uma actividade servem como dados de entrada para a próxima. 8.4 - COESÃO COMUNICACIONAL Um módulo com coesão comunicacional é aquele cujos elementos contribuem para actividades diferentes, mas que usem a mesma entrada ou a mesma saída, sendo que sua ordem de execução é irrelevante. 8.5 - COESÃO PROCEDURAL Um módulo de coesão procedural é aquele cujos elementos estão envolvidas em actividades diferentes e possivelmente não relacionadas, nas quais o controlo flui de uma actividade para a outra. (como se deve lembrar, num módulo com coesão sequencial não é o controlo, mas os dados que fluem de uma actividade para a próxima). As actividades estão relacionadas apenas pela ordem de execução. OBTER TRANSACCAO VALIDA Transacção Transacção válida LER TRANSACCAO VALIDAR TRANSACCAO EDITAR A TRANSACCAO Coesão Sequencial Coesão Funcional
  • 12. 12 8.6 - COESÃO TEMPORAL Um módulo com coesão temporal é aquele cujos elementos estão envolvidos em actividades que estão relacionadas no tempo e não têm qualquer outra relação (não têm dados em comum e a ordem não é importante). 8.7 - COESÃO LÓGICA Um módulo logicamente coeso é aquele cujos elementos contribuem para actividades da mesma categoria geral, onde as actividades a serem executadas são seleccionadas fora do módulo. 8.9 - COESÃO COINCIDENTAL Um módulo coincidentemente coeso é aquele cujos elementos contribuem para actividades sem relação significativa entre si. Um módulo coincidentemente coeso é similar a um logicamente coeso: suas actividades não estão relaciondas por fluxos de dados ou fluxos de controle. No entanto, as actividades num módulo logicamente coeso são pelo menos da mesma categoria; num módulo coincidentemente coeso, nem isto é verdade. 8.10 - UMA ÁRVORE DE DECISÃO PARA COESÃO DE MÓDULOS O módulo pode ser considerado como executando uma função relacionada ao problemas? O que relaciona as actividades do módulo? DADOS FLUXO DE CONTROLE A sequencia é importante? A sequencia é importante? NENHUM DELES As actividades estão na mesma categoria geral? 1. Funcional 2. Sequencial 3. Comunicacional 4. Procedural 5. Temporal 6. Lógica 7. Coincidental S N S N S N S N
  • 13. 13 Nota: Para encontrar o nível de coesão, se todas as actividades de um módulo estão relacionadas em mais de um nível de coesão, é só assumir que o módulo tem a força do nível mais forte de coesão. 9 - FACTORIZAÇÃO Consiste na partição de um módulo em dois ou mais módulos do nível mais baixo. Há várias razões que levam à necessidade de factorização, a salientar: 1. redução do tamanho ou da complexidade do módulo; 2. tornar o módulo mais compreensível e permitir modificações e implementação fácies; 3. evitar a existência de uma mesma função em mais de um módulo; 4. permitir que os módulos tenham utilização generalizada (reusabilidade de módulos). Notas: Factoriza-se até que o módulo tenha coesão funcional. 30 linhas para descrever um módulo é aceitável. Quando se tem um módulo que exerce funções com muito poucas linhas usa-se o símbolo ▲ para mostrar que suas linhas de codificação podem ser integradas no módulo superior. Sistemas fisicamente dirigidos à entrada- o módulo superior (presidente) lida directamente com os módulos de leitura e edição de dados. Sistemas fisicamente dirigidos à saída- o módulo superior lida com dados de saída como seja a formatação física dos relatórios, ficheiros, ... O desejável é ter-se sistemas balançados onde o módulo presidente lida com módulos lógicos e não físicos. Fan out- número de módulos imediatamente subordinados. Fan in- número de módulos imediatamente superiores. 9.1 - TIPOS DE MÓDULOS A B C D Aferente Eferente Transformador Coordenador A B X X
  • 14. 14 9.2 - REPORTAGEM DE ERROS Forma de reportagem de erros- aconsedlha-se a definir módulo responsável pela reportagem de erros. Isto permite a uniformização das mensagens de reportagem de erros, para o mesmo erro, independentemente do local do programa onde ocorre. 9.3 - PROBLEMAS QUE PODEM SER ENFRENTADOS NA FASE DE DESENHO DO SISTEMA 1. Lidar com número elevado de alternativas. A solução é o uso de critérios de decisão e de qualidade: economia, manutenção, robustez, integridade, segurança, software, hardware. 2. Gestão das opiniões do pessoal envolvido no processo de desenvolvimento.