1.7 Technische Details - iqb-berlin/iqb-berlin.github.io GitHub Wiki

Programmierung allgemein

Wir programmieren die Frontends und die Verona-Module in Angular. Dieses Framework benutzt TypeScript als Sprache und erzeugt sehr effizienten JavaScript-Code. Für das Styling setzen wir die Bibliotheken Angular Material und Flex-Layout ein. Im Backend nutzen wir php mit der Erweiterung Slim für das Routing sowie NestJS, das node.js erweitert und womit man TypeScript auf eine Angular-ähnliche Art nutzen kann. Als Datenbankbetriebssysteme kommen MySQL und PostgreSQL zum Einsatz.

Die Prototypen der Webanwendungen entstehen zunächst ohne Unit- und E2E-Tests. Im Laufe der Bestätigung von Architektur- und Funktionsentscheidungen kommen Tests hinzu, die dann automatisch ausgeführt werden und so eine hohe Codequalität unterstützen. Wir setzen die Grundsätze des Clean Code um und stellen dies über Pull-Requests (Peer-Reviews) und automatische Prüfungen (Linting) sicher.

Verona-Module

Programmierungen, die die Darstellung einzelner Aufgaben betreffen, sind nicht fester Bestandteil der Installationen. Auch das Editieren eines speziellen Aufgabentyps ist in separate Programm-Module ausgelagert. Diese Module müssen nach der Installation über das Verwaltungsportal in das System eingespielt werden. Ein solches Plug-In-Verfahren hat den großen Vorteil, dass Änderungen an den Programmierungen nicht über die Serveradministration eingespielt werden müssen, sondern die inhaltlich Verantwortlichen jederzeit diese Programmteile hinzufügen oder ersetzen können.

Voraussetzung für dieses Modul-System ist die Definition einer Schnittstelle, die wir in Zusammenhang mit dem computerbasierten Testen "Verona" nennen. Spezifikationen finden Sie hier (englisch).

Installation und Update

Die Anwendungen des IQB sind so programmiert und veröffentlicht, dass es möglichst einfach ist, sie zu installieren, anzupassen und ggf. neue Versionen einzuspielen. Wir veröffentlichen sog. Docker-Setups. Ein Server muss nur die Virtualisierungslösung Docker unterstützen. Durch die Installation werden dann automatisch die einzelnen Systembausteine (Frontend, Datenbank, Backend, ggf. zweites Backend, Routing über Traefik) installiert. Die Installationsanleitung (z. B. für das Testcenter hier) gibt detaillierte Hinweise für die Steuerung der Installation. Erste Schritte nach der Installation (Anlegen des System-Admin, Anpassung Logo, Farben, Einführungstexte usw.) sind in diesem Wiki nachzulesen.

Besonderen Aufwand betreiben wir, um bei einem Update der Software die vorherigen Daten zu erhalten bzw. anzupassen (Migration).

Datensicherheit

Unsere Software ist nur ein Teil der Gesamtinstallation. Beispielsweise liegen die Firewall und der TP-Verbindungsaufbau über Zertifikate (https) außerhalb unseres Systems. Aber natürlich gibt es viele Aspekte der Datensicherheit, die in unserer Verantwortung liegen. Wir begegnen diesem Thema mit folgenden Maßnahmen:

  • Das System zur Codeverwaltung "GitHub" löst automatisch einen Alarm aus, wenn eine Softwarekomponente, die wir verwenden, als Risiko eingestuft wurde. Dies passiert regelmäßig und muss von uns bearbeitet werden, ehe eine neue Veröffentlichung gestattet ist.
  • Vor einer Veröffentlichung wird automatisch geprüft, ob die zur Installation freigegebenen Pakete bedenkliche Komponenten enthalten. Diese sog. Scans bzw. Audits zeigen z. B. an, ob die Apache-Version, die wir der Software beilegen, veraltet ist.
  • Wir beauftragen regelmäßig Penetrationstests. Außerdem geben wir Erkenntnisse aus Penetrationstests weiter, die andere Einrichtungen für die Prüfung unserer Software beauftragt haben.
  • Anfragen und Hinweise zur Datensicherheit können über eine zentrale E-Mail-Adresse an uns geschickt werden, die wir zeitnah beantworten.
  • Alle, die an aktuellen Informationen auch zu Fragen der Datensicherheit interessiert sind, können einen Newsletter abonnieren.

⚠️ **GitHub.com Fallback** ⚠️