Initial import
This commit is contained in:
BIN
doc/aplicacao/aplicacao.pdf
Normal file
BIN
doc/aplicacao/aplicacao.pdf
Normal file
Binary file not shown.
223
doc/aplicacao/aplicacao.tex
Normal file
223
doc/aplicacao/aplicacao.tex
Normal file
@@ -0,0 +1,223 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[portuguese]{babel}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{textcomp}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{graphicx}
|
||||
|
||||
\setlength{\parskip}{2ex}
|
||||
\def\aspa{\textquotesingle}
|
||||
|
||||
\setlength{\pdfpagewidth}{210truemm}
|
||||
\setlength{\pdfpageheight}{297truemm}
|
||||
\pdfadjustspacing=1
|
||||
|
||||
\topmargin -0.6in
|
||||
\textheight 250truemm
|
||||
|
||||
\title{\vspace{8em} \huge{Wiki UFC} \\ \vspace{0.1em} \small{Projeto da Aplicação}}
|
||||
\author{
|
||||
\vspace{5em} \\
|
||||
\small{Adriano Tavares} \\
|
||||
\small{Álinson Santos} \\
|
||||
\small{André Castro} \\
|
||||
\small{Luís Henrique} \\
|
||||
\small{Rafael Barbosa}
|
||||
}
|
||||
\date{5 de Junho de 2007}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\pagebreak
|
||||
|
||||
\tableofcontents
|
||||
\pagebreak
|
||||
|
||||
% ============
|
||||
% Apresentação
|
||||
% ============
|
||||
\section{Apresentação}
|
||||
|
||||
O Wiki UFC é um sistema online colaborativo onde os alunos podem compartilhar informações sobre as
|
||||
disciplinas que estão cursando. Cada disciplina possui um espaço próprio, contendo um Wiki (para
|
||||
receber notas de aulas), mural de mensagens (para os alunos serem notificados sobre algum evento),
|
||||
calendário (contendo datas de provas, trabalhos, etc) e um repositório de arquivos (contendo provas
|
||||
passadas, listas de exercicios, etc).
|
||||
|
||||
Neste documento, descreveremos os detalhes técnicos do sistema, incluindo informações sobre a
|
||||
arquitetura utilizada, e as classes implementadas.
|
||||
|
||||
% ===========
|
||||
% Arquitetura
|
||||
% ===========
|
||||
\section{Arquitetura}
|
||||
|
||||
O Sistema está sendo desenvolvido sobre Ruby on Rails, um framework web livre escrito na linguagem
|
||||
de programação Ruby. Rails utiliza o padrão arquitetural Model-View-Controller, que, resumidamente,
|
||||
separa os dados armazenados (model) da interface com o usuário (view) utilizando um componente
|
||||
intermediário que implementa as regras de negócio (controller).
|
||||
|
||||
A seguir, iremos apresentar as classes pertencentes ao Model e ao Controller.
|
||||
|
||||
Vale ressaltar que o Rails possui um componente para mapeamento objeto-relacional, conhecido como
|
||||
Active Record. Cada classe do Model possui uma relação no banco de dados, e cada atributo da classe
|
||||
se traduz em um atributo da relação.
|
||||
|
||||
% =====
|
||||
% Model
|
||||
% =====
|
||||
\section{Classes Model}
|
||||
|
||||
\subsection{User}
|
||||
|
||||
Classe que representa cada usuário do sistema. Possui informações tais como login, nome, senha,
|
||||
email, e permissões de acesso.
|
||||
|
||||
\subsection{Course}
|
||||
|
||||
Classe que representa uma disciplina. Contém algumas informações básicas, como nome e descrição.
|
||||
Cada objeto Course possui uma coleção de páginas wiki (WikiPage), arquivos anexos (Attachment),
|
||||
mensagens (Message) e eventos (Event), além da lista de alunos inscritos na disciplina.
|
||||
|
||||
\subsection{Event}
|
||||
|
||||
Classe que modela cada evento, ou atividade, presente no calendário de uma disciplina. As
|
||||
informações disponíveis são título do evento, descrição, e data.
|
||||
|
||||
\subsection{Attachment}
|
||||
|
||||
Classe que modela os arquivos anexos, tais como provas e listas de exercício. Cada Attachment possui
|
||||
nome, tamanho, data de modificação, tipo, e outras informações adicionais.
|
||||
|
||||
No banco de dados, só são armazenados meta-dados sobre os anexos. Os arquivos em sí estão
|
||||
gravados no sistema de arquivos convencional do servidor, e podem ser acessados a partir de um
|
||||
endereço web.
|
||||
|
||||
\subsection{Message}
|
||||
|
||||
Classe que modela as mensagens. Cada mensagem possui título, conteúdo, destinatário, remetente, e um
|
||||
tipo, que pode ser Private, Shoutbox ou Event:
|
||||
|
||||
\begin{description}
|
||||
\item[Private Message] No Wiki UFC, um usuário pode mandar mensagens diretamente para outros
|
||||
usuários. Estas mensagens possuem o tipo Private Message.
|
||||
|
||||
\item[Shoutbox Message] Praticamente toda página do Wiki UFC possui um Shoutbox, para permitir
|
||||
que os usuários possam conversar em tempo real através do site. Cada mensagem enviada a algum
|
||||
Shoutbox possui o tipo Shoubox Message. O destinatário é o id da disciplina.
|
||||
|
||||
\item[Event Message] Além do calendário, outra forma de comunicação do Wiki UFC é o mural de
|
||||
mensagens, onde os alunos podem enviar pequenos comunicados para a página da disciplina,
|
||||
informando eventos como aulas extra, ou ausência do professor, por exemplo. Estas mensagens
|
||||
possuem o tipo Event Message. O destinatário é o id da disciplina.
|
||||
\end{description}
|
||||
|
||||
\subsection{WikiPage e WikiVersion}
|
||||
|
||||
Classes que modelam as páginas wiki. Cada página é representada por um objeto WikiVersion, e cada
|
||||
versão de uma página, por um WikiVersion. Sempre que um usuário faz alguma modificação no conteúdo
|
||||
de um wiki, um novo WikiVersion é criado e anexado ao WikiPage correspondente. Os WikiVersions
|
||||
antigos sempre estão disponíveis para consulta, se o usuário desejar.
|
||||
|
||||
Os objetos WikiVersion, além de possuírem informações como data de criação e conteúdo, também
|
||||
possuem métodos para converter a sintaxe do wiki em HTML.
|
||||
|
||||
\subsection{Diagrama de Model}
|
||||
|
||||
\includegraphics[width=150truemm]{classes-model.pdf}
|
||||
|
||||
|
||||
\pagebreak
|
||||
|
||||
% ==========
|
||||
% Controller
|
||||
% ==========
|
||||
\section{Classes Controller}
|
||||
|
||||
Cada controller, no Ruby on Rails, implementa um conjunto de ações. Por padrão, essas ações são:
|
||||
|
||||
\begin{description}
|
||||
\item[index] Indica a página principal do Controller
|
||||
\item[list] Exibe todos os elementos cadastrados
|
||||
\item[show] Mostra os detalhes de um dos elementos
|
||||
\item[new] Mostra o formulário para a criação de um novo objeto
|
||||
\item[create] Insere o objeto no banco de dados
|
||||
\item[edit] Mostra o formulário para a edição de um objeto
|
||||
\item[update] Atualiza o objeto no banco de dados
|
||||
\item[destroy] Deleta um elemento do Model
|
||||
\end{description}
|
||||
|
||||
Para simplificação, os métodos CRUD mencionados acima não serão repetidos para as classes a
|
||||
seguir, uma vez que possuem comportamento semelhante.
|
||||
|
||||
\subsection{UserController}
|
||||
|
||||
Controller responsável por gerenciar os usuários. Isso inclui fazer logon e logoff, cadastrar novas
|
||||
contas, alterar preferências e ressetar senhas, caso necessário.
|
||||
|
||||
\begin{description}
|
||||
\item[signup] Método pelo qual o usuário irá se cadastrar no sistema
|
||||
\item[login] Método pelo qual o usuário irá se autenticar no sistema
|
||||
\item[logout] Método pelo qual o usuário irá encerrar sua sessão
|
||||
\item[forgot\_password] Método a ser utilizado caso o usuário tenha perdido sua senha, enviando uma nova por email
|
||||
\end{description}
|
||||
|
||||
\subsection{MessageController}
|
||||
|
||||
Controller responsável pelo envio de mensagens. Usa a estrutura padrão de Controller do Rails.
|
||||
|
||||
\subsection{WikiController}
|
||||
|
||||
Controller responsável pelas operações sobre o wiki, que incluem edição, criação de novas páginas e
|
||||
consulta de históricos.
|
||||
|
||||
\subsection{CoursesController}
|
||||
|
||||
Controller responsável pelo gerenciamento de disciplina. Usa a estrutura padrão de Controller do
|
||||
Rails.
|
||||
|
||||
\subsection{EventsController}
|
||||
|
||||
Controller responsável pelo manutenção de eventos no calendário. Usa a estrutura padrão de
|
||||
Controller do Rails.
|
||||
|
||||
\subsection{AttachmentsController}
|
||||
|
||||
Controller responsável pelo gerenciamento de arquivos anexos a páginas. Usa a estrutura padrão de
|
||||
Controller do Rails.
|
||||
|
||||
\subsection{Diagrama de Controller}
|
||||
|
||||
\includegraphics[width=150truemm]{classes-controller.pdf}
|
||||
|
||||
|
||||
\pagebreak
|
||||
|
||||
% =====================
|
||||
% Diagrama de Seqüencia
|
||||
% =====================
|
||||
|
||||
\section{Diagramas de Seqüência}
|
||||
|
||||
\subsection{User}
|
||||
\includegraphics[width=150truemm]{seq_user.png}
|
||||
|
||||
\subsection{Attachment}
|
||||
\includegraphics[width=130truemm]{seq_attachment.png}
|
||||
|
||||
\subsection{Message}
|
||||
\includegraphics[width=130truemm]{seq_message.png}
|
||||
|
||||
\subsection{Course}
|
||||
\includegraphics[width=130truemm]{seq_course.png}
|
||||
|
||||
\subsection{Event}
|
||||
\includegraphics[width=130truemm]{seq_event.png}
|
||||
|
||||
\subsection{Wiki}
|
||||
\includegraphics[width=150truemm]{seq_wiki.png}
|
||||
|
||||
|
||||
\end{document}
|
||||
3497
doc/aplicacao/classes-controller.eps
Normal file
3497
doc/aplicacao/classes-controller.eps
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/aplicacao/classes-controller.pdf
Normal file
BIN
doc/aplicacao/classes-controller.pdf
Normal file
Binary file not shown.
2942
doc/aplicacao/classes-model.eps
Normal file
2942
doc/aplicacao/classes-model.eps
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/aplicacao/classes-model.pdf
Normal file
BIN
doc/aplicacao/classes-model.pdf
Normal file
Binary file not shown.
BIN
doc/aplicacao/seq_attachment.png
Normal file
BIN
doc/aplicacao/seq_attachment.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
BIN
doc/aplicacao/seq_course.png
Normal file
BIN
doc/aplicacao/seq_course.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
BIN
doc/aplicacao/seq_event.png
Normal file
BIN
doc/aplicacao/seq_event.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
doc/aplicacao/seq_message.png
Normal file
BIN
doc/aplicacao/seq_message.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
BIN
doc/aplicacao/seq_user.png
Normal file
BIN
doc/aplicacao/seq_user.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
doc/aplicacao/seq_wiki.png
Normal file
BIN
doc/aplicacao/seq_wiki.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
Reference in New Issue
Block a user