Ich habe mich entschlossen, ein PHP-Framework (mit MVC), an dem ich seit Jahren arbeite, komplett neu zu schreiben. Bisher bestand mein Problem darin, dass ich einfach Ideen einbrachte, sie als Tickets in Trac einbrachte und später hinzufügte - ohne mich um das Design des Frameworks selbst zu kümmern. Mit der Zeit hat dies einige Probleme verursacht, und ich denke, ein Umschreiben wäre hilfreich. Ich bin mir jedoch nicht sicher, wo ich mit der Planung beginnen soll. Ich weiß, dass ich Trac nicht verwenden möchte, und ich weiß, dass ich mehr brauche als nur Tickets und Meilensteine - aber was brauche ich noch?
Ich möchte dieses Umschreiben wirklich gründlich planen, ich möchte jedes Feature, das ich möchte, detailliert beschreiben, wo es hingeht und wie es sich mit jedem anderen Teil verbindet - aber ich habe keine Erfahrung mit dieser Ebene der Planung. Irgendein Rat? Irgendwelche Programme, die helfen werden? Ich habe es satt, Trac, ich habe es nie wirklich gemocht.
Ich weiß, dass ich ein Designdokument benötige, aber gibt es ein bestimmtes Layout, dem ich folgen sollte? Ich brauche auch Bug-Tracking, Tickets, Meilensteine usw., aber hinter Trac weiß ich auch nicht, was dafür gut ist. Ich bin mir sicher, dass ich noch mehr benötige, aber ich habe keine Ahnung, weshalb ich für jede Hilfe dankbar bin.
Antworten:
Nachfolgend einige Dinge, die ich bei der Entwicklung eines großen Projekts mache:
1 - Ich verwende ein Planungstool wie OpenProj und füge alle Funktionen hinzu, die ich als Aufgabe aufnehmen möchte. Zum Beispiel arbeite ich gerade an einer Funktion, die es meinen Benutzern ermöglicht, sich automatisch anzumelden, nachdem sie sich auf meiner Site registriert haben. Ich habe eine Aufgabe in meinem Plan wie "Feature-Autologin".
2 - Ich bin ein Ein-Mann-Entwickler, daher wechsle ich normalerweise von einem Feature zum nächsten. Mein Plan ist so angelegt, dass alle Funktionen nacheinander ausgeführt werden. Ich investiere nicht zu viel Zeit, um abzuschätzen, wie viel Zeit ich für jede Funktion benötige. Normalerweise denke ich, dass jeder einen Tag braucht, um sich zu entwickeln. Wenn man mehr braucht, aktualisiere ich einfach den Plan und alle zukünftigen Aufgaben verschieben sich entsprechend.
3 - Ich benutze Git ausgiebig. Jedes Feature ist eine Verzweigung. Sobald ich jedes Feature abgeschlossen habe, füge ich es wieder in den Entwicklungszweig ein und erstelle einen neuen Zweig für das nächste Feature.
4 - Wenn ich einen Fehler in der Software finde, erstelle ich einen kleinen Git-Zweig, um ihn zu beheben und wieder zusammenzuführen, sobald er behoben ist. Ich stelle sicher, dass ich sowohl den Entwicklungszweig als auch meinen aktuellen Feature-Zweig, an dem ich arbeite, aktualisiere. Übrigens wird der Fehler zu einer weiteren Aufgabe in meinem OpenProj-Plan. So etwas wie "Bug-Falsch-Adresse". Und wenn ich es einfüge, werden alle anderen Funktionen wieder in die Timeline verschoben.
5 - Wenn ich während der Entwicklung über ein neues Feature nachdenke, füge ich es einfach in den Plan ein, wo es meiner Meinung nach am besten passt, und passe die Zeitleiste erneut an.
Ich hoffe das hilft. Es hört sich so an, als hätten Sie ein aufregendes Projekt vor sich. Viel Glück!
quelle
Wenn Sie eine vollständige Neuschreibung vornehmen möchten, warum sollten Sie nicht auch darüber nachdenken, ob Sie überhaupt PHP verwenden sollten? Eine Änderung / Aufrüstung der Technologie könnte der Katalysator sein, den Sie zur Verbesserung Ihres Designs / Ihrer Skalierbarkeit / Wartbarkeit usw. benötigen.
quelle
Ich würde vorschlagen, stattdessen stark umzugestalten
Das Problem, das Sie hier erwarten:
ist eine sehr schwierige Frage. Es ist im Grunde das Waterfall-Modell mit all seiner Hässlichkeit. Hier finden Sie einige anekdotische Beweise für die Probleme mit dem 'Great Rewrite'-Ansatz, die zum Schluss kommen: Sie werden die Probleme wahrscheinlich nicht richtig antizipieren und am Ende ein weiteres Durcheinander haben, das Sie von Grund auf neu schreiben möchten. Nicht weil du schlecht bist, sondern weil es unmöglich ist, etwas Großes auf einen Schlag richtig zu machen.
Wenn Sie stattdessen refactor starten, Sie können Einzelkarten schreiben und Sie können mit dem Projekt fortzufahren. Der Trick dabei ist, kleinere Änderungen zu identifizieren, die zu einem insgesamt besseren Design führen.
Zum Beispiel: Sie erwähnen, Sie haben keine MVC, aber Sie möchten. Als ersten Schritt können Sie eine einzelne PHP-Datei nehmen und diese unter der Annahme der üblichen Verwechslungsgefahr sortieren, so dass Sie oben alle DB-Zugriffe, Berechnungen usw. haben. erste Tickets für jede Datei). Als zweiten Schritt können Sie all diese Template-Teile in Funktionen einkapseln, die ihre Parameter übergeben. (viel mehr Tickets). Erledigt? Herzlichen Glückwunsch, Sie haben Ihr V in MVC beendet.
quelle
Erwägen Sie die Verwendung eines vorhandenen Frameworks. CakePHP, Zend Framework, CodeIgniter und Symfony sind die für PHP bekannten. Wenn sie die Bedürfnisse von Hunderten oder Tausenden von Benutzern befriedigen, können sie sicher Ihre Bedürfnisse befriedigen.
Wenn Sie bereit sind, etwas anderes als PHP zu lernen / zu verwenden - Django (Python) und Rails (Ruby) sind so ziemlich die führenden Frameworks für herkömmliche Webanwendungen.
Das ist natürlich so, es sei denn, Sie möchten Erfahrung in der Erstellung von Frameworks haben - was, wie ich hinzufügen könnte, auf dem Markt viel weniger von Wert ist (anstatt zu wissen, wie man vorhandene, unterstützte Frameworks gut nutzt).
quelle
Was ich gerne benutze, ist Redmine als Terminplaner. Die IT-Abteilung handhabt jeden dieser Punkte sehr gut und ist (meiner Meinung nach) viel benutzerfreundlicher als trac.
In Bezug auf das erneute Schreiben ist es wichtig, zunächst zu verstehen, dass Sie niemals alle Features / neuen Erweiterungen antizipieren werden, um zu versuchen, Ihre Anwendung so flexibel wie möglich zu gestalten. Die Verwendung vieler MVC-Frameworks, die PHP bietet, kann dabei helfen, dies zu nutzen. Einige dieser Frameworks lochen Sie jedoch auch, wenn Ihre DB-Architektur von Anfang an nicht flexibel ist (Cake). Ich würde mich wirklich darauf konzentrieren, die Dinge so abstrakt wie möglich zu gestalten, und wenn Sie etwas Fest codiertes sehen, fragen Sie sich, wofür es ist und warum es nicht in einer Datenbank gespeichert werden kann.
Wirklich DB-Design hilft bei der Beantwortung so vieler Fragen und Probleme. Hier sehe ich die Hauptbedeutung der Interaktion Ihrer Anwendung. Daher würde ich empfehlen, die meiste Zeit damit zu verbringen, zu analysieren, wie die Daten gespeichert werden und wie Ihre Datenbank strukturiert ist.
quelle
Als Issue-Tracking-Software ist JIRA großartig, aber sehr teuer. Ein weiteres gutes Tool, das ich benutze, ist Eventum. Es ist kostenlos.
Das Wichtigste ist jedoch, eine gute Vorstellung davon zu haben, was Sie brauchen. Zuerst müssen Sie die Anforderungen für Ihre Bewerbung zusammenstellen, um ein umfassendes Gefühl für das zu haben, was Sie möchten und so vollständig wie möglich zu sein.
Darauf aufbauend erstellen Sie Softwareanforderungen, einen eher technischen Ansatz, in dem Sie die Module beschreiben, die Teil Ihrer Anwendung sein werden, ihre Funktionen und Unterfunktionen, Objekte, Klassen, ihre Schnittstellen und so ziemlich alles.
Wenn Sie wissen, dass Sie die Komplexität der Anwendung und die erforderlichen Codezeilen genau kennen, können Sie eine Schätzung vornehmen und einen Zeitplan erstellen. Es ist wichtig, einen Zeitplan und eine Frist zu haben, andernfalls werden Sie ihn möglicherweise nie zu Ende bringen.
Ich hoffe es hilft
quelle