UML

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: UML

Beitrag von stampuhh » Mo Feb 01, 2010 11:17 pm

Man sollte UML eher als Dokumentation verstehen, z.B. für den Fall, dass man nach 3 Jahren nochmal etwas am XY-Projekt von damals ändern muss und total aufgeschmissen ist weil man nicht mehr weiß wie die Daten sich zueinander verhalten.
Ja dann muss man aber zusehen, dass man bei jeder Änderung auch immer schön die UML Diagramme ändert...oder man muss das komplette Programm vorher einmal in UML durchdenken und dann genau nach Plan umsetzen. Das halte ich aber für abwegig, da ich zumindest nicht immer vorher genau sagen kann ob alles so klappt wie ich mir das vorstelle ;)
UML ist hübsch, um Bildchen zu zeichnen und Präsentationen zu machen und den Chef zu beeindrucken.
:D :twisted:

gruß stampuhh
NachDenkSeiten.de

Psaniko
Beiträge: 17
Registriert: Mo Feb 01, 2010 5:34 pm

Re: C-Tutorial - kleine Fehlerliste

Beitrag von Psaniko » Do Feb 04, 2010 2:08 pm

Xin hat geschrieben:
Psaniko hat geschrieben:Inzwischen sind die meisten größeren Software-Projekte durch und durch konzeptioniert und durchgeplant und UML ist halt eine Form, Funktionsweise und Abhängigkeiten eines Projekts zu verdeutlichen.
Sagt wer?
Wikipedia zum Beispiel :-)
Xin hat geschrieben:Guter Code ist selbsterklärend, weil die Dokumentation Teil des Codes ist.
Du sprichst mir aus dem Herzen.
Xin hat geschrieben: Die Klassenübersicht (also nur die Namen der Klassen mit Linien zu ihren Ableitungen, nicht den Membern) meines Projektes hätte ich als Tapete drucken müssen. Da es eigentlich keine nennenswerten Informationen enthielt, konnte ich mir das auch sparen. Ich bin der einzige Entwickler an diesem Projekt. Nebenberuflich.
Naja, UML ist mehr als nur eine Klassenübersicht aber wenn dein Projekt selbsterklärend ist und jeder fremde Programmierer sofort durchblickt, wie was funktioniert..dann brauchst du auch kein UML ^^
stampuhh hat geschrieben: ...oder man muss das komplette Programm vorher einmal in UML durchdenken und dann genau nach Plan umsetzen.
So ist es gedacht, ja ^^

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C-Tutorial - kleine Fehlerliste

Beitrag von Xin » Do Feb 04, 2010 2:57 pm

Psaniko hat geschrieben:
Xin hat geschrieben:
Psaniko hat geschrieben:Inzwischen sind die meisten größeren Software-Projekte durch und durch konzeptioniert und durchgeplant und UML ist halt eine Form, Funktionsweise und Abhängigkeiten eines Projekts zu verdeutlichen.
Sagt wer?
Wikipedia zum Beispiel :-)
Ich entwickle die Programmiersprache und den dazugehörigen Compiler. Achja, ich meine das ernst... ich mache das nicht, weil ich mal einen Compiler schreiben möchte, sondern weil ich die Sprache haben will. Der Compiler ist Mittel zum Zweck.

Dafür lese ich teilweise Literatur, nachdem ich die Probleme gelöst habe. Das mache ich jetzt seit dem Studium so. Erst denke ich, dann forsche ich. Ein Prof von mir sagte mir mal, dass ich nicht einfach so meine Gedanken niederschreiben darf, ich muss belege bringen. Ich arbeite nicht wissenschaftlich.
Da hat er recht. Was ich mache, hat bisher keiner so in ein Buch gepackt. Da hätten wir schonmal Problem 1.
Manches widerspricht aber akzeptierten Normen. Das kann ich mit Büchern also bloß widerlegen. Wissenschaftliches Arbeiten bedeutet also, wenn man etwas in einem Bereich machen möchte, der nicht möglich ist, zuerst zu beweisen, dass etwas nicht möglich ist und es dann doch zu tun.

Einer meiner Leitsprüche lautet "Always listen to experts - they tell you want can't be done and why. Then do it.". Ich sagte meinem Prof, dass das nicht funktioniert, denn nur weil jemand was hat drucken lassen, wird es nicht wahr. Er erwiderte, dass ein anständiges wissenschaftliches Werk auf seine Quellen verweist. Ich fragte ihn, worauf der erste Buchautor denn dann verweist. Das gab ihm definitiv zu denken.

Zwischendurch muss man selbst denken. Abschreiben funktioniert nur dann, wenn die Leute, von denen man abschreibt, überlegt haben oder selbst von Leuten abgeschrieben haben, die überlegt haben. Wenn da einer bei ist, der sich das Denken gespart hat, dann schreiben alle Unsinn ab und kombinieren den Kram zu neuem Unsinn.

Nehmen wir nun an, jemand hat überlegt und geschrieben. Und zwar zum Thema UML. Oder Java. Aus welchen Motiven schreibt die Person? Hat sie Argumente vorzubringen oder macht sie nur einen Vorschlag, den die Person selbst gut findet. Oder möchte sie etwas verkaufen?
Zum Thema Java kann ich Dir belegen, dass Java die einzige Wahrheit ist. Das haben Leute reihenweise ohne auch nur den Hauch einer Kritik übernommen. Im Studium hatte ein Bekannter von mir folgende Prüfungsfrage (das ist jetzt kein Scherz): "Warum wird eine Kaffeemaschine in Zukunft 128 MB RAM haben". Korrekte Antwort: "Um Java drauf laufen zu lassen".
Was ich für Märchen über Java habe lernen müssen, die technisch nicht haltbar sind, das glaubt man heute nicht mehr. An einer Hochschule für Informatik, also von Leuten, die auch gerne Bücher zum Thema schreiben...

Ich habe auch UML gelernt. Es hat sich herausgestellt, dass die korrekte Planung der UML-Diagramme am effizientesten war, wenn man erst die Software schreibt und dann die Planung dazu macht und anschließend behauptet, dass man nun anhand der Planung die Software schreibt.
Wir hatten übrigens eine eins in dem Fach, weil unsere Planung so gut durchdacht war.
Psaniko hat geschrieben:
Xin hat geschrieben: Die Klassenübersicht (also nur die Namen der Klassen mit Linien zu ihren Ableitungen, nicht den Membern) meines Projektes hätte ich als Tapete drucken müssen. Da es eigentlich keine nennenswerten Informationen enthielt, konnte ich mir das auch sparen. Ich bin der einzige Entwickler an diesem Projekt. Nebenberuflich.
Naja, UML ist mehr als nur eine Klassenübersicht aber wenn dein Projekt selbsterklärend ist und jeder fremde Programmierer sofort durchblickt, wie was funktioniert..dann brauchst du auch kein UML ^^
Ich weiß, dass UML auch aus Fallstudien usw. besteht. Den Ablauf einer Software, die einen Colaautomat steuert, die muss ich aber nicht planen. Den Ablauf einer Software, die ein echtes Programm steuert, ist mit UML nicht mehr überschaubar.
Psaniko hat geschrieben:
stampuhh hat geschrieben: ...oder man muss das komplette Programm vorher einmal in UML durchdenken und dann genau nach Plan umsetzen.
So ist es gedacht, ja ^^
Leider kann man ein echtes Programm niemals vorher planen.
Im echten Leben entwickelt ein Programm eine Dynamik. Was in der Theorie funktioniert, bleibt in der Praxis in einem unerwarteten Flaschenhals stecken. Was lange und gut geplant wurde, wird mit einem Anruf des Kunden, der ein kleines Feature dazu bestellt mit einem Schlag zu Altpapier.

Programmieren ist ein iteratives Verfahren, teilweise auch Evolution und nicht komplett planbar.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: UML

Beitrag von Dirty Oerti » Do Feb 04, 2010 4:13 pm

So, jetzt gebe ich auch mal meinen Senf zu UML ab :)

Bei mir in der Schule gibt es (endlich durch viel Gerde und Organisieren) einen Informatikgrundkurs.
Die meisten Schüler in diesem Kurs können nicht programmieren und haben bisher kaum oder keinen Kontakt mit irgendwelchen Programmiersprachen gehabt.

Nun, was macht man also mit uns Schülern? Man zwingt uns Java als Programmiersprache auf, dazu noch mit einer grauenvollen Entwicklungsumgebung namens BlueJ (*sich schüttel*) und lässt uns jetzt, nach einiger Zeit des Anlernens ein paar simple Programme schreiben.

Was haben wir vorher gemacht? Klassen/Objekt/Fluss/Ablaufdiagramme gemalt :| :x

Was habe ich daraus gelernt?

Es ist einfach eine Tür mit einem Zustandsdiagramm zu beschreiben. Es ist auch noch einfach, einen Getränkeautomaten mit einem Zustandsmodell zu beschreiben. Sobald aber die "Maschinerie" größer wird (der Getränkeautomat hat mehrere, unterschiedlich teure Getränke und soll dennoch gut zu bedienen sein), kann man solche Planungen mit ausgiebigen Zustandsdiagrammen etc absolut vergessen.

Wenn ich mir vorstelle, mein jetziges Projekt (ein Client-Server-System mit 3 Threads pro Client und 3 pro Server) mit einem Diagramm darzustellen wird mir ehrlich gesagt schlecht^^
Natürlich hab ich mich vorher hingesetzt, und überlegt, wie ich das ganze anstelle. Dazu hab ich auch Zeichnungen ÄHNLICH solcher Diagramme angefertigt.
Das sind aber reine Skizzen, die jeweils zum Darstellen eines Teilaspektes ganz hilfreich waren und sie sind auch in keinster Weise normiert dargestellt o.ä.
Und das ganze Projekt als Diagramm....keine Chance.

Insofern kann ich mich Xin nur anschließen:
Xin hat geschrieben:Ich weiß, dass UML auch aus Fallstudien usw. besteht. Den Ablauf einer Software, die einen Colaautomat steuert, die muss ich aber nicht planen. Den Ablauf einer Software, die ein echtes Programm steuert, ist mit UML nicht mehr überschaubar.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: UML

Beitrag von stampuhh » Do Feb 04, 2010 4:51 pm

Du solltest aber nicht vergessen, dass man hin und wieder auch mal im Team arbeiten muss ;)
Das Team könnte mit deinen Skizzen vermutlich wenig anfangen, dafür aber mit UML oder Ähnlichem.

Aber ich finde den Satz von Xin oben immer noch am trefflichstem.
UML ist hübsch, um Bildchen zu zeichnen und Präsentationen zu machen und den Chef zu beeindrucken.
Chef kann man natürlich beliebig durch Lehrer/Tutor/Prof ersetzen ;)

gruß stampuhh
NachDenkSeiten.de

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: UML

Beitrag von Dirty Oerti » Do Feb 04, 2010 5:17 pm

stampuhh hat geschrieben:Du solltest aber nicht vergessen, dass man hin und wieder auch mal im Team arbeiten muss ;)
Das Team könnte mit deinen Skizzen vermutlich wenig anfangen, dafür aber mit UML oder Ähnlichem.
Das stimmt natürlich. Wobei ich auch in der Lage bin, meine Skizzen ausführlich zu beschreiben.
Und meistens ist es ja doch eher so, dass in einem Team nicht eine Unterklasse des Projekts (welche noch mit UML darstellbar ist) von einem ganzen Team bearbeitet wird, sondern dass jedes Teammitglied eine solche Unterklasse zugewiesen bekommt und man sich "nur" über die Schnittstellen einig werden muss.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: UML

Beitrag von Xin » Do Feb 04, 2010 6:35 pm

stampuhh hat geschrieben:Du solltest aber nicht vergessen, dass man hin und wieder auch mal im Team arbeiten muss ;)
Das Team könnte mit deinen Skizzen vermutlich wenig anfangen, dafür aber mit UML oder Ähnlichem.
Was denkst Du, wie gut ein Team mit einer Schnittstellendefinition im Code klar kommt... ^^

Die kann man praktischerweise auch gleich mit #include einbinden und muss sie nicht noch aus den Grafiken abtippen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: UML

Beitrag von stampuhh » Do Feb 04, 2010 9:36 pm

In der Uni hat sich das eher so angehört, dass wir (als Informatiker) mit UML-Diagrammen die Programme "planen" sollen und irgendwelche Programmierer diese dann umsetzen sollen. Dann würde UML sicherlich Sinn machen... :roll:
Aber ich schätze einfach mal das ist von Unternehmen zu Unternehmen unterschiedlich und kommt bestimmt auch stark auf die Größe an. Dieses Vorgehen klingt auf jeden Fall eher nach einer großen Softwareschmiede...
Bei unserem Softwarepraktikum jedenfalls haben wir zwar schön die geforderten Diagramme erstellt allerdings nachher beim Programmieren einfach frei drauf los geschrieben...die Diagramme wären auch nicht wirklich umzusetzen gewesen. Gemerkt hat es jedenfalls keiner :twisted:

gruß stampuhh
NachDenkSeiten.de

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: UML

Beitrag von Xin » Do Feb 04, 2010 10:13 pm

stampuhh hat geschrieben:In der Uni hat sich das eher so angehört, dass wir (als Informatiker) mit UML-Diagrammen die Programme "planen" sollen und irgendwelche Programmierer diese dann umsetzen sollen. Dann würde UML sicherlich Sinn machen... :roll:
Joah, das Bild wurde mir auch mal vermittelt.
Ich bin dann wohl irgendein Programmierer (Dipl.-Inf. (FH)). Was ich bisher von Uni-Absolventen bekommen habe, war nie in UML. Bisher war es eher so, dass wir Konzepte erstmal in die Realität übertragen musste oder zuende planen mussten.
stampuhh hat geschrieben:Aber ich schätze einfach mal das ist von Unternehmen zu Unternehmen unterschiedlich und kommt bestimmt auch stark auf die Größe an. Dieses Vorgehen klingt auf jeden Fall eher nach einer großen Softwareschmiede...
UML habe ich in der Realität noch nicht gesehen. Ich arbeite in eher kleineren Firmen. Aber ich habe Freunde in großen Firmen. UML habe ich noch nie in einem ernstzunehmenden Umfeld gesehen oder davon gehört, dass es dort verwendet wurde.
stampuhh hat geschrieben:Bei unserem Softwarepraktikum jedenfalls haben wir zwar schön die geforderten Diagramme erstellt allerdings nachher beim Programmieren einfach frei drauf los geschrieben...die Diagramme wären auch nicht wirklich umzusetzen gewesen. Gemerkt hat es jedenfalls keiner :twisted:
Ihr habt es gemerkt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Psaniko
Beiträge: 17
Registriert: Mo Feb 01, 2010 5:34 pm

Re: C-Tutorial - kleine Fehlerliste

Beitrag von Psaniko » Sa Feb 06, 2010 7:27 pm

Xin hat geschrieben: Zwischendurch muss man selbst denken. Abschreiben funktioniert nur dann, wenn die Leute, von denen man abschreibt, überlegt haben oder selbst von Leuten abgeschrieben haben, die überlegt haben. Wenn da einer bei ist, der sich das Denken gespart hat, dann schreiben alle Unsinn ab und kombinieren den Kram zu neuem Unsinn.
Wer beim programmieren nicht selber denkt, der bleibt ewig ein Script-Kiddie ^^ Ich stimme dir in dem Punkt auch zu, aber stell dir mal vor du willst in deinem Dienst z.B. eine Authentifizierung via OpenID einbauen. Dann kannst du auch nicht das gesamte Projekt analysieren und jede einzelne Zeile Code kontrollieren, nur weil du den Programmieren nicht vertraust. In so einem Falle musst du dich wohl oder übel auf die Dokumentation der API beschränken im Vertrauen darauf, dass die OpenID-Programmierer keinen Unsinn abgeschrieben haben.
Xin hat geschrieben: Ich habe auch UML gelernt. Es hat sich herausgestellt, dass die korrekte Planung der UML-Diagramme am effizientesten war, wenn man erst die Software schreibt und dann die Planung dazu macht und anschließend behauptet, dass man nun anhand der Planung die Software schreibt.
Wir hatten übrigens eine eins in dem Fach, weil unsere Planung so gut durchdacht war.
Das ist nicht gerade Sinn und Zweck von UML aber wenn es dir eine 1 beschert hat, Glückwunsch ^^

UML ist bestimmt nicht jedermanns Sache (meine auch nicht), aber in großen Teams musst du deine Vorgehensweise und deinen Code in irgendeiner Weise dokumentieren und deinen Team-Kollegen verständlich machen. Und UML ist halt einer der etablierten Standards.
Xin hat geschrieben: Leider kann man ein echtes Programm niemals vorher planen.
Im echten Leben entwickelt ein Programm eine Dynamik. Was in der Theorie funktioniert, bleibt in der Praxis in einem unerwarteten Flaschenhals stecken. Was lange und gut geplant wurde, wird mit einem Anruf des Kunden, der ein kleines Feature dazu bestellt mit einem Schlag zu Altpapier.
Eigentlich sollte man Software so flexibel und dynamisch gestalten, dass ein Anruf des Kunden nicht gleich alles über den Haufen wirft. Und um so etwas zu schaffen, hilft es oft sich vorher Gedanken über MVC, ACL & Co zu machen. Ansonsten besteht die Gefahr, dass man ein mögliches Feature nicht beachtet und später am Core rumfrickeln muss um es richtig zu implementieren. Gute Software ist gekapselt.

Antworten