ARQUITETURA DE SOFTWARE
Histórico de versão
Data | Versão | Descrição | Autor(es) |
---|---|---|---|
16.09.2021 | 0.1 | Criação do documento | Bruna Almeida |
Objetivo do documento
As escolhas quanto à arquitetura do software se deram levando em consideração a facilidade de integração entre os componentes. Um exemplo disso é a escolha da linguagem JavaScript, que é a mesma utilizada no Framework Johnny Five, que fará integração entre o robô e o computador central da cozinha.
Arquitetura do Software
A arquitetura MVC permite dividir as funcionalidades do sistema em camadas, o que facilita a resolução de um problema maior. As camadas consistem em:
-
Modelo (Model): Sua responsabilidade é gerenciar e controlar a forma como os dados se comportam por meio das funções, lógica e regras de negócios estabelecidas. É a camada que se comunica com o banco de dados, recebe as informações do Controlador, válida se ela está correta ou não e envia a resposta mais adequada.
-
Visualização (View): Responsável por tudo que o usuário final visualiza, toda a interface e recursos ligados a aparência como mensagens, botões ou telas \cite{padraoMVC2}. Transmite questionamentos ao \textit{controller} e entrega as respostas obtidas ao usuário.
-
Controlador (Controller): Responsável por controlar todo o fluxo de informação que passa pelo sistema. É a camada que executa uma regra de negócio e repassa a informação para a visualização.
Linguagem
De acordo com o site stackoverflow.com, JS foi eleito pelo oitavo ano seguido a linguagem de programação mais usada no mundo. Sua popularidade é uma consequência por ela ser uma linguagem muito flexível e multifacetada.
Uma das vantagens de se utilizar o JS é a existência de um Framework voltado ao controle de robôs, denominado Johnny Five, para integração direta com os controladores utilizados no equipamento, e que é escrito em JavaScript, o que facilita a produção do software.
Front-end e Back-end
A biblioteca React será utilizada para o desenvolvimento da interface do usuário (front-end). Trata-se de de uma biblioteca de código aberto escrita em JavaScript, e será utilizada no desenvolvimento do sistema, em conjunto com o módulo React Native, que possibilita o desenvolvimento de aplicativos para Android e iOS. Essa ferramenta foi definido para o desenvolvimento da interface do sistema por sua flexibilidade - facilidade de integração com outras bibliotecas e Frameworks - e pelo uso de componentes reutilizáveis.
Já para o back-end será utilizado o Node.JS. Node é uma plataforma de aplicação, na qual os programas são escritos em JS e compilados, otimizados e interpretados pela Máquina Virtual V8, que é a mesma usada pelo Google para executar JavaScript no navegador Chrome. O resultado deste processo é entregue como código de máquina server-side, tornando o Node muito mais eficiente na sua execução e consumo de recursos . O Node.JS será utilizado em conjunto com o Framework Express.JS.
A plataforma Node foi escolhida por ser eficiente na implementação de aplicações em tempo real, que precisam transferir mensagens de um lado para o outro de forma rápida. As mensagens no caso do sistema Robô Garçom, serão os pedidos. Além disso, o NodeJS é uma API com NoSQL por trás, o que facilita a integração com o banco de dados MongoDB.
Banco de dados
Para gerenciar e armazenar todas as informações utilizadas pelo robô e o restaurante, o bando de dados MongoDB se mostrou a alternativa mais adequada, já que é escalável horizontalmente, o que permite a ampliação de todo o seus sistema caso seja necessário. Suporta também um alto índice de consultas e envios de dados em JavaScript, pois trata-se de um banco do tipo NoSQL.
Referências
-
WAGON le. O que é padrão MVC? Entenda arquitetura de softwares!. 2020. Disponível em: lewagon.com/pt-BR/blog/o-que-e-padrao-mvc. Acesso em 07 desetembro de 2021.
-
NET, O. D. O que é Model-view-controller (MVC)?. 2011. Disponível em: oficinadanet.com.br/artigo/desenvolvimento/o_que_e_model-view-controller_mvc. Acesso em 07 desetembro de 2021.
-
OVERFLOW, S.Most Popular Technologies: programming, scripting, and markup languages.. 2021. Disponível em: insights.stackoverflow.com/survey/2020#most-popular-technologies. Acesso em 07 de setembro de 2021.
-
ESCUDELARIO, B. de F. Vale a pena aprender NodeJS?. 2018. Disponível em: imasters.com.br/back-end/vale-pena-aprender-nodejs. Acesso em 07 de setembro de 2021.