it-swarm.com.de

Software Design vs. Software Architektur

Könnte jemand den Unterschied zwischen Software-Design und Software-Architektur erklären?

Genauer; Wenn Sie jemandem sagen, er solle Ihnen das „Design“ präsentieren - was würden Sie von ihm erwarten? Gleiches gilt für "Architektur".

Mein aktuelles Verständnis ist:

  • Design: UML-Diagramm/Flussdiagramm/einfache Wireframes (für die Benutzeroberfläche) für ein bestimmtes Modul/Teil des Systems
  • Architektur: Komponentendiagramm (zeigt, wie die verschiedenen Module des Systems miteinander und mit anderen Systemen kommunizieren), welche Sprache soll verwendet werden, Muster ...?

Korrigiere mich, wenn ich falsch liege. Ich habe Wikipedia verwiesen hat Artikel über http://en.wikipedia.org/wiki/Software_design und http://en.wikipedia.org/wiki/Software_architecture , aber Ich bin nicht sicher, ob ich sie richtig verstanden habe.

342
Mads Mobæk

Du hast recht, ja. Die Architektur eines Systems ist sein "Skelett". Es ist die höchste Abstraktionsebene eines Systems. Welche Art von Datenspeicher ist vorhanden, wie interagieren Module miteinander, welche Wiederherstellungssysteme sind vorhanden? Genau wie bei Entwurfsmustern gibt es Architekturmuster: MVC, 3-Ebenen-Entwurf usw.

Beim Softwaredesign geht es darum, die einzelnen Module/Komponenten zu entwerfen. Was sind die Verantwortlichkeiten, Funktionen des Moduls x? Der Klasse Y? Was kann es und was nicht? Welche Designmuster können verwendet werden?

Kurz gesagt, bei der Software-Architektur geht es mehr um das Design des gesamten Systems, während beim Software-Design der Schwerpunkt auf der Modul-/Komponenten-/Klassenebene liegt.

329
Razzie

In einigen Beschreibungen des SDLC (Software Development Life Cycle) sind sie austauschbar, aber der Konsens ist, dass sie unterschiedlich sind. Sie sind gleichzeitig: verschiedene (1) Stufen , (2) Verantwortungsbereiche und (3) Entscheidungsebenen .

  • Architektur ist das Gesamtbild: die Auswahl von Frameworks, Sprachen, Umfang, Zielen und Methoden auf hoher Ebene ( rational , Wasserfall , - agil usw.).
  • Design ist das kleinere Bild: der Plan, wie Code organisiert wird; Wie sehen die Verträge zwischen verschiedenen Teilen des Systems aus? die laufende Umsetzung der Projektmethoden und -ziele. Die Spezifikation wird in dieser Phase geschrieben.

Diese beiden Stufen scheinen aus verschiedenen Gründen miteinander zu verschmelzen.

  1. Kleinere Projekte haben oft nicht genügend Spielraum, um die Planung in Stufen aufzuteilen.
  2. Ein Projekt kann Teil eines größeren Projekts sein, und daher sind Teile beider Phasen bereits festgelegt. (Es gibt bereits Datenbanken, Konventionen, Standards, Protokolle, Frameworks, wiederverwendbaren Code usw.)
  3. Neuere Denkweisen über die SDLC (siehe Agile methodologies ) ordnen diesen traditionellen Ansatz etwas neu. Design (in geringerem Maße Architektur) findet während der gesamten SDLC absichtlich statt . Es gibt oft mehr Iterationen wo der ganze Prozess immer und immer wieder passiert.
  4. Die Softwareentwicklung ist ohnehin kompliziert und schwer zu planen, aber Kunden/Manager/Verkäufer machen es in der Regel schwieriger, indem sie die Ziele und Anforderungen während des Betriebs ändern. Design und sogar architektonische Entscheidungen müssen später im Projekt getroffen werden , ob dies der Plan ist oder nicht.

Auch wenn sich die Phasen oder Verantwortungsbereiche überschneiden und überall stattfinden, ist es immer gut zu wissen, auf welcher Ebene Entscheidungen getroffen werden. (Wir könnten ewig so weitermachen. Ich versuche, eine Zusammenfassung beizubehalten.) Ich werde mit folgendem Schluss beginnen: Auch wenn es so aussieht, als ob Ihr Projekt keine formale Architektur- oder Designphase hat/AOR/documentaiton, IS passiert, ob jemand es bewusst tut oder nicht. Wenn sich niemand für Architektur entscheidet, passiert ein Standard, der wahrscheinlich schlecht ist. Das Gleiche gilt für Design. Diese Konzepte sind fast wichtiger , wenn es keine formalen Stufen gibt, die sie repräsentieren.

80
Patrick Karcher

Architektur ist strategisch, während Design taktisch ist.

Architektur umfasst Frameworks, Tools, Programmierparadigmen, komponentenbasierte Standards für die Softwareentwicklung sowie übergeordnete Prinzipien.

Während Design eine Aktivität ist, die sich mit lokalen Einschränkungen wie Entwurfsmustern, Programmiersprachen und Refactorings befasst.

55
Chris Kannon

Ich fand das, als ich selbst nach einer einfachen Unterscheidung zwischen Architektur und Design suchte;
Was halten Sie von dieser Art, sie zu betrachten:

  • architektur ist das, was wir bauen;
  • design ist "wie" wir bauen;
38
George S.
  1. Architektur bedeutet die konzeptionelle Struktur und logische Organisation eines Computers oder eines computerbasierten Systems.

    Design ist ein Plan oder eine Zeichnung, die erstellt wurde, um das Aussehen und die Funktion oder die Funktionsweise eines Systems oder eines Objekts zu zeigen, bevor es hergestellt wird.

  2. Wenn Sie eine Komponente „architektonisch gestalten“, definieren Sie, wie sie sich im größeren System verhält.

    Wenn Sie dieselbe Komponente „entwerfen“, definieren Sie, wie sie sich intern verhält.

Alle Architektur ist Design, aber NICHT alles Design ist Architektur.

What Teil ist das Design, der How ist die konkrete Implementierung und der Schnittpunkt von What und How ist Architektur.

Bild zur Unterscheidung von Architektur und Design :

Design vs Architecture

Es gibt auch Entwurfsentscheidungen, die architektonisch nicht signifikant sind, d. H. Nicht zum Architekturzweig des Entwurfs gehören. Zum Beispiel die internen Entwurfsentscheidungen einiger Komponenten, wie die Auswahl des Algorithmus, die Auswahl der Datenstruktur usw.

Jede Entwurfsentscheidung, die außerhalb ihrer Komponentengrenze nicht sichtbar ist, ist das interne Design einer Komponente und nicht architektonisch. Dies sind die Entwurfsentscheidungen, die ein Systemarchitekt nach Ermessen des Moduldesigners oder des Implementierungsteams treffen würde, solange ihr Entwurf nicht die architektonischen Einschränkungen verletzt, die durch die Architektur auf Systemebene auferlegt werden.

Der Link, der gute Analogie gibt

21
TryinHard

Ich würde sagen, Sie haben recht, in meinen eigenen Worten;

Architektur ist die Zuordnung von Systemanforderungen zu Systemelementen. Vier Aussagen zu einer Architektur:

  1. Es kann nicht-funktionale Anforderungen wie Sprache oder Muster einführen.
  2. Es definiert die Interaktion zwischen Komponenten, Schnittstellen, Timing usw.
  3. Es soll keine neue Funktionalität einführen,
  4. Es ordnet die (entworfenen) Funktionen, die das System ausführen soll, Elementen zu.

Architektur ist ein wesentlicher technischer Schritt, wenn eine Komplexität des Systems unterteilt wird.

Beispiel: Denken Sie an Ihr Haus, Sie brauchen keinen Architekten für Ihre Küche (nur ein Element), aber das gesamte Gebäude benötigt einige Interaktionsdefinitionen wie Türen und ein Dach .

Design ist eine informative Darstellung der (vorgeschlagenen) Implementierung der Funktion. Es soll Feedback einbringen und mit Stakeholdern diskutieren. Es könnte eine gute Praxis sein, aber ist kein wesentlicher technischer Schritt.

Es wäre schön, das Küchendesign zu sehen, bevor die Küche installiert wird, aber es ist nicht wesentlich für die Kochanforderung :

Wenn ich darüber nachdenke, können Sie angeben:

  • architektur ist für eine Öffentlichkeit/Ingenieure auf einer detaillierteren Abstraktionsebene
  • design ist für die Öffentlichkeit auf einer weniger detaillierten Abstraktionsebene gedacht
15
user662182

Meine Erinnerung:

  • Wir können das Design ändern, ohne jemanden zu fragen
  • Wenn wir die Architektur ändern, müssen wir sie jemandem mitteilen (Team, Kunde, Stakeholder, ...)
14
Peter Gfader

Ich denke, wir sollten die folgende Regel anwenden, um zu bestimmen, wann wir über Design vs. Architektur sprechen: Wenn die Elemente eines von Ihnen erstellten Softwarebildes einer syntaktischen Konstruktion in einer Programmiersprache eins zu eins zugeordnet werden können, ist Design, wenn nicht Architektur.

Wenn Sie beispielsweise ein Klassendiagramm oder ein Sequenzdiagramm sehen, können Sie eine Klasse und ihre Beziehungen mit der syntaktischen Konstruktion der Klasse einer objektorientierten Programmiersprache zuordnen. Das ist eindeutig Design. Dies könnte darüber hinaus auf den Tisch bringen, dass diese Diskussion eine Beziehung zu der Programmiersprache hat, die Sie zum Implementieren eines Softwaresystems verwenden werden. Wenn Sie Java verwenden, gilt das vorherige Beispiel, da Java eine objektorientierte Programmiersprache ist. Wenn Sie ein Diagramm erstellen, das Pakete und ihre Abhängigkeiten zeigt, ist dies auch Design. Sie können das Element (in diesem Fall ein Paket) einer syntaktischen Konstruktion Java zuordnen.

Angenommen, Ihre Anwendung Java ist in Module unterteilt, und jedes Modul besteht aus einer Reihe von Paketen (dargestellt als JAR-Dateibereitstellungseinheit). Anschließend wird ein Diagramm mit Modulen und ihren Abhängigkeiten angezeigt. das ist architektur. Es gibt in Java keine Möglichkeit (zumindest nicht vor Java 7), ein Modul (eine Gruppe von Paketen) einer syntaktischen Konstruktion zuzuordnen. Möglicherweise stellen Sie auch fest, dass dieses Diagramm einen Schritt höher in der Abstraktionsebene Ihres Softwaremodells ist. Jedes Diagramm über (grobkörniger als) einem Paketdiagramm stellt eine Architekturansicht dar, wenn es in der Programmiersprache Java entwickelt wird. Wenn Sie dagegen in Modula-2 entwickeln, repräsentiert ein Moduldiagramm ein Design.

(Ein Fragment aus http://www.copypasteisforword.com/notes/software-architecture-vs-software-design )

6

Persönlich mag ich dieses:

"Der Designer befasst sich damit, was passiert, wenn ein Benutzer einen Knopf drückt, und der Architekt befasst sich damit, was passiert, wenn zehntausend Benutzer einen Knopf drückt."

SCEA für Java ™ EE Study Guide von Mark Cade und Humphrey Sheil

5
Tavi

Ich stimme vielen Erklärungen zu. Im Wesentlichen erkennen wir den Unterschied zwischen dem architektonischen Entwurf und dem detaillierten Entwurf der Softwaresysteme.

Während das Ziel des Designers darin besteht, in den Spezifikationen so präzise und konkret zu sein, wie es für die Entwicklung erforderlich ist; Der Architekt hat im Wesentlichen das Ziel, die Struktur und das globale Verhalten des Systems genau so zu spezifizieren, wie es für die detaillierte Planung erforderlich ist.

Ein guter Architekt wird Hyperspezifikationen vorbeugen - die Architektur darf nicht zu genau spezifiziert sein, sondern muss die (Architektur-) Entscheidungen nur für die Aspekte treffen, die mit den höchsten Risiken verbunden sind, und effektiv einen Rahmen ("Gemeinsamkeit") bieten, innerhalb dessen die detailliertes Design kann bearbeitet werden, dh Variabilität für lokale Funktionalität.

In der Tat folgt der Architekturprozess oder -lebenszyklus genau diesem Thema - eine angemessene Abstraktionsebene, um die Struktur für die (architektonisch) wesentlichen Geschäftsanforderungen zu skizzieren und der Entwurfsphase weitere Details für konkretere Ergebnisse zu überlassen.

5
Ajay Shendye

Architektur ist Design, aber nicht jedes Design ist architektonisch. Daher wäre es streng genommen sinnvoller, zu versuchen, zwischen architektonischem Design zu unterscheiden und nicht architektonisches Design. Und was ist der Unterschied? Es hängt davon ab, ob! Jeder Softwarearchitekt hat möglicherweise eine andere Antwort (ymmv!). Wir entwickeln unsere Heuristiken, um eine Antwort zu finden, z. B. "Klassendiagramme sind Architektur und Sequenzdiagramme sind Design". Siehe DSA-Buch für mehr.

Es ist üblich zu sagen, dass Architektur auf einer höheren Abstraktionsebene als Design ist, oder Architektur ist logisch und Design ist physisch. Aber dieser Begriff, obwohl allgemein anerkannt, ist in der Praxis unbrauchbar. Wo ziehen Sie die Grenze zwischen hoher oder niedriger Abstraktion, zwischen logisch und physisch? Es hängt davon ab, ob!

Also, mein Vorschlag ist:

  • erstellen Sie ein einzelnes Designdokument.
  • nennen Sie dieses Designdokument so, wie Sie es möchten, oder besser gesagt, so, wie die Leser es gewohnt sind. Beispiele: "Software Architecture", "Software Design Specification".
  • teilen Sie dieses Dokument in Ansichten auf und denken Sie daran, dass Sie eine Ansicht als Verfeinerung einer anderen Ansicht erstellen können.
  • machen Sie die Ansichten im Dokument navigierbar, indem Sie Querverweise oder Hyperlinks hinzufügen
  • dann haben Sie Ansichten auf höherer Ebene, die einen breiten, aber flachen Überblick über das Design bieten, und Ansichten, die näher an der Implementierung liegen und enge, aber tiefere Designdetails zeigen.
  • vielleicht möchten Sie sich ein Beispiel für ein Architekturdokument mit mehreren Ansichten ansehen ( hier ).

Nachdem wir all das gesagt haben ... ist eine relevantere Frage, die wir stellen müssen: Wie viel Design ist genug? Das heißt, wann sollte ich aufhören, das zu beschreiben? Design (in Diagrammen oder Prosa) und sollte auf die Codierung übergehen?

5
Paulo Merson

Gute Frage ... Obwohl die Grenze zwischen ihnen kaum eine scharfe Linie ist, umfasst Architektur, wenn Sie beide Begriffe verwenden, eher technische oder strukturelle Entscheidungen darüber, wie etwas gebaut oder konstruiert werden soll, insbesondere solche Entscheidungen, die schwierig sein werden ( oder schwieriger) zu ändern, wenn sie einmal implementiert sind, während Design diejenigen Entscheidungen umfasst, die entweder später leicht geändert werden können (wie Methodennamen, Organisationsstruktur der Klasse <->, Entwurfsmuster, ob zur Lösung eines bestimmten Problems ein Singleton oder eine statische Klasse verwendet werden soll) usw.) und/oder solche, die das Aussehen oder die ästhetischen Aspekte eines Systems oder einer Anwendung beeinflussen (Benutzeroberfläche, Benutzerfreundlichkeit, Erscheinungsbild usw.)

3
Charles Bretana

Ja, das klingt richtig für mich. Das Design ist das, was Sie tun werden, und Architektur ist die Art und Weise, wie die Teile des Designs zusammengefügt werden. Es könnte sprachunabhängig sein, würde aber normalerweise die zu verwendenden Technologien spezifizieren, dh LAMP v Windows, Web Service v RPC.

3
MrTelly

Die Softwarearchitektur eines Programms oder Computersystems ist die Struktur oder die Strukturen des Systems, die Softwarekomponenten, die äußerlich sichtbaren Eigenschaften dieser Komponenten und die Beziehungen zwischen ihnen umfassen.

(aus Wikipedia, http://en.wikipedia.org/wiki/Software_architecture )

Software-Design ist ein Prozess zur Problemlösung und Planung einer Softwarelösung. Nachdem der Zweck und die Spezifikationen der Software festgelegt wurden, entwerfen oder beschäftigen Softwareentwickler Designer, um einen Plan für eine Lösung zu entwickeln. Es enthält Probleme bei der Implementierung von Komponenten und Algorithmen auf niedriger Ebene sowie die Architekturansicht.

(aus Wikipedia, http://en.wikipedia.org/wiki/Software_design )

Ich hätte es nicht besser sagen können :)

3
Larry Watanabe

Ich sehe Architektur wie Patrick Karcher - das große Ganze. Sie können z. B. die Architektur eines Gebäudes bereitstellen, die strukturelle Unterstützung, die Fenster, Ein- und Ausgänge, die Wasserableitung usw. anzeigen. Sie haben jedoch die Grundrisse, Kabinenpositionen usw. nicht "entworfen".

Während Sie also das Gebäude architektonisch gestaltet haben, haben Sie nicht das Layout der einzelnen Büros entworfen. Ich denke, dasselbe gilt für Software.

Sie könnten das Entwerfen des Layouts als "Architekt des Layouts" ansehen ...

3
mr-sk

Ziemlich subjektiv, aber meine Einstellung:

Architektur Der Gesamtentwurf des Systems, einschließlich der Interaktionen mit anderen Systemen, der Hardwareanforderungen, des Gesamtentwurfs der Komponenten und des Datenflusses.

Design Die Organisation und der Ablauf einer Komponente im Gesamtsystem. Dies würde auch die API der Komponente für die Interaktion mit anderen Komponenten einschließen.

3
Jesse Vogt

Die Software-Architektur befasst sich mit Problemen, die über die Algorithmen und Datenstrukturen der Berechnung hinausgehen.

Bei der Architektur geht es nicht speziell um… Details von Implementierungen (z. B. Algorithmen und Datenstrukturen). Das Architekturdesign umfasst eine umfangreichere Sammlung von Abstraktionen, als sie normalerweise von OOD (Object-Oriented Design) bereitgestellt werden.

Design befasst sich mit der Modularisierung und detaillierten Schnittstellen der Designelemente, ihren Algorithmen und Verfahren sowie den Datentypen, die zur Unterstützung der Architektur und zur Erfüllung der Anforderungen benötigt werden Anforderungen.

„Architektur“ wird oft nur als synonym für „design“ verwendet (manchmal mit dem adjektiv „high-level“ vorangestellt). Und viele Menschen verwenden den Begriff "Architekturmuster" als Synonym für "Designmuster".

Schauen Sie sich diesen Link an.

Definition der Begriffe Architektur, Design und Implementierung

3
Tebo

... vor langer Zeit an einem fernen Ort sorgten sich Philosophen um die Unterscheidung zwischen dem Einen und dem Vielen. In der Architektur geht es um Beziehungen, die viele erfordern. Architektur hat Komponenten. Beim Design geht es um Inhalte, die eines erfordern. Design hat Eigenschaften, Qualitäten, Eigenschaften. Wir glauben normalerweise, dass Design in der Architektur liegt. Dualistisches Denken gibt den Vielen das Ursprüngliche. Architektur gehört aber auch zum Design. Es ist alles, wie wir uns entscheiden, was vor uns liegt - das eine oder die vielen.

3
buzzcoda

Architektur:
Tragwerksentwürfe auf höheren Abstraktionsebenen, die technisch bedeutsame Anforderungen an das System realisieren. Die Architektur legt den Grundstein für die weitere Gestaltung.

Design:
Die Kunst, das, was die Architektur tut, durch einen iterativen Prozess auf jeder Abstraktionsebene auszufüllen.

3
Joshua Ramirez

Ich mochte dieses Papier als Faustregel für die Trennung von Architektur und Design:

http://www.eden-study.org/articles/2006/abstraction-classes-sw-design_ieesw.pdf

Es wird die Intensions-/Lokalitätshypothese genannt. Aussagen über die Natur der Software, die nicht lokal und inhaltlich sind, sind architektonisch. Aussagen, die lokal und sachlich sind, sind Design.

3
LindsayBradford

wenn jemand ein Schiff baut, sind Motor, Rumpf, Stromkreise usw. seine "architektonischen Elemente". Der Motorenbau wird für ihn "Konstruktionsarbeit" sein.

Wenn er dann die Konstruktion des Motors an ein anderes Team delegiert, wird eine "Motorarchitektur" erstellt ...

Also - es kommt auf die Abstraktions- oder Detailebene an. Die Architektur einer Person könnte ein anderes Design sein!

2
Gernot Starke

Architektur sind "die Entwurfsentscheidungen, die schwer zu ändern sind."

Nachdem ich mit TDD gearbeitet hatte, was praktisch bedeutet, dass sich Ihr Design ständig ändert, hatte ich oft mit dieser Frage zu kämpfen. Die obige Definition wurde aus Mustern der Enterprise Application Architecture von Martin Fowler extrahiert

Dies bedeutet, dass die Architektur von der Sprache, dem Framework und der Domäne Ihres Systems abhängt. Wenn Sie nur eine Schnittstelle aus Ihrer Java Klasse in 5 Minuten extrahieren können, ist es nicht mehr und Architekturentscheidung.

2
ekeren

Die Softwarearchitektur wird am besten auf Systemebene verwendet, wenn Sie Geschäftsprozesse und Funktionen, die durch höhere Architekturebenen gekennzeichnet sind, in Anwendungen projizieren müssen.

Zum Beispiel geht es in Ihrem Geschäft um "Gewinn und Verlust" für Händler, und Ihre Hauptfunktionen sind "Portfoliobewertung" und "Risikoberechnung".

Aber wenn ein Software Architect seine Lösung ausführlich beschreibt, wird er feststellen, dass:

"Portfolio-Bewertung" kann nicht nur eine Anwendung sein. Es muss in überschaubaren Projekten verfeinert werden wie:

  • GUI
  • Startprogramm
  • Dispatcher
  • ...

(Da die damit verbundenen Vorgänge so umfangreich sind, müssen sie auf mehrere Computer aufgeteilt werden, während sie jederzeit über eine gemeinsame Benutzeroberfläche überwacht werden.)

ein Software-Design untersucht die verschiedenen Anwendungen, ihre technischen Beziehungen und ihre internen Unterkomponenten.
Es werden die Spezifikationen erstellt, die für das Funktionieren der letzten Architekturebene (der "technischen Architektur") erforderlich sind auf (in Bezug auf technische Rahmenbedingungen oder übergreifende Komponenten) und für die Projektteams (mehr auf die Implementierung der Geschäft Funktionen ausgerichtet), um ihre jeweiligen Projekte zu beginnen.

2
VonC

Software-Design hat eine längere Geschichte, während der Begriff Software-Architektur kaum 20 Jahre alt ist. Daher ist es jetzt durch wachsende Schmerzen.

Akademiker neigen dazu, Architektur als Teil des größeren Feldes des Software-Designs zu betrachten. Obwohl die Erkenntnis wächst, dass Arch ein Feld für sich ist.

Praktiker neigen dazu, Arch als übergeordnete Entwurfsentscheidungen zu betrachten, die strategisch sind und bei einem Projekt kostspielig sein können, um sie rückgängig zu machen.

Die genaue Grenze zwischen Arch und Design hängt von der Softwaredomäne ab. In der Domäne der Webanwendungen gewinnt die geschichtete Architektur derzeit am meisten an Beliebtheit (Biz-Logik-Schicht, Datenzugriffsschicht usw.). Die untergeordneten Teile dieses Arch gelten als Entwurf (Klassendiagramme, Methodensignaturen usw.). ) Dies würde in den Domänen eingebetteter Systeme, Betriebssysteme, Compiler usw. unterschiedlich definiert.

1
LeWoody

Cliff Notes Version:

Design: Implementierung einer Lösung basierend auf den Spezifikationen des gewünschten Produkts.

Architektur: Die Grundlage/Tools/Infrastruktur/Komponenten, die Ihr Design unterstützen.

Dies ist eine ziemlich breite Frage, die viele Antworten hervorruft.

1
kd7

Architektur ist die resultierende Sammlung von Entwurfsmustern zum Aufbau eines Systems.

Ich denke, Design ist die Kreativität, mit der all das zusammengefügt wird?

1
Mark Redman

Ich mag Roy Thomas Fieldings Definition und Erklärung der Softwarearchitektur in seinem Artikel: Architekturstile und das Design netzwerkbasierter Softwarearchitekturen

Eine Softwarearchitektur ist eine Abstraktion der Laufzeitelemente eines Softwaresystems während einer Phase seines Betriebs. Ein System kann aus mehreren Abstraktionsebenen und mehreren Betriebsphasen mit jeweils eigener Softwarearchitektur bestehen.

Er betont "Laufzeitelemente" und "Abstraktionsebenen".

1
Jacky

Architektur und Design sind eng miteinander verbunden. Der Hauptunterschied zwischen ihnen ist wirklich, in welche Richtung wir sehen. Architektur steht vor Strategie, Struktur und Zweck, vor dem Abstrakten. Design steht in Richtung Umsetzung und Praxis, in Richtung Beton.

1
Hassan Ali

Es gibt keine definitive Antwort darauf, da "Software-Architektur" und "Software-Design" eine ganze Reihe von Definitionen haben und es für beide keine kanonische Definition gibt.

Eine gute Denkweise ist die Aussage von Len Bass, Paul Clements und Rick Kazman, dass "jede Architektur Design ist, aber nicht jedes Design Architektur" [Software Architecture in Practice]. Ich bin mir nicht sicher, ob ich damit einverstanden bin (da Architektur auch andere Aktivitäten umfassen kann), aber es zeigt, dass Architektur eine Entwurfsaktivität ist, die sich mit der kritischen Teilmenge des Entwurfs befasst.

Meine leicht flippige Definition (zu finden auf der Seite SEI-Definitionen ) ist, dass es die Entscheidungen sind, die, wenn sie falsch getroffen werden, dazu führen, dass Ihr Projekt abgebrochen wird.

Ein nützlicher Versuch, Architektur, Design und Implementierung als Konzepte zu trennen, wurde vor einigen Jahren von Amnon Eden und Rick Kazman in einem Forschungspapier mit dem Titel "Architecture, Design, Implementation" unternommen, das hier zu finden ist: http: // www .sei.cmu.edu/library/assets/ICSE03-1.pdf . Ihre Sprache ist ziemlich abstrakt, aber sie sagen vereinfacht, dass Architektur Design ist, das in vielen Zusammenhängen verwendet werden kann und systemübergreifend angewendet werden soll, Design ist (Err) Design, das in vielen Kontexten verwendet werden kann, aber in einem bestimmten Teil des Systems angewendet wird, und Implementierung ist kontextspezifisches Design und wird in diesem Kontext angewendet.

Eine architektonische Entscheidung könnte also die Entscheidung sein, das System über Messaging anstatt über RPC zu integrieren (dies ist also ein allgemeines Prinzip, das an vielen Stellen angewendet werden kann und auf das gesamte System angewendet werden soll). Eine Entwurfsentscheidung könnte die Verwendung eines Masters sein/Slave-Thread-Struktur im Eingangsanforderungs-Verarbeitungsmodul des Systems (ein allgemeines Prinzip, das überall verwendet werden kann, aber in diesem Fall nur in einem Modul verwendet wird) und schließlich könnte eine Implementierungsentscheidung darin bestehen, die Verantwortlichkeiten für die Sicherheit vom Anforderungs-Router zu übertragen an den Anforderungs-Handler im Anforderungs-Manager-Modul (eine Entscheidung, die nur für diesen Kontext relevant ist und in diesem Kontext verwendet wird).

Ich hoffe das hilft!

1
Eoin
1
Durga Vaddi

Design: Erfahren Sie mehr über die Module, welche Art von Beziehungen zwischen den Modulen, die Funktionalität der einzelnen Module, Klassen und ihre Mitgliedsfunktionen sowie die Schnittstellen der einzelnen Module, die miteinander kommunizieren.

Architektur: Architektur ist die gesamte Struktur eines Softwaresystems. Alle Module, Klassen und Komponenten führen unterschiedliche Aufgaben aus und liefern ein einzigartiges Ergebnis.

Zum Beispiel: Es gibt ein Haus mit 5 Zimmern. Es gibt auch angeschlossene Badezimmer. Die Küche ist auch in der Wohnung. Es gibt also verschiedene Dinge in der Wohnung, und alle diese Dinge haben unterschiedliche Beziehungen zueinander. Es geht also nur um das DESIGN eines Hauses.

Wenn Sie von außerhalb eines Hauses schauen, dreht sich bei der gesamten Struktur, die Sie betrachten, alles um die Architektur.

1
Imran Azim

Architektur ist High-Level, abstraktes und logisches Design, während Software-Design Low-Level, detailliertes und physisches Design ist.

1
imran

Architektur ist Design mit einer Begründung, die von verschiedenen Faktoren herrührt, von denen die wichtigsten die nicht-funktionalen Anforderungen wie etwa Skalierbarkeit und nicht zuletzt Erfahrung sind. Ohne Begründung bleibt Ihnen ein einfaches Muster oder eine Anleitung übrig. Egal, ob Sie auf einer höheren Ebene oder auf Klassenebene entwerfen, es ist immer noch Design.

ODER anders ausgedrückt

Architektur ist Meta-Design, d. H. Das Entwerfen des Designs. Sie haben einige Muster, von denen bekannt ist, dass sie zu einem bestimmten Lösungsbereich passen. Welche würden Sie auswählen und warum? Architektur ist, wenn man auf das "Was" und "Warum" antwortet (das "Wie" ist bereits durch das Design vorgegeben). Es hängt sicherlich nicht von der Abstraktionsebene ab, zum Beispiel ist das Implementieren verteilter Sitzungen keine Aufgabe auf Klassenebene, aber für eine bestimmte Architektur stehen einige Entwürfe zur Auswahl.

Ebenso spiegelt sich Architektur auch in einem Design auf Klassenebene wider. Bei einer skalierbaren Architektur unterscheidet sich das Klassendesign häufig, wenn Sie dies ohne Berücksichtigung des Skalierbarkeitsfaktors tun. Warum Sie eine Methode "BeginAsyncUpload" im Vergleich zu "Upload" benötigen, ist eine architektonische Entscheidung.

Interessanterweise verlieren die Fragen "welche und warum" an Bedeutung und "wie" an Relevanz, wenn wir uns auf das Systemelement auf höherer Ebene konzentrieren. Wenn Sie sich in die andere Richtung bewegen, wird das "Wie" wichtiger, auch weil die wiederholte Verwendung es offensichtlich macht, beispielsweise zwischen "Abstract Factory" und "Prototype" zu wählen.

0
Shoaib

Meiner Meinung nach ist Architektur nichts anderes als eine Vision, die Anforderungen sammelt und die Bausteine ​​auf die richtige Weise formuliert

um einen bestimmten Block zu konstruieren, stehen möglicherweise 100 Lösungen zur Verfügung. Um jedoch die genauen Anforderungen zu erfüllen, müssen wir die richtige Methode auswählen. Daher ist die Auswahl der richtigen Methode oder des richtigen Algorithmus nichts anderes als Design

0
Rajesh Darapu

Architektur ist eher die Integration verschiedener Funktionen eines Systems, um ein Ziel des Systems als Ganzes zu erreichen, während Design alle funktionalen Anforderungen berücksichtigt.

Nehmen Sie zum Beispiel MVVM, ein Architekturmuster. Für die Benachrichtigungsfunktion verwendet MVVM das Beobachtermuster, das wiederum ein Entwurfsmuster ist.

0
Piyush

Wie auch andere betonten, werden beim Entwurf der Architektur einer Software die wichtigsten Entwurfsentscheidungen getroffen, die den gesamten Einfluss auf die Softwareentwicklung oder den Ausführungslebenszyklus haben. Architektur ist also einfach nur High-Level-Design.

Auch wenn eine Architekturentscheidung nicht alle Komponenten betrifft (also lokal ist), muss sie dennoch global relevant sein, d. H. Das gesamte System in irgendeiner Weise beeinflussen. Ansonsten ist es einfach eine lokale Designentscheidung.

Ich möchte jedoch darauf hinweisen, dass eine relevantere Frage im Zusammenhang mit Architektur die Frage Architektur vs. Organisation sein könnte, wie sie von Hennessy & Patterson in Computer Architecture definiert wurde. Auf dieser Grundlage könnten wir uns Architektur als Datenmodell (Eingabe/Ausgabe, Status) -Abstraktion des Systems und Organisation als typische Entwurfsentscheidungen während des Implementierungsprozesses (Softwareentwicklung) vorstellen.

0
arpadf

ARCHITEKTUR: - Eine Architektur erstellt das Planungslayout in verschiedenen Bauphasen gemäß den Vorgaben.

DESINER: - Ein Desiner ist eine Tätigkeit, die alle wesentlichen Anforderungen der Architekturpläne mit der Funktionalität, Ästhetik und dem Aussehen der Layouts erfüllt.

0
saurabh kumar

Ich denke, bei Architektur geht es um die Schnittstellen zu Menschen und/oder Systemen. Für insance ist ein Webservicevertrag, einschließlich Protokollen usw., Architektur. Wie ein Bildschirm aufgebaut ist, nicht Farben und dergleichen, sondern welche Felder es gibt, ist Architektur.

Design ist, wie etwas gebaut werden soll. Welche Frameworks, Sprache, Technologie usw.? Dies muss natürlich mit Unternehmensrichtlinien und -einschränkungen in Bezug auf Plattformen, Sicherheit usw. in Einklang gebracht werden.

0
jimmystormig

Die Architektur identifiziert grundlegende Komponenten des Systems, beschreibt deren Organisation und deren Beziehung, um ein Framework für das System zu erstellen.

Das Design beschreibt verschiedene Komponenten und wie sie entwickelt werden sollten, um die erforderliche Funktionalität in dem von der Systemarchitektur bereitgestellten Framework bereitzustellen.

0
Naga Jeenu

http://jinwolf.tumblr.com/post/6591954772/architectural-patterns-vs-design-patterns

Die Architektur zeigt Ihnen, wie Ihr System aufgebaut ist. Ein Beispiel für ein traditionelles Architekturmuster ist ein dreistufiges System, bei dem Ihr System in Präsentations-, Geschäfts- und Datenebenen unterteilt ist.

Das domänengetriebene Design fördert eine 4-Ebenen-Architektur. Präsentations-, Anwendungs-, Domänen- und Infrastrukturebenen. Das Repository-Muster befindet sich zwischen der Domänenschicht und der Infrastrukturschicht. Ihre Domain-Modelle sollten nichts über die Infrastruktur wissen und auch rein und unabhängig davon sein. Deshalb haben wir das Repository, um diese beiden Schichten zu vermitteln.

Das Repository-Muster ist immer noch ein Muster, da es eine wiederverwendbare Lösung ist und die sich wiederholenden Probleme behandelt. Das Repository-Muster wird jedoch nur relevant, wenn wir über die Architektur sprechen. Es hat seine Rollen und Verantwortlichkeiten in der domänengetriebenen Designarchitektur. Es handelt sich nicht um eine allgemeine mathematische Lösung wie das abstrakte Factory-Muster, die an einer beliebigen Stelle in Ihrem System angewendet werden kann.

0
Jin