eletrotupi / tcc/ monografia/chapters/app.texab21e9f9149ab92d732e9b48d9886be5c089080f
19.4 KB | 448 lines Raw
1
\chapter{Nexo}
2

3
O aplicativo proposto por esse trabalho, denominado ``Nexo'', se propõe a ser uma
4
aplicação para dispositivos móveis, de forma a preencher essas lacunas
5
demonstradas tanto pelo questionário, quanto também tentando preencher as
6
questões analisadas em outros sistemas similares. Como mencionado
7
anteriormente, o sistema é direcionado para pessoas com TAB, embora, ele também
8
possa atuar isoladamente como um aplicativo de registro de humor, e portanto, o
9
nome reflete essa escolha. A lógica é, de um aplicativo que consegue conectar
10
diversos pontos, que em um primeiro momento parecem soltos: sono, rotina,
11
práticas, humor, gatilhos.
12

13
A partir das demandas identificadas na pesquisa e dos princípios estabelecidos
14
para este projeto, delineia-se um sistema de monitoramento de humor centrado no
15
usuário, com ênfase em personalização, privacidade e utilidade reflexiva. O
16
funcionamento do sistema parte da premissa de que o humor não é uma variável
17
universal, mas sim composto por elementos subjetivos que variam entre
18
indivíduos. Assim, fundamentalmente para cada entrada no diário, o usuário pode
19
indicar que componentes de humor ele percebe em vigência naquele momento, como
20
``raiva'', ``tristeza'', ``felicidade'', etc., elementos que ele considera mais
21
representativos de seu estado emocional, permitindo um mapeamento mais fiel da
22
sua experiência.
23

24
O monitoramento, pode ser gerado em diversos momentos do dia, o que torna o
25
aplicativo mais flexível, ao invés de uma única entrada no dia. O usuário pode
26
também anotar para cada momento, algo relevante, através de escrita livre, e
27
usar uma escala que possa indicar o que ele percebe como indicadores dos níveis
28
de energia, estresse e ansiedade. Associado a isso, o sistema permitirá a
29
entrada de gatilhos e eventos significativos, sejam positivos ou negativos, que
30
poderão ser posteriormente correlacionados com os estados de humor, permitindo
31
identificar padrões ou ciclos. Esses dados podem ser correlacionados/vinculados
32
com ``práticas'' ou ``intervenções'', como fármacos, psicoterapia, atividades
33
físicas.
34

35
Outro ponto essencial é a exportação de dados em formatos acessíveis, como o
36
formato CSV \cite{Shafranovich_2005} \footnote{Formato de arquivo onde cada
37
coluna é separado por um delimitador, por exemplo: vírgulas, ponto-e-vírgula,
38
apresentado no RFC 4180}, garantindo que o usuário tenha controle e mobilidade
39
sobre suas informações, algo frequentemente negligenciado em sistemas fechados.
40
Além disso, a ferramenta é por inteiro \textit{software} livre, garantindo
41
transparência de funcionamento, possibilidade de auditoria e fomento a
42
melhorias comunitárias, especialmente importantes no contexto de tecnologias
43
sensíveis à saúde mental. Essas características formam a base de um sistema
44
comprometido com o bem-estar, o respeito à individualidade e a soberania dos
45
dados pessoais.
46

47
Com base nas funcionalidades listadas, pode-se definir os requisitos funcionais
48
e não funcionais no qual o sistema deve necessitar.
49

50
\section{Classificação dos Requisitos}
51

52
Como observado por \cite[p.~58]{sommerville:2010}, ``Os requisitos de um sistema são
53
as descrições dos serviços que o sistema deve prestar e as restrições à sua
54
operação''. Portanto, requisitos são declarações articuladas descrevendo de
55
forma clara o que o sistema deve ser capaz de fazer para satisfazer as
56
necessidades postas anteriormente. São definidas em duas categorias: requisitos
57
funcionais que descrevem o comportamento e funções do sistema e requisitos não
58
funcionais que descrevem os critérios específicos que podem ser usados para
59
avaliar o bom funcionamento do sistema. A separação entre requisitos funcionais
60
e não funcionais permite uma estrutura clara para priorização, testes e
61
validação do projeto, respeitando tanto os objetivos técnicos quanto éticos da
62
proposta. Logo a seguir, serão abordados com mais detalhes cada um deles.
63

64
\subsection{Requisitos funcionais}
65

66
Os requisitos funcionais dizem respeito às funcionalidades centrais do sistema,
67
ou seja, declarações de tudo o que o sistema deve e está proposto a fazer e
68
reagir. Sommerville reforça esse aspecto:
69

70
\begin{quote}
71

72
  Os requisitos funcionais de um sistema descrevem o que ele deve fazer. Eles
73
  dependem do tipo de software a ser desenvolvido, de quem são seus possíveis
74
  usuários e da abordagem geral adotada pela organização ao escrever os
75
  requisitos. Quando expressos como requisitos de usuário, os requisitos
76
  funcionais são normalmente descritos de forma abstrata, para serem
77
  compreendidos pelos usuários do sistema.
78

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

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

86
\newpage
87

88
% TODO: Add this to the list of tables
89
\begin{longtable}{| p{.20\textwidth} | p{.30\textwidth} | p{.40\textwidth} |}
90
    \caption{Requisitos funcionais}
91
    \label{tab:requisitos_funcionais} \\
92
        \hline
93
        N° & Requisito & Descrição \\
94
        \hline
95
        \endfirsthead
96
        \hline
97
        N° & Requisito & Descrição \\
98
        \hline
99
        \endhead
100
        \endfoot
101

102
        [RF01] &
103
        Login &
104
        O sistema deve ser capaz de realizar login com email e senha \\
105

106
        \hline
107

108
        [RF02] &
109
        Redefinir senha &
110

111
        O sistema permite que o usuário redefina a sua senha, mediante informar
112
        o email usado \\
113

114
        \hline
115

116
        [RF03] &
117
        Cadastro &
118
        O sistema deve permitir que o usuário crie uma conta \\
119

120
        \hline
121

122
        [RF04] &
123
        Desconectar &
124
        O sistema permite que o usuário faça logout do sistema \\
125

126
        \hline
127

128
        [RF05] &
129
        Manter humor &
130
        O usuário deve poder registrar e atualizar seu estado emocional
131
        conforme a necessidade \\
132

133
        \hline
134

135
        [RF06] &
136
        Registrar gatilho &
137
        O sistema deve permitir associar sentimentos ou eventos específicos que
138
        influenciam o humor \\
139

140
        \hline
141

142
        [RF07] &
143
        Visualizar histórico &
144
        O usuário deve ter acesso aos registros anteriores de humor e demais
145
        tipos de dados como Gatilho, Sono, etc. \\
146

147
        \hline
148

149
        [RF08] &
150
        Visualizar detalhes do dia &
151
        O sistema deve permitir expandir e consultar dados específicos de um
152
        determinado dia \\
153

154
        \hline
155

156
        [RF09] &
157
        Visualizar registros de humor recente &
158
        O usuário deve poder visualizar os ultimos registros de humor como
159
        forma de ler \\
160

161
        \hline
162

163
        [RF10] &
164
        Manter registro de sono &
165
        O sistema deve permitir que o usuário possa cadastrar registros de sono \\
166

167
        \hline
168

169
        [RF11] &
170
        Manter ações de cuidado &
171
        O usuário deve poder cadastrar ações de cuidado (atividade, medicamentos, consultas) \\
172

173
        \hline
174

175
        [RF12] &
176
        Exportar dados &
177
        O sistema deve oferecer uma funcionalidade para exportar os dados
178
        registrados \\
179

180
        \hline
181

182
        [RF13] &
183
        Registrar que um medicamento foi tomado &
184
        O usuário pode marcar que um determinado medicamento foi tomado
185
        mediante que foi cadastrado \\
186

187
        \hline
188

189
        [RF14] &
190
        Associar humor à um gatilho &
191
        O sistema deve permitir que o usuário vincule um humor específico com
192
        um gatilho \\
193

194
        \hline
195

196
        [RF15] &
197
        Associar consulta com um humor ou gatilho &
198
        O sistema deve permitir vincular uma consulta específica a um
199
        gatilho ou humor registrado \\
200

201
        \hline
202

203
        [RF16] &
204
        Gerar um relatório com os últimos dados &
205
        O usuário deve selecionar um período e gerar/exportar um relatório com
206
        os últimos dados  \\
207

208
        \hline
209
        \multicolumn{3}{c}{\small Fonte: Elaborado pelo autor (2026)} \\
210
\end{longtable}
211

212
\subsection{Requirementos não funcionais}
213

214
De acordo com \cite[p.~89]{sommerville:2010}: ``Requisitos não funcionais são
215
restrições sobre os serviços ou funções oferecidas pelo sistema''. Ou seja,
216
definem os critérios de qualidade que o sistema deve seguir, abrangendo
217
aspectos como segurança, usabilidade, desempenho e manutenção. Neste projeto,
218
destacam-se especialmente a preservação da privacidade do usuário, a
219
transparência proporcionada pelo código aberto e a possibilidade de utilização
220
offline, o que garante acessibilidade mesmo em contextos de conectividade
221
limitada.
222

223
\begin{longtable}{| p{.20\textwidth} | p{.30\textwidth} | p{.40\textwidth} |}
224
    \caption{Requisitos não funcionais}
225
    \label{tab:requisitos_nao_funcionais} \\
226
        \hline
227
        N° & Requisito & Descrição \\
228
        \hline
229
        \endfirsthead
230
        \hline
231
        N° & Requisito & Descrição \\
232
        \hline
233
        \endhead
234
        \endfoot
235

236
        [RNF01] &
237
        Usabilidade &
238

239
        O sistema deve possuir uma interface intuitiva e acessível para
240
        usuários leigos em tecnologia, com navegação fluída e confirmações
241
        visuais após cada interação importante \\
242

243
        \hline
244

245
        [RNF02] &
246
        Desempenho &
247

248
        O tempo de resposta entre a entrada do usuário e a resposta do sistema
249
        deve ser inferior a 1 segundo; O carregamento do histórico semanal e
250
        visualizações de ciclos anteriores deve ocorrer em no máximo 2
251
        segundos. \\
252

253
        \hline
254

255
        [RNF03] &
256
        Segurança &
257

258
        Os dados do usuário devem ser armazenados de forma criptografada; O
259
        sistema deve exigir autenticação segura para acesso; A exportação de
260
        dados deve sempre exigir a confirmação do usuário \\
261
        \hline
262

263
        [RNF04] &
264
        Confiabilidade &
265

266
        O sistema deve garantir a persistência dos dados, mesmo em casos de
267
        falha de energia ou conexão; Os dados registrados devem ser armazenados
268
        automáticamente e sincronizados quando ouvir conexão \\
269

270
        \hline
271

272
        [RNF05] &
273
        Portabilidade &
274

275
        Todos os dados do usuário podem ser exportados a qualquer momento, em
276
        um formato de texto que permita que ele possa ler e interpretar,
277
        mediante compreensão mínima da linguagem/formato utilizado \\
278

279
        \hline
280

281
        [RNF06] &
282
        Privacidade &
283

284
        Nenhuma informação sensível do usuário deve ser compartilhada com
285
        terceiros e o sistema deve fornecer uma política de privacidade clara e
286
        acessível; Quaisquer alterações à mesma demanda que o usuário seja
287
        notificado \\
288

289
        \hline
290
        \multicolumn{3}{c}{\small Fonte: Elaborado pelo autor (2026)} \\
291
\end{longtable}
292

293
Com essas definições em mãos, pode-se avançar para a etapa de modelagem do
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.