-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
624 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
Oops, something went wrong.