# Reutilização
# Histórico de Versão
Data | Autor(es) | Descrição | Versão |
---|---|---|---|
19/11/2020 | Caio César Beleza(Caiocbeleza) | Adicionando Introdução de reutilização de software | 0.1 |
19/11/2020 | Joao Pedro(jppgomes) | Adicionando exemplo de reutilização | 0.2 |
19/11/2020 | Caio César Beleza(Caiocbeleza) | Começando o tópico de reutilização a nivel de arquitetura | 0.3 |
20/11/2020 | Lucas Midlhey(lucasmidlhey) | Reutilização do builder por tópicos | 0.4 |
20/11/2020 | Cauê(caue96) | Adicionado imagem do código style.css | 0.5 |
# Introdução
A reutilização de software é baseada na utilização de conceitos, produtos ou soluções previamente elaboradas para a criação de um novo software. Podem ser reutilizadas de um sistema já desenvolvido partes como: especificações, arquitetura e código fonte. A reutilização ajuda a reduzir o tempo de desenvolvimento de um novo software, já que diminui a quantidade de código necessária a ser produzida e, consequentemente os custos. Por isso, no cenário atual de desenvolvimento ágil de software é um conceito interessante.
Portanto, os tópicos a seguir descrevem as partes reutilizáveis do projeto QRodízio, que foram feitas com o objetivo de facilitar tanto a manutenção do sistema, quanto o potencial de evolução dele.
# Arquitetura
Como a arquitetura de um sistema é descrita em termos de identificação de seus componentes e de como esses componentes estão conectados, ela é uma ponto de partida interessante para a reutilização, apesar de ser mais voltada para o reuso de design do que de código.
No projeto foi empregada uma arquitetura adaptada do MVC, chamada MVT, e foi divido em Back-end e Front-end. Com tecnologias separadas e independentes, uma possível reutilização de seus componentes fica bastante simples e eficiente. Pelo fato da API ser independente, ela poder ser consumida facilmente por outros templates, o que aumenta sua portabilidade e possibilita a conexão com vários dispositivos(mobile, outros front-end web, etc.).
# Código
Style.css : O arquivo que contém os estilos utilizados no projeto. É um bom exemplo de reutilização, pois cada estilo definido pode ser acessado e aplicado em vários elementos do sistema, o que diminui repetições e facilita a mudança de estilo dos elementos, já que podem ser mudados vários elementos de uma vez, ao invés de ter que mudar de um por um.
builders.py : Este exemplo onde é utilizado o padrão builder ilustra como você pode reutilizar o mesmo código de construção de objeto. Nela temos vários construtores que fazem as models em especialmente útil qando precisa criar um objeto com muitas opções possíveis de configuração.
- customer_tables_builder: cria diferentes representações para sessions neste caso dentro da Costumer_table e de sessions.
_find_item_or_create_one: Simplesmete procura um item se nao encontrar ela cria. Foi feita para nao haver redundâncias nos items de cardápio.
demand_builder: Podemos ver que define seus atributos, algum por padrão, e retorna e forma de demand, utilizada tanto para clientes quanto para empregados.
table_session_builder: busca uma sessão na tabela de sessões e define a partir de uma chave que é feita através do QRcode.
menus_builder: Neste builder ele instancia a classe Menu definindo os atributos de item.
employee_builder: Neste Builder instancia a classe de empregados defindo seus atributos e um padrão de hash para a senha
# Referências
DEVMEDIA. Reutilização de Software - Revista Engenharia de Software Magazine 39. Disponível em: https://www.devmedia.com.br/reutilizacao-de-software-revista-engenharia-de-software-magazine-39/21956. Acesso em: 19 de novembro. 2020.
- SANCHES, Mauricio Gruhn et al. Um estudo sobre os riscos inerentes a implantação do reuso de componentes no processo de desenvolvimento de software. 2005.