It all depends; in Software Architecture

Balancing the key 20 factors of software engineering for an effective software architecture

Aishwary Dhare
2 min readJul 1, 2023

The 20 factors are — Availability, Consistency, SLAs, Cost, Hosting, Team Size & Skill, Support Requirements, Maintainance capacity, Tech-debt, Integrations, Interoperability, API Design, Reliability, Forward Compatibility, Stakeholders, End-users Persona, Business Hours, Compliances, Extensibility, Security.

Where the following — functional requirements, compliances, extensibility, security and error handling, I believe are not factors but preety much a hygiene requirement. Ignoring any one of these will result in an incomplete design or tech-debt.

All of these are applicable for all kinds of software products and are deeply inter-related. For example, designing for high-availability in a distributed architecture will somewhat sacrifice consistency.

Balancing all of these factors is the circus and architects are the ring master of it, continously upgrading the system to keep the act togehter, while sustaining external forces of constantly changing requirements.

credits

Architects design the effective software architecture by balancing all these factors

For a more detailed explanation– here’s my discussion with GPT 4 for each factors — https://chat.openai.com/share/c6689513-05f8-4ab1-8065-11eec56a0bf7

And I expect this list to continously grow as I learn more with experience. Happy to learn right away what I missed here, let me know in comments.

--

--

Aishwary Dhare

Passionately coding for 10 years | Director of Engineering at MishiPay