I hear developers saying "when I joined the company, there was bad software architecture". I was also thinking like this. But the fact is there is no "good" or "bad" software architecture, the thing that matters if architecture actually fits the requirements.
The software architecture is set of software structures and relation between them. Not only a metaphor to the construction architecture, it has many common ideas. For example, fundamental parts should be considered from the beginning. You can not build skyscraper on foundation of private house. Same for software architecture, you cannot run complex, high-availability, scalable project on architecture not fulfilling those requirements.
System requirements form a list of software architecture quality attributes. Here few examples of common quality attributes for modern software:
- Modifiable - the system can be easily updated. Easily in terms of time/cost for implementation a new feature.
- High availability- the system should operate in case of high load and failures.
- Scalability - the model of splitting responsibilities between system components.
- Performance - the focus is on system response time.
Of course, this is not a complete list since each system will have its own individual requirements.
It may seem easy to modify software architecture, however it can be really painfully and costly. That why so important to create it maximum thought-out at fundamentals.
On this picture you can see the Rossi steet in Saint-Petersburg, named for its architect Carlo Rossi. This street is unique because it follows the canons of classical antiquity: its height and width are identical (22 metres (72 ft)), and its length (220 metres (720 ft)) is exactly ten times its width.