Compare View
Commits (6)
-
Review of "Open Questions" (revisão geral de texto #20) See merge request !6
Showing
4 changed files
Show diff stats
opensym2017/content/04-researchdesign.tex
@@ -27,7 +27,7 @@ managers from the Brazilian Government. | @@ -27,7 +27,7 @@ managers from the Brazilian Government. | ||
27 | For the majority of the students, this was a first professional experience. | 27 | For the majority of the students, this was a first professional experience. |
28 | Even though, our development process defined a central role on students participation. | 28 | Even though, our development process defined a central role on students participation. |
29 | 29 | ||
30 | -textbf{Q3:} \textit{How to introduce collaborative and agile | 30 | +\textbf{Q3:} \textit{How to introduce collaborative and agile |
31 | practices typical in FLOSS environments in the governmental development process?} | 31 | practices typical in FLOSS environments in the governmental development process?} |
32 | % | 32 | % |
33 | The software development on Brazilian government is based on a very traditional way, | 33 | The software development on Brazilian government is based on a very traditional way, |
opensym2017/content/05-requirements.tex
1 | \section{Requirements} | 1 | \section{Requirements} |
2 | \label{sec:requirements} | 2 | \label{sec:requirements} |
3 | 3 | ||
4 | +\begin{comment} | ||
4 | In 2013, the SPB Portal had more than 600 thousand unique visitors, generating | 5 | In 2013, the SPB Portal had more than 600 thousand unique visitors, generating |
5 | more than 16 million page views with about 50 million hits. By evaluating only | 6 | more than 16 million page views with about 50 million hits. By evaluating only |
6 | the main projects, there were more than 15 thousand downloads and 4 thousand | 7 | the main projects, there were more than 15 thousand downloads and 4 thousand |
7 | messages exchanged in their forums. These data illustrates the potential of the | 8 | messages exchanged in their forums. These data illustrates the potential of the |
8 | SPB Portal, even with several limitations in the past. | 9 | SPB Portal, even with several limitations in the past. |
10 | +\end{comment} | ||
9 | 11 | ||
10 | By preparing the evolution project described in this paper, the Brazilian | 12 | By preparing the evolution project described in this paper, the Brazilian |
11 | government promoted 3 events to collect the requirements, in particular from | 13 | government promoted 3 events to collect the requirements, in particular from |
@@ -15,32 +17,24 @@ SPB concepts and requirements with IT stakeholders from the Brazilian | @@ -15,32 +17,24 @@ SPB concepts and requirements with IT stakeholders from the Brazilian | ||
15 | government and public organizations. | 17 | government and public organizations. |
16 | 18 | ||
17 | After these 3 rounds discussing the new SPB platform, the Brazilian government | 19 | After these 3 rounds discussing the new SPB platform, the Brazilian government |
18 | -listed about 145 requirements and developed a ``mind | ||
19 | -map''\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}} | ||
20 | -to guide the SPB portal evolution. In this scenario, the 10 most voted | ||
21 | -requirements were: | 20 | +listed about 145 requirements. The 10 most voted requirements were: |
21 | +(i) Source code repository with public access; | ||
22 | +(ii) Visit community pages without login; | ||
23 | +(iii) Distributed version control system; | ||
24 | +(iv) Scores of users and developers collaboration; | ||
25 | +(v) Search software by features; | ||
26 | +(vi) Integration with social networks; | ||
27 | +(vii) Repository for future ideas and requirements; | ||
28 | +(viii) Friendly URL to access a public software community page; | ||
29 | +(ix) User feedback about a public software; | ||
30 | +(x) Report of the experience about the use of a public software. | ||
22 | 31 | ||
23 | -\begin{enumerate} | ||
24 | - | ||
25 | -\item Source code repository with public access; | ||
26 | -\item Visit community pages without login; | ||
27 | -\item Distributed version control system; | ||
28 | -\item Scores of users and developers collaboration; | ||
29 | -\item Search software by features; | ||
30 | -\item Integration with social networks; | ||
31 | -\item Repository for future ideas and requirements; | ||
32 | -\item Friendly URL to access a public software community page; | ||
33 | -\item User feedback about a public software; | ||
34 | -\item Report of the experience about the use of a public software; | ||
35 | - | ||
36 | -\end{enumerate} | ||
37 | - | ||
38 | -\begin{figure}[hbt] | ||
39 | - \centering | ||
40 | - \includegraphics[width=\linewidth]{figures/technological-requirements.png} | ||
41 | - \caption{Technological requirements.} | ||
42 | - \label{fig:requirements} | ||
43 | -\end{figure} | 32 | +%\begin{figure}[hbt] |
33 | +% \centering | ||
34 | +% \includegraphics[width=\linewidth]{figures/technological-requirements.png} | ||
35 | +% \caption{Technological requirements.} | ||
36 | +% \label{fig:requirements} | ||
37 | +%\end{figure} | ||
44 | 38 | ||
45 | 39 | ||
46 | There were other requirements based on the experience of the IT | 40 | There were other requirements based on the experience of the IT |
@@ -54,23 +48,16 @@ user experience in the new platform. | @@ -54,23 +48,16 @@ user experience in the new platform. | ||
54 | At the first moment, we desired to release an initial version that could | 48 | At the first moment, we desired to release an initial version that could |
55 | replace the old SPB portal. For that, the first version should have | 49 | replace the old SPB portal. For that, the first version should have |
56 | features such as: | 50 | features such as: |
57 | - | ||
58 | -\begin{enumerate} | ||
59 | - | ||
60 | -\item An organized public software catalog; | ||
61 | -\item Social network environment (profiles for users, software pages, and community pages); | ||
62 | -\item Content Management Systems (CMS) features; | ||
63 | -\item Web-based Git repository manager with wiki and issue tracking features; | ||
64 | -\item Mailing lists and discussion forums; | ||
65 | - | ||
66 | -\end{enumerate} | 51 | +(i) An organized public software catalog; |
52 | +(ii) Social network environment (profiles for users, software pages, and community pages); | ||
53 | +(iii) Content Management Systems (CMS) features; | ||
54 | +(iv) Web-based Git repository manager with wiki and issue tracking features; | ||
55 | +(v) Mailing lists and discussion forums; | ||
67 | 56 | ||
68 | Other requirements were also planned during the conception phase of the | 57 | Other requirements were also planned during the conception phase of the |
69 | SPB evolution project, such as an integrated search engine and a | 58 | SPB evolution project, such as an integrated search engine and a |
70 | web-based source code static analysis monitor. By analyzing all of these | 59 | web-based source code static analysis monitor. By analyzing all of these |
71 | -requirements, we proposed the technological requirements | ||
72 | -illustrated in Figure \ref{fig:requirements} to guide the development of | ||
73 | -the new SPB platform. In other words, we have designed the SPB evolution | 60 | +requirements, we have designed the SPB evolution |
74 | project based on existing FLOSS tools. However, the integration of | 61 | project based on existing FLOSS tools. However, the integration of |
75 | several existing systems that were already implemented in different | 62 | several existing systems that were already implemented in different |
76 | programming languages and frameworks, adding features such as a | 63 | programming languages and frameworks, adding features such as a |
opensym2017/content/06-architecture.tex
@@ -25,46 +25,25 @@ specialized teams for work in the integration process. The teams learned | @@ -25,46 +25,25 @@ specialized teams for work in the integration process. The teams learned | ||
25 | how to develop for their assigned systems and contributed to the | 25 | how to develop for their assigned systems and contributed to the |
26 | original communities, so that the version we used were not significantly | 26 | original communities, so that the version we used were not significantly |
27 | different from the original. | 27 | different from the original. |
28 | - | 28 | +% |
29 | At the end of the project, the SPB portal was composed of more than ten | 29 | At the end of the project, the SPB portal was composed of more than ten |
30 | -systems, such as Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix, and | ||
31 | -Munin. The remainder of this section describes the most relevant of | ||
32 | -them, as well as how they were integrated into the platform. | ||
33 | - | ||
34 | -\subsection{Colab} | 30 | +systems, such as Colab, Noosfero, Gitlab, and Mezuro. |
35 | 31 | ||
36 | Colab\footnote{\url{https://github.com/colab}} is a systems integration | 32 | Colab\footnote{\url{https://github.com/colab}} is a systems integration |
37 | platform for web applications. One of its goals is allowing different | 33 | platform for web applications. One of its goals is allowing different |
38 | applications to be combined in such a way that an user does not notice | 34 | applications to be combined in such a way that an user does not notice |
39 | the change between applications. For that, Colab provides facilities | 35 | the change between applications. For that, Colab provides facilities |
40 | -for: | ||
41 | - | ||
42 | -\begin{itemize} | ||
43 | - \item \textit{Centralized authentication}: Users are automatically | ||
44 | -identified for each application without having to enter login | ||
45 | -credentials on each of them; | ||
46 | - \item \textit{Visual consistency}: Colab is able to change the HTML | ||
47 | -code produced by the integrated applications, such as defining default | ||
48 | -template or reusing common HTML pages, in order to provide a unified | ||
49 | -interface; | ||
50 | - \item \textit{Relaying of events between applications}: The | ||
51 | -integrated applications or Colab itself are able to trigger an action | ||
52 | -on another application; | ||
53 | - \item \textit{Integrated search engine}: It is possible to set up | ||
54 | -exactly which data needs to be indexed from each application and how | ||
55 | -users are directed to this information on correspondent application; | ||
56 | -\end{itemize} | ||
57 | - | 36 | +for: (i) Centralized authentication, (ii) Visual consistency, (iii) Relaying of events between applications, and (iv) Integrated search engine. |
37 | +% | ||
58 | Colab implements this integration by working as a reverse proxy for the | 38 | Colab implements this integration by working as a reverse proxy for the |
59 | integration applications, that is, all external requests pass through | 39 | integration applications, that is, all external requests pass through |
60 | Colab before reaching them. | 40 | Colab before reaching them. |
61 | - | 41 | +% |
62 | Initially, Colab had support for a small set of applications (Trac, GNU | 42 | Initially, Colab had support for a small set of applications (Trac, GNU |
63 | Mailman, and Apache Lucene) and support for them was hard-coded. Our | 43 | Mailman, and Apache Lucene) and support for them was hard-coded. Our |
64 | team evolved Colab so that it can now receive plugins that add support | 44 | team evolved Colab so that it can now receive plugins that add support |
65 | new applications without the need of changes to the Colab core. | 45 | new applications without the need of changes to the Colab core. |
66 | 46 | ||
67 | -\subsection{Noosfero} | ||
68 | 47 | ||
69 | Noosfero\footnote{\url{http://noosfero.org}} is a software for building | 48 | Noosfero\footnote{\url{http://noosfero.org}} is a software for building |
70 | social and collaboration networks. Besides the classical social | 49 | social and collaboration networks. Besides the classical social |
@@ -73,31 +52,29 @@ and a general-purpose CMS (Content Management System). Most of the user | @@ -73,31 +52,29 @@ and a general-purpose CMS (Content Management System). Most of the user | ||
73 | interactions with SPB is through Noosfero: user registration, project | 52 | interactions with SPB is through Noosfero: user registration, project |
74 | home pages and documentation, and contact forms. | 53 | home pages and documentation, and contact forms. |
75 | 54 | ||
76 | -\subsection{Gitlab} | ||
77 | 55 | ||
78 | -GitLab\footnote{\url{http://gitlab.com}} is a web-based Git repository | ||
79 | -manager with wiki pages and issue tracking features. Gitlab is a FLOSS | 56 | +Gitlab\footnote{\url{http://gitlab.com}} is a web-based Git repository |
57 | +manager with wiki pages and issue tracking features. It is a FLOSS | ||
80 | platform and focuses on delivering a holistic solution that will see | 58 | platform and focuses on delivering a holistic solution that will see |
81 | developers from idea to production seamlessly and on a single platform. | 59 | developers from idea to production seamlessly and on a single platform. |
82 | - | 60 | +% |
83 | Gitlab has several unique features, such as built-in continuous | 61 | Gitlab has several unique features, such as built-in continuous |
84 | integration and continuous deployment, flexible permissions, tracking of | 62 | integration and continuous deployment, flexible permissions, tracking of |
85 | Work-in-Progress work, moving issues between projects, group-level | 63 | Work-in-Progress work, moving issues between projects, group-level |
86 | milestones, creating new branches from issues, issues board, and time | 64 | milestones, creating new branches from issues, issues board, and time |
87 | tracking. | 65 | tracking. |
88 | 66 | ||
89 | -\subsection{Mezuro} | ||
90 | 67 | ||
91 | Mezuro\footnote{\url{http://mezuro.org/}} is a platform to | 68 | Mezuro\footnote{\url{http://mezuro.org/}} is a platform to |
92 | collect source code metrics to monitor the internal quality of software written | 69 | collect source code metrics to monitor the internal quality of software written |
93 | in C, C++, Java, Python, Ruby, and PHP. | 70 | in C, C++, Java, Python, Ruby, and PHP. |
94 | - | 71 | +% |
95 | In general, source code metrics tools also do not present a friendly way | 72 | In general, source code metrics tools also do not present a friendly way |
96 | to interpret its results and, even more, do not follow a standardization | 73 | to interpret its results and, even more, do not follow a standardization |
97 | between them. Mezuro collects and presents these results to the end | 74 | between them. Mezuro collects and presents these results to the end |
98 | user, specially, by analyzing source code metric history during its life | 75 | user, specially, by analyzing source code metric history during its life |
99 | cycle. | 76 | cycle. |
100 | - | 77 | +% |
101 | The Mezuro platform provides a single interface grouping available | 78 | The Mezuro platform provides a single interface grouping available |
102 | tools, allows selection and composition of metrics in a flexible manner, | 79 | tools, allows selection and composition of metrics in a flexible manner, |
103 | stores the metrics evolution history, presents results in a friendly | 80 | stores the metrics evolution history, presents results in a friendly |
@@ -106,13 +83,6 @@ accordingly to their own context. | @@ -106,13 +83,6 @@ accordingly to their own context. | ||
106 | 83 | ||
107 | \subsection{System unification and User eXperience evolution} | 84 | \subsection{System unification and User eXperience evolution} |
108 | 85 | ||
109 | -\begin{figure}[hbt] | ||
110 | - \centering | ||
111 | - \includegraphics[width=\linewidth]{figures/arch.png} | ||
112 | - \caption{SPB architecture overview.} | ||
113 | - \label{fig:architecture} | ||
114 | -\end{figure} | ||
115 | - | ||
116 | The conceptual architecture of the platform is presented in Figure | 86 | The conceptual architecture of the platform is presented in Figure |
117 | \ref{fig:architecture}. Colab initially handles all user interaction, | 87 | \ref{fig:architecture}. Colab initially handles all user interaction, |
118 | directing requests to one of the integrated applications. It | 88 | directing requests to one of the integrated applications. It |
@@ -123,6 +93,13 @@ functionality of each application, a search o n the SPB portal might | @@ -123,6 +93,13 @@ functionality of each application, a search o n the SPB portal might | ||
123 | return content from any of the applications, be it web pages, mailing | 93 | return content from any of the applications, be it web pages, mailing |
124 | list posts, or source code. | 94 | list posts, or source code. |
125 | 95 | ||
96 | +\begin{figure}[hbt] | ||
97 | + \centering | ||
98 | + \includegraphics[width=.8\linewidth]{figures/arch.png} | ||
99 | + \caption{SPB architecture overview.} | ||
100 | + \label{fig:architecture} | ||
101 | +\end{figure} | ||
102 | + | ||
126 | The integration of collaborative environments goes beyond functional aspects. | 103 | The integration of collaborative environments goes beyond functional aspects. |
127 | Offering the population an unified experience across these environments has | 104 | Offering the population an unified experience across these environments has |
128 | been the key to encourage the use of the platform as it reduces the perception | 105 | been the key to encourage the use of the platform as it reduces the perception |
@@ -148,8 +125,6 @@ interface had to adapt for each individual scenario. In particular | @@ -148,8 +125,6 @@ interface had to adapt for each individual scenario. In particular | ||
148 | Noosfero did not yet have a responsive design; we engaged in its | 125 | Noosfero did not yet have a responsive design; we engaged in its |
149 | development and contributed towards that goal. | 126 | development and contributed towards that goal. |
150 | 127 | ||
151 | -\begin{comment} | ||
152 | -%FALTA DE ESPAÇO | ||
153 | \subsection{Deploy} | 128 | \subsection{Deploy} |
154 | 129 | ||
155 | The SPB platform was deployed in 7 virtual machines with different functions, | 130 | The SPB platform was deployed in 7 virtual machines with different functions, |
@@ -157,7 +132,7 @@ as we can see in Figure \ref{fig:architecture2}. | @@ -157,7 +132,7 @@ as we can see in Figure \ref{fig:architecture2}. | ||
157 | 132 | ||
158 | \begin{figure*}[hbt] | 133 | \begin{figure*}[hbt] |
159 | \centering | 134 | \centering |
160 | - \includegraphics[width=\linewidth]{figures/arch3.png} | 135 | + \includegraphics[width=.8\linewidth]{figures/arch3.png} |
161 | \caption{Instanciation view of the SPB architecture.} | 136 | \caption{Instanciation view of the SPB architecture.} |
162 | \label{fig:architecture2} | 137 | \label{fig:architecture2} |
163 | \end{figure*} | 138 | \end{figure*} |
@@ -187,4 +162,4 @@ static analysis tools on source code stored in repository and provide this data | @@ -187,4 +162,4 @@ static analysis tools on source code stored in repository and provide this data | ||
187 | to Prezento. A social network and CMS (Content Manager System) is provided by | 162 | to Prezento. A social network and CMS (Content Manager System) is provided by |
188 | Noosfero in \textit{social}, and the databases of all tools with a cache | 163 | Noosfero in \textit{social}, and the databases of all tools with a cache |
189 | service are in \textit{database}. | 164 | service are in \textit{database}. |
190 | -\end{comment} | 165 | + |
opensym2017/content/08-process.tex
@@ -2,113 +2,112 @@ | @@ -2,113 +2,112 @@ | ||
2 | \label{sec:process} | 2 | \label{sec:process} |
3 | 3 | ||
4 | The SPB team was composed of a variety of professionals with different levels | 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 | 5 | +and skills, where most of them were undergraduate students of |
6 | +software engineering. Since students could | ||
7 | +not dedicate many hours per week to the project, they had the | ||
8 | flexibility to negotiate their work schedule during the semester in | 8 | flexibility to negotiate their work schedule during the semester in |
9 | -order to not harm their classes and coursework. Their daily work routine | 9 | +order to not harm their classes and coursework. Their work routine |
10 | in the project included programming and DevOps tasks. | 10 | in the project included programming and DevOps tasks. |
11 | 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 | 12 | +The project required a vast experience and background that |
13 | +usually undergraduate students do not have. For this reason, a few senior | ||
14 | +developers have joined the project to help with the more difficult issues | ||
15 | and to transfer knowledge to the students. Their main task was to provide | 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 | 16 | +solutions for complex problems, working as developers. As |
17 | +these professionals are very skillful and the project could not fund full-time | ||
18 | +work for all of them, some of them worked partially on the project. In addition, | ||
19 | +they lived in different Brazilian states, which led much of the | ||
20 | communication to be online. | 20 | communication to be online. |
21 | 21 | ||
22 | In short, our work process was based on open and collaborative software | 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 FLOSS communities practices, highlighting the | 23 | +development practices. The development process was based on the |
24 | +adaptation of different agile and FLOSS communities practices, with a | ||
25 | high degree of automation resulting from DevOps practices. Thus, the work | 25 | high degree of automation resulting from DevOps practices. Thus, the work |
26 | process was executed in a cadenced and continuous way. | 26 | process was executed in a cadenced and continuous way. |
27 | 27 | ||
28 | Finally, the last group of actors of this project was composed of employees | 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, | 29 | +of the Brazilian Ministry of Planning, |
30 | Development, and Management (MP is the Brazilian acronym). All the project | 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 | -sort of stakeholders that had to be organized and synchronized. | 31 | +decisions, validations, and scope definitions were made by them. In this way, we |
32 | +incrementally developed a software product with releases aligned to | ||
33 | +strategic business objectives. As one can see, the project had a wide range | ||
34 | +of different stakeholders that had to be organized and synchronized. | ||
35 | 35 | ||
36 | \subsection{Team organization} | 36 | \subsection{Team organization} |
37 | 37 | ||
38 | -Approximately 70\% of the development teams were composed of software | 38 | +Approximately 70\% of the development team was composed of software |
39 | engineering undergraduate students from UnB and they worked physically | 39 | engineering undergraduate students from UnB and they worked physically |
40 | in the same laboratory. Each student had their own schedule based on | 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: | 41 | +her classes, what complicates the implementation of pair programming. |
42 | +The senior developers tried to synchronize their schedule with | ||
43 | +students schedules. To cope with this scenario, we had a few | ||
44 | +basic rules guiding the project organization: | ||
45 | 45 | ||
46 | \begin{enumerate} | 46 | \begin{enumerate} |
47 | \item Classes have high priority for undergraduate students; | 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 | 48 | + \item Pairing whenever possible (locally or remotely); |
49 | + \item We had one morning or afternoon per week when | ||
50 | + \emph{everyone}, but the remote members, | ||
51 | + should be together physically in the laboratory; | ||
52 | + \item Every 3 to 4 months the senior developers would travel to work | ||
53 | alongside the students for a few days. | 53 | alongside the students for a few days. |
54 | \end{enumerate} | 54 | \end{enumerate} |
55 | 55 | ||
56 | With the aforementioned rules we divided all the project into four | 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. | 57 | +different teams: Colab, Noosfero, Design, and DevOps. One student of each team was the |
58 | +coach, responsible for reducing the communication problem with other | ||
59 | +teams and helping the members to organize themselves in the best way for | ||
60 | +everyone (always respecting their work time). The coach | ||
61 | +had also the extra duty of registering | ||
62 | +the current tasks developed in the sprint. | ||
63 | +One important thing to notice is the mutability | ||
64 | +of the team and the coach. During the project many students changed | ||
65 | +their teams to try different areas. | ||
66 | 66 | ||
67 | One characteristic of the teams was the presence of (at least) one | 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 | 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 | 69 | +problems were usually referred to them. So, it was not the coach role |
70 | +to deal with complicated technical decisions, what encouraged | ||
71 | students to be coaches. Lastly, the senior developers worked directly | 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 | 72 | +with the students, and this was important to give to students the |
73 | +opportunity to interact with a savvy professional in their areas and to | ||
74 | keep the knowledge flowing in the project. | 74 | keep the knowledge flowing in the project. |
75 | 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 | 76 | +Finally, we had to add two more elements to the team organization that |
77 | +were essential for the project harmony: the meta-coach and professors. | ||
78 | +The former was a software engineer recently graduated that wanted | ||
79 | +to keep working on the project. The latter were professors that | ||
80 | orchestrated all the interactions between all members of the project. | 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 | 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. | 82 | +task of knowing the current status of all teams. Professors and the |
83 | +meta-coach worked together to reduce the communication problem among | ||
84 | +teams. Lastly, all the paperwork tasks, such as reporting on the | ||
85 | +project progress to the Ministry, was handled by professors. | ||
86 | 86 | ||
87 | \subsection{Communication and management} | 87 | \subsection{Communication and management} |
88 | 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 | 89 | +Our team had many people working together, and most of the seniors worked in |
90 | +different cities remotely. Also, we tried to keep our work completely clear to | ||
91 | the Brazilian government and citizens interested in following the project. 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. | 92 | +handle these cases, we used a set of communication and management tools. |
94 | 93 | ||
95 | -For communication between members in different places, we used: video | 94 | +For communication between members in different places we used: video |
96 | conferencing with shared terminal tools, IRC, and mailing lists. For example, | 95 | conferencing with shared terminal tools, IRC, and mailing lists. For example, |
97 | when one student had to work in pair with a senior, normally, they used video | 96 | when one student had to work in pair with a senior, normally, they used video |
98 | conferencing tool for talking and shared a terminal session (both typing and | 97 | conferencing tool for talking and shared a terminal session (both typing and |
99 | -seeing the screen in real time). For questions and fast discussion, we used | 98 | +seeing each other screen in real time). For questions and fast discussion, we used |
100 | IRC. For general notification, we used the mailing lists. | 99 | IRC. For general notification, we used the mailing lists. |
101 | 100 | ||
102 | For managing the project we used the SPB Portal itself; first to validate it by | 101 | For managing the project we used the SPB Portal itself; first to validate it by |
103 | ourselves, and also because it had all the required tools. We basically created | 102 | ourselves, and also because it had all the required tools. We basically created |
104 | one wiki page per release in the SPB Gitlab instance with a mapping between | 103 | one wiki page per release in the SPB Gitlab instance with a mapping between |
105 | -strategical, tactical, and operational views. In a practical point of view, one | ||
106 | -milestone per user history (feature), and one or more issues for addressing | 104 | +strategical, tactical, and operational views. We had one |
105 | +milestone per user history (feature) and one or more issues for addressing | ||
107 | each feature. With this approach we achieved two important goals: keeping all | 106 | each feature. With this approach we achieved two important goals: keeping all |
108 | -the management as close possible to to the source code, and tracking every | 107 | +the management as close as possible to the source code and tracking every |
109 | feature developed during the project. Our decision to | 108 | feature developed during the project. Our decision to |
110 | -use Wiki initially was empirical, but later reinforced by a research conducted | ||
111 | -by Joseph Chao showing the advantage of using Wikis \cite{chao2007student, | 109 | +use the Wiki initially was empirical, but later reinforced by a research conducted |
110 | +by Joseph Chao showing the advantage of using Wikis~\cite{chao2007student, | ||
112 | opensourcestyle}. | 111 | opensourcestyle}. |
113 | 112 | ||
114 | \subsection{High-level project management and reporting} | 113 | \subsection{High-level project management and reporting} |
@@ -117,14 +116,14 @@ The Brazilian government used to work with software development in a | @@ -117,14 +116,14 @@ The Brazilian government used to work with software development in a | ||
117 | very traditional way. They would frequently focus on documents and not | 116 | very traditional way. They would frequently focus on documents and not |
118 | on what was, in our opinion, what really matters: working software. This | 117 | on what was, in our opinion, what really matters: working software. This |
119 | dissonance caused us a communication noise with MP, because they would | 118 | dissonance caused us a communication noise with MP, because they would |
120 | -often question our work style. It was especially hard to convince them | 119 | +often question our work style. It was especially hard to convince them |
121 | to accept the idea of open scope and agile development, but after months | 120 | to accept the idea of open scope and agile development, but after months |
122 | of labor and showing results they stopped resisting. | 121 | of labor and showing results they stopped resisting. |
123 | 122 | ||
124 | We defined some level of meeting granularity to avoid generating too | 123 | We defined some level of meeting granularity to avoid generating too |
125 | -much overhead to the developers. We had a strategical and validating | 124 | +much overhead to the developers. We had a strategical and a validating |
126 | meeting with MP (the former once in a month and the latter each 15th | 125 | meeting with MP (the former once in a month and the latter each 15th |
127 | -day), release plaining with the entire team (one per month), and finally | 126 | +day), a release planning with the entire team (one per month), and finally |
128 | a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a | 127 | a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a |
129 | diagram that represents our meeting organization. | 128 | diagram that represents our meeting organization. |
130 | 129 | ||
@@ -141,41 +140,42 @@ coach of each team, the meta-coach, and some employees of the MP would | @@ -141,41 +140,42 @@ coach of each team, the meta-coach, and some employees of the MP would | ||
141 | participate in this meeting. We usually discussed what the team already | 140 | participate in this meeting. We usually discussed what the team already |
142 | produced since our last meeting, and established the new features for | 141 | produced since our last meeting, and established the new features for |
143 | the next release. Notice that just part of the team would join this | 142 | the next release. Notice that just part of the team would join this |
144 | -meeting to avoid generating unnecessary overhead to the developers, but | ||
145 | -all the students interested to participate were allowed to join (many | ||
146 | -students wanted this experience during the project). | 143 | +meeting to avoid generating unnecessary overhead to developers, but |
144 | +all the students interested to participate were allowed to join, since many | ||
145 | +students wanted this experience during the project. | ||
147 | 146 | ||
148 | After the strategical meeting with Brazilian government agents, we had a | 147 | After the strategical meeting with Brazilian government agents, we had a |
149 | -planning turn with all teams together. In this part, each team worked together | 148 | +planning phase with all teams together. In this part, each team worked together |
150 | to convert the MP wishes into smaller parts which were represented by the epics of | 149 | to convert the MP wishes into smaller parts which were represented by the epics of |
151 | -the release. Each coach was responsible for conducting the planning, and after | ||
152 | -that record it on the project wiki (the wiki provided by Gitlab). With this | ||
153 | -epic, each 14th day the team have generated their sprint scheduler (with small | 150 | +the release. Each coach was responsible for conducting the planning and |
151 | +recording it on the project wiki (the wiki provided by Gitlab). With this | ||
152 | +epic, each 14th day the team have documented their sprint schedule (with small | ||
154 | achievements mapped to issues). | 153 | achievements mapped to issues). |
155 | 154 | ||
156 | To keep the Brazilian government always updated, we invited them to work | 155 | To keep the Brazilian government always updated, we invited them to work |
157 | with us to validate the new features in progress. Normally we had a | 156 | with us to validate the new features in progress. Normally we had a |
158 | -meeting each 15th day. Basically, this was our work flow, we always kept | 157 | +meeting each 15th day. Basically, this was our work flow. We always kept |
159 | everything extremely open to the MP (our way of working, and the one | 158 | everything extremely open to the MP (our way of working, and the one |
160 | often used by open source projects) and to the team. | 159 | often used by open source projects) and to the team. |
161 | 160 | ||
162 | -To keep the track of all of those things we used the SPB itself, | 161 | +To keep the track of all of these things we used the SPB itself, |
163 | especially Gitlab. Basically, we had: | 162 | especially Gitlab. Basically, we had: |
164 | 163 | ||
165 | \begin{enumerate} | 164 | \begin{enumerate} |
166 | - \item Project repository: We have one organization with many repositories; | ||
167 | - \item Milestones: Each milestone was used to register a release; | ||
168 | - \item Wiki: Each release has one page on wiki with the compilation of | 165 | + \item Project repository: we have one organization with many repositories; |
166 | + \item Milestones: each milestone was used to register a release; | ||
167 | + \item Wiki: each release has one wiki page with the compilation of the | ||
169 | strategical meeting; | 168 | strategical meeting; |
170 | - \item Issues: Each sprint planning generated issues, which we associated to | ||
171 | - the specific milestone and updated the wiki with the issue number related | ||
172 | - with them. Finally each developer assigned the issue to itself. | 169 | + \item Issues: each sprint planning generated issues, which we associated to |
170 | + the related milestone and registered on the related wiki page. | ||
171 | + Finally, each developer assigned the issue to herself. | ||
173 | \end{enumerate} | 172 | \end{enumerate} |
174 | 173 | ||
175 | Notice that this workflow gave us and the Brazilian government agents full | 174 | Notice that this workflow gave us and the Brazilian government agents full |
176 | traceability from a high level view of each feature to the lowest level (code). | 175 | traceability from a high level view of each feature to the lowest level (code). |
177 | -It is important to highlight that we converge to this workflow after many | 176 | +It is important to highlight that we converged to this workflow after many |
178 | experiments. For example, we used a tool named Redmine for organizing our tasks | 177 | experiments. For example, we used a tool named Redmine for organizing our tasks |
179 | -during the sprints, however, this tool revealed inefficient for our case since | 178 | +during some sprints. However, this tool revealed to be inefficient for our case since |
180 | the government agents lost part of the project traceability. We realized that | 179 | the government agents lost part of the project traceability. We realized that |
181 | -centralize all the work in the SPB portal is the best option for our case. | 180 | +centralize all the work in the SPB portal was the best option for our case. |
181 | + |