Come descrivere la relazione tra un back-end e un DB in un diagramma di componenti?

2

Non penso di capire completamente che cosa dovrebbe mostrare un diagramma di componenti. Diciamo che ho un'applicazione web a 3 livelli per un sistema di prenotazioni in famiglia, simile a airbnb. I 3 componenti principali sono chiari: client, webapp / back-end e DB. Ma quando si tratta di disegnare il diagramma dei componenti, non so come denominare le interfacce.

Per esempio, qui presentano la diagramma seguente:

Undiagrammacomponenterientra , ma mi sembra che "CustomerLookup" sia più un caso d'uso che una relazione strutturale.

Data un'applicazione non banale, il back-end farà un uso molto più complesso del DB. Farà ricerche sugli utenti, ma anche sulla memorizzazione degli utenti, sulla ricerca degli alloggi, ecc. Non credo che dovrei disegnare tutti questi casi d'uso nel diagramma. Dovrei usare un nome molto generico come "Persistenza" o un'interfaccia per entità (Utente, Alloggio, ecc.)?

    
posta antonro 26.05.2018 - 12:53
fonte

2 risposte

1

È meglio esprimere tali informazioni con un diagramma concettuale rispetto a un diagramma di componenti. Significato: disegna due caselle e collegale direttamente con una linea a punta di freccia

Vedi anche: Diagramma concettuale @ Wikipedia

Ciò di cui stai parlando è una vista di altissimo livello di un sistema. I diagrammi dei componenti non sono adatti per visualizzazioni di livello così elevato. I diagrammi dei componenti sono necessari per mostrare tutte le funzionalità pubbliche utilizzate dei componenti. Essendo così, aiutano a capire le interazioni tra componenti in un solo sguardo. Quindi devono essere dettagliati.

    
risposta data 02.06.2018 - 02:33
fonte
7

La tua confusione deriva probabilmente dal fatto che i database, in particolare i database relazionali normalizzati, quando visti come componenti, in genere forniscono interfacce molto ampie. Qualsiasi tabella pubblica, qualsiasi vista e talvolta anche stored procedure rappresenta un'interfaccia a sé stante. Quindi, ad eccezione dei banali database, la rappresentazione di ogni entità con un simbolo di interfaccia non è un utile livello di astrazione: diventerebbe semplicemente un elenco non strutturato di tutte le entità DB.

Ora se la tua applicazione di accesso (come l'app di backend del tuo esempio) è solo una scatola nera, non facilmente da suddividere in diversi componenti logici, e l'intera cosa accede al modello di DB arbitrariamente a volontà, di quanto tu non possa fare molto meglio della modellazione del DB come un'unica interfaccia, con un solo simbolo e nessun nome specifico. In realtà considererei di omettere qualsiasi nome, un nome come "persistenza" in realtà non fornisce più informazioni che nessun nome.

Tuttavia, se i client di accesso sono molte applicazioni diverse, ciascuna responsabile di un sottogruppo diverso delle entità nel DB e ciascuna di esse un componente logico o fisico, può avere senso modellare il DB con le singole interfacce, ciascuno per ciascun sottogruppo e ognuno con un nome univoco che distingue il suo scopo dagli altri. Oppure, quando esiste un'architettura di microservizio, in cui ogni servizio ha un database o una memoria dati autonoma, ogni servizio insieme al proprio DB può essere modellato come componente. Per questo, ogni simbolo di interfaccia rappresenterà l'intera API di un servizio / componente.

Quindi, in breve, i diagrammi componenti sono più adatti per architetture basate su componenti . Se l'applicazione o il database non hanno una sottostruttura sufficiente o se lo si modella a un livello di astrazione in cui questa sottostruttura non è visibile, un diagramma di componenti non è particolarmente utile.

    
risposta data 30.05.2018 - 19:37
fonte

Leggi altre domande sui tag