# 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](/files/-L9MbY1k-AoW3LOowns3)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://uvicdsa.gitbook.io/uvicdsa18/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
