Software Architecture Cheat Sheet For Daily Usage
Software Architecture Cheat Sheet For Daily Usage
Ali Zeynalli
390 Followers About Follow
You have 2 free member-only stories left this month. Sign up for Medium and get an extra one
https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b 1/6
24/8/2021 Software Architecture Cheat Sheet for Daily Usage | by Ali Zeynalli | Aug, 2021 | Medium
Having clean software architecture and staying conform to pre-defined design principles
from start of the project is one of the best ways to avoid possible technical debt in the
future of that software system. Clean Software Design is a key point for an effective
software product.
Let us have a look at some important principles, rules, guidelines that ensure a clean
software design:
Principles:
1. Loose Coupling — if classes use each other, they are coupled together. The less
classes are coupled, the easier is to change them.
3. Only Local Changes — Changes, maintenance, extensions are only local. This leads to
no harming whole environment.
https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b 2/6
24/8/2021 Software Architecture Cheat Sheet for Daily Usage | by Ali Zeynalli | Aug, 2021 | Medium
Class Design:
Cohesion Principles:
2. Common Closure Principle (CCP) — classes that change together should be bundled
together.
3. Common Reuse Principle (CRP) — classes that are used together should be bundled
together.
Coupling Principles:
3. Stable Abstractions Principle (SAP) — the more abstract, the more stable.
https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b 3/6
24/8/2021 Software Architecture Cheat Sheet for Daily Usage | by Ali Zeynalli | Aug, 2021 | Medium
High-Level Design:
Get started Open in app
1. Keep Configurable Data at High Levels — constants or config datas should be kept in
high level.
4. Symmetry / Analogy — Favour symmetric designs (e.g. Load — Save) and designs
that follow analogies (e.g. same design as found in .NET framework).
7. Fields Not Defining State — fields holding data that does not belong to the state of the
instance but are to hold temporary data. Use local variables or extract to a class
abstracting the performed action.
Environment:
Dependencies:
1. Make Logical Dependencies Physical — If one module depends upon another, that
dependency should be physical not just logical. Don’t make assumptions.
https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b 4/6
24/8/2021 Software Architecture Cheat Sheet for Daily Usage | by Ali Zeynalli | Aug, 2021 | Medium
3. Base Classes Depending On Their Derivatives — Base classes should work with any
Get started Open in app
derived class.
4. Feature Envy — The methods of a class should be interested in the variables and
functions of the class they belong to, and not the variables and functions of other
classes. Using accessors and mutators of some other object to manipulate its data, is
envying the scope of the other object (c).
5. Artificial Coupling — Things that don’t depend upon each other should not be
artificially coupled.
6. Hidden Temporal Coupling — If the order of some method calls is important, then
make sure that they cannot be called in the wrong order.
7. Transitive Navigation — (Law of Demeter), writing shy code. A module should know
only its direct dependencies.
Please have a look at my other blog series for deeper understanding of these rules,
principles, guidelines:
The Books like “Clean Code”, “Clean Coder” and “Clean Architecture” from R.C.Martin
are main sources for this article.
https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b 5/6
24/8/2021 Software Architecture Cheat Sheet for Daily Usage | by Ali Zeynalli | Aug, 2021 | Medium
Your email
Subscribe
By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information
about our privacy practices.
Software Architecture Software Design Software Engineering Clean Code Clean Architecture
https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b 6/6