Software Architecture Document Guidelines
v0.1 - a work in progress
Update, 27th October 2009: Please see Software architecture document guidelines for an updated version of the guidelines.
Regardless of the development process that you use, a description of the software architecture can be essential for any project, big or small. If software architecture is about the structure of a system and is the vehicle for satisfying the requirements, then the software architecture document is a written description of this. My simplified view of the content included in a software architecture document is :
- An outline description of the software architecture, including major software components and their interactions.
- A common understanding of the architectural principles used during design and implementation.
- A description of the hardware and software platforms on which the system is built and deployed.
- Explicit justification of how the architecture meets the non-functional requirements.
During our tutorial last week at QCon, we asked attendees to define the software architecture for a small software system and provided a handout containing some guidelines. Since this may prove useful for other people, we're making Software Architecture Document Guidelines v0.1 available for download.
It's worth remembering that the software architecture doesn't have to be a huge weighty tome and it doesn't even need to be a traditional Word document. What's important is that you capture the important architectural decisions and principles. This set of guidelines includes suggestions for what you might want to include. Just as a final note, this set of guidelines is a work in progress and we'll be iterating it over the coming months. Any feedback is welcome.
Re: Software Architecture Document Guidelines
I think it's Simon that deserves most the credit for the SAD guidelines, not me! But I'll take it nonetheless :P
Thanks for the comment. Mid-march wasn't all that long ago but we're always working on new content and updating other pieces so if there's anything specific you think is missing from the guidelines or needs further detail then please let us know so we can get that into the next version.
Re: Software Architecture Document Guidelines
Re: Software Architecture Document Guidelines
Re: Software Architecture Document Guidelines
I think it makes sense to keep the non-functional view and justification separate.
In my mind, the non-functional view captures the non-functional requirements - it sets out what your architecture is trying to achieve. This is sometimes a document in its own right, sometimes owned by someone other than the architect. Nonetheless, the audience is often non-technical, being required to agree that your interpretation of the NRFs is correct and complete.
The justification of the NFRs is for traceability, to show that the proposed architecture is up to the job. Again, this could be separate, the results of prototyping or industry benchmarks.
For certain sets of requirements there's no doubt benefits to merging the two, perhaps where a simple "requirement/design decision" matrix will suffice.
Is it worth us adding something to the guidelines to capture this flexibility or even creating an "SAD-lite" version?
Re: Software Architecture Document Guidelines
I'm always a fan of 'lite' versions, but how would this version differ from the current version, other than what we are talking about?
Greetz, Owin
Re: Software Architecture Document Guidelines
If you have identifiable NFRs then the justification section is more a foreign key relationship than a denormalised view ;)
As for their juxtaposition, I have wondered about that in the past. Sometimes it's easier to reference the design decisions after they've been presented, sometimes it's not... The SAD is often better as a hyper-linked tree of information than as a linear Word document in either case. The subtree of interest (and reading order) should be dependent on the viewer's need, not the author.
There are other similar synergies a lite version could appeal to: logical and interface views can often be superimposed, the design view might be driven by the functional view, the deployment view is often implicit in the infrastructure view. That said, most of this could simply be covered by the removal of a section from the existing SAD guidelines.
Re: Software Architecture Document Guidelines
Re: Software Architecture Document Guidelines
With you now... sorry, the suggestion was more that there were two templates, one for technical, tactical or derivative projects and another for slightly more green-field ones. Certainly not implying that you'd maintain two version of the SAD for a project (although you might want to offer several views onto a Wiki or similar).
Re: Software Architecture Document Guidelines
http://blogs.msdn.com/sachinrathi/archive/2008/11/17/architecture-specification-brief-what-should-it-include.aspx











