# 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.

    style.css

  • 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.

      builder de cliente

    • _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. builder de criar item

    • 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. builder de pedido

    • 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. builder de sessão da tabela

    • menus_builder: Neste builder ele instancia a classe Menu definindo os atributos de item. builder de menu

    • employee_builder: Neste Builder instancia a classe de empregados defindo seus atributos e um padrão de hash para a senha builder de empregado

# 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.