Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [Grundlagen] Entwicklung eines Projektkonzeptes
Antwort
 
Themen-Optionen
Alt 20.11.2005, 16:50   Nach oben    #1
WarrenFaith
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.793
Standard [Grundlagen] Entwicklung eines Projektkonzeptes

Entwicklung eines Projektkonzeptes [Grundlagen]

In diesem Tutorial werden wichtige Grundlagen für ein gutes Projektkonzept vermittelt. Es ist nicht Ziel des Tutorials tiefgreifendes Wissen über Datenbanken und Programmierung zu vermitteln. Ziel ist es dem Leser eine Art Leitfaden für die Projektentwicklung zu geben, anhand dessen er sich orientieren kann. Ferner wird darauf hingewiesen, dass zum Programmieren mehr als nur eine Programmiersprache gehört.
Nach diesem Tutorial solltet ihr in der Lage sein, kleine bis mittlere Projekte selbständig zu planen und zu organisieren.

-------------------------------------------------------------------
Vorwort:
Dieses Tutorial bezieht sich auf das klassische "Browsergame" (Genre: Weltraumsimulation) als Beispielprojekt.
Dieses Beispiel ist gewählt worden, da die Funktionsweise und das Ziel eines Browsergames im Allgemeinen mehr als klar ist und daher nicht näher erläutert werden muss.
Es wird vorausgesetzt, dass ein gewisser Grad an Vorwissen vorhanden ist:
  • Was ist eine Datenbank?
  • Wie entwirft man eine Datenbank?
  • Was ist OOP?
Nachfolgend werden folgende Punkte abgehandelt:
  1. Ohne Konzept und Planung - Geht das?
  2. Vorraussetzungen
  3. Die Idee zu einem Projekt
  4. Brainstorming
  5. Datenanalyse
  6. Programmierentwurf
  7. Programmierregeln
  8. Projektstart
  9. Teammanagement
  10. Die letzten Tipps

-------------------------------------------------------------------
1. Ohne Konzept und Planung - Geht das?

Die Idee ist meistens schnell gekommen. Man hat drei Browserspiele gespielt und will nun die besten Eigenschaften der jeweiligen Spiele in einem einzigen Spiel kombinieren.
So einfach und schnell die Umsetzung der Idee erscheint, so einfach und schnell ist auch die Langeweile beim Projekt angekommen. Man programmiert die einzelnen Features der Spiele nach, lässt Paint erstrahlen um ein Design zu erstellen und wundert sich dann, warum außer den eigenen Kumpels keine Leute kommen und mitspielen.
Die Werbung fürs eigene Spiel auf diversen Portalen für Browsergames ist schnell und leicht gemacht. Plötzlich ist die Useranzahl bei 200 Leuten. 150 davon sind nach 7 Tagen schon wieder gekickt, weil sie inaktiv waren. Alle anderen beschweren sich über Bugs, mangelndes Design, schlechte Spielbalance und dass du scheinbar zu lange brauchst um Fehler zu beheben.
Fazit ist, du hast 6 Monate deine Freizeit geopfert und programmiert. Nun hast du keine Lust, dich im Forum als inkompetent und langsam beschimpfen zu lassen. Du schmeißt alles hin und machst was anderes.

Damit dir das nicht passiert, gibt’s hier ein paar Tipps.

-------------------------------------------------------------------
2. Vorraussetzungen

Auch die beste Idee bringt dir nichts, wenn dir die wichtigsten Dinge fehlen um diese umzusetzen. Du solltest dir also im Klaren sein, dass einige Vorraussetzungen vorhanden sein müssen:
  • Zeit:
    Projekte im Allgemeinen verschlingen Unmengen an Zeit, egal ob du Programmierer oder Organisator bist.
    Du musst also schauen, ob du neben Schule, Studium, Arbeit, Freund/Freundin und sonstigen Hobbys genug Zeit hast, ein solch ein Projekt zu starten. Es ist ebenfalls sehr schwer die Motivation zu einem Projekt aufrecht zu erhalten, wenn man sich nur einmal in der Woche für ein paar Minuten an das Projekt setzt.
  • Ausdauer:
    Wenn du denkst, du bist nach 2 Monaten fertig, lass es. Ein richtiges Projekt ist nie beendet, es sei denn du hast ein klar definiertes Ziel von jemand vorgegeben bekommen. Ein Projekt entwickelt sich, gerade bei Browsergames wird schnell nach Neuerungen verlangt. Neue Rassen, neue Einheiten, neue Features im Allgemeinen.
    Ein Browsergame wird, wenn es gut ist, ein dauerhaftes Projekt.
  • Charakter:
    Sei ehrlich zu dir und frage dich, was für ein Charakter du bist. Nur mit Geduld, Überlegung, Unnahbarkeit und Ruhe kannst du die Hektik eines Projekts mit mehr als 1000 Mitgliedern aushalten. Bist du schnelllebig und leidest unter Reizbarkeit und Stimmungsschwankungen, so lass es lieber. Du ersparst dir und deinen Mitspielern eine Menge Stress.
  • Geld (meistens nur ein Schülerproblem)
    Gerade Internetprojekte sind meistens mit Kosten verbunden.
    Anfangs reicht ein kostenloser Webspace mit Datenbank und PHP/ASP Unterstützung. Spätestens wenn die ersten Betarunden starten, kommt neben der schlechten Performance der Server noch der knappe Traffic zu den Problemen dazu. Dann muss richtiger Webspace gemietet werden. Kosten je nach Angebot.
-------------------------------------------------------------------
3. Die Idee zu einem Projekt

Bevor du dich nun an die Planung des Projekts machst, überlege, welchen Sinn und welche Bedeutung dieses Projekt für dich hat.
Desweiteren solltest du das Projekt auf Realisierbarkeit und Zeitaufwand untersuchen. Stehen Stresssituationen bevor (z.B. Prüfungen), so verschiebe das Projekt etwas, ansonsten läufst du Gefahr, über die Zeit das Interesse daran zu verlieren.
Ebenfalls musst du schauen, ob es dieses Projekt nicht schon irgendwo gibt. Wenn doch, warum solltest du mehr Erfolg haben als das schon existierende Projekt? Warum sollten die Leute zu dir kommen und spielen und nicht zum anderen? Du brauchst also nicht nur die Idee an sich, was du machen willst, sondern auch etwas an der Idee, dass Einzigartig ist und dir den Erfolg garantiert.

Wenn du jetzt immer noch sicher bist, dass dein Projekt ein Erfolg werden kann, dann bist du auf dem richtigen Weg.

-------------------------------------------------------------------
4. Brainstorming

Du hast also eine Idee, doch was nun? Als erstes wird ein Brainstorming veranstaltet, sprich du sammelst und sortierst deine Gedanken.
Eine sehr gute Brainstorming-Software ist das Tool FreeMind (http://freemind.sourceforge.net/). Dort kannst du Gedanken wunderbar festhalten und einfach mit Drag&Drop sortieren, unterteilen und vertiefen. Schnell wirst du merken, dass du vor Ideen für Features nur so übersprudelst.
Wichtig ist nun allerdings, auch mal Abstand zu bekommen. Wenn du merkst, dass eine Flaute an Ideen auftaucht, dann mach eine Pause und hol dir einen Kaffee. Danach kannst du dich nochmals ransetzen und beim überfliegen der bisher gesammelten Ideen werden die noch einige weitere einfallen.
Wenn du das ein paar mal wiederholst, hast du innerhalb einer Woche schon ein sehr gutes Gerüst, was dir jederzeit aufzeigt, was du an Ideen hattest.
Bevor du dich der nächsten Phase zuwendest, empfehle ich dir, dich mit einem Vertrauten deiner Wahl zu treffen. Mit ihm kannst du alles besprechen, du kannst ihm dein Brainstorming zeigen. Je weniger du ihm erklärst, desto interessanter und hilfreicher werden seine Fragen an dich sein. Du wirst feststellen, dass er Sachen sieht und auf Ideen kommt, die dir bisher verborgen geblieben sind. Du wirst auf Missstände hingewiesen und erfährst so die Möglichkeit, diese zu korrigieren, bevor es sehr aufwändig wird.
Nach einigen Treffen werdet ihr beide übereinkommen, dass euch nichts mehr einfällt.
Alternativ zu dem Vertrauten sollte auch intensiv überlegt werden, ob das Projekt alleine überhaupt zu bewältigen ist. Überlege, ob dir jemand bei der Realisierung des Projektes helfen könnte. Tipps zum Teammanagement findest du in einem der folgenden Kapitel.
Das ist der Zeitpunkt für den nächsten Schritt.

-------------------------------------------------------------------
5. Datenanalyse

Nun kommt die nächste Grundlage deines Spiels, die Datenhaltung. Du musst herausfinden, was du alles an Daten speichern musst und willst. Du musst überlegen, in welcher Form diese Daten vorliegen und in welcher Art und Weise diese miteinander verknüpft sind.
Fangen wir im groben an (allgemeine Datenbankkenntnisse vorausgesetzt
Das erste was du brauchst ist ein Blatt Papier und ein Bleistift. Du kannst allerdings auch das Brainstormingtool deiner Wahl verwenden.
Dort hältst du fest, welche Daten du brauchst:
  • Darf der User einen Nickname angeben oder willst du seinen Vor- und Nachnamen haben?
  • Mit welcher Verschlüsselung speicherst du die Passwörter ab?
  • Brauchst du die Email des Spielers?
  • Welchen Planeten besitzt er?
  • Welche Koordinaten hat der Planet?
  • Welche Eigenschaften hat der Planet?
  • Welche Eigenschaften stehen dem Planeten zur Auswahl?
  • Wieviele Menschen hat er am Anfang?
  • Wie hoch sind seine aktuellen Ressourcen?
  • Wann war er das letzte Mal online?
  • Wieviele Nachrichten hat er bekommen?
  • Welcher Allianz gehört er an?
  • Mit welcher Allianz ist seine Verbündet/Verfeindet?
  • ...

Auch diese Liste solltest du mit deinem Freund durchgehen, denn er findet sicher auch dort noch etwas, dass du vergessen hast.
Wichtig sind auch Überlegungen zu Features, deren Priorität anfangs sehr gering ist:
  • Wie kannst du Multiaccounts verhindern?
  • Wie kannst du einen Urlaubsmodus realisieren?
  • Sind die Eigenschaften deiner Gebäude statisch oder dynamisch?
  • Willst du jederzeit das Spiel ändern können anhand von Datenbankeintragungen?
  • ...
Nach dieser Analyse solltest du in der Lage sein, eine Datenbank mit allen wichtigen und nötigen Tabellen sowie deren Beziehungen zu entwerfen.
Anfangs geht dies gut mit Brainstormingtools wie FreeMind, allerdings kann es noch nützlich werden, die Datenbank in Access oder einem vergleichbaren Datenbanktool einzutragen, damit die Beziehungen zwischen den Tabellen leicht und übersichtlich erstellt und nachvollzogen werden können.
Ebenfalls helfen solche Tools auch beim Erstellen von Datenbankabfragen, sollten sie denn mit korrekten Daten gefüttert worden sein.

Hast du die Datenbank fertig, kannst du dich an den Entwurf für deine Programmierung setzen.

-------------------------------------------------------------------
6. Programmierentwurf

Bevor du dich an dein Projekt, ransetzt musst du dir im Klaren sein, wie du programmieren willst.
Da OOP gerade in größeren Projekten einen wichtigen Vorteil bringt, solltest du dich generell für OOP entscheiden, da ein Projekt sich normalerweise immer weiterentwickelt und größer wird.
Du brauchst also am Anfang einen Plan deiner Features, wie du was aufbauen willst und was für Techniken du verwenden willst (z.B. Templatesystem).
Anhand dieses Plans kannst du entscheiden, welche Klassen dein Projekt braucht, welche Methoden es hat, welche Übergabewerte sie benötigen und was sie zurückliefern sollen.
Viele verlieren die Sicherheit des Projektes schnell aus den Augen, hier hast du die Möglichkeit gleich ein eigenes Sicherheitssystem zu entwickeln.
Vergiss also nicht die "Sicherheitsklasse" mit der du überprüfen kannst, ob Eingabe- und Übergabewerte korrekt sind.

Steht diese Klassenstruktur, so kann es weiter gehen.

-------------------------------------------------------------------
7. Programmierregeln

Von "Hungarian Notation" bis zum Einrücken gibt es viele wichtige Dinge, auf die man beim Programmieren nicht verzichten sollte.
Schreib dir selbst einen Regelkatalog, du wirst feststellen, es wird dir vieles erleichtern, denn du weißt bei mehreren Zehntausend Quellcodezeilen nicht mehr sofort, welche Methode was macht.
Die wichtigsten Regeln:-------------------------------------------------------------------
8. Projektstart

Wenn du all das hast, kannst du anfangen ein Gerüst für dein Projekt zu entwerfen.
Erstelle eine sinnvolle Ordnerstruktur, setze die Rechte für die Ordner korrekt, verhindere den unbefugten Aufruf von Dateien oder Ordnern.
Erstelle die ersten Klassen mit leerem Inhalt nach deiner Klassenplanung.

Nun kannst du anfangen zu Programmieren.

-------------------------------------------------------------------
9. Teammanagement

Solltest du dich dafür entschlossen haben, ein Team zu gründen um dieses Projekt zu realisieren, dann musst du auf ganz wichtige Regeln achten, die jeder deiner Teammitglieder einhalten muss.
  • Teamfähigkeit
    Wenn du jemanden in dein Team holst, schau welche Aufgaben ihm liegen. Ist er ein guter Vermittler und hat vielleicht sogar schon richtige Teamerfahrung gesammelt, so lass ihn vielleicht die Teamleitung übernehmen. Damit gewinnst du schonmal Respekt bei den anderen Teammitgliedern, da du ja nicht an deine Posten "festklebst".
    Desweiteren musst du dir überlegen, ob derjenige zu dir bzw deinem vielleicht schon bestehenden Team passt. Ist er einer, der Regeln und Abmachungen ignoriert, der schnell sein eigenes Ding macht und zu der "mir doch egal"-Haltung neigt, solltest du es dir mehrfach überlegen, ihn aufzunehmen.
  • Entscheidungsgewalt
    Eine der wichtigsten Fragen ist die Gewaltenteilung. Es gibt eigentlich nur 2 Möglichkeiten. Entweder du allein hast das Recht der Entscheidung und die anderen beraten dich, oder ihr arbeitet als Rat zusammen und stimmt eure Entscheidungen demokratisch nach Mehrheit ab.
    Mit der Konzentration der Entscheidungsgewalt auf deine Person, lastet nicht nur das Projekt auf deinen Schultern, sondern auch die Stimmung innerhalb deines Teams. Wenn du kein offenes Ohr hast und nicht bereit zu Diskussionen bist, hast du schon verloren, denn deine Teammitglieder könnten sich geprellt und unverstanden fühlen. Du musst also jederzeit sachlich bleiben und deine Entscheidungen gut begründen können.
    Der schlimmste Fall der demokratischen Variante wäre, dass sich zu einer Entscheidung 2 Lager entwickeln und diese sich so hineinsteigern, dass es keine friedliche Lösung mehr gibt. Dann ist vielleicht eine Spaltung des Projekts die beste Lösung. Wer weiß, vielleicht hast du dann sogar 2 gute Browsergames auf deinem Server?!
  • Meilensteine
    Meilensteine gehören nur bedingt zum Teammanagement. Allerdings kann es sich als extremer Vorteil erweisen, diese im Teammanagement zu benutzen.
    Ziel der Meilensteine ist es eigentlich, eine zeitliche Grobplanung des Projekts darzustellen. Nebeneffekt ist, dass die Leute unter Zeitdruck geraten und wissen, bis zu dem Tag, muss jenes fertig sein. Dieser Nebeneffekt kann sich sowohl positiv, als auch negativ auf dein Team auswirken. Manche Menschen können nur unter Druck richtig arbeiten, andere drohen daran zu zerbrechen.
    Ebenfalls können Probleme früher erkannt werden. Wenn Beispielsweise einer wegen privaten oder schulischen Problemen mit seiner Arbeit hinterherhängt, kann das frühzeitig erkannt werden und derjenige bekommt von einem anderen Unterstützung.
  • Koordination
    Die Koordination ist sehr wichtig. Solltet ihr nah beieinander wohnen, trefft euch mal auf ein Bier und unterhaltet euch. Das ist gut für die Stimmung und man kann schnell einen aktuellen Stand erfahren und den "Schlachtplan" aktualisieren und erneuern.
    Sollten eure Wohnorte nicht so nah beieinander liegen, lass dir gelegentlich ein paar Mails schicken, in dem du über den aktuellen Stand und die Befindlichkeiten des Mitglieds informiert wirst. So kannst du Ideen deiner Leute, deren Motivation am Projekt und natürlich auch den Fortschritt der Arbeiten im Auge behalten.
    Denke auch daran, dass du deine Mitglieder aufmuntern und motivieren musst. Wenn einer überfordert ist, schmeiß ihn nicht gleich raus. Weise ihm vielleicht ein Bereich zu, der weniger Zeitdruck hat, so dass er Zeit hat sich einzuarbeiten und fehlendes Wissen nachholen kann.
  • Groupware Wiki: Groupware
    Wenn das Projekt bzw das Team eine Größe von 3-5 Mann überschreitet, sollte über eine Groupwarelösung nachgedacht werden. Dort können Ideen, Anregungen und Kritiken hinterlegt werden. Eine Versionierung des Quelltextes ist je nach Groupware ebenfalls möglich, was die kompfortabilität der Zusammenarbeit immens erhöhen würde.

-------------------------------------------------------------------
10. Die letzten Tipps:

Wenn du feststellst, dass du trotz sorgfältiger Planung und Überlegung doch was übersehen hast, so übernimm die Verbesserung nicht nur im Programm, sondern auch in deinen Planungsdaten (FreeMind, Datenbank, Klassenplan). So kannst du jederzeit sicher sein, dass deine Planungsdaten korrekt und uptodate sind.

Wenn dir während der Programmierung auffällt, dass du in einer Methode was vergessen hast und du es just in dem Moment nicht beheben kannst, dann nutze ein Kommentar mit den 4 Buchstaben TODO ( // TODO: Aufgabenbeschreibung ), so kannst du schnell beim durchschauen oder durchsuchen des Quelltextes die Baustellen finden und nachträglich beheben. Komm nicht auf die Idee deinem Gedächtnis zu trauen, sonst wird das eine Suche nach der Nadel im Heuhaufen.

Beziehe am Anfang noch einen Kumpel als ersten Tester mit in dein Projekt ein. Sag ihm, was er testen soll und er wird für dich noch eine Menge Fehler finden. Außerdem ist das Sprechen über so ein Projekt bei einem Bier immer äußerst angenehm.

Geändert von Jann Hendrik (27.08.2007 um 20:43 Uhr).
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.11.2005, 01:42   Nach oben    #2
WarrenFaith
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.793
Standard

Es gab ein Update des Tutorials.
Changelog:
  • Punkt 4 wurde erweitert
  • Punkt 9 (Die letzten Tipps) wurde Punkt 10
  • Neuer Punkt 9 ist Teammanagement
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] PHPUnit oder testgetriebene Entwicklung mepeisen Tutorials 1 06.12.2007 10:56
Entwicklung des Flash Players 9 für Linux Ben Nachrichten 0 26.07.2006 16:22
Apples "neue" Entwicklung :) bob Plauderecke 12 16.02.2006 14:16
Steht die Entwicklung des SMF still? Ben Plauderecke 5 21.01.2006 18:33


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:01 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44