Commit d28721906484828eaf09f622a6edfa15348de725

Authored by Paulo Meireles
1 parent 00023793

Minor adjustments

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 MP, selecionamos alguns sistemas livres candidatos \'a compor a solução  
5 -proposta para o novo SPB e avaliamos os sistemas que juntos poderiam fornecer o maior sub-conjunto possível dos requisitos.  
6 -  
7 -Do ponto de vista da arquitetura, dois requisitos eram importantes para a nova  
8 -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:
9 9
10 \begin{enumerate} 10 \begin{enumerate}
11 \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;
12 -\item \textit{Fornecer uma experi\^encia 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.
13 \end{enumerate} 13 \end{enumerate}
14 14
15 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
16 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
17 -recentes do software original, nos beneficiando pelas melhorias e manutenção feitas  
18 -pelas comunidades de projetos existentes. Proporcionar uma experi\^encia de usuário  
19 -consistente em cima dessas diferentes ferramentas era necessária para fazer a  
20 -transição entre os diferentes sistemas sem a percepção do ponto de vista dos  
21 -usuários, ou seja, sem confundí-lo através de interfaces gráficas completamente  
22 -distintas 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.
23 23
24 Para o primeiro requisito, identificamos quatro sistemas principais que exigiam 24 Para o primeiro requisito, identificamos quatro sistemas principais que exigiam
25 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
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 de experiência 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, testes e tarefas de DevOps (contabilizando 16  
11 -horas-semanais). 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 12
13 O desenvolvimento do projeto SPB exigiu experiência avançada, que os alunos de 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, além de  
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é em outros países, o que levou muito 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
@@ -51,7 +51,8 @@ organização do projeto: @@ -51,7 +51,8 @@ organização do projeto:
51 \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
52 estar juntos fisicamente no laboratório (exceto, é claro, os membros da 52 estar juntos fisicamente no laboratório (exceto, é claro, os membros da
53 equipe remota, mas que estarão on-line). 53 equipe remota, mas que estarão on-line).
54 -\item A cada 2 ou 3 meses, os desenvolvedores sêniores (residentes no Brasil) trabalharia presencialmente 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.
55 \end{enumerate} 56 \end{enumerate}
56 57
57 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:
@@ -61,9 +62,11 @@ ajudar os membros a se organizarem da melhor maneira para todos (sempre @@ -61,9 +62,11 @@ ajudar os membros a se organizarem da melhor maneira para todos (sempre
61 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
62 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
63 tarefas atuais desenvolvidas na iteração (\textit{sprint}) e com a 64 tarefas atuais desenvolvidas na iteração (\textit{sprint}) e com a
64 -responsabilidade de conversar com outras equipes. É importante salientar sobre a alta rotatividade da equipe e do \textit{coach}, pois durante o projeto 65 +responsabilidade de conversar com outras equipes. É importante salientar sobre
  66 +a alta rotatividade da equipe e do \textit{coach}, pois durante o projeto
65 muitos alunos mudaram de equipe para tentar ter diferentes experiências em 67 muitos alunos mudaram de equipe para tentar ter diferentes experiências em
66 -diversas áreas/tecnologias, além daqueles alunos que naturalmente foram se formando. 68 +diversas áreas/tecnologias, além daqueles alunos que naturalmente foram se
  69 +formando.
67 70
68 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
69 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
@@ -71,20 +74,22 @@ complexos, geralmente, foram resolvidos ao consultá-los. Essa dinâmica @@ -71,20 +74,22 @@ complexos, geralmente, foram resolvidos ao consultá-los. Essa dinâmica
71 incentivou os demais alunos a terem o mesmo compartamento do \textit{coach} 74 incentivou os demais alunos a terem o mesmo compartamento do \textit{coach}
72 mesmo sem serem. Por fim, os desenvolvedores sêniores trabalharam diretamente 75 mesmo sem serem. Por fim, os desenvolvedores sêniores trabalharam diretamente
73 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
74 -interagir com profissionais experientes em sua área, além de manter o conhecimento no projeto compartilhado entre as equipes. 77 +interagir com profissionais experientes em sua área, além de manter o
  78 +conhecimento no projeto compartilhado entre as equipes.
75 79
76 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
77 -foram essenciais para a harmonia do projeto: o \textit{meta-coach} e os  
78 -professores. O primeiro era um engenheiro de software recentemente graduado, egresso, e que queria continuar trabalhando no projeto; esses últimos  
79 -eram professores que orquestraram todas as interações entre todos os membros do  
80 -projeto, inclusive do MP. O \textit{meta-coach} normalmente  
81 -trabalhava em uma equipe específica e tinha a tarefa extra de conhecer o estado  
82 -atual de todas as equipes. Os professores e \textit{meta-coach} trabalharam  
83 -juntos para reduzir o problema de comunicação entre todas as equipes (o que  
84 -tornou-se mais complexo conforme a evolução do volume de trabalho). Por  
85 -último, todas as tarefas burocráticas, como a elaboração de relatórios sobre o  
86 -progresso do projeto para o Ministério, foi tratada pelos professores, mas com  
87 -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.
88 93
89 \subsection{Comunicação e gestão das tarefas} 94 \subsection{Comunicação e gestão das tarefas}
90 95
@@ -115,34 +120,40 @@ plataforma). @@ -115,34 +120,40 @@ plataforma).
115 \subsection{Acompanhamento e gerenciamento de projeto de alto nível} 120 \subsection{Acompanhamento e gerenciamento de projeto de alto nível}
116 121
117 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
118 -forma mais tradicional, diferentemente de nós que utilizamos métodos ágeis e software  
119 -livre. Essa dissonância nos causou um ruído de comunicação com o MP. Foi  
120 -especialmente difícil convencê-los a aceitar a ideia de escopo aberto e  
121 -desenvolvimento ágil. Entretanto, depois de meses de trabalho e na medida em que os resultados foram se concretizando, em especial a entrega e implantação frequente de releases, a resistência foi gradualmente diminuindo. 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.
122 129
123 Definimos níveis de granularidade das reuniões para evitar gerar demasiada 130 Definimos níveis de granularidade das reuniões para evitar gerar demasiada
124 -sobrecarga para os membros das equipes, em especial para os alunos. Tínhamos reuniões de caráter estratégico, com periodicidade mensal, e  
125 -reuniões planejamento e revisão de sprints a cada 15 dias. Na reunião estratégica,  
126 -geralmente, eram definidas as prioridades estratégicas do MP, e com isso o conjunto de funcionalidades importantes para atender àquelas prioridades estratégicas. Normalmente, os professores, os \textit{coaches} de cada equipe, os  
127 -\textit{meta-coaches} e alguns analistas do MP  
128 -participavam dessa reunião. Em geral, discutíamos o que a equipe já produziu  
129 -desde nossa última reunião e priorizámos as funcionalidades para a próxima  
130 -versão. Observe que apenas parte da equipe participava dessas reuniões  
131 -estratégicas, mas todos os estudantes interessados estavam convidados a  
132 -participar (pois muitos estudantes quiseram passar por essa experiência durante o  
133 -projeto).  
134 -  
135 -Depois dos encontros estratégicos com os principais atores envolvidos do  
136 -MP, tínhamos um turno de planejamento com todas as equipes juntas. Nessa  
137 -parte, cada equipe trabalhava junto para converter a representação dos requisitos em ``Épicos'' da ``release'' em desenvolvimento, em requisitos  
138 -menores (histórias de usuário). Cada \textit{coach} era responsável pela  
139 -condução do planejamento, e depois a equipe toda a registrava na página wiki do  
140 -projeto (wiki fornecido pelo Gitlab do SPB). Baseado nos ``épicos'', a cada 15  
141 -dias a equipe gerava um o planejamento da sprint/ciclo de desenvolvimento  
142 -(com os pequenos passos dos problemas mapeados). Para manter o MP sempre atualizado, convidávamos-os a trabalhar conosco para validar  
143 -as funcionalidades em desenvolvimento. Para isso, tínhamos uma reunião a cada  
144 -15 dia. E para manter nosso fluxo de gestão de tarefas, usando a própria  
145 -plataforma do SPB, especialmente o Gitlab, tínhamos: 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:
146 157
147 \begin{enumerate} 158 \begin{enumerate}
148 159
@@ -151,7 +162,7 @@ integrada e sub-sistema; @@ -151,7 +162,7 @@ integrada e sub-sistema;
151 162
152 \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;
153 164
154 -\item cada \textit{release} tevw uma página na wiki com a compilação da reunião 165 +\item cada \textit{release} teve uma página na wiki com a compilação da reunião
155 estratégica e o mapeamento das funcionalidades planejadas; 166 estratégica e o mapeamento das funcionalidades planejadas;
156 167
157 \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
@@ -161,4 +172,7 @@ estratégica e o mapeamento das funcionalidades planejadas; @@ -161,4 +172,7 @@ estratégica e o mapeamento das funcionalidades planejadas;
161 172
162 \end{enumerate} 173 \end{enumerate}
163 174
164 -Em suma, esse fluxo de trabalho proporcionou a nós e aos envolvidos do MP uma rastreabilidade completa do alinhamento estratégico do negócio, a uma visão de alto nível de cada funcionalidade (requisito/\'epico), a uma visão de grão menor dos requisitos(história de usuário) até o código-fonte. 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/10-finals.tex
@@ -19,18 +19,30 @@ Ciência da Computação no IME-USP, na área de Sistemas de Software. Foi @@ -19,18 +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 no programa de 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 na Qualidade do Produto de Software.  
36 -Tem colaborado com o desenvolvimento de softwares livres e também com dados abertos do governo. Entusiasta da área de Engenharia de Software, é fundador do laboratório LAPPIS, que possui como foco, a pesquisa e a produção de software, destacando a utilização de métodos de desenvolvimento colaborativo e aberto. Áreas de interesse: métodos ágeis/lean; engenharia de software contínua; engenharia de produto; qualidade de produto de software; análise de dados; mineraç\~ao de repostórios de software; dados abertos do governo; software livre; inovação; empreendedorismo e experimentação aplicada \`a engenharia de software. 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 +
  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.