設計和建築有什麼區別? (What is the difference between Design and Architecture?)


問題描述

設計和建築有什麼區別? (What is the difference between Design and Architecture?)

These two terms are very diffused. How exactly do they differ?

Is there any real life example or scenario that can elaborate this difference?

‑‑‑‑‑

參考解法

方法 1:

See architecture and design.

  

The software architecture of a program   or computing system is the structure   or structures of the system, which   comprise software components, the   externally visible properties of those   components, and the relationships   between them. [...]   Documenting software architecture   facilitates communication between   stakeholders, documents early   decisions about high‑level design, and   allows reuse of design components and   patterns between projects.

‑‑

  

Software design is a process of   problem‑solving and planning for a   software solution. After the purpose   and specifications of software are   determined, software developers will   design or employ designers to develop   a plan for a solution. It includes   low‑level component and algorithm   implementation issues as well as the   architectural view.

‑‑

So they share parts with each other, but they refer to slightly different aspects of software. Technically speaking, architecture should include all aspects, but in reality they usually refer to high level topology or structure of software. For example, making decision about whether to implement a system as a file‑based command line software, a web app, or an n‑tier rich internet application would be an architectural decision.

Software design includes making architectural decisions, but it would include much deeper ones like how many characters address1 should be in a database, which is not really an architectural decision.

Edit:  To simplify the difference, architecture refers to known patterns of software solution, often involving placement and relationships between subcomponents/tiers/layers. The patterns also specify how and where the data is stored, processed, and presented.  An architecture is something that could be described using boxes and arrows, such as autonomous robotic paradigms.

The software design is a process of thinking about solutions to the given software requirements. Each problem is unique in its own ways, so design would be different.

方法 2:

In my understanding, design is more specific to one system. Two systems could have a similar design but share the same architecture. 

So a design defines how a chosen architecture is applied to the given requirements. (or something like this)

But this is more a feeling of mine, so I'm interested in other answers ...

方法 3:

Think of it this way: for building a house, you get a blueprint from architect (Architect). Then constructor use this blueprint and makes decision (Designer) on how many columns are required what kind of cement and bricks to use, what type of coloring needs to be done etc. These are design decision. Then worker takes order from builder and construct the house (Coder).

方法 4:

my take on this..

  • Design is the process of planning how you're going to structure your software

  • Architecture is the reality of how your codebase is structured. If your code is not structured you can't really claim to have an architecture.

Ideally you'd get your architecture from a design phase (or series of design periods during a codebases lifetime), but sometimes good architecture can come from continuous incremental improvements from refactoring, and just a sense of doing what is 'right'.

These aren't formally defined words though ;)

方法 5:

Architecture means the conceptual structure and logical organization of a computer or computer‑based system.

Design means a plan or drawing produced to show the look and function or workings of a system or an object before it is made.

If you are “architecting” a component, you are defining how it behaves in the larger system. If you are “designing” the same component, you are defining how it behaves internally.

All architecture is design but NOT all design is architecture.

How part is the Design and the intersection of What and How is Architecture 

There are also design decisions, that are not architecturally significant, i.e. does not belongs to the architecture branch of design. For example, some component’s internal design decisions, like‑ choice of algorithm, selection of data structure etc. Any design decision, which isn’t visible outside of its component boundary is a component’s internal design and is non‑architectural. These are the design decisions a system architect would leave on module designer’s discretion or the implementation team as long as their design don’t break the architectural constraints imposed by the system level architecture.

The link that gives a good analogy

(by g.revolutionEugene YokotaMartinStettnerDatta Rooyikaruser83642TryinHard)

參考文件

  1. What is the difference between Design and Architecture? (CC BY‑SA 3.0/4.0)

#ooad #architecture






相關問題

接口實現是否應該獨立 (Should Interface implementations be independent)

當我們有不同的回報類型時實現策略模式 (Achieve strategy pattern when we have different return type)

抽象VS信息隱藏VS封裝 (Abstraction VS Information Hiding VS Encapsulation)

應用程序中jQuery表單綁定代碼的最佳實踐 (Best practices with jQuery form binding code in an application)

耦合與內聚 (Coupling and cohesion)

什麼時候應該在C ++中使用類與結構? (When should you use a class vs a struct in C++?)

What is an anti-pattern? (What is an anti-pattern?)

如何根據編程代碼顯示聚合? (How to Show Aggregation in terms of A Programming Code?)

協調 MVP 三元組 (Coordinating MVP triads)

裝飾器和虛擬方法 (Decorators and Virtual Methods)

設計和建築有什麼區別? (What is the difference between Design and Architecture?)

特定時間段有效的業務規則——如何有序管理 (Business rules that are valid for specific time span – how to manage in an orderly manner)







留言討論