Commit d04d35a9ca7a4abe61fd2fe0175a94c2aa5f5552
Exists in
master
and in
3 other branches
Merge branch 'master' of softwarepublico.gov.br:softwarepublico/articles
Showing
1 changed file
with
13 additions
and
22 deletions
Show diff stats
opensym2017/content/06-architecture.tex
| 1 | \section{Architecture} | 1 | \section{Architecture} |
| 2 | \label{sec:architecture} | 2 | \label{sec:architecture} |
| 3 | 3 | ||
| 4 | -From the architecture point of view, the integration of several existing | ||
| 5 | -systems that were already implemented in different programming languages and | ||
| 6 | -frameworks, adding features such as a centralized authentication, unified | ||
| 7 | -interface, and a search engine, as well as, other back-end features, would | ||
| 8 | -require a non-trivial amount of work. In this context, the most important | ||
| 9 | -architetural requirements for the new platform were: | 4 | +From the architeture point of view, the integration of several features (such as centralized authentication, unified interface, search engine as well as other back-end features) of systems with different programming languages and frameworks would require a non-trivial amount of work. In this context, the most important architetural requirements for the new platform were: |
| 10 | 5 | ||
| 11 | \begin{enumerate} | 6 | \begin{enumerate} |
| 12 | \item \textit{Integrating existing FLOSS systems} with minimal differences | 7 | \item \textit{Integrating existing FLOSS systems} with minimal differences |
| @@ -16,17 +11,14 @@ architetural requirements for the new platform were: | @@ -16,17 +11,14 @@ architetural requirements for the new platform were: | ||
| 16 | \end{enumerate} | 11 | \end{enumerate} |
| 17 | 12 | ||
| 18 | The adoption of existing FLOSS systems and the minimization of their local | 13 | The adoption of existing FLOSS systems and the minimization of their local |
| 19 | -changes had the purpose to able the platform's softwares being easily upgrade | ||
| 20 | -to newer versions of their original software. With this facility, the platform | ||
| 21 | -benefits from maintenance and improvements made by communities. The | ||
| 22 | -development of a consistent user interface aims to provide to platform users a | ||
| 23 | -smooth transition between differents systems . Without it, the necessity of | 14 | +changes had the purpose to lower the effort of upgrading the software packages that compose the platform to newer version of their original software. With this facility, the platform |
| 15 | +benefits from maintenance and improvements made by communities. The development of a consistent user interface aims to provide to platform's users a smooth transition between different systems. Without it, the necessity of | ||
| 24 | adaptation and learning for each tool could get users confused and fatigued. | 16 | adaptation and learning for each tool could get users confused and fatigued. |
| 25 | % | 17 | % |
| 26 | For the first requirement, we have identified four main systems which would | 18 | For the first requirement, we have identified four main systems which would |
| 27 | have specialized teams for work in the integration process. Team members have | 19 | have specialized teams for work in the integration process. Team members have |
| 28 | -learned how to develop for their assigned systems and to contribute to the | ||
| 29 | -original communities to align the used version with the original one. | 20 | +learned how to write code to their assigned systems and how to contribute to the original communities to align the used version with the original one. |
| 21 | + | ||
| 30 | % | 22 | % |
| 31 | In the end of the project, the SPB portal has combined more than ten | 23 | In the end of the project, the SPB portal has combined more than ten |
| 32 | systems, such as Colab, Noosfero, Gitlab, and Mezuro. | 24 | systems, such as Colab, Noosfero, Gitlab, and Mezuro. |
| @@ -38,13 +30,12 @@ change between applications. For that, Colab provides facilities for: (i) | @@ -38,13 +30,12 @@ change between applications. For that, Colab provides facilities for: (i) | ||
| 38 | Centralized authentication, (ii) Visual consistency, (iii) Relaying of events | 30 | Centralized authentication, (ii) Visual consistency, (iii) Relaying of events |
| 39 | between applications, and (iv) Integrated search engine. | 31 | between applications, and (iv) Integrated search engine. |
| 40 | % | 32 | % |
| 41 | -Colab implements this integration by working as a reverse proxy for the | ||
| 42 | -integration applications, that is, all external requests pass through Colab | 33 | +Colab implements this integration by working as a reverse proxy for the applications, i.e., all external requests pass through Colab |
| 43 | before reaching them. | 34 | before reaching them. |
| 44 | % | 35 | % |
| 45 | Initially, Colab had support for a small set of applications (Trac, GNU | 36 | Initially, Colab had support for a small set of applications (Trac, GNU |
| 46 | -Mailman, and Apache Lucene) made in hard-coded. Our team have helped Colab | ||
| 47 | -upstream to redesign the whole architecture, enabling the development of | 37 | +Mailman, and Apache Lucene) hard-coded in its core. Our team have helped Colab |
| 38 | +upstream to redesign its whole architecture, enabling the development of | ||
| 48 | plugins to integrate new tools. We also added a feature that allowed Colab to | 39 | plugins to integrate new tools. We also added a feature that allowed Colab to |
| 49 | run asynchronous tasks, which was a major improvement for us since we were | 40 | run asynchronous tasks, which was a major improvement for us since we were |
| 50 | developing a complex system. We have also migrated Django(web framework used by | 41 | developing a complex system. We have also migrated Django(web framework used by |
| @@ -86,8 +77,8 @@ Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code | @@ -86,8 +77,8 @@ Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code | ||
| 86 | metrics to monitor the internal quality of software written in C, C++, Java, | 77 | metrics to monitor the internal quality of software written in C, C++, Java, |
| 87 | Python, Ruby, and PHP. | 78 | Python, Ruby, and PHP. |
| 88 | % | 79 | % |
| 89 | -In general, source code metrics tools also do not present a friendly way to | ||
| 90 | -interpret its results and, even more, do not follow a standardization between | 80 | +In general, source code metrics tools do not present a friendly way to |
| 81 | +interpret their results and, even more, do not follow a standardization between | ||
| 91 | them. Mezuro collects and presents these results to the end user, specially, by | 82 | them. Mezuro collects and presents these results to the end user, specially, by |
| 92 | analyzing source code metric history during its life cycle. | 83 | analyzing source code metric history during its life cycle. |
| 93 | % | 84 | % |
| @@ -124,7 +115,7 @@ pages, mailing list posts, or source code. | @@ -124,7 +115,7 @@ pages, mailing list posts, or source code. | ||
| 124 | 115 | ||
| 125 | However, integration of collaborative environments goes beyond functional | 116 | However, integration of collaborative environments goes beyond functional |
| 126 | aspects. To reduce the citizens perception of system complexity and to | 117 | aspects. To reduce the citizens perception of system complexity and to |
| 127 | -encourage them to use the software, a platform should offer an unified | 118 | +encourage them to use the software, a platform should offer a unified |
| 128 | experience across its environments. Thus, the SPB Portal information | 119 | experience across its environments. Thus, the SPB Portal information |
| 129 | architecture was redesigned to provide a transparent navigation and to reach | 120 | architecture was redesigned to provide a transparent navigation and to reach |
| 130 | users with different profiles. A process of harmonization has been employed on | 121 | users with different profiles. A process of harmonization has been employed on |
| @@ -136,7 +127,7 @@ established by the Federal Government. | @@ -136,7 +127,7 @@ established by the Federal Government. | ||
| 136 | With the increase in system features and the addition of new tools, the visual | 127 | With the increase in system features and the addition of new tools, the visual |
| 137 | style has steadily evolved to keep the navigation unified. Moreover, tools | 128 | style has steadily evolved to keep the navigation unified. Moreover, tools |
| 138 | from different backgrounds, which in many cases provide similar functionality, | 129 | from different backgrounds, which in many cases provide similar functionality, |
| 139 | -prompted the development of an unified interface. Some features, such as search | 130 | +prompted the development of a unified interface. Some features, such as search |
| 140 | and user profile editing were eliminated from the individual applications, and | 131 | and user profile editing were eliminated from the individual applications, and |
| 141 | implemented centrally to ensure a consistent look and feel. | 132 | implemented centrally to ensure a consistent look and feel. |
| 142 | 133 | ||
| @@ -178,7 +169,7 @@ Gitlab provides web interface for Git repositories and issues tracker, and | @@ -178,7 +169,7 @@ Gitlab provides web interface for Git repositories and issues tracker, and | ||
| 178 | Prezento is a front-end for source code static analysis. | 169 | Prezento is a front-end for source code static analysis. |
| 179 | 170 | ||
| 180 | The source code static analysis is performed by \textit{mezuro}. It runs some | 171 | The source code static analysis is performed by \textit{mezuro}. It runs some |
| 181 | -static analysis tools on source code stored in repository and provide this data | 172 | +static analysis tools on source code stored in a repository and provides this data |
| 182 | to Prezento. A social network and CMS is provided by Noosfero in | 173 | to Prezento. A social network and CMS is provided by Noosfero in |
| 183 | \textit{social}, and the databases of all tools with a cache service are in | 174 | \textit{social}, and the databases of all tools with a cache service are in |
| 184 | \textit{database}. | 175 | \textit{database}. |