Commit ca5aac749c4999125fce2fdd31a5a715a941f6fd

Authored by Paulo Meireles
2 parents a14b1099 d2872190

Merge branch 'revisao_hilmer'

cbsoft2017/content/01-introduction.tex
@@ -9,7 +9,7 @@ Público Brasileiro é considerado um bem público e o governo federal assume @@ -9,7 +9,7 @@ Público Brasileiro é considerado um bem público e o governo federal assume
9 algumas responsabilidades relacionadas ao seu uso, mas tem os mesmos princípios 9 algumas responsabilidades relacionadas ao seu uso, mas tem os mesmos princípios
10 de desenvolvimento de software livre, tal qual a tendência à descentralização 10 de desenvolvimento de software livre, tal qual a tendência à descentralização
11 na tomada de decisões, o compartilhamento de informações e do desenvolvimento 11 na tomada de decisões, o compartilhamento de informações e do desenvolvimento
12 -(código), e a interação contínua com seus usuários. Em 2007, o governo federal 12 +(código-fonte), e a interação contínua com seus usuários. Em 2007, o governo federal
13 lançou o Portal SPB com o objetivo de compartilhar projetos de software livre 13 lançou o Portal SPB com o objetivo de compartilhar projetos de software livre
14 desenvolvidos pelo governo brasileiro. Adicionalmente, a Instrução Normativa 14 desenvolvidos pelo governo brasileiro. Adicionalmente, a Instrução Normativa
15 (IN 04/2012) determina que os agentes públicos devem priorizar as soluções 15 (IN 04/2012) determina que os agentes públicos devem priorizar as soluções
@@ -17,7 +17,7 @@ disponíveis no Portal SPB. Em suma, a aquisição de uma solução proprietári @@ -17,7 +17,7 @@ disponíveis no Portal SPB. Em suma, a aquisição de uma solução proprietári
17 deve ser explicitamente justificada ao demonstrar que não há alternativa 17 deve ser explicitamente justificada ao demonstrar que não há alternativa
18 adequada no Portal SPB. 18 adequada no Portal SPB.
19 19
20 -Entretanto, desde 2009, o Portal SPB teve vários problemas técnicas. O código 20 +Entretanto, desde 2009, o Portal SPB apresentou vários problemas técnicos. O código-fonte
21 original da plataforma não estava mais sendo desenvolvido, e havia uma grande 21 original da plataforma não estava mais sendo desenvolvido, e havia uma grande
22 quantidade de dívidas técnicas para superar. Depois de alguns eventos e 22 quantidade de dívidas técnicas para superar. Depois de alguns eventos e
23 encontros para coletar os requisitos via os agentes do governo federal e da 23 encontros para coletar os requisitos via os agentes do governo federal e da
@@ -29,7 +29,7 @@ para desenvolvimento de software colaborativo, e inclui funcionalidades para @@ -29,7 +29,7 @@ para desenvolvimento de software colaborativo, e inclui funcionalidades para
29 redes sociais, listas de discussão, sistema de controle de versão e 29 redes sociais, listas de discussão, sistema de controle de versão e
30 monitoramento de qualidade de código-fonte. Para coordenar e desenvolver esse 30 monitoramento de qualidade de código-fonte. Para coordenar e desenvolver esse
31 projeto durante 30 meses, a UnB recebeu do Governo Federal Brasileiro um total 31 projeto durante 30 meses, a UnB recebeu do Governo Federal Brasileiro um total
32 -de 2.619.965,00 reais. 32 +de R\$ 2.619.965,00.
33 33
34 O projeto foi desenvolvido por uma equipe de 3 professores, 2 estudantes de 34 O projeto foi desenvolvido por uma equipe de 3 professores, 2 estudantes de
35 mestrado e cerca de 50 alunos de graduação (não todos ao mesmo tempo), 35 mestrado e cerca de 50 alunos de graduação (não todos ao mesmo tempo),
@@ -45,7 +45,7 @@ Nosso processo foi baseado em práticas ágeis e nos mecanismos empíricos das @@ -45,7 +45,7 @@ Nosso processo foi baseado em práticas ágeis e nos mecanismos empíricos das
45 comunidades de software livre. Definimos ciclos de desenvolvimento e lançamos 5 45 comunidades de software livre. Definimos ciclos de desenvolvimento e lançamos 5
46 versões do novo Portal SPB. A primeira versão (beta) foi disponibilizada em 46 versões do novo Portal SPB. A primeira versão (beta) foi disponibilizada em
47 setembro de 2014, apenas 9 meses desde o início do projeto. O antigo portal foi 47 setembro de 2014, apenas 9 meses desde o início do projeto. O antigo portal foi
48 -desligado em setembro de 2015. Por fim, a última versão foi entregue em junho 48 +desativado em setembro de 2015. Por fim, a última versão foi entregue em junho
49 de 2016. 49 de 2016.
50 50
51 Neste relato temos como agenda apresentarmos uma visão geral dessa nova geração 51 Neste relato temos como agenda apresentarmos uma visão geral dessa nova geração
cbsoft2017/content/04-architecture.tex
1 \section{Visão geral do novo Portal SPB} 1 \section{Visão geral do novo Portal SPB}
2 \label{sec:architecture} 2 \label{sec:architecture}
3 3
4 -Com base em uma 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 sub-conjunto possível dos requisitos. Nós também estávamos convencidos de  
8 -que seria impossível fornecer todas as funcionalidade com uma única ferramenta.  
9 -  
10 -Do ponto de vista da arquitetura, dois requisitos eram importantes para a nova  
11 -plataforma: 4 +Com base em uma extensa lista de requisitos funcionais definidos pelo MP,
  5 +selecionamos alguns sistemas livres candidatos à compor a solução proposta para
  6 +o novo SPB e avaliamos os sistemas que juntos poderiam fornecer o maior
  7 +sub-conjunto possível dos requisitos. Do ponto de vista da arquitetura, dois
  8 +requisitos eram importantes para a nova plataforma:
12 9
13 \begin{enumerate} 10 \begin{enumerate}
14 \item \textit{Integrar sistemas livres existentes}, com diferenças mínimas de suas versões originais; 11 \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. 12 +\item \textit{Fornecer uma experiência de usuário unificada} entre os diferentes sistemas, bem como a autenticação centralizada.
16 \end{enumerate} 13 \end{enumerate}
17 14
18 A adoção de sistemas livres existentes e a minimização de mudanças feitas 15 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 16 localmente tiveram como objetivo ser capazes de atualizar para versões mais
20 -recentes do software original, nos beneficiando pelas 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 confundí-lo através de interfaces completamente  
25 -diferentes ao interagir com o portal. 17 +recentes do software original, nos beneficiando pelas melhorias e manutenção
  18 +feitas pelas comunidades de projetos existentes. Proporcionar uma experiência
  19 +de usuário consistente em cima dessas diferentes ferramentas era necessária
  20 +para fazer a transição entre os diferentes sistemas sem a percepção do ponto de
  21 +vista dos usuários, ou seja, sem confundí-lo através de interfaces gráficas
  22 +completamente distintas ao interagir com o portal.
26 23
27 Para o primeiro requisito, identificamos quatro sistemas principais que exigiam 24 Para o primeiro requisito, identificamos quatro sistemas principais que exigiam
28 equipes especializadas para o trabalho no processo de integração. As equipes 25 equipes especializadas para o trabalho no processo de integração. As equipes
@@ -58,12 +55,12 @@ desenvolvimento colaborativo em torno do repositório. @@ -58,12 +55,12 @@ desenvolvimento colaborativo em torno do repositório.
58 55
59 \item \textbf{Mezuro\footnote{\url{http://mezuro.org/}}:} é uma plataforma para 56 \item \textbf{Mezuro\footnote{\url{http://mezuro.org/}}:} é uma plataforma para
60 coletar métricas de código-fonte com o objetivo de monitorar a qualidade 57 coletar métricas de código-fonte com o objetivo de monitorar a qualidade
61 -interna de projetos de software livre escrito em C, C ++, Java, Python, Ruby ou 58 +interna de projetos de software livre escritos em C, C ++, Java, Python, Ruby ou
62 PHP. 59 PHP.
63 60
64 \end{itemize} 61 \end{itemize}
65 62
66 -Do ponto de vista prático, a plataforma SPB foi implantada em 7 máquinas 63 +Do ponto de vista da implantação, a plataforma SPB foi distribuída em 7 máquinas
67 virtuais com diferentes 64 virtuais com diferentes
68 funções\footnote{\url{https://softwarepublico.gov.br/doc/arquitetura.html}}. 65 funções\footnote{\url{https://softwarepublico.gov.br/doc/arquitetura.html}}.
69 66
cbsoft2017/content/07-process.tex
@@ -2,23 +2,23 @@ @@ -2,23 +2,23 @@
2 \label{sec:process} 2 \label{sec:process}
3 3
4 A nossa equipe de desenvolvimento era composta por profissionais com diferentes 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 seus horários de trabalho durante o  
9 -semestre, a fim de não prejudicar a sua formação. Sua rotina de trabalho diária  
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 5 +níveis de experiência e habilidades, sendo a maioria deles estudantes de
  6 +graduação de engenharia de software (a partir do 4º semestre de curso). Uma vez
  7 +que os alunos não podiam dedicar muitas horas por semana ao projeto, eles
  8 +sempre tiveram a flexibilidade para negociar seus horários de trabalho durante
  9 +o semestre, a fim de não prejudicar a sua formação. Sua rotina de trabalho
  10 +diária no projeto incluiu programação, testes e tarefas de DevOps
  11 +(contabilizando 16 horas-semanais).
  12 +
  13 +O desenvolvimento do projeto SPB exigiu experiência avançada, que os alunos de
14 graduação geralmente ainda não têm. Por essa razão, alguns desenvolvedores 14 graduação geralmente ainda não têm. Por essa 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 15 +sênior se juntaram ao projeto para ajudar com as questões mais difíceis, além
  16 +de transferir conhecimento aos alunos. Sua principal tarefa era fornecer
  17 +soluções para problemas complexos. Como esses profissionais são muito hábeis e
  18 +o projeto 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 19 parcialmente no projeto (20 horas-semanais). Além disso, eles viviam em estados
20 -diferentes espalhados pelo Brasil, ou até outros países, o que levou muita da  
21 -comunicação a ser on-line. 20 +diferentes espalhados pelo Brasil, ou até em outros países, o que levou muito
  21 +da comunicação a ser on-line.
22 22
23 Em resumo, nosso processo de trabalho foi baseado em práticas de 23 Em resumo, nosso processo de trabalho foi baseado em práticas de
24 desenvolvimento de software livre e colaborativo. O processo de desenvolvimento 24 desenvolvimento de software livre e colaborativo. O processo de desenvolvimento
@@ -27,12 +27,11 @@ livre, destacando o alto grau de automação resultante das práticas de DevOps. @@ -27,12 +27,11 @@ livre, destacando o alto grau de automação resultante das práticas de DevOps.
27 Assim, o processo de trabalho foi executado de forma cadenciada e contínua. 27 Assim, o processo de trabalho foi executado de forma cadenciada e contínua.
28 28
29 Finalmente, o último grupo de participantes desse projeto foi composto por 29 Finalmente, o último grupo de participantes desse projeto foi composto por
30 -funcionários do Ministério  
31 -do Planejamento, Desenvolvimento e Gestão (MP). Todas as decisões do projeto, 30 +servidores públicos do MP. Todas as decisões do projeto,
32 validações e definições de escopo foram feitas com eles. Dessa forma, 31 validações e definições de escopo foram feitas com eles. Dessa forma,
33 desenvolvemos produtos de software de forma incremental, com lançamentos 32 desenvolvemos produtos de software de forma incremental, com lançamentos
34 -alinhados aos objetivos estratégicos do negócio. Como se pode ver, o projeto  
35 -tinha muitos tipos diferentes de \textit{stakeholders} que tinham de ser 33 +alinhados aos objetivos estratégicos do negócio. O projeto
  34 +tinha muitos perfis diferentes de \textit{stakeholders} que tinham de ser
36 organizados e sincronizados. 35 organizados e sincronizados.
37 36
38 \subsection{Organização da equipe} 37 \subsection{Organização da equipe}
@@ -52,49 +51,50 @@ organização do projeto: @@ -52,49 +51,50 @@ organização do projeto:
52 \item Deve haver uma manhã ou uma tarde por semana quando \emph{todos} deverem 51 \item Deve haver uma manhã ou uma tarde por semana quando \emph{todos} deverem
53 estar juntos fisicamente no laboratório (exceto, é claro, os membros da 52 estar juntos fisicamente no laboratório (exceto, é claro, os membros da
54 equipe remota, mas que estarão on-line). 53 equipe remota, mas que estarão on-line).
55 -\item A cada 2 ou 3 meses, os desenvolvedores sêniors (residentes no Brasil)  
56 - voaria e trabalharia ao lado dos alunos por uma semana. 54 +\item A cada 2 ou 3 meses, os desenvolvedores sêniores (residentes no Brasil)
  55 +trabalharia presencialmente ao lado dos alunos por uma semana.
57 \end{enumerate} 56 \end{enumerate}
58 57
59 Com as regras acima, dividimos todo o projeto em quatro equipes diferentes: 58 Com as regras acima, dividimos todo o projeto em quatro equipes diferentes:
60 Colab, Noosfero, Design e DevOps. Cada equipe tinha um líder (\textit{coach}) 59 Colab, Noosfero, Design e DevOps. Cada equipe tinha um líder (\textit{coach})
61 responsável por reduzir o problema de comunicação com as outras equipes e 60 responsável por reduzir o problema de comunicação com as outras equipes e
62 -ajudar os membros a se organizar da melhor maneira para todos (sempre 61 +ajudar os membros a se organizarem da melhor maneira para todos (sempre
63 respeitando seu tempo de trabalho). O \textit{coach} sempre foi um dos alunos 62 respeitando seu tempo de trabalho). O \textit{coach} sempre foi um dos alunos
64 que trabalhava como desenvolvedor na equipe com o dever extra de registar as 63 que trabalhava como desenvolvedor na equipe com o dever extra de registar as
65 tarefas atuais desenvolvidas na iteração (\textit{sprint}) e com a 64 tarefas atuais desenvolvidas na iteração (\textit{sprint}) e com a
66 -responsabilidade de conversar com outras equipes. Uma coisa importante a  
67 -observar é a mutabilidade da equipe e do \textit{coach}, pois durante o projeto  
68 -muitos alunos mudaram de equipes para tentar ter diferentes experiências em  
69 -diversas áreas. 65 +responsabilidade de conversar com outras equipes. É importante salientar sobre
  66 +a alta rotatividade da equipe e do \textit{coach}, pois durante o projeto
  67 +muitos alunos mudaram de equipe para tentar ter diferentes experiências em
  68 +diversas áreas/tecnologias, além daqueles alunos que naturalmente foram se
  69 +formando.
70 70
71 Uma característica das equipes foi a presença de (pelo menos) um sênior por 71 Uma característica das equipes foi a presença de (pelo menos) um sênior por
72 equipe. Isso era essencial, porque as decisões difíceis e os problemas 72 equipe. Isso era essencial, porque as decisões difíceis e os problemas
73 complexos, geralmente, foram resolvidos ao consultá-los. Essa dinâmica 73 complexos, geralmente, foram resolvidos ao consultá-los. Essa dinâmica
74 -incentivamos aos demais alunos a terem o mesmo compartamento do \textit{coach}  
75 -mesmo sem serem. Por fim, os desenvolvedores sêniors trabalharam diretamente 74 +incentivou os demais alunos a terem o mesmo compartamento do \textit{coach}
  75 +mesmo sem serem. Por fim, os desenvolvedores sêniores trabalharam diretamente
76 com os alunos, e isso foi importante para dar ao graduando a oportunidade de 76 com os alunos, e isso foi importante para dar ao graduando a oportunidade de
77 -interagir com profissionais experientes em sua área e manter o conhecimento  
78 -fluindo no projeto. 77 +interagir com profissionais experientes em sua área, além de manter o
  78 +conhecimento no projeto compartilhado entre as equipes.
79 79
80 Por fim, tivemos ainda dois últimos elementos da organização da equipe que 80 Por fim, tivemos ainda dois últimos elementos da organização da equipe que
81 -foram essenciais para a harmonia do projeto: o \textit{meta-coach} e  
82 -professores. O primeiro era um engenheiro de software recentemente graduado  
83 -(nossos ex-alunos) e que queria continuar trabalhando no projeto; estes últimos  
84 -eram professores que orquestraram todas as interações entre todos os membros do  
85 -projeto, inclusive do governo federal. O \textit{meta-coach} normalmente  
86 -trabalhava em uma equipe específica e tinha a tarefa extra de conhecer o estado  
87 -atual de todas as equipes. Os professores e \textit{meta-coach} trabalharam  
88 -juntos para reduzir o problema de comunicação entre todas as equipes (o que  
89 -tornava-se mais complexo conforme a evolução do volume de trabalho). Por  
90 -último, todas as tarefas burocráticas, como a elaboração de relatórios sobre o  
91 -progresso do projeto para o Ministério, foi tratada pelos professores, mas com  
92 -o envolvimento de toda a equipe. 81 +foram essenciais para a harmonia do projeto: o \textit{meta-coach} e os
  82 +professores. O primeiro era um engenheiro de software recentemente graduado,
  83 +egresso, e que queria continuar trabalhando no projeto; esses últimos eram
  84 +professores que orquestraram todas as interações entre todos os membros do
  85 +projeto, inclusive do MP. O \textit{meta-coach} normalmente trabalhava em uma
  86 +equipe específica e tinha a tarefa extra de conhecer o estado atual de todas as
  87 +equipes. Os professores e \textit{meta-coach} trabalharam juntos para reduzir o
  88 +problema de comunicação entre todas as equipes (o que tornou-se mais complexo
  89 +conforme a evolução do volume de trabalho). Por último, todas as tarefas
  90 +burocráticas, como a elaboração de relatórios sobre o progresso do projeto para
  91 +o Ministério, foi tratada pelos professores, mas com o envolvimento de toda a
  92 +equipe.
93 93
94 \subsection{Comunicação e gestão das tarefas} 94 \subsection{Comunicação e gestão das tarefas}
95 95
96 Nossa equipe tinha muitas pessoas trabalhando em conjunto, e a maioria dos 96 Nossa equipe tinha muitas pessoas trabalhando em conjunto, e a maioria dos
97 -sêniors trabalhavam remotamente. Além disso, tentamos manter nosso trabalho 97 +sêniores trabalhavam remotamente. Além disso, tentamos manter nosso trabalho
98 completamente transparente para o governo brasileiro e os cidadãos interessados 98 completamente transparente para o governo brasileiro e os cidadãos interessados
99 em seguir o projeto. Para lidar com esses casos, usamos um conjunto de 99 em seguir o projeto. Para lidar com esses casos, usamos um conjunto de
100 ferramentas de comunicação e outras para gerenciar o projeto. 100 ferramentas de comunicação e outras para gerenciar o projeto.
@@ -106,11 +106,11 @@ editor, com ambos digitando e vendo a tela. Para perguntas e discussão rápida, @@ -106,11 +106,11 @@ editor, com ambos digitando e vendo a tela. Para perguntas e discussão rápida,
106 usamos o IRC. Para a notificação geral, usamos as listas de discussão. 106 usamos o IRC. Para a notificação geral, usamos as listas de discussão.
107 107
108 Para a gestão do projeto utilizávamos o próprio Portal SPB; Primeiro para 108 Para a gestão do projeto utilizávamos o próprio Portal SPB; Primeiro para
109 -validá-lo por nós mesmos, e também porque ele tem todas as ferramentas 109 +validá-lo por nós mesmos, e também porque ele tinha as ferramentas
110 necessárias para o nosso projeto. Basicamente, criamos uma página Wiki, no 110 necessárias para o nosso projeto. Basicamente, criamos uma página Wiki, no
111 Gitlab integrado ao SPB, com um mapeamento entre as visões estratégica, tática 111 Gitlab integrado ao SPB, com um mapeamento entre as visões estratégica, tática
112 e operacional. Do ponto de vista prático, um ``milestone'' no GitLab era uma 112 e operacional. Do ponto de vista prático, um ``milestone'' no GitLab era uma
113 -``História de Usuário" (funcionalidade) e um ou mais ``issues'' no GitLab era 113 +``História de Usuário" (funcionalidade) e um ou mais ``issues'' no GitLab eram
114 as tarefas para o desenvolvimento da funcionalidade em questão. Com essa 114 as tarefas para o desenvolvimento da funcionalidade em questão. Com essa
115 abordagem, conseguimos dois objetivos importantes: manter toda a gestão o mais 115 abordagem, conseguimos dois objetivos importantes: manter toda a gestão o mais
116 próximo possível do código-fonte e acompanhar cada funcionalidade desenvolvida 116 próximo possível do código-fonte e acompanhar cada funcionalidade desenvolvida
@@ -120,56 +120,59 @@ plataforma). @@ -120,56 +120,59 @@ plataforma).
120 \subsection{Acompanhamento e gerenciamento de projeto de alto nível} 120 \subsection{Acompanhamento e gerenciamento de projeto de alto nível}
121 121
122 O governo brasileiro costuma trabalhar com o desenvolvimento de software de uma 122 O governo brasileiro costuma trabalhar com o desenvolvimento de software de uma
123 -forma mais tradicional, diferentemente de nós com métodos ágeis e software  
124 -livre. Essa dissonância nos causou um ruído de comunicação com o governo. Foi  
125 -especialmente difícil convencê-los a aceitar a ideia de escopo aberto e  
126 -desenvolvimento ágil. Entretanto, depois de meses de trabalho e mostrando  
127 -resultados, eles deixaram de resistir aos métodos empíricos.  
128 -  
129 -Definimos algum nível de granularidade de reunião para evitar gerar demasiada  
130 -sobrecarga para os desenvolvedores. Tínhamos reuniões estratégica mensal e  
131 -reuniões planejamento e revisão a cada 15 dias. Na reunião estratégica,  
132 -geralmente, definimos as prioridades e as funcionalidades importantes para o  
133 -governo. Normalmente, os professores, os \textit{coaches} de cada equipe, os  
134 -\textit{meta-coaches} e alguns analistas do Ministério do Planejamento  
135 -participavam dessa reunião. Em geral, discutíamos o que a equipe já produziu  
136 -desde nossa última reunião e definíamos as funcionalidades para a próxima  
137 -versão. Observe que apenas parte da equipe participava dessas reuniões  
138 -estratégicas, mas todos os estudantes interessados estavam convidados a  
139 -participar (pois muitos estudantes quiseram essa experiência durante o  
140 -projeto).  
141 -  
142 -Depois dos encontros estratégicos com os principais atores envolvidos do  
143 -governo, tínhamos um turno de planejamento com todas as equipes juntas. Nessa  
144 -parte, cada equipe trabalhava junto para converter os requisitos em partes  
145 -menores (histórias de usuário) que era representadas como ``Épicos'' da  
146 -``release'' em desenvolvimento. Cada \textit{coach} era responsável pela  
147 -condução do planejamento, e depois a equipe toda a registrava na página wiki do  
148 -projeto (wiki fornecido pelo Gitlab do SPB). Baseado nos ``épicos'', a cada 15  
149 -dias a equipe gerava um o planejamento da iteração/ciclo de desenvolvimento  
150 -(com os pequenos passos dos problemas mapeados). Para manter o governo  
151 -brasileiro sempre atualizado, convidávamos-os a trabalhar conosco para validar  
152 -as funcionalidades em desenvolvimento. Para isso, tínhamos uma reunião a cada  
153 -15 dia. E para manter nosso fluxo de gestão de tarefas, usando a própria  
154 -plataforma do SPB, especialmente o Gitlab, tínhamos: 123 +forma mais tradicional, diferentemente de nós que utilizamos métodos ágeis e
  124 +software livre. Essa dissonância nos causou um ruído de comunicação com o MP.
  125 +Foi especialmente difícil convencê-los a aceitar a ideia de escopo aberto e
  126 +desenvolvimento ágil. Entretanto, depois de meses de trabalho e na medida em
  127 +que os resultados foram se concretizando, em especial a entrega e implantação
  128 +frequente de \textit{releases}, a resistência foi gradualmente diminuindo.
  129 +
  130 +Definimos níveis de granularidade das reuniões para evitar gerar demasiada
  131 +sobrecarga para os membros das equipes, em especial para os alunos. Tínhamos
  132 +reuniões de caráter estratégico, com periodicidade mensal, e reuniões
  133 +planejamento e revisão de sprints a cada 15 dias. Na reunião estratégica,
  134 +geralmente, eram definidas as prioridades estratégicas do MP, e com isso o
  135 +conjunto de funcionalidades importantes para atender àquelas prioridades
  136 +estratégicas. Normalmente, os professores, os \textit{coaches} de cada equipe,
  137 +os \textit{meta-coaches} e alguns analistas do MP participavam dessa reunião.
  138 +Em geral, discutíamos o que a equipe já produziu desde nossa última reunião e
  139 +priorizámos as funcionalidades para a próxima versão. Observe que apenas parte
  140 +da equipe participava dessas reuniões estratégicas, mas todos os estudantes
  141 +interessados estavam convidados a participar (pois muitos estudantes quiseram
  142 +passar por essa experiência durante o projeto).
  143 +
  144 +Depois dos encontros estratégicos com os principais atores envolvidos do MP,
  145 +tínhamos um turno de planejamento com todas as equipes juntas. Nessa parte,
  146 +cada equipe trabalhava junto para converter a representação dos requisitos em
  147 +``épicos da \textit{release}'' em desenvolvimento, em requisitos menores
  148 +(histórias de usuário). Cada \textit{coach} era responsável pela condução do
  149 +planejamento, e depois a equipe toda a registrava na página wiki do projeto
  150 +(wiki fornecido pelo Gitlab do SPB). Baseado nos ``épicos'', a cada 15 dias a
  151 +equipe gerava um o planejamento da iteração/ciclo de desenvolvimento (com os
  152 +pequenos passos dos problemas mapeados). Para manter o MP sempre atualizado,
  153 +convidávamos-os a trabalhar conosco para validar as funcionalidades em
  154 +desenvolvimento. Para isso, tínhamos uma reunião a cada 15 dia. E para manter
  155 +nosso fluxo de gestão de tarefas, usando a própria plataforma do SPB,
  156 +especialmente o Gitlab, tínhamos:
155 157
156 \begin{enumerate} 158 \begin{enumerate}
157 159
158 -\item Temos uma organização com muitos repositórios para cada ferramenta 160 +\item uma organização com muitos repositórios para cada ferramenta
159 integrada e sub-sistema; 161 integrada e sub-sistema;
160 162
161 -\item Cada \textit{milestone} foi usado para registrar uma história de usuário; 163 +\item cada \textit{milestone} foi usado para registrar uma história de usuário;
162 164
163 -\item Cada \textit{release} tem uma página no wiki com a compilação da reunião  
164 -estratégica e o mapeamento sistemático das funcionalidades planejadas; 165 +\item cada \textit{release} teve uma página na wiki com a compilação da reunião
  166 +estratégica e o mapeamento das funcionalidades planejadas;
165 167
166 -\item Para cada \textit{milestone} (história de usuário) tem um conjunto de 168 +\item para cada \textit{milestone} (história de usuário) tem um conjunto de
167 \textit{issues} (tarefas) específicas, que também são mapeadas na wiki da 169 \textit{issues} (tarefas) específicas, que também são mapeadas na wiki da
168 \textit{release}, indicando qual dupla de desenvolvedores está trabalhando na 170 \textit{release}, indicando qual dupla de desenvolvedores está trabalhando na
169 \textit{issue} em questão. 171 \textit{issue} em questão.
170 172
171 \end{enumerate} 173 \end{enumerate}
172 174
173 -Em suma, esse fluxo de trabalho proporcionou a nós e aos participantes pelo  
174 -governo brasileiro uma rastreabilidade completa e uma visão de alto nível de  
175 -cada funcionalidade (requisito) até para o nível mais baixo (código). 175 +Em suma, esse fluxo de trabalho proporcionou a nós e aos envolvidos do MP uma
  176 +rastreabilidade completa do alinhamento estratégico do negócio, a uma visão de
  177 +alto nível de cada funcionalidade (requisito/épico), a uma visão de grão
  178 +menor dos requisitos(história de usuário) até o código-fonte.
cbsoft2017/content/09-lessons.tex
@@ -5,8 +5,7 @@ @@ -5,8 +5,7 @@
5 % 5 %
6 Nossa equipe foi composta principalmente de estudantes de graduação em 6 Nossa equipe foi composta principalmente de estudantes de graduação em
7 engenharia de software, que tiveram a oportunidade de interagir com 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. 8 +desenvolvedores e designers sêniores dentro da equipe, bem como com a equipe de técnicos e gerentes do governo brasileiro.
10 % 9 %
11 Eles interagiram com profissionais que possuíam diversos conhecimentos e foram 10 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 11 capazes de participar em todos os níveis do processo de desenvolvimento de
@@ -37,19 +36,14 @@ maneira coletiva, colaborativa e aberta. E mesmo sob um ambiente potencialmente @@ -37,19 +36,14 @@ maneira coletiva, colaborativa e aberta. E mesmo sob um ambiente potencialmente
37 adverso, o projeto entregou a solução desejada com sucesso. 36 adverso, o projeto entregou a solução desejada com sucesso.
38 % 37 %
39 Ao final do projeto, notamos que as habilidades desenvolvidas pelos alunos 38 Ao 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 39 +os capacitaram próximo ao estado da prática de engenharia de software. Após a conclus\~ao do
  40 +projeto, tivemos membros da equipe que abraçaram com sucesso
42 oportunidades em organizações públicas, privadas, nacionais e internacionais, 41 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, 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. 42 +além dos estudantes que empreenderam e abriram suas próprias
  43 +empresas. Conforme relatado na seção\ref{sec:process}, o MP possui uma estrutura organizacional funcional, hierárquica, tipicamente presente no paradigma de desenvolvimento tradicional. Diante disso, tivemos que desenvolver estratégias e processos de trabalho que apoiassem a comunicação de diferentes culturas organizacionais.
  44 +
  45 +
  46 +
53 47
54 \textbf{Gerenciar separadamente os objetivos de nível estratégico e de nível operacional.} 48 \textbf{Gerenciar separadamente os objetivos de nível estratégico e de nível operacional.}
55 % 49 %
@@ -62,43 +56,33 @@ sobrecarregando os professores, uma vez eles eram responsáveis por @@ -62,43 +56,33 @@ sobrecarregando os professores, uma vez eles eram responsáveis por
62 manter o alinhamento estratégico do MP sincronizado com os planejamentos de 56 manter o alinhamento estratégico do MP sincronizado com os planejamentos de
63 implementação da equipe de desenvolvimento, especialmente à luz do 57 implementação da equipe de desenvolvimento, especialmente à luz do
64 desmembramento cultural acima mencionado. A mistura de ambas as preocupações 58 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 59 +nas mesmas discussões causava confusão em ambos os lados. Na metade final do
66 projeto, conseguimos manter essas preocupações separadas, o que facilitou o 60 projeto, conseguimos manter essas preocupações separadas, o que facilitou o
67 trabalho de todos os envolvidos. 61 trabalho de todos os envolvidos.
68 62
69 \textbf{Não aceitar más decisões técnicas por questões políticas.} 63 \textbf{Não aceitar más decisões técnicas por questões políticas.}
70 % 64 %
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, ao  
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. Ao final do projeto, verificamos que a Colab de fato consumiu a  
83 -maior quantidade do orçamento e aumentou a complexidade do projeto. 65 +Nas fases iniciais do projeto, por motivação política, os principais
  66 +atores do MP, envolvidos à época, impuseram a restrição do uso do software Colab. Nossa equipe foi contra a essa ideia, porque sabíamos que o Colab era um projeto
  67 +muito experimental e sua adoção poderia aumentar a complexidade
  68 +do projeto. Mesmo com as justificativas técnicas para não adoção do Colab, o MP manteve a restrição e tivemos de gerir este problema. Para adequar o Colab às necessidades do SPB, ao
  69 +final do projeto, tivemos que reescrevê-lo e com isso, o tornamos estável (o
  70 +transformando em um Sistema de Sistema em camada de aplicação). Ao final do projeto, verificamos que o Colab, de fato, consumiu a
  71 +maior quantidade do orçamento e contribuiu sobremaneira para o aumento da complexidade do projeto.
84 72
85 \textbf{Considerar a sustentabilidade desde o início.} 73 \textbf{Considerar a sustentabilidade desde o início.}
86 % 74 %
87 No processo de implantação da plataforma SPB na estrutura do MP, tivemos que 75 No processo de implantação da plataforma SPB na estrutura do MP, tivemos que
88 -interagir com os técnicos do MP. Fizemos vários workshops, treinamento e uma 76 +interagir com os técnicos do MP. Realizamos workshops, treinamentos e uma
89 documentação meticulosa descrevendo todos os procedimentos necessários para 77 documentação meticulosa descrevendo todos os procedimentos necessários para
90 -atualizar a plataforma, no entanto, percebemos que os técnicos do 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 do MP sempre dependiam 78 +atualizar a plataforma. Organizamos uma equipe específica de DevOps que automatizou completamente
  79 +todo o procedimento de implantação. Simplificamos a implantação da
  80 +plataforma em algumas etapas: (1) configurações iniciais (apenas configuração
  81 +SSH) e (2) a execução de comandos para atualizar completamente o ambiente. Ao final do projeto, observamos que os técnicos do MP sempre dependiam
97 do nosso apoio para atualizar a plataforma, mesmo com toda a automação 82 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 83 +fornecida por nós. Em retrospectiva, percebemos
100 que o MP dedicou analistas de sistemas e gerentes para o projeto, mas não 84 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 85 +técnicos de operações e desenvolvedores, que deveriam ter sido envolvidos com o
102 processo para que pudessem, pelo menos, de forma confortável, fazer a manutenção 86 processo para que pudessem, pelo menos, de forma confortável, fazer a manutenção
103 da infra-estrutura plataforma. 87 da infra-estrutura plataforma.
104 88
@@ -111,6 +95,6 @@ disponíveis no próprio Portal SPB. Também contribuímos com funcionalidades e @@ -111,6 +95,6 @@ disponíveis no próprio Portal SPB. Também contribuímos com funcionalidades e
111 melhorias para as respectivas comunidades dos projetos integrados: que 95 melhorias para as respectivas comunidades dos projetos integrados: que
112 beneficiam essas comunidades, assim como nós, pois podemos compartilhar o 96 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 97 desenvolvimento futuro e o esforço de manutenção com outras organizações que
114 -participam de seus projetos. 98 +participam desses projetos.
115 99
116 100
cbsoft2017/content/10-finals.tex
@@ -19,23 +19,30 @@ Ciência da Computação no IME-USP, na área de Sistemas de Software. Foi @@ -19,23 +19,30 @@ Ciência da Computação no IME-USP, na área de Sistemas de Software. Foi
19 pesquisador visitante na Southern Illinois University Carbondale, Estados 19 pesquisador visitante na Southern Illinois University Carbondale, Estados
20 Unidos, em 2011. Tem um amplo histórico de colaboração com a comunidade 20 Unidos, em 2011. Tem um amplo histórico de colaboração com a comunidade
21 software livre brasileira, entre outras, ministrando dezenas de palestras e 21 software livre brasileira, entre outras, ministrando dezenas de palestras e
22 -parcipando como painelista em vários eventos nacionais e internacionais nas últimas  
23 -duas décadas. Mais recentemente, coordenou a Evolução do Portal do Software  
24 -Público Brasileiro. Também, foi consultor do projeto Participa.Br, na Secretaria-Geral  
25 -da Presidência da República, para o desenvolvimento de uma plataforma de  
26 -participação social baseada em projetos de software livre. 22 +parcipando como painelista em vários eventos nacionais e internacionais nas
  23 +últimas duas décadas. Mais recentemente, coordenou a Evolução do Portal do
  24 +Software Público Brasileiro. Também, foi consultor do projeto Participa.Br, na
  25 +Secretaria-Geral da Presidência da República, para o desenvolvimento de uma
  26 +plataforma de participação social baseada em projetos de software livre.
27 \\ 27 \\
28 \\ 28 \\
29 {\it Hilmer Neri} é professor do Bacharelado em Engenharia de Software da 29 {\it Hilmer Neri} é professor do Bacharelado em Engenharia de Software da
30 -Universidade de Brasília. Está cursando o doutorado em Engenharia de Sistemas e  
31 -Computação na COPPE-UFRJ. Em 2002, concluiu seu mestrado em Ciência da  
32 -Computação pela Universidade Federal de Campina Grande. Acumula 20 anos de  
33 -experiência profissional na indústria de software, tendo atuado em empresas nas  
34 -esferas pública e privada. Nos últimos anos tem se dedicado a pesquisar e  
35 -praticar aspectos da Produção de Software com foco no Gerenciamento do Produto.  
36 -Nessa área, tem colaborado com o desenvolvimento de softwares livres e também  
37 -com dados abertos do governo. Entusiasta da área de Engenharia de Software, é  
38 -fundador e membro do laboratório LAPPIS, que possui como foco a pesquisa e a  
39 -produção de software, destacando a utilização de métodos ágeis aplicados às  
40 -áreas de qualidade de produto, análise de dados, segurança e software livre. 30 +Universidade de Brasília. Está cursando o doutorado no programa de Engenharia
  31 +de Sistemas e Computação na COPPE-UFRJ. Em 2002, concluiu seu mestrado em
  32 +Ciência da Computação pela Universidade Federal de Campina Grande. Acumula 20
  33 +anos de experiência profissional na indústria de software, tendo atuado em
  34 +empresas nas esferas pública e privada. Nos últimos anos tem se dedicado a
  35 +pesquisar e praticar aspectos da Produção de Software com foco na Qualidade do
  36 +Produto de Software. Tem colaborado com o desenvolvimento de softwares livres
  37 +e também com dados abertos do governo. Entusiasta da área de Engenharia de
  38 +Software, é fundador do laboratório LAPPIS, que possui como foco, a pesquisa e
  39 +a produção de software, destacando a utilização de métodos de desenvolvimento
  40 +colaborativo e aberto.
41 41
  42 +\section*{Agradecimentos}
  43 +
  44 +Agracemos à Melissa Wen, Rodrigo Siqueira, Antonio Terceiro e Lucas Kanashiro
  45 +pela co-autoria neste texto. Um agradecimento especial a todos os demais
  46 +professores, profissionais e alunos que participaram do projeto. Por fim,
  47 +agradecemos ao Prof. Leonardo Lazarte, do CDTC/UnB, e ao Prof. Fabio Kon, do
  48 +CCSL-IME-USP, pelas parcerias estratégicas e apoio constante.