Esiste un modo per tenere traccia delle dipendenze della struttura dati dal database, attraverso i livelli, fino alla pagina Web?

6

Quando progettiamo applicazioni, generalmente ci ritroviamo con le stesse serie di strutture dati a più livelli:

  1. Una struttura di dati persistente descritta con DDL e implementata come tabelle e colonne RDBMS.
  2. Un insieme di oggetti di dominio costituiti principalmente da strutture di dati, generalmente combinate con la logica del livello di regole aziendali, implementate in un linguaggio di programmazione come Java.
  3. Un insieme di interfacce del livello di servizio che supportano direttamente le implementazioni caso d'uso (che utilizzano le strutture dati del dominio come parametri), implementate come EJB o qualcosa di equivalente in un altro linguaggio di programmazione.
  4. schermate dell'interfaccia utente che consentono agli utenti di C reate, R etrieve, U pdate e (forse) D elete tutti i tipi di strutture dati e grafici delle strutture dati, con numerose schermate e con più widget dell'interfaccia utente, tutti strutturati per supportare le stesse strutture di dati.

Ma se vuoi cambiare le strutture dei dati in uno di questi livelli, sembra sempre estremamente difficile valutare l'impatto (i) che il cambiamento avrà nell'applicazione. UML può essere d'aiuto, ma tracciare il diagramma dopo il diagramma non è una soluzione reale a questo problema. Il meglio che abbia mai visto è stato un documento di calcolo del foglio di dati per il tracciamento dei dati, che elencava tutte le strutture di dati e gestiva le relazioni da tier-to-tier.

Esiste uno strumento o un approccio accettato che semplifica l'identificazione di una struttura di dati in qualsiasi livello e consente di ottenere facilmente un elenco di tutti i dipendenti:

  • tabella dei database e strutture dei dati delle colonne
  • strutture dati oggetto dominio
  • metodi dell'interfaccia del livello di servizio e strutture dei dati dei parametri
  • schermo & Strutture dei dati dei componenti dell'interfaccia utente
posta Sean Mickey 08.05.2012 - 01:41
fonte

4 risposte

4

In Java puoi ottenere almeno alcuni aiuto da Hibernate e JPA. Con questa combinazione è possibile descrivere la struttura dati completa negli oggetti Java con annotazioni e Hibernate genererà il DDL e, se configurato per farlo, aggiornare lo schema del database quando si cambiano gli oggetti.

Sul front-end, è possibile fornire i dati in formato JSON in modo da poter implementare un'interfaccia utente basata sui dati in JavaScript e creare dinamicamente le operazioni CRUD utilizzando etichette e valori presenti nella rappresentazione JSON. Ci sono librerie che convertono oggetti Java in JSON usando l'introspezione, quindi non ci sarebbe bisogno di supporto aggiuntivo per gli oggetti dati.

In genere le operazioni CRUD front end richiedono molta messa a punto per renderle appetibili per gli utenti, e forse anche per aiutare il testo, ad esempio, e non c'è modo di aggirarlo.

Probabilmente è ancora più semplice usare Ruby su Rails, ma non l'ho ancora esaminato.

    
risposta data 12.05.2012 - 00:06
fonte
2

Non conosco uno strumento generale per tale compito, ma ho il sospetto che ce ne siano di specializzati che possono farvi part-time, specialmente se si sta all'interno di un linguaggio introspettivo popolare come Java.

Devo dire che questo è un problema estremamente spinoso, soprattutto perché ogni livello è tipicamente scritto in una lingua diversa, e la tendenza è di codificare la struttura dei dati in modo nativo in ogni livello, magari con l'aiuto di uno strumento di generazione del codice. Qualsiasi strumento in grado di tagliare ciò dovrebbe essere in grado di analizzare parecchie lingue e mettere a punto le relative strutture di dati. Per renderlo trattabile, immagino che sia necessario incorporare nel codice i due marcatori speciali per lo strumento, altrimenti ogni livello sarebbe generato dinamicamente da un linguaggio di definizione dei dati master (non necessariamente un DDL tradizionale).

    
risposta data 08.05.2012 - 08:57
fonte
2

Non c'è magia se non la documentazione che probabilmente stai già facendo. Il problema è di tenerlo aggiornato una volta che questo documento esiste e renderlo obbligatorio durante la revisione del codice o il controllo qualità. Esistono strumenti di Enterprise Architecture come Mega ecc. Dove, se imposti correttamente la cosa, puoi tracciare dal DB fino al processo di business. Ma questi strumenti sono costosi, pesanti e richiedono un team di architettura dedicato per la gestione che potrebbe essere eccessivo per le organizzazioni più piccole.

    
risposta data 08.05.2012 - 11:52
fonte
0

Mi concentrerei sul registro del server delle applicazioni poiché spesso contiene voci per le chiamate di visualizzazione, le azioni del controller e le chiamate al database.

    
risposta data 08.06.2012 - 23:20
fonte

Leggi altre domande sui tag