To get started with the assignment, the following tasks need to be completed:
As software architecture is all about collaboration and communication, the work must be done in teams:
If you are looking for partners, you can post a message on our Brightspace forum (there is a topic for partners wanted), and offer your expertise.
In principle you are free to pick any open source project on GitHub. Take the following factors into account:
An active project should have 1 or more pull requests per day. To get you started, we hand-picked a list of projects which are large, actively developed, maintained by a vibrant community, and are not analyzed in the previous runs of this course. You cannot reuse a project that studied by other students in 2019 or 2020: see the list of non-projects.
To claim a project: Post on the Brightspace forum, title Claiming project P, explain why you like this project in the issue, and indicate the 4 team members that will work on this project as well as your group number. Make sure to add their GitLab accounts in the issue so we can find them.
After your project choice is approved, you will be granted access to the GitLab repository where you can find your project in the ./content
directory. Add a short (around 100 words) enthusiastic description of the project to the _index.md
file in your project sub folder (see the usage instructions of the DESOSA project for more information). Consider adding a logo or some representative image, and provide all the required meta-data. Also fill out the author details with your names and a small introduction.
All team members will get access to a shared GitLab repository hosting the sources of DESOSA 2021.
Within this repository, each team will have one dedicated project sub-folder to work in.
Teams should only add changes to their own sub-folder (./content/projects/<projectname>
).
The repo includes all essays written for all projects. The essays themselves are writen in Markdown, and rendered using Hugo. Usage instruction are provided on the README page of the DESOSA project.
Follow all good software development practices in this repository, such as using issues and milestones for planning, merge requests, review, etc. Show that you are well-organized, and that the teachers can clearly see what you did and what you are planning to do.
You are encouraged to use issues and must use merge requests, properly labeling them with an identifier for your project.
(Some teams prefer to use a collaborative tool like Overleaf or Google Doc for “pair writing”. That is OK, as long as the eventual result is committed, in time, in the gitlab repository in proper markdown format.)
The main part of the assignment consists of three parts:
Strong writing skills are an invaluable asset for an architect. To quote Dan Heller in his “Ten Principles for Growth as an Engineer”:
Crisp technical writing eases collaboration and greatly improves your ability to persuade, inform, and teach.
Therefore, we will use this course to train and improve our writing skills.
Each team will write four essays. Each essay should be around 1500-2000 words. After 2000 words teachers (or any reader, in fact), reserve the right to stop reading, which may affect your grade. We’ll be counting words by running Markdown Word Count, developed by a former Software Architecture student, on your .md
markdown files.
Your essays will be evaluated based on the following:
The intended audience for the essays consists of computer science students or software engineers, interested in learning about architectural aspects of your open source project.
A publicly visible blog is available through which teams can publish their essays. We are publishing the essays throughout the course (and not just all at once after the course). We will use the blog to engage with and share our work with the open source community. Published essays (blog posts) will carry a CC BY-SA 4.0 license, allowing the open source projects to include the resulting posts in their own documentation. You can decide yourself which posts you want to make public by means of simple meta-data flag in your Hugo markdown document.
The starting point for your architectural analysis is a description of the vision underlying your project and its future success. Aspects to take into account include:
It may be the case that some of these aspects do not naturally match your open source system under investigation. In that case, say so explicitly, and explain why you think this is the case in your essay. Instead offer a deeper analysis of other relevant aspects.
Relevant literature for this essay includes
While the first essay focuses on the set of fundamental concepts or properties of the system in its environment, in the second you explore how these are realized through the system’s architectural elements and relationships, and the principles of its design and evolution. Aspects to take into account include:
It may be the case that some of these aspects do not naturally match your open source system under investigation. In that case, say so explicitly, and explain why you think this is the case in your essay. Instead offer a deeper analysis of other relevant aspects.
Relevant literature for this essay includes
With key aspects of the architecture described, the third essay focuses on means to safeguard the quality and architectural integrity of the underlying system, with special empahsis on the rate of change. Aspects to take into account include:
Again, it may be the case that some of these aspects do not naturally match your open source system under investigation. Also, doing all of these well may not fit in a single essay. Select those aspects that are most relevant, and do a thorough analysis for them.
If you conduct measurements, you may find that certain numbers point at poor code quality. In such cases, offer an explanation why the code ended up like it is now, assess whether trade-offs have been made, and demonstrate leadership by offering constructive proposals how to resolve the problems you found.
Relevant pointers for this essay include:
Your team’s final essay serves to deepen your analyis, and can be on one of the following topics.
An analysis of the variability modeling, management and implementation mechanisms that are relevant to your system, based on the lecture by Xavier Devroey. The details of this essay are described separately.
Look into the change history of the project and find code changes that are related to green computing, based on the Green Software Engineering lecture by Luís Cruz. Present and discuss the rationale behind those changes:
When discussing energy efficiency, critical thinking is key. Aspects to cover include:
An analysis of the distribution architecture and design choices of your system, based on the lecture by Burcu Kulahcioglu Ozkan.
You are suggested to address the following questions in your essay:
While analyzing trade-offs, you can discuss the availability, consistency, and partition-tolerance properties of the system:
ARCHITECTURE.md
Recently, Aleksey Kladov suggested that projects of 10K-200K lines of code should have an ARCHITECTURE.md file. If you believe this would be important for your project as well, do as follows:
architecture.md
file and the possible contentsarchitecture.md
and discuss itarchitecture.md
file serves as your fourth essay.Note that interaction with the project is key for this assignment, since otherwise the most likely outcome is that your proposal for an architecture.md
file is rejected or ignored.
A topic of choice, specific to your project. This can be based on
If you pick this option, consult the teachers first with a short proposal (a few sentences) explaining what you’d like to investigate, and how this is relevant to your project.
Once you are ready to submit your essay, please follow the following steps:
Open a merge request on GitLab, and make sure that your team members review your changes. If everything looks good and everyone approves, you can merge your MR.
Important note: Your MR needs to be merged for it to be considered submitted.
To prepare your essay for peer reviews, a PDF, containing only your new essay, needs to be created. See the README on GitLab for instructions on generating such a PDF locally or on the DESOSA site.
Submit your essay to peer.tudelft.nl, the peer evaluation system that we use. After logging in with your NetID, you can find the Software Architecture course under “Enrolled Courses”. On the course page, select the assignment matching your essay and submit the PDF from step 2.
Note: This only needs to be done once per team.
To familiarize yourself with the system under analysis, your team will contribute to the system. This will take the form of a pull request to the system. Aspects to consider include:
CONTRIBUTING.md
file.For pull requests you’ve actually submitted, create a new contributions entry in the DESOSA project to share your contributions on the website and PDF/epub.
There will be two deadlines, for two simple reports:
The two reports can be put in a file contributions.md
, which you can put in your journals
folder (so that it is ignored by Hugo). As an indication, around 100 words will probably suffice per planned (or terminated) pull request.
Pull requests will be graded, based on the following criteria:
While your aim is of course that the pull request gets merged, the merge itself is not part of the grade.
You will have considerable freedom in this course. Nevertheless, a steady heartbeat is required, and you are accountable for how you spend your time.
In this course, you have 5 EC available for software architecture in 8 weeks, giving a minimum effort of 5 * 28 / 8 = 17.5 hours per week that you should spend on this course.
Use this time to learn as much as you can, as an architect is always eager to learn more. Grading will also be based on the progress you made compared to your initial knowledge and skill level, not just based on a preset end-goal.
To make this possible, it is important that you and your team provide insight in what you do each week. To that end:
journals
directory of your project.In the journal, you can offer a story of what you learned, what activities you participated in (lectures, meetings). All effort related to the course can be included, including routes taken that do not directly lead to text in your essays (e.g., projects considered when selecting your project). For each week, also include the number of hours you spent that week on the software architecture course.
The course will be concluded with an online presentation day. To that end each team prepares a 10 minute video highlighting their work.
The primary audience for this video is your fellow students who also followed this course. Furthermore, try to make the video of interest to current or future contributors of the open source system you analyzed.
Aspects you can cover in your video include the purpose of the system (essay 1), the underlying architecture (essay 2), the quality assurance process (essay 3), as well as your choice of topic for essay 4. As it is impossible to cover everything you did, please focus on what sets your system apart from many other systems – the key thing other students in this course should learn about your system.
In terms of video style, feel free to use your full creativity. The best videos trigger applause and awe when presented to all students. If possible, try to make it clear that the video is team work, by letting all team members feature in the video.
You should upload your video as a (unlisted or public) YouTube video, and add the URL to your project page on the DESOSA website. See the DESOSA README for full instructions on how to add the video. You can indicate whether you want your video to be public. Both should be done before the deadline of the presentation video.
During presentation day, we will create six sessions of approximately two hours. Sessions will start at 10:00, 12:30, and 15:00, in two parallel tracks (in two separate Zoom calls).
For each team, there will be 20 minutes. During the first 10 minutes the team’s video will be shown. During the second 10 minutes there will be Q&A. All four team members must be present, and should be involved in answering questions.
Each team is expected to join the full (two hour) session during which their own video is shown and discussed, and participate actively in the discussions of the other four teams in the same session.
Furthermore, individual students are welcome to join any other session and participate in the Q&A (but this is not compulsory).
Students should fill in a form for each of the four presentations and Q&A sessions they participate in. This form will distinguish content depth, presentation style, and the handling of questions.
In each session 1-2 teachers will participate, who will also grade the teams.
The Q&A sessions including the chat will be recorded.
Cesare Pautasso. Software Architecture: Visual Lecture Notes. Leanpub, 2020. leanpub.com. ↩ ↩2
Peter Hruschka and Gernot Starke. arc42: Effective, lean and pragmatic architecture documentation and communication. https://docs.arc42.org/home/ ↩ ↩2 ↩3
Jim Coplien Gertrud Bjørnvig. Lean Architecture for Agile Software Development. Wiley, 2010. ↩
The C4 model for visualising software architecture. https://c4model.com/. ↩