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.
All team members will get access to a shared GitLab repository hosting the sources of the DESOSA 2020 book.
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.
All documents are to be written in markdown
, maintained under git in your GitLab repository.
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 pull requests, properly labeling them with an identifier for your project.
In principle you are free to pick any open source project on GitHub. Take the following factors into account:
You can check these constraints by using GHTorrent data on BigQuery. An active project will 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.
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.
You will have considerable freedom in this course. Nevertheless, a steady heartbeat is required, and you are accountable for how you spend your time.
An architect is always eager to learn more. 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.
Grading will be also 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:
journal
in your project folder.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.
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 1000-1500 1500-2000 words. After 1500 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. Different from previous years, 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 jekyll 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 its 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. 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.
An analysis of the collaborative and social aspects of the system under study, based on the lecture by Ayushi Ratsogi.
To that end, assess the socio-technical congruence in the development effort of your system under study as follows:
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:
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. This can be done in two ways:
Download PDF from GitLab
For each build of the master branch, a collection of single-essay PDFs is created and made available as a job artifact.
Go to the Project Overview on GitLab, press the download button, and select single-essays
(see the screenshot below)
Once you have downloaded the ZIP file, you can find your essay within the directory corresponding to your project.
Note: Your MR needs to be merged (into master) before it becomes available here.
Generate PDF manually
Assuming that you have a working docker setup, it is easy to generate a PDF manually. In order to create a single-essay PDF manually, run the following command:
$ make dockeressaypdf
This command will ask you for the relative location of your to-be-submitted essay.
Enter the correct path, and press enter.
You can now find your essay in the target/
directory as a PDF.
Note: This make command was added later. Make sure you are up to date with the master branch if the command is not available.
Submit your essay to peer.ewi.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 correct assignment (corresponding to the essay you are about to hand in) 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, you can enter the corresponding information in the yaml
meta-data of your index.md
project file, and information about it will be shown in your blog pages.
There will be two deadlines, for two simple reports:
index.md
, and write a short plan for remaining pull requests that you still intend to submit.index.md
. Furthermore, for work on potential pull requests you tried, but which eventually did not result in an actual pull request submission, write a short summary of what you did, and what was so hard about it.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 jekyll). 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.
Jim Coplien Gertrud Bjørnvig. Lean Architecture for Agile Software Development. Wiley, 2010. ↩ ↩2
Nick Rozanski and Eoin Woods. Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives. Addison-Wesley, 2012, 2nd edition. ↩ ↩2 ↩3
Peter Hruschka and Gernot Starke. arc42: Effective, lean and pragmatic architecture documentation and communication. https://docs.arc42.org/home/ ↩ ↩2 ↩3
Philippe Kruchten. The 4+1 View Model of architecture. IEEE Software 12(6), 1995. (doi, preprint, wikipedia) ↩
The C4 model for visualising software architecture. https://c4model.com/. ↩
Cataldo, Herbsleb, and Carley. Socio-Technical Congruence: A Framework for Assessing the Impact of Technical and Work Dependencies on Software Development Productivity. ICSE 2008. https://herbsleb.org/web-pubs/pdfs/cataldo-socio-2008.pdf ↩