eletrotupi / tcc/ thesis/chapters/app.tex639638a33f393a399e9112ea8bd95a1d9e34d75c
19.6 KB | 455 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 A 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 ``Manter ação de cuidado'' contempla o cadastro e a manutenção de
363
estratégias, práticas ou sugestões que o usuário utiliza ou deseja utilizar
364
para lidar com oscilações emocionais. As ações de cuidado podem incluir desde
365
ações práticas, como caminhar, até técnicas cognitivas ou expressivas, como
366
atividades criativas, medicamentos e tomadas de medicamento, além de
367
atendimentos com profissionais
368
da área. Essa funcionalidade contribui para que o sistema sirva como uma
369
central e colabora para construir um registro mais criterioso, visto que o
370
usuário reconstrói o que aconteceu naquele determinado ponto no tempo.
371

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

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

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

395
O caso de uso ``Visualizar Notificações'' permite ao usuário consultar os
396
lembretes recebidos, como lembretes diários de registro de humor, lembretes de
397
medicamento e alertas de indicadores. Ao tocar em uma notificação, o usuário é
398
direcionado à tela correspondente.
399

400
Por fim, o caso de uso ``Gerar relatório'' permite ao usuário gerar um
401
documento em PDF consolidando os registros de humor do período escolhido, com a
402
distribuição dos humores, os componentes de humor mais frequentes e os níveis
403
de ansiedade, estresse e energia, para compartilhar com um terapeuta ou
404
acompanhar a própria evolução.
405

406
\subsection{Diagrama de Classes}
407

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

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

420
\begin{figure}[h]
421
\centering
422
\caption{Diagrama de Classes}
423
\label{fig:classes}
424
\includegraphics[width=0.9\linewidth]{classes.png}
425
\source{Elaborado pelo autor (2026)}
426
\end{figure}
427

428
Essa representação apresenta alguns vários elementos importantes. Primeiro, um
429
acoplamento entre \textit{Usuário} e as demais classes. Isso é natural, e
430
desejado, considerando que é o único ator. Existe também a separação entre as
431
entidades como Gatilho, Humor, muito embora exista uma relação de associação
432
entre elas, através da classe denominada ``VinculoGatilhoHumor'', visto que ela
433
seria representada por uma tabela auxiliar ligando as duas, aliadas do atributo
434
de impacto percebido.
435

436
Necessário destacar aqui que a classe ``AcaoCuidado'' representa uma
437
generalização. Essa classe serve como um guarda-chuva para representar
438
diversos tipos de ações que o usuário pode realizar. O papel dela aqui se
439
torna guardar elementos em comum entre esses tipos de ações, seus respectivos
440
vínculos com gatilhos ou humores. A partir dela então, traçam-se três
441
subclasses que contêm um melhor contexto
442
sobre a atividade em si: na ``Consulta'' guarda-se dados como a duração e o tipo
443
da consulta, além de potenciais anotações; na ``Atividade'', o tipo e a duração
444
da atividade; e na ``RegistroMedicamento'', a relação com o medicamento e quando
445
ele foi de fato tomado. O medicamento em si é representado pela classe
446
``RegimeMedicamentoso'', que guarda nome, dosagem, periodicidade e horários. Por
447
fim, a classe ``Notificações'' representa os lembretes enviados ao usuário,
448
diários, de medicamento ou de indicadores, vinculando-se a ele e, quando
449
aplicável, a um regime medicamentoso.
450

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