# Introduction

[**Neil Ernst**](http://neilernst.net), [**Omar Elazhary**](https://omazhary.github.io)\
&#x20;_University of Victoria, April, 2018_

This is a edited book of contributions from students in an upper-level software engineering course at the University of Victoria. Modeled heavily on the pioneering [DelftSWA](https://legacy.gitbook.com/book/delftswa/desosa-2017/details) course from van Deursen et al. (1), the course goal was to introduce students to "documenting and understanding software". We did this by picking a large, open-source software system on Github and documenting its architecture in several phases. The result is a comprehensive, if partial, description of the system from the point of view of relative newcomers.

## Views and Beyond Approach

In contrast to the Delft approach, we used the [Software Engineering Institute views and beyond approach](https://www.amazon.com/Documenting-Software-Architectures-Views-Beyond/dp/0321552687) for documenting software. The main focus is to trace technical decisions back to business/project goals using the lens of quality attributes. We focus on identifying the _architecturally significant_ drivers that impact the software design. The views and beyond model suggests there are three main types of architectural structures to reason about: _modules_ at implementation time, _components and connectors_ at runtime, and _allocation_ structures connecting the code to non-code artifacts.

## Acknowledgements

This course would not be possible without the help of Arie, Andy and Maurício at Delft, who pioneered this approach in 2015.

## Further Reading

1. Arie van Deursen, Maurício Aniche, Joop Aué, Rogier Slag, Michael de Jong, Alex Nederlof, Eric Bouwers. [A Collaborative Approach to Teach Software Architecture](https://pure.tudelft.nl/portal/en/publications/a-collaborative-approach-to-teaching-software-architecture\(0c7f2aeb-f2d6-4c56-9ab7-5f47f73d133f\).html). 48th ACM Technical Symposium on Computer Science Education (SIGCSE), 2017.
2. Arie van Deursen, Alex Nederlof, and Eric Bouwers. Teaching Software Architecture: with GitHub! [avandeursen.com](http://avandeursen.com/2013/12/30/teaching-software-architecture-with-github/), December 2013.
3. Amy Brown and Greg Wilson (editors). [The Architecture of Open Source Applications](http://aosabook.org/). Volumes 1-2, 2012.
4. Paul Clements et al. [Documenting Software Architectures](https://www.amazon.com/Documenting-Software-Architectures-Views-Beyond/dp/0321552687). Addison Wesley, 2011, ISBN-13: 978-0321552686.

## Copyright and License

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](http://creativecommons.org/licenses/by/4.0/). Reuse of the material is permitted, provided adequate attribution (such as a link to the corresponding chapter on the [UVicDSA book site](https://uvicdsa.gitbook.io/uvicdsa18/)) is included.

![Creative Commons](https://1446819617-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L9MafkDRL1OlC0LV68p%2F-L9MbWJ3jE1_0jnB7GfN%2F-L9MbY1k-AoW3LOowns3%2Fcc-by.png?generation=1522962152302151\&alt=media)
