gelöschter Benutzer

Projektumfeld, Projektplanung

am 20.08.2011, 22:42 Uhr eröffnete folgenden Thread
Sonstige    3296 mal gelesen    9 Antwort(en).

Hallo Seitenreporter,

mal eine andere Frage zur Programmierung.

Wie plant ihr eure Projekte?
Wie bereitet Ihr euch vor?
Welche Techniken nutzt/kennt Ihr und welche davon haben sich bei euch bewährt?
Welche Techniken würde Ihr empfehlen usw.?

Mich beschäftigt dieses Thema schon länger aber irgendwie komm ich nicht weiter und ich bin mit meiner jetzigen Vorgehensweise unzufrieden.


Schöne Grüße
Thomas


ptra
Avatar ptra
Designerin (Print & Web)
Content Meister (473 Beiträge)
am 21.08.2011, 00:24 Uhr schrieb ptra

Hallo Thomas,

ich habe da eine private Website, die mit meinem Knowhow wächst. Jedes Mal, wenn ich etwas Neues erfahre/lerne/beherrsche dann baue ich das ein. Dieses Pojekt ist also immer in Bewegung und nie ausgereift.

Ich denke, man muss auch bei Kunden immer flexibel sein und für Anpassungen Platz und Raum lassen. Bei Flash z.B. geht das eher weniger, weil da alles ganz genau geplant werden muss. Ãœber kurz oder lang muss immer angepasst oder erweitert werden. Plant man das von vornherein mit ein, ist man auf der sicheren Seite.

Wo siehst du da denn Probleme für dich? Eine Grundstruktur und ein Grundlayout muss vorhanden sein; alles andere aber muss sich entwickeln und wachsen können und flexibel sein. Technik: Grundsolides HTMl, valide aufgebaut mit CSS, Gimmicks mit wasauchimmer eingestreut. Nur kein Kastendenken und -schema F.

Gruß. Petra


Gegen die Infamitäten des Lebens... (siehe Hermann Hesse) http://www.universoom.de

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 21.08.2011, 09:50 Uhr schrieb romacron

Hallo Thomas,

so wird es vielen Programmierern gehen. Zunächst sollte die Unzufriedenheit bei bestimmten Entwicklungsschritten genau festgestellt werden. In der Regel sind es Aufgaben wie:
hinterher noch eine Spalte in den Table einfügen, weil man diese zuvor nicht bedacht hatte oder ein Model arbeitet doch mehr mit einem anderen Model zusammen, als gedacht. Da wird jeder seine Lieblingsärgernisse haben. Im Prinzip läuft alles darauf hinaus, das die Software zuvor nicht ausreichend geplant und durchdacht war. Gerade bei größeren Projekten wird man Schwierigkeiten haben, alles im Kopf zuvor einmal geplant und durchgegangen zu haben.

>>Wie bereitet Ihr euch vor?
Themenrecherche um ein Grundverständnis für die Aufgabe zu bekommen!!!

>>Wie plant ihr eure Projekte?

Die Lösung der Probleme ist meiner Meinung nach „MDD“ (Model Driven Development) & “UML“ Unified Modeling Language. Diese Technologien beschäftigen sich mit dieser Art Problemen.

UML ist die perfekte Art von Bleistift und Papier. Mit dieser Sprache werden Softwarearchitektur und Prozesse im Vorfeld visualisiert. Für jede Art von Problemen gibt es eine eigene Diagrammart die die Anforderung und die Schwachstellen verdeutlicht. Zu den Entwicklungsschritten schreibe ich dir den jeweiligen Diagrammnamen dazu, dann fällt es beim Pauken leichter.

Als Beispiel, damit es vorstellbar ist, dient ein Pizza-Lieferdienst-Service Portal auf dem viele Restaurants gelistet sind. Die Restaurants bekommen die Bestellungen aus dem Portal direkt an ein Androit in die Küche.

Die Vorgehensweise:
Vorgaben und Lastenheft genau anschauen. Dieses dann in eigene Worte fassen und als „Requirement“ eintragen. Die Requirements sind dann die Basis für jede weitere Planung.
Aus den Requirements lassen sich als nächstes die Anwendungsfälle „Use Case“ ableiten. In den Use Cases werden die verschiedenen Aufgaben die der User, der Admin und das System leisten muss dargestellt.
„User navigiert durch die Restaurants“
„User loggt sich ein“ ...usw
Die Use Cases minimieren so Aktionen wie „Mist, der User bekommt ja noch nen Gutschein, hm wer wollte ihm den Gutschein übermitteln, wer darf überhaupt Gutscheine Ausgeben, gibt es einen GS Pool für jedes Restaurant“. ← Das sind genau die Fragen an denen man beim Entwickeln unzufrieden wird )

Nun geht’s um die Sequenzen zu den jeweiligen Anwendungsfällen.
„User navigiert durch die Restaurants“ für den Lieferbereich die Restaurants laden. Restaurants die extra Werbung geschaltet haben zuerst anzeigen. Gute Bewertungen höher ranken. ...usw.
In die Sequenzen beschreiben dann die tieferen Prozesse die für die Lösung der Aufgabe nötig sind. Es macht sich gut, dies für jeden UseCase einzeln zu erstellen. Man erkennt oft, dass eine Sequenz mehrfach und für andere Anwendungsfälle genutzt werden kann. Nebenher notiert man sich weitere Requirements oder verbindet bereits vorhandene mit der Sequenz.

Das ist im Groben die Planung. Entscheidend ist hier der Vorteil, dass man Probleme und Aufgaben frühzeitig erkennt und diese in diesem Stadium der Entwicklung einsortieren kann. Der Zeitvorteil ist enorm, da man eher mit der Maus boxen verschiebt als den Code umzuschreiben!!
Der Planungsteil ist hier soweit abgeschlossen. Nun geht es ans Modellieren der Anwendung.

Die Diagrammart ist hier das „Class Model“
Das Class Model sieht bei mir immer wie die spätere Files und Folder Struktur aus(admin mvc; user mvc). Hier füge ich die bereits erstellten Anwendungsfälle als Klassen und Funktionen ein. Also nur das Skelett schreiben, auf gar keinen Fall genaue Routinen. Die Klassen werden auch hier als Diagramm dargestellt. Diese kann man verschieben kombinieren, ableiten ...usw. Das Geschiebe beim Modellieren spart jede Menge Frust als wenn man das mit dem Code beim Coden machen würde.(ein Segen) Hier achtet man automatisch darauf das die Datenmodell (Klassen) erweiterbar sind und vor Allem auch wie. (Segen ++)

Ich denke es lässt sich schwer vermitteln, das man so einen Aufwand bei der Planung betreibt und noch keine Zeile Code real programmiert hat. Als UML Tool habe ich Enterprice-Architect (EA).
Der EA druckt mir auf Verlangen das zuvor erstellte Datenmodell als Dateien samt deren Verknüpfungen mit den jeweiligen Kommentaren aus.
Gleiches gilt bei der Erstellung der DB Tables.... es werden die kompletten inserts und creates ausgegeben.(Segen²)

….nun geht’s an Programmieren. Hier arbeite ich dann die zuvor erstellten UseCases und Sequenzen ab. Ich beschäftige mich an dieser Stelle ausschließlich mit dem Code und nicht mit der Struktur. Die Trennung wie wir sic beim Css-Html-Php-JS haben, findet hier ebenso statt. Ich denke , jeder der diese Vorgehensweise beim Webseiten-schreiben mag erkennt hier die Notwendigkeit der Stricten Trennung von Planning und Development.

Es lässt sich nie ganz verhindern, das man irgendwo im Code „nachpatchen“ muss. Der EA bietet hier eine Reverse-Funktion. Es wird der Programmcode in das Class-Model eingelesen. Das aktualisierte Diagramm steht dir dann wie weiter oben beschrieben zur Verfügung.
Besser und schneller werden: Die Nachpatche-Erfahrung von gerade eben beachtet man beim neuen Projekt eher und bezieht diese bei der Planung sofort ein, da man diese Visualisiert hat. Vielleicht auch, weil man dieses nachpatchen als Strukturelle Frage und nicht als Code-Frage erkannt hat.

Welche Techniken nutzt/kennt Ihr und welche davon haben sich bei euch bewährt?
UML
MDD
und als Programm Enterprice Architect ggf. fürs Wiren den ScreenArchitect.

Note: Zum Anfang ist man bei der Anwendung von UML wenig effizient. Teilweise erschliessen sich Sinn und Nutzen erst später. Auf jeden Fall sollte man MDD und UML zum Lernen immer nebenher mit machen. Man wird von Mal zu Mal besser.

Der Angehängte Screen verdeutlicht nur. Oben ein Use Case darunter eine Sequence zu einem Usecase. Der vollständige Pdf-Output sind knapp 50 Seiten.



gelöschter Benutzer
am 21.08.2011, 13:14 Uhr schrieb

Danke Roman


UFOMelkor
Avatar UFOMelkor
Student
Content Meister (350 Beiträge)
am 21.08.2011, 16:28 Uhr schrieb UFOMelkor

Also ich stehe eher weniger auf MDA. Nichts gegen UML, UML ist cool, aber bei MDA hört der Spaß für mich auf. Ich bin Programmierer, ich will mir nichts zusammen klicken, ich will schreiben. Nichts gegen deine Art, Roman, ich bin mir sicher er funktioniert, aber für mich wäre das nichts (merke ich gerade wieder an der Uni).

Nichtsdestotrotz hast du in vielen Dingen recht. Eine genaue Planung ist wichtig, Use-Case-Diagramme (wobei ich hier Text besser finde) und Aktitätsdiagramme helfen enorm.
Ansonsten bevorzuge ich allerdings einen wesentlich agileren Ansatz. Gerade bei Webanwendungen (und besonders bei eigenen Seiten) ändern sich die Anforderungen so oft, dass man ständig unvorhersehbare Änderungen hat. Dementsprechend versuche ich auch gar nicht, irgendetwas vorauszusehen, sondern bemühe mich, meinen Code so flexibel zu halten, dass ich eventuelle Änderungen jederzeit mit möglichst wenig Aufwand durchführen kann.
TDD ist hierbei das IMHO wichtigste Hilfsmittel, da man von vornherein gezwungen ist, Code zu schreiben, der wenige Abhängigkeiten hat und dementsprechend leicht wartbar ist.
Ansonsten gibt es natürlich noch einige Tools zur statischen Codeanalyse, die ganz hilfreich sein können. Soviel erst einmal von meiner Seite, wenn ich wieder zuhause bin, schreibe ich vielleicht mehr dazu.


Naturkosmetik in Bochum

Steppenhahn Ultramarathon-Community

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 21.08.2011, 20:57 Uhr schrieb romacron

....dann nutze ich die Gelegenheit(bis du wieder daheim bist

Vielleicht sollten wir an dieser Stelle ein paar grundlegende Unterscheidungen aufstellen. Ãœber sinnvolle und weniger sinnvolle Anwendung der diversen Technologien.

Zunächst gilt es einen Ausweg aus generellen Programmier- Einbahnstraßen zu finden. Ob Papier oder Uml beides soll vorab das "Ende" ausschließen. Ich glaube bei der Planung, egal wie man es anstellt werden wir hier(hoffentlich) einen Konsens haben.

MDD zusammengeklickt...klingt heftig. Gerade weil die Modelle aus meiner Feder stammen und immer wieder weiterentwickelt werden. Aus subversions dies jedes mal ne zu mergen ist ne lästige Angelegenheit. Beim MDD geht es viel mehr darum Code effizient und vor allem effektiv einzusetzen. Ãœberspitzt gesagt, progge ich mir nicht täglich ein neues OS um zu surfen.

So meine ich, dass man mit MDD Code produzieren kann, gerade was die Basics angeht (thats the working horse). Das spart jede Menge Zeit, die ich für die Weiterentwicklung der Modelle nutzen kann oder eben für ausgefeiltere Sequences!

Zu Deinem TDD, es ist vollkommen richtig was du sagst. Die richtige Zeit für „Test driven development„ ist die Stelle an der man neue Modelle entwickelt. Dies ist der Creative Prozess bei dem oft Fehler(Detailfehler) produziert werden. Vor allem hier muss X mal getestet werden.

Ein Entscheidungsgrund für den EA, war die Einbindung/Unterstützung von Unit-Tests. Es lohnt sich den EA einmal komplett durchzuackern



gelöschter Benutzer
am 31.08.2011, 22:22 Uhr schrieb

Auch ein Danke an Oskar.


Ich push das Thema noch einmal und hoffe auf noch mehr gute Antworten.

Im wesentlichen habe ich auch bisher mehr agile Techniken genutzt. Dadurch erreicht man wirklich eine sehr gute Kundenbindung, durch den ständigen Kontakt.

Die UML hab ich bisher stark vernachlässigt und das muss ich nun aufholen

Schöne Grüße
Thomas


UFOMelkor
Avatar UFOMelkor
Student
Content Meister (350 Beiträge)
am 28.09.2011, 20:22 Uhr schrieb UFOMelkor

So, dann sag ich auch noch mal was dazu:

Vorab mal zwei ganz interessante Links, die zeigen, dass es auch anders geht als wir das hier propagieren (oder eben auch nicht).
Quick and dirty auf Bewährung
Gelten im Netz andere Gesetze für die Qualität der Software
Btte auch jeweils die Kommentare beachten.

Aber zurück zum Thema: Ich stimme dir zu, dass es immer darum geht, Software so zu entwerfen, dass man möglichst lange damit weiterarbeiten kann (denn das meintest du doch mit Programmierer-Einbahnstraße oder?).

Darüber hinaus: Ich sage nicht, dass MDD nicht funktionieren kann, es gefällt mir persönlich einfach nicht. Klar, ob man sich die Klassen zusammenklickt (wieder das böse Wort ) oder den Code selbst schreibt, die Ideen und die Qualität der Software sind in beiden Fällen von der Person abhängig, die vorm Computer sitzt. Letztendlich ist das Ergebnis ja auch bei beiden Methoden identisch, nur die Art, wie das Ergebnis entsteht, unterscheidet sich.
Bei MDD versucht man, die Basics so weit es geht anhand der Modelle generieren zu lassen, um sich den „handwerklichen Teil“ so weit es geht zu ersparen. Ich aber mag den handwerklichen Teil, auch bei den Basics, darum bemühe ich mich, möglichst viel selbst zu schreiben. Das ist oft wahrscheinlich mehr Arbeit als MDD, zwingt mich aber gleichzeitig auch meinen Code immer und immer wieder zu überdenken. Letztendlich bleibt es IMHO vor allem eine Geschmacksfrage, ob man die Basics selber programmieren möchte oder sich die Tipparbeit lieber erspart und nur sein Gehirn arbeiten lässt.

Während MDD / nicht MDD die Qualität der Software IMHO nicht sonderlich beeinflusst, gibt es IMHO Dinge, die eine viel größere Rolle spielen.


  • Testen oder nicht testen

  • Wenn ja, was für Tests (Unit-Tests, Akzeptanz-Tests, Integrationstests, …)

  • Wenn ja, wann wird getestet (bei Bedarf / immer vor dem Schreiben des Codes / immer nach dem Schreiben des Codes)

  • Ãœberwachung des Codes mit Software-Metriken?

  • Continous Integration?

  • Gute (und vor allem immer aktuelle) Dokumentation


Naturkosmetik in Bochum

Steppenhahn Ultramarathon-Community


gelöschter Benutzer
am 29.09.2011, 00:34 Uhr schrieb

Da hab ich auch noch etwas.

live.gnome.org/Dia/Screenshots



Das ist ein guter leicht verständlicher UML Editor mit den man eine Vielzahl von Diagrammen erstellen kann. Unter Ubuntu kann man Ihn direkt über das Sofwarecenter installieren.
Das beste ist, das er kostenlos ist.


Allerdings eine Frage hab ich noch. Welche Diagrammart eignet sich am besten um ein System so darzustellen das sie auch von nicht Programmieren gut verstanden werden können?


UFOMelkor
Avatar UFOMelkor
Student
Content Meister (350 Beiträge)
am 29.09.2011, 20:39 Uhr schrieb UFOMelkor

Das hängt letztendlich von deinen Diagrammen und deinem Umgang mit den Kunden ab.

Anwendungsfalldiagramme und Aktivitätsdiagramme sollten eigentlich immer gehen, ich denke die sind auch für Laien verständlich.

Interessanter wird es da schon bei den Klassendiagrammen. Hier zahlt es sich aus, wenn man im Rahmen von Domain Driven Design eine ubiquitäre Sprache nutzt. Spricht man nämlich dieselbe Sprache wie der Kunde, ist es auch für den Kunden einfach, Klassendiagramme zu verstehen (und auch für die anderen Diagramme sollte es nützlich sein).

Ganz unabhängig von DDD gilt: Je besser die Kommunikation zwischen dir und deinem Kunden, umso mehr Diagramme wird er auch verstehen.


Naturkosmetik in Bochum

Steppenhahn Ultramarathon-Community

  • 1


« zurück zu: Sonstige

Das Seitenreport Forum hat aktuell 5274 Themen und 36108 Beiträge.
Insgesamt sind 48346 Mitglieder registriert.