5 Important Key Principles of Software Architecture for Better Design
iTechnolabs Inc
Mobile App development | Web Design & Development | Artificial Intelligence | NLP | On-Demand Software Development Teams
IT and software development in general have been dominated by Software Architecture. It simplifies and understands the management of solutions within your company. As for the software developers working on the project, it is also helpful, whether it is a web app or a mobile app, that there is accurate and clear communication between the rest of the team members and the software developers.
What is Software Architecture?
The term “Software Architecture” refers to a set of system structures composed by elements (objects, threads, logicals and physicals, classes, components, etc.) which have properties that can be seen from an external vantage point, as well as their relationships with each other.
As part of the architecture, you should:
Solid Principles
In addition to software development, the SOLID principles also apply to system architecture.
Let’s look at…
领英推荐
1. Single Responsibility Principle
It is recommended that a capability (such as a service, module, or API) have no more than one purpose. The users are better informed of the intended purpose when the responsibilities are narrow, leading to fewer errors.
2. Open-Closed Principle
Essentially, this principle suggests that extending a system behavior is preferable to changing it. A key component of an application’s longevity is its ability to adapt to new functionality with minimal changes to existing components, even though anticipating changes ahead of time is rarely a good idea (as it can lead to bloated designs).
3. Liskov Substitution Principle
Essentially, this refers to derived classes being interchangeable with their bases, but how this applies to Distributed Architecture is that two services interact effectively when they have a ‘contract’ that defines inputs/outputs, structures and constraints between them.
In other words: there should be no changes to the correctness of a system in the case of two distributed components with the same contract.
4. Interface Segregation Principle
Clients should have fine-grained interfaces/contracts so that calls aren’t dependent on functionality they aren’t using. This is in alignment with Single Responsibility: when we break apart interfaces, we promote composition through role separation, and decoupling by breaking down unneeded responsibilities between derivative modules.
5. Dependency Inversion Principle
There should be no dependency between high-level and low-level modules; they should both be abstraction-based. The same applies to abstractions and details, the latter should depend on the former. Thus, the concept of interface abstraction is applied to software components and layers at the higher and lower levels thereby removing the dependencies between them. Read More
It came to my attention that you have paraphrased my popular medium article posted here: https://towardsdatascience.com/5-key-principles-of-software-architecture-e5379cb10fd5. I spent several weeks creating a new taxonomy of architectural principles (those of 'Least' and 'Economics') and you plagiarised all of it - almost word for word! I published this article on July 2019 and you copied it on October 2021, without citing your sources and without permission to copy. I request you remove this article immediately.