---
# System prepended metadata

title: Modelagem de sistemas da Ecomp
tags: [Caso de Uso, Modelagem, DER]

---

---
title: 'Modelagem de sistemas da Ecomp'
disqus: hackmd
---

Modelagem de sistemas da Ecomp
===


Introdução
---

### Por que este guia?
A motivação principal para a realização deste guia foi um problema que ocorreu no Gitworkflow do desenvolvimento mobile. Basicamente, o mobile é desenvolvido de uma forma que vários "componentes" de tela são feitos e podem ser reutilizados em alguma outra issue. Isso acabou implicando que uma issue dependesse de outra, já que os componentes seriam desenvolvidos pela primeira, e isso gerava atrasos e confusão sobre o que fazer nesses casos. 
Uma solução mais imediata foi pensada para resolver esse problema na hora, mas ficou a cargo de qualidade continuar nessa linha de pensamento, e nos foi apontado que aquele problema também poderia acontecer no front-end da Ecomp, onde várias partes também são reutilizadas.
Pensando agora numa solução mais real e depois de algumas reuniões chegou-se a conclusão de que seria importante implantar um princípio de modelagem de banco de dados para que esses problemas pudesses ser previstos logo no começo do projeto e as issues envolvidas pudesse ser manejadas de uma maneira mais eficiente.


### O que este guia contem ?

Ao longo deste guia serão apresentados alguns métodos e diagramas que podem auxliar os desenvolvedores na hora do Project Planning, e também ao decorrer do projeto, para que as issues sejam melhor manejadas e o trabalho fique mais claro.

Modelo/Diagrama de Entidade e Relacionamento
---
Esse modelo tem como função abstrair a forma como os dados são representados e armazenados, e além disso mostrar como esses dados se relacionam. Para representar-lo, utilizamos o Diagrama de Entidades e Relacionamento (DER).
O modelo possui duas representações básicas, como o próprio nome diz: Entidades e Relacionamentos.

### Entidades
Uma entidade representa o objeto tal qual serão armazenados dados. Pode-se pensar, no caso da Ecomp, como uma classe de objetos do PHP. Além disso, a entidade possui características que a descrevam, chamadas de atributos. Por exemplo a entidade Empresa, que conta com os atributos nome, cnpj e endereço:
![](https://i.imgur.com/7D59rZD.png)
> Representação da Entidade "Empresa" na ferramenta brModelo

Existem conceitos ainda como Domínio do atributo, Chave Primária e Entidade Fraca que não serão abordados nesse guia introdutório.

---

### Relacionamentos
Um relacionamento é a conexão/associação entre duas entidadades, ele mostra como as duas estão relacionadas entre si. Por exemplo a relação entre as entidades ônibus e empresa:
![](https://i.imgur.com/Ff5VTbQ.png)

>Representação do relacionamente entre "Empresa" e "Ônibus" na ferramenta brModelo
>
---

### Cardinalidade
A cardinalidade é um ponto importante porque ela limita a quantidade de instâncias de uma entidade a se relacionarem com outra. Existem três representações para elas: 0, 1 ou N (que representa vários, mais de um). Num exemplo prático, observando a relação de Empresas com Ônibus acima, podemos ver as cardinalidades. No exemplo, elas estão representadas pelos números entre parênteses, sendo o da esquerda o número mínimo de instãncias e o da esquerda o número máximo. Nesse caso, lê-se que **1 ônibus** é gerenciado por **no mínimo 1 e no máximo 1 empresa**, equanto **1 empresa** gerencia **no mínimo 1 e no máximo vários ônibus**. Essa relação é chamada de 1 para N, pois uma empresa pode gerenciar vários ônibus.
Ainda existem outros dois tipos, chamados de 1 para 1, e 1 para N.

---

>Existem ainda mais conceitos sobre o modelo que não serão abordados nessa introdução, mas podem sere conferidas nos livros de referência.

### Como este modelo ajudará a Ecomp?

Este modelo pode mostrar principalmente tudo que está relacionado, antes mesmo do projeto começar, então pode facilitar o planejamento de várias issues que tem relação entre si.

Diagrama e Descrição de Caso de Uso
---
O Diagrama de Caso de Uso é parte dos diagramas da [Linguagem de Modelagem Unificada](https://pt.wikipedia.org/wiki/UML/) (UML). Seus principais objetivos são identificar os requisitos do sistema, facilitando sua compreensão, e também mostrar uma noção geral das funcionalidades do sistema para os diferentes usuários do sistema.
Ele é utilizado principalmente no ínicio de projetos, servindo como diagrama base para a estruturação de vários outros.
Este tipo de diagrama possui duas entidades principais: atores e casos de uso. 
>Existem muitos outros conceitos sobre esse diagrama que não serão abordados nesse guia introdutório, podendo ser conferidos nos livros de referência.

### Atores
Os atores representam os usuários que utilizarão o sistema. Por exemplo o funcionário de uma loja. E além disso, podem representar um hardware externo, ou qualquer outro software que interaja com o sistema, como uma impressora, ou alguma api externa, por exemplo. Os atores são representados por "bonecos palito" acompanhado de um nome descritivo abaixo deles.

![](https://i.imgur.com/amaxIVO.png)
> Exemplo de Ator feito no software Astah UML

---

### Casos de Uso
Os casos de uso representam os requisitos do sistema, ou seja, as funcionalidades (issues no caso da Ecomp)  que os atores do sistema terão acesso.
Casos de uso são representados por elipses, contendo um pequeno texto descritivo, conectadas ao ator que os realiza.
![](https://i.imgur.com/lo7U6Xw.png)
> Exemplo de caso de uso feito no software Astah UML

### Descrição de Caso de Uso
A descrição do caso de uso pode ser a parte mais útil para a Ecomp, ele busca descrever as condições anteriores ao caso de uso, condições posteriores, atores envolvidos, fluxos de funcionamento dentro do caso de uso e objetivo. Em linhas gerais, ele detalha o funcionamento de um caso de uso.

![](https://i.imgur.com/3NvGDIN.png)
> Exemplo da descrição do caso de uso "Gerenciar Venda"

---

### Como esse diagrama ajudará a Ecomp?
A principal ajuda desse diagrama será com a descrição dos casos de usos, onde pode-se ver o fluxo de funcionamento de diversas funcionalidades/issues, deste modo podendo planejá-las melhor e também podendo ver quais possuem funcioanamento parecido e os mesmos componentes.

---


Referências
---

Angelotti, Elaini Simoni. Banco de dados. Curitiba: Editora do Livro Técnico, 2010.

Guedes, Gilleanes T. A. UML 2 - Uma abordagem prática. 4a Edição. São Paulo: Novatec, 2018.


###### tags: `Modelagem` `Caso de Uso` `DER`


## Sumário

[TOC]