Skip to main content

Component Description Template

Component description template. It contains the markdown template and examples of PlantUML graphics.

Main_ComponentName.md

Copy the contents to an empty markdown file and start editing. Remove the help text in block quotes and any unused sections.

# \<\<component\>\> ComponentName \{#description_ComponentName}

<!-- Exchange ComponentName above with the actual name of the component and set correct stereotype, for references a unique tag can be given in {#} part. -->

<!-- This template is to be used as the main page for the documentation of a component, sub-component or module. In the rest of this document the word component is used, but the same is valid for sub-components or modules. Rename the file to Main_<ComponentName>.md -->

---

## Introduction

<!-- Give an overview short description of the content of the component. -->
Introduction...

## Functionality

<!-- Optional. Describe any relevant end user/product functionality similar to a Description of Function. This can be used to describe more details compared to the capabilities. This describes *what* the component is doing (think of it as a black box and describe what it does), *how* it is done is described in the dynamic behavior section (this describes the inside of the box and how the functionality is realized). -->

---

## Context Diagram

<!-- Context diagram is optional. Use this if the context is not given by the layers above in the architecture. Write a textual description of the context and what included interfaces are used for. -->
This diagram shows...

```plantuml
@startuml
!include ContextDiagram.puml
@enduml
```

---

## Structure Diagram

<!-- Write a textual description of the structure of the component. -->
This diagram shows...

```plantuml
@startuml
!include StructureDiagram.puml
@enduml
```

### Interfaces

<!-- Write a short description of the interfaces used in the structure diagram and context diagram if applicable.
Type can be Interface or Conceptual interface. For conceptual interfaces the description can include information about public/internal and security. -->
Interfaces for the modules:
Name | Type | Description
-----------------------------------------------------|----------------------|-------
Interface1 | Conceptual interface | Description1 with public/internal and security related info.
[Interface2](@ref Namespace.SubNamespace.Interface2) | Interface | Description2
Interface3 | Conceptual interface | Description3 with public/internal and security related info.

### Components/Classes

<!-- Write a short description of the elements used in the structure diagram and context diagram if applicable.
Type can be Component, Module, Class, when referencing sub_components/modules use the name of the page. -->
Classes/Modules:
Name | Description
----------------------------------------------|--------
\subpage Description_Module | Description1
[Class2](@ref Namespace.SubNamespace.Class2) | Description2

---

## Dynamic behavior

<!-- The dynamic behavior of the component is described in the referred md-file. Note that this is supposed to describe how the component works internally. -->
\subpage DynamicBehavior_ComponentName

---

## Information Diagram

<!-- Optional section. Any relevant data models shall be described using information diagrams. -->
This diagram shows...

```plantuml
@startuml
!include InformationDiagram.puml
@enduml
```

---

## Security

<!-- Mandatory even if not applicable (at least needs a statement). Describe any security related information for the component. This can include a reference to threat models where the component is included and where any mitigation involves the component. Make sure that the threat model data flows and processes can be related to the components and interfaces. -->

ContextDiagram.puml

Copy the text to an empty plantuml file and start editing.

@startuml
skinparam component {
borderColor Black
ArrowColor Black
}

skinparam interface {
borderColor Black
}

' !include NCPlatformSDK.puml

component "This component" as ThisComp <<component>> #LightGray
component "Component1" as Comp1 <<component>>
component "Component2" as Comp2 <<component>>

interface "Interface1" as IF1

remove @unlinked

ThisComp -d( IF1
Comp1 -d- IF1

ThisComp -u- Comp2

@enduml

Context Diagram

InformationDiagram.puml

Copy the text to an empty PlantUML file and start editing.

@startuml
skinparam component {
borderColor Black
ArrowColor Black
BackgroundColor LightYellow
}

skinparam interface {
borderColor Black
}

skinparam note {
borderColor Black
}


component "Object1" AS Object1
component "Object2" as Object2_1
component "Object2" as Object2_2
component "Object3" as Object3
component "Object4" as Object4

Object1 o- Object4
Object1 <|-- Object3
Object1 "0..*" *-l- Object2_1
Object1 "0..*" *-l- Object2_2


@enduml

Information Diagram

StructureDiagram.puml

Copy the text to an empty PlantUML file and start editing.

@startuml
skinparam component {
borderColor Black
ArrowColor Black
}

skinparam interface {
borderColor Black
}

skinparam note {
borderColor Black
}

interface "Interface1" as IF1
interface "Interface2" as IF2
interface "Interface3" as IF3

component "ThisComponent" as ThisComp <<component>> #LightYellow {

component "Class1" AS Class1
component "Class2" as Class2
component "Class3" as Class3
component "Class4" as Class4

interface " " as IF12
interface " " as IF22
interface " " as IF32

IF22 -r- IF2
Class1 -r- IF22
IF12 -l-( IF1
Class2 -l-( IF12
IF32 -d-( IF3
Class4 -d-( IF32
Class3 -d-( IF32
Class1 o- Class4
Class1 <|-- Class3
Class1 "0..*" *-l- Class2

}

@enduml

Structure Diagram

Owner: Software Development Team