Factors that influence software architecture

From my experience, the most important factors that influence the decisions when setting up software architecture are the following:

  • Functional requirements - the domain of the system being built can clearly influence architectural decisions by allowing you to understand the amount of data that will be stored in the system and how that data needs to be processed, what are the relations between the entities that will be stored in the system, etc.
  • Non-functional requirements - requirements such as high performance under heavy load, predicted lifetime of the app and the need for maintainability, for example, influence architectural decisions greatly. Setting up a more complex architecture in order to achieve greater maintainability makes perfect sense if the expected lifetime of the application is, say, 10 years, it doesn't make sense in case we know the system is going to be thrown away 3 months after its release.
  • Team knowledge / expertise - This shouldn't be the main factor, but it definitely is out there - in case your team wouldn't know how to handle the architecture you intend to set up and the expected release deadline is tight, it might be good to go with something they are already familiar with.
  • Community support of the desired architecture - this primarily relates to your technology choice, but the more knowledge/support you can find online for your architecture choice, the better. There is a good chance that you will face a challenge of implementing something within your set up that others have already faced, provided your choice is a popular one.

Of course, all of these factors combined will lead to your final architectural decision and you will definitely have to weigh in the pros and cons of all of them, based on the importance of each of the mentioned factors in your particular case. But that's the beauty of setting up architecture in the first place and the most challenging part of it :)

To view or add a comment, sign in

Others also viewed

Explore content categories