Architecture, the software kind

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!

Initial inspiration

The inspiration, the passion at FOSDEM

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!

Perhaps another reason why the trip was worth it

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 knowsoftware 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!

An example of a software project’s analysis!

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!


Bonus: I learned a lot, and let me share my wisdom

Be Sociable, Share!

About Aniket

A Master's student from India at TU Delft, with Embedded Systems as my specialization. Graduated with a Bachelor's degree in Electronics and Instrumentation from the Birla Institute of Technology and Science, Pilani in 2016, and worked for a couple of years at National Instruments R&D in Bangalore, before moving to Delft in 2018 to delve deeper into some personal technological fascinations. Generally curious about everything around, with the "How", and (probably) more importantly the "Why", being the most compelling facets that drive my curiosity. Always in a state of flux.
This entry was posted in Uncategorized and tagged , , , , , . Bookmark the permalink.