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

Com base em uma extensa lista de requisitos funcionais definidos pelo MP, selecionamos alguns sistemas livres candidatos \'a compor a solução
proposta para o novo SPB e avaliamos os sistemas que juntos poderiam fornecer o maior sub-conjunto possível dos requisitos.

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 experi\^encia 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 experi\^encia 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 gráficas completamente
distintas 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 escritos em C, C ++, Java, Python, Ruby ou
PHP.

\end{itemize}

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

