Have you ever heard of the business model canvas? If so, then you know that it is basically a board of basic elements which need to be evaluated in the process of creating a product and the business around it. Have you ever wondered if such a model could be created for a software design process?
I did and here are my thoughts on it. Obviously a detailed implementation cannot be touched by such a “bird’s eye architecture-cheat-sheet” but I think a general description with some design tips can be achieved.
So without further ado I bring to you: “The 11 blocks of software architecture”:
The canvas has been filled with the sample data which is based purely on my knowledge and experience. I encourage you to update or completely replace the information inputted by me as I ensure you – in 6 to 8 months it will be partially outdated.
The important part is the structure and categories, not the content of the 11-blocks canvas itself. As I am sure you are aware of the pace the new technology gets replaced by a newer one, be sure as an architect to update your knowledge and your copy of the 11 blocks from time to time. Make sure the document contains tag-like bullet points instead of detailed summaries.
Canvas is not intended to be a knowledge base but instead, more of a brief but structured technology choices overview.
Structure
Now if the 11-blocks canvas is a map designed to help you find the right way to architect your solutions, below tables are the legend for this map which should help you understand its structure. Each block is a piece of particular “area of focus” each of which is color coded to help you intuitively locate blocks by their area of focus:
Area of focus |
Performance |
||
Development effort (Time) |
Minimum |
Moderate |
Consuming |
Performance |
Slow |
Average |
Fast |
Category Example |
Dev-Consuming / Perf-Fast |
Area of focus |
Application Scale |
||
App Scale |
Internal |
Internal-Complex |
Enterprise |
Category Example |
Enterprise |
Area of focus |
Application Usage Focus |
||
Performance |
Performance |
Usability |
Usability-HighDemand |
Category Example |
Usability-HighDemand |
Area of focus |
Projected Application Growth |
||
Requests per Minute at Peak |
Tens -Hundreds |
TensOfThousands |
HundredThousands + |
Category Example |
HundredThousands + |
Area of focus |
Other – Grouped Options to Consider |
Category Example |
Best practices & conventions |
Use cases
The canvas file which you can download here be used in two ways:
- You as an architect can use it to keep your knowledge (of those important areas of concern in the application design) up to date so basically revise and update your version of canvas every now and then, whenever you find a new better library / pattern / idea.
- Another use case would be aiding the initial planning phase of more complex applications when your team is brainstorming on the ideas and ways to achieve the business goals. In this case I recommend printing out a version of canvas with only block names on it, just pin it on the board (or even draw it) and let the ideas flow. You will end up with a board filled with sticker notes representing your team’s idea of how the application should look like grouped in feature focused blocks.
Summary
This 11-blocks canvas has been tailored for use within the .Net world and libraries listed as examples/recommendations are mostly tight to the .Net and Visual Studio environment. However it can easily be replaced by any framework of choice. So if you are a PHP application architect or any other technology enthusiast for that matter, feel free to replace sample data with your research results. Hopefully this canvas will be as much of use for you as it is for me.
If you have any questions or remarks please leave your thoughts in the comments box below. Here are the download links for the 11 blocks canvas itself:
Editable Visio diagram: Canvas.vsdx
Pdf preview: Canvas.pdf