# Welches UML Tool und warum



## mariopetr (31. Jul 2003)

hallo,

ich bin momentan auf der suche nach einem guten uml tool (fuer private belange). anforderungen sind
-reverse engineering
-codegeneration (java)
-xmi export
-Use Case und ER diagramme

bis jetzt habe ich abgelehnt
-together (zu teuer)
-umbrello (zu weig funktionalitaet, code generation fehlerhaft)
-dia (wie umbrello, use case sehr schlecht)
-slime (sehr rudimentaer)

in der engern auswahl
-omondo (nicht schlecht _und_ eclipse plugin)
-poseidon (sehr gut, als comunity edition kostenlos)

was benutzt ihr, was haltet hir fuer ein gutes tool?


----------



## DTR (31. Jul 2003)

Vorschlag: Rational Rose

Ist ähnlich umfangreich wie together, gibt es aber auch glaube ich als Studentenversion.


----------



## mariopetr (31. Jul 2003)

hmm,

ganz schoen teuer (student bin ich nicht mehr). zudem nicht wirklich sinnvol sich so einen alleskoener zuzulegen wenn amn nur ooa/ood machen will. und zumindest die trial ist ganz schoen langsam (7.x). nachdem ich mich in poseidon eingearbeitet habe, werde ich wohl dabei bleiben. leider laest sich omondo nicht unter eclipse 30M2 verwenden. schade.


----------



## Nobody (1. Aug 2003)

jbuilder 9 enterprise edition
du kannst umls erstellen und auch von vorhandenen codes kannst du umls erstellen lassen, hatte aber bisher keine zeit das selbst zu testen, soll aber gut sein.
leider gibts eine richtige version nur gegen geld und obs die trial kann weis ich nicht aber das teste ich in den nächsten tagen noch und werde das dann an dich weiterleiten


----------



## marsias (1. Sep 2003)

Hi!

also ich habe auch mal poseidon ausprobiert. ist ok und ich denke
das reicht vollig aus. rational rose soll gut sein konnte mir es mal
anschauen aber kam gar nicht klar damit.
UML im JBuilder ist nicht so dolle....habe ihn drauf...

mfg


----------



## me.toString (8. Okt 2003)

probier doch mal argoUML ... das ist kostenlos und komplett in Java geschrieben [ d.h. es funzt unter Linux genauso wie auf 'ner Spielekonsole ... ähh Windows ] 
Es ist nicht so mächtig wie die anderen Tools ( Rational Rose, Together ) ... aber dafür reißt es kein Loch in deinen Finanzhaushalt !!!

Schau's dir einfach mal an  [ kostet ja nix ... ) ]
www.argouml.org

Michael


----------



## jptc.org (8. Okt 2003)

also ich bevorzuge auch Poseidon! Einen grossen Vorteil gibt es dort: es gibt eine kostenlose Version. In der Firma verwende ich momentan Together. Together ist zwar mächtiger, doch viele diese Features benötigt man eigentlich nicht.

Karsten Voigt
http://www.java-performance-portal.org


----------



## Falke (8. Okt 2003)

was ist überhaupt eine uml ? und was macht man damit ?


----------



## jptc.org (8. Okt 2003)

UML ist einfach gesagt ein Metasprache für das Design von Anwendungen. Man kann damit seine komplette Anwendung designen, ohne auf eine konkrete Programmiersprache angewiesen zu sein.
Natürlich ist das keine Definition, aber es erklärt in einem Satz UML. Am besten man besucht mal die Heimat von UML (UNIFIED MODELING LANGUAGE):

http://www.uml.org

Karsten Voigt
http://www.java-performance-portal.org


----------



## Guest (30. Okt 2003)

Versuch es doch mal mit "Jumli".


----------



## schalentier (12. Nov 2003)

tipp: zettel und stift  :roll:


----------



## me.toString (12. Nov 2003)

zeig mir mal den Stift, der auf Knopfdruck alle Klassen erstellt ...  :lol: ...


----------



## mariopetr (12. Nov 2003)

@schalentier

du bist gern eingeladen, unsere ca 2300 klassen/interfaces/idls mit zettel und stift ordentlich zu visualisieren, aktuell zu halten und das round-trip-engineering zu uebernehmen. vieleicht kannst du ja auch gleich noch vor abhaengigkeiten warnen, auf designfehler hinweisen, die rechtschreibung/conventionen pruefen und das alles ueber mehrere sprachen hinweg? mit verlaub: dummkopf


----------



## schalentier (22. Nov 2003)

ähh nee danke, aber ich hab mal noch ne frage:

warum willst du 2300 klassen visualisieren? 

zur programm-dokumentation? 
damit sich neue entwickler schneller in eure software einarbeiten können? 
um potentielle fehler in der analyse/design phase aufzudecken?

also ich hab auch mal an einem projekt mitgearbeitet, wo man voll und ganz von uml überzeugt war. ich hab also ein uml bekommen, besser gesagt ein uml-poster. ich hab das ganz schnell weggelegt, da man damit *nichts* anfangen kann. dann hab ich mir die api-doc angesehen und die magere doku gelesen. anschließend mit einem vernünftigen editor, der in klassen/objekte "reinschauen" kann gearbeitet. 

weiterhin kann man meiner meinung nach nicht alles vorher planen und in umls stecken, um daraus dann das klassengerüst zu erzeugen. denn während der programmierung tauchen probleme auf, die änderungen nach sich ziehen, die widerrum in das uml müssen. 

kann einer der genannten editoren das realiseren? also etwa so:
ich bau ein paar klassen mit dem uml-editor. klick ein knopf und hab die klassen.
dann implementiere ich die klassen, mache möglicherweise ein paar änderungen. dannach sehe ich die änderungen wieder im uml editor. doch auch wenn sowas (einfach) möglich wäre, würde sich mir die frage stellen, wozu braucht man das (siehe meine erste frage).

ich bin der meinung, dass uml nur eingesetzt werden sollte, um apis zu dokumentieren, die ein programm-modul implementieren muss. diese api sollte bereits möglichst zeitig fertig werden und nur wenige änderungen bedürfen.

was dann in einem solchen modul passiert ist dem jeweiligen team überlassen. dieses kann natürlich auch riesige umls erzeugen, muss es aber nicht. es muss sich nur an die gegebene api halten. 

bitte keine flames, das ist eine ernsthafte frage.


----------



## mariopetr (22. Nov 2003)

natuerlich will ich nicht auf einen schlag alle klassen visualisieren. _aber_ ich mochte zum beispiel einmal den code einlesen lassen und mir dann modulweise abhaengigkeiten anzeigen lassen.

zu dem einwand: "weiterhin kann man meiner meinung nach nicht alles vorher planen und in umls stecken, um daraus dann das klassengerüst zu erzeugen. denn während der programmierung tauchen probleme auf, die änderungen nach sich ziehen, die widerrum in das uml müssen." ja, allerdings macht man dann was falsch (wenn man alleine oder zu zweit arbeitet geht das noch, aber stelle dir den wust mit mehreren dutzend entwicklern vor), zumindest wenn man im toplevel aendern muss. 

"kann einer der genannten editoren das realiseren? also etwa so: 
ich bau ein paar klassen mit dem uml-editor. klick ein knopf und hab die klassen. 
dann implementiere ich die klassen, mache möglicherweise ein paar änderungen. dannach sehe ich die änderungen wieder im uml editor. doch auch wenn sowas (einfach) möglich wäre, würde sich mir die frage stellen, wozu braucht man das (siehe meine erste frage)." ja das gibt es (together und jbuilder zb). fuer den normalen entwickler sicher nicht sooo noetig, aber einem architekten nimmt das viel arbeit ab (und mann kann damit recht einfach ueberpruefen ob nicht doch jemand das interface geaendert hat)

"ich bin der meinung, dass uml nur eingesetzt werden sollte, um apis zu dokumentieren, die ein programm-modul implementieren muss. diese api sollte bereits möglichst zeitig fertig werden und nur wenige änderungen bedürfen."
also ich stelle mir den entwicklungsprozess so vor:

-spezifikation und testcase beschreiben
-interface definieren (wobei uml (class/object/sequence/actor) gleich abfaellt)
-factoryklassen definieren
-abstrakte klassen definieren/implementieren 
-rumpfklassen erstellen (keine funktionalitaet)
-testcases implementieren (zb mit junit)
-alles testen/dokumnetieren -> die unittest muessten teilweise schon durchlaufen 

und (fast) zu letzt: 
-ausimplementieren der erstellten rumpfklassen
-testen
-optimieren (mit den entsprechenden tools)
-testen
-source review
-release


----------



## schalentier (22. Nov 2003)

> zu dem einwand: "weiterhin kann man meiner meinung nach nicht alles vorher planen und in umls stecken, um daraus dann das klassengerüst zu erzeugen. denn während der programmierung tauchen probleme auf, die änderungen nach sich ziehen, die widerrum in das uml müssen." ja, allerdings macht man dann was falsch (wenn man alleine oder zu zweit arbeitet geht das noch, aber stelle dir den wust mit mehreren dutzend entwicklern vor), zumindest wenn man im toplevel aendern muss.


ich denke nich das man dann was falsch gemacht hat.
ich gehe soweit mit, dass man mit genügend zeit nahezu jedes problem (im softwaretechnischen sinne) mittels uml soweit vorplanen kann, dass die implementations-phase nur noch reines runterschreiben ist. 
allerdings ergibt sich daraus eine hierarchie. und genau das mißfällt mir an uml. was ich meine:
Der software-architekt (oder mehrere) geben sich unendlich viel mühe ein gutes uml zu erstellen. alles ist (scheinbar) perfekt und sollte auch so funktionieren. 
nun kommt der programmierer, nimmt sich das uml und stellt irgendeine ungereimtheit fest. also etwas, was er anders machen würde. jetzt gibt es zwei fälle:
1. der programmierer denkt falsch
2. der programmierer hat recht, denn er hat etwas entdeckt, was die architekten übersehen haben.

weiterhin hat der programmierer nun 2 möglichkeiten:
1. er setzt alles exakt so um, wie es im uml spezifiziert ist
2. er kontaktiert den architekt, der beruft ein meeting ein, dort muss der programmierer erklären was er entdeckt hat und wie es besser gehen würde. anschließend beraten alle, und kommen so irgendwann zu einem kompromiß (oder auch nicht).

punkt 1 würde mir persönlich nicht gefallen, denn da wäre der programmierer eine art maschine, die nicht denken muss, sondern nur tippen.
punkt 2 nimmt viel zeit in anspruch. schätzungsweise mindestens 1 tag braucht sowas (bei größeren projekten) schon. immerhin muß ein termin gefunden werden, der programmierer muss seine (wirren) gedanken in eine präsentierbare form bringen (z.b. folien), die architekten müssen es verstehen und einen ausweg finden.

deswegen denke ich, dass es hier wesentlich effektiver wäre, wenn jeder programmierer die volle kontrolle über sein teil-stück hat (damit natürlich auch die volle verantwortung). er kann so programmieren wie er das will/kann. 

damit ergibt sich allerdings die notwendigkeit, das projekt in kleine 1-2mann-teil-projekte (nennen wir es modul) zu zerlegen, was nicht einfach aber möglich ist. 

was man dann weiterhin benötigt, ist eine api für jedes modul, die möglichst von anfang an fest sein sollte. diese kann auch von den architekten vorgegeben werden und in eine uml verpackt werden.

naja, ich kann mich hier auch täuchen, denn soviel erfahrung mit großen projekten hab ich nicht.

dennoch nervt mich dieses hochgepushe von uml irgendwie. alle welt guckt nur noch nach einem möglichst schicken uml, auch wenn es nix aussagt. ist irgendwie eine art k.o kriterium für ein softwareprojekt geworden. viel wichtiger ist eine wirklich gute dokumentation (hier reicht javadoc nich), die die zusammenhänge mit worten beschreibt. das versteht jeder, auch ohne die komplette uml2.0 spezifikation verstanden zu haben (is ja wirklich nicht wenig...). ich persönlich komme mit (guten) tutorials am besten klar. durcharbeiten, abtippen, verstanden haben. is aber nur meine persönliche einstellung. 

ja und um zu meinem ersten post zurückzukommen: natürlich reicht zettel+stift nicht um präsentierbare umls zu erstellen. aber für die planung und das festhalten erster ideen und konzepte ist der stift einfach mal unersetzlich. so!

schalentier.


----------



## marsias (8. Dez 2003)

Hi!

argouml ist schlecht......Poseidon basiert drauf und ist besser.
Jedoch hatte ich bißchen zeit mir Rational Rose anzuschauen.

Rational ist gut. Aber natürlich hat das ding auch seine macken.

was ist mit Powerdesigner?

mfg


----------



## me.toString (8. Dez 2003)

Powerdesigner ist werniger als UML-Tool zu sehen ( finde ich ) ... sondern ehr zum Modelieren von Datenbankschemata geeignet. Da wird die DB ganz abstrackt erstellt .. und am Schluss sage ich nur:  Mach mir ein SQL-Skript für Oracle ... oder auch für Access ... das funzt richtig gut ... vor allem weil man das selbe modell für verschiedene DB-Typen nehmen kann. [ Aber so weit ich weiss ist das nicht billig ... wir ham's hier an der Arbeit ... ) ]


----------



## Gast (19. Mai 2005)

Probier DiamondSpin aus! Wir verwenden es in unserem Projekt und sind sehr zufrieden damit.

http://www.crystalbyte.com


----------

