Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature 153 #211

Merged
merged 58 commits into from
Feb 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
79e47e2
Update java-project-ci.yml
olivierlemee Jan 6, 2023
f108b37
Merge pull request #202 from cybnity/feature-157
olivierlemee Jan 6, 2023
6c58f32
Merge branch 'main' into feature-133
olivierlemee Jan 12, 2023
034dca6
Merge branch 'main' into feature-157
olivierlemee Jan 12, 2023
af240ee
Merge branch 'integration' into staging
olivierlemee Jan 12, 2023
e74b661
Merge branch 'staging' into feature-157
olivierlemee Jan 12, 2023
2c66922
Merge branch 'staging' into feature-133
olivierlemee Jan 12, 2023
3a99b9b
Migrate to techstack project based on parent pom
olivierlemee Jan 12, 2023
c000c34
Merge pull request #203 from cybnity/feature-133
olivierlemee Jan 12, 2023
c62eed3
Merge branch 'staging' into feature-157
olivierlemee Jan 12, 2023
efd8c45
Add description of implementation sub-projects
olivierlemee Jan 12, 2023
7b708ed
Update README.md
olivierlemee Jan 12, 2023
e66ca72
runtime model
olivierlemee Jan 12, 2023
eb9445e
Update README.md
olivierlemee Jan 12, 2023
9e4819c
Update README.md
olivierlemee Jan 12, 2023
d2a44c6
add infrastructure layer example
olivierlemee Jan 12, 2023
7cb7275
Update README.md
olivierlemee Jan 12, 2023
90f2962
link to techstack
olivierlemee Jan 12, 2023
2509918
structure of feature module
olivierlemee Jan 12, 2023
164e7f9
Update pom.xml
olivierlemee Jan 12, 2023
4e3bc03
Update pom.xml
olivierlemee Jan 13, 2023
5d9d8f6
Update check-project-technical-quality.yml
olivierlemee Jan 13, 2023
4baa6df
Update java-project-ci.yml
olivierlemee Jan 13, 2023
067fccb
Merge pull request #205 from cybnity/feature-157
olivierlemee Jan 13, 2023
f379a3c
debug os condition evaluation for publishing
olivierlemee Jan 13, 2023
b41fdc1
Merge pull request #206 from cybnity/feature-133
olivierlemee Jan 13, 2023
5b9df77
Sub-projects structure
olivierlemee Jan 13, 2023
f46808a
add licences and notices per jar project
olivierlemee Jan 13, 2023
f939de5
Merge pull request #207 from cybnity/feature-157
olivierlemee Jan 13, 2023
8b8d150
Luttece client retained as Redis connector
olivierlemee Jan 13, 2023
225d466
create structure of UI module sub-projects
olivierlemee Jan 26, 2023
d97d193
create acsc features project structure
olivierlemee Jan 26, 2023
be5c659
ASCS frontend module project structure
olivierlemee Jan 27, 2023
66490cc
test of frontend start ok
olivierlemee Jan 27, 2023
e336eb7
documentation
olivierlemee Jan 27, 2023
fc8f823
Transfert of web backend implementation to messaging gw project
olivierlemee Jan 27, 2023
5354b65
transfert of frontend impl to dedicated shared projects
olivierlemee Jan 27, 2023
9be720d
update of UI layer documentation
olivierlemee Jan 27, 2023
17c3e4e
Update README.md
olivierlemee Jan 27, 2023
76aa8ce
Merge pull request #209 from cybnity/feature-157
olivierlemee Jan 27, 2023
0caa48a
update program development status
olivierlemee Jan 31, 2023
2128a3b
Update README.md
olivierlemee Jan 31, 2023
bbea6eb
Update README.md
olivierlemee Jan 31, 2023
2be96cd
Update README.md
olivierlemee Jan 31, 2023
c6574d3
remove no need properties
olivierlemee Jan 31, 2023
38876ef
documentation enhancement about sub-projects location
olivierlemee Feb 1, 2023
fac79fe
add purpose chapters
olivierlemee Feb 1, 2023
4bb40ed
Update mpp-ui-systems-stack.png
olivierlemee Feb 1, 2023
beed23d
add basic classes regarding backend and frontend projects
olivierlemee Feb 1, 2023
35e83bf
add basic generic and common classes reusable by any features impleme…
olivierlemee Feb 1, 2023
475546a
deactivate structured sub-projects but that are without any implement…
olivierlemee Feb 1, 2023
0245426
add license
olivierlemee Feb 1, 2023
447a0eb
Merge pull request #210 from cybnity/feature-157
olivierlemee Feb 1, 2023
f5dc4ee
renaming of common project as "framework"
olivierlemee Feb 2, 2023
7f513ca
Feature 153
olivierlemee Feb 2, 2023
2d82cc2
Update coding-conventions.md
olivierlemee Feb 2, 2023
386c72b
Update coding-conventions.md
olivierlemee Feb 2, 2023
0447689
Update pom.xml
olivierlemee Feb 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/check-project-technical-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:

- name: Compile and package binaries and resources targeted by the technical quality stage
run: |
mvn --batch-mode --update-snapshots --show-version -Drevision=${{ env.ARTIFACT_VERSION }} --fail-fast --file pom.xml -DcreateChecksum=true package -Dmaven.test.skip=true
mvn --batch-mode --update-snapshots --show-version -Dstage=technical-quality -Drevision=${{ env.ARTIFACT_VERSION }} --fail-fast --file pom.xml -DcreateChecksum=true package -Dmaven.test.skip=true
env:
MAVEN_USERNAME: ${{ secrets.SPACE_CYBNITY_OS_REPO_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.SPACE_CYBNITY_OS_REPO_PASSWORD }}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/java-project-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,8 +279,8 @@ jobs:
# Prepare a release for remote repository installation (published in place of old equals release name in remote repository, reviewed or not)
# Publish release of parent pom.xml and sub-projects (reusable by other development, or for processing by Automated Acceptance Test stage) that potentially replace previous equals version named
publish_version_to_release_remote_repository:
name: Release publishing (remote repo)
if: ${{ success() && !needs.define_project_release_name.outputs.is_snapshot }}
name: Release publishing
if: ${{ success() && needs.define_project_release_name.outputs.is_snapshot == 'false' }}
needs: [define_project_release_name, packaging, quality_verification]
uses: ./.github/workflows/publish-java-packages-version-to-repository.yml
with:
Expand All @@ -291,7 +291,7 @@ jobs:

# Prepare only a snapshot version for remote repository installation
publish_version_to_snapshot_remote_repository:
name: Snapshot version publishing (remote repo)
name: Snapshot version publishing
# By default, don't publish snapshot version on other repository than the local developer workstation's maven repository
# The Pull Request (PR) of development revision was approved and merged, but maybe work is not finished

Expand All @@ -301,7 +301,7 @@ jobs:
# or only when a reviewed tag is pushed only on the branch (e.g after a review already executed after closed PR)
# or only when a alpha tag is pushed only on the branch (e.g when feature developer or reviewer indicate that work is finished)
if: ${{ success()
&& needs.define_project_release_name.outputs.is_snapshot
&& needs.define_project_release_name.outputs.is_snapshot == 'true'
&& (
(github.event.pull_request.merged == true && github.event.pull_request.reviewDecision == 'approved')
||
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ buildNumber.properties
#.classpath
#.settings/
.flattened-pom.xml
implementations-line/cockpit-foundations/actions-scheduling/acsc-ui-modules/acsc-frontend/package-lock.json
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 9 additions & 4 deletions docs/uml/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ The source artifacts are managed into this directory and maintained via the [Ecl
Each Papyrus model file (.di) include internal structure hosting specific diagrams relative to its scope of documentation.

# FUNCTIONAL VIEW (Use Cases)
## Purpose
- Show the functionality of the system(s) as perceived by the external actors;
- Exposes the requirements of the system.

Expand All @@ -13,12 +14,13 @@ Source file named "Use case view":
- Static aspects (structural diagrams): use cases;
- Dynamic aspects (behavioral diagrams): interactions, statecharts, activities.
- Model sub-packages:
- Each context of the software (e.g Domain context) is described in a separate sub-package.
- Each context of the software (e.g Domain context) is described in a separate sub-package.

## Usage
Formalizes software functional and/or technical analysis according to the functional and technical requirements.

# DESIGN VIEW (Logical Components)
## Purpose
- Sub-capture how the functionality is designed inside the domain contexts;
- Logical view of systems and sub-systems.

Expand Down Expand Up @@ -62,6 +64,7 @@ Source file named "Design view":
Formalizes the specification of the software and sub-components produced during the solution analysis and technical design activities.

# PROCESS VIEW (Executions)
## Purpose
- Show the concurrency of the system(s);
- Encompasses the threads and processes that form the system's concurrency and synchronization mechanisms.

Expand All @@ -76,6 +79,7 @@ Source file named "Process view":
Describes execution models and synchronization rules, identified during the technical design phase and implementation rules definition.

# IMPLEMENTATION VIEW (Technical Components and Structures)
## Purpose
- Show the organization of the core components and files (e.g source code, setting files);
- Packaging models and dependencies distribution;
- Addresses the configuration management of the system's releases.
Expand All @@ -88,11 +92,12 @@ Source file named "Implementation view":
- [Implementation guidelines and principles](implementation/README.md)
- Configuration-management
- System-assembly

## Usage
Formalizes the maintenance documentation aligned with source codes developed, including specificities regarding technologies (e.g language requirements) and frameworks (e.g implementation templates, protocols) used for implementation of the software.

# DEPLOYMENT VIEW (Systems & Applications)
## Purpose
- Show the deployment of the systems in terms of physical architecture;
- Encompasses the node that form the system's hardware topology (e.g type of infrastructure components, network, virtual environments) on which the system executes (e.g resources requirements, runtime platform);
- Addresses the distribution (e.g flow opening), delivery (e.g procedures to respect), and installation (e.g resource prerequisites) of the parts that make up the physical system.
Expand All @@ -110,4 +115,4 @@ Source file named "Deployment view":
## Usage
Describes the environment(s), infrastructure and operating conditions required to install, activate and operate the systems safely.
#
[Back To Summary](../)
[Back To Summary](../)
11 changes: 11 additions & 0 deletions docs/uml/implementation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,16 @@ The assembly of specific modules can be customized for delivery of a business so
The CYBNITY open source is organized via a structure of Maven project's sub-modules regarding all the source codes developed by the team.
![image](Implementation_projects_structure.PNG)

### Development Tutorials and Conventions
Several coding documentations are available into the [how-to sub-directory](how-to) for assistance to developers.

The CYBNITY coding norms are considered like mandatory to apply and can be controlled via quality check process (e.g by Continuous Integration chain, source code reviews) and are origins for reject of source codes changes considered like violation of the documentation norm.

The CYBNITY conventions are more permissive because are considered as optional, without mandatory quality check (based on the developer motivation and skills), but can be transformed in norm after a period of application.
#### Conventions
- [Coding conventions](how-to/coding-conventions.md)
#### Norms
- Branch tagging norm

#
[Back To Parent](../)
44 changes: 44 additions & 0 deletions docs/uml/implementation/how-to/coding-conventions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## PURPOSE
Presentation of several coding conventions followed by the developers implementing the CYBNITY projects.

# SOURCE CODES DOCUMENTATION
## REQUIREMENTS LINKING
Specific annotations are available to link the specification documentations (e.g functional, architecture, security requirement...) managed in other repository than GitHub with the source codes developed as realization of them.

- Why it's important: to quickly navigate and control the quality of alignment between the specifications managed in any other tools (e.g Notion tool for Product Requirements Definition, Security control measures and policies, architecture concepts) with the implementation software codes.

- How: the __support framework library__ (dependency defined in parent `pom.xml` of any implementation project) provide specific reusable annotations for add link to requirement managed in an external documentation reference (link based on requirement identifier). The annotation is usable on several source code element types (e.g Method, Parameter, Package...).

For example, to add a reference to an architecture requirement (e.g identified as REQ_ARC_10) into a CYBNITY source code package (e.g into a `package-info.java` file):

```java
@CYBNITYRequirement(reqType = RequirementCategory.Maintainability, reqId = "10")
package org.cybnity.infrastructure.technical.message_bus.adapter.impl;

import org.cybnity.framework.support.annotation.CYBNITYRequirement;
import org.cybnity.framework.support.annotation.RequirementCategory;
```

## VULNERABILITIES LINKING
Specific annotation is also available to add any references to known vulnerabilities (e.g generated by reused external technologies which not was fixed; or regarding a specific security mitigation developed into a CYBNITY component) fixed into a CYBNITY source code and/or configuration file.

- Why it's important: some time some vulnerability are not quickly fixed by the technology partners or other open source projects, and CYBNITY program's developers can develop a fix code more quickly (e.g a temporary mitigation solution reducing the threat impact on the CYBNITY software including a dependency to the external problem) during the time for the partner to solve the problem into their software version.

- How: the __support framework library__ (dependency defined in parent `pom.xml` of any implementation project) provide specific reusable annotations for add link to vulnerability declaring by external stakeholder (e.g other software editor) and/or public documentation (e.g Mitre website). The annotation is usable on several source code element types (e.g Type, Method, Local variable, Type parameter...).

For example, to add a reference link to a Mitre published vulnerability (e.g identified as CVE-2022-33915) on a java method fixing the problem during mitigation period into a CYBNITY source code file:

```java
import org.cybnity.framework.support.annotation.VulnerabilityOrigin;
import org.cybnity.framework.support.annotation.ThreatOriginCategory;

class X {
@VulnerabilityOrigin(originType = ThreatOriginCategory.CVE, originId = "2022-33915")
public methodWhereVulnerabilityGenerateImpact(...) {

}
}
```

#
[Back To Parent](../)
104 changes: 99 additions & 5 deletions implementations-line/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,45 @@ Feature implementations versions are designed and delivered as official Foundati
### Sources Structure
Implementation components are built via Maven tool using a [standard Maven project structure](https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html).

# APPLICATIONS MODULES
The implementation projects are supported by an [Official TechStack version](https://github.com/cybnity/foundation-techstack/blob/feature-157/demonstrators-line/demonstrator-v0/v0-technologies-stack.md) defining the authorized technologies used by any the software sub-project.

# COCKPIT-FOUNDATION COMPONENTS
The source code managed in this area of Foundation project are about the capabilities provided to the users (e.g web ui services provided to user's web browser) via the user interface layer.

The implementation source codes realizes interactive functions provided by **UI Modules** (UI layer providing functional or technical capabilities) to deliver User eXperiences (UX) to the solution final users of CYBNITY solutions.

- [Actions & Scheduling UI module](cockpit-foundations/actions-scheduling)
- [Assets & Perimeters Protection UI module](cockpit-foundations/assets-perimeters-protection)
- [Automation UI module](cockpit-foundations/automation)
- [Awareness & Training UI module](cockpit-foundations/awareness-training)
- [Behaviours/Situations Anticipation & Control UI module](cockpit-foundations/behaviours-situations-anticipation-control)
- [Commandment UI module](cockpit-foundations/commandment)
- [Coordinations UI module](cockpit-foundations/coordination)
- [Dashboard & Threshold](cockpit-foundations/dashboard-threshold)
- [Defensive Maneuvers UI module](cockpit-foundations/defensive-maneuvers)
- [Defensive Responses & Controls UI module](cockpit-foundations/defensive-responses-controls)
- [Goals & Evidences UI module](cockpit-foundations/goals-evidences)
- [ISMS & Strategy UI module](cockpit-foundations/isms-strategy)
- [Missions & Programming UI module](cockpit-foundations/missions-programming)
- [Operational Excellence UI module](cockpit-foundations/operational-excellence)
- [Operational Recovery UI module](cockpit-foundations/operational-recovery)
- [Operations Cartography UI module](cockpit-foundations/operations-cartography)
- [SKPI & Dashboard UI module](cockpit-foundations/skpi)
- [Stakeholders & Responsibilities UI module](cockpit-foundations/stakeholders-responsibilities)
- [Standards & Compliances UI module](cockpit-foundations/standards-compliances)
- [Threat/Risks Prevention & Treatment UI module](cockpit-foundations/threats-risks-prevention-treatment)
- [Vulnerabilities Prevention & Treatment UI module](cockpit-foundations/vulnerabilities-prevention-treatment)

Some shared deployable modules (e. endpoints) are also implemented at the UI layer level:
- [Web Reactive Frontend server](cockpit-foundations/web-reactive-frontend) (ReactJS / Node.js web app)
- [Reactive Messaging Gateway](cockpit-foundations/reactive-messaging-gateway) (Vert.x Reactive Backend server)

![image](mpp-ui-technology-stack.png)

![image](mpp-ui-systems-stack.png)

# APPLICATION COMPONENTS
The source codes managed in this independent projects are dedicated to each CYBNITY applicative domain.
Each application module dedicated repository manages its source codes structure via repositories with prefix "domain-":
- [Access Control module](https://github.com/cybnity/domain-access-control)
- [API Management module](https://github.com/cybnity/domain-api-mgt)
Expand All @@ -28,8 +66,64 @@ Each application module dedicated repository manages its source codes structure
- [Trial & Training Management module](https://github.com/cybnity/domain-trial-training-mgt)
- [Vulnerability Management module](https://github.com/cybnity/domain-vulnerability-mgt)

# FEATURES MODULES
The source code are managed in this area of Foundation project.
Each application domain distributed into the Application Layer aggregates deployable implementation components:
- One **<< Domain Name >> Gateway Module** (messaging gateway as endpoint of the bounded context)
- Several deployable **Process Modules**
![image](mpp-app-technology-stack.png)

![image](mpp-app-systems-stack.png)

# FEATURE COMPONENTS
The features implementation modules providing services which can be embedded by an application domain and/or can be exposed as reusable/common/shared function at one or several layers of the CYBNITY software.

The implementation source codes mainly are **Java libraries** which can be reused.

For example, a common feature library can be embedded into an application domain or can be independently deployed as a micro-service serving several application domain (e.g as a cluster of a specific technical feature instances).

Several categories of features are implemented through Java libraries regarding:
- [domain](features/domain): libraries of cyber-serenity features helping final user to manage its ISMS via processes, workflow, combined set of application feature integrated into the UI capability components
- [feature-framework](features/domain/feature-framework): library of common and generic utility components (e.g technological classes reusable by any feature implementation project) that does not contain any business/domain functions
- [integrated-partners](features/integrated-partners): features provided by CYBNITY compatible partners' components (e.g accessory) and adapted via compatibility connectors
- [operating-system](features/operating-system): technical features provided by operating systems (e.g hypervisor, virtualization component)
- [physical](features/physical): features provided by physical devices integrated
- [technical](features/technical): features providing technical services (e.g strongbox, traceability, versioning, encryption) and implementing reusable functions by any CYBNITY component
- [transport](features/transport): features relative to communication layer between systems and/or application components (e.g firewalling, network monitoring)
- [workflow-process](features/workflow-process): features providing generic workflow and processes management implementation models

### Domain Layer
Each application domain can more or less separate its features in micro-services as deployable **Feature Modules** to manage the processing parallelization via Real-Time Stream Computation Units.
![image](mpp-domain-technology-stack.png)

![image](mpp-domain-systems-stack.png)

### Runtime Model of Feature Components
The scalability required by a specific feature component is supported by the implementation of a runtime model that include the deployment of a set of micro-service instances regarding it.
![image](scalable-runtime-model.png)

# INFRASTRUCTURE COMPONENTS
The source code managed in this area are about the infrastructure components supporting the features and applications modules.
For example, the implementation source code of an adapter client to a monitoring server (e.g proprietary solution integrated with CYBNITY over a connection adapter and/or via a protocol compatibility implementation) is provided as an infrastructure module.
Mainly, the **Infrastructure Modules** are provided as **Java libraries** of adaptation client implementations modules.

Several categories of infrastructure technologies are managed in terms of implementation codes:
- [common](infrastructures/common): shared and transversal structures of infrastructure data (e.g generic event)
- [continuity](infrastructures/continuity): clients of integration with Business Continuity systems
- [integration](infrastructures/integration): clients of integration with brokers of messages (e.g Redis cluster, Kafka cluster) allowing to discuss with other CYBNITY or third-parties systems
- [Users Interactions Space adapter](infrastructures/integration/system/users-interactions-broker/uib-adapters) to brokers cluster
- [Domains Interactions Space adapter](infrastructures/integration/system/domains-interactions-broker/dib-adapters) to brokers cluster
- [monitoring](infrastructures/monitoring): clients to systems of monitoring (e.g alerting, data visualization, event logging)
- [registry](infrastructures/registry): clients to registration systems (e.g contents indexing system)
- [security](infrastructures/security): clients to systems providing security services (e.g Single-Sign-On server, IAM server)
- [Access Control & SSO server](infrastructures/security/system/access-control-sso)
- [Identities & Access Management server](infrastructures/security/system/identities-access-management)
- [Secrets Management server](infrastructures/security/system/secrets-management)

Any implementation component can be categorized as a **Technical Service** (implementation code executing a behavior, or implementation of a system client as adapter implementation module) or as a **Integration API** (when exposing a CYBNITY API exposed to other systems as an input/output point via a standardized protocol).

### Shared Infrastructure Services
For example, the infrastructure implementation modules allow to manage the dependency with common systems reused (e.g based on open source and/or proprietary partners software instances) into a CYBNITY solution architecture deployment.
![image](mpp-infrastructure-systems-stack.png)

# SYSTEMS
System implementation source codes allowing to build the deploybale software components (e.g as virtualized systems) are managed in this repository.
### Common Transversal Components
Example of common event-based principles using a common infrastructure library regarding generic event.
![image](mvf-event-based-architecture.png)
Loading