2010-06-06 8 views
10

Ich und mein Freund begannen als Partner zusammen zu arbeiten, wir haben uns entschieden, Kick-as * Website nach der Website zu machen. Wir haben die Ideen wie 100 von ihnen niedergeschrieben (ja, wir wählen am besten zuerst und leicht unter ihnen).Wie plane ich mein webbasiertes Projekt, bevor ich den Code starte?

Mein Freund macht das Layout-Design und Arrangieren von Dingen, und mein Teil ist Codierung und Server-Management.

Das kleine Problem, mit dem ich konfrontiert bin, ist mangelnde Erfahrung in der Planung eines Projekts. Was ich tue, ist, ich beginne den Code sofort und zusammen mit Code mache ich DB, wie wenn ich einen Tisch brauche, mache ich es.

Ich weiß, dass dies ein sehr schlechter Ansatz für ein mittelgroßes Projekt ist.

Hier bei stackoverflow habe ich viele erfahrene Programmierer gesehen. Müssen Sie viel von Ihnen lernen :).

So können Sie mir helfen, wie man ein Projekt plant und welche Kodierung Standard/Struktur/Frameworks verwendet werden soll (ich mache PHP-Code).

Vielen Dank im Voraus.

Antwort

5

Beginnen Sie mit der Festlegung des Umfangs. Schreiben Sie einen Absatz auf eine Seite und versuchen Sie, Ihre Website zu beschreiben. Ein Top-Down-Ansatz wäre es, über die Funktionalität nachzudenken, die Sie implementieren möchten, und sie zu verfeinern, indem Sie weitere Details hinzufügen.

Ein Top-Down-Ansatz (auch als schrittweises Design bekannt) ist im Wesentlichen die Zerlegung eines Systems, um Einblick in seine kompositorischen Subsysteme zu erhalten. In einem Top-Down-Ansatz wird zunächst ein Überblick über das System formuliert, wobei Subsysteme der ersten Ebene spezifiziert, aber nicht detailliert werden. Jedes Subsystem wird dann noch detaillierter verfeinert, manchmal in vielen zusätzlichen Subsystemebenen, bis die gesamte Spezifikation auf Basiselemente reduziert ist. Ein Top-Down-Modell wird oft mit Hilfe von "Black Boxes" spezifiziert, diese erleichtern die Manipulation. Allerdings können Black Boxes grundlegende Mechanismen nicht erklären oder detailliert genug sein, um das Modell realistisch zu validieren. http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design.

Es gibt jedoch viele andere Ansätze.

http://en.wikipedia.org/wiki/Software_project_management#Software_development_process

Wieder der wichtigste Schritt in der Lage sein, Ihre Idee in Worte zu fassen; Bevor Sie das adäquat tun können, würde ich nicht einmal in Erwägung ziehen, eine Zeile Code zu schreiben.

+0

yeh es sieht gut aus, ich google für einige Beispiele dieses Ansatzes jetzt. THX – Arshdeep

+0

Gern geschehen. Vergessen Sie nicht, die von Ihnen gewählte Antwort zu markieren, sobald Sie haben, was Sie gesucht haben. Ich bin mir sicher, dass es mehr Antworten auf Ihre Frage geben wird, aber ich würde auf die Einsichten anderer Programmierer warten. Es gibt viel mehr zu diesem Thema als meine Antwort –

2

Ein paar Gedanken von jemandem, der Abstraktionen liebt.

Finden Sie heraus, was Ihre Websites gemeinsam haben. Sobald Sie die wichtigsten Gemeinsamkeiten identifiziert haben, suchen Sie nach Frameworks oder Bibliotheken, die möglichst viele von ihnen behandeln (abgesehen von der Erfüllung anderer Kriterien), wie z. B. den DB-Code.

Für die allgemeinen Funktionen, die Sie keinen gebrauchsfertigen Code finden (sie existieren immer in angepassten Websites) haben Sie eine Chance, eine gemeinsame Bibliothek zu schreiben, die auf Ihren Websites selbst verwendet werden soll. Dies könnte eine Vorlage für Ihr Markup, eine JavaScript-Bibliothek oder eine wiederverwendbare serverseitige Komponente oder alles zusammen sein.

Basierend auf Ihrer Beschreibung klingt es so, als würden Sie große Freiheit im kreativen Prozess genießen (im Gegensatz zu einem Anforderungs-Spec, das Ihnen ausgehändigt wurde und danach gefragt wurde, es zu implementieren).Ich würde sagen, überlege auch nicht, "einfach nur mit dem Code zu beginnen" ist eine Menge Spaß und nicht schlecht. Erfahrung wird dein bester Freund sein, und bis du die Webseite # 100 erreichst, wirst du eine Menge davon haben. Wenn Sie Ihre zweite Website erstellen, helfen Ihnen Ihre Erfahrungen mit der ersten, einige der Fehler, die Sie gemacht haben, zu vermeiden, und Sie werden neue Ähnlichkeiten entdecken, die Sie in der Planungsphase nicht vorausgesehen haben. Stellen Sie sicher, dass Sie sich die Zeit nehmen, den allgemeinen Code in eine einzelne Bibliothek verschieben und zurückgehen und Ihre erste Website bearbeiten, um sie zu verwenden. Tun Sie dies ein paar Mal und Sie werden Lektionen gelernt haben, die viel wert sind.

+0

@Lauri Lehtinen -: O. Es hört sich so an, als wüsstest du genau, was ich durchmache. Ja, ich dachte auch daran, nicht an einen bestimmten Rahmen zu hängen (klingt lahm: P). Und das Erstellen eines eigenen Satzes von PHP/JS ist Gold Idee thx dafür. Ich sah deine Projekte filmgator, pdfunloack sie sind wirklich cool.Leider kann ich Ihre E-Mail nicht finden, wir sollten uns freuen :) – Arshdeep

+0

@Arsheep Sie können immer noch ein Framework wie Symfony verwenden. Die Verwendung eines vorhandenen Frameworks sollte Sie nicht davon abhalten, Komponenten zu entwickeln, die Sie in Ihren Projekten verwenden können. –

+0

@Jan Kuboschek - Ja, Sie haben Recht. ATM Ich benutze Codeigniter und es sieht gut aus. Was denkst du über Codeigniter? – Arshdeep

5

Bezüglich Codierung Standard/Struktur/Frameworks empfehle ich zend framework coding standard, MVC structure und Zend Framework.

Eine kurze Anleitung für eine MVC Architektur. Die Idee ist, dass Sie sich an Ideen erinnern können (während Ihr Gehirn Code dämpft) und Dokumente für zukünftige Programmierer haben.

  • Entwerfen Sie die Datenbank. Erstellen Sie ein ER-Diagramm. Legen Sie es in ein Dokument.
    Beschreiben Sie kurz die Gründe hinter dem Design für die wichtigen Probleme (warum wählen Sie eine polymorphe Beziehung, warum verwenden Sie diese Ansicht, was wählt Sie erwarten, dass mehr Trickey etc. sind). Dies wird sich ändern, wenn Sie programmieren (und Sie können nichts tun). Dokumentieren Sie die Änderungen. Um mit den Änderungen fertig zu werden, verwenden Sie ein Versionsverwaltungssystem für die Datenbank wie rails migrations.

  • Gestalten Sie die Struktur Ihrer Website (Abschnitte, Seiten, Links, Seitenflüsse usw.). Dokumentieren Sie es. (wie: "die Website 2 Abschnitte, dieser Abschnitt besteht aus ..." usw.)
    Basierend darauf erstellen Sie ein Dokument, das Ihre Controller und Ansichten beschreibt. ("ein Controller für Artikel, mit einer Listenansicht und Artikelansicht, bearbeiten und erstellen Sie Ansichten, aber nur für Administratoren" usw.).
    Beschreiben Sie, wie Sie die Authentifizierung und Autorisierung erzwingen (auf Controller- und Ansichtsebene). Wer darf wo?
    Beschreiben Sie, wie Sie sich vor den wichtigsten Web-Attacken (xss, csrf) wo erforderlich schützen. (Beispiel: "ich entkomme all meinen View-Variablen mit htmlentities für XSS-Schutz und ...")

  • Entwerfen Sie Ihre Modelle und Seite Funktionalität (Senden von E-Mails, Hintergrundjobs usw.). Dies wird der Großteil des Codes sein. Dokumentiere jedes und beschreibe die Hauptprobleme (zum Beispiel wie Zeitzonen gehandhabt werden sollen, wie dieses bestimmte Modell mit dem Währungsdienst verbunden werden soll, wie dieses Modell eine Crone Datei parsen und manipulieren soll, welchen Algorithmus du verwenden sollst, um Top 5 zu entscheiden Artikel, abhängig von Ihrer App.) Beschreiben Sie, welche Bibliotheken Sie verwenden, wie und zu welchen Zwecken (Beispiel: "Wir verwenden curl um SO zu verwerfen und rss feed zu machen")
    Beschreiben Sie, wie Sie sich gegen die wichtigsten Web-Angriffe schützen wo erforderlich (sql-injection, xss).

Wie Sie programmieren, ändern sich die Dinge. Ihr Wissen über die diskreten Arbeiten Ihres Systems entwickelt sich und Sie beginnen, das Design basierend auf der neu gefundenen Erleuchtung zu verbessern. Dokumentiere deine Änderungen.

+0

Okay, sehr ernstes Zeug, und sehr gute Infos auch. Ich benutze MVC ATM tatsächlich, indem ich Codeigniter Rahmen benutze. Aber jede Sache zu dokumentieren erhöht die Zeit des Bauprojektes zu viel, denke ich. Das obige ist für ein Giant-Projekt. Ich denke, wenn wir die Dokumentation auf die Hälfte reduzieren, wird es für mittelgroße Projekte cool. – Arshdeep