Desenho

Document Sample
Desenho Powered By Docstoc
					    João Araújo - FCT/UNL




                            Desenho

• Refinamento do modelo de dados
  – Normalização
  – Esquema de tabelas
• Especificação de processos
• Diagrama de estruturas
   João Araújo - FCT/UNL


                           Normalização
• Relação: uma colecção de atributos, um
  registo
• Tupla: uma instância de uma relação
• Domínio
• Dependência funcional:
  – Dados os atributos X e Y de uma entidade, diz-se que Y
    é funcionalmente dependente de X se e só se a cada
    valor de X está associado um só valor de Y.
      João Araújo - FCT/UNL


                       Forma normal
• É uma restrição na definição de bases de dados para não
  permitir certas anomalias, e.g. nas operações de actualização.
• Codd definiu:
    – Primeira, forma normal
    – Segunda forma normal
    – Terceira forma normal
• Uma relação está na FNF se não houver grupos repetitivos para
  um dado valor da chave.
• Uma relação está na SNF se estiver na FNF e se todos os
  atributos não-chave forem completamente funcionalmente
  dependentes da chave.
• Uma relação está na TNF se estiver na SNF e se não houver
  dependências funcionais entre atributos não-chave.
    João Araújo - FCT/UNL

       Primeira forma normal (1FN)

• Primeira forma normal: eliminar dos grupos repetitivos.
   – Criar uma nova relação por cada conjunto de atributos cujos
     valores se repetem para um dado valor da chave. Os atributos da
     nova relação devem ser funcionalmente dependentes da nova
     chave.
      • i. Escolher uma chave na relação original.
      • ii. Identificar grupos repetitivos.
      • iii. Por cada grupo repetitivo criar uma nova relação.
      • iv. Escolher uma chave na nova relação e concatená-la com a
         chave da relação original.
      • v. Definir a associação entre a relação original e a nova
         relação.
      • vi. Verificar se existem grupos repetitivos na nova relação.
         Caso existam, repetir o processo.
     João Araújo - FCT/UNL


                       Exemplos (1FN)
• Empregado = @número_empregado + nome +
  morada + salário + {nome_filho + sexo_filho +
  idade_filho}

   – Empregado = @número_empregado + nome +
     morada + salário
   – Filho = @número_empregado + @nome_filho
     + sexo_filho + idade_filho
   João Araújo - FCT/UNL
      Segunda Forma Normal (2FN)
• Segunda forma normal: remover dependências
  funcionais de chave parcial.
  – i. Nas relações com chave composta, verificar se os atributos
    descritores são completamente funcionalmente dependentes da
    chave.
  – ii. Criar uma nova relação com o conjunto de atributos que
    dependem de parte da chave. Esta parte da chave é a chave da nova
    relação. Manter a relação original com os restantes atributos e a
    chave composta.
  – iii. Definir as associações entre as relações criadas e a relação
    original.
  – iv. Verificar a dependência funcional dos atributos nas novas
    relações com chaves compostas.
                                      @id2
             @id1                      Y
         {   @id2
              W                        @id1
              Y                        @id2
              Z                         W
                                        Z
  João Araújo - FCT/UNL




                    Exemplo (2FN)

– Pedido = @ Id-pedido + título + autor + quantidade +
  preço
– Id-pedido = nome-cliente + data-de-pedido + ISBN
– Para estar na 2FN temos de livrar-nos da dependência
  funcional parcial: a relação tem que ser dividida em
  duas
   • Pedido = @ Id-pedido + quantidade
   • Id-pedido = nome-cliente + data-de-pedido + ISBN
   • Livro = @ISBN + título + autor + preço
     João Araújo - FCT/UNL


                             Normalização
• Terceira forma normal: eliminar dependências funcionais
  transitivas.
   – i. Em cada relação, verificar se existem atributos descritores que
     sejam funcionalmente dependentes de outros atributos descritores
     (dependência funcional transitiva ou dependência mútua).
   – ii. Retirar o subconjunto de atributos funcionalmente dependentes
     da relação original e criar com eles uma nova relação cuja chave é
     o atributo do qual os outros dependem. (Deixar este atributo
     também na relação original.)
   – iii. Definir as associações entre as novas relações e a relação
     original.                                @W
                                              Y
                 @ id1
                  W
                  Y
                  Z                          @ id1
                                              W
                                              Z
  João Araújo - FCT/UNL




                    Exemplo (3FN)

– Voo = @ Id-voo + número_piloto + nome_piloto
   • Id-voo = número-voo + dia
– Voo = @ Id-voo + número_piloto
   • Piloto = @número_piloto + nome_piloto
– No exemplo Pedido, total_pedido é redundante, pois
  pode ser calculado
   • Pedido = @ Id-pedido + quantidade
   • Id-pedido = nome-cliente + data_de-pedido + ISBN
   • Livro = @ISBN + título + autor + preço
    João Araújo - FCT/UNL




                            Exercício
• Encomenda = @número_encomenda +
  data_encomenda + código_cliente +
  morada_cliente + nome_cliente +
  data_entrega + 1{código_produto +
  nome_produto + 1{número_fornecedor +
  nome_fornecedor + preço_unitário +
  quantidade_pedida}}
    João Araújo - FCT/UNL




                        1ª Iteração
• Encomenda = @número_encomenda +
  data_encomenda + data_entrega + código_cliente
  + morada_cliente + nome_cliente
• Linha_encomenda = @número_encomenda +
  @código_produto + nome_produto +
  1{número_fornecedor + nome_fornecedor +
  preço_unitário + quantidade_pedida}
     João Araújo - FCT/UNL




                             2ª Iteração
• Encomenda = @número_encomenda + data_encomenda +
  data_entrega + código_cliente + morada_cliente +
  nome_cliente
• Linha_encomenda = @número_encomenda +
  @código_produto + nome_produto
• Linha_encomenda/Fornecedor = @número_encomenda +
  @código_produto + @número_fornecedor +
  nome_fornecedor + preço_unitário + quantidade_pedida
     João Araújo - FCT/UNL




                             2FN
• Encomenda = @número_encomenda + data_encomenda
  + data_entrega + código_cliente + morada_cliente +
  nome_cliente
• Linha_encomenda = @número_encomenda +
  @código_produto
• Linha_encomenda/Fornecedor = @número_encomenda +
  @código_produto + @número_fornecedor +
  quantidade_pedida
• Produto = @código_produto + nome_produto
• Fornecedor = @número_fornecedor + nome_fornecedor
• Fornecedor/Produto = @número_fornecedor +
  @código_produto + preço_unitário
João Araújo - FCT/UNL

                        2FN
     João Araújo - FCT/UNL




                             3FN
• Encomenda = @número_encomenda + data_encomenda +
  data_entrega + código_cliente
• Linha_encomenda =@número_ encomenda +
  @código_produto
• Produto = @código_produto + nome_produto
• Linha_encomenda/Fornecedor = @número_encomenda
  + @código_produto + @número_fornecedor +
  quantidade_pedida
• Fornecedor = @número_fornecedor + nome_fornecedor
• Fornecedor/Produto = @número_ fornecedor +
  @código_produto + preço_unitário
• Cliente = @código_cliente + nome_cliente +
  morada_cliente
João Araújo - FCT/UNL



                        3FN
        João Araújo - FCT/UNL



 Cliente
                      Simplificando...
  1
                                 N
  Faz                      Tem
                                      Produto
  N        M
                                 N         N
               M
Encomenda

                                                  Fornecedor/
                                                    produto
      Linha_encomenda/                    M
         Fornecedor              P
                                     Fornecedor
      João Araújo - FCT/UNL


          Esquema de tabelas: regras
• O esquema de tabelas (ETb) define as tabelas relacionais,
  atributos e o acesso aos dados (chaves).
• Cada entidade e associação do DEA poderia originar uma
  tabela, mas assim obteríamos um número desnecessariamente
  grande de tabelas.
• O objectivo é optimizar o número de tabelas, garantindo que
  não há atributos com valores indefinidos.
             nome tabela
            chave primária
                                      (atributos identificadores)
             atributos                (chave primária doutra tabela)
             descritores

           chaves externas
      João Araújo - FCT/UNL


                ETb: associação 1:1 (1)
CASO 1.
• Associação 1:1 obrigatória nos dois           sentidos.
  Livro                       1
                  arquivado       Posição arquivo
            1
                                           Livro = @código_livro + título + editora + ano
                                           Posição_arquivo = @código_arquivo + tipo
                                           código_arquivo = bloco + armário + prateleira

• Uma tabela.                     Livro
                              código_livro
                              título
                              editora
                              ano
                              bloco
                              armário
                              prateleira
                              tipo
         João Araújo - FCT/UNL

                      ETb: associação 1:1 (2)
  • Uma associação de 1:1 obrigatória nos dois sentidos pode
    originar duas tabelas, dependendo da importância de
    cada objecto no sistema.
                                 1
    Condutor           conduz            Camião
                  1
                                       Condutor = @número_condutor + nome + morada +
                                          salário
                                       Camião = @matrícula + marca + carga

• Duas tabelas, cada uma com uma chave externa.
         Condutor                         Camião
      número_condutor                 matrícula
      nome                           marca
      morada                         carga
      salário
                                     número_condutor
      matrícula
           João Araújo - FCT/UNL


                      ETb: associação 1:1 (3)
 • Associação 1:1 obrigatória só num sentido.
                                         1
Apartamento                tem                 Garagem
                 1
                                   Apartamento = @código_apartamento + área +
                                     número_divisões
                                   Garagem = @código_garagem + número_lugares + área

 • Duas tabelas e uma chave externa na tabela
   correspondente à entidade obrigatória na associação.
          Apartamento                        Garagem
       código_apartamento             código_garagem

       área                           número_lugares
       número_divisões                área                 Nota: as chaves externas
                                                           não podem ter valores
                                      código_apartamento
                                                           nulos.
(25)
                               (20)
         João Araújo - FCT/UNL

                    ETb: associação 1:1 (4)
 • Associação 1:1 opcional nos dois sentidos.
                                       1
 Apartamento             tem                 Garagem
                1
                                 Apartamento = @código_apartamento + área + número_divisões
                                 Garagem = @código_garagem + número_lugares + área

 • Três tabelas, uma por cada entidade e uma para a associação.

       Apartamento             Tem (propriedade)               Garagem
   código_apartamento        código_apartamento           código_garagem
                             código_garagem
   área                                                   número_lugares
   número_divisões                                        área


(30)                      (20)                     (30)
                                                     Há garagens que pertencem a
                                                     pessoas sem apartamento.
       João Araújo - FCT/UNL

                  ETb: associação 1:N (1)
CASO 2.
• Associação 1:N (ou hierárquica) obrigatória nos dois sentidos.

                                     N
  Cliente             subscreve             Apólice
              1
                                  Cliente = @número_cliente + nome + morada
                                  Apólice = @número_apólice + capital + prémio + unidade_risco

• Duas tabelas. A tabela de baixo na hierarquia fica com a
  chave da tabela de cima na hierarquia.
                  Cliente                        Apólice
            número_cliente                  número_apólice
            nome                            capital
            morada                          prémio
                                            unidade_risco
                                            número_cliente
       João Araújo - FCT/UNL


                 ETb: associação 1:N (2)
• Associação 1:N obrigatória só num sentido.
                               N
  Cliente            efectua       Aluguer
             1
                                    Cliente = @número_cliente + nome + morada
                                    Aluguer = @número_aluguer + data + situação


• Duas tabelas. A tabela subalterna na hierarquia fica com chave
  externa.
                 Cliente               Aluguer
            número_cliente         número_aluguer
            nome                   data
            morada                 situação
                                   número_cliente
      João Araújo - FCT/UNL

                ETb: associação 1:N (3)
• Associação 1:N obrigatória no outro sentido.

Departamento                          N   Empregado
                       trabalha
                1
                              Departamento = @número_departamento + nome + local
                              Empregado = @número_empregado + nome + morada +
                                 salário

• Três tabelas. Uma para cada entidade e uma para a associação.

      Departamento                    Trabalha              Empregado
  número_departamento            número_departamento   número_empregado
                                 número_empregado
  nome                                                  nome
  localização                                           morada
                                                        salário
     João Araújo - FCT/UNL


               ETb: associação 1:N (4)
• Associação 1:N opcional nos dois sentidos.
                                N
Enfermaria            contém          Paciente
             1
                                     Enfermaria = @número_enfermaria + tipo + local
                                     Paciente = @código_paciente + nome + morada + ...

• Três tabelas.
         Enfermaria              Subscrição                    Paciente
     número_enfermaria         número_enfermaria           código_paciente
                               código_paciente
     tipo                                                  nome
     local                                                 morada
                                                           ...



                               Um paciente pode ser
                               interno ou externo.
     João Araújo - FCT/UNL

                   ETb: associação N:M
CASO 3.
• Associação N:M, qualquer que seja o grau mínimo.
                                    N
 Produto              fornece           Fornecedor
               M
                        Produto = @código_produto + nome + quantidade
                        Fornecedor = @número_fornecedor + nome + morada + fax + telefone


• Três tabelas, uma por cada entidade e uma cuja chave é a
  concatenação das chaves das entidades envolvidas na
  associação.
     Produto                         Fornece                      Fornecedor
  código_produto                código_produto                número_fornecedor
                                número_fornecedor
 nome                                                         nome
 quantidade                                                   morada
                                                              fax
                                                              telefone
      João Araújo - FCT/UNL


CASO 4.
                 ETb: supertipo/subtipo
• Associação supertipo/subtipo.
                              Empregado = @código_empregado + nome + morada + código_postal +
        Empregado             telefone + tipo_empregado
                              Empregado_temporário = @código_empregado + salário_hora +
                              número_horas_extra
                              Empregado_assalariado = @código_empregado + salário_mensal +
                              abono_família + número_filhos

Empregado        Empregado
temporário       assalariado

• Três tabelas (neste caso); a tabela do supertipo contém um
  atributo classificador ou discriminante.
      Empregado               Empregado temporário          Empregado assalariado
  código_empregado             código_empregado               código_empregado
  nome                         salário_hora                   salário_mensal
  morada                                                      abono_família
                               número_horas_extra
  cód postal                                                  número_filhos
  telefone
  tipo empregado
             João Araújo - FCT/UNL


               ETb:associação associativa (1)
     CASO 5.
     • Entidade associativa, qualquer que seja o grau da associação.

              M                 N
Encomenda                              Produto

                                     Produto = @código_produto + descrição + peso + cor
                     Pedido          Encomenda = @número_encomenda + data_emissão + data_recepção
                                     Pedido = @número_pedido + quantidade_pedida
                                     número_pedido = número_encom + código_produto

     • Três tabelas.
               Encomenda                      Pedido                      Produto
            número_encomenda             número_encomenda
                                         código_produto                 código_produto
            data_emissão                                                descrição
            data_recepção                quantidade_pedida
                                                                        peso
                                                                        cor
      João Araújo - FCT/UNL


         ETb:associação associativa (2)
Outro exemplo:
  Médico família 1                    N
                                              Doente



                        Atende

                              Médico_família = @número_médico + nome + morada + especialidade
                              Doente = @número_doente + nome + morada + seguro
                              Atende = @código_atende + data_início_atendimento
                              código_atende = número_médico + número_doente

  Médico família                     Atende                           Doente
 número_médico            número_médico                          número_doente
                          número_doente
 nome                                                            nome
 morada                  data_início_atendimento                 morada
 especialidade                                                   seguro
      João Araújo - FCT/UNL

            ETb:associação unária (1)
CASO 6.
• Associação unária de 1:1

          Pessoa
                                  (marido)
                                             Pessoa = @número_BI + nome + morada + altura
                              casado
              (esposa)

• Duas tabelas.

        Pessoa                   Casamento
      número_BI               número_BI_esposa
                                                           Uma (instância de) pessoa pode
                              número_BI_marido
       nome                                                desempenhar um de dois papéis:
       morada                                              esposa ou marido.
       altura
     João Araújo - FCT/UNL

           ETb:associação unária (2)
• Associação unária de 1:N

                   N                          Empregado = @número_empregado + nome +
    Empregado                                 morada + categoria
                             (orientando)
           1
                       orienta
        (orientador)


• Origina uma tabela.
                                  Empregado
                              número_empregado
                              nome
                              morada                     O empregado senior
                              categoria                  “orienta-se” a si próprio.
                              número_orientador
     João Araújo - FCT/UNL




          Especificação de Processos

• Objectivo: define o que deve ser feito para transformar
  entradas em saídas
• É uma descrição detalhada de cada processo
• Deve ser expressa em uma forma que possa ser verificada
  pelo utilizador e pelo analista de sistemas
• Deve ser expressa em uma forma que possa ser
  comunicada para as várias audiências envolvidas
• Não deve impor detalhes de projecto ou implementação
       João Araújo - FCT/UNL




             Especificação de Processos

• Ferramentas utilizadas:
   –   Linguagem estruturada
   –   Pré e Pós-condições
   –   Tabelas de Decisão
   –   Árvores de Decisão
   –   Fluxogramas
   –   Diagramas de Nassi-Shneiderman
   –   Máquinas de estado
      João Araújo - FCT/UNL

              EP :Linguagem estruturada
• É um subconjunto da linguagem com restrições nos tipos de sentenças
  que podem ser formadas
• Uma sentença pode conter:
    – Acções:
        •   READ (ou GET)
        •   WRITE
        •   FIND (SEARCH ou LOCATE)
        •   SET
        •   SORT
        •   DISPLAY
        •   DELETE
        •   REPLACE, etc.
  João Araújo - FCT/UNL


       EP : Linguagem estruturada
– Equações algébricas : x = (x + y)/z
– Condições
    • if idade-cliente >= 65 then
         set taxa-de-cobrança to taxa-sénior
      else set taxa-de-cobrança to taxa-normal
    • do case
      case idade-cliente < 13
              set taxa-cobrança to taxa-infantil
      case idade-cliente > 12 and idade-cliente < 20
              set taxa-cobrança to taxa-teen
      case idade-cliente > 19 and idade-cliente < 65
              set taxa-cobrança to taxa-adulto
      otherwise set taxa-cobrança to taxa-senior
      end case
 João Araújo - FCT/UNL

      EP : Linguagem estruturada
– Ciclos:
  • do while condição-1
        sentença-1
        end do

  • …
        do while houver itens in pedido
           factura-total = factura-total + valor-item
        end do
        display número-factura, factura-total
        …
  • repeat
        sentença-1
      until condição-1
         João Araújo - FCT/UNL


                EP : Linguagem estruturada
                                                                        Aviões
pedido-rel-aterragens

                                    Emitir                                Aterragens
                                 relatório de
                                 aterragens
 Relatório-aterragens
                                                                            Aeroportos

 Aviões = {Avião + {id-aterragem}}
 Avião = @id-avião + nome-dono + tipo-avião
 Aeroportos = {Aeroporto+ {id-aterragem}}
 Aeroporto = @id-aeroporto + nome-aeroporto + classificação-aeroporto
 Aterragens = {Aterragem + id-avião + id-aeroporto}
 Aterragem = @id-aterragem + hora + data + condições-tempo
 pedido-rel-aterragens = condições-tempo + tipo-avião + classificação-aeroporto
 Relatório_aterragens = {id-avião + nome-dono + id-aeroporto + nome-aeroporto + hora + data +
 condições-tempo + tipo-avião + classificação-aeroporto }
            João Araújo - FCT/UNL

Processo Emitir-Relatório-Aterragens(Aviões, Aterragens, Aeroportos, pedido-rel-aterragens)
/* Gerar relatório de aterragens de um tipo de avião em certas condições de tempo */
Ler Aviões
Enquanto houver Aviões faça
    Se tipo-avião em aviões = tipo-avião em pedido-rel-aterragens
    Então Ler Aterragens
           Enquanto houver Aterragens faça
              Se (id-avião em Aterragens = id-avião em Aviões) &
                 (condições-tempo em Aterragens = condições-tempo em pedido-rel-aterragens)
              Então Ler Aeroportos
                      Enquanto houver Aeroportos faça
                         Se (classificação-aeroporto em Aeroportos = classificação-aeroporto
                             em pedido-rel-aterragens) & (id-aeroporto em Aeroportos =
                                id-aeroporto em Aterragens)
                          Então Escreva (id-avião, nome-dono, id-aeroporto, nome-aeroporto,
                                hora, condições-tempo, tipo-avião, classificação-aeroporto)
                                em Relatório-aterragens
                         Senão Ler Aeroportos
              Senão Ler Aterragens
    Senão Ler Aviões
Imprimir Relatório-aterragens
           João Araújo - FCT/UNL

                   EP : Pré e Pós-Condições
• Descreve uma função sem entrar em muito detalhe sobre o algoritmo utilizado.
  Útil quando:
   – O algoritmo é bastante utilizado
   – Há várias algoritmos que podem ser utilizados
• Pré-condições especificam todas as condições que devem ser verdadeiras antes da
  execução de um processo. Pré-condições típicas:
   – Quais entradas devem estar disponíveis
        • Ex.: elemento X ocorre
    – Que relações devem existir entre entradas ou numa entrada
        • Ex.: um pedido c/ data de entrega < 60 dias ocorre
    – Que relações devem existir entre entradas e depósitos de dados
        • Ex.: um cliente deve existir no depósito Clientes (ou cliente peretence a Clientes)
    – Que relações devem existir entre depósitos de dados ou dentro de um depósito
        • Ex.: Há um pedido no depósito Pedidos cujo código-cliente é o mesmo do código-
          cliente do depósito Clientes
       João Araújo - FCT/UNL




               EP : Pré e Pós-Condições

• Pós-condições especificam todas as condições que devem ser
  verdadeiras quando um processo termina. Pós-condições típicas:
   – Saídas devem ser geradas pelo processo
        • Ex.: uma factura será produzida
    – Que relações existirão entre saídas e entradas
        • Ex.: a factura-total = soma dos preços de cada item + despesas de
          envio
    – Que relações deverão existir entre saídas e depósitos de dados
        • Ex.: os detalhes de um cliente devem ser obtidos do depósito clientes
          e listados
    – Que mudanças serão feitas nos depósitos de dados
        • Ex.: Um pedido será adicionado no depósito Pedidos
     João Araújo - FCT/UNL




             EP : Pré e Pós-Condições

• Exemplos:
   – 3.5 Consultar saldo de conta bancária num ATM
       • Pré-condição: cartão válido e password válida
       • Pós-condição: exibir saldo da conta correspondente
   – 1.1 Produzir factura da conta de um determinado cliente
       • Pré-condição: número-da-conta deve existir no depósito Contas
       • Pós-condição: factura é produzida contendo número-da-conta e
         quantia
       • Excepção:
            – Pré-condição: número-da-conta não existe no depósito Contas
            – Pós-condição: mensagem de erro deve ser produzida
      João Araújo - FCT/UNL

                EP : Tabela de Decisão
• Mostra as acções que devem ser realizadas baseadas numa combinação
  de condições
• Utilizada quando as acções a serem tomadas dependem de condições
  complexas
• Regra: uma combinação + acções

                          1   2   3   4   5   6   7   8
     Idade > 21           S   S   S   S   N   N   N   N
     Sexo                 M   M   F   F   M   M   F   F

     peso > 120           S   N   S   N   S   N   S   N

      Medicação 1         X               X           X

     Medicação 2              X           X
     Medicação 3                  X           X       X
    Sem Medicação                     X           X
      João Araújo - FCT/UNL




             Passos para criar uma TD:
• Identificar todas as condições ou variáveis, na especificação,
  Identificar todos os valores que as variáveis podem assumir
• Calcular o número de combinações de condições. Se todas as
                                    N
  condições são binárias então há 2 combinações de N variáveis
• Identificar cada acção possível na especificação
• Criar uma TD vazia listando todas as decisões e acções no lado
  esquerdo e numerar as combinações de condições no topo da tabela
• Listar todas as combinações de condições, uma combinação para cada
  coluna
• Examinar cada combinação e identificar as acções correspondentes
• Identificar omissões, contradições ou ambiguidades
• Discutir omissões, contradições ou ambiguidades com o utilizador
• Simplificar a tabela
   João Araújo - FCT/UNL


              EP : Tabela de Decisão
• Simplificar TDs
   1. Verificar se há regras com as mesmas acções.
   2. Selecionar as regras cujas entradas apenas diferem em uma condição.



              entrada 1    S   S    S S      N   N    N   N

              entrada 2    S   S    N   N    S   S    N    N
              entrada 3    S   N    S   N    S   N    S   N

              acção 1               X
              acção 2                   X

              acção 3      X   X                      X   X
              acção 4                        X   X
João Araújo - FCT/UNL


           EP : Tabela de Decisão

         entrada 1      S   S   S   N   N

         entrada 2      S   N   N   S   N
         entrada 3      _   S   N   _   _

         acção 1            X
         acção 2                X

         acção 3        X               X

         acção 4                    X



 Agora diferem em duas entradas, logo não se podem simplificar.
João Araújo - FCT/UNL


             EP : Tabela de Decisão
                        1   2       2   1       3   3



          Entrada 1     S   S   S S     N   N   N   N

          Entrada 2     S   S   N   N   S   S   N   N
          Entrada 3     S   N   S   N   S   N   S   N

            Acção 1             X
            Acção 2     X               X

            Acção 3         X       X       X   X   X

            Acção 4     X       X       X
João Araújo - FCT/UNL


           EP : Tabela de Decisão

               Entrada 1   — S     S   N   N

               Entrada 2   S   — N     S   N
               Entrada 3   S   N   S   N   —

                 Acção 1           X
                 Acção 2   X

                 Acção 3       X       X   X

                 Acção 4   X       X



                           1   2           3
  João Araújo - FCT/UNL




           EP : Árvores de Decisão
                          Bom histórico   Tratamento
                          de pagamentos   prioritário
Mais de um
milhão em
negócios
                          Mau histórico   Tratamento
                          de pagamentos   normal


Um
                                          Tratamento
milhão ou
                                          normal
menos
     João Araújo - FCT/UNL




                     EP : Fluxogramas

• Mostra lógica procedural e sequencial
• Desvantagens:
   – Impróprio para modelagem de uma rede de processos assíncronos
   – Facilmente podem tornar-se complexos e difíceis de manter
   – Alguns símbolos usados comprometem a abstração da especificação
     João Araújo - FCT/UNL




 EP : Diagramas de Nassi-Shneiderman

• Semelhante à linguagem estruturada


            Ler depósito Cliente
                  Do while há clientes
                        idade >= 25
                   true                  false
               Imprimir dados      ler novo cliente

             Ler novo cliente
         Close Cliente
     João Araújo - FCT/UNL


            Combinando os Modelos

• DFD x DD
   – Cada fluxo de dados e cada depósito de dados devem estar
     definidos no DD. Se um ou outro não está definido no DD, é
     considerado indefinido
   – Todo elemento de dado ou depósito de dados definido no DD deve
     ter um correspondente no DFD. Caso contrário é considerado um
     fantasma - está definido, mas não é usado
• DFD x Especificação de Processos (EP)
   – Todo processo no DFD deve estar associado a um DFD de nível
     mais baixo ou a uma EP
   – Toda EP deve estar associada a um processo num DFD de
     último nível
   – Entradas e saídas devem estar consistentes: devem ser
     representadas no DFD e na EP
     João Araújo - FCT/UNL




            Combinando os Modelos

• EP x (DFD e DD)
   – Cada referência a dados numa EP:
       • Deve ter o mesmo nome de um fluxo de dados ou depósito de dados
         conectado a um processo descrito pela EP;
       • É um termo local explicitamente definido pela EP
       • Aparece como uma entrada do DD correspondente a um fluxo de
         dados ou depósito de dados conectado ao processo no DFD
     João Araújo - FCT/UNL

            Combinando os Modelos
Process 3.5 Calcular_factor
/* P e Q variáveis locais para calcular resultados intermediários */
P = 3.1416 * X
…
Q = 2.781 * Y -13
…
factor = P*Q +2
end process


        Z            3.5            factor
                   Calcular_
                    factor

X = *Componente horizontal em centímetros; intervalo de 0 a 100*
Y = *Componente vertical em centímetros; intervalo de 0 a 10*
Z = *Coordenadas*
    X+Y
    João Araújo - FCT/UNL




           Combinando os Modelos

• DD x (DFD e EP)
  – Cada entrada do DD deve ser referenciada por uma EP, ou um
    DFD, ou outra entrada do DD:
• DEA x (DFD e EP)
  – Todo depósito de dados no DFD deve corresponder a uma
    entidade, associação ou entidade associativa no DEA.
      • Se há um depósito no DFD que não aparece no DEA há algo errado e
        vice-versa
      • Nomes das entidades no DEA estão no singular e nos depósitos de
        dados correspondentes estão no plural
  – Entradas no DD devem ser aplicadas tanto para o modelo DEA
    como para o modelo DFD
    João Araújo - FCT/UNL




          Diagrama de Estrutura (1)

• Módulo
  – É uma colecção de instruções de programa que possui:
      •   Entrada e saída
      •   Função
      •   Lógica interna
      •   Dados internos
  – Um módulo:
      • Tem um nome
      • Pode chamar outros módulos
      • Pode ser chamado por outros módulos
    João Araújo - FCT/UNL




         Diagrama de Estrutura (2)

• Diagramas de estrutura (DE) são uma forma
  gráfica de uma decomposição hierárquica
• São modelos dinâmicos
• Mostram como uma função chama outra
• Converter um DFD num diagrama de estrutura
  requer criatividade e experiência
    João Araújo - FCT/UNL




         Diagrama de Estrutura (3)

• Notação

                                              Módulo
                                   A          chamador

Parâmetros                  x, y       p, q   Parâmetros
de entrada                                    de saída
                   Call
                                              Módulo
                                   B          chamado
    João Araújo - FCT/UNL




         Diagrama de Estrutura (4)
• Observações:
  – Quando o módulo B é chamado a execução do módulo
    A é interrompida
  – O módulo B executa as suas instruções e quando
    termina o controlo retorna para a instrução a seguir a
    chamada de B
  – O módulo A pode não passar parâmetros de entrada
  – O módulo B pode não retornar qualquer saída
  – Cada módulo pode ter entre 2 e 7 subordinados
      • se tiver apenas 1 subordinado significa que há baixa coesão
      • se tiver muitos subordinados significa que que o desenho está
        muito detalhado
       João Araújo - FCT/UNL

            Diagrama de Estrutura (5)

• Exemplo: Emitir cheque de pagamento para um
  empregado

                                  Emitir cheque de
                                  pagamento              Dados do
             Dados de                                    empregado e
             empregado                                   pagamento
                                            Dados do
                               Dados de     empregado e
                               empregado    pagamento
        Obter dados do               Calcular          Imprimir cheque
        empregado                    pagamento         de pagamento


Dados de
empregado
    João Araújo - FCT/UNL




         Diagrama de Estrutura (6)

• Guidelines para converter um DFD em um DE
  – Identificar processos de entrada
  – Identificar processos de saída
  – Identificar processos centrais
            João Araújo - FCT/UNL




                    Diagrama de Estrutura (7)

    • Gerar relatório de entidades de um projecto
                          Obter nome
                             do proj.
                        nome
                        do proj           nome das
                                          entidades
                          Obter nomes                 Ordenar
Entidades de proj         das entidades               entidades
                                            Entidades             Entidades
                                            ordenadas             ordenadas
                           DD                     Obter dados      e dados    Imprimir
                                        Dados de das entidades                 relatório
                                        entidades
     João Araújo - FCT/UNL




          Diagrama de Estrutura (8)
                                          Produzir relatórios
                                          de projecto                 Entidades
                              Nomes                                   ordenadas
                                                     Entidades         e dados
                                         Nomes       ordenadas
                                                      e dados
                    Obter nome do             Processar             Gerar relatório
                    projecto e                entidades
                    entidades       Nome das
                                    entidades                   Entidades
Nome do proj           Nome                                    ordenadas
                                            Nomes Entidades
                       do proj                                   e dados
                                                    ordenadas
         Obter
                          Obter nomes         Ordenar         Obter
         nome do
                          da entidades        entidades       dados de
         projecto
                                              por nome        entidades


 Nome do proj                Nome das
                             entidades                          Dados de
                                                                entidade
    João Araújo - FCT/UNL


         Diagrama de Estrutura (9)
• O objectivo é obter:
   – Módulos fortemente coesos internamente
      • Um Módulo com componentes fortemente ligados indica que é
        bem definido.
      • Coesão forte garante facilidade de compreensão e manutenção
   – Módulos fracamente acoplados entre si
      • Módulos fracamente ligados indicam um sistema bem
        dividido.
      • Acoplamento fraco garante:
            • menor possibilidade de efeitos em cadeia;
            • maior facilidade de modificação, já que menos módulos
              serão afectados.

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:109
posted:12/8/2011
language:Portuguese
pages:64