\section{Visão geral do novo Portal SPB}
\label{sec:architecture}

Com base em uma extensa lista de requisitos funcionais definidos pelo Governo
Federal do Brasil, selecionamos alguns sistemas livres compor a solução
proposta para o novo SPB.  Avaliamos os sistemas que juntos poderiam fornecer o
maior sub-conjunto possível dos requisitos. Nós também estávamos convencidos de
que seria impossível fornecer todas as funcionalidade com uma única ferramenta.

Do ponto de vista da arquitetura, dois requisitos eram importantes para a nova
plataforma:

\begin{enumerate}
\item \textit{Integrar sistemas livres existentes}, com diferenças mínimas de suas versões originais;
\item \textit{Fornecer uma interface de usuário unificada} entre os diferentes sistemas, bem como a autenticação centralizada.
\end{enumerate}

A adoção de sistemas livres existentes e a minimização de mudanças feitas
localmente tiveram como objetivo ser capazes de atualizar para versões mais
recentes do software original, nos beneficiando pelas melhorias e manutenção feitas
pelas comunidades de projetos existentes. Proporcionar uma interface de usuário
consistente em cima dessas diferentes ferramentas era necessária para fazer a
transição entre os diferentes sistemas sem a percepção do ponto de vista dos
usuários, ou seja, sem confundí-lo através de interfaces completamente
diferentes ao interagir com o portal.

Para o primeiro requisito, identificamos quatro sistemas principais que exigiam
equipes especializadas para o trabalho no processo de integração. As equipes
aprenderam a desenvolver para os sistemas designados e contribuíram para as
comunidades originais, de modo que a versão que usamos não era
significativamente diferente do original.

Ao final do projeto, o Portal SPB foi composto por mais de dez sistemas, como
Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix e Munin. A seguir
apresentamos os mais relevantes, bem como como eles foram integrados na
plataforma.

\begin{itemize}

\item \textbf{Colab\footnote{\url{https://github.com/colab}}:} é uma plataforma
de integração de sistemas para aplicações web. Um de seus objetivos é permitir
que diferentes aplicações sejam combinadas de tal forma que um usuário não note
a mudança entre as aplicações. Para isso, o Colab oferece autenticação
centralizada, consistência visual, retransmissão de eventos entre aplicações e
mecanismo de busca integrado.

\item \textbf{Noosfero\footnote{\url{http://noosfero.org}}:} é um software para
redes sociais e de colaboração. Além dos recursos clássicos de redes sociais,
ele também fornece recursos de publicação de conteúdo, como blogs e CMS
(\textit{Content Management System}) de propósito geral. A maioria das
interações do usuário com o novo SPB são através do Noosfero, como registro do usuário,
páginas do projeto e de documentação e formulários de contato.

\item \textbf{Gitlab\footnote{\url{http://gitlab.com}}:} é um gerenciador web
de repositórios Git com páginas wiki e recursos de \textit{issue tracker}. O
Gitlab é uma plataforma livre e se concentra em oferecer uma solução para
desenvolvimento colaborativo em torno do repositório.

\item \textbf{Mezuro\footnote{\url{http://mezuro.org/}}:} é uma plataforma para
coletar métricas de código-fonte com o objetivo de monitorar a qualidade
interna de projetos de software livre escrito em C, C ++, Java, Python, Ruby ou
PHP.

\end{itemize}

Do ponto de vista prático, a plataforma SPB foi implantada em 7 máquinas
virtuais com diferentes
funções\footnote{\url{https://softwarepublico.gov.br/doc/arquitetura.html}}.

