CURSO ANÁLISE ESTRUTURADA DE SISTEMAS
Neste curso, você vai conhecer os conceitos, metodologias e técnicas para elaborar uma Análise estruturada de sistemas. Inicialmente vamos abordar o conceito da Análise funcional, uma técnica utilizada para especificar um sistema. Vamos aprender sobre: • • •
•
•
• •
Identificar as entidades externas e eventos temporais. Identificar os fluxos de dados de entrada e saída. Funções essenciais de um sistema e elaborar o diagrama de fluxo de dados das funções essenciais. Como elaborar os modelos funcionais dos sistemas e como utilizar as funções macro para agrupar funções essenciais. Como elaborar o diagrama de decomposição das funções essenciais e como realimentar os diagramas de níveis superiores. Listas de verificação, que ajudam na qualidade dos modelos de contexto e modelo funcional. Identificar os depósitos de dados de um sistema.
O objetivo deste curso é lhe proporcionar conhecimentos, competências e habilidades no desenvolvimento da Análise estruturada de sistemas. Os exercícios propostos irão facilitar a assimilação dos conceitos, fazendo você construir, a seu tempo, o conhecimento necessário para desenvolver o uso dessa técnica de análise.
Vamos abordar a técnica da Análise funcional, conhecendo seus conceitos e suas funcionalidades.
Conhecer os conceitos básicos deste tipo de análise, onde e para que ela pode ser utilizada.
A Análise funcional é uma técnica de especificação de sistemas. Um dos problemas mais sérios no processo de especificação de sistemas é a dificuldade de analistas e usuários se comunicarem de forma eficaz e não ambígua.
A análise funcional introduz uma linguagem comum, isenta de aspectos técnicos, de fácil entendimento por parte dos usuários, por meio da qual analistas, usuários e demais envolvidos podem se comunicar e se fazer entender. Ela se baseia nos princípios da técnica de análise estruturada, introduzida na década de 70 por diversos metodologistas, principalmente, por Trish Sarson, Chris Gane e Tom DeMarco. Posteriormente, esta técnica foi aprimorada, com a inclusão de novos conceitos pela chamada análise essencial, introduzida por Palmer e McMenamin.
A análise funcional serve principalmente para: 1. Sistematizar o processo de especificação de sistemas Sem a análise funcional, a especificação do sistema, quando é feita, se baseia em descrições textuais, com todas as limitações da linguagem natural. Cada analista usa sua própria forma de especificação, sem uma padronização de linguagem e de métodos. 2. Obter a visão lógica ou conceitual do sistema de informação Um dos princípios básicos das boas práticas de desenvolvimento de sistemas é a separação entre a visão lógica e a visão física. Tradicionalmente, os analistas têm tido dificuldades de expressar suas ideias em termos lógicos ou conceituais. Eles têm a tendência de se concentrar nos aspectos físicos da solução, antes a ntes mesmo da análise dos aspectos conceituais do problema ser concluída. A análise funcional se caracteriza pela absoluta independência dos detalhes de implementação do sistema. Seu resultado é um conjunto de gráficos e descrições que oferecem uma visão lógica ou conceitual do sistema. 3. Uniformizar as diferentes visões que as pessoas têm de um sistema. 4. Estruturar e simplificar a análise de sistemas de informação, principalmente dos mais complexos. 5. Registrar de forma sistemática as necessidades do usuário.
Neste módulo vamos abordar os conceitos co nceitos básicos da análise estruturada.
??????????????????????
A análise funcional é uma técnica de especificação de sistemas. O Sistema é um conceito útil, que ajuda a analisar a nalisar diversos fenômenos segundo um ângulo novo. A origem deste conceito é a biologia, biologi a, mas ele se aplica de forma semelhante nas ciências sociais, na administração de empresas, na engenharia etc.
Esta definição indica que um sistema: • • • •
Tem um objetivo. É formado por componentes ou subsistemas. Mostra um forte relacionamento entre os componentes. Recebe destes componentes uma contribuição direta ou indireta para par a atingir seu objetivo.
Um bom exemplo de sistema é o corpo humano. Ele é um conjunto de partes que se interrelacionam para um objetivo comum: preservar a vida de uma pessoa. O conceito de sistema nos faz ver as coisas de forma diferente. Por exemplo, a decomposição de um corpo humano em cabeça, tronco e membros é inadequada porque não fica claro como as partes se relacionam e como contribuem para o objetivo comum.
Um exemplo de decomposição é como o sistema corpo humano pode ser dividido em subsistemas: digestivo, circulatório, nervoso, reprodutor etc. Dividindo o corpo humano desta forma, fica mais claro entender como cada componente (subsistema) contribui para o objetivo comum do sistema.
Uma organização pode ser vista como um sistema. Suas diversas áreas e departamentos funcionam como componentes, interagindo entre si para atingir o objetivo comum. Os componentes aqui são: • • • • • • •
A recepção da matéria-prima O estoque A produção O controle de qualidade A expedição O sistema de segurança A administração
O sistema de informações de uma organização o rganização é um dos componentes do sistema global. Existe um paralelo entre os componentes de um sistema de informações e o sistema de produção de uma organização. Os componentes de um sistema de informações são: A entrada dos dados (matéria-prima) para o sistema, que devem ser recebidos e codificados para uma forma que o sistema possa entender e processar. • • •
O controle de qualidade, que verifica a correção dos dados recebidos. O processamento (produção) dos dados recebidos. O armazenamento (estoque) de informações.
• •
A saída (expedição) das informações obtidas por meio de relatórios e/ou telas. A administração, que controla todo o processamento.
Para entender o funcionamento de um sistema, usamos uma estratégia denominada "decomposição sucessiva". Um sistema é composto de partes e cada parte é também um sistema. Cada subsistema, por sua vez, pode ser dividido em partes e assim por diante. A análise funcional utiliza a decomposição para resolver problemas complexos. Consiste em dividi-los em problemas mais simples e estes, sucessivamente, em problemas mais simples ainda, até que a complexidade chegue a um nível adequado para um entendimento correto e para sua solução.
A análise funcional utiliza um conjunto de quatro elementos básicos para descrever um sistema. Estes elementos são adequados para representar uma visão lógica do sistema, que não se preocupa com detalhes de implementação.
•
•
•
•
Uma função representa o componente do sistema que determina o que é feito com o dado, e não como o dado é processado. O depósito de dados é um local para armazenagem de dados e pode ser: um HD, um CD, uma tabela do Access, etc. As entidades externas representam a origem e o destino dos dados processados pelo sistema. Da mesma forma, o fluxo de dados (representado no diagrama pelas setas) representa os dados em movimento, não importando através de qual meio.
O processo de especificação de sistemas, segundo a técnica de análise funcional, é realizado em três passos:
Definir o contexto de análise
Antes de qualquer coisa, é importante obter um consenso junto aos usuários sobre o que está dentro e o que está fora do escopo daquilo que será realizado. O instrumento que registra o resultado deste primeiro passo é o modelo de contexto. Modelar as funções
Este passo constitui o elemento central do processo de especificação, pois nele são: • • •
Identificadas as funções do sistema Decompostas as funções complexas em funções mais simples Identificados os depósitos de dados
Dicionário de dados
Para completar a especificação do sistema, cada um dos elementos identificados que constam dos modelos produzidos nos passos anteriores, são individualmente descritos, criando-se um conjunto de descrições conhecido como dicionário de dados.
Neste módulo vamos aprender o que é o modelo de contexto, como ele é desenvolvido e os seus componentes.
??????????
É o instrumento da análise funcional que serve para: •
•
• •
Identificar os elementos externos que interagem com o sistema. Mostrar o fluxo de informação existente entre o sistema e seu ambiente externo. Estabelecer os limites do sistema. Identificar os eventos que ocorrem no ambiente externo e que provocam uma resposta do sistema.
O modelo de contexto deve ser desenvolvido em conjunto com os usuários. Se não for possível, ele pode ser desenvolvido pelos analistas e submetido à aprovação dos usuários. De qualquer forma, o modelo de contexto vai se constituir numa espécie de contrato de prestação de serviços entre analistas e usuários com relação àquilo que vai ser incluído no sistema. Por isso, todos os cuidados devem ser tomados para garantir uma correta determinação dos limites do sistema, do que vai ser e do que não vai ser objeto de análise.
O modelo de componentes: •
•
contexto
tem
dois
O diagrama de contexto, que é uma representação gráfica do sistema com seu ambiente externo. A lista de eventos, que relaciona os fatos do ambiente externo que o sistema obrigatoriamente deve reconhecer.
Para construir o modelo de contexto seguimos os passos descritos abaixo: 1. Identificar as entidades externas e representá-las no Diagrama de Co ntexto. 2. Identificar fluxos de dados envolvidos com as entidades e representá-los no Diagrama de Contexto. 3. Construir a lista de eventos a partir dos fluxos de dados identificados. 4. Verificar se todos os eventos que o sistema deve reconhecer estão contemplados.
Neste módulo vamos ver com mais detalhes o diagrama de contexto e como usamos este instrumento para estabelecer os limites do sistema.
Simular um Sistema de Cobrança, de modo a entender como o mesmo funciona, buscando conhecer alguns exemplos de diagrama de contexto e também alguns limites do Sistema.
Considere um sistema de cobrança de uma organização. Suponha que este sistema seja bastante simples. Ele deve ser capaz de: Receber os pagamentos feitos pelos clientes. •
•
•
Emitir os recibos dos pagamentos realizados. Emitir extratos periódicos para os clientes. Emitir relação de clientes inadimplentes para uso do Departamento Jurídico.
Neste exemplo, podemos destacar que: • • • • •
O cliente é origem e destino das informações que o sistema recebe e gera. O Departamento Jurídico é o destino das informações geradas pelo sistema. O sistema recebe informações relativas aos pagamentos feitos pelo cliente. O sistema emite os recibos e os extratos para os clientes. O sistema emite a relação de inadimplentes para o Departamento Jurídico.
Veja o diagrama de contexto do sistema de cobrança: Você pode observar que: •
•
•
O cliente e o Departamento Jurídico são as entidades externas, origem e destino das informações que o sistema recebe ou emite. Pagamento é um fluxo de dados recebido pelo sistema. Nós chamamos este tipo de fluxo de dados de "fluxo de entrada" ou de "estímulo". Recibo, extrato e relação de inadimplentes são fluxos de dados emitidos pelo sistema. São "fluxos de saída" ou "respostas" do sistema.
O cliente e o Departamento Jurídico não fazem parte do sistema, mas interagem com ele, fornecendo ou recebendo dados. Constituem o que se denomina o "ambiente externo" do sistema.
Se quisermos, podemos considerar que o Departamento Jurídico é parte integrante do sistema de cobrança. Sendo assim, ele deixa de fazer parte do ambiente externo e não aparece mais no diagrama de contexto como entidade externa.
Como podemos ver, a inclusão ou não de uma entidade externa e os fluxos de dados correspondentes podem aumentar ou diminuir a abrangência de um sistema. Neste exemplo, o que está em discussão é se o Departamento Jurídico e as funções por ele executadas fazem parte ou não do sistema. Analista e cliente devem chegar a um consenso a respeito disto e o diagrama de contexto refletirá o resultado da discussão.
Neste módulo vamos aprender a identificar as entidades externas que fazem parte do ambiente externo de um sistema e identificar os fluxos de dados que são originados nestas entidades ou que se destinam a elas.
Desenhar um diagrama de contexto para um sistema.
Uma entidade externa é um elemento do ambiente externo ao sistema que: Gera informações que dão entrada no sistema. Recebe informações que são geradas pelo sistema.
Fluxos de dados são dados em movimento. Podem ser: • • •
Entradas ou estímulos para o sistema. Saídas ou respostas do sistema. As entidades externas são a origem ou destino dos fluxos de dados.
Para desenhar o diagrama de contexto, siga o roteiro descrito abaixo: 1. No meio da página, coloque o símbolo que representa o sistema. 2. Disponha as entidades externas em volta do sistema. 3. Desenhe os fluxos de dados.
Neste módulo, teremos a oportunidade de conhecer um novo conceito de eventos.
Preparar uma lista de eventos.
Eventos são fatos que ocorrem fora do sistema e têm o poder de fazer com que ele reaja e produza respostas. Imagine o sistema como um ser que fique o tempo todo dormindo e só é acordado quando alguma coisa acontece. Existem dois tipos de eventos: • •
Eventos externos Eventos temporais
Eventos externos são fatos que ocorrem fora do sistema e que fazem o sistema reagir. Por exemplo:
•
Cliente paga conta
Um evento externo: • • •
Acontece fora do sistema Gera um estímulo que "acorda" o sistema Provoca uma resposta do sistema.
Eventos temporais não estão relacionados a fatos externos. Estão relacionados à passagem do tempo. Exemplo: •
É hora de emitir extratos.
Outro exemplo de evento temporal: •
É hora de emitir relação de inadimplentes.
Os eventos externos são nomeados com uma frase que indica a ação que está sendo executada fora do sistema. Por exemplo: •
Cliente efetua pagamento
Na maioria dos casos, a frase que dá nome ao evento é formada assim: • • •
O sujeito é a entidade externa O verbo indica a ação executada O objeto é o nome do fluxo de dados
O nome dos eventos temporais sempre começa pela expressão •
É hora de ...
Seguida da ação que o sistema deverá executar: • •
É hora de emitir extratos periódicos É hora de emitir relação de inadimplentes.
A lista de eventos é a relação de eventos externos e temporais:
Vamos aprender a completar a lista de eventos, preenchendo as colunas referentes aos estímulos e às respostas. Com a lista de eventos completa, você terá definido de forma clara e objetiva os limites do sistema.
Conhecer os conceitos de estímulo e resposta e como eles se relacionam com os eventos e elaborar uma lista de eventos, a partir do diagrama de contexto.
Estímulos são os fluxos de dados que entram no sistema. Estes fluxos de dados informam ao sistema que um evento externo ocorreu. No exemplo ao lado, o fluxo de dados Pagamento representa um estímulo recebido pelo sistema. Este estímulo indica ao sistema a ocorrência do evento Cliente efetua pagamento. Este fluxo de dados contém todos os dados relativos ao pagamento efetuado e habilita o sistema a dar a resposta adequada ao evento ocorrido. No caso, a resposta do sistema ao estímulo recebido é a emissão do recibo correspondente.
A lista de eventos é uma tabela de três colunas, conforme ilustrado ao lado:
Os estímulos devem ser colocados na lista de eventos, junto ao evento correspondente. Eventos externos sempre estão ligados a um estímulo. Eventos temporais nunca geram um estímulo.
As respostas são fluxos de dados de saída do sistema. Eles são gerados quando um evento, externo ou temporal, acontece. No exemplo, as respostas são: • • •
Emissão de Recibos Emissão de Extratos Periódicos Emissão de Lista de Inadimplentes
As respostas devem ser colocadas na lista de eventos na coluna correspondente, vinculadas ao evento que dá origem a elas.
Para elaborar a lista de eventos a partir do diagrama de contexto, siga os passos abaixo: Para descobrir os estímulos (fluxos de dados de entrada) fazemos as perguntas: “Que fato ou acontecimento externo gera este estímulo?” e “O que a entidade externa faz que gera este estímulo?”. No exemplo, o estímulo pagamento é o resultado do fato “Cliente efetua pagamento”, que é o evento externo correspondente. Indique as respostas (fluxos de saídas) correspondentes aos eventos já identificados. No exemplo, o fluxo de dados Recibo é a resposta ao evento “Cliente efetua pagamento”. Identifique os eventos temporais que geram as demais respostas que ainda não foram inseridas na tabela. Eventos temporais não estão relacionados a estímulos.
Para ter certeza de que a lista de eventos está completa, submetemos cada evento às seguintes indagações: 1. O que acontece se este evento não ocorrer? 2. Que evento acontece antes deste? 3. Que evento acontece depois deste? As respostas a estas perguntas podem indicar eventos que provocam resposta do sistema e que também devem constar da lista de eventos.
Aprender a avaliar se a lista de eventos está completa e, se necessário, complementá-la, bem como o diagrama de contexto. Este passo é muito importante. Se algum evento for esquecido ou se o diagrama de contexto não estiver completo, os limites do sistema não estarão corretamente estabelecidos. Como resultado, poderá haver desentendimentos entre o analista e o usuário a respeito do que o sistema deve ou não fazer.
Considere a lista de eventos do sistema de cobrança: Considere o seguinte evento: ▪
Cliente efetua pagamento
Faça a seguinte pergunta: ▪
O que acontece se este evento não ocorrer?
A resposta pode ser: ▪
O sistema deve emitir uma carta de cobrança.
Isto dá origem a um novo evento temporal: ▪
É hora de emitir cartas de cobrança.
Outra pergunta: ▪
Que evento acontece antes deste?
Faça esta pergunta em relação ao evento: ▪
Cliente efetua pagamento.
Para que o cliente possa efetuar o pagamento, ele precisa receber antes um boleto de cobrança. Neste caso, precisamos de um evento temporal: ▪
É hora de emitir boletos de cobrança.
Mais uma pergunta: ▪
Que evento acontece depois deste?
Vamos aplicar esta pergunta ao evento: ▪
É hora de emitir cartas de cobrança.
O que acontece depois que as cartas de cobrança forem enviadas, se o cliente não efetuar o pagamento? Enviar o título para protesto? Se este for o caso, temos mais um evento: ▪
É hora de enviar títulos para protesto.
Todos os novos estímulos e respostas identificados precisam ser incluídos no diagrama de contexto. Neste exemplo, descobrimos três novas respostas, que precisam constar do diagrama de contexto.
O modelo funcional define as funções que o sistema vai executar. Aqui, ainda usamos a visão lógica, isto é, damos ênfase ao que o sistema vai fazer, independentemente de como. Por isso, chamamos as funções identificadas de funções essenciais do sistema. O modelo funcional será composto pela lista de funções essenciais e por uma série de diagramas, cada um mostrando como a informação flui entre as funções do sistema e as entidades externas.
Conhecer o modelo funcional e seus componentes. Saber elaborar a lista de funções essenciais e o diagrama de fluxo de dados dessas funções.
O modelo funcional possui dois componentes: • •
Lista de funções essenciais Diagrama de fluxo de dados das funções essenciais
O primeiro componente é a lista de funções essenciais. Ela é construída a partir da lista de eventos que faz parte do modelo de contexto. Uma função essencial é um componente do sistema de informação que fornece uma resposta completa a um evento. Haverá uma função essencial para cada evento da lista de eventos.
O outro componente é o diagrama de fluxo de dados (DFD) das funções essenciais, que é uma representação gráfica da interação das funções essenciais com seu ambiente externo.
Para elaborar o modelo funcional, seguimos o roteiro abaixo: 1. Construir a lista de funções essenciais 2. Construir o DFD das funções essenciais 3. Construir, se necessário, um DFD de decomposição para cada função essencial
Neste módulo você conhecerá com mais detalhes a função essencial, que é o componente mais importante na decomposição de um sistema.
Aprender a identificar corretamente as funções essenciais de um sistema e a elaborar a lista de funções essenciais.
Uma função essencial é um componente do sistema de informação que fornece resposta completa a um estímulo recebido de um evento ocorrido no seu ambiente externo. Isto significa que, quando um evento acontecer e o sistema "acordar", uma série de ações será executada, até que nada mais seja possível ou necessário fazer e, então, o sistema voltará a "dormir". Estas ações executadas constituem uma função essencial.
As funções essenciais não levam em conta as características e imposições do ambiente tecnológico em que serão executadas. Em vez disto, devemos imaginar um ambiente de tecnologia perfeita, de modo a nos abstrair das restrições que nos são impostas por ela e que acabam influenciando a solução. Uma tecnologia perfeita é aquela que nos oferece: •
•
•
Velocidade infinita: significa que não temos de nos preocupar com a capacidade de
processamento de nossos processadores, nem com a velocidade de transmissão de nossas linhas, com o tempo de acesso a discos, nem com a velocidade de impressão. Custo zero: significa que temos a liberdade de pensar em soluções ideais, sem limitações orçamentárias ou financeiras. Capacidade infinita de armazenamento: significa que não temos de limitar nossas soluções por causa do volume de dados a armazenar.
Para identificar as funções essenciais, procedemos da seguinte forma: •
• •
Para cada item constante da lista de eventos devemos fazer a seguinte pergunta: “Quando este evento acontece, o que o sistema deve fazer?”. A resposta a esta pergunta é o nome da função essencial correspondente. O nome de uma função essencial sempre começa com um verbo no infinitivo.
Exemplos: • •
Registrar pagamentos Emitir extrato
A lista de funções essenciais pode ser então preenchida:
Neste módulo você vai conhecer o depósito de dados (componente do modelo funcional) e aprender a identificar os depósitos de dados que são mantidos pelas funções essenciais.
Identificar os depósitos de dados de um sistema.
Depósitos de dados são locais nos quais os dados são armazenados. Estes dados são atualizados e recuperados pelas funções do sistema. Eles representam conjuntos de informações relacionadas que precisam ser armazenadas pelo sistema durante o intervalo entre a ocorrência dos eventos. A ilustração ao lado apresenta o símbolo que usamos para representar um depósito de dados:
Para identificar depósitos de dados, proceda da seguinte maneira: 1. Pergunte: A respeito de que coisas o sistema deverá guardar informações? 2. Para cada função essencial, pergunte: Quando esta função é executada, que dados são armazenados? Quando a função “Processar pagamento” é executada, que dados são armazenados?
3. Para cada função essencial, pergunte: Que dados obtidos e armazenados por outras funções são necessários para esta função executar?
Depósitos de dados e funções essenciais podem ser relacionados em uma tabela, como a que segue:
Neste módulo vamos aprender a elaborar o diagrama de fluxos de dados das funções essenciais. Para isto, vamos tomar como base as listas de funções essenciais e de depósitos de dados que elaboramos nos módulos anteriores.
Elaborar o diagrama de fluxo de dados das funções essenciais.
O diagrama de fluxo de dados mostra como os dados fluem das entidades externas para as funções essenciais do sistema, destas para os depósitos de dados e para as entidades externas.
Para desenhar o diagrama, levamos em conta a lista de eventos e a lista de depósitos de dados. Para elaborar o diagrama, devemos seguir os seguintes passos: 1. Disponha no gráfico as funções essenciais
2. Disponha no gráfico os estímulos e as respostas. Coloque também as entidades externas que aparecem no diagrama de contexto. Se necessário, duplique no gráfico as entidades externas para evitar o cruzamento de linhas.
3. Inclua no diagrama os depósitos de dados. Se necessário, duplicar no gráfico os depósitos de dados para evitar o cruzamento de linhas.
As funções macro são agrupamentos de funções essenciais, apropriadas para a elaboração de modelos funcionais quando o sistema possui um grande número de funções essenciais.
Elaborar modelos funcionais de sistemas que apresentam mais de nove funções essenciais e aprender a usar funções macro para agrupar funções essenciais.
Uma função macro é uma função que representa um agrupamento de funções essenciais. As funções essenciais agrupadas em uma função macro normalmente apresentam as seguintes características: ????????
Exemplo 1
Considere a lista de funções essenciais do sistema das Linhas Ocupadas:
Considere as seguintes funções: • • •
Registrar assinatura de contrato Cancelar contrato Terminar contrato
Estas funções características: • • •
possuem
seguintes
São afins Relacionam-se a um objetivo comum Tratam os mesmos dados
Portanto, podemos agrupar estas funções essenciais numa função mac ro: ▪
as
Controlar contratos
Exemplo 2
Considere a lista de funções essenciais do sistema das Linhas Ocupadas:
Da mesma maneira, podemos reunir numa função macro ‘Cobrar mensalidades’ as funções: • • •
Processar pagamento Emitir cartas de cobrança Desligar linha por não pagamento
As funções macro e as respectivas funções essenciais podem ser identificadas com um número, conforme o exemplo abaixo: 1. Controlar contratos 1.1. Registrar assinatura de contrato 1.2. Cancelar contrato 1.3. Terminar contrato 2. Cobrar mensalidades 2.1. Processar pagamento 2.2. Emitir cartas de cobrança
2.3. Desligar linha por não pagamento Outras funções macro podem ser: 3. Controlar corretores 3.1. Admitir corretor 3.2. Pagar comissão aos corretores 4. Controlar linhas 4.1. Cadastrar linha 4.2. Processar solicitação de linha 4.3. Retirar linha 4.4. Atualizar tabela de preços
Da mesma forma, a relação entre as funções macro e os depósitos de dados é um resumo das relações das funções essenciais que as compõem com esses depósitos.
Quando o número de funções essenciais é maior do que dez, em vez de fazer um DFD com todas as funções essenciais, podemos fazer um DFD com as funções macro.
Agora, podemos desenhar um DFD para cada uma das funções macro. Veja, por exemplo, como fica o DFD da função ‘Controlar contratos’.
Até aqui, nós conhecemos três níveis de diagramas de fluxo de dados: • • •
O diagrama de contexto O diagrama de funções macro O diagrama de funções essenciais de cada função macro
Cada nível mostra uma decomposição do nível anterior. O DFD de decomposição representa um quarto nível de decomposição.
Conhecer o DFD de decomposição, elaborar o diagrama de decomposição das funções essenciais e realimentar os diagramas de níveis superiores.
Veja a sequência de diagramas que elaboramos para o sistema das linhas ocupadas: 1) Diagrama de contexto
2) Diagrama de funções macro
3) Diagrama de funções essenciais das funções macro: •
Função 1:
•
Função 2:
•
Função 3:
•
Função 4:
Vamos considerar a seguinte função essencial: •
4.2. Processar solicitação de linha
O que esta função faz?
Recebe e verifica a validade dos dados da solicitação de linha recebida do locatário. Se os dados recebidos estiverem inválidos, uma mensagem de Solicitação inválida será enviada ao locatário. Se a solicitação de linha for válida, o depósito de dados das linhas é consultado para ver se a linha existe e está disponível. Se não, uma mensagem de Linha não disponível deve ser enviada ao locatário. Se a linha estiver disponível, o contrato pode ser emitido e enviado ao locatário. A linha deve ser marcada como reservada. Um aviso deve ser emitido e enviado ao proprietário, para que ele saiba que um contrato está sendo negociado.
Vamos repetir passo a passo: Passo 1: Recebe e verifica a validade dos dados da
solicitação de linha recebida do locatário. Se os dados recebidos estiverem inválidos, uma mensagem de Solicitação inválida é enviada ao locatário.
Passo 2: Se a solicitação de linha for válida, o depósito de dados
das Linhas é consultado para ver se a linha existe e está disponível. Se não, uma mensagem de Linha não disponível deve ser enviada ao locatário.
Passo 3: Se a linha estiver disponível,
o contrato pode ser emitido e enviado ao locatário.
Passo 4: A linha deve ser marcada
como reservada.
Passo 5: Um aviso deve ser
emitido e enviado ao proprietário, para que ele saiba que um contrato está sendo negociado.
Quando elaboramos o DFD de decomposição, novos fluxos de dados correspondentes a estímulos e respostas podem surgir. Compare o diagrama da função com o diagrama que mostra a sua decomposição: •
4.2. Processar solicitação de linha
Os novos fluxos de dados são os seguintes: • • •
Solicitação inválida; Linha não disponível; Aviso de contrato negociação.
em
Os fluxos de dados novos que aparecem durante a decomposição têm características diferentes: Alguns representam avisos de ocorrência de erros ou de exceções, por exemplo: • •
Solicitação inválida Linha não disponível
Outros são fluxos novos, esquecidos ou não descobertos durante a análise inicial, como por exemplo: •
Aviso de contrato em negociação
Os fluxos de dados que NÃO representam erros ou exceções devem ser representados nos diagramas de níveis superiores. Assim, o fluxo Aviso de contrato em negociação, que não representa um erro ou uma exceção, deve ser incluído nos níveis superiores no diagrama da função macro.
No diagrama de contexto:
Comparados com os demais diagramas, os diagramas de decomposição apresentam características especiais. A tabela abaixo indica estas diferenças:
Neste módulo vamos conhecer uma série de perguntas que devemos fazer em relação aos nossos modelos. Estas perguntas constituem uma lista de verificações. Se os modelos passarem por estas questões, podemos dizer que eles têm a qualidade mínima necessária.
Discutir alguns critérios de qualidade para os modelos de co ntexto e funcional. Mostrar como podemos verificar a qualidade destes modelos.
Para verificar a qualidade de um diagrama de contexto, faça as seguintes perguntas: 1) As entidades externas representam realmente a origem e o destino dos dados recebidos e gerados pelo sistema? Se alguma entidade externa for uma mera repassadora dos dados, substitua-a pela verdadeira origem ou destino destes dados.
2) Existem fluxos de dados entre entidades externas? Caso existam, elimine-os.
1) Os nomes dos fluxos de dados representam claramente o seu conteúdo? Se for o caso, dê novos nomes a eles. 2) Os nomes dos fluxos de dados são substantivos? Verbos são nomes de funções, não de fluxos de dados. 3) Existem fluxos de dados associados a erros e exceções no diagrama de contexto? Diagramas de contexto não devem apresentar fluxos de dados relativos a erros e exceções. Elimine-os.
Para verificar a qualidade da lista de eventos, pergunte: 1) Os nomes dos eventos externos estão no formato correto? Eventos externos indicam fatos ou acontecimentos ocorridos fora do sistema. 2) Os nomes dos eventos temporais começam com a expressão ‘É hora de’ ...? Se não estão, reveja os nomes dados. 3) Os nomes dos estímulos e respostas são substantivos e indicam os dados recebidos ou gerados pelo sistema? Se não, dê novos nomes a eles. 4) Todos os eventos externos possuem um estímulo correspondente? Se não, identifique o estímulo correspondente. 5) Algum evento temporal está vinculado a um estímulo? Eventos temporais não têm estímulo. 6) Todos os estímulos e todas as respostas aparecem no diagrama de contexto como fluxos de dados? Compatibilize a lista de eventos com o diagrama de contexto.
A lista de funções essenciais deve ter sua qualidade verificada de acordo com a seguinte relação de perguntas: 1) As funções essenciais representam a resposta completa que o sistema dá a ocorrência do evento? Dê a cada função um nome adequado, representando o que o sistema faz quanto o evento ocorre. 2) Os nomes das funções essenciais iniciam por um verbo de ação no infinitivo? As funções indicam ações executadas pelo sistema. Se for o caso, renomeie as funções. Lembre-se de que a lista de funções essenciais é baseada na lista de eventos. Portanto, as perguntas relativas à lista de eventos também se aplicam à lista das funções essenciais.
Para verificar a lista de depósitos de dados, pergunte: 1) Cada depósito de dados representa um conjunto de informações que devem ser armazenadas entre a execução de funções essenciais? Procure nomes que representam conjuntos de informações afins. 2) Os nomes dos depósitos são substantivos que indicam a natureza dos dados armazenados? Somente os nomes das funções iniciam por verbos. 3) Os depósitos estão vinculados às funções que armazenam dados neles? Verifique. 4) Os depósitos de dados estão vinculados às funções que fazem uso dos dados neles contidos? Verifique e complete. 5) Cada depósito de dados tem pelo menos uma função que armazena dados nele? Deve existir pelo menos uma função que armazena dados em cada depósito. 6) Cada depósito de dados tem pelo menos uma função que usa os dados nele armazenados? Para que serve um depósito de dados se nenhuma função faz uso dos dados nele contidos?
A lista de funções a seguir pode ser usada para verificar o agrupamento das funções essenciais em funções macro. 1) As funções agrupadas em uma mesma função macro são de fato afins e têm um objetivo comum? Se não, reveja o agrupamento. 2) As funções agrupadas em uma mesma função macro lidam com os mesmos conjuntos de dados? Se for o caso, reveja o agrupamento. 3) Os nomes das funções macro obedecem ao padrão de iniciar por um verbo no infinitivo? Reveja o nome da função. 4) As funções macro contêm no máximo nove funções essenciais? Se necessário, divida em mais funções macro. 5) Todas as funções essenciais estão incluídas no agrupamento realizado? Complete o agrupamento feito.
As perguntas seguintes têm como objetivo verificar a correção do diagrama de funções macro: 1) Todas as funções macro constantes do agrupamento realizado estão representadas no diagrama? Se necessário, acrescente.
2) Todos os estímulos e respostas estão representados no diagrama de funções macro? Se não estão, acrescente. 3) A ligação entre as funções macro se dá exclusivamente através de depósitos de dados? Verifique se não está faltando algum depósito de dados. 4) Os fluxos de dados de entrada e de saída são os mesmos que constam do diagrama de contexto? Compatibilize os dois diagramas. 5) Foram excluídos do diagrama todos os fluxos de dados referentes a erros e exceções? Se existirem fluxos de erros e exceções, exclua-os.
Veja agora as perguntas que você deve usar para verificar a qualidade dos diagramas de funções essenciais: 1) Existe um diagrama para cada função macro? Se não, desenhe os diagramas que faltam. 2) Todas as funções essenciais subordinadas à função macro estão representadas no diagrama? Se necessário, acrescente. 3) Todos os estímulos e respostas das funções essenciais estão representados no diagrama? Se não estão, acrescente. 4) A ligação entre as funções essenciais se dá exclusivamente através de depósitos de dados? Verifique se não está faltando algum depósito de dados. 5) Os fluxos de dados de entrada e de saída são os mesmos que constam do diagrama de funções macro? Compatibilize os diagramas. 6) Foram excluídos do diagrama todos os fluxos de dados referentes a erros e exceções? Se existirem fluxos de erros e exceções, exclua-os.
Finalmente, para verificar os diagramas de decomposição, pergunte: 1) Foram incluídas funções que validam e verificam os dados de entrada, eventualmente gerando respostas que indicam a ocorrência de um erro? Os diagramas de decomposição devem incluir funções de verificação e validação dos dados. 2) Foram incluídas funções para gerar os fluxos de dados relativos a respostas? Inclua estas funções, se necessário. 3) Foram incluídas funções que atualizam os depósitos de dados? Se necessário, acrescente estas funções. 4) Todos os depósitos de dados acessados pela função essencial que está sendo decomposta constam do diagrama de decomposição correspondente?