2010-07-27 6 views
5

Strumenti UML Round-Trip Engineering con sincronizzazione continua?Esistono strumenti che rendono la sincronizzazione dei modelli UML con il codice completamente senza interruzioni?

Il numero Rational indica di farlo. Ma è così costoso e goffo a disegnare (peggio dei giorni di Rose) che non è alla portata della maggior parte dei reparti.

Ciò che sorprende è che il gratuito Bouml sembra fare un lavoro fantastico. Sembra solo troppo goffo da usare. Ha una grande quantità di funzionalità, è molto gratuito (!), Molto veloce, e ingegneri del reverse-C++. Ha anche un bel supporto per i diagrammi, incluso un diagramma di sequenza molto bello. Sebbene l'interfaccia sia non lucidata (e apre costantemente le finestre di dialogo sul monitor più a destra), ha l'inizio di un prodotto molto capace. È un peccato che l'interfaccia sia così nuda e richieda un notevole sforzo. Forse è perché l'autore mette la maggior parte del suo tempo nella funzionalità reale. Qualcuno ha esperienza con Bouml durante tutto il ciclo di vita del prodotto?

che lascia il costoso MagicDraw, il Enterprise Architect molto-capace ancora a prezzi ragionevoli, e la chiazza di petrolio dall'aspetto Paradigma visivo. Di questi, solo Visual Paradigm ha avuto un problema di reverse-engineering delle intestazioni C++ del mio progetto.

MagicDraw ha un aspetto strano, vecchio. Fa un buon lavoro a reverse-engineering da solo, anche se resta da vedere se l'engineering round-trip di progetti C++ complessi è senza soluzione di continuità. Vogliono oltre $ 1800 per la versione multilingue, quindi ha un prezzo simile agli strumenti Rational.

Enterprise Architect, anche se molto meno costoso della maggior parte, sembra che sia la funzionalità più completa. Analizza e genera C++ in modo impeccabile. Anche i commenti e la formattazione sono lasciati intatti. Ci sono ottimi materiali di formazione. Ma non gestisce Objective-C, quindi meno utile per i progetti di codice misto iOS e Mac OS X. La generazione automatica del Sequence Diagram sembra fantastica, ma sembra che funzioni solo su progetti Windows .NET.

L'architetto visivo (> $ 800 per multi-lingua a 2 vie) è lo strumento di modellazione software più bello che abbia mai incontrato. Sebbene possa rimanere qualche problema di andata e ritorno, è un piacere usarlo per costruire i modelli a mano. È ancora più bello di Rose era in qualche modo. Ha un modo intuitivo per far apparire gli strumenti di cui hai bisogno proprio al cursore. Tuttavia, come ho detto, attualmente non è in linea con l'obiettivo di mantenere il modello sincronizzato con la fonte. E spesso non comunica nemmeno che l'importazione non ha funzionato del tutto, o che sono state create classi duplicate (con gli stessi nomi). Inoltre, rende difficile l'immissione dei parametri dei messaggi, utilizzando le finestre di dialogo, mentre altri consentono di modificare i parametri direttamente sul diagramma. (Il libero Bouml eccelle in questo, così come MagicDraw e altri.)

Qualcuno ha trovato uno strumento di programmazione round-trip multi-lingua (Java, C++, C#, ObjC++, Python, Ruby, SQL) che reggerà ai progetti del mondo reale, in cui vengono gestite le personalizzazioni (come i parametri personalizzati sui messaggi), ma non vengono cancellati dalla prossima importazione del codice sorgente?

E dove tutta la formattazione e i commenti sono completamente preservati durante la generazione. La chiusura non è abbastanza buona. Se gli strumenti rovinano la formattazione del codice sorgente, nessuno sviluppatore vorrà eseguire lo strumento sulla sua fonte.

risposta

3

Insieme di Peter Coad-J aveva un diagramma e un editor insieme in un IDE (da cui il nome). Cambia un diagramma e il codice cambia; lo stesso vale anche per l'altro modo.

Lo strumento e l'editor UML erano entrambi un po 'lenti. Penso che le macchine del giorno siano state sottodimensionate e non le abbiano mostrate al meglio.

Credo che Peter Coad l'abbia venduto a Borland. Sembra che Borland sia fuori dal business degli IDE. È ancora possibile ottenerlo here.

Penso che IntelliJ sia il miglior IDE Java che ci sia. È possibile generare alcuni bei diagrammi UML che lo utilizzano.

La vera domanda è: perché UML è così importante? Preferirei avere il codice. Di solito faccio abbastanza UML per far passare l'idea, scrivo il codice con i test unitari e poi eseguo il reverse engineering per la documentazione. Non è possibile eseguire il debug o l'unit test dei diagrammi UML. Meglio avere un codice funzionante.

+0

Sì, Together-J è stato eccellente, ma come dici tu, troppo lento per le macchine del giorno. E il diagramma a schermo diviso/codice sopra/sotto era un ottimo espediente, ma presto ci si rese conto che si preferiva usare il proprio schermo per il codice. : -> Allora perché UML è importante? Si scopre che è come vedere una foto, piuttosto che leggere una descrizione della scena. Distilla le informazioni nel codice all'essenziale per uno scopo particolare. Uno scopo che ha lo scopo di trasmettere informazioni vitali ad altri architetti, gli implementatori. Utile solo se tenuto aggiornato). Quindi, il requisito "senza soluzione di continuità". – Rubski

+0

Capisco l'idea alla base di UML. Non sono d'accordo con il valore. Trovo che sia buono per abbozzare idee. Una rappresentazione completa ed esauriente di un sistema complesso diventa rapidamente tanto difficile da comprendere dal quadro quanto dal punto di vista del codice. – duffymo

+0

Vedo il tuo punto. Quindi, per chiarire, la mia domanda riguarda non l'auto-generazione di diagrammi UML per un sistema, ma se esiste uno strumento che manterrà i pochi diagrammi generati dall'architetto. Questi sono presumibilmente quelli che di fatto aggiungono alla comprensione del sistema, per documentare le interazioni cruciali in un modo artigianale, tralasciando classi estranee, operazioni, parametri e interazioni. Quindi ciò che sarebbe sincronizzato sono solo le poche interazioni che sono state modellate, e, naturalmente, i loro nomi, tipi, ecc. Grazie ancora per il vostro contributo. – Rubski

2

BOUML ... apre costantemente le finestre di dialogo sul monitor a destra

in una configurazione a più monitor la cosa migliore è di indicare al BOUML quale monitor deve essere utilizzato per impostazione predefinita, il resto per BOUML si hanno solo un grande monitorare compresi tutti i monitor. Ovviamente per indicare un monitor predefinito non significa che non è possibile utilizzare l'altro (i) ed è possibile spostare le finestre di dialogo/la finestra principale dove si desidera. La definizione del monitor predefinito da utilizzare viene effettuata tramite the environment dialog.

0

Enterprise Architect sembra fare un buon lavoro in questo. Come fai notare, ha un prezzo ragionevole. E genererà anche diagrammi e documentazione, oltre a importare/esportare codice sorgente.