Análise de software e ferramentas de design

A análise e o design de software incluem todas as atividades que ajudam na transformação da especificação de requisitos em implementação. As especificações de requisitos especificam todas as expectativas funcionais e não funcionais do software. Essas especificações de requisitos vêm na forma de documentos legíveis e compreensíveis, para os quais um computador não tem nada a ver.

A análise e design de software é o estágio intermediário, o que ajuda os requisitos legíveis por humanos a serem transformados em código real.

Vamos ver algumas ferramentas de análise e design usadas por designers de software:

Diagrama de fluxo de dados

O diagrama de fluxo de dados é uma representação gráfica do fluxo de dados em um sistema de informação. É capaz de representar o fluxo de dados de entrada, fluxo de dados de saída e dados armazenados. O DFD não menciona nada sobre como os dados fluem pelo sistema.

Há uma diferença importante entre DFD e fluxograma. O fluxograma descreve o fluxo de controle nos módulos do programa. Os DFDs representam o fluxo de dados no sistema em vários níveis. DFD não contém nenhum controle ou elementos de ramificação.

Tipos de DFD

Os diagramas de fluxo de dados são lógicos ou físicos.

  • Logical DFD - Este tipo de DFD concentra-se no processo do sistema e no fluxo de dados no sistema. Por exemplo, em um sistema de software Banking, como os dados são movidos entre diferentes entidades.
  • Physical DFD- Este tipo de DFD mostra como o fluxo de dados é realmente implementado no sistema. É mais específico e próximo da implementação.

Componentes DFD

DFD pode representar origem, destino, armazenamento e fluxo de dados usando o seguinte conjunto de componentes -

  • Entities- Entidades são fonte e destino dos dados de informação. As entidades são representadas por retângulos com seus respectivos nomes.
  • Process - As atividades e ações executadas nos dados são representadas por retângulos circulares ou arredondados.
  • Data Storage - Existem duas variantes de armazenamento de dados - pode ser representado como um retângulo com ausência de ambos os lados menores ou como um retângulo de lados abertos com apenas um lado faltando.
  • Data Flow- O movimento dos dados é mostrado por setas pontiagudas. A movimentação de dados é mostrada da base da seta como sua origem até a ponta da seta como destino.

Níveis de DFD

  • Level 0- O DFD de nível de abstração mais alto é conhecido como DFD de nível 0, que representa todo o sistema de informações como um diagrama que esconde todos os detalhes subjacentes. Os DFDs de nível 0 também são conhecidos como DFDs de nível de contexto.
  • Level 1- O nível 0 DFD é dividido em mais específico, nível 1 DFD. Nível 1 DFD descreve módulos básicos no sistema e fluxo de dados entre vários módulos. O nível 1 DFD também menciona processos básicos e fontes de informação.
  • Level 2 - Neste nível, o DFD mostra como os dados fluem dentro dos módulos mencionados no Nível 1.

    Os DFDs de nível superior podem ser transformados em DFDs de nível inferior mais específicos com um nível de compreensão mais profundo, a menos que o nível de especificação desejado seja alcançado.

Gráficos de Estrutura

O gráfico de estrutura é um gráfico derivado do Diagrama de fluxo de dados. Ele representa o sistema em mais detalhes do que o DFD. Ele divide o sistema inteiro em módulos funcionais mais baixos, descreve as funções e subfunções de cada módulo do sistema com mais detalhes do que o DFD.

O gráfico de estrutura representa a estrutura hierárquica dos módulos. Em cada camada, uma tarefa específica é executada.

Aqui estão os símbolos usados ​​na construção de gráficos de estrutura -

  • Module- Representa processo ou sub-rotina ou tarefa. Um módulo de controle se ramifica para mais de um submódulo. Módulos de biblioteca são reutilizáveis ​​e invocáveis ​​a partir de qualquer módulo.
  • Condition- É representado por um pequeno diamante na base do módulo. Ele descreve que o módulo de controle pode selecionar qualquer uma das sub-rotinas com base em alguma condição.
  • Jump - Uma seta é mostrada apontando para dentro do módulo para descrever que o controle irá saltar no meio do submódulo.
  • Loop- Uma seta curva representa o loop no módulo. Todos os submódulos cobertos pelo loop repetem a execução do módulo.
  • Data flow - Uma seta direcionada com um círculo vazio no final representa o fluxo de dados.
  • Control flow - Uma seta direcionada com um círculo preenchido no final representa o fluxo de controle.

Diagrama HIPO

O diagrama HIPO (Hierarchical Input Process Output) é uma combinação de dois métodos organizados para analisar o sistema e fornecer os meios de documentação. O modelo HIPO foi desenvolvido pela IBM no ano de 1970.

O diagrama HIPO representa a hierarquia dos módulos no sistema de software. O analista usa o diagrama HIPO para obter uma visão de alto nível das funções do sistema. Ele decompõe funções em subfunções de maneira hierárquica. Ele descreve as funções desempenhadas pelo sistema.

Os diagramas HIPO são bons para fins de documentação. Sua representação gráfica torna mais fácil para designers e gerentes obter uma ideia pictórica da estrutura do sistema.

Em contraste com o diagrama IPO (Input Process Output), que descreve o fluxo de controle e dados em um módulo, o HIPO não fornece nenhuma informação sobre fluxo de dados ou fluxo de controle.

Exemplo

Ambas as partes do diagrama HIPO, apresentação hierárquica e gráfico IPO são usados ​​para o projeto da estrutura do programa de software, bem como a documentação do mesmo.

Inglês Estruturado

A maioria dos programadores não tem conhecimento do panorama geral do software, por isso confia apenas no que seus gerentes lhes dizem para fazer. É responsabilidade do gerenciamento de software superior fornecer informações precisas aos programadores para desenvolver um código preciso, mas rápido.

Outras formas de métodos, que usam gráficos ou diagramas, podem às vezes ser interpretados de maneira diferente por pessoas diferentes.

Conseqüentemente, analistas e designers de software apresentam ferramentas como o inglês estruturado. Nada mais é do que a descrição do que é necessário para codificar e como codificá-lo. O inglês estruturado ajuda o programador a escrever código sem erros.

Outras formas de métodos, que usam gráficos ou diagramas, podem às vezes ser interpretados de maneira diferente por pessoas diferentes. Aqui, o inglês estruturado e o pseudo-código tentam mitigar essa lacuna de compreensão.

O inglês estruturado é o que usa palavras simples em inglês no paradigma de programação estruturada. Não é o código final, mas um tipo de descrição do que é necessário para codificar e como codificá-lo. A seguir estão alguns tokens de programação estruturada.

IF-THEN-ELSE,  
DO-WHILE-UNTIL

Analyst usa a mesma variável e nome de dados, que são armazenados no Dicionário de Dados, tornando muito mais simples escrever e entender o código.

Exemplo

Tomamos o mesmo exemplo de autenticação do cliente no ambiente de compras online. Este procedimento para autenticar o cliente pode ser escrito em inglês estruturado como:

Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
   Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
   PRINT error message
   Call procedure NEW_CUSTOMER_REQUEST()
ENDIF

O código escrito em inglês estruturado é mais parecido com o inglês falado no dia-a-dia. Não pode ser implementado diretamente como um código de software. O inglês estruturado é independente da linguagem de programação.

Pseudo-código

O pseudo código é escrito mais próximo da linguagem de programação. Pode ser considerada uma linguagem de programação aumentada, cheia de comentários e descrições.

O pseudo código evita a declaração de variáveis, mas eles são escritos usando algumas construções reais da linguagem de programação, como C, Fortran, Pascal etc.

O pseudo código contém mais detalhes de programação do que o inglês estruturado. Ele fornece um método para realizar a tarefa, como se um computador estivesse executando o código.

Exemplo

Programa para imprimir Fibonacci até n números.

void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
   if a greater than b 
   {
      Increase b by a;
      Print b;
   } 
   else if b greater than a
   {
      increase a by b;
      print a;
   }
}

Tabelas de Decisão

Uma tabela de decisão representa as condições e as respectivas ações a serem tomadas para abordá-las, em um formato tabular estruturado.

É uma ferramenta poderosa para depurar e prevenir erros. Ele ajuda a agrupar informações semelhantes em uma única tabela e, em seguida, combinando tabelas, proporciona uma tomada de decisão fácil e conveniente.

Criando Tabela de Decisão

Para criar a tabela de decisão, o desenvolvedor deve seguir quatro etapas básicas:

  • Identifique todas as condições possíveis a serem abordadas
  • Determine ações para todas as condições identificadas
  • Crie o máximo de regras possíveis
  • Defina a ação para cada regra

As tabelas de decisão devem ser verificadas pelos usuários finais e podem ser simplificadas recentemente eliminando regras e ações duplicadas.

Exemplo

Tomemos um exemplo simples de problema do dia a dia com nossa conectividade com a Internet. Começamos por identificar todos os problemas que podem surgir ao iniciar a Internet e suas respectivas soluções possíveis.

Listamos todos os problemas possíveis nas condições da coluna e as ações prospectivas na coluna Ações.

Condições / Ações Regras
Condições Programas conectados N N N N Y Y Y Y
Ping está funcionando N N Y Y N N Y Y
Abre o site Y N Y N Y N Y N
Ações Verifique o cabo de rede X
Verifique o roteador de internet X X X X
Reinicie o navegador da web X
Provedor de serviço de contato X X X X X X
Não faça nada
Tabela: Tabela de decisão - Solução de problemas de Internet interna

Modelo Entidade-Relacionamento

O modelo Entidade-Relacionamento é um tipo de modelo de banco de dados baseado na noção de entidades do mundo real e no relacionamento entre elas. Podemos mapear o cenário do mundo real no modelo de banco de dados ER. O Modelo ER cria um conjunto de entidades com seus atributos, um conjunto de restrições e relações entre eles.

O modelo ER é mais bem usado para o projeto conceitual de banco de dados. O Modelo ER pode ser representado da seguinte forma:

  • Entity - Uma entidade no Modelo ER é um ser do mundo real, que possui algumas propriedades chamadas attributes. Cada atributo é definido por seu conjunto de valores correspondente, chamadodomain.

    Por exemplo, considere um banco de dados escolar. Aqui, um aluno é uma entidade. O aluno tem vários atributos como nome, id, idade e classe, etc.

  • Relationship - A associação lógica entre entidades é chamada relationship. Relacionamentos são mapeados com entidades de várias maneiras. As cardinalidades de mapeamento definem o número de associações entre duas entidades.

    Mapeando cardinalidades:

    • um a um
    • um para muitos
    • muitos para um
    • muitos para muitos

Dicionário de dados

O dicionário de dados é a coleção centralizada de informações sobre os dados. Ele armazena o significado e a origem dos dados, sua relação com outros dados, formato dos dados para uso etc. O dicionário de dados tem definições rigorosas de todos os nomes para facilitar o usuário e os designers de software.

O dicionário de dados é freqüentemente referenciado como repositório de metadados (dados sobre dados). Ele é criado junto com o modelo DFD (Diagrama de fluxo de dados) do programa de software e deve ser atualizado sempre que o DFD for alterado ou atualizado.

Requisito de Dicionário de Dados

Os dados são referenciados via dicionário de dados durante o projeto e implementação do software. O dicionário de dados remove qualquer chance de ambigüidade. Ele ajuda a manter o trabalho de programadores e designers sincronizados, enquanto usam a mesma referência de objeto em todo o programa.

O dicionário de dados fornece uma forma de documentação para o sistema de banco de dados completo em um só lugar. A validação do DFD é realizada usando dicionário de dados.

Conteúdo

O dicionário de dados deve conter informações sobre o seguinte

  • Fluxo de dados
  • Estrutura de dados
  • Elementos de Dados
  • Armazenamento de dados
  • Processamento de dados

O fluxo de dados é descrito por meio de DFDs conforme estudado anteriormente e representado na forma algébrica conforme descrito.

= Composto de
{} Repetição
() Opcional
+ E
[/] Ou

Exemplo

Endereço = nº da casa + (rua / área) + cidade + estado

ID do curso = Número do curso + Nome do curso + Nível do curso + Notas do curso

Elementos de Dados

Os elementos de dados consistem em nomes e descrições de dados e itens de controle, armazenamentos de dados internos ou externos, etc. com os seguintes detalhes:

  • Nome Primário
  • Nome Secundário (Alias)
  • Caso de uso (como e onde usar)
  • Descrição do conteúdo (notação etc.)
  • Informações complementares (valores predefinidos, restrições etc.)

Banco de dados

Ele armazena as informações de onde os dados entram no sistema e existem fora do sistema. O armazenamento de dados pode incluir -

  • Files
    • Interno ao software.
    • Externo ao software, mas na mesma máquina.
    • Externo ao software e sistema, localizado em máquina diferente.
  • Tables
    • Convenção de nomes
    • Propriedade de indexação

Processamento de dados

Existem dois tipos de processamento de dados:

  • Logical: Como o usuário vê
  • Physical: Como o software o vê