Back in the month of February 2019, just after the conclusion of the second quarter, I did some travelling around – among which included a trip to Brussels to attend an event on FOSS. I’d always wanted to know what FOSS was about, but hadn’t made any real effort towards it, as is the case with most things in life that involve overcoming inertia. Given that the aptly-titled FOSDEM was just around the corner, I decided to attend it and get myself involved!
The conference was definitely worth the journey to Brussels – it led to my liking the FOSS philosophy so much and meeting such passionate people that I felt a strong surge of inspiration to really do something about it. The flame had been kindled!
Fast forward to a week later, and I’m sitting in the Software Architecture class offered by the EWI’s SE research group. The professor introduces the course, saying we’re supposed to analyze architecturally a “sufficiently complex and actively developed” open source project of our choice, and possibly even contribute to it. Perfect.
I’d already burdened myself with courses I found interesting, and taking this course would probably have forced me to drop one of them. But with the push of inspiration and some unknown force, I took Software Architecture in addition to the courses I’d already taken. I kind of forced myself to be strict about allotting time to tasks and being efficient, thus managing to hold on to everything throughout the quarter.
A bit on the topic
Back to Software Architecture now. What is it, in the first place?
Just like the concept of architecture as we usually know, software architecture involves a broad view of what a software project should look like. A software architect needs to think about how a project should be organized, the conventions to be followed, a “roadmap” of how the project should proceed, and so on. It is a very crucial role, and as the course taught us, it is one that requires a good level of experience working on software projects to develop an intuition of what good design should look like.
For instance, you could build a bridge poorly just to make it work, but if you wanted to expand its width to accommodate more vehicles, your design may not work if you hadn’t taken this “broad picture” (quite literally) factor into consideration initially (due to weak materials, insufficient space, or whatever reason.)
Similarly, in software projects, you’d ideally want to think from a broad perspective while starting a project so that it is “architecturally correct.” It is definitely easier to mess up a software project’s architecture given that it’s just…software. But there are quite a lot of nuances that need to be taken care of, and there certainly is more involved than meets the eye!
The course itself
The course covered the theory of relevant topics in detail, and for our assignment we had to choose a project hosted on GitHub and analyze it from an architectural perspective based on various points taught in the lectures. My team worked on analyzing an open source game, Cataclysm: Dark Days Ahead, because…game.
We also had a whole bunch of guest lectures from various companies and researchers working on the topic, so we got a really good perspective from the industry and also got to know what sort of research goes into this field. It gave a lot to think about, and was certainly very interesting to ponder upon!
Besides, there was a bit of “meta” involved in the course, in that we had to work on our project as software architects ourselves, making use of tools like GitLab and Mattermost to carry out the various activities. It was a really exciting experience (albeit intimidating at the beginning)!
The course ended with all the groups presenting the results of their analyses and having peer discussions on various aspects. It was also a good opportunity to know a lot of people from various backgrounds with a shared interest for software architecture!
I’d highly recommend this course for students interested in knowing what it feels like to architect a software project, and the underlying philosophy. It does require putting in a lot of effort, but the experience is quite rewarding as well!
Needless to say, the organizing team did a really good job of conducting the course!