While writing my master's thesis, quite a few years ago, I wrote a trio of supporting papers to help me structure my thoughts. I recently came across them, and was surprised by how relevant they still are, even given what I've learned about software architecture in the past years. You might like them!
- Software architecture as a wicked problem deals with what makes software architecture hard, and how this overlaps with planning problems.
- An engineer is not a carpenter shows how software engineering is not a real engineering discipline. It contrasts software with other 'materials' we work with.
- Architecting adaptive software is basically a readable shape of my master' thesis. It deals with what adaptivity is, how you can't design it into systems, and what factors you can use to make a system exhibit adaptive behavior.