Isto é um título nível
3.2 MODELAGEM DO SOFTWARE
Neste capítulo, como forma de modelagem do software desenvolvido, apresentar-se-ão diagramas de UML, que se consideraram relevantes para o procedimento do trabalho. Usaram-se os diagramas para modelagem do sistema, com fim de entendimento do problema e direcionamento para a solução. Não se esperava partir do diagrama UML diretamente para um código.
Para compreensão do sistema como um todo, a Figura 21 mostra o comportamento esperado para um usuário comum do software, ou seja, um usuário não administrador. De maneira mais resumida, espera-se que o usuário logue no aplicativo, insira parâmetros para os cálculos e visualize os resultados.
Figura 21 - Visão Geral de Uso do Sistema.
Fonte: do Autor (2019).
Descrever-se-ão, nas próximas seções, outras funcionalidades do software, de maneira não exaustiva, buscando-se, primariamente, a compreensão geral acerca do processo de desenvolvimento e funcionamento do sistema. Nessa etapa, adotou-se um ponto intermediário de detalhamento dos diagramas, tendo em vista a ideia de entendimento do problema e não implementação da solução por terceiros. Por conta disso, processos chave do software apresentam-se com maior nível de detalhamento, ao passo em que outros possuem maior abstração. 3.2.1 Diagramas de Atividades
Desenharam-se os diagramas de atividades para diferentes usos do aplicativo, separando-os entre back-end e front-end.
Entre os diagramas do front-end, descreveram-se a atividade de login, a de cálculo simples, com um conjunto de parâmetros, e a de cálculo multiparamétrico, com vários conjuntos de parâmetros. Entende-
Início Logar no sistema Navegar nos menus Inserir parâmetros de cálculo Pressionar botão de cálculo Aguardar resultados Salvar resultados Visualizar resultados
se um conjunto de parâmetros, como os parâmetros necessários para chegar aos resultados para dada geometria e propriedades do fluido. Múltiplos conjuntos, então, geram múltiplos resultados, podendo-se traçar uma curva de comportamento de um resultado, com base na variação de um parâmetro.
Também, nos diagramas do back-end, descreveram-se os fluxos de atividades para a realização do cálculo e acesso ao banco de dados.
Por conta do tamanho dos diagramas, a fim de melhorar a visualização deles, preferiu-se mostrá-los nas figuras do APÊNDICE A. 3.2.2 Diagrama de Estados
Desenhou-se um diagrama de estados para um usuário comum, considerando-se a utilização para o cálculo do trocador WOT, conforme especificado em 3.1.
Para facilitar a visualização do diagrama, desconsiderou-se alguns estados possíveis não tão usuais e designou-se nomes arbitrários para os botões que geram eventos na interface do aplicativo.
Os estados compreendidos neste diagrama representam os templates das views que são mostradas ao usuário. Desse modo, o que o usuário vê seria, por exemplo, a tela de login, a tela de cadastro, a tela de recuperar senha, e assim por diante, conforme mostrado no APÊNDICE B. Nas telas que possuem diferentes visualizações, que dependem do nível de acesso do usuário (AL), adicionou-se uma barra vertical (“|”), para representar um filtro de seleção de componentes na página.
3.2.3 Diagrama de Caso de Uso
Desenvolveu-se o diagrama de caso de uso para três níveis de usuário do aplicativo: administrador do sistema, especialista e técnico.
O administrador é o usuário capaz de administrar o acesso de usuários, cadastrando-os ou removendo-os no banco de dados; e o texto presente na página de documentação, também salvo no banco de dados.
O especialista é o usuário que pode realizar dimensionamento de trocadores WOT, possuindo acesso a mais parâmetros de inserção, antes do cálculo; e mais campos de visualização, após o cálculo.
Por fim, o técnico é o usuário que também pode realizar dimensionamento de trocadores WOT, porém não possui acesso a parâmetros mais específicos, facilitando o uso em atividades cotidianas.
Os diagramas de caso de uso, considerando os três possíveis níveis supracitados, apresentam-se nas figuras do APÊNDICE C.
3.2.4 Diagrama de Classes
O diagrama de classes do aplicativo apresenta-se no APÊNDICE D. Para sua construção, levou-se, em consideração, as seguintes classes: 3.2.4.1 User
Trata-se de um usuário do aplicativo que, portanto, pode ser tanto de nível especialista, quanto de nível técnico.
Estes usuários são diferenciados pelos seus atributos: e-mail, senha, nível de acesso e token. Os dois primeiros atributos são utilizados para acessar o aplicativo, através da tela de login. Utiliza-se o nível de acesso para classificar o usuário e mostrar a ele as informações adequadas para a sua necessidade.
Ambos os níveis de usuário supracitados possuem acesso às mesmas páginas. Porém, o usuário de nível técnico pode modificar apenas alguns parâmetros de entrada, pelo fato dos outros serem padronizados para a sua aplicação; bem como, não pode visualizar todos os resultados do cálculo, visto que são irrelevantes para sua aplicação e tornariam a ferramenta menos objetiva.
O token é um código aleatório gerado no primeiro acesso, ou primeiro acesso após logout, do usuário em um dispositivo. Ele é utilizado para manter a sessão do usuário ativa nesse dispositivo, a fim de evitar a necessidade de se inserir usuário e senha sempre que o usuário acessar a ferramenta.
Os métodos, que representam as ações executadas por esses usuários, são: solicitar login ou logout para o gerenciador de sessão (3.2.4.3), inscrever-se no aplicativo, ler seus próprios atributos, ler a documentação do aplicativo, ler e modificar o token local (no dispositivo em uso) e provocar eventos através da interface. Os usuários do aplicativo não possuem autorização para alterar os dados previamente cadastrados no momento da inscrição.
3.2.4.2 Admin
A classe Admin é herdada da classe User. Por conta disso, ela compartilha dos mesmos atributos e métodos citados em 3.2.4.1. Porém, além dos métodos da classe pai, ela possui métodos próprios, para possibilitá-la a modificar o nível de acesso de outros usuários, determinando se os novos cadastros agrupar-se-ão na categoria de especialista ou técnico; para permitir que o administrador remova
usuários; e, para permitir que a documentação acessível aos outros usuários seja alterada.
3.2.4.3 Session Manager
Trata-se de um administrador virtual para gerenciar as sessões para os usuários logados. Seus métodos são relacionados às rotinas de criação e encerramento de sessão, quando solicitado pelos usuários da classe User ou pelo administrador, através da geração de um token; e à rotina de verificação da sessão ativa em determinado dispositivo, comparando-se o token armazenado no banco de dados e o token armazenado no dispositivo.
3.2.4.4 Database
Esta classe representa a base de dados do aplicativo, ou seja, as tabelas que armazenam informações. Utilizam-se as tabelas desta base de dados para armazenar os atributos da lista de usuários, citados em 3.2.4.1, e para armazenar o texto editável que é exibido na aba de documentação. O único método disponível para esta classe é o de executar uma query no banco de dados para adicionar, atualizar ou remover informações.
3.2.4.5 Database Connection
Esta classe representa a conexão com a base de dados do aplicativo. Por conta disso, seus atributos são: nome de usuário e senha para acesso à base de dados, nome do servidor utilizado e nome da base de dados, para efetuar a conexão.
Os possíveis procedimentos para essa classe são: iniciar a conexão, encerrar comunicação e verificar o status da conexão.
3.2.4.6 UserInterface
Essa classe representa o template de interface que é comum a todas as views. Por conta disso, seus atributos são do tipo template (em HTML, CSS e JS), sendo eles: o menu de navegação superior, o rodapé (footer) e o conteúdo das páginas.
Os métodos para essa classe relacionam-se à decodificação de eventos gerados pelo usuário, como por exemplo, clicar um botão e
preencher um formulário; e o redirecionamento para outras páginas, na navegação do usuário.
3.2.4.7 Solver
Refere-se à classe que executa os cálculos de dimensionamento de componentes, com base nos parâmetros passados a ela através da interface. Desse modo, cada tipo de componente possui um objeto dessa classe, com os métodos para: decodificar a requisição feita ao servidor, ler os parâmetros de cálculo, realizar os cálculos para o componente em questão e retornar os resultados para a interface.