Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 07:15

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Projektplanungshilfen
BeitragVerfasst: Fr Mai 21, 2010 11:00 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Hallo,

Bevor ich im nächsten Projekt wieder ein solches Chaos fabriziere wie in meinem letzten Projekt würde ich gerne eine vernünftige Planung erstellen, da ich mir als Anfänger immernoch sehr schwer tue mit den einzelnen Klassen und wie sie zusammenspielen und wie man sie am besten aufbaut.

Ich habe mal ein wenig gegoogelt (ohne wirklich zu wissen wonach ich eigentlich suche) und folgendes gefunden: http://www.gModeler.com.

Nunja hier wollte ich eigentlich fragen ob jemand das kennt oder mir eventuell eine einsteigerfreundliche Alternative nennen kann. Welche weiteren Planungshilfen nutzt ihr so?

winke und schonmal Danke

Wölfchen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Fr Mai 21, 2010 11:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich nutze gerne UML Klassendiagramme für erste Planung. Im Laufe des Projektes ist es wichtig den Überblick zu behalten. Daher wird das Diagramm dann immer mehr durch eine automatisch generierte HTML-Dokumentation ersetzt. Für meine Diplomarbeit nutze ich im Augenblick Umbrello/Doxygen und überlege nach Dia/Doygen zu migrieren, weil die Umbrello-Bugs doch ziemlich nerven.

UML-Tools für Linux
  • Umbrello kann viel und auch andere UML-Diagramme als nur Klassen. Hat aber auch viele Bugs.
  • Dia hab ich bisher noch nicht ernsthaft zu diesem Zweck benutzt. Für gewöhnliche Diagramme aber sehr gut!
  • Modified UMLScluptor via Wine. Recht gut, kann aber nicht als Bild exportieren. Mehrere Screenshots machen und zusammenfügen geht aber natürlich immer. Die "Modifikation" gegenüber dem Original besteht nur daraus das die Zeichenfläche vergrößert und die Schriftgröße verkleinert wurde.
  • UML-Plugin für Eclipse. Weiß den Namen des Plugins nicht genau, war jedenfalls unbenutzbar langsam. Ich meine ein Ladebalken von 5 Sekunden zum Einfügen einer neuen Klasse, hallo? Wenn man aber sowieso mit Eclipse arbeitet ist das möglicherweise sinnvoll.

UML-Tools für Windows
  • Modified UMLScluptor, hat unter Windows merkwürdiger Weise mehr Bugs als mit Wine obwohl es sich um die gleiche Binary handelt. Ansonsten, siehe oben.
  • Dia gibt es auch für Windows.
  • Eclipse natürlich auch

Auto-Dokumentations-Tools
Diese Tools erzeugen eine umfangreiche HTML-Doku direkt aus dem Code. Der Code muss dazu aber auf eine spezielle Weise kommentiert werden. Siehe unten. Der große Vorteil ist, dass Doku und Quellcode in der gleichen Datei sind und so mit minimalem Aufwand laufend aktualisiert werden können.
  • Doxygen (für C++, C, Java, Objective-C, Python, IDL, Fortran, VHDL, PHP, C#, D) hab ich bisher nur für C++ benutzt. Ziemlich gut, kann auch LaTeX-Formeln und so einen Kram!
  • Javadoc (für Java) liegt dem JDK bei und ist wirklich brauchbar.
  • PasDoc (für ObjectPascal) hab ich noch nie benutzt.

Doxygen-Doku in einem C++-Header könnte z.B: so aussehen:
Code:
   /** Abstract base class for user controlled cameras used by ViewerWidget.
   * @author Martin Weusten <martin.weusten@<zensiert>.de> */
   class WidgetCamera : public Camera
   {
   public:
      WidgetCamera(ViewerWidget* widget) : m_widget(widget) { }
      virtual ~WidgetCamera() {}
   
      /** called if the viewport might have changed it's size. */
      virtual void viewportResized() = 0;
   
      /** called by ViewerWidget::mainloop().
      * @param cursor cursor transformed into space -1...1
      * @param keys set of keycodes from Qt::Key.
      * @param wheel delta of the wheel in degree.
      * @param timeElapsed time in seconds since last mainloop iteration. Note that large values
      *        may trigger a special reset action.
      * @return true if the camera does require an update and repaint of the scene, false otherwise. */
      virtual bool update(CML::Vector2f cursor, const std::set<int>& keys, float wheel, float timeElapsed) = 0;

      /** Clears the framebuffer. The default implementation does just call glClear(mask).
       * Other implementations might want to draw a background image instead. */
      virtual void clear(GLbitfield mask) {
         glClear(mask);
      }

      /** you might want to use the associated Widget to get viewport size and cursor position. */
      inline ViewerWidget* getWidget() { return m_widget; }
   protected:
      ViewerWidget* m_widget;
   };


Die erzeugte HTML-Doku sieht dann so aus:
http://yfrog.com/1rdoxygenp
Wenn man runter scrollt kommt dann noch die detaillierte Beschreibung der Parameter etc.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Fr Mai 21, 2010 12:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zusatz:
Zitat:
da ich mir als Anfänger immernoch sehr schwer tue mit den einzelnen Klassen und wie sie zusammenspielen und wie man sie am besten aufbaut.

Sofern dir die grundsätzlichen Features wie Vererbung bekannt sind könnte es dir möglicherweise helfen dir einige Designpattern anzuschauen. Designpattern, zu deutsch "Entwurfsmuster", sind Klassenstrukturen die man immer wieder in verschiedenen Zusammenhängen benötigt. In dem Zusammenhang mit Designpattern wird dir immer wieder der Name "Gang of Four" (GoF) bzw. "Viererbande" begegnen. Damit sind die vier Autoren des Buches "Design Patterns" gemeint, die diese Pattern vorgeschlagen haben.

Laut GoF gibt es 23 Pattern, hier ein paar deren Verständnis ich jetzt gerade spontan für wichtig halte:

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Fr Mai 21, 2010 12:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
ArgoUML ist wirklich brauchbar geworden mittlerweile.
http://argouml.tigris.org/

Evtl. nützlich sein kann auch GanttProject:
http://www.ganttproject.biz/

Beides OpenSource.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 22, 2010 12:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Habe jetzt Dia mal etwas ausführlicher getestet. Echt brauchbar und besser als Umbrello. Bisher keine echten Bugs gefunden. Dia denkt nicht zu viel wie Umbrello, macht dafür aber auch einfach das was man ihm sagt. Das automatische setzen von Pfeilen kann einem in Umbrello ja manchmal den letzten Nerv rauben.
Es ist mit Dia leider nicht möglich die Abmessungen einer Klasse zu ändern. Das sorgt dafür man das man Subklassen nicht mit gleicher Breite untereinander setzen kann. Zudem können Pfeile an der Ober/Unterseite nur in der Mitte andocken. Pfeile haben dadurch immer mindestens einen Knick. Daher wirken Diagramme meiner Meinung nach leicht unübersichtlich.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 22, 2010 12:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Für UML Diagramme nutze ich gerade in der Uni in einer Teamarbeit AlegroUML und davor haben wir AstahUML genutzt, das hat aber ein eigenes zu anderen inkompatibles Format.

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 22, 2010 13:26 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
danke schonmal für die gegebenen Antworten, das Naheliegendste habe ich erst vorhin entdeckt, es gibt ja in der wiki sogar tutorials zum Thema...

http://wiki.delphigl.com/index.php/Tutorial_Softwareentwicklung1

Die führe ich mir jetzt ersteinmal zu Gemüte, weil die ganzen Begriffe wie "use case diagramm" und so für mich alle neu und verwirrend sind.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Mo Mai 24, 2010 07:47 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das Tutorial habe ich damals von einem Buch abgeleitet. Dieses Buch wiederum stammt von jemanden der bei "Rational" arbeitet. Die wiederum haben ihr Geld damit verdient "Projektentwurfsprozesse" zu erstellen und Tools dafür zu schreiben. Die Firma wurde schlussendlich von IBM aufgekauft und deren Prozesse sind in IBMs "Unified Method Framework" aufgegangen.

Soll heißen: Der beschriebene Prozess dient dazu in kommerziellen (business) Projekten, Menschen an ein Projektthema heranzuführen und es strukturiert ablaufen zu lassen. Der Prozess ist also tendenziell zu groß für ein Spiel. Bei Schulungen zu solchen Prozessen (auch z.B. UMF) lernt man immer, dass man Sachen weglassen soll (tailorn) und nur die Sachen übernimmt die einem geeignet vorkommen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 29, 2010 07:42 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Flash hat geschrieben:
{...}
Soll heißen: Der beschriebene Prozess dient dazu in kommerziellen (business) Projekten, Menschen an ein Projektthema heranzuführen und es strukturiert ablaufen zu lassen. Der Prozess ist also tendenziell zu groß für ein Spiel. Bei Schulungen zu solchen Prozessen (auch z.B. UMF) lernt man immer, dass man Sachen weglassen soll (tailorn) und nur die Sachen übernimmt die einem geeignet vorkommen.


Ja ich habe im Internet noch ein wenig über UML insbesondere bei der Spieleentwicklung gelesen. Es wir da ja sehr kontrovers diskutiert, wärend manche sagen, es sei ein geeignetes tool finden es andere zu starr für den angeblich häufig sehr dynamischen Entwicklungsprozess bei der Spieleentwicklung.

Trotzdem interessiert mich das Thema und ich möchte mich gerne ein wenig mehr damit beschäftigen. Ich weiss aber, das ich es nicht ganz verstanden habe.

Beispiel:

Ich habe versucht ein Use-Case Diagramm für ein simples 1-2 Spieler Spiel mit Level Editor zu erstellen.
Bild

Bin mir aber auf der Editor Seite unsicher ob die nicht bereits zu groß ist... da könnte ja vielleicht auch lediglich "Erstellt Karte" stehen.
Andererseits, wenn ich es derart kürze, dann hilft es mir ja nicht mehr beim Finden von Klassen, oder?

Auch auf der Spiel Seite bin ich unsicher, was den 2 Spieler Modus betrifft.
Sollte ich hier unterscheiden zwischen Netzwerkspiel und Spiel an einem Rechner? (Also 2 Use Cases) oder reicht es wie ich es habe einmal und man unterscheidet dann woanders... (aber wo?)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 29, 2010 08:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Es wir da ja sehr kontrovers diskutiert, wärend manche sagen, es sei ein geeignetes tool finden es andere zu starr für den angeblich häufig sehr dynamischen Entwicklungsprozess bei der Spieleentwicklung.

UseCases eignen sich normalerweise insbesondere für Benutzerschnittstellen. Bei der Spieleentwicklung steht normalerweise eher Resourcenverwaltung, Spiellogik und Rendering im Vordergrund. Aber natürlich gibt es auch bei der Spieleentwicklung eine Benutzerschnittstelle. Mir reichen aber normalerweise UML Klassendiagramme.
Der Entwicklungsprozess ist dynamisch, weil man bei der Spieleentwicklung im Gegensatz zu vielen anderen Anwendungen extrem viel Bedenken muss und man häufig am Anfang Dinge vergisst die dann später noch eingebaut werden müssen. Aber genau aus diesem Grund funktioniert einfach drauf los programmieren nicht.

Zitat:
Andererseits, wenn ich es derart kürze, dann hilft es mir ja nicht mehr beim Finden von Klassen, oder?

Also mit dem UseCase Diagramm kannst du so nicht viel Anfangen. Du musst da viel tiefer ins Detail gehen. Also z.B. den UseCase "erstellt Karte" solltest du mit einem weiteren Diagramm genauer modellieren. Hier würde sich z.B. ein UML-Aktivitätsdiagramm eignen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 29, 2010 09:24 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Dein Vorgehen ist schon gar nicht verkehrt. Der Prozess ist eigentlich dazu gedacht, jemanden der keine Ahnung hat von dem was du vorhast, mitarbeiten zu lassen. Mit den Usecases weiß er jetzt was gemacht werden soll.
Jetzt nimmst du dir jeden Usecase vor und suchst Klassenkandidaten. Wenn du das für alle UseCases gemacht hast, suchst du nach Kandidaten aus verschiedenen UseCases die gleich sind/zusammengefasst werden können. Das sind meist erstmal nur Entitys.
Jeder UseCase muss natürlich auch wieder gesteuert werden (also der Ablauf). Dafür brauchst du Controller-Klassen.
Hier ist es von Vorteil die UseCases deutlicher aufgeteilt zu haben, denn du siehst nun gleich, welche Controllerklassen du vermutlich benötigen wirst.

Ein Projektfremder könnte anhand des Diagramms sehen, welche Teile er im Code vorfinden wird. Das macht also schon alles Sinn.

Das "UML für Spiele" Beispiel hinkt allgemein. Da meistens die Leute die gegen UML argumentieren allein am Code arbeiten. UML und der ganze Entwurfsprozess machen aber wirklich dann erst Sinn wenn 1) viele Leute und 2) Leute die das Thema nicht kennen - zusammen arbeiten sollen. Deshalb wird es bei Geschäftsanwendungen ja verwendet. Da weiß eigentlich nur der Kunde was das Ziel ist, und er kanns schlecht erklären. Deshalb muss man sich mit den Modellen vorarbeiten und versuchen den Kunden zu Aussagen zu bringen wie "genau das meine ich" oder "Nein nicht so, sonder...". ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Projektplanungshilfen
BeitragVerfasst: Sa Mai 29, 2010 15:07 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich benutze Dia und sehr oft Inkscape für Diagramme und Übersichten, sowie MindMaps für Brainstorming Phasen.
Code Dokumentation nutze ich doxygen, code generierung CMake und als Buildsystem nutze ich Hudson und vorher hab ich CruiseControl genutzt.
Eine wirkliche Planung jedes Modules, welche Klassen und wie diese aussehen hab ich eigentlich nie wirklich gemacht und wenn mal eine Klassenübersicht erstellt hab nur im nachhinein.
Ich mache Klassendiagramme nur bei dingen, die ich vorher noch nie Entwickelt habe und im ganzen zu Komplex sind, um diese on the fly zu konzipieren.
Bei Netzwerkkommunikation z.B. nutze ich immer Diagramme. Ein großer Teil meiner Konzepte war immer mit Papier und Stift entstanden und da diese irgendwann abhanden gehen, hab ich mir dann ein Graphic Tablet geholt, damit ich frei Hand am PC zeichnen kann. Ich bin nicht so der Fan von UML Software, da diese immer viele Klicks und Text benötigen, die mit Maus und Tastatur viel länger brauchen als mit Stift und Papier.

Man sollte wissen, was man im Projekt machen will und dies dokumentieren, wenn man schon länger programmiert, dann wird man nur noch recht selten UML Diagramme zu Ablauf oder Klassen machen. Hat man weniger Erfahrung in einer Sprache und dem Entwicklungsgebiet können diese definitiv viel Zeit sparen.

Bei der Projektplanung kommt es auf Erfahrung, Einsatzgebiet und anderen Faktoren an, wie man ein Projekt plant.
In einer Middleware Firma wird man z.B. sehr viel Dokumentation, Klassenübersichten und Pflichtenheft finden, wärend in einem Hobby Spiel der Code niicht die Ware ist und man viele Abstriche machen kann. Die Klassendiagramme kann Doxygen auch generieren, falls es wirklich mal jemanden gibt, der diese sehen will ^^.

Task Planung ist sicher schick und sieht Professionell aus aber bei Hobby Projekten mit einen Überschaubaren Entwickleranzahl eher ein Zeit-Töter als Helfer.
Früher hatte man viel Wasserfall verwendet aber heute tendieren die Software Entwickler zu Agile Projektmanagment, wie z.B. Scrum.
Aktuell arbeite ich in einem 15Mann Team, da ist Scrum z.B. Zeitsparend aber in der Firma zuvor waren wir 5 und da war es ein Time-Killer.

Gantt ist eine schicke Sache und man könnte es mit einer Roadmap in einigen großen Softwareprodukten vergleichen(Fedora z.B. hat sowas, wo alle Tasks Programmierern zugewiesen sind und diese dann bis zum Ende der Entwicklungszeit dran arbeiten).

Der Thread wird auch noch recht lang werden, da viele Leute viele Unterschiedliche Erfahrungen gemacht haben und auch Unterschiedliche Projekte haben, wo sich bestimmte Verfahren und Software besser eignen. Daher ist mein Vorschlag, nimm ein MindMap Tool, wie z.B. FreeMind, MindMeister oder ähnliches und mach erstmal ein Brainstorming zu deinem Projekt.
Das bedeutet, du schreibst einfach das auf, was dir einfällt kategorisierst das ganze mit Schlagwörtern und versuchst dabei die wichtigsten Fragen(z.B. Was will ich machen?, Wer soll es nutzen?, Was erwarte ich davon?,...) durch zu arbeiten und dann mit dem Ergebnis einfach hier nochmal zu melden. Dann kann man recht gut Hilfestellungen geben, welche Tools und Arbeitsweisen sich als nützlich erwiesen haben.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]