Conceptual Model of Software Architecture

The more I study software design, the more I believe that the key to making the entire field better is to develop a comprehensive model of the key concepts in software architecture (and design) and develop ways of teaching it. Everything else is the “school of hard knocks”.

I’ve referred to this model as the conceptual model of software architecture. A strongly related idea, and one that I’m shocked is not taught directly in most CS undergrad programs, is the idea that developers use models to solve hard problems. I call this model-minded development. The conceptual model of software architecture is one such model.

Talk at GOTO Copenhagen / Amsterdam 2012

I gave talks at the GOTO Copenhagen and GOTO Amsterdam conferences in 2012. A few folks at the conferences called it “the dandelion talk” because there is an example in the middle of my conceptual model of how to get rid of dandelions in your yard. That was an analogy to motivate the real idea: that conceptual models of architecture can help you become a better software engineer. Having a beter conceptual model is the difference between the 20-year-old version of yourself and the older, master-builder version of yourself. This is perhaps my favorite of all the talks I’ve given, so I hope that you enjoy it too.

Video and slides on InfoQ site: GOTO Copenhagen talk on conceptual models of software architecture