Technical Constraints
Name | Description |
---|---|
Cloud Agnostic Architecture approach |
IRS provides a reference application/implementation which is deployable on any cloud ecosystem. There is no vendor lock to any cloud vendor. |
Spring Boot and the Spring Framework are used as the underlying framework for Java development. |
Spring Boot and the Spring Framework are used to create a simple, production-grade based application that can be deployed without any additional infrastructure components. Orchestration of application components and integration with other libraries/frameworks. |
Lombok |
Lombok for boilerplate code generation. Keeping code concise improves quality and maintainability. |
Kubernetes is used for container orchestration |
Kubernetes as container orchestration system used for software deployment, scaling and management of the IRS application. This supports our software infrastructure and ensures efficient management and scalability of the IRS reference application. |
Docker containers are used to provide a microservice oriented architecture |
Deployments are made on reliable production-ready images. Avoiding repetitive, mundane configuration tasks for container orchestration. |
Docker Compose is used to define and tune multi-container-applications based on Docker container technologies. |
Docker containers to develop independently of the underlying OS. |
Organizational Constraints
Name | Description | Comment |
---|---|---|
CX-Services |
Provide IRS as a C-X Shared Data Service. |
|
App Marketplace & API Connection |
The IRS Application must be available to the user in the App Marketplace. |
App Marketplace & API Connection |
Federal Ministry for Economic Affairs and Energy (BMWi) promotion |
The Federal Ministry for Economic Affairs and Energy (BMWi) promotes the project and provides funds for the project. |
|
Technology Readiness Level (TRL) for products developed within the CX consortia |
As IRS is a reference implementation, the Technology Readiness Level (TRL) must not be above TRL 8. |
|
Operational Readiness for Release 1 has to be fulfilled |
The minimum requirements for release 1 has to be archived. Later on, the Operational Readiness for Release has to be fulfilled according to the requirements of the C-X consortia. |
Political constraints
Name | Description |
---|---|
Open Source |
FOSS licenses approved by the Eclipse Foundation must be used. This could represent the initial set that the CX community agrees on to regulate the content contribution under FOSS licenses. |
Apache License 2.0 |
Apache License 2.0 is one of the approved licenses that should be used to respect and guarantee Intellectual Property (IP). |
Java OpenJDK Version JDK >= 17 |
IRS provides an open source application standard. It uses OpenJDK, which is licensed under the GNU General Public License (GNU GPL) version 2. |
Development conventions
Name | Description |
---|---|
Architecture documentation |
Architectural documentation of the IRS reference application/implementation following the ARC42 template. |
Coding guidelines |
We follow the Google Java Style Guide. This is ensured by using the unified code formatter in the team and enforcing the style via Maven and Checkstyle / PMD. |
Executable Bundle provided via the App Marketplace |
Since IRS is available in the App Marketplace, the application should be provided in one executable bundle. |
Module structure |
The entire build is driven by a Maven file, which runs itself from a single Dockerfile. |
Code Analysis, Linting and Code Coverage |
A consistent style increases the readability and maintainability of the code base. Hence, we use analyzers to enforce consistency and style rules. We enforce the code style and rules in the CI to avoid merging non-compliant code. |
Code analysis, linting and code coverage
Tool | Scope | Rule | Configuration (via files / annotations) |
---|---|---|---|
Tidy |
Enforce Maven POM code convention |
Fail build on untidy pom.xml |
N/A |
FindSecBugs |
SpotBugs plugin to add security bug coverage |
Fail build on violations |
N/A |
Checkstyle |
Enforce coding standards |
Fail build on violations |
.config/checkstyle-suppressions.xml @SuppressWarnings("checkstyle:XXX") |
PMD |
Source code analyzer to find common programming flaws |
Fail build on violations |
.config/pmd-rules.xml @SuppressWarnings("PMD.XXX") |
JaCoCo |
Test coverage |
Fail build on coverage < 80% |
pom.xml @ExcludeFromCodeCoverageGeneratedReport |
Dependabot |
Automated dependency updates built into GitHub. Provides pull requests for dependency updates. |
Every dependency update automatically generates a pull request. |
.github/dependabot.yml |
CodeQl |
Discover vulnerabilities across a code base. |
.github/workflows/codeql.yml |
|
KICS |
Infrastructure as Code scannings. |
.github/workflows/kics.yml |