2010-04-22 8 views
9

Io e molti altri sviluppatori stiamo attualmente ripulendo il nostro codice base legacy, separando principalmente i livelli visivi e di dati. Per aiutare gli sviluppatori non coinvolti in questo refactoring a capire il modello, vorrei introdurre un diagramma di classe (piuttosto informale) con commenti sull'ambito e l'uso desiderato per ogni classe. Dato che sono pigro, mi piacerebbe usare UMLGraph per questo.Come rappresento correttamente un mixin/ruolo/tratto con UML?

Tuttavia c'è un piccolo problema: abbiamo una base di codice perl e il refactoring usa ampiamente i ruoli di Moose. Ora non conosco l'UML abbastanza buono da trovare una corretta astinenza per i ruoli - la mia prima ipotesi sarebbe l'interfaccia, ma contengono anche l'implementazione; anche l'ereditarietà multipla non la taglia.

In che modo (o in che modo) rappresenterai i ruoli correttamente in un diagramma di classe?

risposta

3

vorrei rappresentare un ruolo come classe UML con l'«role» stereotipo. La classe che compone il ruolo avrebbe quindi un'associazione con il ruolo con lo stereotipo «does».

Simple Composition http://img820.imageshack.us/img820/5665/simplecomposition.png

Se avevo bisogno di adattarsi ulteriormente il ruolo, con gli alias o esclusioni, mi piacerebbe creare che, come una classe di associazione con i membri correttamente annotati e con il «adaptation» stereotipo. Il nome della classe di associazione non avrebbe importanza, perché non sarebbe un tipo reale nel design; quindi l'avrei lasciato senza nome.

Composition with Conflict Resolution http://img828.imageshack.us/img828/244/conflictcomposition.png

(Si prega di notare che ho mostrato l'adattamento di "classe" connesso alla composizione e il ruolo che si adatta. Quello che volevo fare era collegarlo al l'associazione tra MyComposition e MyRole1. E 'solo che lo strumento che ho usato non supportava le classi di associazione).

+0

Jordão, mi piace l'aspetto di quei diagrammi. Quale strumento hai usato per crearli? –

+0

@WayneConrad: ho usato [yUML] (http://yuml.me/), dai un'occhiata! –

+0

È come graphviz per UML. Molto bella! –