Tuesday, November 28, 2006

What Shall We Do Now?

Part of my role at work is ‘software architecture’ which is a somewhat nebulous term and often crosses in to software design. In an agile environment it can’t cross that boundary, however, because it is up to the teams delivering the feature to buy into and create the design for the software. So with the help of the book “Software Systems Architecture” we’re now defining the architecture as a process to find unwritten requirements, constraints, questions, and assumptions that will restrict the design space to only those designs that meet all the criteria and constraints.

The book is quite good, although it is written from a more ‘waterfall’ type mentality. The ideas it presents are geared towards how to effectively communicate an architecture. The authors present a set of six distinct 'views' of the system. Each view is targeted at a different set of stakeholders (which may include the end user, operators, developers, installers, third party developers, etc.) and the intent is to present only the information the stakeholder cares about in the view. The book describes a template for each view including examples of what one is to consider, a checklist, and a section of common mistakes and pitfalls which is quite useful.

The views they describe are:

  • Functional: Describes the systems functional elements, their responsibilities, interfaces and primary interactions
  • Information: Describes how the system stores, manipulates, manages and distributes data
  • Concurrency: Maps functional elements to concurrency units to identify where parallelism can and will occur
  • Development: Describes how the architecture supports the development process including building, testing, and maintaining the system
  • Deployment: Describes the target environment into which the architecture will be deployed including processing nodes, network interconnections, bandwidth availability, and disk storage requirements
  • Operational: Describes how the system will be operated, administered, upgraded and supported after initial deployment.
In addition to the viewpoints, the authors identified some common non-functional qualities of a system and recognized that meeting those qualities will affect more than one view. These qualities include things like performance, security, availability, and scalability. For each of these qualities there is an associated Perspective that the book outlines.

So I'm experimenting with this format by trying to describe a current feature (EPG Data Delivery) along with an upcoming required enhancement to that feature. We'll see how it goes...


Jimmy said...

An awful and completely irrelavent title, I know...

Kimota94 aka Matt said...

I liked the title! It keeps the Floyd riff going, and certainly evoked the question "What shall we do now to fill the empty spaces?" which is something a good architecture answers!!

Jimmy said...

When I left the comment, the title was 'If'. I changed it last night around midnight.