| 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 ``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.
|