Skip to content

Reutilização de Software

Versionamento

Data Versão Descrição Autores
30/09/2021 1.0 Criação do Documento Davi Antônio, Kleidson Alves, Lucas Gabriel , Lucas Rodrigues, Wellington Jonathan
08/10/2021 1.1 Adição de Conteúdo ao Documento Kleidson Alves, Lucas Rodrigues
10/10/2021 1.2 Adicionar todas as bibliotecas Davi Antônio da Silva Santos
14/10/2021 1.3 Adicionando novas bibliotecas Gabriel Batalha, Hugo Bezerra, Kleidson Alves, Lucas Gabriel, Lucas Rodrigues, Wellington Jonathan
15/10/2021 1.4 Revisão do Documento Hugo Bezerra, Lucas Rodrigues

Introdução

A reutilização de software consiste no uso de soluções previamente elaboradas para a criação de um novo software. Essa reutilização pode ser aplicada em diferentes níveis do desenvolvimento do software, tais como no nível de requisitos, de design e de código.

Há algumas técnicas que podem ser aplicadas para fazer a reutilização de software. Por exemplo, uso de frameworks, bibliotecas, engenharia de software baseada em componentes e arquitetura orientada a serviços.

A decisão de aplicar essa estratégia de desenvolvimento de software está baseada nos objetivos de se diminuir os custos relacionados à manutenção e de realizar entregas mais rápidas, ainda mantendo a qualidade do produto de software.

Esse documento tem o objetivo de apresentar como a reutilização foi aplicada no processo de desenvolvimento do projeto Donner, apresentando o Framework e as Bibliotecas utilizadas.

Framework

Um framework é uma aplicação parcialmente completa que possui uma coleção de interfaces e classes abstratas e concretas, formando uma estrutura genérica e permitindo reutilização por uma determinada categoria de software. Quando especializado, é capaz de produzir aplicações personalizadas.

Flutter

O framework utilizado para o desenvolvimento da aplicação Donner foi o Flutter. O Flutter é um framework de código aberto, desenvolvido pela Google, que tem como objetivo facilitar o desenvolvimento de aplicações mobile, tanto para Android quanto para IOS. Ele possui como linguagem base o Dart. Ao criar uma aplicação com o Flutter, o código é compilado para a linguagem base do dispositivo, tornando as aplicações realmente nativas.

Hot-spots

Os hot-spots representam aspectos variáveis de um framework projetados para serem genéricos e adaptados de acordo com as necessidades da aplicação. Alguns exemplos de hot-spots são as classes abstratas e os métodos abstratos. No projeto Donner, foram aplicados os seguintes hot-spots:

  • Widgets: Os widgets podem ser entendidos como componentes personalizados utilizados para definir a interface da aplicação.

Frozen-spots

O frozen-spots representam os aspectos imutáveis do framework para todas as aplicações, ou seja, não foram projetados para serem adaptados. Alguns exemplos de frozen-spots são as classes concretas e os métodos template.

  • StatelessWidget: Um widget sem estado interno mutável. Não consegue ser modificado facilmente, e pode ter somente alguns de seus métodos sobrescritos

Bibliotecas

Em uma aplicação desenvolvida com o framework Flutter, o conceito de bibliotecas é entendido como packages, que são códigos modulares que podem ser facilmente compartilhados. No desenvolvimento da aplicação Donner, foram utilizados os seguintes packages:

  • material: Biblioteca de UI básica do Flutter. Desenvolvida pela Google para permitir que os Widgets implementem o Material Design
  • font_awesome_flutter/font_awesome_flutter.dart: Biblioteca que disponibiliza um conjunto de Ícones para o Flutter
  • google_fonts: Biblioteca de UI desenvolvida pela Google que permite o uso das fontes TrueType e OpenType disponíveis em fonts.google.com
  • mask_text_input_formatter: Pacote com funções para formatação de texto de entrada
  • flutter_lints: Pacote responsável por analisar código Dart e encorajar as boas práticas de programação
  • firebase_core: permite que o programa acesse recursos básicos do Firebase usando a API Core
  • firebase_auth: permite o uso da API de autenticação do Firebase (e-mail e senha, contas em provedores externos, número de telefone ou anônimo)
  • firebase_storage: Biblioteca utilizada para acessar a API de armazenamento em nuvem do Firebase
  • cloud_firestore: permite o uso da API Cloud Firestore, que disponibiliza um banco de dados NoSQL hospedado em nuvem
  • google_sign_in: permite o uso da autenticação segura do Google
  • image_picker: Plugin responsável por selecionar imagens da galeria IOS/Android ou tirar fotos com a câmera
  • dropdown_search: widget já montado de um elemento dropdown com funcionalidade de pesquisa
  • estados_municipios: Biblioteca que permite buscar todos os estados do Brasil e os municípios dos estados

Referências

Reúso de Software. Disponível em: https://www.inf.ufpr.br/silvia/ES/reuso/reusoAl.pdf. Data de acesso: 08/10/2021

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. Data de acesso: 08/10/2021

Flutter: Saiba tudo sobre esse novo framework. Disponível em: https://www.opus-software.com.br/flutter-framework/. Data de acesso: 08/10/2021.

O que é Flutter? Disponível em: https://www.treinaweb.com.br/blog/o-que-e-flutter. Data de acesso: 08/10/2021

Flutter: O que são widgets e qual sua importância?. Disponível em: https://www.treinaweb.com.br/blog/flutter-o-que-sao-widgets-e-qual-sua-importancia. Data de acesso: 08/10/2021