OOAD - Modelagem Funcional
A Modelagem Funcional fornece a perspectiva do processo do modelo de análise orientada a objetos e uma visão geral do que o sistema deve fazer. Define a função dos processos internos no sistema com o auxílio de Diagramas de Fluxo de Dados (DFDs). Ele descreve a derivação funcional dos valores dos dados sem indicar como eles são derivados quando são calculados ou por que precisam ser calculados.
Diagramas de fluxo de dados
A modelagem funcional é representada por meio de uma hierarquia de DFDs. O DFD é uma representação gráfica de um sistema que mostra as entradas para o sistema, o processamento nas entradas, as saídas do sistema, bem como os armazenamentos de dados internos. Os DFDs ilustram a série de transformações ou cálculos realizados nos objetos ou no sistema, e os controles externos e objetos que afetam a transformação.
Rumbaugh et al. definiram DFD como, “Um diagrama de fluxo de dados é um gráfico que mostra o fluxo de valores de dados de suas fontes em objetos por meio de processos que os transformam em seus destinos em outros objetos”.
As quatro partes principais de um DFD são -
- Processes,
- Fluxos de dados,
- Atores e
- Armazenamentos de dados.
As outras partes de um DFD são -
- Restrições e
- Fluxos de controle.
Características de um DFD
Processos
Processos são atividades computacionais que transformam os valores dos dados. Todo um sistema pode ser visualizado como um processo de alto nível. Um processo pode ser dividido em componentes menores. O processo de nível mais baixo pode ser uma função simples.
Representation in DFD - Um processo é representado como uma elipse com seu nome escrito dentro dele e contém um número fixo de valores de dados de entrada e saída.
Example - A figura a seguir mostra um processo Compute_HCF_LCM que aceita dois inteiros como entradas e saídas seu HCF (maior fator comum) e LCM (mínimo múltiplo comum).
Fluxos de Dados
O fluxo de dados representa o fluxo de dados entre dois processos. Pode ser entre um ator e um processo, ou entre um armazenamento de dados e um processo. Um fluxo de dados denota o valor de um item de dados em algum ponto do cálculo. Este valor não é alterado pelo fluxo de dados.
Representation in DFD - Um fluxo de dados é representado por um arco direcionado ou uma seta, rotulado com o nome do item de dados que ele carrega.
Na figura acima, Integer_a e Integer_b representam os fluxos de dados de entrada para o processo, enquanto LCM e HCF são os fluxos de dados de saída.
Um fluxo de dados pode ser bifurcado nos seguintes casos -
O valor de saída é enviado para vários lugares, conforme mostrado na figura a seguir. Aqui, as setas de saída não estão marcadas, pois denotam o mesmo valor.
O fluxo de dados contém um valor agregado e cada um dos componentes é enviado para locais diferentes, conforme mostrado na figura a seguir. Aqui, cada um dos componentes bifurcados é rotulado.
Atores
Atores são os objetos ativos que interagem com o sistema, produzindo dados e inserindo-os no sistema, ou consumindo dados produzidos pelo sistema. Em outras palavras, os atores servem como fontes e sumidouros de dados.
Representation in DFD- Um ator é representado por um retângulo. Os atores são conectados às entradas e saídas e ficam no limite do DFD.
Example - A figura a seguir mostra os atores, a saber, Customer e Sales_Clerk em um sistema de contra venda.
Armazenamento de dados
Os armazenamentos de dados são os objetos passivos que atuam como repositórios de dados. Ao contrário dos atores, eles não podem realizar nenhuma operação. Eles são usados para armazenar dados e recuperar os dados armazenados. Eles representam uma estrutura de dados, um arquivo de disco ou uma tabela em um banco de dados.
Representation in DFD- Um armazenamento de dados é representado por duas linhas paralelas contendo o nome do armazenamento de dados. Cada armazenamento de dados está conectado a pelo menos um processo. As setas de entrada contêm informações para modificar o conteúdo do armazenamento de dados, enquanto as setas de saída contêm informações recuperadas do armazenamento de dados. Quando uma parte das informações deve ser recuperada, a seta de saída é rotulada. Uma seta sem etiqueta indica a recuperação total dos dados. Uma seta bidirecional implica em recuperação e atualização.
Example- A figura a seguir mostra um armazenamento de dados, Sales_Record, que armazena os detalhes de todas as vendas. A entrada para o armazenamento de dados compreende detalhes de vendas, como item, valor de faturamento, data, etc. Para encontrar a média de vendas, o processo recupera os registros de vendas e calcula a média.
Restrições
As restrições especificam as condições ou restrições que precisam ser satisfeitas ao longo do tempo. Eles permitem adicionar novas regras ou modificar as existentes. As restrições podem aparecer em todos os três modelos de análise orientada a objetos.
Na modelagem de objeto, as restrições definem o relacionamento entre os objetos. Eles também podem definir a relação entre os diferentes valores que um objeto pode assumir em momentos diferentes.
Na Modelagem Dinâmica, as restrições definem o relacionamento entre os estados e eventos de diferentes objetos.
Na Modelagem Funcional, as restrições definem as restrições nas transformações e cálculos.
Representation - Uma restrição é representada como uma string entre colchetes.
Example- A figura a seguir mostra uma parcela do DFD para computar o salário dos funcionários de uma empresa que decidiu dar incentivos a todos os funcionários do departamento de vendas e incrementar o salário de todos os funcionários do departamento de RH. Pode-se ver que a restrição {Departamento: Vendas} faz com que o incentivo seja calculado apenas se o departamento for de vendas e a restrição {Departamento: RH} faz com que o incremento seja calculado apenas se o departamento for RH.
Fluxos de controle
Um processo pode ser associado a um determinado valor booleano e é avaliado apenas se o valor for verdadeiro, embora não seja uma entrada direta para o processo. Esses valores booleanos são chamados de fluxos de controle.
Representation in DFD - Os fluxos de controle são representados por um arco pontilhado do processo que produz o valor booleano até o processo por ele controlado.
Example- A figura a seguir representa um DFD para divisão aritmética. O Divisor é testado para valores diferentes de zero. Se não for zero, o fluxo de controle OK tem um valor True e, subsequentemente, o processo Divide calcula o Quociente e o Restante.
Desenvolvendo o modelo DFD de um sistema
Para desenvolver o modelo DFD de um sistema, uma hierarquia de DFDs é construída. O DFD de nível superior compreende um único processo e os atores que interagem com ele.
Em cada nível inferior sucessivo, detalhes adicionais são gradualmente incluídos. Um processo é decomposto em subprocessos, os fluxos de dados entre os subprocessos são identificados, os fluxos de controle são determinados e os armazenamentos de dados são definidos. Durante a decomposição de um processo, o fluxo de dados para dentro ou para fora do processo deve corresponder ao fluxo de dados no próximo nível de DFD.
Example- Consideremos um sistema de software, Software Atacadista, que automatiza as transações de uma loja de atacado. A loja vende a granel e tem uma clientela composta por comerciantes e lojistas. Cada cliente é solicitado a se registrar com seus dados pessoais e recebe um código de cliente exclusivo, C_Code. Feita a venda, a loja regista os seus dados e envia a mercadoria para expedição. A cada ano, a loja distribui presentes de Natal aos seus clientes, que consistem em uma moeda de prata ou uma moeda de ouro dependendo do total de vendas e da decisão do proprietário.
O modelo funcional para o software de atacado é fornecido abaixo. A figura abaixo mostra o DFD de nível superior. Mostra o software como um processo único e os atores que interagem com ele.
Os atores do sistema são -
- Customers
- Salesperson
- Proprietor
No próximo nível DFD, conforme mostrado na figura a seguir, os principais processos do sistema são identificados, os armazenamentos de dados são definidos e a interação dos processos com os atores e os armazenamentos de dados são estabelecidos.
No sistema, três processos podem ser identificados, que são -
- Registrar clientes
- Vendas de Processo
- Determinar presentes
Os armazenamentos de dados que serão necessários são -
- Detalhes do cliente
- Detalhes de Vendas
- Detalhes do presente
A figura a seguir mostra os detalhes do processo de Cadastro de Cliente. Existem três processos nele, Verificar detalhes, Gerar C_Code e Atualizar detalhes do cliente. Quando os detalhes do cliente são inseridos, eles são verificados. Se os dados estiverem corretos, C_Code é gerado e os Dados do cliente do armazenamento de dados são atualizados.
A figura a seguir mostra a expansão do processo Determinar Presentes. Ele tem dois processos, Encontrar Vendas Totais e Decidir Tipo de Moeda de Presente. O processo Find Total Sales calcula as vendas totais anuais correspondentes a cada cliente e registra os dados. Tomando esse registro e a decisão do proprietário como entradas, as moedas do presente são distribuídas pelo processo Decidir o tipo de moeda do presente.
Vantagens e desvantagens do DFD
Vantagens | Desvantagens |
---|---|
Os DFDs representam os limites de um sistema e, portanto, são úteis para retratar o relacionamento entre os objetos externos e os processos dentro do sistema. | Os DFDs levam muito tempo para criar, o que pode não ser viável para fins práticos. |
Eles ajudam os usuários a ter um conhecimento sobre o sistema. | Os DFDs não fornecem nenhuma informação sobre o comportamento dependente do tempo, ou seja, eles não especificam quando as transformações são feitas. |
A representação gráfica serve como um plano para os programadores desenvolverem um sistema. | Eles não lançam nenhuma luz sobre a frequência dos cálculos ou as razões para os cálculos. |
Os DFDs fornecem informações detalhadas sobre os processos do sistema. | A preparação de DFDs é um processo complexo que requer especialização considerável. Além disso, é difícil para uma pessoa não técnica entender. |
Eles são usados como parte da documentação do sistema. | O método de preparação é subjetivo e deixa amplo espaço para ser impreciso. |
Relação entre modelos de objeto, dinâmicos e funcionais
O Modelo de Objeto, o Modelo Dinâmico e o Modelo Funcional são complementares entre si para uma Análise Orientada a Objetos completa.
A modelagem de objetos desenvolve a estrutura estática do sistema de software em termos de objetos. Assim, mostra os “fazedores” de um sistema.
A Modelagem Dinâmica desenvolve o comportamento temporal dos objetos em resposta a eventos externos. Mostra as sequências de operações realizadas nos objetos.
O modelo funcional oferece uma visão geral do que o sistema deve fazer.
Modelo Funcional e Modelo de Objeto
As quatro partes principais de um modelo funcional em termos de modelo de objeto são -
Process - Os processos implicam os métodos dos objetos que precisam ser implementados.
Actors - Atores são os objetos no modelo de objeto.
Data Stores - Esses são objetos no modelo de objeto ou atributos de objetos.
Data Flows- Fluxos de dados para ou de atores representam operações em ou por objetos. Os fluxos de dados de ou para armazenamentos de dados representam consultas ou atualizações.
Modelo Funcional e Modelo Dinâmico
O modelo dinâmico indica quando as operações são realizadas, enquanto o modelo funcional indica como elas são realizadas e quais argumentos são necessários. Como os atores são objetos ativos, o modelo dinâmico deve especificar quando atua. Os armazenamentos de dados são objetos passivos e respondem apenas a atualizações e consultas; portanto, o modelo dinâmico não precisa especificar quando eles atuam.
Modelo de objeto e modelo dinâmico
O modelo dinâmico mostra o estado dos objetos e as operações realizadas nas ocorrências de eventos e as alterações subsequentes de estados. O estado do objeto como resultado das mudanças é mostrado no modelo de objeto.