PHP: Softwareentwicklung mit Plan

20210811 Michi Open Source

PHP ist eine starke Basis für die Entwicklung von Web-Applikationen. Im Zusammenspiel mit diversen Open-Source-Projekten bietet sich eine planbare und zukunftssichere Entwicklungsgrundlage. Damit lässt sich der Software Lifecycle mit Fokus auf Qualität und Sicherheit transparent planen.

Eine komplexe Web-Applikation kann nicht mit purem PHP allein entwickelt werden. Zu viele Anforderungen müssen von der Applikation abgedeckt werden und dafür braucht es eine solide Softwarebasis. PHP hat eine sehr starke Open Source Community. Open-Source-Software Komponenten werden von den unterschiedlichsten Personen gemeinsam erarbeitet und weiterentwickelt. Unzählige Entwickler*innen verwenden diese Komponenten in ihren Projekten mit unterschiedlichsten Anforderungen und Umfeldern. Durch diese vielseitige Nutzung wird die Software in verschiedenen Szenarien getestet und Fehler werden schnell behoben. Auch führt das zu besseren Programm-Strukturen und guter Dokumentation.

Als Framework mit vielen Komponenten hat sich Symfony bewährt und bietet eine solide Basis zur Umsetzung individueller und komplexer Projekte im Web-Umfeld. Mit klaren Vorgaben, einer leistungsstarken Komponenten-Bibliothek und einer grossen Gemeinschaft an Entwickler*innen und Entwicklern ergibt sich ein starkes Fundament für ihre Applikation im Internet. Symfony verbessert kontinuierlich die Developer Experience: Das Entwickeln mit dem Framework wird stetig vereinfacht und verbessert. Die Software profitiert dadurch von besserer Lesbarkeit und Wartbarkeit und ist weniger anfällig für Fehler.

Transparente Verwaltung von Softwarekomponenten und Versionen

PHP und Symfony (und viele andere grosse Softwareprojekte) haben eine klare Roadmap und setzen auf semantische Versionierung. Bei der semantischen Versionierung setzt sich die Versionsnummer aus MAJOR.MINOR.PATCH zusammen (also z.B. 1.2.3) und die einzelnen Elemente werden folgendermassen erhöht:

  • MAJOR wird erhöht, wenn die Änderungen inkompatibel mit den bisherigen Funktionen sind
  • MINOR wird erhöht, wenn neue Funktionalitäten dazukommen, welche kompatibel zur bisherigen API sind
  • PATCH wird erhöht, wenn die Änderungen nur API-kompatible Bugfixes umfassen

Dadurch ist das updaten von Patch-Versionen relativ sicher und sollte zu keinen Fehlern der Applikation führen. Updates von Patch-Versionen sollten regelmässig durchgeführt werden, da damit häufig Sicherheitsprobleme behoben werden.

Regelmässige Zyklen der Major- und Minor-Versionen und eine klar definierte Zeitspanne, wie lange Patch Releases veröffentlicht werden, helfen bei der Planung des eigenen Software Lifecyle. Bereits zu Beginn eines neuen Softwareprojektes können mögliche Zeitpunkte für grössere Updates der Software definiert und diese Updates auch in der Budgetplanung berücksichtigt werden.

Da das Updaten einer Major-Version meistens relativ viel Aufwand bedeutet, hat Symfony Versionen mit extra langem Support definiert, den sogenannten Long Term Support (LTS). Wenn nur jeweils ein Sprung von LTS- zu LTS-Version eingeplant wird, können die Anzahl Updates reduziert werden, aber Sicherheitsupdates trotzdem immer gewährleistet werden.

Testbarkeit sicherstellen, damit Aktualisierungen von Softwarekomponenten nicht zu Fehlern führen

Automatisierte Tests sind bei der Entwicklung von PHP unerlässlich. Durch ein geeignetes Set an programmatischen Tests kann ein Update von Softwarekomponenten oder auch die Erweiterung der Software kontrolliert durchgeführt werden und Probleme werden sehr schnell entdeckt. DieTestbarkeit der Software wird erhöht, wenn abstrakte Softwarekomponenten eingesetzt werden. Dazu gehören z.B. Datenbank-Abstraktionen oder Schnittstellen-Adaptoren. Dadurch können für die Tests Komponenten ausgetauscht werden oder ein spezielles Verhalten annehmen und auch Fehlerfälle können so bewusst provoziert werden. Ebenfalls sollten regelmässig statische Codeanalysen durchgeführt werden, damit möglichst schnell syntaktische und logische Fehler behoben werden können und der geschriebene Code möglichst lesbar und wartbar bleibt.

Durch den bewussten Einsatz von Software-Komponenten mit einer guten Entwickler*innen-Community und klarer Roadmap und dem geeigneten Einsatz von automatisierten Tests wird auch der Lebenszyklus der eigenen Software planbar.