Skip to content

Commit

Permalink
reorganizar docs projeto
Browse files Browse the repository at this point in the history
  • Loading branch information
GFWagnitz committed Apr 23, 2024
1 parent 4d7352e commit 903ab11
Show file tree
Hide file tree
Showing 15 changed files with 624 additions and 0 deletions.
29 changes: 29 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# latex-templates

LaTeX templates for various kinds of documents used in my work as a professor at the Federal University of Espírito Santo (UFES), Brazil.

The contents of this repository are mostly written in Brazilian Portuguese. Please contact me if you need help because of that.


## Modelos Disponíveis:

*Iniciação Científica (IC):*

* _ic-relatorio-parcial:_ relatório parcial de iniciação científica, nos moldes da Pró-Reitoria de Pesquisa e Pós-Graduação da UFES.

*Graduação (BSc):*

* _bsc-anteprojeto-pg-ccomp:_ anteprojeto de graduação, nos moldes do curso de Ciência da Computação da UFES;
* _bsc-anteprojeto-pg-engcomp:_ anteprojeto de graduação, nos moldes do curso de Engenharia de Computação da UFES;
* _bsc-engsoft-especificacao-projeto:_ documento de especificação de projeto de software, usado em projetos de graduação em Engenharia de Software;
* _bsc-engsoft-especificacao-requisitos:_ documento de especificação de requisitos de software, usado em projetos de graduação em Engenharia de Software;
* _bsc-monografia-pg:_ monografia de projeto de graduação.

*Mestrado (MSc):*

* _msc-dissertacao:_ dissertação de mestrado.

*Doutorado (DSc):*

* _dsc-proposta-projeto-pesquisa:_ proposta de projeto de pesquisa para inscrição em processo seletivo de doutorado, nos moldes do Programa de Pós-Graduação em Informática da UFES;
* _dsc-tese:_ tese de doutorado.
27 changes: 27 additions & 0 deletions docs/Trab1_Overleaf/bibliografia.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
%%
%% Arquivo de referências bibliográficas.
%%
@book{fowler:book02,
title = {{Patterns of Enterprise Application Architecture}},
author = {Fowler, Martin},
edition = {1},
isbn = {9780321127426},
publisher = {Addison-Wesley},
year = {2002}
}

@incollection{souza-celebratingfalbo20,
title = {{The FrameWeb Approach to Web Engineering: Past, Present and Future}},
author = {Souza, V{\'{i}}tor E. S.},
booktitle = {Engineering Ontologies and Ontologies for Engineering},
chapter = {8},
edition = {1},
editor = {Almeida, Jo{\~{a}}o Paulo A. and Guizzardi, Giancarlo},
isbn = {9781393963035},
pages = {100--124},
publisher = {NEMO},
url = {http://purl.org/nemo/celebratingfalbo},
address = {Vit{\'{o}}ria, ES, Brazil},
year = {2020}
}
Binary file added docs/Trab1_Overleaf/brasao.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions docs/Trab1_Overleaf/capitulos/ch1-introducao.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
% ==============================================================================
% Projeto de Sistema - Nome do Aluno
% Capítulo 1 - Introdução
% ==============================================================================
\chapter{Introdução}
\label{sec-intro}
\vspace{-1cm}

Este documento apresenta o projeto (\textit{design}) do sistema \emph{\imprimirtitulo}.
O projeto consiste no desenvolvimento de uma aplicação web para organizadores de eventos acadêmicos. Eventos acadêmicos possuem necessidades particulares que não são normalmente supridas por sistemas de vendas de ingressos, que geralmente tem foco em eventos culturais e shows. Por isso, entendemos como necessário desenvolver uma plataforma voltada especificamente para o público universitário.

Os principais diferenciais do sistema Eventu são o suporte à multiplas atividades paralelas, em que os participantes dispõem de diversas atividades para escolher e o sistema faz a gestão da grade de programação, e a API para controle de presença, em que a participação numa programação pode ser registrada com auxilio da integração à um sistema de catracas.

Este documento está organizado da seguinte forma:
a Seção~\ref{sec-plataforma} apresenta a plataforma de software utilizada na implementação do sistema;
a Seção~\ref{sec-arquitetura} apresenta a arquitetura de software; por fim,
a Seção~\ref{sec-frameweb} apresenta os modelos FrameWeb que descrevem os componentes da arquitetura.

O projeto foi desenvolvido por Thaliys Antunes Daré e Gabriel Ferrari Wagnitz.

81 changes: 81 additions & 0 deletions docs/Trab1_Overleaf/capitulos/ch2-plataforma.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
% ==============================================================================
% Projeto de Sistema - Nome do Aluno
% Capítulo 2 - Plataforma de Desenvolvimento
% ==============================================================================
\chapter{Plataforma de Desenvolvimento}
\label{sec-plataforma}
\vspace{-1cm}
Para o projeto serão utilizadas as tecnologias e bibliotecas recomendadas pelo Spring Framework em seu projeto \textit{Spring Initializr}\footnote{https://start.spring.io/}. O \textit{Spring Initializr} é uma ferramenta do Spring para facilitar a configuração inicial do projeto, facilitando a inclusão de bibliotecas para diversos propósitos.


%=======================================================================================================
% Tabela de Plataforma de Desenvolvimento e Tecnologias Utilizadas
%=======================================================================================================

Na Tabela~\ref{tabela-plataforma} são listadas as tecnologias utilizadas no desenvolvimento da ferramenta, bem como o propósito de sua utilização.

\begin{footnotesize}
\begin{longtable}{|p{1.8cm}|c|p{5cm}|p{6.3cm}|}
\caption{Plataforma de Desenvolvimento e Tecnologias Utilizadas.}
\label{tabela-plataforma}\\\hline

\rowcolor{lightgray}
\textbf{Tecnologia} & \textbf{Versão} & \textbf{Descrição} & \textbf{Propósito} \\\hline
\endfirsthead
\hline
\rowcolor{lightgray}
\textbf{Tecnologia} & \textbf{Versão} & \textbf{Descrição} & \textbf{Propósito} \\\hline
\endhead

Spring Framework & 3.2.4 & Framework de inversão de controle e injeção de dependência. Possui um conjunto de APIs para auxiliar em diversas etapas do desenvolvimento de grandes sistemas web & Redução da complexidade do desenvolvimento, implantação e gerenciamento de aplicações Web a partir de seus componentes de infra-estrutura prontos para o uso. \\ \hline

Java & 21 & Linguagem de programação orientada a objetos e independente de plataforma. & Escrita do código-fonte das classes que compõem o sistema. \\\hline

Spring Data JPA & 3.2.4 & API para persistência de dados por meio de mapeamento objeto/relacional. & Persistência dos objetos de domínio sem necessidade de escrita dos comandos SQL. \\\hline

Thymeleaf & 3.1.2 & Ferramenta para criação de (\textit{templates}) XML/XHTML/HTML5 integrada ao Spring & Reutilização da estrutura visual comum às paginas, facilitando a manutenção do padrão visual do sistema. \\\hline

TailwindCSS & 3.4.3 & Framework de classes CSS processadas em tempo de compilação & Facilitar a estilização de páginas web responsivas \\\hline

MySQL Server & 8.3 & Sistema Gerenciador de Banco de Dados Relacional gratuito. & Armazenamento dos dados manipulados pela ferramenta. \\\hline

Tomcat & 10.1.19 & Servidor de Aplicações Imbutido no Spring Boot. & Fornecimento de implementação das APIs citadas acima e hospedagem da aplicação Web, dando acesso aos usuários via HTTP. \\\hline
\end{longtable}
\end{footnotesize}






%=======================================================================================================
% Tabela de Softwares de Apoio ao Desenvolvimento do Projeto
%=======================================================================================================

Na Tabela~\ref{tabela-software} vemos os softwares que apoiaram o desenvolvimento de documentos e também do código fonte.

\begin{footnotesize}
\begin{longtable}{|p{2.5cm}|c|p{5cm}|p{5.5cm}|}
\caption{Softwares de Apoio ao Desenvolvimento do Projeto}
\label{tabela-software}\\\hline

\rowcolor{lightgray}
\textbf{Tecnologia} & \textbf{Versão} & \textbf{Descrição} & \textbf{Propósito} \\\hline
\endfirsthead
\hline
\rowcolor{lightgray}
\textbf{Tecnologia} & \textbf{Versão} & \textbf{Descrição} & \textbf{Propósito} \\\hline
\endhead

FrameWeb Plugin & 1.0 & Plugin do VisualParadigm para o método FrameWeb. & Criação dos modelos de Entidades, Aplicação, Persistência e Navegação. \\\hline

VisualParadigm & 17.1 & Ferramenta de modelagem UML & Criação de Diagramas de Classe \\\hline

Overleaf & - & Editor Online do \LaTeX & Documentação do projeto arquitetural do sistema. \\\hline

Apache Maven & 3.6 & Ferramenta de gerência/construção de projetos de software. & Obtenção e integração das dependências do projeto. \\\hline

Spring Initializr & - & Ferramenta de geração inicial de projeto Spring. & Automação de configuração \\\hline

\end{longtable}
\end{footnotesize}
23 changes: 23 additions & 0 deletions docs/Trab1_Overleaf/capitulos/ch3-arquitetura.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

\chapter{Arquitetura de Software}
\label{sec-arquitetura}
\vspace{-1cm}

A Figura~\ref{figura-arquitetura} mostra a arquitetura do sistema \emph{\imprimirtitulo}.

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{figuras/Arquitetura.PNG}
\caption{Arquitetura de Software.}
\label{figura-arquitetura}
\end{figure}

O sistema \emph{\imprimirtitulo} adota a arquitetura Model-View-Controller (MVC)\cite{fowler:book02} para prover organização, modularidade e separação de conceitos (do inglês \textit{separation of concerns}, SoC). Além disso, a escolha da arquitetura MVC torna-se prática, dado o grande suporte que o framework Spring provê à esta arquitetura.

O sistema \emph{\imprimirtitulo} implementa cada um dos módulos MVC da seguinte forma:

\textbf{Modelo}: No núcleo do sistema, o Modelo encapsula os dados e regras de negócio, gerenciando o acesso e a manipulação de informações sobre eventos, palestrantes, participantes e inscrições. Nele estão os pacotes do modelo de aplicação (ex: ManageAttractionServiceImpl, AuthenticateUserServiceImpl), classes de dominio (ex: Ticket, User, Attraction) e de persistencia (ex: TicketJPADAO, UserJPADAO)

\textbf{Visão}: Representado pelas visualizações geradas por templates Thymeleaf e Tailwind CSS, a camada de Visão apresenta os dados do Modelo para os usuários, permitindo visualização, interação e manipulação de informações.

\textbf{Controlador}: O Controlador atua como intermediário, recebendo requisições do usuário, fazendo validação dos dados de entrada e direcionando-as para o Modelo e recuperando os dados processados para apresentá-los na Visão. As classes TicketController e UserController fazem parte da camada Controlador.
127 changes: 127 additions & 0 deletions docs/Trab1_Overleaf/capitulos/ch4-frameweb.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@

\chapter{Modelagem FrameWeb}
\label{sec-frameweb}
\vspace{-1cm}

\emph{\imprimirtitulo} é um sistema Web cuja arquitetura utiliza \textit{frameworks} comuns no desenvolvimento para esta plataforma. Desta forma, o sistema pode ser modelado utilizando a abordagem FrameWeb~\cite{souza-celebratingfalbo20}.

A Tabela~\ref{tabela-frameworks} indica os \textit{frameworks} presentes na arquitetura do sistema que se encaixam em cada uma das categorias de \textit{frameworks} que FrameWeb dá suporte. Em seguida, os modelos FrameWeb são apresentados para cada camada da arquitetura.


\begin{footnotesize}
\begin{longtable}{|c|c|}
\caption{\textit{Frameworks} da arquitetura do sistema separados por categoria.}
\label{tabela-frameworks}\\\hline

\rowcolor{lightgray}
\textbf{Categoria de \textit{Framework}} & \textbf{\textit{Framework} Utilizado} \\\hline
\endfirsthead
\hline
\rowcolor{lightgray}
\textbf{Categoria de \textit{Framework}} & \textbf{\textit{Framework} Utilizado} \\\hline
\endhead

Controlador Frontal & Spring Framework \\\hline

Injeção de Dependências & Spring Framework \\\hline

Mapeamento Objeto/Relacional & Spring Data JPA \\\hline

Segurança & Spring Security \\\hline
\end{longtable}
\end{footnotesize}




\section{Camada de Negócio}
\label{sec-frameweb-negocio}

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{figuras/ClassesDeDominio.PNG}
\caption{Modelo de Entidades.}
\label{figura-dominio}
\end{figure}

\textbf{Attraction}: Representa uma atração em um evento, como palestra, workshop ou visita técnica.

\textbf{Speaker}: Representa um palestrante ou outro profissional que participará de uma atração.

\textbf{File}: Representa um arquivo armazenado no sistema, como material de apresentação ou foto.

\textbf{AttractionType}: Representa o tipo de atração, como palestra, workshop ou visita técnica.

\textbf{User}: Representa um usuário do sistema, como participante, organizador ou staff.

\textbf{Ticket}: Representa um ingresso para um evento, com informações como tipo de ingresso, valor e local.

\textbf{TicketGroup}: Representa um grupo de ingressos, permitindo a emissão de vários ingressos de uma vez com um identificador comum.

\textbf{CheckIn}: Classe de relacionamento entre o horario da atração e um usuário, utilizada para registro de presença.

\textbf{CheckIn}: Classe de relacionamento entre o horario da atração e um usuário, utilizada para registro de presença.

\textbf{AttractionUser}: Representa a \textit{Join Table} dos usuarios inscritos numa atividade, na relação muitos para muitos.


\section{Camada de Acesso a Dados}
\label{sec-frameweb-dados}


\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{figuras/ClassesDePersistencia.PNG}
\caption{Modelo de Persistencia.}
\label{figura-persistencia}
\end{figure}

Além da implementação de funcionalidades CRUD (do inglês: Criação, Consulta, Atualização e Destruição), podemos ressaltar na camada de acesso a dados algumas outras operações:

\textbf{TicketJPADAO}: +retireveByTicketCode - Operação responsável por encontrar o ticket no banco de dados durante o processo de validação do ingresso.

\textbf{AttractionJPADAO}: +retireveRegisteredUsers() - Operação responsável por retornar a lista de usuários inscritos em uma dada atração.


\section{Camada de Apresentação}
\label{sec-frameweb-apresentacao}

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{figuras/ModeloNavegacaoUser.PNG}
\caption{Modelo de Navegação - Cadastro de Usuários.}
\label{figura-cadastrouser}
\end{figure}

A camada de apresentação é responsável pelas diversas telas do sistema. na Figura \ref{figura-cadastrouser} vemos o 3 fluxos de navegação envolvendo usuários.

Em \textbf{/admin/users} vemos o processo de gestão dos usuários por administradores.

Em \textbf{/registration} vemos o cadastro de usuários, criação de login e senha, além da validação do ticket que é comprado fora do sistema. O sistema apenas faz validação do código e a associação ao usuário. Após isso, o usuário e apresentado à tela \textbf{chooseAttr.xhtml} em que ele escolhe progressivamente as atrações que vai participar.

Em \textbf{/registration} vemos o cadastro de usuários, criação de login e senha, além da validação do ticket que é comprado fora do sistema. O sistema apenas faz validação do código e a associação ao usuário. Após isso, o usuário e apresentado à tela \textbf{chooseAttr.xhtml} em que ele escolhe progressivamente as atrações que vai participar.

Em \textbf{/login} vemos o fluxo de autenticação do usuário.

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{figuras/ModeloNavegacaoAttr.PNG}
\caption{Modelo de Navegação - Cadastro de Atrações.}
\label{figura-cadastroattr}
\end{figure}


Na Figura \ref{figura-cadastroattr} vemos mais 3 fluxos de navegação, agora envolvendo envolvendo o cadastro de atrações.

O processo se assemelha a um simples CRUD, assim como na gestão de usuários por administradores. O ponto a ressaltar é que as atrações estão relacionadas à entidade palestrante e as instâncias de horário. Instancias de horário foram modeladas dessa forma para acomodar atrações que se estendam por mais de um dia, em locais diferentes. Para isso temos a classe \textit{AttractionTimes}

\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{figuras/ModeloNavegacaoTicket.PNG}
\caption{Modelo de Navegação - Cadastro de Tickets.}
\label{figura-cadastrotickets}
\end{figure}

Na Figura \ref{figura-cadastrotickets} vemos mais 4 fluxos de navegação, desta vez envolvendo envolvendo os ingressos (\textit{Tickets}).

O ponto interessante de se ressaltar é a operação \textbf{+printTicket()} que permite um administrador imprimir um ingresso, facilitando a emissão para venda física.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Loading

0 comments on commit 903ab11

Please sign in to comment.