Commit eaf1356796174c503d91fea3c34b0daad6829584

Authored by Paulo Meireles
1 parent a9aa399f

First pt-br version for SBQS

sbqs2017/content/00-abstract.tex
... ... @@ -6,6 +6,6 @@ helping the Brazilian public administration to share its solutions. In this pape
6 6  
7 7 \begin{resumo}
8 8  
9   -O Software Público Brasileiro (SPB) é um programa do Governo Federal Brasileiro para promover o compartilhamento e a colaboração em soluções de Software Livre para a administração pública. Um Software Público Brasileiro é considerado um bem público e o governo federal assume algumas responsabilidades relacionadas ao seu uso, mas tem os mesmos princípios de desenvolvimento de software livre como a tendência à descentralização na tomada de decisões, o compartilhamento de informações e do desenvolvimento (código), e a interação contínua com seus usuários. Nesse contexto, criamos uma plataforma baseada na integração e evolução de ferramentas FOSS existentes. Hoje em dia, o SPB Portal oferece diversas funcionalidades modernas para o desenvolvimento de software colaborativo, ajudando a administração pública brasileira a compartilhar suas soluções. Neste artigo, apresentamos a plataforma integrada de desenvolvimento de software desenvolvida para o programa por uma equipe heterogênea composta por professores, mestrandos, estudantes de graduação e profissionais das comunidades do software livre. Neste relato de experiência, juntamente com a arquitetura da plataforma, funcionalidades e os esforços na evolução da experiência do usuário, também discutimos nosso processo de trabalho, baseado em práticas de desenvolvimento de software ágil e livre, e as lições aprendidas em 30 meses de trabalho sobre o projeto SPB.
  9 +O Software Público Brasileiro (SPB) é um programa do Governo Federal Brasileiro para promover o compartilhamento e a colaboração em soluções de Software Livre para a administração pública. Um Software Público Brasileiro é considerado um bem público e o governo federal assume algumas responsabilidades relacionadas ao seu uso, mas tem os mesmos princípios de desenvolvimento de software livre como a tendência à descentralização na tomada de decisões, o compartilhamento de informações e do desenvolvimento (código), e a interação contínua com seus usuários. Nesse contexto, criamos uma plataforma baseada na integração e evolução de ferramentas livres existentes. Hoje em dia, o SPB Portal oferece diversas funcionalidades modernas para o desenvolvimento de software colaborativo, ajudando a administração pública brasileira a compartilhar suas soluções. Neste artigo, apresentamos a plataforma integrada de desenvolvimento de software desenvolvida, para o programa SPB, por uma equipe heterogênea composta por professores, mestrandos, estudantes de graduação e profissionais das comunidades do software livre. Neste relato de experiência, juntamente com a arquitetura da plataforma, funcionalidades e os esforços na evolução da experiência do usuário, também discutimos nosso processo de trabalho, baseado em práticas de desenvolvimento de software ágil e livre e as lições aprendidas em 30 meses de trabalho sobre o projeto SPB.
10 10  
11 11 \end{resumo}
... ...
sbqs2017/content/01-introduction.tex
1 1 \section{Introdução}
2 2 \label{sec:intro}
3 3  
4   -Durante as últimas décadas, o governo federal brasileiro vem tentando mudar seus processos de adoção e desenvolvimento de software. Por exemplo, em 2003, a recomendação de adotar software livre\footnote{Neste artigo, usamos o termo software livre como referente à Free and Open Source Software (FOSS).} tornou-se uma política pública. Em 2007, o governo brasileiro lançou um portal chamado Software Público Brasileiro (SPB), com o objetivo de compartilhar projetos de software livre desenvolvidos pelo governo brasileiro ou para o mesmo. Adicionalmente, o instrumento jurídico brasileiro de contratação de software (denominado IN 04/2012) determina que os agentes públicos devem priorizar as soluções disponíveis no Portal SPB. Em suma, a aquisição de uma solução proprietária deve ser explicitamente justificada ao demonstrar que não há alternativa adequada no Portal SPB. Em 2013, o Tribunal Federal emitiu o Acórdão 2314/2013 sobre o uso de metodologias ágeis em contratos de desenvolvimento de software com a administração pública.
  4 +Durante as últimas décadas, o governo federal brasileiro vem tentando mudar
  5 +seus processos de adoção e desenvolvimento de software. Por exemplo, em 2003, a
  6 +recomendação de adotar software livre\footnote{Neste artigo, usamos o termo
  7 +software livre como referente à Free and Open Source Software (FOSS).}
  8 +tornou-se uma política pública. Em 2007, o governo brasileiro lançou um portal
  9 +chamado Software Público Brasileiro (SPB), com o objetivo de compartilhar
  10 +projetos de software livre desenvolvidos pelo governo brasileiro ou para o
  11 +mesmo. Adicionalmente, o instrumento jurídico brasileiro de contratação de
  12 +software (denominado IN 04/2012) determina que os agentes públicos devem
  13 +priorizar as soluções disponíveis no Portal SPB. Em suma, a aquisição de uma
  14 +solução proprietária deve ser explicitamente justificada ao demonstrar que não
  15 +há alternativa adequada no Portal SPB. Em 2013, o Tribunal Federal emitiu o
  16 +Acórdão 2314/2013 sobre o uso de metodologias ágeis em contratos de
  17 +desenvolvimento de software com a administração pública.
5 18  
6   -Apesar disso, na prática, as metodologias de desenvolvimento de software livre ou ágeis, isto é, os métodos colaborativos e empíricos de desenvolvimento de software, não são amplamente praticadas e entendidas pelos agentes do governo brasileiro. Dessa forma, os processos hierárquicos e tradicionais do governo e a falta de expertise no desenvolvimento de software real de seus agentes produzem uma situação de contratos de desenvolvimento de software ineficiente.
  19 +Apesar disso, na prática, as metodologias de desenvolvimento de software livre
  20 +ou ágeis, isto é, os métodos colaborativos e empíricos de desenvolvimento de
  21 +software, não são amplamente praticadas e entendidas pelos agentes do governo
  22 +brasileiro. Dessa forma, os processos hierárquicos e tradicionais do governo e
  23 +a falta de expertise no desenvolvimento de software real de seus agentes
  24 +produzem uma situação de contratos de desenvolvimento de software ineficiente.
7 25  
8   -Desde 2009, o SPB Portal teve vários problemas técnicas. O código original da plataforma não estava mias sendo desenvolvido, e havia uma grande quantidade de dívidas técnicas para superar. O sistema era uma versão modificada de uma plataforma livre existente chamada OpenACS\footnote{\url{http://openacs.org}}, e o antigo portal SPB não estava sendo atualizado com os lançamentos oficiais do OpenACS. Nesse cenário, a manutenção do portal estava se tornando cada vez mais difícil.
  26 +Desde 2009, o SPB Portal teve vários problemas técnicas. O código original da
  27 +plataforma não estava mias sendo desenvolvido, e havia uma grande quantidade de
  28 +dívidas técnicas para superar. O sistema era uma versão modificada de uma
  29 +plataforma livre existente chamada OpenACS\footnote{\url{http://openacs.org}},
  30 +e o antigo portal SPB não estava sendo atualizado com os lançamentos oficiais
  31 +do OpenACS. Nesse cenário, a manutenção do portal estava se tornando cada vez
  32 +mais difícil.
9 33  
10   -Depois de alguns eventos e encontros para coletar os requisitos via os agentes do governo federal e da sociedade, foi desenvolvida, entre janeiro de 2014 e junho de 2016, uma nova plataforma para o Portal SPB, pelo Universidade de Brasília (UnB) e da Universidade de São Paulo (USP) em parceria com o Ministério de Orçamento, Planejamento e Gestão (MP). Ele foi projetado como uma plataforma integrada para desenvolvimento de software colaborativo, e inclui funcionalidade para redes sociais, listas de discussão, sistema de controle de versão e monitoramento de qualidade de código-fonte. Para coordenar e desenvolver esse projeto durante 30 meses, a UnB recebeu do Governo Federal Brasileiro um total de 2.619.965,00 reais.
  34 +Depois de alguns eventos e encontros para coletar os requisitos via os agentes
  35 +do governo federal e da sociedade, foi desenvolvida, entre janeiro de 2014 e
  36 +junho de 2016, uma nova plataforma para o Portal SPB, pelo Universidade de
  37 +Brasília (UnB) e da Universidade de São Paulo (USP) em parceria com o
  38 +Ministério de Orçamento, Planejamento e Gestão (MP). Ele foi projetado como uma
  39 +plataforma integrada para desenvolvimento de software colaborativo, e inclui
  40 +funcionalidade para redes sociais, listas de discussão, sistema de controle de
  41 +versão e monitoramento de qualidade de código-fonte. Para coordenar e
  42 +desenvolver esse projeto durante 30 meses, a UnB recebeu do Governo Federal
  43 +Brasileiro um total de 2.619.965,00 reais.
11 44  
12 45 \begin{figure*}[hbt]
13 46 \centering
... ... @@ -16,8 +49,38 @@ Depois de alguns eventos e encontros para coletar os requisitos via os agentes d
16 49 \label{fig:spb}
17 50 \end{figure*}
18 51  
19   -O projeto foi desenvolvido por uma equipe de 3 professores, 2 estudantes de mestrado e cerca de 50 alunos de graduação (não todos ao mesmo tempo), juntamente com 2 designers profissionais e 6 desenvolvedores sêniors da comunidade software livre. Os professores e todos os estudantes de graduação eram da UnB e os mestrandos eram da USP. Quanto aos designers e desenvolvedores seniores, 7 dos 8 viviam fora de Brasília: Curitiba, São Paulo, Ribeirão Preto, Salvador, Punta Cana/República Dominicana e Montreal/Canadá. Em outras palavras, nós tínhamos uma equipe trabalhando em um ambiente virtual colaborativo e distribuído.
  52 +O projeto foi desenvolvido por uma equipe de 3 professores, 2 estudantes de
  53 +mestrado e cerca de 50 alunos de graduação (não todos ao mesmo tempo),
  54 +juntamente com 2 designers profissionais e 6 desenvolvedores sêniors da
  55 +comunidade software livre. Os professores e todos os estudantes de graduação
  56 +eram da UnB e os mestrandos eram da USP. Quanto aos designers e desenvolvedores
  57 +seniores, 7 dos 8 viviam fora de Brasília: Curitiba, São Paulo, Ribeirão Preto,
  58 +Salvador, Punta Cana/República Dominicana e Montreal/Canadá. Em outras
  59 +palavras, nós tínhamos uma equipe trabalhando em um ambiente virtual
  60 +colaborativo e distribuído.
20 61  
21   -Figura \ref{fig:spb} mostra a página inicial desta plataforma integrada, que acesso (1) lista de discussões (Mailmain), (2) ambiente de apoio ao desenvolvimento (GitLab e Mezuro) e (3) rede social (Noosfero) com as páginas dos projetos e soluções disponíveis. Todo o desenvolvimento foi feito de forma aberta, e as mudanças que precisávamos nas ferramentas foram devolvidas às suas respectivas comunidades. Nosso processo foi baseado em práticas ágeis e nos mecanismos empíricos das comunidades de software livre. Definimos ciclos de desenvolvimento e lançamos 5 versões do novo SPB Portal. A primeira versão (beta) foi disponibilizada em setembro de 2014, apenas 9 meses desde o início do projeto. O antigo portal foi desligado em setembro de 2015. Por fim, a última versão, ilustrada na Figura\ref{fig:spb}, foi entregue em junho de 2016.
  62 +Figura \ref{fig:spb} mostra a página inicial desta plataforma integrada, que
  63 +acesso (1) lista de discussões (Mailmain), (2) ambiente de apoio ao
  64 +desenvolvimento (GitLab e Mezuro) e (3) rede social (Noosfero) com as páginas
  65 +dos projetos e soluções disponíveis. Todo o desenvolvimento foi feito de forma
  66 +aberta, e as mudanças que precisávamos nas ferramentas foram devolvidas às suas
  67 +respectivas comunidades. Nosso processo foi baseado em práticas ágeis e nos
  68 +mecanismos empíricos das comunidades de software livre. Definimos ciclos de
  69 +desenvolvimento e lançamos 5 versões do novo SPB Portal. A primeira versão
  70 +(beta) foi disponibilizada em setembro de 2014, apenas 9 meses desde o início
  71 +do projeto. O antigo portal foi desligado em setembro de 2015. Por fim, a
  72 +última versão, ilustrada na Figura \ref{fig:spb}, foi entregue em junho de 2016.
22 73  
23   -Neste artigo, apresentamos uma visão geral dessa nova geração do Portal SPB. Este relato de experiência compartilha nossa metodologia e processo de desenvolvimento desse projeto, trabalhando com o governo federal brasileiro para cumprir suas exigências, ao mesmo tempo ser o mais fiel possível às comunidades de software livre envolvidas. Além disso, discutimos várias lições aprendidas para fornecer um ambiente virtual colaborativo e distribuído, envolvendo uma grande equipe de estudantes de graduação e desenvolvedores sêniors remotos. Por fim, lançamos uma plataforma sem precedentes para o governo brasileiro aplicar métodos colaborativos de desenvolvimento de software. Este caso pode ajudar outros projetos a superar desafios similares de engenharia de software no futuro, bem como demonstra como as universidades podem melhorar a experiência de mundo real de seus alunos por meio desse tipo de projeto.
  74 +Neste artigo, apresentamos uma visão geral dessa nova geração do Portal SPB.
  75 +Este relato de experiência compartilha nossa metodologia e processo de
  76 +desenvolvimento desse projeto, trabalhando com o governo federal brasileiro
  77 +para cumprir suas exigências, ao mesmo tempo ser o mais fiel possível às
  78 +comunidades de software livre envolvidas. Além disso, discutimos várias lições
  79 +aprendidas para fornecer um ambiente virtual colaborativo e distribuído,
  80 +envolvendo uma grande equipe de estudantes de graduação e desenvolvedores
  81 +sêniors remotos. Por fim, lançamos uma plataforma sem precedentes para o
  82 +governo brasileiro aplicar métodos colaborativos de desenvolvimento de
  83 +software. Este caso pode ajudar outros projetos a superar desafios similares de
  84 +engenharia de software no futuro, bem como demonstra como as universidades
  85 +podem melhorar a experiência de mundo real de seus alunos por meio desse tipo
  86 +de projeto.
... ...
sbqs2017/content/02-spb.tex
1 1 \section{O Software Público Brasileiro}
2 2 \label{sec:spb}
3 3  
4   -Software livre é um fenômeno que ganhou notoriedade nos últimos anos e tem atraído o interesse da academia. No entanto, desde o início da computação, a maioria dos desenvolvedores trabalhou da maneira que agora identificamos como software livre, ou seja, compartilhando códigos abertamente. Essa abertura torna o código disponível para inspeção, modificação e uso por qualquer pessoa ou organização\cite{hippel2003, kon2012}.
  4 +Software livre é um fenômeno que ganhou notoriedade nos últimos anos e tem
  5 +atraído o interesse da academia. No entanto, desde o início da computação, a
  6 +maioria dos desenvolvedores trabalhou da maneira que agora identificamos como
  7 +software livre, ou seja, compartilhando códigos abertamente. Essa abertura
  8 +torna o código disponível para inspeção, modificação e uso por qualquer pessoa
  9 +ou organização\cite{hippel2003, kon2012}.
5 10  
6   -Os elementos que distinguem o software livre de outros tipos de software são o pensamento sobre o processo de desenvolvimento, o contexto econômico, a relação entre desenvolvedores e usuários, bem como as características éticas e legais que se relacionam com o software. No contexto do software livre, a liberdade do usuário é promovida e seu desenvolvimento é baseado em práticas abertas de colaboração e desenvolvimento\cite{meirelles2013}.
  11 +Os elementos que distinguem o software livre de outros tipos de software são o
  12 +pensamento sobre o processo de desenvolvimento, o contexto econômico, a relação
  13 +entre desenvolvedores e usuários, bem como as características éticas e legais
  14 +que se relacionam com o software. No contexto do software livre, a liberdade do
  15 +usuário é promovida e seu desenvolvimento é baseado em práticas abertas de
  16 +colaboração e desenvolvimento\cite{meirelles2013}.
7 17  
8   -Do ponto de vista econômico, ao contrário do que acontece com o software proprietário, o software livre promove o estabelecimento de vários fornecedores que podem competir uns com os outros com base no mesmo software. Essa forte concorrência entre os fornecedores traz benefícios para os usuários, porque dá melhores garantias em relação à evolução do sistema, levando a uma redução dos custos\cite{kon2012}. Essas liberdades e garantias sobre software são regidas no Brasil pela Lei 9610/98 (lei de direitos autorais). Na maioria das vezes, essa proteção da lei está em conformidade com os termos conferidos por um contrato relacionado a determinado software. Esse contrato é chamado de ``licença''. Uma licença de software determina uma lista de direitos que são concedidos, e deveres que são impostos a um usuário do software. Em particular, o que diferencia software livre de software proprietário é apenas a forma como eles são licenciados\cite{sabino2009}. As licenças de software livre garantem o direito de executar, estudar, adaptar e melhorar o software.
  18 +Do ponto de vista econômico, ao contrário do que acontece com o software
  19 +proprietário, o software livre promove o estabelecimento de vários fornecedores
  20 +que podem competir uns com os outros com base no mesmo software. Essa forte
  21 +concorrência entre os fornecedores traz benefícios para os usuários, porque dá
  22 +melhores garantias em relação à evolução do sistema, levando a uma redução dos
  23 +custos\cite{kon2012}. Essas liberdades e garantias sobre software são regidas
  24 +no Brasil pela Lei 9610/98 (lei de direitos autorais). Na maioria das vezes,
  25 +essa proteção da lei está em conformidade com os termos conferidos por um
  26 +contrato relacionado a determinado software. Esse contrato é chamado de
  27 +``licença''. Uma licença de software determina uma lista de direitos que são
  28 +concedidos, e deveres que são impostos a um usuário do software. Em particular,
  29 +o que diferencia software livre de software proprietário é apenas a forma como
  30 +eles são licenciados\cite{sabino2009}. As licenças de software livre garantem o
  31 +direito de executar, estudar, adaptar e melhorar o software.
9 32  
10   -A versão original do portal SPB foi projetada em 2005 e lançada em 2007. O propósito do portal era apenas compartilhar o software desenvolvido no governo brasileiro, para reduzir os custos de contratação de software. No entanto, observou-se que quando os projetos de software foram lançados, suas comunidades foram formadas em torno desses sistemas com várias pessoas colaborando e compartilhando os resultados obtidos com o uso dessas soluções. Dessa forma, algumas cooperativas de desenvolvimento de software e empresas privadas demonstraram interesse em disponibilizar seus sistemas na plataforma SPB.
  33 +A versão original do portal SPB foi projetada em 2005 e lançada em 2007. O
  34 +propósito do portal era apenas compartilhar o software desenvolvido no governo
  35 +brasileiro, para reduzir os custos de contratação de software. No entanto,
  36 +observou-se que quando os projetos de software foram lançados, suas comunidades
  37 +foram formadas em torno desses sistemas com várias pessoas colaborando e
  38 +compartilhando os resultados obtidos com o uso dessas soluções. Dessa forma,
  39 +algumas cooperativas de desenvolvimento de software e empresas privadas
  40 +demonstraram interesse em disponibilizar seus sistemas na plataforma SPB.
11 41  
12   -Em resumo, o conceito de Software Público Brasileiro vai além do software livre. Além de estar licenciado sob uma licença de software livre, um software público precisa ter garantias explícitas de que é um bem público, e esse projeto deve estar disponível no portal SPB. Ser um verdadeiro bem público pressupõe requisitos que não podem ser satisfeitos apenas por meio de licenciamento de software livre. Por exemplo, deve haver uma política de uso de marca menos rígida pelo fornecedor original que não impeça eventuais concorrentes de serviços de publicidade para esse mesmo software. A inclusão no SPB Portal também tem requisitos extras, como ter um sistema de controle de versão pública, manual de instalação e especificação de requisitos de hardware.
  42 +Em resumo, o conceito de Software Público Brasileiro vai além do software
  43 +livre. Além de estar licenciado sob uma licença de software livre, um software
  44 +público precisa ter garantias explícitas de que é um bem público, e esse
  45 +projeto deve estar disponível no portal SPB. Ser um verdadeiro bem público
  46 +pressupõe requisitos que não podem ser satisfeitos apenas por meio de
  47 +licenciamento de software livre. Por exemplo, deve haver uma política de uso de
  48 +marca menos rígida pelo fornecedor original que não impeça eventuais
  49 +concorrentes de serviços de publicidade para esse mesmo software. A inclusão no
  50 +SPB Portal também tem requisitos extras, como ter um sistema de controle de
  51 +versão pública, manual de instalação e especificação de requisitos de hardware.
13 52  
... ...
sbqs2017/content/03-requirements.tex
1 1 \section{Requisitos e projetos relacionados}
2 2 \label{sec:requirements}
3 3  
4   -Para conceber o novo portal SPB, o governo brasileiro organizou 3 eventos para coletar os requisitos, em particular do ponto de vista da sociedade. Após essas 3 rodadas de discussão sobre a nova plataforma SPB, o governo brasileiro listou cerca de 145 requisitos e desenvolveu um ``mapa mental''\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}} para guiar a evolução do portal SPB. Nesse cenário, os 10 requisitos mais votados foram, por exemplo:
  4 +Para conceber o novo portal SPB, o governo brasileiro organizou 3 eventos para
  5 +coletar os requisitos, em particular do ponto de vista da sociedade. Após essas
  6 +3 rodadas de discussão sobre a nova plataforma SPB, o governo brasileiro listou
  7 +cerca de 145 requisitos e desenvolveu um ``mapa
  8 +mental''\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}}
  9 +para guiar a evolução do portal SPB. Nesse cenário, os 10 requisitos mais
  10 +votados foram, por exemplo:
5 11  
6 12 \begin{enumerate}
7 13 \item Repositório de código-fonte com acesso público.
... ... @@ -16,7 +22,14 @@ Para conceber o novo portal SPB, o governo brasileiro organizou 3 eventos para c
16 22 \item Relatório da experiência sobre o uso de um software público.
17 23 \end{enumerate}
18 24  
19   -Haviam outros requisitos baseados na experiência dos analistas de TI do governo brasileiro e da comunidade software livre brasileira. Por exemplo, a nova plataforma só funcionaria corretamente se houver uma autenticação única para usar as ferramentas fornecidas. Além disso, uma interface unificada era um requisito não-funcional importante para ter uma melhor experiência de usuário na nova plataforma. Assim, no primeiro momento, desejamos disponibilizar uma versão inicial que poderia substituir o antigo portal SPB. Para isso, a primeira versão deve ter recursos como:
  25 +Haviam outros requisitos baseados na experiência dos analistas de TI do governo
  26 +brasileiro e da comunidade software livre brasileira. Por exemplo, a nova
  27 +plataforma só funcionaria corretamente se houver uma autenticação única para
  28 +usar as ferramentas fornecidas. Além disso, uma interface unificada era um
  29 +requisito não-funcional importante para ter uma melhor experiência de usuário
  30 +na nova plataforma. Assim, no primeiro momento, desejamos disponibilizar uma
  31 +versão inicial que poderia substituir o antigo portal SPB. Para isso, a
  32 +primeira versão deve ter recursos como:
20 33  
21 34 \begin{enumerate}
22 35 \item Um catálogo de software público organizado.
... ... @@ -26,22 +39,71 @@ Haviam outros requisitos baseados na experiência dos analistas de TI do governo
26 39 \item Listas de discussão e fóruns de discussão.
27 40 \end{enumerate}
28 41  
29   -Outros requisitos também foram planejados durante a fase de concepção do projeto de evolução do SPB, como um mecanismo de busca integrado e um monitor de análise estática de código-fonte na web. Analisando todos esses requisitos, criamos o projeto de evolução do SPB baseado em ferramentas de software livre existentes. No entanto, a integração de vários sistemas existentes que já foram implementados em diferentes linguagens de programação e arcabouços, adicionando recursos como uma autenticação centralizada, interface unificada e um mecanismo de pesquisa, bem como, outros recursos de \textit{back-end}, requeriria grande quantidade de trabalho não-trivial.
  42 +Outros requisitos também foram planejados durante a fase de concepção do
  43 +projeto de evolução do SPB, como um mecanismo de busca integrado e um monitor
  44 +de análise estática de código-fonte na web. Analisando todos esses requisitos,
  45 +criamos o projeto de evolução do SPB baseado em ferramentas de software livre
  46 +existentes. No entanto, a integração de vários sistemas existentes que já foram
  47 +implementados em diferentes linguagens de programação e arcabouços, adicionando
  48 +recursos como uma autenticação centralizada, interface unificada e um mecanismo
  49 +de pesquisa, bem como, outros recursos de \textit{back-end}, requeriria grande
  50 +quantidade de trabalho não-trivial.
30 51  
31   -A nova plataforma SPB é um ambiente totalmente integrado, sendo muito avançada em comparação com projetos e iniciativas relacionados. Por exemplo, o governo dos EUA tem uma plataforma criada para melhorar o acesso ao software desenvolvido pelo governo federal\footnote{\url{https://code.gov}}. Code.gov é uma interface para organizar os projetos do governo dos EUA e, em suma, facilita aos usuários e desenvolvedores como obter informações e acessar repositórios de código-fonte dos projeto do governo no GitHub. No entanto, não há recursos de rede social e CMS, bem como outros recursos de comunicação fornecidos por essa plataforma.
  52 +A nova plataforma SPB é um ambiente totalmente integrado, sendo muito avançada
  53 +em comparação com projetos e iniciativas relacionados. Por exemplo, o governo
  54 +dos EUA tem uma plataforma criada para melhorar o acesso ao software
  55 +desenvolvido pelo governo federal\footnote{\url{https://code.gov}}. Code.gov é
  56 +uma interface para organizar os projetos do governo dos EUA e, em suma,
  57 +facilita aos usuários e desenvolvedores como obter informações e acessar
  58 +repositórios de código-fonte dos projeto do governo no GitHub. No entanto, não
  59 +há recursos de rede social e CMS, bem como outros recursos de comunicação
  60 +fornecidos por essa plataforma.
32 61  
33   -Além disso, existem duas iniciativas na Europa: OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} e OW2\footnote{\url{http://ow2.org}}. O Open Source Observatory (OSOR) é uma comunidade hospedada na plataforma JoinUp, patrocinada pela \textit{European Commission}. O OSOR tem como objetivo o intercâmbio de informações, experiências e melhores práticas sobre o uso de software livre na administração pública. Ajuda a encontrar um software livre disponibilizado por outras administrações públicas, proporcionando acesso a informações como notícias, eventos, estudos e soluções relacionadas à implementação de software livre. Ele também oferece fórum e listas de discussão da comunidade, mas não possui um gerenciador de repositório de código-fonte integrado e para cada projeto há um link para seu próprio repositório externo (ou seu arquivo tarball).
34   -%
35   -OW2 é uma espécie de consórcio de projetos de software livre para promover o desenvolvimento de \textit{middleware} livres, aplicativos de negócios, plataformas de computação em nuvem e promover um ecossistema de comunidade e negócios. Em resumo, ele visa apoiar o desenvolvimento, implantação e gerenciamento de soluções distribuídos com foco em middleware, não sendo uma plataforma em si.
36   -%
37   -Além disso, patrocinado pela \textit{European Commission} entre 2007 e 20011, havia o projeto QualiPSo que visava fornecer aos usuários, desenvolvedores e consumidores de software livre recursos e conhecimentos de qualidade sobre os vários tópicos relacionados ao software livre. O projeto QualiPSo também planejava desenvolver uma plataforma chamada QualiPSo Factory, que não foi totalmente concluída.
  62 +Além disso, existem duas iniciativas na Europa:
  63 +OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} e
  64 +OW2\footnote{\url{http://ow2.org}}. O Open Source Observatory (OSOR) é uma
  65 +comunidade hospedada na plataforma JoinUp, patrocinada pela \textit{European
  66 +Commission}. O OSOR tem como objetivo o intercâmbio de informações,
  67 +experiências e melhores práticas sobre o uso de software livre na administração
  68 +pública. Ajuda a encontrar um software livre disponibilizado por outras
  69 +administrações públicas, proporcionando acesso a informações como notícias,
  70 +eventos, estudos e soluções relacionadas à implementação de software livre. Ele
  71 +também oferece fórum e listas de discussão da comunidade, mas não possui um
  72 +gerenciador de repositório de código-fonte integrado e para cada projeto há um
  73 +link para seu próprio repositório externo (ou seu arquivo tarball). OW2 é
  74 +uma espécie de consórcio de projetos de software livre para promover o
  75 +desenvolvimento de \textit{middleware} livres, aplicativos de negócios,
  76 +plataformas de computação em nuvem e promover um ecossistema de comunidade e
  77 +negócios. Em resumo, ele visa apoiar o desenvolvimento, implantação e
  78 +gerenciamento de soluções distribuídos com foco em middleware, não sendo uma
  79 +plataforma em si. Além disso, patrocinado pela \textit{European Commission}
  80 +entre 2007 e 20011, havia o projeto QualiPSo que visava fornecer aos usuários,
  81 +desenvolvedores e consumidores de software livre recursos e conhecimentos de
  82 +qualidade sobre os vários tópicos relacionados ao software livre. O projeto
  83 +QualiPSo também planejava desenvolver uma plataforma chamada QualiPSo Factory,
  84 +que não foi totalmente concluída.
38 85  
39   -Na América Latina existe uma iniciativa baseada no projeto SPB chamado Software Publico Regional\footnote{\url{http://softwarepublicoregionalbeta.net}}. De um ponto de vista prático, ele fornece uma instância personalizada do Gitlab para compartilhar o código-fonte e a documentação dos projetos dos países envolvidos.
40   -%
41   -Tal como o Brasil, o Chile tem seu próprio portal também chamado Software Publico\footnote{\url{http://www.softwarepublico.gob.cl}}. Os usuários podem criar conteúdo nas comunidades (notícias, documentos, páginas wiki), mas os repositórios de código-fonte estão disponíveis na plataforma Bitbucket\footnote{\ url {https://bitbucket.org/softwarepublico}}.
42   -
43   -
44   -O governo brasileiro precisava evoluir o projeto SPB que existia desde 2005. Em 2013, quando iniciamos esse projeto, o Portal SPB contava com cerca de 200 mil usuários cadastrados. Não poderíamos apenas entrar em contato com esses usuários e pedir-lhes para registrar uma conta no Github também. Além disso, após o caso Edward Snowden, o governo brasileiro aprovou um decreto-lei específico (8.135/2013) para regulamentar seus serviços de comunicação, exigindo que a administração pública deva hospedar seus sistemas de informação a ser fornecido por si mesmo, o que exclui o uso de plataformas privadas, especialmente aqueles fornecidos por empresas estrangeiras. Assim, desenvolvemos nossa própria solução para cobrir todos os requisitos, produzindo uma completa e avançada plataforma integrada governamental para desenvolvimento de software colaborativo.
  86 +Na América Latina existe uma iniciativa baseada no projeto SPB chamado Software
  87 +Publico Regional\footnote{\url{http://softwarepublicoregionalbeta.net}}. De um
  88 +ponto de vista prático, ele fornece uma instância personalizada do Gitlab para
  89 +compartilhar o código-fonte e a documentação dos projetos dos países
  90 +envolvidos. Tal como o Brasil, o Chile tem seu próprio portal também chamado
  91 +Software Publico\footnote{\url{http://www.softwarepublico.gob.cl}}. Os usuários
  92 +podem criar conteúdo nas comunidades (notícias, documentos, páginas wiki), mas
  93 +os repositórios de código-fonte estão disponíveis na plataforma
  94 +Bitbucket\footnote{\url{https://bitbucket.org/softwarepublico}}.
45 95  
46 96  
  97 +O governo brasileiro precisava evoluir o projeto SPB que existia desde 2005. Em
  98 +2013, quando iniciamos esse projeto, o Portal SPB contava com cerca de 200 mil
  99 +usuários cadastrados. Não poderíamos apenas entrar em contato com esses
  100 +usuários e pedir-lhes para registrar uma conta no Github também. Além disso,
  101 +após o caso Edward Snowden, o governo brasileiro aprovou um decreto-lei
  102 +específico (8.135/2013) para regulamentar seus serviços de comunicação,
  103 +exigindo que a administração pública deva hospedar seus sistemas de informação
  104 +a ser fornecido por si mesmo, o que exclui o uso de plataformas privadas,
  105 +especialmente aqueles fornecidos por empresas estrangeiras. Assim,
  106 +desenvolvemos nossa própria solução para cobrir todos os requisitos, produzindo
  107 +uma completa e avançada plataforma integrada governamental para desenvolvimento
  108 +de software colaborativo.
47 109  
... ...
sbqs2017/content/04-architecture.tex
1   -\section{Architecture}
  1 +\section{Arquitetura}
2 2 \label{sec:architecture}
3 3  
4   -Based on the extensive list of functional requirements defined by the
5   -Brazilian Federal Government, we selected some FOSS systems to form our
6   -solution. We looked for system that together could provide the largest
7   -subset possible of the requirements, and were fully aware that we would
8   -need to improve those systems in order to provide the rest. We were also
9   -convinced that it would be impossible to provide all of those
10   -requirements with a single tool.
  4 +Com base na extensa lista de requisitos funcionais definidos pelo Governo
  5 +Federal do Brasil, selecionamos alguns sistemas livres compor a solução
  6 +proposta para o novo SPB. Avaliamos os sistemas que juntos poderiam fornecer o
  7 +maior subconjunto possível dos requisitos. Nós também estávmos convencidos de
  8 +que seria impossível fornecer todas as funcionalidade com uma única ferramenta.
11 9  
12   -From the point of view of the architecture, two main requirements was
13   -brought by the Brazilian Federal Government for the new platform:
  10 +Do ponto de vista da arquitetura, dois requisitos eram importantes para a nova
  11 +plataforma:
14 12  
15 13 \begin{enumerate}
16   - \item \textit{Integrate existing FOSS systems}, with minimal differences from
17   - their original versions;
18   - \item \textit{Provide a consistent user interface} across the different
19   - systems, as well as centralized authentication.
  14 +\item \textit{Integrar sistemas livres existentes}, com diferenças mínimas de suas versões originais;
  15 +\item \textit{Fornecer uma interface de usuário unificada} entre os diferentes sistemas, bem como a autenticação centralizada.
20 16 \end{enumerate}
21 17  
22   -Adopting existing FOSS systems and minimizing locally-made changes had
23   -the objective of being able to upgrade to newer versions of the original
24   -software, benefiting from improvements and maintenance done by the
25   -existing project communities. Providing a consistent user interface on
26   -top of those different tools was needed to make the transition between
27   -the different systems seamless from the point of view of users, which
28   -would be confused by jumping through completely different interfaces
29   -while interacting with the portal.
30   -
31   -For the first requirement, we identified four main systems that required
32   -specialized teams for work in the integration process. The teams learned
33   -how to develop for their assigned systems and contributed to the
34   -original communities, so that the version we used were not significantly
35   -different from the original.
36   -
37   -At the end of the project, the SPB portal was composed of more than ten
38   -systems, such as Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix, and
39   -Munin. The remainder of this section describes the most relevant of
40   -them, as well as how they were integrated into the platform.
41   -
42   -\subsection{Colab}
43   -
44   -Colab\footnote{\url{https://github.com/colab}} is a systems integration
45   -platform for web applications. One of its goals is allowing different
46   -applications to be combined in such a way that an user does not notice
47   -the change between applications. For that, Colab provides facilities
48   -for:
  18 +A adoção de sistemas livres existentes e a minimização de mudanças feitas
  19 +localmente tiveram como objetivo ser capazes de atualizar para versões mais
  20 +recentes do software original, beneficiando de melhorias e manutenção feitas
  21 +pelas comunidades de projetos existentes. Proporcionar uma interface de usuário
  22 +consistente em cima dessas diferentes ferramentas era necessária para fazer a
  23 +transição entre os diferentes sistemas sem a percepção do ponto de vista dos
  24 +usuários, ou seja, sem confundi-lo através de interfaces completamente
  25 +diferentes ao interagir com o portal.
  26 +
  27 +Para o primeiro requisito, identificamos quatro sistemas principais que exigiam
  28 +equipes especializadas para o trabalho no processo de integração. As equipes
  29 +aprenderam a desenvolver para seus sistemas designados e contribuíram para as
  30 +comunidades originais, de modo que a versão que usamos não era
  31 +significativamente diferente do original.
  32 +
  33 +No final do projeto, o portal SPB foi composto por mais de dez sistemas, como
  34 +Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix e Munin. A seguir
  35 +apresentamos os mais relevantes deles, bem como como eles foram integrados na
  36 +plataforma.
49 37  
50 38 \begin{itemize}
51   - \item Centralized authentication
52   - \item Visual consistency
53   - \item Relaying of events between applications
54   - \item Integrated search engine
55   -\end{itemize}
56   -
57   -Colab implements this integration by working as a reverse proxy for the
58   -integration applications, that is, all external requests pass through
59   -Colab before reaching them.
60   -
61   -Centralized authentication is handled by letting users authenticate to
62   -Colab, which then sends a REMOTE\_USER HTTP header to applications,
63   -which are expected to be pre-configured to accept that as an indication
64   -of the current user (REMOTE\_USER is a standard authentication mechanism
65   -for web applications). This allows users to be automatically identified
66   -to each of the applications without having to enter credentials for each
67   -of them.
68   -%
69   -Of course, this requires that the integrated applications are not
70   -accessible on the public internet, otherwise malicious users could send
71   -their own crafted REMOTE\_USER headers and impersonate any user.
72   -
73   -For the visual consistency, Colab is able to make transformations to the
74   -HTML produced by the integrated applications, ir order to provide a
75   -unified interface. It allows one to define default templates to be used
76   -by all applications, as well as providing extra ones in a plugin. This
77   -approach allowed us to reuse common HTML pages, what facilitates
78   -maintenance.
79   -
80   -Colab also provides a publish-subscribe event system. This allows one of
81   -the applications, or Colab itself, to trigger an action in another
82   -application. For example, when a user registers with Colab, all
83   -applications need to be notified in order to create their own internal
84   -representation of that user account.
85   -
86   -Colab also provides an integrated search engine, which can be configured
87   -to specify exactly what data needs to be indexed for each of the
88   -applications, and how to direct the user to that piece of information on
89   -the specific application.
90   -
91   -Initially, Colab had support for a small set of applications (Trac, GNU
92   -Mailman, and Apache Lucene) and support for them was hard-coded. Our
93   -team evolved Colab so that it can now receive plugins that add support
94   -new applications without the need of changes to the Colab core. We also
95   -developed plugins to be used in the SPB platform: Noosfero, GitLab, and
96   -Mezuro.
97 39  
98   -\subsection{Noosfero}
  40 +\item \textbf{Colab\footnote{\url{https://github.com/colab}}:} é uma plataforma
  41 +de integração de sistemas para aplicações web. Um de seus objetivos é permitir
  42 +que diferentes aplicações sejam combinadas de tal forma que um usuário não note
  43 +a mudança entre as aplicações. Para isso, a Colab oferece autenticação
  44 +centralizada, consistência visual, retransmissão de eventos entre aplicações e
  45 +mecanismo de pesquisa integrado.
  46 +
  47 +\item \textbf{Noosfero\footnote{\url{http://noosfero.org}}:} é um software para
  48 +redes sociais e de colaboração. Além dos recursos clássicos de redes sociais,
  49 +ele também fornece recursos de publicação de conteúdo, como blogs e um CMS
  50 +(\textit{Content Management System}) de propósito geral. A maioria das
  51 +interações do usuário com o SPB é através do Noosfero: registro do usuário,
  52 +páginas do projeto e de documentação e formulários de contato.
  53 +
  54 +\item \textbf{Gitlab\footnote{\url{http://gitlab.com}}:} é um gerenciador web
  55 +de repositório Git com páginas wiki e recursos de \textit{issue tracker}. O
  56 +Gitlab é uma plataforma livre e se concentra em oferecer uma solução holística
  57 +de desenvolvimento colaborativo em torno do repositório em uma única
  58 +plataforma.
  59 +
  60 +\item \textbf{Mezuro\footnote{\url{http://mezuro.org/}}:} é uma plataforma para
  61 +coletar métricas de código-fonte com o objetivo de monitorar a qualidade
  62 +interna de projetos de software livre escrito em C, C ++, Java, Python, Ruby ou
  63 +PHP.
99 64  
100   -Noosfero\footnote{\url{http://noosfero.org}} is a software for building
101   -social and collaboration networks. Besides the classical social
102   -networking features, it also provides publication features such as blogs
103   -and a general-purpose CMS (Content Management System). Most of the user
104   -interactions with SPB is through Noosfero: user registration, project
105   -home pages and documentation, and contact forms.
106   -
107   -\subsection{Gitlab}
108   -
109   -GitLab\footnote{\url{http://gitlab.com}} is a web-based Git repository
110   -manager with wiki pages and issue tracking features. Gitlab is a FOSS
111   -platform and focuses on delivering a holistic solution that will see
112   -developers from idea to production seamlessly and on a single platform.
113   -
114   -Gitlab has several unique features, such as built-in continuous
115   -integration and continuous deployment, flexible permissions, tracking of
116   -Work-in-Progress work, moving issues between projects, group-level
117   -milestones, creating new branches from issues, issues board, and time
118   -tracking.
119   -
120   -\subsection{Mezuro}
121   -
122   -Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code
123   -metrics to monitor the internal quality of software written in C, C++,
124   -Java, Python, Ruby, and PHP.
125   -
126   -In general, source code metrics tools also do not present a friendly way
127   -to interpret its results and, even more, do not follow a standardization
128   -between them. Mezuro collects and presents these results to the end
129   -user, specially, by analyzing source code metric history during its life
130   -cycle.
131   -
132   -The Mezuro platform provides a single interface grouping available
133   -tools, allows selection and composition of metrics in a flexible manner,
134   -stores the metrics evolution history, presents results in a friendly
135   -way, as well as, allows users to customize the given interpretation
136   -accordingly to their own context.
137   -
138   -\subsection{System unification}
  65 +\end{itemize}
139 66  
140 67 \begin{figure}[hbt]
141 68 \centering
142 69 \includegraphics[width=.5\linewidth]{figures/arch.png}
143   - \caption{SPB architecture overview.}
  70 + \caption{Visão geral da arquitetura do novo portal SPB.}
144 71 \label{fig:architecture}
145 72 \end{figure}
146 73  
147   -The conceptual architecture of the platform is presented in Figure
148   -\ref{fig:architecture}. Colab initially handles all user interaction,
149   -directing requests to one of the integrated applications. It
150   -post-processes responses from the applications to apply a consistent
151   -visual appearance, manages authentication, and provides a unified search
152   -functionality: instead of using the redundant restricted search
153   -functionality of each application, a search in the SPB portal might
154   -return content from any of the applications, be it web pages, mailing
155   -list posts, or source code.
156   -%
157   -The SPB platform was deployed in 7 virtual machines with different functions.
  74 +Do ponto de vista prático, a plataforma SPB foi implantada em 7 máquinas
  75 +virtuais com diferentes
  76 +funções\footnote{\url{https://softwarepublico.gov.br/doc/arquitetura.html}}. A
  77 +arquitetura conceitual da plataforma é apresentada na Figura
  78 +\ref{fig:architecture}. O Colab inicialmente lida com toda a interação do
  79 +usuário, redirecionando as solicitações para as ferramentas integradas. Ele
  80 +processa as respostas das ferramentas e aplica uma aparência visual
  81 +consistente, gerenciando também a autenticação e fornecendo uma busca
  82 +unificada: em vez de usar a funcionalidade de busca restrita redundante de cada
  83 +ferramenta, uma busca no portal SPB pode retornar conteúdo de qualquer uma
  84 +delas, sejam páginas web, postagens da lista de discussão ou mesmo
  85 +código-fonte.
  86 +
... ...
sbqs2017/content/05-features.tex
1   -\section{Features}
  1 +\section{Funcionalidades}
2 2 \label{sec:spb}
3 3  
4   -The new generation of the SPB portal combines features adapted from existing collaborative software
5   -and features developed by the SPB team. Whenever possible, new functions
6   -(newly developed or partially modified) were contributed back to the official repositories.
  4 +A nova geração do portal SPB combina recursos adaptados de plataformas
  5 +colaborativas existentes com recursos desenvolvidos pelas equipes da UnB e USP.
  6 +Sempre que possível, novas funcionalidades recém-desenvolvidas ou parcialmente
  7 +modificadas) foram enviadas de volta aos repositórios oficiais.
7 8  
8   -As a result, we have a platform that integrates and harmonizes different features such as
9   -social networking, mailing list, version control system, content management and
10   -source code quality monitoring. Our aim was to develop functionalities by reusing
11   -functionality of collaborative software already integrated to the platform. In
12   -addition, we tried to keep this integration transparent to end users.
  9 +Como resultado, temos uma plataforma que integra e harmoniza diferentes
  10 +recursos, como redes sociais, lista de email, sistema de controle de versão,
  11 +gerenciamento de conteúdo e monitoramento de qualidade de código-fonte. Nosso
  12 +objetivo foi desenvolver funcionalidades reutilizando as ferramentas integradas
  13 +à plataforma. Além disso, tentamos manter essa integração transparente para os
  14 +usuários finais. Temos 3 grandes conjuntos de funcionalidades descritas nas
  15 +próximas subseções.
13 16  
14   -\subsection{Software and Software Community}
  17 +\subsection{Software e Comunidade de Software}
15 18  
16   -In the new SPB portal, each software has a standard set of pages and tools.
17   -Besides accessing support pages (such as FAQ and installation guide) within the platform, users will be able to download
18   -different versions of the software and find several mechanisms of software development management.
  19 +No novo portal SPB, cada software tem um conjunto padrão de páginas e
  20 +ferramentas. Além de acessar as páginas de suporte (como FAQ e guia de
  21 +instalação) dentro da plataforma, os usuários são capazes de baixar diferentes
  22 +versões do software e encontrar vários mecanismos de gerenciamento de
  23 +desenvolvimento de software.
19 24  
20   -Focusing on the collaborative development, Mailman was integrated to the platform in order to allow
21   -the dialogue and communication between developers, users and
22   -enthusiasts of a determined software. The software has its own mailing list whose privacy
23   -can be configured/set by administrators.
  25 +Focando no desenvolvimento colaborativo, Mailman foi integrado à plataforma
  26 +para permitir o diálogo e a comunicação entre desenvolvedores, usuários e
  27 +entusiastas de um determinado software. O software tem sua própria lista de
  28 +discussão cuja privacidade pode ser configurada e definida pelos
  29 +administradores.
24 30  
25   -The software has a social interface area ("software community") where users can find other users, blogs,
26   -summary of recent activities, or any other relevant community-produced content.
27   -Users logged to the platform can request membership to different software communities
28   -and each community member can access and edit restricted content. For this purpose,
29   -many Noosfero features related to social networking and content management were integrated to the portal.
  31 +O software possui uma área de interface social (``comunidade de software'')
  32 +onde os usuários podem encontrar outros usuários, blogs, resumo de atividades
  33 +recentes ou qualquer outro conteúdo relevante produzido pela comunidade. Os
  34 +usuários registrados na plataforma podem solicitar a associação a comunidades
  35 +de software diferentes e cada membro da comunidade pode acessar e editar
  36 +conteúdo restrito. Para isso, muitos recursos do Noosfero relacionados a redes
  37 +sociais e gerenciamento de conteúdo foram integrados ao portal.
30 38  
31   -To assist decision-making, the new SPB has acquired assessment and statistical
32   -tools. Now, users will be able to rate the software and make comments and all
33   -information will be avaiable to other users. Moreover, the software has a section
34   -containing its statistical data, where values are calculated based on data
35   -provided by users and the system.
  39 +Para auxiliar na tomada de decisões, o novo SPB adquiriu ferramentas de
  40 +avaliação e estatísticas. Agora, os usuários serão capazes de avaliar o
  41 +software e fazer comentários e todas as informações serão avaiable para outros
  42 +usuários. Além disso, o software possui uma seção contendo seus dados
  43 +estatísticos, onde os valores são calculados com base nos dados fornecidos
  44 +pelos usuários e pelo sistema.
36 45  
37   -The role of the administrator will be present in the software and in its community. The
38   -administrator is responsible for moderating content, memberships and user
39   -comments. The administrator is also the one who can make changes in the software homepage
40   -content.
  46 +O papel do administrador estará presente no software e na sua comunidade. O
  47 +administrador é responsável por moderar o conteúdo, as associações e os
  48 +comentários dos usuários. O administrador também é aquele que pode fazer
  49 +alterações no conteúdo da página inicial do software.
41 50  
42   -\subsection{Software Catalog and global search}
  51 +\subsection{Catálogo de Software e Busca Global}
43 52  
44   -The platform also provides a search tool called Software Catalog,
45   -which allows users to find softwares available in the portal.
46   -In this catalog, some search options were developed to make the navigation easier,
47   -such as filters (by type of software or category), sorting and score.
  53 +A plataforma também fornece uma ferramenta de pesquisa chamada ``Catálogo de
  54 +Software'', que permite aos usuários encontrar softwares disponíveis no portal.
  55 +Neste catálogo, algumas opções de busca foram desenvolvidas para facilitar a
  56 +navegação, como filtros (por tipo de software ou categoria), classificação e
  57 +pontuação.
48 58  
49   -In order to expand the searching scope and cover more types of content, the SPB team
50   -developed the global search tool. This tool unifies search mechanisms
51   -provided by the different collaborative software used in the SPB protal. Any user can
52   -find a public content in the context of social networking, mailing list and
53   -software development.
  59 +Para expandir o escopo de busca e cobrir mais tipos de conteúdos, as equipes da
  60 +UnB e USP desenvolveram um mecanismo de busca global. Essa funcionalidade
  61 +unifica os mecanismos de busca fornecidos pelas diferentes ferramentas
  62 +integradas ao portal do SPB. Qualquer usuário pode encontrar um conteúdo
  63 +público no contexto de redes sociais, lista de discussão e desenvolvimento de
  64 +software.
54 65  
55   -\subsection{Software development tools}
  66 +\subsection{Ambiente de apoio ao desenvolvimento de software}
56 67  
57   -The new SPB also provides
58   -tools to encourage developers to keep source code and its
59   -development activity within the platform. Any created software has, by default, a
60   -an associated git repository with wiki pages and issue tracking. These tools are
61   -supplied by the integration of Gitlab into the platform.
  68 +O novo SPB também fornece ferramentas para incentivar os desenvolvedores a
  69 +manter o código-fonte e sua atividade de desenvolvimento dentro da plataforma.
  70 +Qualquer software criado tem, por padrão, um repositório Git associado com
  71 +páginas wiki e \textit{issue tracker}. Essas ferramentas são fornecidas pela
  72 +integração do Gitlab na plataforma.
62 73  
63   -Developers can also evaluate the software source code to measure software
64   -quality. With Mezuro, they can schedule the analysis of the source-code and follow its
65   -metric results evolution over time. Results of each metric analysis are
66   -public, which allows greater transparency between the developer and the
67   -community that uses the software. Thereby, the maintainers can decide if the
68   -given solution meets the source code quality requirements.
  74 +Os desenvolvedores também podem avaliar o código-fonte do software para medir a
  75 +qualidade interna do software. Com o Mezuro, eles podem configurar a análise do
  76 +código-fonte e monitorar sua evolução pelos resultados métricas ao longo do
  77 +tempo. Os resultados de cada análise métrica são públicos, o que permite maior
  78 +transparência entre o desenvolvedor e a comunidade que usa o software. Desta
  79 +forma, os mantenedores podem decidir se uma determinada solução atende aos
  80 +requisitos de qualidade interna do código-fonte.
69 81  
70   -Thus, the SPB became a platform to stimulate the openness of the source code;
71   -dialogue between users and the development team; and also
72   -maintenance and evolution of the software, which will provide more
73   -transparency in government investments.
  82 +Assim, o SPB tornou-se uma plataforma para estimular a abertura do código
  83 +fonte; o diálogo entre os usuários e a equipe de desenvolvimento; e também a
  84 +manutenção e evolução do software, o que proporcionará maior transparência nos
  85 +investimentos do governo.
... ...
sbqs2017/content/06-ux.tex
1   -\section{User eXperience evolution}
  1 +\section{Evolução da experiência do usuário}
2 2  
3   -The integration of collaborative environments goes beyond functional aspects.
4   -Offering the population an unified experience across these environments has
5   -been the key to encourage the use of the platform as it reduces the perception
6   -of complexity. Thus, the SPB Portal information architecture was redesigned
7   -to provide a transparent navigation and to reach users with different profiles.
8   -A process of harmonization has been employed on the interaction models of each
9   -tool to reduce the learning curve. At the same time, a new visual style was
10   -created to unify the navigation experience and to comply with the guidelines of
11   -the digital communication identity standard established by the Federal
12   -Government.
  3 +A integração de ambientes colaborativos vai além dos aspectos funcionais.
  4 +Oferecer à população uma experiência unificada em todos esses ambientes tem
  5 +sido a chave para incentivar o uso da plataforma, pois reduz a percepção de
  6 +complexidade. Assim, a arquitetura de informação do no portal SPB foi
  7 +re-desenhada para fornecer uma navegação transparente e alcançar usuários com
  8 +perfis diferentes. Um processo de harmonização foi empregado nos modelos de
  9 +interação de cada ferramenta para reduzir a curva de aprendizado. Ao mesmo
  10 +tempo, foi criado um novo estilo visual para unificar a experiência de
  11 +navegação e cumprir as diretrizes do padrão de identidade de comunicação
  12 +digital estabelecido pelo Governo Federal.
13 13  
14   -With the increase in system features and the addition of new tools, the
15   -visual style has steadily evolved to keep the navigation unified. Moreover,
16   -tools from different backgrounds, which in many cases provide similar
17   -functionality, prompted the development of an unified interface. Some
18   -features, such as search and user profile editing were eliminated from
19   -the individual applications, and implemented centrally to ensure a
20   -consistent look and feel.
  14 +Com o aumento dos recursos do sistema e a adição de novas ferramentas, o estilo
  15 +visual foi evoluído para manter a navegação unificada. Além disso, ferramentas
  16 +de origens diferentes, que em muitos casos fornecem funcionalidades
  17 +semelhantes, nos levou ao desenvolvimento de uma interface unificada. Alguns
  18 +recursos, como a busca e a edição de perfil de usuário, foram eliminados dos
  19 +aplicativos individuais e implementados centralmente para garantir uma
  20 +aparência consistente.
21 21  
22   -Another challenge was responsive web design. The integrated applications
23   -had varying degrees of support for responsiveness, and the common
24   -interface had to adapt for each individual scenario. In particular
25   -Noosfero did not yet have a responsive design; we engaged in its
26   -development and contributed towards that goal.
  22 +Outro desafio foi o \textit{design web} responsivo. As aplicações integradas
  23 +tinham diferentes graus de suporte para resposividade e a interface comum
  24 +precisava se adaptar para cada cenário individual. Em particular, o Noosfero
  25 +ainda não tinha recursos de responsividade. Nós nos engajamos em seu
  26 +desenvolvimento e contribuímos para esse funcionalidade, contribuindo também
  27 +com sua comunidade de desenvolvedores.
27 28  
28   -After the initial release of the new SPB Portal in 2014, several
29   -validations activities were implemented in 2015 and 2016. The aim was to
30   -provide the most wanted features by casual users (such as public
31   -servants interested in downloads and documentation) immediately, while
32   -allowing more experienced users (such as developers) to easily drill down
33   -to the details.
  29 +Após o lançamento inicial do novo Portal SPB em 2014, foram implementadas
  30 +várias atividades de validação com os usuários em 2015 e 2016. O objetivo era
  31 +disponibilizar imediatamente os recursos mais procurados tanto pelos usuários
  32 +mais recorrentes (como servidores públicos interessados em
  33 +downloads e documentação), quanto pelos usuários mais técnicos (como
  34 +desenvolvedores interessados em acessar o código-fonte dos projetos).
... ...
sbqs2017/content/07-process.tex
1   -\section{Development Organization and Process}
  1 +\section{Processo e organização do desenvolvimento}
2 2 \label{sec:process}
3 3  
4   -The SPB team was composed of a variety of professionals with different levels
5   -and skills, where most of them were undergraduate students with major in
6   -software engineering (from 4th semester or upper). Since the students could
7   -not dedicate many hours per week to the project, they always had the
8   -flexibility to negotiate their work schedule during the semester in
9   -order to not harm their classes and coursework. Their daily work routine
10   -in the project included programming and DevOps tasks.
11   -
12   -The development of SPB project required a vast experience and background that
13   -usually undergraduate students do not have yet. For this reason, a few senior
14   -developers have joined to the project to help with the more difficult issues
15   -and to transfer knowledge to the students. Their main task was to provide
16   -solutions for complex problems, in other words, they worked as developers. As
17   -these professionals are very skillful and the project could not fund a full
18   -time work for them, some of them worked partially on the project. In addition,
19   -they lived in a different states spread around Brazil which led much of the
20   -communication to be online.
21   -
22   -In short, our work process was based on open and collaborative software
23   -development practices. The development process was defined based on the
24   -adaptation of different agile and FOSS communities practices, highlighting the
25   -high degree of automation resulting from DevOps practices. Thus, the work
26   -process was executed in a cadenced and continuous way.
27   -
28   -Finally, the last group of actors of this project was composed of employees
29   -formally working for the Brazilian government, in the Ministry of Planning,
30   -Development, and Management (MP is the Brazilian acronym). All the project
31   -decisions, validations, and scope definitions were made by them. In this way we
32   -developed software product incrementally, with releases aligned to business
33   -strategic objectives. As one can see, the project had many different
34   -kinds of stakeholders that had to be organized and synchronized.
35   -
36   -\subsection{Team organization}
37   -
38   -Approximately 70\% of the development teams were composed of software
39   -engineering undergraduate students from UnB and they worked physically
40   -in the same laboratory. Each student had their own schedule based on
41   -their classes, what complicates the implementation of pair programming.
42   -The senior developers tried to synchronize their schedule with the
43   -students on their sub-team. To cope with this environment, we had a few
44   -basic rules which guided the project organization:
  4 +A nossa equipe de desenvolvimento era composta por profissionais com diferentes
  5 +níveis e habilidades, sendo a maioria deles estudantes de graduação de
  6 +engenharia de software (a partir do 4º semestre de curso). Uma vez que os
  7 +alunos não podiam dedicar muitas horas por semana ao projeto, eles sempre
  8 +tiveram a flexibilidade para negociar seu horário de trabalho durante o
  9 +semestre, a fim de não prejudicar a sua formação. Sua rotina de trabalho diário
  10 +no projeto incluiu programação e tarefas de DevOps (contabilizando 16
  11 +horas-semanais).
  12 +
  13 +O desenvolvimento do projeto SPB exigiu uma vasta experiência, que os alunos de
  14 +graduação geralmente ainda não têm. Por esta razão, alguns desenvolvedores
  15 +sênior se juntaram ao projeto para ajudar com as questões mais difíceis e
  16 +transferir conhecimento aos alunos. Sua principal tarefa era fornecer soluções
  17 +para problemas complexos. Como esses profissionais são muito hábeis e o projeto
  18 +não poderia financiar um trabalho de tempo integral, eles trabalharam
  19 +parcialmente no projeto (20 horas-semanais). Além disso, eles viviam em estados
  20 +diferentes espalhados pelo Brasil, e outros países, o que levou muita da
  21 +comunicação a ser on-line.
  22 +
  23 +Em resumo, nosso processo de trabalho foi baseado em práticas de
  24 +desenvolvimento de software abertas e colaborativas. O processo de
  25 +desenvolvimento foi definido com base na adaptação de diferentes práticas de
  26 +comunidades ágeis e de software livre, destacando o alto grau de automação
  27 +resultante das práticas de DevOps. Assim, o processo de trabalho foi executado
  28 +de forma cadenciada e contínua.
  29 +
  30 +Finalmente, o último grupo de atores deste projeto foi composto por
  31 +funcionários formalmente trabalhando para o governo brasileiro, no Ministério
  32 +do Planejamento, Desenvolvimento e Gestão (MP). Todas as decisões do projeto,
  33 +validações e definições de escopo foram feitas com eles. Desta forma,
  34 +desenvolvemos produtos de software de forma incremental, com lançamentos
  35 +alinhados aos objetivos estratégicos do negócio. Como se pode ver, o projeto
  36 +tinha muitos tipos diferentes de \textit{stakeholders} que tinham de ser
  37 +organizados e sincronizados.
  38 +
  39 +\subsection{Organização da equipe}
  40 +
  41 +Aproximadamente 70\% das equipes de desenvolvimento foram compostas por
  42 +estudantes de engenharia de software da UnB e trabalharam fisicamente no mesmo
  43 +laboratório. Cada aluno tinha seu próprio horário baseado em suas aulas, o que
  44 +complicava a implementação da programação em pares. Os desenvolvedores sêniors
  45 +tentaram sincronizar sua agenda com os alunos em sua sub-equipe. Para lidar com
  46 +esse ambiente, tivemos algumas regras básicas que guiaram a organização do
  47 +projeto:
45 48  
46 49 \begin{enumerate}
47   - \item Classes have high priority for undergraduate students;
48   - \item Work in pairs whenever possible (locally or remotely).
49   - \item There must be one morning or afternoon per week when
50   - \emph{everyone} should be together physically in the laboratory
51   - (except of course the remote team members).
52   - \item Every 3 to 4 months, the senior developers would fly in and work
53   - alongside the students for a few days.
  50 +\item As aulas têm alta prioridade para estudantes de graduação;
  51 +\item Trabalhe em pares sempre que possível (local com os demais estudantes ou
  52 + remotamente com um sênior).
  53 +\item Deve haver uma manhã ou uma tarde por semana quando \emph{todos} deverem
  54 + estar juntos fisicamente no laboratório (exceto, é claro, os membros da
  55 + equipe remota, mas que estarão on-line).
  56 +\item A cada 2 ou 3 meses, os desenvolvedores sêniors (residentes no Brasil)
  57 + voaria e trabalharia ao lado dos alunos por uma semana.
54 58 \end{enumerate}
55 59  
56   -With the aforementioned rules we divided all the project into four
57   -different teams: Colab, Noosfero, Design, and DevOps. Each team had one
58   -coach responsible for reducing the communication problem with the other
59   -teams and help the members to organize themselves in the best way for
60   -everyone (always respecting their work time). The coach was one of the
61   -students working in some of the teams with the extra duty of registering
62   -the current tasks developed in the sprint and with the responsibility to
63   -talk with other teams. One important thing to notice is the mutability
64   -of the team and the coach, during the project many students changed
65   -between the teams to try different areas.
66   -
67   -One characteristic of the teams was the presence of (at least) one
68   -senior per team. This was essential, because hard decisions and complex
69   -problems were usually referred to them. This kept having to take
70   -complicated technical decisions from the coach tole, what encouraged
71   -students to be coaches. Lastly, the senior developers worked directly
72   -with the students, and this was important to give the undergraduate the
73   -opportunity to interact with a savvy professional in his area and to
74   -keep the knowledge flowing in the project.
75   -
76   -Finally, we had to add two last elements of the team organization, that
77   -was essential for the project harmony: the meta-coach and professors.
78   -The former was a software engineer recently graduated and which wanted
79   -to keep working on the project, the latter were professors that
80   -orchestrated all the interactions between all members of the project.
81   -The meta-coach usually worked in one specific team and had the extra
82   -task of knowing the current status of all teams. Professors and
83   -meta-coaches worked together to reduce the communication problem between
84   -all the teams. Lastly, all the paperwork tasks, such as reporting on the
85   -project progress to the Ministry, was handled by the professors.
86   -
87   -\subsection{Communication and management}
88   -
89   -Our team had many people working together, and most of the seniors worked in a
90   -different city remotely. Also, we tried to keep our work completely clear to
91   -the Brazilian government and citizens interested in following the project. To
92   -handle those cases, we used a set of tools to communication and other to manage
93   -the project.
94   -
95   -For communication between member in different places, we used: Google
96   -handouts with tmate tool, IRC, and mailing lists. When one student had to
97   -work in pair with a senior, normally, they used Google hangout for
98   -communication and they shared a terminal session with tmate which allow
99   -them to share the same terminal, with both typing and seeing the screen.
100   -For questions and fast discussion, we used IRC. For general
101   -notification, we used the mailing lists.
102   -
103   -For managing the project we used the SPB Portal itself; first to validate it by
104   -ourselves, and also because it had all the required tools. We basically created
105   -one wiki page per release in the SPB Gitlab instance with a mapping between
106   -strategical, tactical, and operational views. In a practical point of view, one
107   -milestone per user history (feature), and one or more issues for addressing
108   -each feature. With this approach we achieved two important goals: keeping all
109   -the management as close possible to to the source code, and tracking every
110   -feature developed during the project.
111   -
112   -\subsection{High-level project management and reporting}
113   -
114   -The Brazilian government used to work with software development in a
115   -very traditional way. They would frequently focus on documents and not
116   -on what was, in our opinion, what really matters: working software. This
117   -dissonance caused us a communication noise with MP, because they would
118   -often question our work style. It was especially hard to convince them
119   -to accept the idea of open scope and agile development, but after months
120   -of labor and showing results they stopped resisting.
121   -
122   -We defined some level of meeting granularity to avoid generating too
123   -much overhead to the developers. We had a strategical and validating
124   -meeting with MP (the former once in a month and the latter each 15th
125   -day), release plaining with the entire team (one per month), and finally
126   -a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a
127   -diagram that represents our meeting organization.
128   -
129   -\begin{figure}[hbt]
130   - \centering
131   - \includegraphics[width=\linewidth]{figures/meeting_flows.png}
132   - \caption{Meetings cycles}
133   - \label{fig:meeting}
134   -\end{figure}
135   -
136   -In the strategical meeting we usually defined the priorities and new
137   -features with the Brazilian government. Normally the professors, the
138   -coach of each team, the meta-coach, and some employees of the MP would
139   -participate in this meeting. We usually discussed what the team already
140   -produced since our last meeting, and established the new features for
141   -the next release. Notice that just part of the team would join this
142   -meeting to avoid generating unnecessary overhead to the developers, but
143   -all the students interested to participate were allowed to join (many
144   -students wanted this experience during the project).
145   -
146   -After the strategical meeting with Brazilian government agents, we had a
147   -planning turn with all teams together. In this part, each team worked together
148   -to convert the MP wishes into smaller parts which were represented by the epics of
149   -the release. Each coach was responsible for conducting the planning, and after
150   -that record it on the project wiki (the wiki provided by Gitlab). With this
151   -epic, each 14th day the team have generated their sprint scheduler (with small
152   -achievements mapped to issues).
153   -
154   -To keep the Brazilian government always updated, we invited them to work
155   -with us to validate the new features in progress. Normally we had a
156   -meeting each 15th day. Basically, this was our work flow, we always kept
157   -everything extremely open to the MP (our way of working, and the one
158   -often used by open source projects) and to the team.
159   -
160   -To keep the track of all of those things we used the SPB itself,
161   -especially Gitlab. Basically, we had:
  60 +Com as regras acima, dividimos todo o projeto em quatro equipes diferentes:
  61 +Colab, Noosfero, Design e DevOps. Cada equipe tinha um líder (\textit{coach})
  62 +responsável por reduzir o problema de comunicação com as outras equipes e
  63 +ajudar os membros a se organizar da melhor maneira para todos (sempre
  64 +respeitando seu tempo de trabalho). O \textit{coach} sempre foi um dos alunos
  65 +que trabalha como desenvolvedor na equipe com o dever extra de registar as
  66 +tarefas atuais desenvolvidas na iteração (\textit{sprint}) e com a
  67 +responsabilidade de conversar com outras equipes. Uma coisa importante a
  68 +observar é a mutabilidade da equipe e do \textit{coach}, pois durante o projeto
  69 +muitos alunos mudaram de equipes para tentar ter diferentes experiências em
  70 +diversas áreas.
  71 +
  72 +Uma característica das equipes foi a presença de (pelo menos) um sênior por
  73 +equipe. Isso era essencial, porque as decisões difíceis e os problemas
  74 +complexos, geralmente, foram resolvidos ao consultá-los. Essa dinâmica
  75 +incentivamos aos demais alunos a terem o mesmo compartamento do \textit{coach}
  76 +mesmo sem serem. Por fim, os desenvolvedores sêniors trabalharam diretamente
  77 +com os alunos, e isso foi importante para dar ao graduando a oportunidade de
  78 +interagir com profissionais experientes em sua área e manter o conhecimento
  79 +fluindo no projeto.
  80 +
  81 +Por fim, tivemos ainda dois últimos elementos da organização da equipe que
  82 +foram essenciais para a harmonia do projeto: o \textit{meta-coach} e
  83 +professores. O primeiro era um engenheiro de software recentemente graduado
  84 +(nossos ex-alunos) e que queria continuar trabalhando no projeto; estes últimos
  85 +eram professores que orquestraram todas as interações entre todos os membros do
  86 +projeto, inclusive do governo federal. O \textit{meta-coach} normalmente
  87 +trabalhava em uma equipe específica e tinha a tarefa extra de conhecer o estado
  88 +atual de todas as equipes. Os professores e \textit{meta-coach} trabalharam
  89 +juntos para reduzir o problema de comunicação entre todas as equipes (o que
  90 +tornava-se mais complexo conforme a evolução do volume de trabalho). Por
  91 +último, todas as tarefas burocráticas, como a elaboração de relatórios sobre o
  92 +progresso do projeto para o Ministério, foi tratada pelos professores, mas com
  93 +o envolvimento de toda a equipe.
  94 +
  95 +\subsection{Comunicação e gestão das tarefas}
  96 +
  97 +Nossa equipe tinha muitas pessoas trabalhando em conjunto, e a maioria dos
  98 +sêniors trabalhavam remotamente. Além disso, tentamos manter nosso trabalho
  99 +completamente transparente para o governo brasileiro e os cidadãos interessados
  100 +em seguir o projeto. Para lidar com esses casos, usamos um conjunto de
  101 +ferramentas de comunicação e outras para gerenciar o projeto.
  102 +
  103 +Quando um aluno tinha que trabalhar em par com um sênior, normalmente, eles
  104 +usavam o hangout do Google para a comunicação e eles compartilhavam uma sessão
  105 +de terminal GNU/Linux com o tmate, o que lhes permitia compartilhar o mesmo
  106 +editor, com ambos digitando e vendo a tela. Para perguntas e discussão rápida,
  107 +usamos o IRC. Para a notificação geral, usamos as listas de discussão.
  108 +
  109 +Para a gestão do projeto utilizámos o próprio portal SPB; Primeiro para
  110 +validá-lo por nós mesmos, e também porque ele tem todas as ferramentas
  111 +necessárias para o nosso projeto. Basicamente, criamos uma página Wiki, no
  112 +Gitlab integrado ao SPB, com um mapeamento entre as visões estratégica, tática
  113 +e operacional. Do ponto de vista prático, um ``milestone'' no GitLab era uma
  114 +``História de Usuário" (funcionalidade) e um ou mais ``issues'' no GitLab era
  115 +as tarefas para o desenvolvimento da funcionalidade em questão. Com essa
  116 +abordagem, conseguimos dois objetivos importantes: manter toda a gestão o mais
  117 +próximo possível do código-fonte e acompanhar cada funcionalidade desenvolvida
  118 +durante o projeto (uma vez que nós mesmo nos tornamos usuários reais da
  119 +plataforma).
  120 +
  121 +\subsection{Acompanhamento e gerenciamento de projeto de alto nível}
  122 +
  123 +O governo brasileiro costuma trabalhar com o desenvolvimento de software de uma
  124 +forma mais tradicional, diferentemente de nós com métodos ágeis e software
  125 +livre. Essa dissonância nos causou um ruído de comunicação com o governo. Foi
  126 +especialmente difícil convencê-los a aceitar a ideia de escopo aberto e
  127 +desenvolvimento ágil. Entretanto, depois de meses de trabalho e mostrando
  128 +resultados, eles deixaram de resistir aos métodos empíricos.
  129 +
  130 +Definimos algum nível de granularidade de reunião para evitar gerar demasiada
  131 +sobrecarga para os desenvolvedores. Tínhamos reuniões estratégica mensal e
  132 +reuniões planejamento e revisão a cada 15 dias. Na reunião estratégica,
  133 +geralmente, definimos as prioridades e as funcionalidades importantes para o
  134 +governo. Normalmente, os professores, os \textit{coaches} de cada equipe, os
  135 +\textit{meta-coaches} e alguns analistas do Ministério do Planejamento
  136 +participavam dessa reunião. Em geral, discutíamos o que a equipe já produziu
  137 +desde nossa última reunião e definíamos as funcionalidades para a próxima
  138 +versão. Observe que apenas parte da equipe participava dessas reuniões
  139 +estratégicas, mas todos os estudantes interessados estavam convidados a
  140 +participar (pois muitos estudantes quiseram essa experiência durante o
  141 +projeto).
  142 +
  143 +Depois dos encontros estratégicos com os principais atores envolvidos do
  144 +governo, tínhamos um turno de planejamento com todas as equipes juntas. Nessa
  145 +parte, cada equipe trabalhava junto para converter os requisitos em partes
  146 +menores (histórias de usuário) que era representadas como ``Épicos'' da
  147 +``release'' em desenvolvimento. Cada \textit{coach} era responsável pela
  148 +condução do planejamento, e depois a equipe toda a registrava na página wiki do
  149 +projeto (wiki fornecido pelo Gitlab do SPB). Baseado nos ``épicos'', a cada 15
  150 +dias a equipe gerava um o planejamento da iteração/ciclo de desenvolvimento
  151 +(com os pequenos passos dos problemas mapeados). Para manter o governo
  152 +brasileiro sempre atualizado, convidávamos-os a trabalhar conosco para validar
  153 +as funcionalidades em desenvolvimento. Para isso, tínhamos uma reunião a cada
  154 +15 dia. E para manter nosso fluxo de gestão de tarefas, usando a própria
  155 +plataforma do SPB, especialmente o Gitlab, tínhamos:
162 156  
163 157 \begin{enumerate}
164   - \item Project repository: We have one organization with many repositories
165   - \item Milestones: Each milestone was used to register a release
166   - \item Wiki: Each release has one page on wiki with the compilation of
167   - strategical meeting
168   - \item Issues: Each sprint planning generated issues, which we associated to
169   - the specific milestone and updated the wiki with the issue number related
170   - with them. Finally each developer assigned the issue to itself.
  158 +
  159 +\item Temos uma organização com muitos repositórios para cada ferramenta
  160 +integrada e sub-sistema;
  161 +
  162 +\item Cada \textit{milestone} foi usado para registrar uma história de usuário;
  163 +
  164 +\item Cada \textit{release} tem uma página no wiki com a compilação da reunião
  165 +estratégica e o mapeamento sistemático das funcionalidades planejadas;
  166 +
  167 +\item Para cada \textit{milestone} (história de usuário) tem um conjunto de
  168 +\textit{issues} (tarefas) específicas, que também são mapeadas na wiki da
  169 +\textit{release}, indicando qual dupla de desenvolvedores está trabalhando na
  170 +\textit{issue} em questão.
  171 +
171 172 \end{enumerate}
172 173  
173   -Notice that this workflow gave us and the Brazilian government agents
174   -full traceability from a high level view of each feature to the lowest
175   -level (code).
  174 +Observe que este fluxo de trabalho proporcional a nós e aos envolvidos pelo
  175 +governo brasileiro uma rastreabilidade completa de uma visão de alto nível de
  176 +cada funcionalidade (requisito) até para o nível mais baixo (código).
... ...
sbqs2017/content/08-contributions.tex
... ... @@ -1,51 +0,0 @@
1   -\section{Contributions to the upstream communities}
2   -\label{sec:contributions}
3   -
4   -%- projeto feito do jeito certo com relação ao software livre (contribuições upstream etc)
5   -%* Colab -> RevProxy
6   -%* Colab, atualização do python/django
7   -%* Contribuições para o GitLab (autenticação)
8   -%* Noosfero, atualização do Rails, preparação para federação, nova interface ...
9   -%* Coper, empacotamentos (obs), omniauth
10   -
11   -
12   -During the execution of this project we made several contributions to
13   -the upstream communities we interacted with. This occurred due to our
14   -development process aligned with those of the respective communities.
15   -During development, we would explicitly discuss the features and bug
16   -fixes that we were working on with the applicable upstream communities.
17   -This contributed to improve the developers technical solutions with
18   -expertise outside of our team, and make it easier for those changes to
19   -be accepted in the original projects. Having changes accepted upstream
20   -in turn makes our life easier as it minimizes the delta between our
21   -codebase and upstream's allowing us to upgrade and benefit from
22   -development work from others.
23   -
24   -In Colab, we helped upstream redesign the entirely architecture,
25   -enabling the development of plugins to integrate new tools. We also
26   -added a feature that allowed Colab to run asynchronous tasks, which was
27   -a major improvement for us since we were developing a complex system. A
28   -migration to the latest Django version was made (web framework used by
29   -Colab). Moreover, we worked on RevProxy (the more important dependency
30   -of Colab) to put it in a good shape, fixing many bugs.
31   -
32   -Gitlab was the tool that we made the least number of modifications. We
33   -contributed with some improvements related with configuration files and
34   -we developed a new plugin that enables user authentication in Gitlab
35   -through the REMOTE\_USER HTTP header. This plugin was needed because
36   -Colab uses this mechanism to manage the authentication.
37   -
38   -Noosfero was the tool that contemplated several functional requirements,
39   -therefore we made a large number of contributions with upstream. We helped to
40   -migrate to the latest Rails version (web framework used by Noosfero), enable
41   -the federation implementation (federation with other social networks), decouple
42   -the interface and the back-end, and so forth.
43   -
44   -We also made some contributions on the DevOps front. Some members of
45   -them team became maintainers of some python libraries that were used by
46   -our scripts to upload packages to OBS (Open Build Service). We developed
47   -a tool called copr-status to keep track of the different stages of the
48   -lifecycle of each of the individual packages we were working on.
49   -
50   -%TODO: Mezuro
51   -
sbqs2017/content/09-lessons.tex
1   -\section{Lessons Learned}
  1 +\section{Conclusões e Lições Aprendidas}
2 2 \label{sec:lessons}
3 3  
4   -\textbf{How to involve students real-world projects, interacting with
5   -real customers.}
  4 +\textbf{Envolver alunos de graduação em projetos do mundo real, interagindo com clientes reais.}
6 5 %
7   -Our team was mainly composed of software engineering undergraduate
8   -student, who had the opportunity to interact with senior developers and
9   -designers inside the team, as well as with the team of technicians and
10   -managers from the Brazilian Government, and the management team from
11   -UnB.
  6 +Nossa equipe foi composta principalmente de estudantes de graduação em
  7 +engenharia de software, que tiveram a oportunidade de interagir com
  8 +desenvolvedores sênior e designers dentro da equipe, bem como com a equipe de
  9 +técnicos e gerentes do governo brasileiro.
12 10 %
13   -They interacted with professionals that had diverse expertises, and were
14   -able to participate in all levels of the software development process.
15   -This contribted to a great learning opportunity, and for a majority of
16   -them this was their first professional experience.
  11 +Eles interagiram com profissionais que possuíam diversos conhecimentos e foram
  12 +capazes de participar em todos os níveis do processo de desenvolvimento de
  13 +software. Isto contribuiu para uma grande oportunidade de aprendizagem, e para
  14 +a maioria deles esta foi a sua primeira experiência profissional.
17 15  
18   -\textbf{The participation of experienced professionals is crucial to
19   -success of the project.}
20   -One important factor for the students was the composition of the teams
21   -with the participation of experienced professionals.
  16 +\textbf{A participação de profissionais experientes é crucial para o sucesso do projeto.}
22 17 %
23   -On the technical side, the senior developers and designers would handle
24   -the more difficult technical decisions, creating a work environment
25   -where the students could develop their skills in a didactic way without
26   -pressure.
  18 +Um fator importante para os alunos foi a composição das equipes com a
  19 +participação de profissionais experientes. No lado técnico, os desenvolvedores
  20 +sênior e designers lidavam com as decisões técnicas mais difíceis, criando
  21 +um ambiente de trabalho onde os alunos poderiam desenvolver suas habilidades de
  22 +forma didática e sem pressão. No lado gerencial, a participação ativa dos
  23 +professores - que são, no final, os responsáveis pelo projeto - é
  24 +crucial para garantir que a participação dos alunos seja conduzida de forma
  25 +saudável e seja um exemplo de liderar pelo exemplo.
  26 +
  27 +\textbf{Uma relação equilibrada entre academia e indústria.}
27 28 %
28   -On the management side, the active participation of professors -- who
29   -are, in the end, the ones responsible for the project -- is crucial to
30   -make sure student participation is conducted in a healthy way, and is an
31   -instance of leading by example.
32   -
33   -\textbf{A balanced relationship between academia and industry.}
34   -The experience of the SPB project led UnB to develop a work style which
35   -proved to be appropriate for an educational environment that brings
36   -academia and industry together.
37   -%
38   -The highest priority from the university's point of view is the
39   -students. Considering this, the activities of the project were never
40   -prioritized to the detriment of classes and other pedagogical
41   -activities. In summary, we had students working at different times, part
42   -time, remotely or locally, always respecting their individual
43   -conditions, but doing the work in a collective, collaborative and open
44   -way.
45   -%
46   -And even under a potentially adverse environment, the project delivered
47   -the desired solution with success.
  29 +A experiência do projeto SPB levou o LAPPIS/UnB a desenvolver um estilo de trabalho que
  30 +provou ser apropriado para um ambiente educacional que reúne academia e
  31 +indústria. A maior prioridade do ponto de vista da universidade são os alunos.
  32 +Diante disso, as atividades do projeto nunca foram priorizadas em detrimento
  33 +das aulas e outras atividades pedagógicas. Em resumo, tínhamos alunos
  34 +trabalhando em horários diferentes, a tempo parcial, localmente,
  35 +sempre respeitando suas condições individuais, mas fazendo o trabalho de
  36 +maneira coletiva, colaborativa e aberta. E mesmo sob um ambiente potencialmente
  37 +adverso, o projeto entregou a solução desejada com sucesso.
48 38 %
49   -At the end of the project, we noted that the skills developed by the
50   -students were at the state of art of the software engineering practice.
51   -After the project ended, we had team members successfully embracing
52   -opportunities in public, private, national and international
53   -organizations, in addition to those students that went into
54   -entrepreneurship and opened their own companies.
55   -
56   -\textbf{Managing different organizational cultures.}
57   -In the beginning of the project, the Brazilian Government stakeholders
58   -had certain expectations about the development of project that, let's
59   -say, didn't exactly match our work based on agile and FOSS practices.
  39 +No final do projeto, notamos que as habilidades desenvolvidas pelos alunos
  40 +estavam no estado da arte da prática de engenharia de software. Depois que o
  41 +projeto terminou, tivemos membros da equipe que abraçaram com sucesso
  42 +oportunidades em organizações públicas, privadas, nacionais e internacionais,
  43 +além dos estudantes que entraram no empreendedorismo e abriram suas próprias
  44 +empresas. No início do projeto, as partes interessadas do governo brasileiro
  45 +tinham certas expectativas sobre o desenvolvimento de projetos que, digamos,
  46 +não correspondiam exatamente ao nosso trabalho baseado em práticas ágeis e de
  47 +software livre. Tivemos que desenvolver estratégias que apoiassem diferentes
  48 +culturas organizacionais. Conforme relatado na seção\ref{sec:process}, o Ministério do Planejamento é
  49 +organizado em uma estrutura organizacional hierárquica funcional, tipicamente,
  50 +um paradigma de desenvolvimento tradicional. Portanto, tivemos que criar um
  51 +processo de ``tradução'' entre nossa equipe e os analistas do MP que gerenciaram o
  52 +projeto do lado deles.
  53 +
  54 +\textbf{Gerenciar separadamente os objetivos de nível estratégico e de nível operacional.}
60 55 %
61   -We had to develop strategies that would support different these
62   -organizational cultures. As reported in Section \ref{sec:process}, the
63   -MP is organized in a functional hierarchical organizational structure,
64   -typically, a traditional development paradigm. Therefore, we had to
65   -create a translation process between our team and the MP managers who
66   -managed the project on their side assuming a traditional, waterfall
67   -process.
68   -
69   -\textbf{Manage higher-level and lower-level goals separately.}
70   -During the initial phase of the project the MP team would often bring
71   -strategic discussions to technical/operational meetings, where we were
72   -supposed to discuss practical, technical decisions.
  56 +Durante a fase inicial do projeto, a equipe de MP costumava trazer discussões
  57 +estratégicas para reuniões técnicas/operacionais, onde deveríamos discutir
  58 +decisões práticas e técnicas.
73 59 %
74   -This produced a highly complex communication and management environment,
75   -overloading the professors because they were supposed to be responsible
76   -for maintaining the strategic alignment of the MP synchronized with
77   -implementation plans of the development team, specially in light of the
78   -aforementioned culture mismatch. Mixing both concerns in the same
79   -discussions caused confusion on both sides.
  60 +Isso resultou em um ambiente de comunicação e gerenciamento altamente complexo,
  61 +sobrecarregando os professores, uma vez eles eram responsáveis por
  62 +manter o alinhamento estratégico do MP sincronizado com os planejamentos de
  63 +implementação da equipe de desenvolvimento, especialmente à luz do
  64 +desmembramento cultural acima mencionado. A mistura de ambas as preocupações
  65 +nas mesmas discussões causava confusão em ambos os lados. Para o meio e fim do
  66 +projeto, conseguimos manter essas preocupações separadas, o que facilitou o
  67 +trabalho de todos os envolvidos.
  68 +
  69 +\textbf{Não aceitar más decisões técnicas por questões políticas.}
80 70 %
81   -Towards the middle and end of the project we were able to keep those
82   -concerns separated, what eased the work of everyone involved.
83   -
84   -\textbf{Living with ill-advised political decisions.}
85   -At the initial phases of the project, by political and personal
86   -motivation, the main stakeholders from the Brazilian government imposed
87   -the use of Colab to guide the development of the new SPB platform. Our
88   -team was totally against the idea because we already knew that Colab was
89   -a very experimental project and its adoption could dramatically increase
90   -the project complexity. Even though we provided technical reasons to
91   -not utilize Colab, MP was adamant and we had to manage this problem. As
92   -explained in section \ref{sec:architecture} we did massive changes to
93   -it, and at the end of the project we completely rewrote Colab and made
94   -it stable. It is important to notice that the MP compelled us to accept
95   -a technical issue based only on political interests, without considering
96   -all the resources that would be spent due to that decision. At the end
97   -of the project, we verified that Colab indeed consumed a vast amount of
98   -the budget and increased the project complexity. In the end of the
99   -project and after our analysis on the decision made by the MP, we
100   -understand that MP's managers are capable of ignoring technical reasons
101   -in favor to a political decision.
102   -
103   -\textbf{Consider sustainability from the beginning.}
104   -In the process of deploying the SPB platform in the MP structure, we had
105   -to interact with the MP technicians. We did several workshops, training
106   -and a meticulous documentation describing all the required procedures to
107   -update the platform, however, we realized that the MP technicians
108   -constantly avoid the responsibility. After noticing the aforementioned
109   -situation, we organized a specific DevOps that completely automated all
110   -the deployment procedure. We simplified all the platform deployment to a
111   -few steps: (1) initial configurations (just ssh configuration) and (2)
112   -the execution of simple commands to completely update the platform. By
113   -the end of the project, we observed that the MP technicians invariably
114   -still depended on our support to update the platform even with all the
115   -automation provided by us. We were sadly left with a feeling of
116   -uncertainty about the future of the platform after the project ended. In
117   -hindsight, we realize that the MP dedicated systems analysts and
118   -managers to the project, but not operations technicians. The later
119   -should have been more involved with the process so they could at least
120   -comfortable with managing the platform infrastructure.
121   -
122   -% * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados
123   -%% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa
124   -%% afirmação, embora eu e Paulo consigamos perceber isso.
125   -
126   -%===========
127   -% Conclusion
128   -%===========
129   -
130   -\section{Final remarks}
131   -
132   -The portal is available at \url{softwarepublico.gov.br}. All
133   -documentation, including detailed architecture and operation manuals are
134   -also available\footnote{\url{https://softwarepublico.gov.br/doc/}
135   -(in Portuguese only at the moment)}).
  71 +Nas fases iniciais do projeto, por motivação política e pessoal, os principais
  72 +atores do governo brasileiro, envolvidos na época, impuseram o uso da Colab
  73 +para orientar o desenvolvimento da nova plataforma SPB. Nossa equipe estava
  74 +totalmente contra a essa ideia, porque já sabíamos que o Colab era um projeto
  75 +muito experimental e sua adoção poderia aumentar dramaticamente a complexidade
  76 +do projeto. Mesmo nós fornecendo as razões técnicas para não utilizar Colab, MP
  77 +foi inflexível e tivemos de gerir este problema. Fizemos mudanças maciças e, no
  78 +final do projeto, reescrevemos completamente o Colab e o tornamos estável (o
  79 +transformando em um Sistema de Sistema em camada de aplicação). É importante
  80 +notar que o MP nos obrigou a aceitar uma questão técnica baseada apenas em
  81 +interesses políticos, sem considerar todos os recursos que seriam gastos devido
  82 +a essa decisão. No final do projeto, verificamos que a Colab de fato consumiu a
  83 +maior quantidade do orçamento e aumentou a complexidade do projeto.
  84 +
  85 +\textbf{Considerar a sustentabilidade desde o início.}
136 86 %
137   -All the integrated tools are FOSS and our contributions were published
138   -in open repositories, available on the SPB Portal itself. We also
139   -contributed these features back to the respective communities: that
140   -benefits those communities, as well as us since we can share future
141   -development and maintenance effort with other organizations that
142   -participate in their projects.
143   -
144   -More discussion ...
145   -
146   -...
147   -
148   -...
149   -
150   -%* utilização do projeto para formação de recursos humanos (alunos)
151   -
152   -%* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate
153   -
154   -%* o que achamos que irá acontecer com o SPB no futuro breve (acabar)
155   -
156   -%* 69 projetos marcados como SPB, de 81 no total na plataforma.
157   -
158   -%* 47\% é desenvolvido em PHP.
159   -
160   -% foi constatado que aproximadamente 75\% dos softwares \textbf{não} possuem seus códigos-fonte versionados nesta ferramenta. Realizado algumas pesquisas, foi encontrado o código-fonte em outros serviços (Github, Bitbucket).
161   -
162   -% Foram adicionados 31 softwares do SPB em ambas as ferramentas (Mezuro e Code Climate), desenvolvidos em PHP e Python. Estas adições resultaram na análise descrita nos próximos parágrafos. No Mezuro, dos 31 softwares adicionados, somente 4 obtiveram sucesso na avaliação. No Code Climate, 16 softwares realizaram a \textit{build} da avaliação com sucesso. Nos que falharam, alguns dos erros foram encontrados em três das \textit{engines}: ora em \textit{duplication}, ora na \textit{phpmd}, ora na \textit{eslint}.
163   -
164   -% também foram inseridos no Mezuro para avaliação, 5 projetos dos 17 desenvolvidos em Java, com o intuito de ser um contraponto ao Code Climatepor esta não compreender a análise de projetos em Java, C, ou C++. Infelizmente nenhuma das \textit{builds} resultou em resultados concretos.
165   -
166   -%* Debater economia de recursos em orgão públicos
  87 +No processo de implantação da plataforma SPB na estrutura MP, tivemos que
  88 +interagir com os técnicos MP. Fizemos vários workshops, treinamento e uma
  89 +documentação meticulosa descrevendo todos os procedimentos necessários para
  90 +atualizar a plataforma, no entanto, percebemos que os técnicos MP
  91 +constantemente evitavam essa responsabilidade. Depois de notar essa situação,
  92 +nós organizamos uma equipe de DevOps específica que automatizou completamente
  93 +todo o procedimento de implantação. Nós simplificamos toda a implantação da
  94 +plataforma para algumas etapas: (1) configurações iniciais (apenas configuração
  95 +SSH) e (2) a execução de comandos simples para atualizar completamente a
  96 +plataforma. Ao final do projeto, observamos que os técnicos MP sempre dependiam
  97 +do nosso apoio para atualizar a plataforma, mesmo com toda a automação
  98 +fornecida por nós. Ficamos tristemente com um sentimento de incerteza sobre o
  99 +futuro da plataforma após o término do projeto. Em retrospectiva, percebemos
  100 +que o MP dedicou analistas de sistemas e gerentes para o projeto, mas não
  101 +técnicos de operações e desenvolvedores, que deveria ter sido envolvido com o
  102 +processo para que pudesse, pelo menos, de forma confortável fazer o manutenção
  103 +da infra-estrutura plataforma.
  104 +
  105 +Por fim, o novo portal do Software Público Brasileiro está disponível em
  106 +\url{https://softwarepublico.gov.br}. Toda a documentação, incluindo a
  107 +arquitetura detalhada e os manuais de operação, também estão disponíveis em
  108 +\url{https://softwarepublico.gov.br/doc}. Todas as ferramentas integradas são
  109 +software livre e nossas contribuições foram publicadas em repositórios abertos,
  110 +disponíveis no próprio portal SPB. Também contribuímos com funcionalidades e
  111 +melhorias para as respectivas comunidades dos projetos integrados: que
  112 +beneficiam essas comunidades, assim como nós, pois podemos compartilhar o
  113 +desenvolvimento futuro e o esforço de manutenção com outras organizações que
  114 +participam de seus projetos.
167 115  
... ...
sbqs2017/spb.tex
... ... @@ -14,21 +14,21 @@
14 14 \sloppy
15 15 \title{Lições aprendidas no desenvolvimento do novo portal do Software Público Brasileiro}
16 16  
17   -\author{Paulo Meirelles\inst{1,3}, Antonio Terceiro\inst{2}, Melissa Wen\inst{2},
18   - \\Rodrigo Siqueira\inst{3}, Hilmer Neri\inst{1}}
  17 +\author{Paulo Meirelles\inst{1,3}, Antonio Terceiro\inst{2}, Rodrigo Siqueira\inst{3},
  18 + \\Melissa Wen\inst{2}, Hilmer Neri\inst{1}}
19 19  
20 20 \address{Laboratório de Produção, Pesquisa e Inovação em Sofware(LAPPIS)\\
21   - Faculdade UnB Gama (FGA) -- Universidade de Brasília (UnB)\\
22   - Área Especial de Indústria Projeção A, Setor Leste -- Gama - DF -- Brasil
  21 + Faculdade UnB Gama (FGA) -- Universidade de Brasília (UnB)
  22 +% Área Especial de Indústria Projeção A, Setor Leste -- Gama - DF -- Brasil
23 23 \email{\{paulormm,hilmer\}@unb.br}
24 24 \nextinstitute
25   - Cooperativa de Trabalho em Tecnologias Livres -- Colivre\\
26   - Rua Marechal Floriano, 28, Canela, Salvador - BA -- Brasil
  25 + Cooperativa de Trabalho em Tecnologias Livres -- Colivre
  26 +% \\Rua Marechal Floriano, 28, Canela, Salvador - BA -- Brasil
27 27 \email{\{terceiro,melissa\}@colivre.coop.br}
28 28 \nextinstitute
29 29 Centro de Competência em Software Livre (CCSL)\\
30   - Instituto de Matemática e Estatística (IME) -- Universidade de São Paulo (USP)\\
31   - Rua do Matão, 1010, Cidade Universitária -- São Paulo - SP -- Brasil
  30 + Instituto de Matemática e Estatística (IME) -- Universidade de São Paulo (USP)
  31 +% \\Rua do Matão, 1010, Cidade Universitária -- São Paulo - SP -- Brasil
32 32 \email{\{paulormm,siqueira\}@ime.usp.br}
33 33 }
34 34  
... ... @@ -42,9 +42,8 @@
42 42 \input{content/03-requirements}
43 43 \input{content/04-architecture}
44 44 \input{content/05-features}
45   -%\input{content/06-ux}
  45 +\input{content/06-ux}
46 46 \input{content/07-process}
47   -%\input{content/08-contributions}
48 47 \input{content/09-lessons}
49 48  
50 49 %------------------------------------------------------------------------------
... ...