5 Important Key Principles of Software Architecture for Better Design

5 Important Key Principles of Software Architecture for Better Design

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?

No alt text provided for this image

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:

  • Display the system’s structure but hide its implementation details.
  • Implement all scenarios and use cases.
  • Take into account the needs of several stakeholders.
  • Ensure both quality and functionality.

Listed below are the?Key Principles of Software Architecture for Better Design

No alt text provided for this image

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.

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了