Book chapter: A Conceptual Model of Software Architecture

May 31, 2010 | George Fairbanks

When a coach and a rookie watch the same game, they both see the same
things happening on the field, but despite the rookie’s eyes being
younger and sharper, the coach is better at understanding and
evaluating the action. As a software developer, you would like to
understand and evaluate software as effectively as the coach
understands the game. This chapter will help you build up a mental
representation of how software architecture works so that when you see
software you will understand it better and will design it better.

If you want to become as effective as a coach, you could simply work
on software and wait until you are old. Eventually, all software
developers learn something about architecture even if they sneak up on
it indirectly. It just takes practice, practice, practice at building
systems. Consider another path, one where you see farther by standing
on the shoulders of others. Perhaps we are still waiting for the Isaac
Newton of software engineering, but there is plenty to learn from
those who have built software before us. Not only have they given us
tangible things like compilers and databases, they have given us a set
of abstractions for thinking about programs. Some of these
abstractions have been built into our programming languages —
functions, classes, modules, etc. Others likely will be, such as
components, ports, and connectors.

Download full article


George Fairbanks is a software developer, designer, and architect living in New York city

+1-303-834-7760 (Recruiters: Please do not call)
Twitter: @GHFairbanks