admin管理员组

文章数量:1663034

This article is part of a series based on the book Clean Architecture by Robert C. Martin. Only the topic heading is taken from the book and is researched in the software community to find what is useful and acceptable. If you prefer to watch the video, you can also find it here.

As part of my series, when I started researching these two terms, I find two major views that are widely accepted in the community. Some people prefer to make a distinction between these two terms while others say that these terms are interchangeable. Let’s look into the first view that describes the difference between Software Architecture and Design.

软件架构!=设计

在进行区分的同时,据说软件架构侧重于应用程序或产品的高级架构,而设计往往充满了低级细节。

软件架构

软件架构将为客户给出的问题或要求提供高级解决方案,并且不会详细介绍每个组件。

Software Architecture != Design

While making a distinction, it is said that Software architecture focuses on the high-level architecture of the application or product, and Design is often filled with low-level details.

Software Architecture

Software architecture will provide a high-level solution to the problem or the requirements given by the client and will not go into detail about each and every component.

我们可以在给定的图像中看到这一点,其中高级设计描述了应用程序的所有组件以及它们之间的交互。该解决方案没有提供有关每个组件的任何详细信息。该组件可以是数据库提供者、代理服务器、外部供应商、API 网关等。我发现的一个有趣的软件架构示例是许多人在应用程序中经常使用的 MVC 模式或模型-视图-控制器模式。

设计

现在,如果我们研究软件设计,我们将深入研究我们在创建软件架构解决方案时定义的每个组件的细节。详细信息将描述如何在此级别使用各种功能、模块、范围、模式、设计原则等来构建组件,以创建更好的软件。我们可以在下图中看到这一点。

We can see this in the given image where high-level design is describing all the components of the application and the interaction between them. The solution is not giving any details about each and every component. The component can be a database provider, proxy server, external vendors, API gateway, etc. One interesting example I found of software architecture is of MVC pattern or Model-View-Controller pattern that many people often use in applications.

Design

Now, if we look into software design, we will delve into the details of every single component that we defined while creating the software architecture solution. The details will describe how the component will be build-up using various functions, modules, scopes, patterns, design principles, etc at this level to create better software. We can see this in the following image.

低级设计的一个很好的例子是SOLID原则,它基本上是 5 个原则的协作,以做出更好的面向对象设计。我现在不会深入研究这些,但肯定会作为我系列的一部分回来。本质上,软件设计是关于设计单个模块或组件,并根据给定的需求定义它们的职责、编码模式或原则、访问级别和限制。

软件架构 == 设计

现在,第二种观点相当简单地描述了软件架构和设计是平等的。这似乎也是正确的,因为如果您注意到即使我们处于低级细节,我们仍然在定义单个模块的高级细节。因此,有些人宁愿不要混淆这两者,而是使用相同的软件架构和设计。

One good example of low-level design is SOLID principles which are basically a collaboration of 5 principles to make better object-oriented designs. I will not delve into these right now, but will definitely come back as part of my series. In essence, software design is about designing individual modules or components and defining their responsibilities, coding patterns or principles, access levels, and restrictions based on the given requirements.

Software Architecture == Design

Now, the second view is fairly simple describing that both software architecture and design are equal. This seems to be true also because if you notice even when we are at the low-level details, we are still defining high-level details of a single module. So, some people prefer to not confuse these two and use software architecture and design as same.

Now, enough about the difference between these two as I think the most important thing to know is what is software architecture and why we need good software architecture.


【更多阅读:禅与计算机程序设计艺术】

  1. 清洁代码之道:一份实用关于如何编写和维护干净整洁的好代码的的方法 The Art Of Clean Code

  2. 来自软件架构大师的 4 个真理

  3. 程序员架构修炼之道:软件架构设计的37个一般性原则

  4. 软件架构设计的核心:抽象与模型、“战略编程”

  5. 软件架构的本质

  6. 快看软件架构风格总结: 各种历史和现代软件架构风格的快速总结

  7. 软件架构师成长之路: Master Plan for becoming a Software Architect

  8. 软件架构设计杂记:  好作品是改出来的,好的代码是不断重构打磨出来的, 心性是历经艰难困苦修炼出来的

本文标签: SoftwareDifferenceArchitectureDesignamp