Frameworks sind vorgefertigte Gerüste für die Softwareentwicklung. Je nach gewählter Programmiersprache gibt es diverse Frameworks, welche als Grundlage einer Applikation eingesetzt werden. Um die Entwicklung sicher und effizient zu gestalten, werden solche Frameworks immer öfter eingesetzt. Die Geschäftslogik wird auf die Frameworks aufgebaut. Auf diese Weise zu entwickeln bringt einige Vor- und Nachteilen mit sich, von welchen ich nachfolgend einige aufführen möchte.
Nachteile
Der erste und direkt bemerkbare Nachteil von Frameworks ist die initiale Lernkurve, die beim Einstieg in das Framework anfällt. Vor allem Junior-Entwickler, welche zum ersten Mal ein Framework kennenlernen möchten, können schnell von der Fülle an Konzepten und Funktionen überfordert werden. Diese Lernkurve kann durch eine durchdachte Staffelung der Inhalte und durch ein sorgfältiges Peer-Coaching einfacher gestaltet werden. Nicht jeder Entwickler muss am Anfang alle Funktionen eines Frameworks kennen und einsetzten können, um den Einstieg in die Entwicklung mit Frameworks zu schaffen.
Ein weiterer Nachteil ist, dass es immer wieder vorkommt, dass ein Framework oder eine Bibliothek komplett aufgegeben wird (ein Beispiel). Die Bibliothek wird durch eine andere überholt, die Entwickler haben keine Zeit, um sie weiter zu pflegen oder verlieren schlicht und ergreifend das Interesse daran an dem Framework oder der Bibliothek weiterzuarbeiten. Je nach Umfang der Bibliothek ist ein gewisser «Lock-in» entstanden, wobei Applikationen, welche eine solche Bibliothek einsetzen, eine Abhängigkeit aufweisen. Für diese Applikationen müssen nun alternative Bibliotheken gefunden und eingepflegt werden. Anderenfalls muss der Entwickler die Bibliothek selbst weiter pflegen, um die diese auf einem aktuellen Stand zu halten.
Vorteile
Je nach Wahl des Frameworks, bringen diese einen grösseren oder kleineren Funktionsumfang mit sich. Probleme, für welche der Entwickler sonst selbst eine Lösung erarbeiten müsste, werden durch das Beiziehen einer Bibliothek oder die Aktivierung einer Funktion des Frameworks gelöst. Der Entwickler muss nicht ständig das Rad neu erfinden. Ein Beispiel hierfür ist die Formularkomponente von Symfony. Der Entwickler muss lediglich beschreiben, welche Felder ein Formular hat und wo diese angezeigt werden sollen. Nun kann der Entwickler mit wenig Code auf die übermittelten Daten zugreifen, diese validieren und weiterverarbeiten. Der Aufbau sowie die Logik des Formulars ist von der Controller-Logik getrennt und für alle Entwickler verständlich. Alle Formulare können so auf die gleiche Weise aufgebaut und verarbeitet werden, wodurch der Code verständlicher und wartbarer wird.
Eine umfangreiche Dokumentation umschreibt alle Funktionalitäten des Framework. Eine gut strukturierte Dokumentation erleichtert den Einstieg und federt die Lernkurve welche zuvor als Nachteil aufgeführt wurde etwas ab. Neuen wie auch fortgeschrittenen Entwicklern dient die Dokumentation als Nachschlagewerk während der Entwicklung.
Ein weiteres Beispiel aus dem Symfony-Ökosystem ist das Security-Bundle. Diese Bibliothek liefert ein umfangreiches Sicherheitssystem mit welchem die gängigsten Varianten der Authentifizierung wie beispielsweise API-Tokens oder Login-Formular und Sessions gelöst werden können. Mittels Access-Control kann der Zugriff auf gewisse Bereiche der Applikation eingeschränkt werden, so dass die Anwender beispielsweise nur mit der entsprechenden Rolle auf die Konfigurationsseiten der Applikation zugreifen können. Bei einfachen Beispielen kann der Entwickler diese Komponenten einfach einbinden und konfigurieren und kann so Authentifizierung und Autorisierung ohne eine einzelne Zeile Code lösen.
Was Frameworks nicht machen
Die hier erwähnten Vorteile machen die Arbeit eines Softwareentwicklers um einiges einfacher. Bei der Entwicklung gibt es allerdings Punkte, die ein solches Framework nicht abnehmen kann, welche sich auf die Qualität der Software stark auswirken können.
Ein Beispiel hierfür sind sogenannte Enummerierunglücken. Die entstehen dann, wenn ein Anwender auf andere Ressourcen zugegriffen kann, beispielsweise dadurch, dass die Rechnungsnummern in der URL hoch oder runter gezählt werden. Diese Lücken beeinflussen die Vertraulichkeit der Applikation und können vermieden werden, indem Identifikatoren nicht durch den Anwender erraten werden können, beim Zugriff die Berechtigung des Anwenders geprüft wird (ist der aktuelle Benutzer der Kunde auf der Rechnung) oder beide Punkte adressiert werden. Ob diese Lücken auftreten, liegt beim Entwickler und wie er das Framework einsetzt.
