# Pflichtenheft – Webframework in PHP ## 1. Einleitung ### 1.1 Projektbeschreibung Ziel des Projekts ist die Entwicklung eines kleinen Webframeworks in PHP. Auf diesem Framework soll ein einfacher Blog mit Benutzeranmeldung implementiert werden. ### 1.2 Zielgruppe Die Zielgruppe sind Entwickler, die ein leichtgewichtiges Framework für kleine Webanwendungen suchen, sowie Endbenutzer, die den Blog nutzen möchten. ## 2. Anforderungen ### 2.1 Funktionale Anforderungen #### 2.1.1 Webframework - **Routing:** Implementierung eines einfachen Routingsystems, das URL-Anfragen an die entsprechenden Controller weiterleitet. - **MVC-Architektur:** Das Framework soll nach dem Model-View-Controller (MVC) Muster aufgebaut sein. - **Datenbankanbindung:** Bereitstellung einer einfachen Datenbankanbindung (mit PDO). - **Template-System:** Ein einfaches Template-System zur Trennung von Logik und Präsentation. #### 2.1.2 Blog - **Benutzeranmeldung:** Implementierung eines Login-Systems für registrierte Benutzer. - **Beitragsverwaltung:** Benutzer sollen Blogbeiträge erstellen, bearbeiten und löschen können. - **Responsive Design:** Der Blog soll auf verschiedenen Geräten (Desktop, Tablet, Smartphone) gut aussehen. ### 2.2 Nicht-funktionale Anforderungen - **Sicherheit:** Implementierung von Sicherheitsmaßnahmen (z.B. Passwort-Hashing, CSRF-Schutz). - **Performance:** Das Framework und der Blog sollen schnell und ressourcenschonend sein. - **Dokumentation:** Ausführliche Dokumentation des Frameworks und des Blogs. ## 3. Technische Anforderungen ### 3.1 Programmiersprache - PHP (Version 8.0 oder höher) ### 3.2 Datenbank - MySQL ### 3.3 Webserver - Apache oder Nginx ### 3.4 Entwicklungsumgebung - IDE (Visual Studio Code) - Composer für die Paketverwaltung ## 4. Zeitplan ### 4.1 Meilensteine - **Meilenstein 1:** Entwurf des Frameworks (2 Wochen) - **Meilenstein 2:** Implementierung der Kernfunktionen des Frameworks (4 Wochen) - **Meilenstein 3:** Entwicklung des Blog-Systems (4 Wochen) - **Meilenstein 4:** Testen und Dokumentation (2 Wochen) ## 5. Abnahmebedingungen - Das Projekt gilt als erfolgreich abgeschlossen, wenn alle funktionalen und nicht-funktionalen Anforderungen erfüllt sind und die Software in einer Testumgebung fehlerfrei läuft. ## 6. Projekt-Struktur-Plan 1. **Projektmanagement** - Planung und Organisation - Meilenstein- und Zeitplan - Dokumentation 2. **Framework-Entwicklung** - Routing-System - MVC-Architektur (Model, View, Controller) - Datenbankanbindung (PDO) - Template-System 3. **Blog-Entwicklung** - Benutzeranmeldung (Login/Logout) - Beitragsverwaltung (Erstellen, Bearbeiten, Löschen) - Responsive Design 4. **Sicherheit** - Passwort-Hashing - CSRF-Schutz - Validierung und Fehlerbehandlung 5. **Testen** - Funktionstests für Blog-Funktionen - Manuelle Tests (Usability, Responsivität) 6. **Deployment** - Einrichtung der Serverumgebung - Installation und Konfiguration - Dokumentation für Installation und Nutzung 7. **Abschluss** - Abnahme durch Auftraggeber - Abschlussdokumentation - Projektübergabe ## 7. Anhang - Glossar der verwendeten Begriffe - Referenzen zu verwendeten Technologien und Frameworks ## Glossar der verwendeten Begriffe - **Routing:** Mechanismus zur Zuordnung von URLs zu bestimmten Funktionen oder Controllern in einer Webanwendung. - **MVC (Model-View-Controller):** Architekturmuster zur Trennung von Datenmodell, Benutzeroberfläche und Steuerungslogik. - **PDO (PHP Data Objects):** Erweiterung für PHP zur objektorientierten Datenbankanbindung. - **Template-System:** System zur Trennung von Anwendungslogik und Darstellung (HTML). - **CSRF (Cross-Site Request Forgery):** Angriffsmethode, bei der unerwünschte Aktionen im Namen eines angemeldeten Nutzers ausgeführt werden. - **Passwort-Hashing:** Verfahren zur sicheren Speicherung von Passwörtern durch Umwandlung in einen nicht rückrechenbaren Wert. - **Composer:** Paketverwaltungstool für PHP. - **Responsive Design:** Gestaltung von Webseiten, die sich an verschiedene Bildschirmgrößen und Geräte anpasst. ## Referenzen zu verwendeten Technologien und Frameworks - [PHP](https://www.php.net/) – Programmiersprache für die Serverlogik - [MySQL](https://www.mysql.com/) – Relationale Datenbank - [PDO (PHP Data Objects)](https://www.php.net/manual/de/book.pdo.php) – Datenbankzugriff in PHP - [Composer](https://getcomposer.org/) – Paketverwaltung für PHP - [Apache HTTP Server](https://httpd.apache.org/) – Webserver - [Nginx](https://nginx.org/) – Webserver - [Visual Studio Code](https://code.visualstudio.com/) – Entwicklungsumgebung - [Bootstrap](https://getbootstrap.com/) – Framework für responsives Design