eletrotupi / tcc/ commit / 2306fe8

thesis: embed modelling aspects into the app chapter

Pedro Lucas Porcellis porcellis@eletrotupi.com · 1 month ago 2306fe8dc77d77c21eb842bebafcd3259c12abe0 Browse files
Parents 8947142
Changed files
4
Additions
+159
Deletions
-156
monografia/chapters/app.tex
1 1
\chapter{Nexo}
2 2

3 3
O aplicativo proposto por esse trabalho, denominado "Nexo", se propõe a ser uma
4 4
aplicação para dispositivos móveis, de forma a preencher essas lacunas
5 5
demonstradas tanto pelo questionário, quanto também tentando preencher as
78 78

79 79
  \cite[p.~59]{sommerville:2010}
80 80
\end{quote}
81 81

82 82
Portanto, diante das funcionalidades previstas, que foram brevemente listadas,
83 -
no Quadro 2 é apresentado os requisitos que o sistema deve fornecer:
83 +
no Quadro~\ref{tab:requisitos_funcionais} é apresentado os requisitos que o
84 +
sistema deve fornecer:
84 85

85 86
\newpage
86 87

87 88
% TODO: Add this to the list of tables
88 89
\begin{longtable}{| p{.20\textwidth} | p{.30\textwidth} | p{.40\textwidth} |}
289 290
        \multicolumn{3}{c}{\small Fonte: Elaborado pelo autor (2026)} \\
290 291
\end{longtable}
291 292

292 293
Com essas definições em mãos, pode-se avançar para a etapa de modelagem do
293 294
sistema, usando os requerimentos apresentados como fundação para o sistema.
295 +

296 +
\section{Modelagem}
297 +

298 +
De acordo com \cite{guedes:2022}, a modelagem de sistemas é uma etapa fundamental do
299 +
processo de desenvolvimento de software, pois permite representar graficamente
300 +
os principais elementos do sistema, seus comportamentos e interações. Essa
301 +
representação facilita a comunicação entre desenvolvedores, usuários e demais
302 +
envolvidos, servindo tanto como guia para implementação quanto como instrumento
303 +
de validação dos requisitos levantados. Através da modelagem, é possível
304 +
antever a estrutura do sistema, simular sua dinâmica e assegurar que ele
305 +
atenderá às necessidades específicas dos usuários.
306 +

307 +
Neste subcapítulo, são apresentados dois tipos principais de diagramas da
308 +
\textit{Unified Modeling Language} (UML) empregados na modelagem do sistema
309 +
proposto: o diagrama de casos de uso, que descreve as funcionalidades esperadas
310 +
a partir da perspectiva do usuário; o diagrama de classes, que estrutura os
311 +
elementos do domínio em termos de atributos e relacionamentos. Esses diagramas
312 +
complementam-se mutuamente, proporcionando uma visão abrangente do
313 +
comportamento e da arquitetura do sistema.
314 +

315 +
\subsection{Casos de Uso}
316 +

317 +
O diagrama de casos de uso é o mais geral, informal e simples de compreender
318 +
\cite{guedes:2022}. A base dele é o levantamento de requisitos e a pesquisa
319 +
realizada, e serve como o pontapé para todo o processo de modelagem.
320 +

321 +
O diagrama de casos de uso, apresenta de forma simples, os atores, que são
322 +
representações das entidades que interagem com o sistema (sejam eles usuários
323 +
finais ou outros sistemas), e os casos de uso, que são as funcionalidades que o
324 +
sistema oferece. Ambos são conectados por linhas de associação. O sistema
325 +
também é delimitado por um retângulo, que contém os casos de uso
326 +
\cite{ibm:2021}.
327 +

328 +
Ao final desse processo, essa modelagem é transformada em documentação, e no
329 +
apêndice B deste documento, contém a mesma, oferecendo uma visão mais detalhada
330 +
para cada caso de uso, seus caminhos alternativos e caminhos de exceções.
331 +
Pode-se verificar que esse acaba por ser o diagrama mais basilar do projeto
332 +
inteiro \cite{guedes:2022}.
333 +

334 +
\begin{figure}[h]
335 +
\centering
336 +
\caption{Diagrama de Casos de Uso}
337 +
\label{fig:use-cases}
338 +
\includegraphics[width=0.9\linewidth]{use-cases.png}
339 +
\source{Elaborado pelo autor (2026)}
340 +
\end{figure}
341 +

342 +
Na Figura~\ref{fig:use-cases}, pode-se observar que apenas um ator interage
343 +
com o sistema, o próprio usuário final. Também visualiza-se que cada elipse,
344 +
se resume a um requisito funcional, e os casos de uso estão interligados por
345 +
setas nomeadas com a palavra \textit{``<<extend>>''} que indica conexões onde a
346 +
execução de um caso de uso adjacente pode ocorrer dado uma determinada
347 +
condição em adição ao caso de uso inicial \cite{ibm:2021}.
348 +

349 +
Permeando todas as interações no sistema, o caso de uso mais central, o
350 +
``Login'', cujo qual estabelece uma base de autenticação, de forma que garante
351 +
que apenas usuários autenticados possam interagir com o sistema.
352 +

353 +
No caso de uso ``Manter Humor'' representa a funcionalidade central do sistema,
354 +
permitindo que o usuário registre seu estado emocional ao longo do tempo. Essa
355 +
ação ocorre por meio da inserção direta de uma informação de humor, cujo qual o
356 +
usuário pode selecionar entre cinco humores ``basais'', além de elementos que
357 +
ajudem a compreender, como escalas indicativas dos respectivos níveis de
358 +
estresse, ansiedade e quais componentes do humor o usuário identifica com mais
359 +
presença. A manutenção do humor no sistema contempla tanto a criação quanto a
360 +
edição e a exclusão desses registros.
361 +

362 +
O caso de uso ``Registrar Intervenção'' contempla o cadastro de estratégias,
363 +
práticas ou sugestões que o usuário utiliza ou deseja utilizar para lidar com
364 +
oscilações emocionais. As ações de cuidados, podem incluir desde ações
365 +
práticas, como caminhar, até técnicas cognitivas ou expressivas, como
366 +
atividades criativas, medicamentos utilizados ou atendimentos com profissionais
367 +
da área. Essa funcionalidade contribui para que o sistema sirva como uma
368 +
central e colabora para construir um registro mais criterioso, visto que o
369 +
usuário reconstrói o que aconteceu naquele determinado ponto no tempo.
370 +

371 +
O caso de uso ``Registrar Gatilho'' visa permitir que o usuário registre
372 +
eventos, sejam eles pensamentos, situações, ou estímulos que tenham
373 +
influenciado significativamente seu estado emocional. O objetivo é construir um
374 +
histórico de causas associadas a variações no humor, de modo a fomentar a
375 +
identificação de padrões recorrentes ou específicos. Essa funcionalidade é
376 +
especialmente útil para usuários em contextos terapêuticos ou de
377 +
autoconhecimento, favorecendo a análise de relações entre circunstâncias
378 +
externas e reações internas.
379 +

380 +
O caso de ``Registro de sono'', permite o usuário, de forma simples, criar no
381 +
sistema um registro da quantidade de horas de sono, e adicionar alguma anotação
382 +
breve. Esse elemento corrobora com a construção de indicadores, tanto da média
383 +
de sono, quanto também de estimular uma correlação entre sono e os níveis de
384 +
energia informado em cada humor.
385 +

386 +
Por fim, o caso de uso ``Vincular humor a um gatilho'' permite ao usuário
387 +
estabelecer vínculos entre os gatilhos identificados e os registros de humor,
388 +
formando um mapeamento de ação e reação, ou causa e reação. Essa associação
389 +
pode servir tanto para consulta futura quanto para, em um futuro, gerar
390 +
indicadores. Ao conectar eventos e suas respostas, a funcionalidade fortalece o
391 +
papel do sistema como uma ferramenta alinhada com o EMA, gerando assim uma
392 +
narrativa emocional diária.
393 +

394 +
\subsection{Diagrama de Classes}
395 +

396 +
O diagrama de classes é um dos principais artefatos da UML, responsável por
397 +
evidenciar a estrutura estática do sistema, seus atributos, operações e
398 +
relacionamentos. Conforme \cite[p. 101]{guedes:2022}: ``O principal enfoque é
399 +
permitir a visualização das classes que o sistema e seus respectivos métodos e
400 +
atributos''. Dessa forma, esse diagrama constitui a base da modelagem
401 +
estrutural que posteriormente será implementada em código.
402 +

403 +
Sobre o diagrama em si, cada classe possui três partes: título, os atributos,
404 +
que representam as características da classe em si, e seus métodos, que são as
405 +
operações que o sistema pode operar nos objetos das classes \cite{guedes:2022}. Na
406 +
Figura~\ref{fig:classes}, pode-se observar os elementos descritos acima:
407 +

408 +
\begin{figure}[h]
409 +
\centering
410 +
\caption{Diagrama de Classes}
411 +
\label{fig:classes}
412 +
\includegraphics[width=0.9\linewidth]{classes-v2.png}
413 +
\source{Elaborado pelo autor (2026)}
414 +
\end{figure}
415 +

416 +
Essa representação apresenta alguns vários elementos importantes. Primeiro, um
417 +
acoplamento entre \textit{Usuário} e as demais classes. Isso é natural, e
418 +
desejado, considerando que é o único ator. Existe também a separação entre as
419 +
entidades como Gatilho, Humor, muito embora exista uma relação de associação
420 +
entre elas, através da classe denominada ``VinculoGatilhoHumor'', visto que ela
421 +
seria representada por uma tabela auxiliar ligando as duas, aliadas do atributo
422 +
de estimativa de impacto.
423 +

424 +
Necessário destacar aqui que a classe ``AcaoCuidado'' é uma classe abstrata,
425 +
representando uma generalização. Essa classe serve como um guarda-chuva para
426 +
representar diversos tipos de ações que o usuário pode realizar. O papel dela
427 +
aqui se torna guardar elementos em comum entre esses tipos de ações, seus
428 +
respectivos vínculos com gatilhos ou humores. A partir dela então, traça-se
429 +
outras sub-classes que contem um melhor contexto sobre a atividade em si, por
430 +
exemplo, na classe ``Consulta'' guarda-se dados como a duração da consulta, que
431 +
tipo de consulta, e potenciais anotações ou comentários em cima da mesma.
432 +
Entretanto, uma classe ``RegistroMedicamento'' não precisa guardar mais do que
433 +
a relação com qual medicamento e quando ele foi de fato tomado.
434 +

435 +
Por fim, existe diversos tipos de enumeradores que delimitam exatamente quais
436 +
tipos de valores podem ser escolhidos. Esses enumeradores servem também como um
437 +
mecanismo de validação, sendo movidos tanto para o próprio banco de dados e
438 +
posteriormente sendo implementados como forma de controle em outros pontos como
439 +
na API.
440 +

441 +
Ressalta-se, contudo, que o diagrama não contempla, padrões arquiteturais
442 +
complementares, como \textit{Service Layer}, \textit{Repository} e \textit{Data
443 +
Access Object (DAO)}, os quais são incorporados na etapa de implementação para
444 +
garantir uma separação adequada de responsabilidades e facilitar a manutenção e
445 +
escalabilidade do código, conforme as propostas de \citet{Fowler_2013} e
446 +
\citet{Gamma:2011}. Esses elementos são importantes, considerando os princípios
447 +
de legibilidade, simplicidade e responsabilidades, muitos organizados por
448 +
\citet{Martin_2012}, asseguram que o código produzido seja limpo e sustentável.
monografia/chapters/modeling.tex → /dev/null
1 -
\chapter{Modelagem}
2 -

3 -
De acordo com \cite{guedes:2022}, a modelagem de sistemas é uma etapa fundamental do
4 -
processo de desenvolvimento de software, pois permite representar graficamente
5 -
os principais elementos do sistema, seus comportamentos e interações. Essa
6 -
representação facilita a comunicação entre desenvolvedores, usuários e demais
7 -
envolvidos, servindo tanto como guia para implementação quanto como instrumento
8 -
de validação dos requisitos levantados. Através da modelagem, é possível
9 -
antever a estrutura do sistema, simular sua dinâmica e assegurar que ele
10 -
atenderá às necessidades específicas dos usuários.
11 -

12 -
Neste capítulo, são apresentados três tipos principais de diagramas da
13 -
\textit{Unified Modeling Language} (UML) empregados na modelagem do sistema
14 -
proposto: o diagrama de casos de uso, que descreve as funcionalidades esperadas
15 -
a partir da perspectiva do usuário; o diagrama de classes, que estrutura os
16 -
elementos do domínio em termos de atributos e relacionamentos; e o diagrama de
17 -
sequência, que detalha a comunicação entre os objetos ao longo do tempo. Esses
18 -
diagramas complementam-se mutuamente, proporcionando uma visão abrangente do
19 -
comportamento e da arquitetura do sistema.
20 -

21 -
\section{Casos de Uso}
22 -

23 -
O diagrama de casos de uso é o mais geral, informal e simples de compreender
24 -
\cite{guedes:2022}. A base dele é o levantamento de requisitos e a pesquisa
25 -
realizada, e serve como o pontapé para todo o processo de modelagem.
26 -

27 -
O diagrama de casos de uso, apresenta de forma simples, os atores, que são
28 -
representações das entidades que interagem com o sistema (sejam eles usuários
29 -
finais ou outros sistemas), e os casos de uso, que são as funcionalidades que o
30 -
sistema oferece. Ambos são conectados por linhas de associação. O sistema
31 -
também é delimitado por um retângulo, que contém os casos de uso
32 -
\cite{ibm:2021}.
33 -

34 -
Ao final desse processo, essa modelagem é transformada em documentação, e no
35 -
apêndice B deste documento, contém a mesma, oferecendo uma visão mais detalhada
36 -
para cada caso de uso, seus caminhos alternativos e caminhos de exceções.
37 -
Pode-se verificar que esse acaba por ser o diagrama mais basilar do projeto
38 -
inteiro \cite{guedes:2022}.
39 -

40 -
\begin{figure}[h]
41 -
\centering
42 -
\caption{Diagrama de Casos de Uso}
43 -
\label{fig:use-cases}
44 -
\includegraphics[width=0.9\linewidth]{casos-de-uso.png}
45 -
\source{Elaborado pelo autor (2026)}
46 -
\end{figure}
47 -

48 -
Na Figura~\ref{fig:use-cases}, pode-se observar que apenas um ator interage
49 -
com o sistema, o próprio usuário final. Também visualiza-se que cada elipse,
50 -
se resume a um requisito funcional, e os casos de uso estão interligados por
51 -
setas nomeadas com a palavra \textit{''<<extend>>''} que indica conexões onde a
52 -
execução de um caso de uso adjacente pode ocorrer dado uma determinada
53 -
condição em adição ao caso de uso inicial \cite{ibm:2021}.
54 -

55 -
Permeando todas as interações no sistema, o caso de uso mais central, o
56 -
''Login'', cujo qual estabelece uma base de autenticação, de forma que garante
57 -
que apenas usuários autenticados possam interagir com o sistema.
58 -

59 -
No caso de uso ''Manter Humor'' representa a funcionalidade central do sistema,
60 -
permitindo que o usuário registre seu estado emocional ao longo do tempo. Essa
61 -
ação ocorre por meio da inserção direta de uma informação de humor, cujo qual o
62 -
usuário pode selecionar entre cinco humores ''basais'', além de elementos que
63 -
ajudem a compreender, como escalas indicativas dos respectivos níveis de
64 -
estresse, ansiedade e quais componentes do humor o usuário identifica com mais
65 -
presença. A manutenção do humor no sistema contempla tanto a criação quanto a
66 -
edição e a exclusão desses registros.
67 -

68 -
O caso de uso ''Registrar Intervenção'' contempla o cadastro de estratégias,
69 -
práticas ou sugestões que o usuário utiliza ou deseja utilizar para lidar com
70 -
oscilações emocionais. As ações de cuidados, podem incluir desde ações
71 -
práticas, como caminhar, até técnicas cognitivas ou expressivas, como
72 -
atividades criativas, medicamentos utilizados ou atendimentos com profissionais
73 -
da área. Essa funcionalidade contribui para que o sistema sirva como uma
74 -
central e colabora para construir um registro mais criterioso, visto que o
75 -
usuário reconstrói o que aconteceu naquele determinado ponto no tempo.
76 -

77 -
O caso de uso ''Registrar Gatilho'' visa permitir que o usuário registre
78 -
eventos, sejam eles pensamentos, situações, ou estímulos que tenham
79 -
influenciado significativamente seu estado emocional. O objetivo é construir um
80 -
histórico de causas associadas a variações no humor, de modo a fomentar a
81 -
identificação de padrões recorrentes ou específicos. Essa funcionalidade é
82 -
especialmente útil para usuários em contextos terapêuticos ou de
83 -
autoconhecimento, favorecendo a análise de relações entre circunstâncias
84 -
externas e reações internas.
85 -

86 -
O caso de ''Registro de sono'', permite o usuário, de forma simples, criar no
87 -
sistema um registro da quantidade de horas de sono, e adicionar alguma anotação
88 -
breve. Esse elemento corrobora com a construção de indicadores, tanto da média
89 -
de sono, quanto também de estimular uma correlação entre sono e os níveis de
90 -
energia informado em cada humor.
91 -

92 -
Por fim, o caso de uso ''Vincular humor a um gatilho'' permite ao usuário
93 -
estabelecer vínculos entre os gatilhos identificados e os registros de humor,
94 -
formando um mapeamento de ação e reação, ou causa e reação. Essa associação
95 -
pode servir tanto para consulta futura quanto para, em um futuro, gerar
96 -
indicadores. Ao conectar eventos e suas respostas, a funcionalidade fortalece o
97 -
papel do sistema como uma ferramenta alinhada com o EMA, gerando assim uma
98 -
narrativa emocional diária.
99 -

100 -
\section{Diagrama de Classes}
101 -

102 -
O diagrama de classes é um dos principais artefatos da UML, responsável por
103 -
evidenciar a estrutura estática do sistema, seus atributos, operações e
104 -
relacionamentos. Conforme \cite[p. 101]{guedes:2022}: ''O principal enfoque é
105 -
permitir a visualização das classes que o sistema e seus respectivos métodos e
106 -
atributos''. Dessa forma, esse diagrama constitui a base da modelagem
107 -
estrutural que posteriormente será implementada em código.
108 -

109 -
Sobre o diagrama em si, cada classe possui três partes: título, os atributos,
110 -
que representam as características da classe em si, e seus métodos, que são as
111 -
operações que o sistema pode operar nos objetos das classes \cite{guedes:2022}. Na
112 -
Figura 2, pode-se observar os elementos descritos acima:
113 -

114 -
\begin{figure}[h]
115 -
\centering
116 -
\caption{Diagrama de Classes}
117 -
\label{fig:classes}
118 -
\includegraphics[width=0.9\linewidth]{diagrama-classes.png}
119 -
\source{Elaborado pelo autor (2026)}
120 -
\end{figure}
121 -

122 -
Essa representação apresenta alguns vários elementos importantes. Primeiro, um
123 -
acoplamento entre \textit{Usuário} e as demais classes. Isso é natural, e
124 -
desejado, considerando que é o único ator. Existe também a separação entre as
125 -
entidades como Gatilho, Humor, muito embora exista uma relação de associação
126 -
entre elas, através da classe denominada ''VinculoGatilhoHumor'', visto que ela
127 -
seria representada por uma tabela auxiliar ligando as duas, aliadas do atributo
128 -
de estimativa de impacto.
129 -

130 -
Necessário destacar aqui que a classe ''AcaoCuidado'' é uma classe abstrata,
131 -
representando uma generalização. Essa classe serve como um guarda-chuva para
132 -
representar diversos tipos de ações que o usuário pode realizar. O papel dela
133 -
aqui se torna guardar elementos em comum entre esses tipos de ações, seus
134 -
respectivos vínculos com gatilhos ou humores. A partir dela então, traça-se
135 -
outras sub-classes que contem um melhor contexto sobre a atividade em si, por
136 -
exemplo, na classe ''Consulta'' guarda-se dados como a duração da consulta, que
137 -
tipo de consulta, e potenciais anotações ou comentários em cima da mesma.
138 -
Entretanto, uma classe ''RegistroMedicamento'' não precisa guardar mais do que
139 -
a relação com qual medicamento e quando ele foi de fato tomado.
140 -

141 -
Por fim, existe diversos tipos de enumeradores que delimitam exatamente quais
142 -
tipos de valores podem ser escolhidos. Esses enumeradores servem também como um
143 -
mecanismo de validação, sendo movidos tanto para o próprio banco de dados e
144 -
posteriormente sendo implementados como forma de controle em outros pontos como
145 -
na API.
146 -

147 -
Ressalta-se, contudo, que o diagrama não contempla, padrões arquiteturais
148 -
complementares, como \textit{Service Layer}, \textit{Repository} e \textit{Data
149 -
Access Object (DAO)}, os quais são incorporados na etapa de implementação para
150 -
garantir uma separação adequada de responsabilidades e facilitar a manutenção e
151 -
escalabilidade do código, conforme as propostas de \citet{Fowler_2013} e
152 -
\citet{Gamma:2011}. Esses elementos são importantes, considerando os princípios
153 -
de legibilidade, simplicidade e responsabilidades, muitos organizados por
154 -
\citet{Martin_2012}, asseguram que o código produzido seja limpo e sustentável.
monografia/chapters/tests.tex
1 1
\chapter{Testes}
2 2

3 +
Nesse capítulo, abordaremos os testes realizados que ajudam a comprovar e
4 +
mapear de forma a garantir consistência e confiabilidade do aplicativo.
5 +

3 6
\lipsum[1-2]
monografia/monografia.tex
1 1
\documentclass[tcc,capa,table]{textsi}
2 2

3 3
%\usepackage[brazilian]{babel} % Linguagem do documento: Português-brasileiro
4 4
\usepackage[utf8]{inputenc} % Codificação do arquivo .tex. IMPORTANTE: O arquivo deve ser salvo utilizando a codificação UTF-8 para mostrar corretamente os caracteres!
5 5
\usepackage[T1]{fontenc} % Permite que se faça cópia do texto do PDF de maneira correta, usando a codificação de fonte T1
193 193
% Chapter é a seção primária do documento. Toda vez que é chamado este comando, uma quebra de página é adicionada;
194 194
\input{chapters/introduction}
195 195
\input{chapters/contextualization}
196 196
\input{chapters/methodologies}
197 197
\input{chapters/app}
198 -
\input{chapters/modeling}
199 198
\input{chapters/design}
200 199
\input{chapters/tech}
201 200
\input{chapters/architecture}
202 201
\input{chapters/tests}
203 202
\input{chapters/future-work}
228 227

229 228
% Adiciona um anexo
230 229
% \annex{Verão}
231 230

232 231
\end{document}