Ich bin gerade auf den sehr schicken Dienst yUML.me gestoßen bei dem man sehr nette UML Diagramme über eine URL generieren kann. Den Dienst finde ich prinzipiell nett, aber eigentlich wüsste ich nicht wann ich richtiges UML in der Praxis eingesetzt habe. Braucht man UML?
yUML
yUML.me ist ein cooler Dienst um Klassen, Aktivitäts & Use Case UML Diagramme zu erzeugen. Es gibt für Unternehmen sogar eine Version die man im Firmenumfeld installieren kann. Eigentlich ziemlich cool gemacht und die Diagramme sehen auch nett aus :)
Braucht man UML?
In meiner (noch recht kurzen) Zeit als Softwareentwickler hatte ich noch nie den Drang hochkomplexe UML Diagramme zu erzeugen. Meistens schmier ich Klassen oder Use Case Diagramm ähnliche Konstrukte ans Whiteboard oder male diese mit Powerpoint.
Powerpoint-Architekt
Obwohl Powerpoint nicht gerade die erste Wahl für die Architektur von Software scheint, seh ich doch wesentlich mehr "Powerpoint-Blöcke" wie die Architektur einer Software gemacht ist als "richtige" UML Diagramme.
Beobachtung
Ich selbst habe kein Studium, sondern nur eine Berufsausbildung gemacht. Bereits während der Ausbildung fand ich UML zwar nett, aber schrecklich oversized. Allein der "Syntax" hat mich bei den Diagrammen zum Teil gestört (Wie war die Pfeilrichtung? Ist das jetzt "extend" oder "include"?). Meistens haben es simple, aber effektive Skizzen auch getan. Einige Studenten schwärmen hingegen von UML und das dies die Übersichtlichkeit erhöht, aber ist es denn so oder ist das nur graue Theorie?
UML vs. TDD?
In einem Buch hatte ich mal den Vergleich von UML und Bauplänen gelesen. Dort wurde das Argument vorgebracht, dass man für einen Hausbau natürlich einen kompletten Bauplan braucht, weil es wesentlich komplexer ist und länger dauert ein Haus zu bauen als ein "Rohbau" der Softwarearchitektur. In wenigen Stunden kann man schonmal grob herausfinden ob die Richtung stimmt. TDD spielt besonders seine stärken aus, wenn ich eine API mir überlege möchte (Test Driven Design). Ein UML Plan zu machen dauert wahrscheinlich ebensolange wie dies mal in einer TDD Session auszuprobieren.
UML veraltet schnell
Ich stell mal die provokante Behauptung auf, dass ein UML Diagramm schnell veraltet, wenn es einmal nach mühevoller Arbeit erstellt wurde. Ohne einen strengen Prozess der sicher geht, dass die UML Diagramme mit der Realität übereinstimmen kann man sich die Arbeit auch sparen, oder?
Eine gute Architektur sollte auf einer Serviette platz finden
Ralf Westphal hat mal einen netten Blogpost darüber geschrieben. Eine gute Architektur sollte auch auf einer Serviette verständlich platz finden. Seh ich auch so :)
Fazit
Ich will nicht behaupten UML sei nutzlos, aber ich habe in meinen Projekten noch nie den Drang verspürt erstmal alles als UML Diagramm zu malen. Wenn man es grafisch (wie z.B. in VS2010) nett aufbereitet, dann bringt das natürlich nutzen. Ohne Tooling find ich UML schrecklich kompliziert gemacht. Wahrscheinlich ist es mit den passenden Tools nett, aber bis es soweit ist werde ich weiterhin einfache "Powerpoint-Architekturen" ans Whiteboard malen anstatt wilde UML Zeichnungen :)
yUML ist damit zwar eine coole Idee, macht es aber nicht einfacher die Dinger zu zeichnen.
Wie ist eure Meinung? Nutzt ihr UML? Warum? Wie haltet ihr diese aktuell? Bin ich vielleicht von allen guten Geistern verlassen und sehe den Nutzen nicht?