Skip to content

Commit

Permalink
Fazendo o TCC :P
Browse files Browse the repository at this point in the history
  • Loading branch information
g0dkar committed Feb 13, 2017
1 parent 93b0f93 commit a144198
Show file tree
Hide file tree
Showing 13 changed files with 5,494 additions and 11 deletions.
6 changes: 4 additions & 2 deletions abntex-ifpi/pacotes.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
% ---
% Pacotes fundamentais
% ---
%\usepackage{lmodern} % Usa a fonte Latin Modern
\usepackage{mathptmx} % Usa a fonte Times New Roman
%\usepackage{lmodern} % Usa a fonte Latin Modern (mais clássica)
\usepackage{mathptmx} % Usa a fonte Times New Roman (requerida pelo IFPI)
\usepackage[T1]{fontenc} % Selecao de codigos de fonte.
\usepackage[utf8]{inputenc} % Codificacao do documento (conversão automática dos acentos)
\usepackage{indentfirst} % Indenta o primeiro parágrafo de cada seção.
Expand All @@ -19,9 +19,11 @@
\usepackage{verbatim} % Texto é interpretado como escrito no documento
\usepackage{multirow, array} % Múltiplas linhas e colunas em tabelas
\usepackage[hyphenbreaks]{breakurl}
\usepackage[table,xcdraw]{xcolor} % Cores para algumas tabelas especiais
\usepackage[num]{abntex2cite} % Citações numéricas
\citebrackets[] % Coloca os números entre colchetes ao invés de parenteses
\usepackage{abntex-ifpi/abntex-ifpi} % Modificações do ABNTeX para o IFPI
\usepackage{abntex-ifpi/tikz-uml} % Pacote Tikz UML para criar UML no LaTeX
% ---

% ---
Expand Down
5,376 changes: 5,376 additions & 0 deletions abntex-ifpi/tikz-uml.sty

Large diffs are not rendered by default.

26 changes: 25 additions & 1 deletion bibliografia.bib
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ @Misc{estadao-casa
}

@Misc{globo-financiamento,
author = {Marcelo CORRÊA},
author = {Marcelo Corr\^ea},
title = {Financiamento coletivo cresce no Brasil e pode ajudar a tirar ideias do papel},
howpublished = {O Globo},
month = jan,
Expand Down Expand Up @@ -279,4 +279,28 @@ @InProceedings{kuster2008matchmaking
urlaccessdate = {02 fev. 2017},
}

@Book{sommerville2003engenharia,
title = {Engenharia de software},
publisher = {Addison Wesley S{\~a}o Paulo},
year = {2003},
author = {Sommerville, Ian and Melnikoff, Selma Shin Shimizu and Arakaki, Reginaldo and de Andrade Barbosa, Edilson},
volume = {6},
}

@Article{booth2004webservices,
author = {David Booth and Hugo Haas and Francis McCabe and Eric Newcomer and Michael Champion and Chris Ferris and David Orchard},
title = {Web services architecture},
year = {2004},
timestamp = {2017-02-09},
url = {https://www.w3.org/TR/2003/WD-webarch-20031209/},
urlaccessdate = {09 fev. 2017},
}

@Book{gamma1995design,
title = {Design patterns: elements of reusable object-oriented software},
publisher = {Pearson Education India},
year = {1995},
author = {Gamma, Erich and Vlissides, John and Helm, Richard and Johnson, Ralph},
}

@Comment{jabref-meta: databaseType:bibtex;}
87 changes: 83 additions & 4 deletions capitulos/ajuda-ai.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,89 @@ \chapter{Ajuda.Ai}

Falando sobre o sistema em si.

%Ideias para o Ajuda.Ai:
%\begin{itemize}
%\item Em \cite{lehner2013crowdfunding} tem uma informação interessante que limitar o valor das doações pode ser beneficial por mostrar que o trabalho social é mais importante que a arrecadação financeira. Isso também leva ao oferecimento de trabalho voluntário além do dinheiro.
%\end{itemize}
\section{Arquitetura}

Bla bla bla alguma coisa sobre arquitetura.

\begin{figure}[H]
\caption{\label{fig_circulo}Arquitetura do Ajuda.Ai, versão 0.2}
\centering
\includegraphics[scale=0.7]{imagens/AjudaAi-Arquitetura-3.pdf}
\legend{Fonte: Elaborado pelo Autor}
\end{figure}

\subsection{Coisas Sobre o Sistema}

Não sei onde incluir essas coisas, então estou incluindo aqui.

\subsection{Uso do REST}

O sistema usa uma arquitetura REST Web para tornar possível uma completa separação da interface com o usuário, que pode ser feita em HTML5 ou como aplicativos para dispositivos móveis.

Essa arquitetura é recomendada pela W3C\footnote{World Wide Web Consortium, consórcio de empresas e profissionais que buscam padronizar a WWW} em \cite{booth2004webservices}, que define REST Web como ``um subconjunto da WWW (baseado em HTTP) onde agentes provêm semânticas uniformes para interfaces ao contrário de interfaces arbritrárias ou específicas de uma aplicação, e manipulam recursos apenas pela troca de representações.''

\subsection{Diferencial: Suporte a vários Gateways diferentes. Uso de Design Patterns}

Um dos diferenciais do Ajuda.Ai é o suporte a diferentes gateways de pagamento. Isso dá flexibilidade a instituição para usar o gateway mais adequado a mesma. Para implementação foi utilizado o Padrão de Projeto de Software Strategy. Este Padrão de Projeto é definido por uma família de algoritmos encapsulados e que podem ser trocados dentro da família de objetos.

\begin{figure}[H]
\caption{\label{fig_uml_strategy}Estrutura dos Processadores de Pagamento}
\centering
\begin{tikzpicture}
\umlclass[type=interface]{PaymentProcessor}{}{
+ createPayment() : Payment \\
+ processEvent() : PaymentEvent}
\umlclass[x=-3.5, y=-4]{MoipPaymentProcessor}{}{
+ createPayment() : Payment \\
+ processEvent() : PaymentEvent}
\umlclass[x=3.5, y=-4]{PagSeguroPaymentProcessor}{}{
+ createPayment() : Payment \\
+ processEvent() : PaymentEvent}
\umlsimpleclass[x=-3, y=3]{InstitutionSiteController}
\umlsimpleclass[x=3, y=3]{TransactionNotificationsController}
\umlcompo{InstitutionSiteController}{PaymentProcessor}
\umlcompo{TransactionNotificationsController}{PaymentProcessor}
\umlimpl{MoipPaymentProcessor}{PaymentProcessor}
\umlimpl{PagSeguroPaymentProcessor}{PaymentProcessor}
\end{tikzpicture}
\legend{Fonte: Elaborado pelo Autor}
\end{figure}

Cada gateway de pagamento suportado implementa a interface PaymentProcessor. Esta interface tem dois métodos:

\begin{itemize}
\item \textbf{createPayment()}: Cria uma ordem de pagamento junto ao gateway de pagamento. Este método tem liberdade de redirecionar o usuário para o sistema do gateway (MoIP e a maioria dos gateways nacionais) ou enviar algum pedaço de informação, como JSON, como resposta ao usuário (PayPal + JavaScript para pagamento na própria página). Este método deve retornar um objeto Payment para ser persistido a fim de acompanhar o andamento do pagamento;

\item \textbf{processPayment()}: Gateways de pagamento enviam requisições de volta ao sistema informando sobre o status de um determinado pagamento feito na plataforma deles. Este método é encarregado de processar essas mudanças de estado no pagamento. Este método deve retornar um objeto PaymentEvent que indica de forma padronizada o que aconteceu com este pagamento.
\end{itemize}

Ao criar uma ordem de pagamento através de \textbf{createPayment()} a classe que a criou retorna um objeto Payment para ser persistido. Este objeto, além de padronizar as informações relevantes dos pagamentos, guarda consigo a estratégia (serviço de pagamento) utilizada para criar a ordem de pagamento. Essa informação é usada futuramente quando o sistema recebe uma notificação de estado de pagamento.

Uma vantagem da utilização do padrão Strategy é que diferentes usos de um mesmo gateway podem ser facilmente implementados. Por exemplo, o gateway MoIP oferece várias formas para criar ordens de pagamento. Três delas são interessantes para o que o Ajuda.Ai propõe:

\begin{itemize}
\item \textbf{Ordem de pagamento via e-mail:} O MoIP envia um e-mail para o usuário onde, na conveniencia do mesmo, ele tem 30 dias para efetuar o pagamento da forma como preferir;
\item \textbf{Check-out Clássico:} O usuário é redirecionado para o Gateway onde ele selecionará forma de pagamento e fará todo o processo de pagamento antes de voltar ao Ajuda.Ai;
\item \textbf{Check-out Transparente:} O usuário preenche tudo no próprio sistema o qual junto ao gateway e através de webservices faz uma ordem de pagamento e processamento de pagamento;
\end{itemize}

\subsection{Processo de como acontece um Pagamento nos Gateways}

Um diagrama UML de sequencia que demonstra como acontece um pagamento nos gateways.

\begin{figure}[H]
\caption{\label{fig_uml_gateway1}Processo Comum de um Pagamento via Gateway de Pagamento}
\centering
\includegraphics[scale=0.58]{imagens/Processo_Gateway_01.pdf}
\legend{Fonte: Elaborado pelo Autor}
\end{figure}

\begin{figure}[H]
\caption{\label{fig_uml_gateway2}Processo Comum de um Pagamento via Gateway de Pagamento}
\centering
\includegraphics[scale=0.58]{imagens/Processo_Gateway_02.pdf}
\legend{Fonte: Elaborado pelo Autor}
\end{figure}



Expand Down
2 changes: 1 addition & 1 deletion capitulos/metodologia.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
% ----------------------------------------------------------
\chapter{Metodologia}

Como a coisa vai ser feita.
O desenvolvimento da aplicação utilizou-se de uma metodologia de desenvolvimento de software composta das seguintes fases: Levantamento de Requisitos, Modelagem, Implementação e Testes \cite{sommerville2003engenharia}.



Expand Down
2 changes: 2 additions & 0 deletions este-trabalho/siglas.tex
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
%% Lista de Siglas
\begin{siglas}
\item[API] Application Programming Interface
\item[WWW] World Wide Web
\item[REST] Representational State Transfer
\item[HTML5] Hypertext Markup Language, versão 5
\item[PaaS] Platform as a Service
\item[AWS] Amazon Web Services
\item[SES] Amazon Send Email Service
Expand Down
Binary file added imagens/AjudaAi-Arquitetura-2.pdf
Binary file not shown.
Binary file added imagens/AjudaAi-Arquitetura-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added imagens/AjudaAi-Arquitetura-3.pdf
Binary file not shown.
Binary file added imagens/Arquitetura-AjudaAi.pdf
Binary file not shown.
Binary file added imagens/Processo_Gateway_01.pdf
Binary file not shown.
Binary file added imagens/Processo_Gateway_02.pdf
Binary file not shown.
6 changes: 3 additions & 3 deletions pre-textual/pre-textual.tex
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@


%% Lista de Tabelas
\pdfbookmark[0]{\listtablename}{lot}
\listoftables*
\cleardoublepage
%\pdfbookmark[0]{\listtablename}{lot}
%\listoftables*
%\cleardoublepage



Expand Down

0 comments on commit a144198

Please sign in to comment.