Architettura software vs architettura di sistema vs diagrammi di classe?


11

Sono abbastanza confuso riguardo ai seguenti termini:

Architettura del software

L'architettura dell'applicazione software è il processo di definizione di una soluzione strutturata che soddisfa tutti i requisiti tecnici e operativi, ottimizzando al contempo attributi di qualità comuni come prestazioni, sicurezza e gestibilità. Implica una serie di decisioni basate su una vasta gamma di fattori e ognuna di queste decisioni può avere un impatto notevole sulla qualità, sulle prestazioni, sulla manutenibilità e sul successo complessivo dell'applicazione. ( microsoft )

Architettura di sistema

Un'architettura di sistema è un modello concettuale che definisce la struttura, il comportamento e più viste di un sistema. 1 Una descrizione di architettura è una descrizione formale e una rappresentazione di un sistema, organizzata in modo da supportare il ragionamento sulle strutture e sui comportamenti del sistema ( wiki )

Diagrammi di classe

Nell'ingegneria del software, un diagramma di classe in Unified Modeling Language (UML) è un tipo di diagramma di struttura statica che descrive la struttura di un sistema mostrando le classi del sistema, i loro attributi, operazioni (o metodi) e le relazioni tra gli oggetti. ( wiki )

Se leggo queste descrizioni tutte queste descrivono le interazioni tra i diversi moduli dell'applicazione. Tuttavia, quali sono le differenze tra questi?
Cosa penso / ho provato a confrontare questi termini :

  • I diagrammi di classe non sono una forma di architettura di sistema, poiché la descrizione di cui sopra ( structure, behavior, and more views of a system) implica che non sono presenti dettagli di implementazione in un'architettura, mentre i diagrammi di classe descrivono l'implementazione e sono probabilmente più orientati alla progettazione piuttosto che all'architettura?
  • Penso che l'architettura di sistema sia un'architettura che include anche interazioni esterne (come il database) mentre l'architettura software si concentra sull'applicazione stessa?

1
Forse i diagrammi di classe sono un risultato dell'attività dell'architettura software, in modo simile ai progetti di un edificio sono un risultato dell'architetto dell'edificio ...
FrustratedWithFormsDesigner

Risposte:


7

L'architettura di sistema descrive i componenti del sistema. Ad esempio, potresti avere un sistema di inserimento ordini composto da:

Front-end Web, servizio di livello aziendale e archivio dati.

Quindi, dovresti un diagramma di alto livello che mostra questo.

L'architettura dell'applicazione software descrive l'architettura di un particolare componente. Ad esempio, uno dei componenti del sistema di immissione dell'ordine è il front-end Web. L'architettura dell'applicazione mostrerà i vari livelli e interazioni di quel componente. Interfaccia utente reattiva, Model View Controller, chiamate del servizio Web, come verrà effettuata la registrazione, ecc. Fornisce e viene ideata ogni componente e gli strati in quel componente che fa parte del sistema più grande.

di solito viene creato un diagramma più dettagliato che mostra come verrà costruito quel componente.

Infine, i diagrammi di classe approfondiscono l'architettura dell'applicazione software. Ad esempio, come appare il contratto per l'interfaccia di registrazione? In che modo View interagirà con il controller ... e così via. Questi forniranno ulteriori dettagli sull'architettura dell'applicazione software per un particolare componente del sistema.

Dovrebbero essercene molte se il componente particolare è grande e complesso.


2

Alcuni punti aggiuntivi:

  • Il sistema è il termine più ampio e in genere il livello più alto, il meno dettagliato.
  • Parte del sistema può essere classificata come software.
  • Parte del software può essere descritta usando diagrammi di classe.

Ultimo ma non meno importante: l'architettura riguarda le scelte di una volta che sono difficili o impossibili da recuperare in seguito senza ricostruire tutto. La migliore definizione di architettura, che la distingue dal design, è "tutto ciò che è veramente costoso cambiare". Quindi in architettura troverai tipicamente la scelta per un linguaggio di programmazione, il sistema operativo, il marchio di un database relazionale, qualunque cosa ti blocchi in un tipo di soluzione. Quindi ciò che classifica come architettura dipende anche dal sistema stesso e da quanto (in) flessibile è riguardo all'aspetto.


0

I diagrammi di classe sono abbastanza diversi dal resto dei due termini: mostrano ciò che le classi offrono alle altre classi e il modo in cui interagiscono tra loro. Tuttavia, i termini "architettura di sistema" e "architettura del software" creano confusione e richiedono ulteriori chiarimenti.

È importante rendersi conto che un "sistema" si riferisce non solo ai componenti software ma anche ad altri componenti come i componenti hardware. Se un sistema contiene solo un sistema software, allora non c'è differenza tra i due termini. Tuttavia, ovviamente, se un sistema contiene altri componenti non software, l'architettura software sarà significativamente diversa dall'architettura di sistema del sistema.


L'architettura del sistema dovrebbe contenere anche qualcosa come un modulo GUI? @Tushar
KingBoomie

Sì, può e non deve essere un componente software. @RickBeeloo
Tushar

Ma avresti bisogno di una classe nel software per accettare l'input dell'utente e mostrare qualcosa all'utente? Quindi dovrebbe essere anche un componente software?
KingBoomie

Sì e No. Non tutti i consumatori di un sistema software sono umani :)
Tushar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.