Skip to content

Rastro do Processo de Construção da Arquitetura

Histórico de Revisão

Autor Mudanças Data Versão
Saleh Kader Tópicos: 1.0, 2.0, 3.0, 4.0 19/03/2021 0.1

1. Introdução

O presente documento, tem por finalidade apresentar todo o conteúdo e referências coletadas para a construção da Arquitetura do Projeto Eccoar. Esse documento não é a mesma coisa que o documento de arquitetura, sendo apenas responsável por rastrear o processo anterior a construção da Arquitetura do Projeto Eccoar.

2. Pré-Construção e Critérios

Para a definição arquitetural do projeto foram levadas em consideração 3 principais stakeholders:

  • Professor e Interessados da Disciplina de MDS/EPS.
  • Desenvolvedores do Projeto Eccoar;
  • Possíveis Clientes/Usuários do Projeto Eccoar;

Tendo isso em vista, foram retirados de cada stakeholder critérios de aceitação da arquitetura e a partir delas foram criadas regras para poder atender as necessidades de cada um. Os critérios retirados de cada stakeholder foram:

Stakeholder Critério
Professor e Interessados da Disciplina Utilizar de uma Arquitetura que
permita a independência do desenvolvimento de funcionalidades do projeto.
Desenvolvedores do Projeto Eccoar Ter contato com desenvolvimento de software, aprendendo novas tecnologias e padrões de desenvolvimento.
Possíveis Clientes/Usuário do Projeto Conseguir denunciar os problemas em sua região com o objetivo que elas alcancem as instâncias governamentais.

Com esses critérios levantados, analisamos o Lean Inception de onde retiramos o nosso backlog do produto e listamos as nossas funcionalidades. Isso aconteceu devido a importância da preocupação da arquitetura a nível empresarial aliada a arquitetura técnica, afim de alinhar toda camada técnica com a camada de negócios do projeto.

3. Processo de Levantamento de Referências

Tendo os critérios levantados e backlog levantados, iniciou-se uma processo massivo de levantamento de referências e pesquisas para compreender qual é o melhor padrão arquitetural para a construção do projeto. O melhor estilo não vai ser discutido nesse documento, já que possuímos um documento de arquitetura para discutir esse assunto. O objetivo aqui é apenas apresentar as referências consultadas.

Como dentro da disciplina temos como critérios criar uma arquitetura que possibilite o desenvolvimento de funcionalidades de maneira independente e consequentemente não criando gargalos para a entrega contínua, foi consultado o professor sobre referências na área de modularização de projetos de software. O Professor prontamente compartilhou conosco um paper do autor David Parnas.

O Parnas em seu artigo ele demonstra que as tomadas de decisões para modularização baseadas no design do sistema são muito mais eficazes que as decisões orientadas a um fluxograma. Tendo isso em vista enxergamos que a modelagem dos dados do projeto seriam uma decisão baseada diretamente no nosso design e então partimos para essa construção.

A modelagem de dados nos forneceu a possibilidade de enxergar alguns módulos que consequentemente nos levou a aceitar na arquitetura de microsserviços dentro do Backend. Olhando para o livro Engenharia de Software Moderna do Marcos Tulio Valente, começamos a modelar os nossos microsserviços separando dois bancos de dados principais um para um serviço de Usuários e outro para o serviço de Denúncias. Não ficamos restritos apenas a esses dois serviços e partir de um artigo de Guia de Microsserviços do Martin Fowler utilizamos do nosso backlog para levantar mais alguns serviços dentro do projeto.

No final, observamos a necessidade de alinhar tudo isso a entrega contínua onde enxergamos que o Front estava com características monolíticas. Por isso, no Frontend começamos a pesquisar formas de modularizar a sua arquitetura e a partir dessas pesquisas encontramos um artigo do Pete Hodgson no blog do Martin Fowler, sobre Feature Toggles, que é uma técnica muito poderosa para poder modificar sistemas sem ter a necessidade de modificar o código e oferecendo a possibilidade de realizar Canary Releases e também realizar Testes A/B.

4. Referências

Fowler, M. Software Architecture Guide. MartinFowler. Agosto de 2019. Disponível em: https://martinfowler.com/architecture/. Acesso em: 19 de Março de 2021

Parnas, D. L. On the Criteria To Be Used in Decomposing Systems into Modules. Comm. ACM (Dec., 1972) 1053-1056

Valente, M. Engenharia de Software Moderna. Disponível em: https://engsoftmoderna.info/cap7.html. Acesso em: 19 de Março de 2021

Hodgson, Pete. Feature Toggles. MartinFowler. Outubro de 2017. Disponível em: https://martinfowler.com/articles/feature-toggles.html. Acesso em: 19 de Março de 2021