A logical architecture helps to visualize and communicate the application’s logical & functional components and depicts future state of the architecture meeting business requirements.
A software architect often comes up with a logical architecture as an artifact during the architecture definition phase, which gets documented as part of software architecture document. At a later stage, logical architecture becomes an input to create physical architecture and also serves the following purpose:
- To describe functional components & their grouping
- To show processes & data flow between processes (if needed)
- To show the organization of components (layered horizontally or vertically)
Considering the value of logical architecture, here are 5 important tips to create effective & impactful logical architecture.
Tip#1 – Understand the architecture process & how logical architecture fits into it
Logical architecture gets created as part of Software Architecture Document, which usually gets created during architecture/design phase. Inputs like business/functional requirements and technical/non-functional requirements help in firming up the logical architecture (see diagram below outlining the process).
Tip#2 – Be clear on logical architecture vs. physical architecture
Don’t mix physical architecture elements with logical architecture – often people start depicting servers, technology components, and technologies in logical architecture. Logical architecture’s intent is not to showcase implementation level details.
Difference between Logical & Physical Architecture can be summarized as:
- Technology Independent (Functions) vs. Technology Bound (Components/Products)
- Logical Organization vs. Physical Organization (Deployment Topology & Model)
- Logical Functions vs. Real-world Products (e.g. mentions OS like Linux)
Tip#3 – Be crystal clear on abstraction level in consideration
Let’s refer to the following spectrum to understand the abstraction level – the more you move towards right, the more detailed it gets.
During the course of the project development life-cycle, a logical architecture typically starts at the conceptual level and the recommendation is to get it refined iteratively to the other end of the spectrum. So, depending on the stage of development, adjust the abstraction level accordingly (conceptual level to start with).
Level 0 indicates high-level logical functions and Level 1 will be a further breakdown of Level 0 functions and so on.
Tip#4 – Keep it independent of technology, platform or implementation
In alignment to Tip#3, logical architecture should focus on logical components (at an abstract level) & remain independent of any technology such as Java, .NET, PHP, NodeJS or framework/libraries such as Spring, Wicket, ExpressJS or Lib like Log4J or or any product such as WebLogic, JBoss or Tomcat.
The main reason behind not mapping technology in logical architecture is to keep it focused on solving the business problem not technical. Also, as it happens during the early stage of architectural formulation, the focus is on abstraction, not implementation.
Technology or product-specific mapping happens during design phase post proper due diligence (at times using proof-of-concept & doing pros/cons of design options).
Tip#5 – Keep it clean, simple & easy-to-understand – visuals matter!!
Keep your diagrams aligned to basic principles such as:
- Don’t put all the details in a single diagram (refer to the above point of level of abstraction).
- Keep subsystem level logical architecture view separate and create multiple artifacts rather than try to accommodate all of them in a single diagram.
- Keep your visuals simple and aligned to the brand guidelines your organization follows.
An example of logical architecture for an n-tier architecture of a bank application has been placed below (layered vertically – can be horizontal as well as per your preference).
In conclusion, if you follow these 5 simple tips (see summary diagram below), you can create a very impactful and meaningful logical architecture diagram, which describes the architecture of your system to multiple stakeholders. Read the post on creating an effecitve physical architecture.