Operationalizing Architecture in an agile Software Project

worked on by: ArsenijSolovjev

Expose

One form of technical debt is architectural erosion[1]. As a recent master's thesis[2] has shown, Saros is subject to it. The causes of this haven't been specifically investigated, however I would argue this is an issue of the development process. New developments on Saros are being rigorously reviewed, and sometimes these address technical debt. However, technical debt is not always obvious when it is commited to code, there is no comprehensive overview of technical debt and it is not being addressed systematically.

In my master's thesis I would like to improve the way architectural erosion is handled in the development process by applying the most-established in open-source architecture compliance checking (SonarQube[4]) on Saros. This would contribute to preventing architectural erosion, as well as support architectural changes in Saros. Using SonarQube it is possible to alert the developers of new architectural violations, to find and to inspect pre-existing violations. Also having a formal description of the architecture would ease new developers understand the system. Saros's build-infrastructure would be extended to convey differential architecture-checks upon a commit. This means the source code will be checked for conformance to certain architecture rules. This would be done by integrating SonarQube's architecture rule constraints into the development/build process. For the developer this would result in an additional criteria required to pass a gerrit review. This way a developer would need his patchset to be

It would also be of interest to see how we could use some of the other features of Sonar, some of them overlap with existing build steps inthe current build configuration. Currently Jenkins is responsible for a number of tasks such as computing code coverage, PMD source code analysis and FindBugs. All of these tasks belong to quality assurance, a field in which SonarQube excels, so it will be considered to delegate these tasks to SonarQube. This would leave Jenkins the responsibility to build, communicate with Gerrit, and to delegate to Sonar.

As of now the Saros architecture is documented on its homepage[5], in some theses as well as in the heads of it's developers. An aspiring Saros-developer mightnot be aware of these resources or could simply forget them. After my extension though, he would be forced to see whether his patchset makes sense from an architectural point of view and be forced to act upon that by either changing his patchsetor the architecture itself. The exact behaviour of the developer is unknown, and I would like to evaluate how this change would effect the current development process. Also it is to be evaluated if the effort needed to support this addition to the development process is worthwhile.

There are some obstacles to modifying the infrastructure in the desired manner, which I seek to overcome.

This being done, I intend to provide support to a major project within Saros, which involves abstracting Saros away from Eclipse. I believe architectural constraints might provide an overview of Saros's dependencies to Eclipse and would help developers keep them in check.

[1] Dewayne E. Perry and Alexander L. Wolf. Foundations for the study of software architecture. Software Engineering Notes, 17(4):40–52, 1992.

[2] Patrick Schlott. Analyse und Verbesserung der Architektur eines nebenläufigen und verteilten Softwaresystems, FU Berlin, AGSE, 2013.

[3] Anne Augustin. Integration von Architekturmodellen in einen agilen Softwareentwicklungsprozess, FU Berlin, 2013.

[4] SonarQube. http://www.sonarqube.org/

[5] Saros Homepage, architecture documentation page. http://www.saros-project.org/architectureDocumentation

Milestones

Submission Date: 10.10.2014 Weeks: CW16 - CW41

saros.build Infrastructure += Sonarqube

Development process += Architecture as an Artifact

Evaluate both of the above

Find a language to describe meaningful architectural concepts in Saros

Implement found language as a DSL

Evaluate, whether this is helpful to the developers