Pular para conteúdo

Visão Processos

Introdução

Um padrão arquitetural é um conjunto de princípios de design que direcionam a organização de um sistema, facilitando a manutenção, escalabilidade, e desempenho. Entre os diversos estilos arquiteturais disponíveis, o padrão de processo é mais utilizado para modelar e gerenciar a execução de fluxos de trabalho complexos, garantindo que múltiplas tarefas possam ser processadas de maneira eficiente e escalável. (Garlan e Shaw, 1994)

O padrão de processo é particularmente útil em sistemas que exigem uma gestão precisa de transações, paralelismo e resposta em tempo real. Ele promove a separação de responsabilidades e a modularidade, permitindo que diferentes processos ou threads sejam executados simultaneamente, sem a necessidade de esperar que outras operações sejam concluídas, otimizando o uso dos recursos do sistema.

Metodologia

A visão de Processos foi efetuada pelos integrantes Paulo Victor Fonseca, Arthur Marmo Cathalá, e Renann de Oliveira Gomes do subgrupo Foxtrot. O subgrupo se reuniu em uma chamada de grupo, na plataforma Discord, no dia 15 de agosto, por volta das 11h. Além do Discord, para a criação do diagrama, foi feita a utilização do Lucidchart, e para a escrita do documento, o VSCode com sua extensão Live Share.

O artefato foi feito adaptando o Diagrama de Sequencia e o Diagrama de Atividade colocando foco nas comunicações entre processos e os principais modos de interação, como passagem de mensagens e interrupções (threads). Para isso, é importante Focar nos processos do sistema, mapeando-os em threads ou processos concorrentes para otimização, identificando nesses diagramas tarefas que são independentes e podem ser paralelizadas para melhorar o desempenho, e por fim adaptando os diagramas para que cada tarefa ou processo seja mapeado para uma thread.

Diagrama de Sequência

Para cada um dos diagramas de sequência a seguir, foram adicionados threads em tarefas que são independentes e podem ser paralelizadas, de tal forma que todos os processos e threads foram numerados para se ter uma noção da linearidade.


alt text

Nesse primeiro diagrama foi-se criado o processo principal do cadastro desde a função enviarSenhaEmail() até finalizar o processo de cadastro e a conta sendo finalizada com sucesso, e as threads criadas foram uma para criar conexão (CreateConnection()) para não bloquear a interface do usuário, e outra que enquanto está conectando já irá iniciar o salvamento das informações cadastradas pelo usuario, e por fim outra thread para salvar os dados pessoais. vale destacar que há um pequeno delay para uma thread não depender de outra em caso por exemplo como o da conexão


alt text

Nesse segundo diagrama foi-se criado dois processos principais do login: Um para realizar o login do usuario, e um para recuperar as credenciais do usuario caso ele esqueça alguma informação importante, no primeiro processo há uma thread de criar conexão (CreateConnection()) para não bloquear a interface do usuário e uma de verificar login, enquanto que no segundo processo há um de verificar dados. vale destacar que há um pequeno delay para uma thread não depender de outra em caso por exemplo como o da conexão


alt text

Nesse ultimo diagrama foi-se criado três processos principais para a retrovenda. Um para iniciar o processo de pesquisa com a para criar conexão (CreateConnection()) para não bloquear a interface do usuário, e enquanto isso há dois processos que podem ocorrer também, um para pesquisar por código, e outro para pesquisar por região. Em ambos os casos há uma thread para a parte de pesquisa, outro para salvar dados, e outra pra solicitar a declaração do imóvel

Diagrama de Atividades

No diagrama de Atividades foram adicionadas threads as atividades que dependem que outra atividada seja concluída, a thread principal está representada como thread 1


alt text

No diagrama de Login é possível ver os processos que são iniciados, de acordo com cada tomada de decisão do fluxo.


alt text
4

Uma coisa parecida ao diagrama de Login acontece, contudo, podemos ver que alguma threads podem ficar em "espera" até que threads secundárias sejam concluídas, para que o sistema possa então possuir as informações necessárias para seguir com o andamento da thread principal (sendo representada aqui como thread 1).


alt text

Nessas outra atividade é importante obseervar que mesmo que ela possua uma tomada de decisão, ela pode ser executada inteiramente em apenas 1 única thread, pois qualquer uma das duas opções escolhidas podem levar a conclusão da tarefa, sendo assim desncessário a execução de uma segunda thread.

Bibliografia

SERRANO. MILENE, AULA - ARQUITETURAS & DA - PARTE II, 2024. Diponível em: https://aprender3.unb.br/pluginfile.php/2790287/mod_label/intro/Arquitetura%20e%20Desenho%20de%20Software%20-%20Aula%20Arquitetura%20e%20DAS%20-%20Parte%20II%20-%20Profa.%20Milene.pdf

Garlan, D., & Shaw, M. (1994). An Introduction to Software Architecture. Pittsburgh: School of Computer Science, Carnegie Mellon University.

Histórico de Versão

Versão Data Descrição Autor(es) Revisor(es)
1.0 15/08/2024 Criação do documento Foxtrot Whiskey
1.1 15/08/2024 Correção das imagens Yankee Papa
1.2 15/08/2024 Correção do Padrão João Lucas Foxtrot