[Seite 1]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Standards zur Softwareentwicklung
Stand: 01.10.2020
Seite 1/35
[Seite 2]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Inhaltsverzeichnis
1 Ziel ................................................................................................................................ 3 2 Geltungsbereich ............................................................................................................ 4 3 Begriffe .......................................................................................................................... 5 4 Projektorganisation...................................................................................................... 11 5 Systemlandschaft ........................................................................................................ 12
5.1 Kodierung und Zeichensätze ..............................................................................12 5.2 Clients und Barrierefreiheit .................................................................................12 5.3 Applikationsserver & Frameworks ......................................................................13 5.4 Relationale Datenbanken ...................................................................................14 5.5 Identitätsmanagement und Zugriffsrechte ..........................................................17
5.5.1 Authentifizierung ................................................................................... 17 5.5.2 Autorisierung ........................................................................................ 17
5.6 Schnittstellen und Datenaustausch ....................................................................17 5.7 Netztrennung und Verwaltungsnetz ....................................................................18
6 Entwicklung ................................................................................................................. 19
6.1 Entwicklungsumgebung .....................................................................................19 6.2 Quellcode-Organisation ......................................................................................19 6.3 Dokumentation der Softwareprojekte .................................................................19 6.4 Namensgebung ..................................................................................................21 6.5 Internationalisierung ...........................................................................................21 6.6 Strukturierte Ablage von Primärdaten .................................................................22 6.7 BVL-interne Server- und Entwicklungsorganisation ............................................22 6.8 Extern entwickelte Software ...............................................................................23
7 Tests und Abnahme der Software ............................................................................... 24 8 Freigabe von Anwendungen für den Produktivbetrieb ................................................. 25 9 Nachweisdokumente ................................................................................................... 26 10 Mitgeltende Unterlagen ............................................................................................... 27 11 Änderungen an diesem Dokument .............................................................................. 28 Anhang: Quellcode-Organisation .......................................................................................... 30 Anhang: Architekturkonzept ................................................................................................. 34
Seite 2/35
[Seite 3]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
1 Ziel
Für die Entwicklung und den Betrieb von Software im BVL und für das BVL werden Standards
definiert.
Ziel dieser Standards ist ein vereinfachter Entwicklungsprozess, bei dem der Einarbeitungs-
aufwand der Entwickler in neue Projekte möglichst geringgehalten wird und Vor- bzw. Nach-
teile einzelner Aspekte der Softwareentwicklung nicht jedes Mal neu gegeneinander abgewo-
gen werden müssen. Außerdem soll die Zusammenarbeit im Team dadurch erleichtert werden,
da die Kommunikation der Entwicklerinnen und Entwickler auf den gleichen Technologien ba-
siert. Durch den Wegfall eines großen Teils der Einarbeitung soll eine bessere Vertreterrege-
lung und eine bessere Übergabe der Produkte von Entwicklungs-projekten an den Betrieb
erreicht werden.
Die in diesem Dokument getroffenen Entscheidungen zur (möglichst einheitlichen) Infrastruk-
tur und zu den verwendeten Technologien dienen dazu, verbindliche Vorgaben zu treffen, so
dass im Vorfeld der Betrieb und die spätere Wartung der Software in Z32 geplant werden kann.
Die Standards sind sowohl für interne Projekte als auch Projekte mit externen Partnern ver-
bindlich - Projekttypen nach V-Modell XT Bund: 3.1 Systementwicklungsprojekt (AN). 3.2 Sys-
tementwicklungsprojekt (AN/AG). Es werden keine Alternativen zu den aufgeführten Produk-
ten und Technologien verwendet. Sollten sich bestimmte Anforderungen technisch nicht um-
setzen lassen, so wird eine alternative Technologie in der AG Programmierung besprochen
und gemeinsam beschlossen. Gleiches gilt für neue Technologien und neue Versionen der
verwendeten Werkzeuge/Software. Die Abstimmung kann im Bedarfsfall auch kurzfristig per
E-Mail oder per Telefon mit Protokoll erfolgen.
Die hier getroffenen Festlegungen beziehen sich folgend meist auf Individualsoftware – sie
gelten aber auch (wenn anwendbar) für Standardsoftware. Abweichungen von hier definierten
Standards für die Einführung einer Standardsoftware sind nur per Einzelfallentscheidungen
unter Einbindung von RefL Z32 möglich.
Seite 3/35
[Seite 4]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
2 Geltungsbereich
| BVL gesamt | |
|---|---|
| Organisationseinheit |
Die einheitlichen Vorgaben dieses Dokumentes gelten für die hausinterne Entwicklung, und
sollen auch bei einer externen Auftragsvergabe verwendet werden.
Seite 4/35
[Seite 5]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
3 Begriffe
Allgemeine Begriffe
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| BMEL | Bundesministerium für Ernährung und Landwirtschaft | ||||
| RefL | Referatsleiter/in im BVL |
Spezifische Begriffe
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| Active Directory (AD) | Verzeichnisdienst von Microsoft | ||||
| AG Programmierung | IT-Sitzung, in der Entwicklerinnen und Entwickler die Standards für die | ||||
| Softwareentwicklung im BVL erarbeiten. | |||||
| ARIA | Accessible Rich Internet Applications. Initiative zur Verbesserung von webbasierten Benutzeroberflächen, um die Bedienung für Menschen mit Behinderungen zu vereinfachen. | ||||
| Authentifizierung | Überprüfung der tatsächlichen Identität des Endbenutzers | ||||
| Autorisierung | Zuweisung und Überprüfung von Zugriffsrechten auf Daten und Dienste an Systemnutzer | ||||
| BITV | Barrierefreie-Informationstechnik-Verordnung | ||||
| Build | Steht in der Programmierung für die Entwicklungsstufe einer Software. Mittels eines Build-Scripts wird durch die automatisierte Kompilie- rung/Übersetzung des Codes eine neue lauffähige Softwareversion er- zeugt. | ||||
| Cronjob | Auf unixoiden bzw. unixähnlichen Betriebssystemen werden wieder- | ||||
| kehrende Aufgaben über den sogenannten Cron-Dienst zeitbasiert ab- | |||||
| gewickelt. Eine solche Aufgabe bezeichnet man als Cronjob. | |||||
| CSS | Cascading Style Sheet, deklarative Sprache für Stilvorlagen | ||||
| DBMS | Datenbankmanagementsystem ist eine Verwaltungssoftware, die die | ||||
| technischen Voraussetzungen für den Betrieb eines DBS liefert. |
Seite 5/35
[Seite 6]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| DBS | Das Datenbanksystem besteht aus zwei Teilen: der Verwaltungssoft- ware, genannt (DBMS) und der Menge der zu verwaltenden Daten, der Datenbank im engeren Sinn, zum Teil auch „Datenbasis“ genannt. | ||||
| DDL | Data Definition Language. | ||||
| DMZ | Demilitarisierte Zone. Hierbei handelt es sich um ein Computernetz mit sicherheitstechnisch kontrollierten Zugriffsmöglichkeiten auf die ange- schlossenen Server. Dort aufgestellte System werden durch eine oder mehrere Firewalls gegen andere Netzer abgeschirmt. | ||||
| EJB | Enterprise JavaBeans (EJB) sind standardisierte Komponenten inner- | ||||
| halb eines Jakarta-EE-Servers (Java Enterprise Edition). Sie vereinfa- | |||||
| chen die Entwicklung komplexer mehrschichtiger verteilter Software- | |||||
| systeme mittels Java. Mit Enterprise JavaBeans können Konzepte für | |||||
| Unternehmensanwendungen, z. B. Transaktions-, Namens- oder Si- | |||||
| cherheitsdienste, umgesetzt werden, die für die Geschäftslogik einer | |||||
| Anwendung nötig sind. | |||||
| ERM | Entity-Relationship-Model. Hierbei handelt es sich um ein Objektbezie- hungsmodell, um im Rahmen der semantischen Datenmodellierung ei- nen in einem gegebenen Kontext relevanten Ausschnitt der realen Welt zu beschreiben. | ||||
| FHS | Filesystem Hierarchy Standard. Standard für die Organisation der Ver- | ||||
| zeichnisstruktur unixoider Betriebssysteme entsprechend deren Ein- | |||||
| satzzweck. | |||||
| Flash | Adobe Flash ist der Name einer Plattform zur Programmierung und Darstellung multimedialer und interaktiver Inhalte | ||||
| HTML | Hypertext Markup Language | ||||
| IDMS | Spezialisiertes System für das Identitätsmanagement. Im BVL wird für die Kommunikation mit diesem System LDAPv3 und RFC 3062 einge- setzt. | ||||
| Java | ist eine objektorientierte Programmiersprache. Zum Ausführen von | ||||
| Java-Programmen wird eine Java-Laufzeitumgebung auf dem Rech- | |||||
| ner benötigt | |||||
| Jakarta EE | Java Plattform, Enterprise Edition, abgekürzt Jakarta EE oder früher Java EE bzw. J2EE, ist die Spezifikation einer Softwarearchitektur für |
Seite 6/35
[Seite 7]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| die transaktionsbasierte Ausführung von in Java programmierten An- wendungen und insbesondere Webanwendungen. Sie ist eine der gro- ßen Plattformen, die um den Middleware-Markt kämpfen. Größter Kon- kurrent ist dabei die .NET-Plattform von Microsoft. | |||||
| JavaDoc | JavaDoc ist ein Software-Dokumentationswerkzeug, das aus Java- | ||||
| Quelltexten automatisch HTML-Dokumentationsdateien erstellt. | |||||
| JavaScript | ist eine Skriptsprache, die für dynamisches HTML in Webbrowsern entwickelt wurde, um Benutzerinteraktionen auszuwerten, Inhalte zu verändern, nachzuladen oder zu generieren und so die Möglichkeiten von HTML und CSS zu erweitern | ||||
| JAX-WS | Java API for XML Web Services. Hierbei handelt es sich um eine Pro- | ||||
| grammierschnittstelle zum Erstellen von Webservices. | |||||
| JDBC | Java Database Connectivity. Hierbei handelt es sich um eine standar- disierte Programmierschnittstelle für den Zugriff auf relationale DMBS. Alle großen Datenbankhersteller bieten passende Treiber an, die den technischen Zugriff auf die Datenbank kapseln. | ||||
| JPA | Die Java Persistence API (JPA) ist eine Schnittstelle für Java-Anwen- | ||||
| dungen, die die Zuordnung und die Übertragung von Objekten zu Da- | |||||
| tenbankeinträgen vereinfacht. | |||||
| JSF | Java Server Faces: ist ein Framework-Standard zur Entwicklung von grafischen Benutzeroberflächen für Webapplikationen | ||||
| Kerberos | Bei Kerberos handelt es sich um ein Netzwerkprotokoll zur Authentifi- | ||||
| zierung von Benutzern, welches von der Annahme ausgeht, dass die | |||||
| Authentifizierung über ein unsicheres Netzwerk abgewickelt wird. Bei | |||||
| Kerberos handelt es sich um einen Industriestandard nach RFC 4120.1 | |||||
| MVC | Modell-View-Controller Pattern, ein Architekturmuster zur Strukturie- rung von Software in die drei Einheiten Datenmodell (engl. model), Präsentation (engl. view) und Programmsteuerung (engl. controller). | ||||
| NdB | Netze des Bundes bezeichnet die hochverfügbare Netzwerkinfrastruk- | ||||
| tur, die von Bundesbehörden in Deutschland für den sicheren Daten- | |||||
| austausch genutzt wird. |
1 Siehe hierzu https://tools.ietf.org/html/rfc4120
Seite 7/35
[Seite 8]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| OR-Mapper | Objektrelationaler Mapper. Beim objektrelationalen Mapping (ORM) werden Objekte einer objektorientierten Programmiersprache auf Zei- len einer relationalen Datenbank abgebildet. Für das Programm er- scheint die Datenbank dann als objektorientierte Datenbank. | ||||
| Portable Document Format. Plattformunabhängiges Dateiformat ge- | |||||
| mäß ISO 32000-1:2008. | |||||
| PDF/UA | Portable Document Format, Universal Accessibility. Substandard des PDF-Standards für barrierefreie PDF-Dokumente gemäß ISO 14289‑1:2014. | ||||
| RFC | Request for Comments. Hierbei handelt es sich um eine Reihe techni- | ||||
| scher und organisatorischer Dokumente, deren Erstellung am 7. April | |||||
| 1969 begonnen wurde. Aus historischen Gründen behalten die Diskus- | |||||
| sionsdokumente ihren Namen auch wenn sie final verabschiedet und | |||||
| zum Standard erklärt wurden. | |||||
| RWD | Responsive Webdesign. Entwicklung einer Webanwendung für den Einsatz auf beliebigen End- und Anzeigegeräten. Ziel ist die dyna- misch optimierte Darstellung der grafischen Benutzeroberfläche unter Berücksichtigung der zur Verfügung stehenden Auflösung und der vor- handenen Eingabemethoden. | ||||
| SAGA 5.0 | Standards und Architekturen für E-Government-Anwendungen. | ||||
| SAML | Security Assertion Markup Language. Hierbei handelt es sich um ein XML-Framework zum Austausch von Authentifizierungs- und Autori- sierungsinformationen. | ||||
| Schema-Manager | Hierbei handelt es sich um ein Framework zum Nachverfolgen, Ver- | ||||
| walten und Anwenden von Datenbankschemata. Die Kommunikation | |||||
| mit der Datenbank erfolgt über JDBC und ist prinzipiell unabhängig | |||||
| von einem konkreten DBMS. Alle Änderungen werden in Konfigurati- | |||||
| onsdateien im XML-Format gespeichert und können inkrementell auf | |||||
| eine bestehende Datenbank angewendet werden. Die Konfigurations- | |||||
| dateien lassen sich versionieren. | |||||
| SQL | Structured Query Language. Hierbei handelt es sich um eine Daten- banksprache zur Definition von Datenstrukturen in relationalen Daten- banken sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen von darauf basierenden Datenbeständen. |
Seite 8/35
[Seite 9]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| SSO | SSO | Single Sign-on. Der Benutzer kann nach einmaliger Anmeldung an sei- | |||
| nem Arbeitsplatz auf alle Rechner und Dienste zugreifen, für die er lo- | |||||
| kal autorisiert ist. | |||||
| TCP | Transmission Control Protocol. Hierbei handelt es sich um ein zuver- lässiges, verbindungsorientiertes und paketvermitteltes Netzwerkpro- tokoll für den Datenaustausch zwischen Netzwerkkomponenten. | ||||
| Pilotphase | Der Betrieb von Anwendungen durchläuft verschiedene Phasen. | ||||
| Testphase: Für die Anwendung kann noch kein fehlerfreier Betrieb ga- | |||||
| rantiert werden, meist haben nur wenige interne Nutzer Zugriff auf die | |||||
| Anwendung, die Anwendung ist hinsichtlich der Vertraulichkeit (oft nur | |||||
| fiktive Testdaten), der Verfügbarkeit (Ausfälle müssen akzeptiert wer- | |||||
| den) und der Integrität (jederzeit könnten Daten manipuliert werden o- | |||||
| der verloren gehen) nur wenig geschützt. | |||||
| Pilotphase: Für die Anwendung gelten die gleichen Anforderungen wie | |||||
| für den Produktivbetrieb, wobei jedoch der Nutzerkreis und/oder die | |||||
| Verwendung noch eingeschränkt werden. | |||||
| Produktivbetrieb | Produktivbetrieb: Die Entwicklung der Anwendung ist abgeschlossen, Fehler wurden behoben, die Infrastruktur für die Anwendung wird ent- sprechend der IT-Sicherheitsanforderungen betrieben. Die Anwen- dung wird vollumfänglich verwendet. | ||||
| V-Modell XT Bund | Das Vorgehensmodell „V-Modell 97“ wurde im Zuge neuer Erkennt- | ||||
| nisse im Februar 2005 durch das „V-Modell XT“ ersetzt. Das „XT“ steht | |||||
| hierbei für „Extreme Tailoring“ und beschreibt die Möglichkeit, sich den | |||||
| Bedürfnissen durch Zuschnitt optimal annähern zu können. | |||||
| WAF | Web Application Firewall. Verfahren zum Schutz von Webanwendun- gen über dem Hypertext Transfer Protocol (HTTP). Die WAF über- wacht auf der Anwendungsebene die Kommunikation und erfordert in der Regel keine Anpassung der zu schützenden Anwendung. | ||||
| WAI | Web Accessibility Initiative. Hierbei handelt es sich um einen Bereich | ||||
| innerhalb des W3C, der sich in mehreren Arbeits- und Interessengrup- | |||||
| pen mit dem barrierefreien Zugang zum Web und seinen Inhalten be- | |||||
| schäftigt. |
Seite 9/35
[Seite 10]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Begriff | Bedeutung | ||||
|---|---|---|---|---|---|
| Wiki | Mit diesem hawaiianischen Wort wird eine Website beschrieben, deren Inhalte von den Besuchern nicht nur gelesen, sondern auch direkt im Webbrowser bearbeitet und geändert werden können. | ||||
| XML | IT: XML ist die Kurzbezeichnung für „extensible markup language“, ei- | ||||
| ner Dokumentenbeschreibungssprache. | |||||
| XÖV | „XML in der Öffentlichen Verwaltung“ – (umfangreiche) Vorgaben für die XML-Modellierung und Standardisierung zum Austausch von Da- ten. | ||||
| XSD | XML Schema Definition. Hierbei handelt es sich um eine Empfehlung | ||||
| des W3C zum Definieren von Strukturen für XML-Dokumente. Diese | |||||
| Definitionen sind selbst auch in XML geschrieben. |
Seite 10/35
[Seite 11]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
4 Projektorganisation
Die Projektorganisation und der Projektablauf im BVL und in der Zusammenarbeit mit externen
Partnern sind in der BVL_PA_07_0003_000 Projekte detailliert beschrieben. Folgend werden
die Mindestanforderungen für die Projektdurchführung dargestellt:
Vor der Erstellung von Leistungsbeschreibungen für Softwareprojekte wird normaler-
weise in einem Fachkonzept das gesamte im Projekt Umzusetzende zusammenge-
stellt. Dabei werden auch diejenigen Projektziele beschrieben, die im Rahmen der Pro-
jektarbeit nicht durch Software umgesetzt werden sollen (z.B. Organisationsänderun-
gen, Schulungen, etc.).
Auf der Basis des Fachkonzepts wird entschieden, ob die Umsetzung über eine oder
mehrere Softwareentwicklungen erfolgen soll und welcher Teil des Fachprozesses IT
gestützt umgesetzt werden soll.
Die konkreten Anforderungen (Leistungsbeschreibung) an eine neue Software werden
schriftlich in Form eines Lastenhefts erstellt. Die detaillierten Anforderungen werden
anschließend vom Auftragnehmer in ein Pflichtenheft umgearbeitet, welches von Fach-
seite und IT abgenommen werden muss. Erst danach erfolgt die Umsetzung. Bei spä-
teren Änderungswünschen werden die jeweiligen Änderungsanforderungen schriftlich
niedergelegt und priorisiert.
Eine Zeit- und Ressourcenplanung wird schriftlich verfasst und vom Projektleiter fort-
geschrieben.
Seite 11/35
[Seite 12]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
5 Systemlandschaft
Anwendungen werden in der Regel als Webanwendungen implementiert: Dabei wird generell
dem Standard SAGA 5.0 gefolgt. Außerdem werden Anwendungen als Jakarta-EE-Weban-
wendungen umgesetzt.
Die Architektur der Webanwendungen folgt dem 4-Schichten-Modell (ggf. auch 5-Schichten
möglich):
Client
Web-Schicht
Modell-Schicht
Datenbank
(optionale 5. Schicht) Sicherungsschicht
Die genauen Produkte (Software und Version) sind verbindlich für das gesamte BVL im
Dokument BVL_TA_04_9311_Z3_Systemumfeld–Entwicklung geregelt.
5.1 Kodierung und Zeichensätze
Die Standardkodierung auf allen Abstraktionsschichten ist UTF-8. Dies gilt ebenso für Res-
sourcen und Mediadateien, die im Rahmen der Dokumentation erstellt werden. Aufgrund der
zahlreichen Möglichkeiten Zeichenketten zu verarbeiten, muss die Prüfung auf unzulässige
Zeichen auf Applikationsebene z. B durch Bean Validation erfolgen. Es besteht zwar die Mög-
lichkeit, dies mit Spaltenbeschränkung (constraint) in die Schemadefinitionen aufzunehmen,
jedoch müsste in einem solchen Fall die Fehlerbehandlung auf allen Abstraktionsschichten
der Applikation durchgeführt werden – dies sollte daher vermieden werden bzw. in Ergänzung
zu der Validierung auf Applikationsebene erfolgen.
5.2 Clients und Barrierefreiheit
Als Clients werden Webbrowser eingesetzt. Plug-Ins (z.B. Java Laufzeitumgebung, Flash) dür-
fen für die Nutzung nicht nötig sein. Falls Plug-Ins verwendet werden sollen, muss hierzu eine
Genehmigung durch RefL Z31 und RefL Z32 eingeholt werden.
Die Anwendungen sollen mindestens im Internet Explorer und im Mozilla Firefox lauffähig sein.
Für Webbrowser auf mobilen Geräten wie Smartphones und Tablet Rechnern soll eine Unter-
stützung von Android und iOS erfolgen, sofern sie nicht per Einzelfallentscheidung durch RefL
Z32 für Verwaltungsanwendungen ausgeschlossen werden.
Seite 12/35
[Seite 13]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Außerdem ist folgendes zu beachten:
Für die Darstellung der Inhalte ist der Online-Style-Guide der Pressestelle umzusetzen.
Sofern Anforderungen an die Barrierefreiheit es erfordern, kann formlos eine Ausnah-
megenehmigung zur Abweichung vom Guide bei der Pressestelle beantragt werden.
Es soll eine Trennung von Design (CSS) und Inhalt (HTML) erfolgen.
Die Anwendung muss barrierearm gemäß BITV 2.0 und WAI-ARIA sein, dies betrifft
insbesondere:
o Die Umsetzung der Anforderungen der BITV ist im Geschäftsbereich des BMEL
auch für alle internen Anwendungen verbindlich.
o Für den Einsatz auf unterschiedlichen Endgeräten muss responsives Webde-
sign (RWD) zur Anwendung kommen.
o Zur Sicherstellung einer möglichst barrierefreien Anwendung sind darüber hin-
aus die Normen DIN EN 301549:2018-08 (Richtlinien für barrierefreie Webin-
halte) und ISO 14289‑1:2014 (PDF/UA) maßgeblich und müssen beachtet wer-
den.
5.3 Applikationsserver & Frameworks
Die Web-Schicht und Modell-Schicht laufen auf einem Jakarta-EE-zertifizierten Applikations-
server als Jakarta-EE-Anwendung. Als Alternative zum Jakarta-EE-Applikationsserver ist ggf.
der Einsatz anderer Webserver bzw. HTTP-Server möglich (Einzelfallentscheidung durch RefL
Z32).
Neben der Sprache werden auch strategische Frameworks oder Bibliotheken festgeschrieben.
Für Datenbanken mit Weboberfläche gelten dabei folgende Vorgaben:
Verwendung von Jakarta EE. Der bereitgestellte Funktionsumfang durch den Applika-
tionsserver entspricht dem Full Profile. Empfohlen wird jedoch ein möglichst sparsamer
Einsatz der bereitgestellten Dienste.
Seite 13/35
[Seite 14]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Als Frontend-Technologie wird JSF mit Facelets eingesetzt, um W3C-konformes HTML und CSS zu generieren.2 Abweichungen sind ggf. nach Absprache möglich.
Als Persistenztechnologie wird JPA vorausgesetzt. Für das objektrelationale Mapping
muss der mitgelieferte OR-Mapper des Jakarta-EE-Applikationsservers verwendet
werden. Wird im Ausnahmefall ein anderer Webserver bzw. HTTP-Server eingesetzt,
muss die Auswahl des OR-Mapper in Rücksprache mit RefL Z32 erfolgen.
Sowohl für die Model- als auch die Controller-Schicht müssen EJB zum Einsatz kom-
men.
Für regelmäßige Aufgaben sind zeitgesteuerte Beans (timer beans) zu verwenden, um
Datenbankoperationen transaktionssicher und über die Geschäftslogik der Anwendung
durchführen zu können. Der Einsatz von Cronjobs ist zu vermeiden und muss in Aus-
nahmefällen durch RefL Z32 genehmigt werden. Falls Cronjobs eingesetzt werden,
müssen diese im Installations- und Betriebshandbuch vollständig dokumentiert sein.
Für die statische Quellcodeanalyse müssen geeignete Werkzeuge zum Einsatz kom-
men, die in Kombination mit dem Build-Werkzeug verwendet werden. Die hierfür not-
wendigen Konfigurationen werden durch Ref Z32 bereitgestellt bzw. mit Ref Z32 abge-
stimmt.
Für die statische Schwachstellenprüfung der Abhängigkeiten der Anwendung muss ein
geeignetes Werkzeug zum Einsatz kommen, das in Kombination mit dem Build-Werk-
zeug verwendet wird.
Generell wird mit dem MVC-Pattern gearbeitet.
5.4 Relationale Datenbanken
Die Speicherung von fachlichen Daten erfolgt in normalisierter Form in einem relationalen Da-
tenbankmanagementsystem (DBMS) unter Verwendung der JDBC. Diese Festlegung gilt für
alle Neuimplementierungen und ist bei Anpassungen von bestehender Individualsoftware zu
prüfen. Ausnahmen vom Standard für das DBMS und ggf. die Verwendung von nicht-relatio-
nalen DBMS erfordern eine Genehmigung von RefL Z32.
2 Siehe hierzu auch http://validator.w3.org/ und http://jigsaw.w3.org/css-validator/
Seite 14/35
[Seite 15]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Außerdem gelten folgende Vorgaben:
Die Datenbankzugriffe müssen über Container-verwaltete Datenquellen (data sources)
erfolgen. Die Verwendung von Deployment-spezifischen Konfigurationen für Daten-
bankverbindungen (z. B. via Deployment-Deskriptoren, Quelltextkodierungen etc.) sind
unzulässig.
Der Einsatz von herstellerspezifischen Erweiterungen des SQL-Standards ist unzuläs-
sig. Gelieferte SQL-Skripte (siehe Abschnitt 6.2) müssen ohne Änderungen im zu un-
terstützenden DBMS ausführbar sein. Der Einsatz von Prüfroutinen, um diese Anfor- derung zu umgehen, ist unzulässig.3
Der Einsatz von Triggern, Stored Functions, Stored Procedures, speziellen Index-Ty-
pen, speziellen Datentypen etc. ist unzulässig.
Technische Primärschlüssel müssen durch die Datenbank vergeben werden (identity columns).4 Hierfür ist die Verwendung des JPA-Erzeugungstyps IDENTITY zu ver- wenden, sofern es sich um einen nummerischen Primärschlüssel handelt. Die Verwen- dung von Identifikatoren wie UUIDs im Sinne von synthetischen Schlüsseln5 ist zuläs-
sig, falls technisch sichergestellt ist, dass es zu keinen Kollisionen (Mehrfachzuweisun-
gen) kommt.
Technische Zeitstempel müssen mit einer Auflösung in Millisekunden eingesetzt wer-
den. Hierzu ist der SQL-Datentyp TIMESTAMP(3) zu verwenden. Für Zeitstempel
auf fachlicher Ebene mit geografischem Bezug (Zeitzone) ist der SQL-Datentyp
DATETIME zu verwenden. Für die technische Darstellung von Zeitangaben ist der
Standard ISO-8601 anzuwenden.
3 Nach Rücksprache mit RefL Z32 sind Konfigurationskommandos zulässig, um das korrekte Parsen bei Daten- imports steuern zu können, bspw. bei Oracle: ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';
4 Bezüglich Oracle: https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1
Bezüglich PostgreSQL: https://www.postgresql.org/docs/10/static/sql-createtable.html
Bezüglich MySQL: https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html 5 Siehe hierzu https://de.wikipedia.org/wiki/Surrogatschl%C3%BCssel
Seite 15/35
[Seite 16]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Bei der Speicherung großer binärer Objekte in der Datenbank (@Lob) muss im Rah-
men von Konzeptworkshops festgelegt werden, wo die Primärdaten gespeichert wer-
den und mit welchen Mechanismen sie vor Manipulationen geschützt werden, z. B.
durch eine kryptografische Hashfunktion (Fingerprint) oder eine elektronische Signatur.
Erfordert die Anwendung die Speicherung zahlreicher oder großer Binärdaten, müssen diese dateibasiert entsprechend dem Filesystem Hierarchy Standard6 und transakti- onsgeschützt7 abgelegt werden. Der Speicherort muss konfigurierbar sein, i.d.R. han-
delt es sich um /opt/data. Abweichungen davon erfordern die Zustimmung von RefL
Z32.
Der Einsatz von nativen SQL-Kommandos im Quelltext ist unzulässig. Sämtliche Da-
tenbankanfragen müssen über den OR-Mapper abgewickelt werden.
Für häufig auftretende Datenbankanfragen stehen folgende Technologien zur Verfü-
gung: EJB Named Query, EJB-QL oder die JPA Criteria API.
Der Aufbau der initialen Datenbankstruktur (Schema) und die Befüllung mit initialen Datenban-
kinhalten (Konstanten) werden über den Schema-Manager durchgeführt. Die Konfigurations-
dateien des Schema-Managers werden im Unterordner src/main/database des Projektes
gespeichert. Bei Änderungen durch eine neue Lieferung der Software werden die Konfigurati-
onsdateien ebenfalls dort abgelegt, so dass der Schema-Manager in Kombination mit dem
Build-Werkzeug das Datenbankschema aktualisieren kann.
Auslagerung von Geschäftslogik auf die Datenbank ist generell unzulässig.
Zur Sicherstellung der Synchronizität zwischen Datenbankschema und Modell-Schicht
ist im Deployment-Deskriptor persistence.xml die Schema-Validierung zu konfigu-
rieren, z. B.:
6 Siehe hierzu auch http://refspecs.linuxfoundation.org/fhs.shtml 7 Siehe hierzu auch https://narayana.io/sub-projects/index.html, Abschnitt „Transactional File I/O“
Seite 16/35
[Seite 17]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
5.5 Identitätsmanagement und Zugriffsrechte
5.5.1 Authentifizierung
Für das Identitätsmanagement wird Red Hat SSO in allen Netzsegmenten (Intranet, DMZ)
eingesetzt. Die Installation von Red Hat SSO erfolgt über die Paketverwaltung des eingesetz-
ten Betriebssystems. Erfolgt in Ausnahmefällen die Pflege der Benutzer über die Anwendung,
muss eine geeignete Bibliothek für den LDAPv3-basierten Zugriff auf Red Hat SSO eingesetzt werden, die RFC 3062 implementiert.8 Passwortrichtlinien werden zentral über Red Hat SSO
durchgesetzt. Die Konfiguration von einem oder mehreren Parametern der Passwortrichtlinie
in der Fachanwendung ist unzulässig.
5.5.2 Autorisierung
Die Autorisierung muss in Red Hat SSO durch Konfiguration entsprechender Sicherheitsbe-
reiche erfolgen, die von der Anwendung als Vorbedingung für die implementierten Anwen-
dungsfälle ausgewertet werden. Zusätzlich muss in Red Hat SSO auch eine Gruppe für jede
Anwendung eingerichtet werden, der nur die Benutzer zugeordnet werden, die sich in der je-
weiligen Anwendung anmelden dürfen. Über Red Hat SSO ist SSO über SAML zu realisieren.
In begründeten Ausnahmefällen ist auch das Kerberos-Protokoll möglich. Die hierfür notwen-
digen Maßnahmen werden in Absprache mit Referat Z32 festgelegt.
5.6 Schnittstellen und Datenaustausch
Als Datenaustauschformat zwischen verschiedenen Anwendungen wird XML eingesetzt, da-
bei sind die XÖV-Regeln zur Modellierung von XML umzusetzen, siehe Tabelle 1 auf Seite 20.
Für den Datenaustausch sind zustandslose Web-Services auf Grundlage von JAX-RS zu ver- wenden.9 Die jeweilige technische Umsetzung ist dabei für den jeweiligen Anwendungsfall zu
prüfen und eine Abweichung vom empfohlenen Vorgehen mit RefL Z32 abzustimmen. Nach
Absprache ist bei Bedarf auch eine nachrichtenorientierte Umsetzung gemäß JAX-WS mög-
lich.
8 Für Schreibzugriffe auf den LDAP muss die vom BVL vorgeschriebene Richtlinie für die Speicherung von Pass- wortinformationen eingehalten werden, die beim Einrichten eines OpenLDAP-Servers konfiguriert wird. Eine RFC-3062-konforme Bibliothek verwendet die „LDAP Password Modify Extended Operation“, so dass die OpenLDAP-Konfiguration beachtet wird. 9 Sie hierzu auch https://docs.oracle.com/javaee/7/tutorial/jaxws.htm
Seite 17/35
[Seite 18]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
5.7 Netztrennung und Verwaltungsnetz
Die netztopologische Platzierung der Anwendung ist abhängig vom Anwenderkreis und dem
Schutzbedarf der verarbeiteten Daten. Diese Frage muss im Rahmen der Konzeptworkshops
unter Unterstützung von Z3 und unter Beteiligung des IT-SiBe erörtert werden. Grundsätzlich
gilt, dass Anwendungen für die Öffentlichkeit in der DMZ platziert werden müssen. Anwendun-
gen in der DMZ können ausschließlich auf Ressourcen und Fremdsysteme zugreifen, die sich
ebenfalls in der DMZ befinden.
Soll eine Anwendung den Mitarbeitenden des BVL oder anderen Teilnehmern des NdB zur
Verfügung gestellt werden, muss diese zwingend im sicheren Verwaltungsnetz (Intranet) plat-
ziert werden. Die Bereitstellung der Anwendung für andere NdB-Teilnehmer muss darüber
hinaus in enger Abstimmung mit Z33 und dem IT-SiBe erfolgen, da ggf. eine Genehmigung
für die Verarbeitung von Verschlusssachen des Geheimhaltungsgrades NUR FÜR DEN
DIENSTGEBRAUCH (VS-NfD) beim Geheimschutzbeauftragten des BVL beantragt werden
muss.
Seite 18/35
[Seite 19]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
6 Entwicklung
In diesem Kapitel werden Entwicklung, einzusetzende Werkzeuge und Vorgaben für die Um-
setzung beschrieben.
6.1 Entwicklungsumgebung
Für die Übersetzung der Java Programme kommen folgende Werkzeuge zum Einsatz:
Die Verwendung eines Build-Werkzeuges mit einem Abhängigkeitsmanagement ist
zwingend notwendig.
Die interne Entwicklung von Individualsoftware erfolgt unter Verwendung einer inte-
grierten Entwicklungsumgebung.
Für die Pflege der Quellcodes wird ein Versionsverwaltungssystem verwendet.
Grundsätzlich müssen frei verfügbare Programme, deren Lizenz die Nutzung im BVL nicht
einschränkt, für das Kompilieren bzw. Übersetzen der Anwendungen verwendet werden.
Ebenso sollen möglichst nur frei verfügbare Bibliotheken eingebunden werden.
6.2 Quellcode-Organisation
Die Quelltexte und Ressourcen-Dateien müssen anhand des vom Build-Werkzeug vorgege-
benen Layouts organisiert werden. Bezugnehmend auf Abschnitt 5.4 ist hierbei insbesondere
das Verzeichnis src/main/database zu beachten, in dem die Schema-Manager-Konfigura-
tionen zum Erzeugen des Datenbankschemas und der initialen Befüllung der Tabellen abge-
legt werden müssen.
6.3 Dokumentation der Softwareprojekte
Die Dokumentation der Software-Projekte und der neuen Software erfolgt grundsätzlich wie
nachfolgend beschrieben:
Im IT-Wiki wird das Projekt bzw. die Software nach dem vorgegebenen Schema doku-
mentiert.
Der Quellcode, ggf. Schema-Manager-Konfigurationen und weitere Dokumentation
wird in der Versionsverwaltung gepflegt.
Seite 19/35
[Seite 20]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Der geänderte Quellcode wird regelmäßig in die Versionsverwaltung übertragen (mindestens
bei jeder neuen Lieferung). Die Daten werden nach den gängigen Standards der Versionsver-
waltung strukturiert abgelegt.
Für die Dokumentation des Quellcodes müssen insbesondere aussagekräftige Kommentare
einfügt werden, so dass die generierte JavaDoc-Dokumentation verständlich und umfassend
ist.
Zusätzlichen zur Visualisierung der Klassenhierarchie, werden Datenbankschema-Visualisie-
rungen und insbesondere Darstellungen der Systemlandschaft erstellt. Hierbei ist UML zu ver-
wenden. Datenbankmodelle sind mittels des Entity-Relationship-Modells (ERM) zu modellie- ren. Dabei ist die Notation nach Elmasri/Navathe10 zu verwenden. Kardinalitäten sind in Min-
Max-Notation anzugeben.
Beim Einsatz von UML und der Definition der XML-Schemata sind folgende Richtlinien des
XÖV-Standard zu beachten:
Tabelle 1 Verpflichtende XÖV-Regelungen für XML-Protokollnachrichten.
| Nr. | Verbindlichkeit | Kurzbeschreibung | |||||
|---|---|---|---|---|---|---|---|
| NDR-9 | MUSS | Nachrichten als globale Elemente | |||||
| NDR-10 | MUSS | Konsistente Namen in XÖV-Fachmodell und XML Schema-Definitio- nen | |||||
| NDR-12 | SOLL | Erlaubte Zeichen für Klassifikationen in Namen | |||||
| NDR-22 | MUSS | Unveränderte Übernahme von XÖV-Codelisten | |||||
| NDR-28 | MUSS | Valide W3C XML Schema-Definitionen | |||||
| NDR-29 | MUSS | Identifizierende Namensräume | |||||
| NDR-30 | MUSS | Versionierung der XML Schema-Definitionen | |||||
| NDR-31 | SOLL | Namensräume mit Versionen |
10 R. Elmasri, S. B. Navathe: Grundlagen von Datenbanksystemen, Addison-Wesley
Seite 20/35
[Seite 21]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
6.4 Namensgebung
Bei der Namensgebung gelten folgende Vorgaben:
Es gelten die Java-Code-Conventions.
Jedes Projekt erhält einen BVL-weit eindeutigen Kurznamen ohne Leer- oder Sonder-
zeichen. Groß- und Kleinschreibung darf nicht signifikant sein, da für Java spezielle
Regeln existieren.
Package-Namen in Java entsprechen der generischen Form
de.bund.bvl...
o projekt bezeichnet den eindeutigen Projektkurznamen.
o layer bezeichnet das Abstraktionsniveau der zugehörigen Pakete. Zulässige
Werte sind model, view, controller, services und utils.
o package bezeichnet den eigentlichen Package-Namen.
XSD-Schemata werden wie folgt abgelegt:
o URIs werden nach dem Schema http://www.bvl.bund.de//<Pro-
jektkürzel> gewählt.
o Bei Bedarf kann, ähnlich wie beim W3C, unter der URL
http://www.bvl.bund.de//<Kürzel> eine kurze Beschreibung
abgelegt werden.
o Unter http://www.bvl.bund.de//<Kürzel>.xsd werden die
Schema-Definitionen abgelegt. Durch eine abweichende Endung können auch
weitere Ressourcen abgelegt werden.
6.5 Internationalisierung
Um die Webanwendungen möglichst einfach zu internationalisieren, sollen Texte in Resource
Bundles hinterlegt und im Deskriptor
/src/main/webapp/WEB-INF/faces-config.xml
Seite 21/35
[Seite 22]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
konfiguriert werden.11 Dies soll auch eine nachträgliche Übersetzung erleichtern.
6.6 Strukturierte Ablage von Primärdaten
Wurde im Rahmen der Konzeptworkshops zwischen dem AN und dem BVL die Notwendigkeit
zur Speicherung von Primärdaten auf dem Dateisystem identifiziert, so muss die Ablage der
Einzeldateien im Dateisystem entsprechend folgendem Schema erfolgen:
/opt/data////
/opt/data/certificates/2019/06/03
Hierbei wird standardmäßig angenommen, dass das Mengengerüst der Primärdaten ein steti-
ges Wachstum aufweist und die Dateiablage für einen effizienten Zugriff strukturiert erfolgen
muss. Standardmäßig genügt eine Unterteilung in Kalendertagen. Sollte die erwartete Datei-
anzahl pro Kalendertag den Schwellwert 100 überschreiten, ist eine Feinunterteilung in Stun-
den, Minuten oder sogar Sekunden vorzunehmen.
6.7 BVL-interne Server- und Entwicklungsorganisation
Das IT-Wiki dient als zentraler Einstiegspunkt. Dort sind alle Informationen zur technischen
Infrastruktur dokumentiert. Zu jedem Softwareprojekt wird eine eigene Wiki-Seite erstellt.
Darüber hinaus gelten folgende Vorgaben:
„Kleine“ Anwendungen können mit 3-Schichten-Architektur erstellt werden. Welche An-
wendung als „klein“ zu betrachten ist, wird in projektbezogenen Workshops definiert.
Für jede Anwendung wird neben der künftigen Produktivumgebung auch eine sepa-
rierte Testumgebung aufgebaut.
Tickets zu Programmfehlern/Änderungsanforderungen (Request for Change) werden,
sobald die Anwendung in den Betrieb übergeht und das Entwicklungsprojekt abge-
schlossen wurde, vom BVL-eigenen IT-Service entgegengenommen.
11 Siehe hierzu auch https://docs.oracle.com/cd/E19798-01/821-1770/gcrri/index.html
Seite 22/35
[Seite 23]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
6.8 Extern entwickelte Software
Vorgaben für extern entwickelte Software:
Der Quellcode extern entwickelter Software wird nach jeder Lieferung in die Versions-
verwaltung eingestellt.
Alle Unterlagen werden zentral nach den Vorgaben des V-Modell XT Bund abgelegt.
Vorgaben für extern entwickelte Software für Auftragnehmer:
Der Auftragnehmer stellt ein zugangsgesichertes Bugtracking-Tool über HTTPS bereit,
der Export der Tickets als PDF muss möglich sein. Die BVL-Mitarbeiter/innen sind ver-
pflichtet, regelmäßig zu Dokumentationszwecken im Zusammenhang mit einer Ab-
nahme einen Export der Tickets durchzuführen.
Lieferungen sollen zugangsgesichert und per HTTPS über Port 443/TCP bereitgestellt
werden (andere Ports sind im BVL für Datentransfer nicht verfügbar).
Sofern Testsysteme beim Auftragnehmer betrieben werden, müssen diese zugangs-
gesichert und mit HTTPS-Verschlüsselung betrieben werden.
Alle Softwareentwicklungsprojekte werden nach V-Modell XT Bund durchgeführt.
Seite 23/35
[Seite 24]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
7 Tests und Abnahme der Software
Neue Software wird gründlichen Tests unterzogen, insbesondere sollen auch Lasttests durch-
geführt werden. Handelt es sich um intern programmierte Software, müssen sowohl Entwick-
lertests als auch Nutzertests von der Fachseite durchgeführt werden. Soll eine Lieferung eines
externen Auftragnehmers getestet werden, müssen sowohl Tests der Fachseite als auch Tests
durch Mitarbeiter von Z32 durchgeführt werden.
Die Tests sollen möglichst automatisiert durchgeführt werden. Folgende Werkzeuge sollen für
diese Automatisierung eingesetzt werden:
Durchführung von Frontend- und Akzeptanztests
Durchführung von Lasttests
Durchführung von Modultests
Durchführung von Schnittstellentests
Durchführung von Integrationstests
Die Testfälle sind schriftlich zu dokumentieren in Form eines Prüfprotokolls. Dieses Prüfproto-
koll ist die Voraussetzung für die Abnahme einer Softwareversion. Zusätzlich ist bei Lieferun-
gen externer Auftragnehmer zu prüfen, ob sich die Individualsoftware fehlerfrei auf den Ser-
vern des BVLs kompilieren lässt.
Der Auftragnehmer verpflichtet sich, dem BVL qualitätsgesicherte Produkte auszuliefern. Die
Qualitätssicherung beinhaltet mindestens Nutzertests, die an den Anforderungen angelehnt
sind. Es wird empfohlen, geeignete Tests zu entwickeln, um die Korrektheit der Software auch
nach Änderungen/Softwareanpassungen zu gewährleisten.
Seite 24/35
[Seite 25]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
8 Freigabe von Anwendungen für den Produktivbetrieb
Neue Anwendungen müssen sowohl von der Fachseite als auch von RefL Z32 für den Pro-
duktivbetrieb freigegeben werden. Für die Freigabe des Produktivbetriebes müssen ausführli-
che und dokumentierte Abnahmetests der in den Betrieb zu überführenden Softwareversion
auf einem Testsystem erfolgt sein. Die Dokumentation dieser Tests ist Z32 bei der Prüfung auf
Freigabe für den Produktivbetrieb vorzulegen.
Sind Änderungen an der im Produktivbetrieb befindlichen Software notwendig, so ist die Soft-
ware erneut zu testen. Erst nach positivem Abschluss der Tests dürfen die Änderungen in den
Produktivbetrieb übernommen werden.
Sollte vor dem Produktivbetrieb eine Pilotphase durchgeführt werden, so gelten diese Rege-
lungen zusätzlich auch für die Pilotphase.
Seite 25/35
[Seite 26]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
9 Nachweisdokumente
| Dokument | Führung | Aufbewahrung | Zeit | Ort | Bemerkung | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Freigabe Produktivbe- trieb (nach V-Modell XT) | Projektleiter | Projektleiter | 3 Jahre | Projektleiter | |||||||||||||
| Zeit- und Ressourcen- | Projektleiter | Projekteiter | Min. | Projekteiter | |||||||||||||
| planung (formlos) | 3 Jahre |
Seite 26/35
[Seite 27]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
10 Mitgeltende Unterlagen
| Dokument | ||
|---|---|---|
| BVL_PA_07_0003_000 Projekte | ||
| BVL_TA_04_9309_Z3_IT-Dokumentation | ||
| BVL_TA_04_0005_000_Anwendung_Online_Styleguide | ||
| BVL_TA_04_9311_Z3_Systemumfeld-Entwicklung | ||
| Online-Styleguide des BVL | ||
| SAGA 5.0 Standard (siehe CIO Bund) | ||
| XÖV Standards 2.0.1 http://www.xoev.de/sixcms/media.php/13/XOEV-Handbuch_2_0_1.pdf | ||
| BITV 2.0 (Barrierefreie Internet Verordnung) | ||
| V-Modell XT Bund http://www.bit.bund.de/nn_2148612/BIT/DE/Standards__Methoden/V-Mo- dell_20XT/node.html?__nnn=true |
Seite 27/35
[Seite 28]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
11 Änderungen an diesem Dokument
Das Dokument wurde in der Version 4.0 den aktuellen Entwicklungen entsprechend
angepasst. Hierzu zählen:
o Endgültige Umbenennung der Spezifikationssammlung Java EE in Jakarta EE.
o Umsetzung der Organisationsverfügung bezüglich Gruppe Z3.
o Definition der Vorgaben zur strukturierten Ablage von Primärdaten.
o Umbenennung des Begleitdokumentes zum Systemumfeld des BVL
BVL_TA_04_9311_Z3_Systemumfeld-Entwicklung.
o Hinzufügen der neuen Anforderungen zur Netztrennung und dem sicheren Ver-
waltungsnetz (Nutzerpflichten des NdB).
o Hinzufügen der aktualisierten Anforderungen an die Barrierefreiheit
Das Dokument wurde in der Version 3.0 den aktuellen Entwicklungen entsprechend
angepasst. Hierzu zählen unter anderem
o Wechsel auf eine allgemeine Versionsverwaltung. Spezifizierung erfolgt über
das neue Dokument BVL_TA_04_9311_030_Systemumfeld-Entwicklung.
o Wechsel auf einen Jakarta-EE-zertifizierten Applikationsserver
o Verallgemeinerung der Persistierung in relationalen DBMS via JDBC
o Wechsel von Cronjobs auf zeitgesteuerte Beans, die die Geschäftslogik der
Anwendung für die Abwicklung regelmäßiger Aufgaben verwenden
o Einführung eines Schema-Managers
o Einführung von Integrationstests
o Einführung eines generalisierten IDMS mit Zugriff via RFC 3062
o Umbenennung des Begleitdokumentes zum Systemumfeld mit dem neuen QM-
Schlüssel in BVL_TA_04_9311_030_Systemumfeld-Entwicklung
Seite 28/35
[Seite 29]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
o Im Abschnitt 3 wurden allgemeine und spezifische Begriffe den Unterabschnit-
ten neu zugeordnet.
Das Dokument wurde in der Version 2.0 komplett überarbeitet.
Wesentliche inhaltliche Änderungen:
o Kapitel „Begriffe“ erweitert um „spezifische Begriffe“
o Umstrukturierung der Kapitel: Gliederung nach Systemlandschaft und Entwick-
lung mit entsprechenden Unterkapiteln
o Kapitel „Tests und Abnahme“ neu eingefügt bzw. Kapitel „Test“ erweitert
o Das Dokument wurde so umgestellt, dass allgemeingültige Vorgaben beschrie-
ben werden. Die Festlegung von konkreten Versionsvorgaben wurde ausgela-
gert und erfolgt in dem Dokument BVL_TA_04_9311_903_Systemumfeld -
Entwicklung
Seite 29/35
[Seite 30]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Anhang: Quellcode-Organisation
Nachfolgend wird eine Ordnerstruktur vorgeschlagen, die für die Organisation sämtlicher Res-
sourcen einer Lieferung verwendet werden kann. Die Struktur orientiert sich an den Anforde-
rungen, die in diesem Dokument formuliert wurden.
| Verzeichnis, Inhalt und Bedeutung | ||
|---|---|---|
| src Zentrales Quelltextverzeichnis | ||
| src/main | ||
| Hauptverzeichnis der Implementierungsquelltexte | ||
| src/main/config Konfigurationsdateien der Anwendung, z.B. Properties-Dateien (bevorzugt im XML-Format) | ||
| src/main/java[de.bund.bvl.] | ||
| Zentrales Quelltextverzeichnis der Implementierung | ||
| src/main/java/de.bund.bvl./controller Implementierung der Controller-Schicht | ||
| src/main/java/de.bund.bvl./controller/services | ||
| Dienste, die in der Anwendung von den darüber liegenden Schichten verwendet werden. Hierzu | ||
| zählen zum Beispiel Dienste für die Benutzerverwaltung, das Persistieren von Objekten, die Kom- | ||
| munikation mit anderen System, die Umwandlung von Objekten in ein technisches Zielformat etc. | ||
| src/main/java/de.bund.bvl./controller/connectors Implementierungen zum Verbindungsaufbau mit externen System über Standardschnittstellen, bspw. SOAP, LDAP, REST, CMIS etc. | ||
| src/main/java/de.bund.bvl./controller/batch | ||
| Enthält alle Arbeitssaufträge, die im Rahmen des Batch Processing implementiert werden (JSR- | ||
| 352).12 | ||
| src/main/java/de.bund.bvl./controller/batch/batchlets Enthält alle Aufträge, die nicht mit großen Datenmengen hantieren müssen. |
12 Siehe hierzu auch http://www.mastertheboss.com/javaee/batch-api/batch-applications-tutorial-on-wildfly
Seite 30/35
[Seite 31]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Verzeichnis, Inhalt und Bedeutung | ||
|---|---|---|
| src/main/java/de.bund.bvl./controller/batch/chunks | ||
| Enthält alle Aufträge, die mit großen Datenmengen hantieren (chunks). | ||
| src/main/java/de.bund.bvl./controller/batch/chunks/reader Zu den Chunks gehörende Klassen, die von javax.batch.api.chunk.AbstractItemReader ab- geleitet sind. | ||
| src/main/java/de.bund.bvl./controller/batch/chunks/proces- | ||
| sors | ||
| Zu den Chunks gehörende Klassen, die javax.batch.api.chunk.ItemProcessor implementie- | ||
| ren | ||
| src/main/java/de.bund.bvl./controller/batch/chunks/writer Zu den Chunks gehörende Klassen, die von javax.batch.api.chunk.AbstractItemWriter ab- geleitet sind. | ||
| src/main/java/de.bund.bvl./model | ||
| Implementierung der Modellschicht | ||
| src/main/java/de.bund.bvl./model/comparators Komparatoren, die das Interface java.util.Comparator implementieren. | ||
| src/main/java/de.bund.bvl./model/converters | ||
| Konverter, die für das typsichere Binding von CSV- und XML-Dateien verwendet werden, z.B. via | ||
| JSEFA13 oder JAXB. | ||
| src/main/java/de.bund.bvl./model/entities Definitionen der Persistence Entities. | ||
| src/main/java/de.bund.bvl./model/predicates | ||
| Filterregeln für das Verarbeiten von Datenstrukturen, die beispielsweise java.util.Iterator imple- | ||
| mentieren. | ||
| src/main/java/de.bund.bvl./model/repositories Zugriffsklassen, die die CRUD-Szenarien der Persistence Entities implementieren. |
13 Siehe hierzu auch http://jsefa.sourceforge.net/
Seite 31/35
[Seite 32]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Verzeichnis, Inhalt und Bedeutung | ||
|---|---|---|
| src/main/java/de.bund.bvl./model/validators | ||
| Validatoren auf der Persistenzschicht, die javax.validation.ConstraintValidator implementie- | ||
| ren, z.B. im Kontext der Bean Validation von Jakarta EE. | ||
| src/main/java/de.bund.bvl./utils Hilfsklassen und technische Detailimplementierungen, die Ebenen übergreifend zur Anwendung kommen. | ||
| src/main/java/de.bund.bvl./view | ||
| Die von der Implementierung nach außen präsentierten Systemschnittstellen. Dies betrifft sowohl | ||
| das UI als auch Webservice- und REST-Schnittstellen. | ||
| src/main/java/de.bund.bvl./view/filter Gegebenenfalls benötige Servlet-Filter der Webanwendung (implementieren javax.servlet.Fil- ter). In Kombination mit der WAF kann beispielsweise ein HTTPS-Filter implementiert werden, der Anfragen automatisch auf eine verschlüsselte Verbindung umleitet. Die Konfiguration erfolgt in src/main/webapp/WEB-INF/web.xml. | ||
| src/main/java/de.bund.bvl./view/handler | ||
| Gegebenenfalls benötigte Handler der Webanwendung (erweitern javax.faces.context.Excepti- | ||
| onHandler). In Kombination von @ViewScoped Backing-Beans kann ein Handler implementiert | ||
| werden, der das Logging von Stack-Traces bei abgelaufenen Sessions unterdrückt, beispielsweise | ||
| bei javax.faces.application.ViewExpiredException. Die Konfiguration erfolgt in | ||
| src/main/webapp/WEB-INF/faces-config.xml. | ||
| src/main/resources Ressourcen, die die Anwendung verwendet oder diese konfiguriert. | ||
| src/main/resources/templates | ||
| Ablageort für Freemarker-Templates (FTL). | ||
| src/main/resources/META-INF In der Jakarta-EE-Spezifikation festgelegter technischer Ordner für Metainformationen des Deploy- ments14, enthält bspw. Deskriptor persistence.xml | ||
| src/main/resources/META-INF/batch-jobs |
14 Bezüglich zulässiger Deskriptoren siehe auch
https://docs.jboss.org/author/display/WFLY8/Deployment+Descriptors+used+In+WildFly
Seite 32/35
[Seite 33]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
| Verzeichnis, Inhalt und Bedeutung | ||
|---|---|---|
| Ablageort für die XML-Deskriptoren der Arbeitsaufträge des Batch Processing. | ||
| src/main/scripts Ablageort für sämtliche SQL-Skripte (siehe Abschnitt 5.4). | ||
| src/main/webapp | ||
| Zentrales Quellcodeverzeichnis der Webanwendung. | ||
| src/main/webapp/WEB-INF In der Servlet-Spezifikation festgelegter technischer Ordner für die Konfiguration der Webanwen- dung, enthält bspw. die Deskriptoren beans.xml, faces-config.xml und web.xml. | ||
| src/main/webapp/resources | ||
| Ablageort der Ressourcen der Webanwendung. | ||
| src/main/webapp/resources/components Ablageort für selbstdefinierte JSF-Komponenten. | ||
| src/main/webapp/resources/templates | ||
| Ablageort für selbstdefinierte JSF-Templates. | ||
| src/main/webapp/resources/css Ablageort für die Stylesheet-Dateien. | ||
| src/main/webapp/resources/js | ||
| Ablageort für benötigte JavaScript-Dateien. | ||
| src/main/webapp/resources/images Ablageort für benötigte Bilddateien (JPG, PNG) | ||
| src/test | ||
| Hauptverzeichnis der Testquellcodes. | ||
| src/doc Ausgabeverzeichnis für gerendertes JavaDoc und ergänzende Dokumentationsmaterialien |
Seite 33/35
[Seite 34]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Anhang: Architekturkonzept
Abbildung 1 Mustervorlage für die Anwendungsarchitektur
Seite 34/35
[Seite 35]
Anhang D
| Standards zur Softwareentwicklung im BVL | ||
|---|---|---|
| BVL_TA_04_9306_000 | Version 4.0 |
Entsprechend den Vorgaben für das Architekturmodell (siehe Abschnitt 5.3), den zu berück-
sichtigenden Spezifikationen und der Organisation des Quellcodes (siehe Abschnitt 6.2) ver-
anschaulicht Abbildung 1 das empfohlene Grundgerüst für die Architektur der Anwendung.
Seite 35/35