2009-03-30 9 views
8

Model Driven Architecture è l'idea che crei modelli che esprimono il problema che devi risolvere in un modo che sia privo di qualsiasi (o almeno la maggior parte) tecnologie di implementazione, e quindi generi implementazione per una o più piattaforme specifiche. L'affermazione è che lavorare ad un livello più alto di astrazione è molto più potente e produttivo. Inoltre, i tuoi modelli sopravvivono alle tecnologie (quindi hai ancora qualcosa quando la tua prima lingua/piattaforma diventa obsoleta che puoi usare per la tua prossima generazione di soluzioni). Un altro vantaggio chiave rivendicato è che gran parte del boilerplate e del "lavoro da grugnito" possono essere generati. Una volta che il computer comprende la semantica della tua situazione, può aiutarti di più.Stai facendo MDA (Model Driven Architecture) in questo momento? In tal caso, quali strumenti usi e come funziona?

Alcuni sostengono questo approccio è 10 volte più produttivo, e che è il modo in cui saremo tutti costruendo software in 10 anni.

Tuttavia, questo è tutto solo teoria. Mi chiedo quali sono i risultati quando la gomma incontra la strada. Inoltre, la versione "ufficiale" di MDA è dal OMG e sembra molto pesante. È fortemente basato su UML, che può essere considerato buono o cattivo a seconda di chi chiedi (io sono inclinato verso "cattivo").

Ma, nonostante queste preoccupazioni, è difficile discutere con l'idea di lavorare a un livello più alto di astrazione e "insegnare" al computer a capire la semantica del problema e della soluzione. Immagina una serie di modelli ER che esprimono semplicemente la verità, quindi immagina di utilizzarli per generare una parte significativa della soluzione, prima in un insieme di tecnologie e poi di nuovo in un altro insieme di tecnologie.

Quindi, Mi piacerebbe sentire le persone che stanno davvero facendo MDA in questo momento ("ufficiale" o meno). Quali strumenti stai usando? Come sta funzionando? Quanta parte della promessa teorica hai potuto acquisire? Vedi un vero aumento dell'efficacia del 10X?

risposta

0

ho provato una volta. Circa a metà del progetto mi sono reso conto che i miei modelli erano irrimediabilmente obsoleti dal mio codice ed erano così complessi che mantenerli aggiornati era proibitivo e mi rallentava.

Il problema è che il software è pieno di casi limite. I modelli sono ottimi per catturare l'immagine più grande, ma una volta che inizi a codificare effettivamente l'implementazione, continui a trovare tutti quei casi limite e, prima che sia troppo tempo, noti che il modello è troppo granulare e devi scegliere tra mantenere il modello o ottenere qualche codice scritto Forse la generazione di piastre è un vantaggio per l'avvio, ma in seguito i vantaggi svaniscono rapidamente e ho scoperto che ho avuto un drastico calo della produttività. I modelli alla fine scomparvero da quel progetto.

+0

Grazie. Interessante che il diavolo sia nei dettagli. I modelli sono per definizione semplificazioni eccessive e questo è ciò che ti ha causato più dolore. +1 –

+1

Lo sviluppo del software guidato dal modello riguarda la generazione del codice dal modello. Si modifica il meta-modello, il modello e i generatori per modificare o aggiungere comportamenti. Non si tratta di creare e mantenere un modello indipendente che viene aggiornato manualmente quando si aggiorna il codice. –

+0

Questo è esattamente il mio punto. Ad un certo punto il codice generato non è più utile. Non appena si inizia a modificare manualmente il codice, il processo si interrompe. –

6

La mancanza di risposta a questa domanda è alquanto inquietante ... forse lascerò il campo Dijkstra.

... Poiché i computer è apparso in un decennio quando la fede nel progresso e salubrità della scienza e della tecnologia era praticamente illimitata, è potrebbe essere saggio ricordare che, in vista dei suoi obiettivi originari, gli sforzi scientifici dell'umanità su, per esempio, gli ultimi cinque secoli sono stati uno spettacolare fallimento .

Come tutti ricorderete, il primo e più importante obiettivo era lo sviluppo dell'Elisir che darebbe quella che bevve eterna giovinezza. Ma dal momento che non c'è molto punto nella eterna povertà, il mondo della scienza rapidamente ha intrapreso il suo secondo progetto, vale a dire. la Pietra Filosofale che sarebbe ti permette di fare tanto oro quanto hai bisogno di .

...

La ricerca per la programmazione linguaggio ideale e l'interfaccia uomo-macchina ideale che avrebbe fatto la crisi del software si sciolgono come neve al sole ha avuto -e ha ancora!- tutte le caratteristiche della ricerca per l'elisir e la pietra. Questa ricerca riceve un forte sostegno da due lati, in primo luogo dal fatto che la dei miracoli è il minimo che ci si può aspettare da computer, e in secondo luogo dalla appoggio politico finanziario e da una società che avevano sempre ha chiesto l'elisir e la pietra in primo luogo.

Due flussi principali possono essere distinti , la ricerca per la pietra e la ricerca per l'elisir.

La ricerca per la pietra è basata su l'ipotesi che i nostri "strumenti di programmazione " sono troppo deboli. Un esempio è la convinzione che le attuali lingue di programmazione manchino delle "funzionalità" di cui abbiamo bisogno. PL/I era una delle più spettacolari pietre prodotte. Ho ancora ricordo la pubblicità in Datamation 1968, in cui un sorridente Susie Mayer annuncia nel colore pieno che lei ha risolto tutti i suoi problemi di programmazione passando a PL/I. Era fin troppo prevedibile che, pochi anni dopo, povera Susie Mayer non sarebbe più sorridere. Inutile dire, la ricerca è andato su e in causa volta che un successivo sarebbe-be pietra era prodotta sotto forma di Ada (dietro la cortina di ferro percettivamente cui come PL/II). Anche il più elementare astrologia per principianti sufficiente prevedono che Ada non sarà l'ultima pietra di questo tipo.

...

Un'altra serie di pietre in forma di "strumenti di programmazione" è prodotto sotto la bandiera di "software engineering", che, col passare del tempo, ha cercato di sostituire intellettuale disciplina per disciplina di gestione al nella misura in cui si è ormai accettato come suo statuto "come programmare se non è possibile."

+0

Sì, decisamente rilevante. Dubito che ogni sviluppatore creda davvero che un approccio renderà obsoleti gli sviluppatori.Ma ecco a cosa potrei credere: un intero ecosistema di strumenti che richiede uno sviluppatore di prim'ordine e ne amplifica significativamente l'efficacia. Forse OMG MDA non è quello però. –

+1

"un intero ecosistema di strumenti che richiede uno sviluppatore di prim'ordine e ne amplifica significativamente l'efficacia" Penso che si chiami Emacs. :-D –

+0

Davvero? Forse dovrei dargli una seconda possibilità (no, rendi quella terza) :) –

4

Sto facendo la mia ricerca indipendente nell'area di sviluppo software guidato dal modello dal 1999. Ho infine sviluppato una metodologia di modellazione generica nel 2006 che ho etichettato ABSE (Atom-Based Software Engineering).

Quindi, ABSE si basa su due aspetti fondamentali:

  • programmazione è di circa problema decomposizione
  • Tutto può essere rappresentato su un albero

Alcuni ABSE caratteristiche:

  • Può supportare tutte le altre forme di ingegneria del software, dalle tradizionali tional metodi orientati ai file fino allo sviluppo basato su componenti, programmazione orientata agli aspetti, modellazione specifica del dominio, linee di prodotti software e fabbriche software.

  • È abbastanza generico da essere applicato a software aziendali, integrati, giochi, avionica, internet, qualsiasi dominio in effetti.

  • Non è necessario essere uno scienziato missilistico da utilizzare se efficacemente. ABSE è accessibile al "semplice mortale sviluppatore". Non c'è complessità come quella che si trova nelle catene di strumenti oAW/MDA/XMI/GMF/etc.

  • Il metamodello è progettato per supportare la generazione del codice al 100% dal modello. Nessun viaggio di andata e ritorno necessario. Il mix di codice personalizzato/generato è direttamente supportato dal metamodello.

  • Il modello può essere manipolato contemporaneamente. È possibile applicare i flussi di lavoro e il controllo della versione (è necessario il supporto degli strumenti).

Può sembrare come se fosse sul lato utopico, ma in realtà ho lasciato la fase di ricerca e sono ora in fase di implementazione di un IDE che mette tutto quanto sopra in pratica. Penso che avrò un prototipo di base pronto in poche settimane (verso la fine di aprile). L'IDE (denominato AtomWeaver) viene creato tramite ABSE, quindi AtomWeaver sarà la prima dimostrazione della metodologia ABSE.

Quindi, questo non è MDA (per fortuna!), Ma almeno è un approccio molto gestibile. Come l'inventore di ABSE, ne sono comprensibilmente entusiasta, ma sono certo che lo sviluppo di software guidato da modelli otterrà una spinta nel 2009!

Rimanete sintonizzati ...

+0

Sembra molto interessante. Se hai qualche post sul blog o se vuoi che altri lo guardino e fornisca un feedback, fammi sapere. –

+0

Non ci sono ancora post specifici sul blog, ma puoi seguire il mio blog (vedi il mio profilo) o le mie discussioni sul Model Driven Software Network (http://www.modeldrivensoftware.net) –

+0

So che questa è una risposta molto vecchia, ma se possibile, sono interessato a sapere perché dici che è "per fortuna!" non la MDA? – Yoh

4

Model-Driven Development Software è ancora un settore di nicchia, ma ci sono casi di studio pubblicati e un crescente corpo di altra letteratura che mostra il successo rispetto ai metodi codificati a mano.

L'MDA dell'OMG è solo un approccio, altre persone stanno mostrando successo utilizzando le lingue specifiche del dominio (che non utilizzano UML per la modellazione).

La chiave è generare codice dai modelli e aggiornare il generatore se non genera ciò che si desidera - non modificare il codice. Gli strumenti specialistici per aiutarti a farlo sono ormai anni or sono, ma l'interesse per questo approccio è cresciuto negli ultimi cinque anni a causa della mossa di Microsoft in quest'area e attraverso progetti open source come openArchitectureWare nel mondo di Eclipse.

Gestisco un paio di siti: www.modeldrivensoftware.net e www.codegeneration.net dove è possibile ottenere ulteriori discussioni, interviste, articoli e opzioni di strumenti su questi argomenti.

+0

Bene, li controllerò. Ho visto codegeneration.net, ma non ancora modeldrivensoftware.net. –

Problemi correlati