We are proud to present Delft Students on Software Architecture, a collection of 21 architectural descriptions of open source software systems written by students from Delft University of Technology during a master-level course taking place in the spring of 2017.
In this course, teams of approximately 4 students could adopt a project of choice on GitHub. The projects selected had to be sufficiently complex and actively maintained (one or more pull requests merged per day). The systems are from a wide range of domains, including testing frameworks (Mockito, JUnit5), editors (Neovim, VSCode) and visualisation (Kibana).
During an 8-week period, the students spent one third of their time on this course, and engaged with these systems in order to understand and describe their software architecture.
Inspired by Brown and Wilsons' Architecture of Open Source Applications, we decided to organize each description as a chapter, resulting in the present online book.
This book is the third in volume the DESOSA series: The first DESOSA book resulted from the 2015 edition of the course, and contained architectural descriptions of ten (different) open source systems. The second DESOSA book followed a year later, including 21 architectural descriptions.
The chapters share several common themes, which are based on smaller assignments the students conducted as part of the course. These themes cover different architectural 'theories' as available on the web or in textbooks. The course used Rozanski and Woods' Software Systems Architecture, and therefore several of their architectural viewpoints and perspectives recur.
The first theme is outward looking, focusing on the use of the system. Thus, many of the chapters contain an explicit stakeholder analysis, as well as a description of the context in which the systems operate. These were based on available online documentation, as well as on an analysis of open and recently closed issues for these systems.
A second theme involves the development viewpoint, covering modules, layers, components, and their inter-dependencies. Furthermore, it addresses integration and testing processes used for the system under analysis.
A third recurring theme is technical debt. Large and long existing projects are commonly vulnerable to debt. The students assessed the current debt in the systems and provided proposals on resolving this debt where possible.
Last but not least, the students tried to make themselves useful by contributing to the actual projects. Many pull requests have been opened, including documentation improvements (Scrapy #2636), bug fixes (Jupyter #2220), style / tooling fixes (yarn #2725) or even feature implementations (JabRef #2610, JUnit5 #723). With these contributions the students had the ability to interact with the community; they often discussed with other developers and architects of the systems. This provided them insights in the architectural trade-offs made in these systems.
The students have written a collaborative chapter on some of the contributions made during the course. It can be found in the dedicated contributions chapter.
While we worked hard on the chapters to the best of our abilities, there might always be omissions and inaccuracies. We value your feedback on any of the material in the book. For your feedback, you can:
We would like to thank:
The copyright of the chapters is with the authors of the chapters. All chapters are licensed under the Creative Commons Attribution 4.0 International License. Reuse of the material is permitted, provided adequate attribution (such as a link to the corresponding chapter on the DESOSA book site) is included.