It is time to wrap up the season of software architecture from scratch. We have covered a broad range of topics and now are able to look over them as a whole. There are common themes across the various areas that point us to software architecture best practices. Here are a few core concepts we should take from this season.
Clarity is KeyWe have to communicate our results. These deliverables are essential in making our work valuable. Think about it, even the best architectural design is useless if it can not be implemented. When we fail to properly communicate our ideas, we reduce the likelihood of successful implementation. Therefore, pay attention to the details and note them in your deliverables.
Likewise, provide some reasoning behind your decisions. A sort of historical record of your thought processes is invaluable to future architects. The world is constantly changing. Therefore, your architecture will be reviewed with an eye towards what needs to change. Your notes and "color commentary" can help speed the review by those down the road.
Validate The ArchitectureA common newbie mistake is to build an architecture from an "ivory tower." Thus, the result is an academic masterpiece. However, it is not viable in the real world. We all know of concepts that look good on paper, but pale when we move into implementation. Every bit of the architecture that fails to be viable will reduce the faith in all of the work. It is best to avoid these confidence killers and instead validate your assumptions where possible. Yes, this may require a proof-of-concept or similar demo. On the other hand, your comfort in your assumptions will be worth the effort.
A Place For EverythingWe sometimes get carried away with our architecture. This situation is particularly common when requirements change while we are working through architectural tasks. We may create a piece that is not needed or may forget to connect together some of the pieces. That means we need to do a final review of our architecture against the requirements before we wrap it up. Even a short amount of time can highlight blatant gaps we left in our design amongst the hectic schedule of changes. Sometimes the software architecture best practices amount to simply checking our work.