Documento de Reutilização de Software
Histórico de revisões
Data | Versão | Descrição | Autor |
---|---|---|---|
16/11/2020 | 1.0 | Criação do documento (Template) | Arthur Rodrigues |
20/11/2020 | 1.1 | Adicionando tópico de introdução e objetivos | Arthur Rodrigues |
20/11/2020 | 1.2 | Adicionando reutilização no SwiftUI | João Gabriel Antunes |
20/11/2020 | 1.3 | Adicionando reutilização no React Native (Pickers e Componentes) | Arthur Rodrigues |
20/11/2020 | 1.4 | Adicionando reutilização no Node ( Yup) | Arthur Rodrigues |
20/11/2020 | 1.5 | Adicionando ponto candidato a reutilização | Arthur Rodrigues |
20/11/2020 | 1.6 | Adicionando o que eu concluí | Arthur Rodrigues |
1 Introdução
O desenvolvimento de sistemas de informação é tipicamente conhecido como um processo caro e lento. A pressão que acompanha esse processo, bem como a busca constante por redução significativa de custos e alcance de ganhos incomparáveis em qualidade do produto, associados à redução do tempo de desenvolvimento fazem com que o resultado final e a excelência fiquem aquém do desejado. Uma possível solução, que pode não resolver todos os problemas, mas pode ajudar a lidar com esse processo é a reutilização. [1]
2 Objetivos
A reutilização de software se baseia no uso de conceitos, produtos ou soluções previamente elaboradas ou adquiridas para criação de um novo software, visando melhorar significativamente a qualidade e a produtividade. [1]
3 Reutilização de Código no Pomo
3.1 Projeto em SwiftUI
O projeto em SwiftUI, utilizando o padrão MVVM, reutilizou dois grandes pacotes, os SPM (Swift Package Manager).
O primeiro, o SwiftUICharts, foi utilizado para estilizar os componentes estatísticos, da página Stats (Estatísticas). Porém, nosso time precisou adaptar grande parte do código para atender as necessidades da aplicação em si. A imagem abaixo demonstra a estrutura básica de um SPM, aproveitando esse primeiro exemplo.
O segundo pacote utilizado foi o SwiftyChat, que agiliza a implementação de um chat básico, disponibilizando a capacidade de adaptarmos a UI e a comunicação com o backend conforme o necessário pro nosso projeto. A imagem abaixo demonstra as dependências desse pacote de Swift.
3.2 Projeto em React Native
Um dos motivos por termos escolhido este framework, em javascript, para a realização da versão android foi a grande capacidade que ele tem de reutilização de código. Para o projeto foram utilizadas vários pacotes que já continham vários componentes prontos onde a equipe só os adaptavam para o Pomo. Exemplos:
Pickers
Que foram de grande ajuda, pois implementar do zero iria demandar um bom tempo.
Componentes
Ao rodar a aplicação é possível perceber que as páginas de criar tarefa e editar tarefa são bem parecidas:
E não é por acaso. Utilizamos praticamente o mesmo código para as duas telas, obviamente com algumas adaptações como o título e o botão de deletar, além dos endereços, em que cada tela busca na api, serem diferentes.
3.2 Projeto em NodeJS
Tivemos aumento na produtividade em utilizar este framework, pois com poucas linhas de código foi possível construir uma api rest com o node. Foram utilizadas bibliotecas que nos auxiliaram a fazer a verificação dos dados como, por exemplo:
Yup
no campo nome, na imagem acima, se o usuário enviar algo diferente de uma string, automaticamente o Yup reconhece que não veio o tipo certo e retorna um erro. Isso certamente nos poupou algum trabalho.
Pontos Candidatos à Reutilização
Ponto 1 - Elemento da sessão de foco
Justificativa
Este componente certamente poderia ser utilizado em outros projetos, apesar dele necessitar de algumas melhorias é bastante útil. Eu pessoalmente, Arthur, usaria, por exemplo, como os cartões de um kanban em algum projeto relacionado.
Conclusões
A escolha dessas tecnologias (react-native e node) para a construção do POMO na versão android foi, de certo modo, acertada, pois além de serem frameworks de fácil aprendizado, na opinião de alguns membros do grupo, ganhamos bastante em termos de produtividade. Pudemos reutilizar bastante código produzido por terceiros (os pacotes) e adaptá-los ao nosso projeto.
Referências
- Reutilização de Software - Revista Engenharia de Software Magazine 39. Devmedia, 2011. Disponível em: https://www.devmedia.com.br/reutilizacao-de-software-revista-engenharia-de-software-magazine-39/21956. Acesso em: 20/11/2020.