Quali sono i benefici ei rischi di passare a un approccio Model Driven Architecture?

StackOverflow https://stackoverflow.com/questions/2702206

  •  01-10-2019
  •  | 
  •  

Domanda

Io lavoro per una società con circa 350 dipendenti e siamo nel processo di crescita. La nostra base di codice attuale non è strutturato molto bene e non vediamo sia a come migliorare immediatamente (attraverso l'organizzazione di oggetti in spazi dei nomi, che separa le preoccupazioni, etc.) e passare a un modello di approccio orientato all'architettura, dove modello e al design tutto prima con UML , quindi generare il codice da quel modello. Abbiamo cercato pesantemente Sparx Sistemi Enterprise Architect (EA) (che è in grado UML 2.0) e stiamo anche valutando gli strumenti di VS 2010. So che ci sono altri strumenti là fuori (Rational XDE essendo uno), ma io davvero non pensiamo di poter spendere $ 1500 + per licenza a questo punto.

Non sto cercando risposte su quale strumento è migliore di un altro, ma più per le esperienze che si spostano da un ambiente cowboy di codifica (che è, po 'di pianificazione e progettazione, basta saltare e iniziare a scrivere codice) per un modello guidato architettura. Guardando indietro è stato utile per la vostra organizzazione? Quali sono i punti di dolore? Quali sono i rischi? Quali sono i vantaggi?

È stato utile?

Soluzione

  

La nostra base di codice attuale non è strutturato   molto bene e siamo alla ricerca sia a   come migliorare immediatamente [...]   e lo spostamento di un modello guidato   architettura approccio, in cui modelliamo   e design tutto prima con UML,   quindi generare il codice da quel modello.

In primo luogo, è bello che voi e la vostra società rendersi conto che ci sono alcune carenze nel processo di sviluppo del software e che v'è una volontà di migliorare .

Sembra, tuttavia, che ci sia un po 'di lavoro di fronte a voi, e molte cose da migliorare in direzioni diverse. Il mio primo consiglio è di non cercare di cambiare tutto in una sola volta. Le persone sono generalmente restii ai cambiamenti, e tutti bisogno di tempo per digerire le nuove modifiche. E 'anche molto importante per creare una comprensione comune su ciò che deve essere istituito. Questa comprensione comune non verrà creato in un giorno. Tale cambiamento richiede un medio o impegno a lungo termine .

Poi, per quanto riguarda MDA, è importante notare che richiede un po ' disciplina . A seconda della tua squadra, la prima parte potrebbe benissimo a lavorare in quella prima in modo da preparare il passo successivo, che sarebbe introdurre MDA. Sto dicendo che, perché si dice di avere un processo di "cowboy", il che significa che le persone sono probabilmente utilizzati per fare ciò che vogliono -. È un no-go per MDA

Poi arriva l'introduzione di MDA stessa. Ci sono vari modi per fare MDA (e non voglio espandere su thsat qui), ma il modo in cui ancora predominante per farlo, è la cosiddetta di andata e ritorno di ingegneria . Il problema più grande è quindi di mantenere il modello e la sorgente sincronizzato.

(La mia opinione è che la MDA porta a un ritorno positivo sugli investimenti solo se il modello può essere riutilizzato per diversi progetti. Questo significa che si deve aver identificato le cose che si fanno più e più volte, e hanno una visione chiara sufficiente il problema di essere in grado di creare un modello sufficientemente completo e le trasformazioni che si può riutilizzare in tutta progetto non credo che MDA funziona se ogni progetto è completamente diversa;. il tempo trascorso per ottenere il modello giusto e la trasformazione, ecc sarà essere più grande di lavorare solo con il codice e la documentazione.)

Un altro appraoch è quella di non fare completamente MDA - non generare il codice dal modello - ma di aumentare la consapevolezza delle persone sulla modellazione e problema di progettazione, ad esempio, con UML. In questo modo non si faccia questione di andata e ritorno, ma ancora migliorare la maturità del processo di sviluppo software.

Altri suggerimenti

L'abbiamo fatto una volta con un sistema logistico pianificatore 3 MLOC, e ha funzionato bene. Tuttavia, ci siamo resi conto presto che UML non sarebbe sufficiente. Era semplicemente troppo ottusi per catturare il livello di dettaglio necessario per la specifica. Il modo migliore è in realtà per uso pseudo-codice (tutti usavano lo stesso per comunicare idee)! Ecco come la realizzazione è stata fatta. Usando UML sentiva come un passo dal chiarezza.

Per quanto le idee hanno cominciato a restringere verso il basso per una soluzione di un sistema di controllo di versione è stato impiegato al fine di tenere traccia delle modifiche della pseudo-codice (e casi d'uso, ecc). Così, tutti nel gruppo ha seguito le modifiche. A poco a piccole parti sono stati tradotti in codice vero e proprio a fianco di documentazione e riferimenti a motivazioni e discussioni.

Alla fine il transision da modello a codice è stato molto veloce. La parte veramente bello era, secondo me, i VCS uso che ha permesso di vedere anche la pseudo-codice originale, senza ambiente di commutazione.

ho scritto la mia tesi di laurea su Software Development Model Driven e voglio solo mettere in guardia voi, che è davvero importante utilizzare un approccio buono per fare ciò che la vostra azienda intende. Ci sono molte cose che potrebbero andare male, come per esempio modifica il codice generato direttamente, essendo in grado di generare una sola volta, becaause codice modificato manualmente sarebbe stato cancellato dopo generazione, è necessario fare un po 'di analisi di dominio per creare un modello di buona meta e utilizzare un quadro di generazione di codice buono ... Si prega di non capirmi sbagliato, penso che MDSD è grande, ma basta prendere cura come si intende farlo. L'originale MDA e libri su di esso suggeriscono appproaches davvero male, che sono troppo costose e troppo fragile. Vi suggerisco di guardare il sito voelter.de, dove si possono trovare documenti, presentazioni e podcast da Markus Voelter, che è un consulente molto esperto in quella zona.

Per quanto mi riguarda, l'aspetto chiave è quello di essere a volte pragmatici. Modellazione non dovrebbe essere un'attività booleana (non lo facciamo entrambi i modelli o meno del modello). Dovremmo essere in grado di adattare il livello di modellazione / precisione alle caratteristiche del progetto (si veda ad esempio quello che le persone che lavorano sulla modellazione agile fare) e la società. Troppo o troppo poco di modellazione può essere problematico (con troppo poco, non si possono vedere i benefici, troppo può essere overkilling fo la vostra azienda, specialmente se state cominciando la transizione o non si hanno gli strumenti necessari)

Nel mio portale / blog ( http://modeling-languages.com ) discutiamo spesso sulla vantaggi della modellazione o come la modellazione dovrebbero essere usati. Si possono trovare interessante

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top