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:
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.
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 2022.
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 analysis in an aspect where software architecture plays a particularly important role, namely the system’s scalability. This includes ensuring that under increasing workloads or reduced resources (think of porting to a resource-constrained platform) the system exhibits adequate
The study should include the following.
Relevant pointers for this essay include:
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.
Each team prepares a 10 minute video highlighting their work. The videos will be linked from the DESOSA site.
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), and scalability (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. Again, you can indicate yourselves whether you want your video to be public. Uploading and setting the URL should be done before the deadline of the presentation video.
The presentation day is entirely on campus.
The groups will be divided in four sessions: Two in parallel in the morning (sessions A1 and B1) and two in parallel in the afternoon (sessions A2 and B2). Each session will include 9-10 presentations by student teams and will take the full morning or the full afternoon. The teachers will create a schedule assigning each team to one session.
For each team, there will be 20 minutes consisting of 10 minutes of presentation and 10 minutes of Q&A.
The presentation can follow the story line of the video. It is also OK to show some highlights from the video like a demo of the system in action. Just showing the full video without any live presentation is not permitted. All four team members must be present, and all should be involved in answering questions.
All team members of all 9-10 teams of one session are expected to attend that full session. You are encouraged to ask questions to other students during the Q&A. Furthermore, we will distribute a form via which every student will give feedback on every other team in their session.
If you’re interested, you’re also welcome to attend additional sessions, but this is not compulsory.
As we are still in Corona times, some students may be sick making it impossible to attend the Presentation Day. If you’re sick proceed as follows:
Absence due to scheduling conflicts with other exams is not permitted: What we can do instead is resolve the conflict by swapping the presentation from a morning to an afternoon session (or the other way around). If this applies to you let the teachers now as soon as possible.
Teams will receive a grade for presentations and Q&A. In each session 1-2 teachers will participate, who will give feedback to the teams. Furthermore, students will 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. Based on these inputs, the teachers will determine the presentation grade.
Cesare Pautasso. Software Architecture: Visual Lecture Notes. Leanpub, 2020. leanpub.com. ↩ ↩2 ↩3
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/. ↩