Designing Solutions: Layer Up!

Rainesoft Blog   •   March 24, 2017


I eat in bits, plan in phases, and design in layers. Whenever I need to design a solution to a problem, I break it down in two (2) directions; top-down and bottom-up. This is what I mean;

Figure 1 – A basic architectural framework

  1. Top-down:
    1. What is it we are trying to achieve?
    2. What information will be required to achieve this?
    3. How best can we store, process and transfer this information?
  2. Bottom-up: Does the technology identified in (1)(3) support the overall objective? I.e. handling the information required (1)(2) in a way that meets the intended target (1)(1).

In order to answer these questions, we need to understand the different layers involved;

  • The business layer is where business processes are carried out to deliver a service or product. For example; a bakery will need to receive an order, bake (a cake) and then make the delivery (assuming that is part of the service).
  • The application layer refers to various software applications responsible for processing the information required at the business layer. From the previous example, the order details could be entered into a customer relationship management (CRM) software.  Some frameworks split this layer further into two, separating data/information from software applications e.g. Capgemini’s Integrated Architecture Framework.
  • The technology layer deals with the underlying infrastructure that supports the application layer. I.e. hardware, networks, etc. From our previous example, the CRM will need to store the order details. This will mean identifying requirements such as hard disk space, etc.

Analyzing the requirements and dependencies of each layer takes time, and may sometimes be challenging to identify. But once I started looking at business problems this way, in time their solutions became clearer.