Regel 1: Komplexität reduzieren
Regel 2: Aufgabe rekursiv in kleinere Teilaufgaben zerlegen, bis es bewältigbare Stückchen sind.
Zitat
Original geschrieben von DADAMAN
Ich soll mittels PHP und MySQL eine "Versionsverwaltung" programmieren. Diese Software soll im Nachhinein aber noch um andere Prozesse erweiterbar sein.
Das Wort Prozess wird in der Umgangssprache für zahlreiche verschiedene Sachen verwendet, du solltest versuchen festzulegen was mit einem Prozeß in diesem Zusammenhang gemeint ist. Was genau willst du abbilden? Welche Teile sind davon betroffen? usw.
In erster Linie geht es vor allem darum einzuschränken. Man bekommt gerne mal Aufgaben wie ein möglichst flexibles System zu schreiben, das sich ohne Änderungen in jede erdenklichen Art und Weise anpassen lassen soll, das ist aber a) seltenst tatsächlich was benötigt wird und b) meistens viel zu teuer, aufwendig und komplex, als das es irgendjemand bezahlen oder benutzen möchte - und natürlich muß dann für die Änderungen die nachher tatsächlich benötigt werden, trotzdem noch der Code angepaßt werden.
Das wichtigste für dich dürfte sein, den richtigen Weg zu finden das zu kommunizieren. Das ist insbesondere dann schwierig, wenn es sich um (Entiwcklungs-)Unerfahrene Leute handelt.
Zitat
Dazu muß ich erklären das die Software einen Freigabeprozess durchläuft, der durch die Versionsverwaltung dargestellt wird. Dieser Prozess besteht aus 3 Schritten. Erstellen->Freigabe->Freigabe.
Dann brauchst du bis hierher im Prinzip nur ein einzelnes Meta-Datum zu dem Objekt was versioniert wird: den Status. Falls die Objekte um die es geht ebenfalls in der Datenbank gespeichert werden, kannst du die jeweilige Tabelle um ein Feld erweitern, und dort einen Quer-Verweis speichern zu einer zweiten Tabelle, welche die möglichen Zustände enthält. Wenn du Zustände nur in eine Richtung durchlaufen werden können sollen, dann kannst du zu den Zuständen ebenfalls noch weitere Informationen ablegen (bspw. alle möglichen Folgezustände).
Du erwähnst es zwar nicht explizit, aber vermutlich wirst du auch die Historie jeden Objekts speichern wollen, also wann er welche Zustandsänderungen durchgemacht hat.
Außerdem bleibt auch die Frage nach Benutzerverwaltung ungeklärt, darf jeder alles, oder gibt es verschiedene Berechtigungsgruppen?
Zitat
Bedingung für die spätere Erweiterbarkeit ist, dass der PHP Code von jeglichen Änderungen unangetastet bleibt um weitere Module einfacher einbinden zu können. Daraus folgt -> Der Prozess muß durch die Datenbank abgebildet werden.
Kommen später nur neue Zustände hinzu, oder soll es in jede Richtung änderbar bleiben? Welche "Module" sind gemeint? Wie gesagt, allgemein erweiterbar in jede denkbare Richtung ist eine unrealistische Aufgabenstellung.
Zitat
Wenn ich das System also zu einem späteren Zeitpunkt erweitern wollte, müsste ich den neuen Prozess mit X Schritten nur in die DB eintragen und schon wäre er implementiert und es müssten nur noch die benötigten Formulare dazu gestaltet werden.
Wie gesagt, mußt du ersteinmal eine klarere Vorstellung davon bekommen was ein "Prozeß" in deinem konkreten Fall ist. Sehr hilfreich sind auch Papierprototypen, in denen du einfach mal die Benutzermasken und deren Abfolge auf Papier bringst, und mögliche Abläufe simulierst.
Zitat
Die Frage ist nur, wie mache ich das? Habe mir jetzt schon 2 Tage den Kopf zerbrochen aber bin noch nicht zu einer Lösung gekommen.
Programmier doch einfach erst mal ein paar schnelle Prototypen die so gerade das nötigste machen, und versuch von dort konkret Schritt für Schritt jede "Dimension" in die es flexibel sein muß nach und nach einzupflegen, durch reines nachdenken, wirst du (insbesondere als Anfänger keine Lösung finden.