A logical architecture helps to visualize and communicate application’s logical & functional components and depicts future state solution exhibiting how it will meet business needs.
A software architect often comes up with logical architecture during the stage of architecture definition phase and gets created as part of software architecture document. At later stage, logical architecture becomes an input to create physical architecture and also serves following purpose:
- To describe functional components & their grouping
- To show processes & data flow between processes (if needed)
- To show 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 requirements, technical requirements (aka non-functional requirements), use-case will help in firming up logical architecture (see diagram below outlining the process)
Tip#2 – Be clear on logical architecture vs. physical architecture
Be very clear on difference between physical & what is logical architecture. Key points of differentiation are:
- 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 project development life-cycle, logical architecture typically starts at conceptual level and recommendation is to get it refined iteratively to the other end of 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 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 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 business problem not technical. Also, as it happens during early stage of architectural formulation, focus is on abstraction not implementation.
Technology or product specific mapping happens during design phase post proper due diligence (at times using proof-of-concepts & 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 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 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 very impactful and meaningful logical architecture diagram, which describes architecture of your system to multiple stakeholders.
Best of luck and keep up your zeal on the path of becoming a successful software architect!!