archsight 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/docs/icons.md +26 -0
  3. data/docs/index.md.erb +17 -0
  4. data/docs/modeling.md +147 -2
  5. data/docs/togaf.md +4 -1
  6. data/lib/archsight/annotations/asset_annotations.rb +34 -0
  7. data/lib/archsight/annotations/risk_annotations.rb +21 -0
  8. data/lib/archsight/documentation.rb +3 -2
  9. data/lib/archsight/linter.rb +104 -0
  10. data/lib/archsight/resources/application_component.rb +8 -1
  11. data/lib/archsight/resources/application_event.rb +79 -0
  12. data/lib/archsight/resources/application_service.rb +6 -1
  13. data/lib/archsight/resources/business_actor.rb +9 -1
  14. data/lib/archsight/resources/business_control.rb +10 -2
  15. data/lib/archsight/resources/business_event.rb +79 -0
  16. data/lib/archsight/resources/business_process.rb +8 -1
  17. data/lib/archsight/resources/business_role.rb +69 -0
  18. data/lib/archsight/resources/compliance_evidence.rb +8 -2
  19. data/lib/archsight/resources/data_object.rb +6 -1
  20. data/lib/archsight/resources/implementation_deliverable.rb +62 -0
  21. data/lib/archsight/resources/implementation_event.rb +52 -0
  22. data/lib/archsight/resources/implementation_gap.rb +49 -0
  23. data/lib/archsight/resources/implementation_plateau.rb +61 -0
  24. data/lib/archsight/resources/implementation_work_package.rb +83 -0
  25. data/lib/archsight/resources/motivation_assessment.rb +121 -0
  26. data/lib/archsight/resources/motivation_constraint.rb +7 -1
  27. data/lib/archsight/resources/motivation_driver.rb +50 -0
  28. data/lib/archsight/resources/motivation_goal.rb +13 -1
  29. data/lib/archsight/resources/motivation_principle.rb +75 -0
  30. data/lib/archsight/resources/motivation_requirement.rb +12 -2
  31. data/lib/archsight/resources/motivation_stakeholder.rb +7 -0
  32. data/lib/archsight/resources/page.rb +5 -0
  33. data/lib/archsight/resources/technology_event.rb +80 -0
  34. data/lib/archsight/resources/technology_node.rb +7 -1
  35. data/lib/archsight/version.rb +1 -1
  36. data/lib/archsight/web/public/vue/{ApiDocsPage-DoOxKjG0.js → ApiDocsPage-BgqnQgwa.js} +1 -1
  37. data/lib/archsight/web/public/vue/{DocPage-CfsC3CeQ.js → DocPage-CNO71nBH.js} +1 -1
  38. data/lib/archsight/web/public/vue/{EditorPage-CsJA0q8n.js → EditorPage-DR0FCNTz.js} +1 -1
  39. data/lib/archsight/web/public/vue/{ErrorPage-OJpJz9df.js → ErrorPage-BfYArv6s.js} +1 -1
  40. data/lib/archsight/web/public/vue/{GraphView-CBq6oFRV.js → GraphView-BVTW30Ak.js} +1 -1
  41. data/lib/archsight/web/public/vue/HomePage-Wk9P4Pma.js +2 -0
  42. data/lib/archsight/web/public/vue/{InstanceRouter-DQz-SsQq.js → InstanceRouter-BV8ycydz.js} +1 -1
  43. data/lib/archsight/web/public/vue/{KindList-4q0K9Cll.js → KindList-C8yMsN5J.js} +1 -1
  44. data/lib/archsight/web/public/vue/{PageView-DzeGnvoS.js → PageView-BaN6TyJB.js} +1 -1
  45. data/lib/archsight/web/public/vue/{QueryError-kg6Yf-pW.js → QueryError-D790wH-a.js} +1 -1
  46. data/lib/archsight/web/public/vue/{ResourceList-Df_0e0qt.js → ResourceList-D-66nas2.js} +1 -1
  47. data/lib/archsight/web/public/vue/{SearchResults-CyPUZZSC.css → SearchResults-BewvsfOc.css} +1 -1
  48. data/lib/archsight/web/public/vue/SearchResults-CHyqIerQ.js +1 -0
  49. data/lib/archsight/web/public/vue/{WikiPage-DrvCHwJ7.js → WikiPage-D2svpk6B.js} +1 -1
  50. data/lib/archsight/web/public/vue/{index-D0Q5GZRs.js → index-BXXkUK1V.js} +2 -2
  51. data/lib/archsight/web/public/vue/{index-oF-iyZvk.css → index-Cov1SnzY.css} +1 -1
  52. data/lib/archsight/web/public/vue/{useGraphviz-DweKV7Kg.js → useGraphviz-DlSnFeCL.js} +12 -0
  53. data/lib/archsight/web/public/vue.html +2 -2
  54. metadata +32 -18
  55. data/lib/archsight/web/public/vue/HomePage-BwgMLgVC.js +0 -2
  56. data/lib/archsight/web/public/vue/SearchResults-CKgY6_wH.js +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  # BusinessActor represents teams or organizational units
4
4
  class Archsight::Resources::BusinessActor < Archsight::Resources::Base
5
- include_annotations :git, :architecture, :generated
5
+ include_annotations :git, :architecture, :generated, :asset, :risk
6
6
 
7
7
  description <<~MD
8
8
  Represents a team, organizational unit, or external entity that performs business behavior.
@@ -25,6 +25,14 @@ class Archsight::Resources::BusinessActor < Archsight::Resources::Base
25
25
  - External vendors or partners
26
26
  - Support organizations
27
27
  - Cross-functional groups
28
+
29
+ ## Security and risk modelling
30
+
31
+ - **Threat agent:** an actor (also an external one, such as an attacker group or a supplier) can be the
32
+ `causedBy` of a threat or loss event.
33
+ - **Owner and executor:** actors own risks (`MotivationAssessment` `ownedBy`), policies and controls, directly or through a `BusinessRole` they `performedBy`.
34
+ - **Asset:** a supplier or a team can be an asset at risk; set the `asset/*` profile and `assesses` it from a
35
+ supplier assessment.
28
36
  MD
29
37
 
30
38
  icon "community"
@@ -2,7 +2,7 @@
2
2
 
3
3
  # BusinessControl represents a control that guides a business process
4
4
  class Archsight::Resources::BusinessControl < Archsight::Resources::Base
5
- include_annotations :git, :architecture
5
+ include_annotations :git, :architecture, :risk
6
6
 
7
7
  description <<~MD
8
8
  Represents a control: a safeguard or decision step with an owner that guides how a business process is carried out.
@@ -27,7 +27,7 @@ class Archsight::Resources::BusinessControl < Archsight::Resources::Base
27
27
  ## How it connects
28
28
 
29
29
  - A `BusinessProcess` is `guidedBy` the control
30
- - The control is `ownedBy` the actor that is accountable for it and `executedBy` the actors that carry it out
30
+ - The control is `ownedBy` the actor or role that is accountable for it and `executedBy` the actors or roles that carry it out
31
31
  - The control `satisfies` requirements and is `evidencedBy` compliance evidence
32
32
 
33
33
  A control addresses requirements from the **process side**. Whether an application implements a requirement is
@@ -36,6 +36,12 @@ class Archsight::Resources::BusinessControl < Archsight::Resources::Base
36
36
  `evidence/type` of that evidence to `process`, `documentation` or `audit-log`.
37
37
 
38
38
  Put the best practices and the evidence requirements of a control in the description.
39
+
40
+ ## Security and risk modelling
41
+
42
+ A control is the process-side implementation of a control measure. `satisfies` the requirements (catalogue
43
+ controls and control measures); a risk it reduces is `mitigatedBy` the control (written on the assessment).
44
+ Group controls with `risk/domain` and `risk/category`.
39
45
  MD
40
46
 
41
47
  icon "shield-search"
@@ -75,6 +81,8 @@ class Archsight::Resources::BusinessControl < Archsight::Resources::Base
75
81
 
76
82
  relation :ownedBy, :businessActors, :BusinessActor
77
83
  relation :executedBy, :businessActors, :BusinessActor
84
+ relation :ownedBy, :businessRoles, :BusinessRole
85
+ relation :executedBy, :businessRoles, :BusinessRole
78
86
  relation :satisfies, :motivationRequirements, :MotivationRequirement
79
87
  relation :evidencedBy, :complianceEvidences, :ComplianceEvidence
80
88
  end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ # BusinessEvent represents a business event: something that happens in the business and triggers or interrupts business behavior
4
+ class Archsight::Resources::BusinessEvent < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents a business event: something that happens in the business and triggers or interrupts business behavior.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Business
13
+ **Aspect:** Behavior
14
+
15
+ An event is something that happens and influences behavior. It does not last: it triggers or interrupts
16
+ processes and services. In the risk and security overlay of the Open Group paper (*Modeling Enterprise Risk
17
+ Management and Security with the ArchiMate Language*) a threat event and a loss event are events that carry a
18
+ type; set `event/type` to say which.
19
+
20
+ ## Usage
21
+
22
+ Use BusinessEvent for events on the business level:
23
+
24
+ - Threat events and loss events of the business (fraud, supplier failure, loss of a facility, a failed audit)
25
+ - Incidents that stop a process or a service
26
+ - Triggers of business processes (a customer order, the end of a quarter)
27
+
28
+ ## Event types
29
+
30
+ - `threat-event`: an event with the potential to harm an asset; it can trigger a loss event
31
+ - `attack`: a threat event caused by intentional malicious activity
32
+ - `loss-event`: an event that harms an asset (a hazard materialises, a vulnerability is exploited)
33
+ - `incident`: a loss event that has happened
34
+ - `opportunity-event`: an event that can add value
35
+ - `audit`, `scan`, `change`: events that produce assessments or alter the architecture
36
+ - `other`
37
+
38
+ Filter, group and query by `event/type`, `risk/domain` and `risk/category` to see, for example, every loss
39
+ event of a risk domain.
40
+
41
+ ## How it connects
42
+
43
+ - A threat event `triggers` a loss event or a process or service; threat and loss events may sit on different
44
+ layers (a technology event triggers an application or business event)
45
+ - `causedBy` the threat agent (an actor, component or node)
46
+ - `affects` the assets it harms
47
+ - A `MotivationDriver` (the threat) `triggers` it; a vulnerability `MotivationAssessment` `influences` it
48
+ MD
49
+
50
+ icon "flash"
51
+ layer "business"
52
+
53
+ annotation "event/type",
54
+ description: "What kind of event this is (specialization of the event, see the risk and security overlay)",
55
+ enum: %w[threat-event attack loss-event incident opportunity-event audit scan change other],
56
+ filter: :word,
57
+ summary: true
58
+
59
+ annotation "event/severity",
60
+ description: "Severity of the event",
61
+ enum: %w[info low medium high critical],
62
+ filter: :word,
63
+ summary: true
64
+
65
+ annotation "event/occurred",
66
+ description: "When the event happened or is expected (ISO 8601 date or time)",
67
+ title: "Occurred",
68
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
69
+
70
+ relation :triggers, :businessProcesses, :BusinessProcess
71
+ relation :triggers, :businessEvents, :BusinessEvent
72
+ relation :causedBy, :businessActors, :BusinessActor
73
+ relation :causedBy, :applicationComponents, :ApplicationComponent
74
+ relation :causedBy, :technologyNodes, :TechnologyNode
75
+ relation :affects, :businessProcesses, :BusinessProcess
76
+ relation :affects, :businessProducts, :BusinessProduct
77
+ relation :affects, :businessActors, :BusinessActor
78
+ relation :affects, :dataObjects, :DataObject
79
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # BusinessProcess represents a structured business workflow or procedure
4
4
  class Archsight::Resources::BusinessProcess < Archsight::Resources::Base
5
- include_annotations :git, :architecture
5
+ include_annotations :git, :architecture, :asset, :risk
6
6
 
7
7
  description <<~MD
8
8
  Represents a sequence of business behaviors that achieves a specific outcome.
@@ -25,6 +25,12 @@ class Archsight::Resources::BusinessProcess < Archsight::Resources::Base
25
25
  - Change management processes
26
26
  - Release deployment pipelines
27
27
  - Support escalation processes
28
+
29
+ ## Security and risk modelling
30
+
31
+ A process is an asset at risk (set `asset/value` and the protection needs `asset/confidentiality`,
32
+ `asset/integrity`, `asset/availability`), is `guidedBy` the controls that protect it, is hit by loss
33
+ events and is triggered by events. Group it with `risk/domain`.
28
34
  MD
29
35
 
30
36
  icon "kanban-board"
@@ -34,5 +40,6 @@ class Archsight::Resources::BusinessProcess < Archsight::Resources::Base
34
40
  relation :realizes, :motivationRequirements, :MotivationRequirement
35
41
  relation :servedBy, :applicationServices, :ApplicationService
36
42
  relation :performedBy, :businessActors, :BusinessActor
43
+ relation :performedBy, :businessRoles, :BusinessRole
37
44
  relation :guidedBy, :businessControls, :BusinessControl
38
45
  end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ # BusinessRole represents a responsibility that actors take on
4
+ class Archsight::Resources::BusinessRole < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents the responsibility for performing specific behavior, to which an actor can be assigned.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Business
13
+ **Aspect:** Active Structure
14
+
15
+ A business role is the responsibility for performing specific behavior, to which an actor can be assigned. The
16
+ role is what a process, a control or a risk refers to; the actor (a team) holds the role. Changing who holds the
17
+ role changes it everywhere it is used.
18
+
19
+ ## Usage
20
+
21
+ Use BusinessRole to represent:
22
+
23
+ - Roles of an ISMS: information security officer, data protection officer, control owner, control executor,
24
+ risk owner
25
+ - Roles in a process (incident manager, release approver)
26
+ - Any responsibility that should not be tied to one team by name
27
+
28
+ ## How it connects
29
+
30
+ The responsibility edges point down to the role, and the role points down to the actor that holds it:
31
+
32
+ ```
33
+ BusinessProcess ──performedBy──▶ BusinessRole ──performedBy──▶ BusinessActor
34
+ BusinessControl ──ownedBy / executedBy──▶ BusinessRole
35
+ ```
36
+
37
+ - A `BusinessProcess` is `performedBy` the role, a `BusinessControl` is `ownedBy` and `executedBy` it
38
+ - Assessments, principles, work packages, deliverables and implementation events are `ownedBy` it
39
+ - The role is `performedBy` the actors that hold it
40
+ - Pointing straight at an actor stays valid; use a role where the responsibility has a name of its own
41
+
42
+ ## Security and risk modelling
43
+
44
+ Roles carry the accountability of the ISMS: the owner and executor roles of controls (BSI C5, ITGS), the owner of
45
+ a risk, the issuer of a policy. Use `role/type` to tell owners, executors and officers apart and `risk/domain`
46
+ to group roles by context.
47
+ MD
48
+
49
+ icon "user-badge-check"
50
+ layer "business"
51
+
52
+ annotation "role/id",
53
+ description: "Identifier of the role in its list (e.g. ISB, DPO)",
54
+ title: "Role ID",
55
+ summary: true
56
+
57
+ annotation "role/type",
58
+ description: "What kind of responsibility the role is (specialization of the role)",
59
+ enum: %w[owner executor officer reviewer operator other],
60
+ filter: :word,
61
+ summary: true
62
+
63
+ annotation "role/scope",
64
+ description: "What the role is responsible for, in a short paragraph",
65
+ title: "Scope",
66
+ format: :markdown
67
+
68
+ relation :performedBy, :businessActors, :BusinessActor
69
+ end
@@ -9,7 +9,7 @@ class Archsight::Resources::ComplianceEvidence < Archsight::Resources::Base
9
9
 
10
10
  ## ArchiMate Definition
11
11
 
12
- **Layer:** Implementation & Migration
12
+ **Layer:** Business (as a kind; ArchiMate would place evidence in Implementation & Migration)
13
13
  **Aspect:** Passive Structure
14
14
 
15
15
  Compliance evidence represents tangible proof that a system or process meets specific
@@ -32,6 +32,12 @@ class Archsight::Resources::ComplianceEvidence < Archsight::Resources::Base
32
32
  that resource meets the requirement it `satisfies`
33
33
  - **Of a control:** linked with `evidencedBy` from a `BusinessControl`; the records the control produces
34
34
  (reviews, diagrams, change history, audit logs). Use `evidence/type` `process`, `documentation` or `audit-log`
35
+
36
+ ## Security and risk modelling
37
+
38
+ Evidence is the proof that a control measure works. Use `evidence/status` `not-applicable` when the requirement
39
+ does not apply (BSI "entbehrlich"). Evidence of risk treatment (a test, a review, an audit report) is linked
40
+ from the control or application it is about.
35
41
  MD
36
42
 
37
43
  icon "shield-check"
@@ -44,7 +50,7 @@ class Archsight::Resources::ComplianceEvidence < Archsight::Resources::Base
44
50
 
45
51
  annotation "evidence/status",
46
52
  description: "Current status of evidence",
47
- enum: %w[implemented partial not-implemented],
53
+ enum: %w[implemented partial not-implemented not-applicable],
48
54
  summary: true
49
55
 
50
56
  # The structured answer to "how does the evidenced resource meet the requirement": one markdown field per
@@ -2,7 +2,7 @@
2
2
 
3
3
  # DataObject represents data structured for automated processing (ArchiMate Application Layer)
4
4
  class Archsight::Resources::DataObject < Archsight::Resources::Base
5
- include_annotations :git, :architecture, :generated
5
+ include_annotations :git, :architecture, :generated, :asset, :risk
6
6
 
7
7
  description <<~MD
8
8
  Represents data structured for automated processing by applications.
@@ -25,6 +25,11 @@ class Archsight::Resources::DataObject < Archsight::Resources::Base
25
25
  - Message payloads
26
26
  - Configuration structures
27
27
  - Domain models
28
+
29
+ ## Security and risk modelling
30
+
31
+ Data objects carry the information assets: set `asset/value` and the protection needs
32
+ (`asset/confidentiality`, `asset/integrity`, `asset/availability`, BSI Schutzbedarf), and `risk/domain`.
28
33
  MD
29
34
 
30
35
  icon "database"
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ImplementationDeliverable represents a precisely defined result of a work package
4
+ class Archsight::Resources::ImplementationDeliverable < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents a precisely defined result of a work package.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Implementation & Migration
13
+ **Aspect:** Passive Structure
14
+
15
+ A deliverable is a tangible or intangible result that a work package produces: a document, a system, a changed
16
+ process. It realizes requirements, goals and plateaus.
17
+
18
+ ## Usage
19
+
20
+ Use ImplementationDeliverable to represent:
21
+
22
+ - Documents and reports produced by a project or an audit
23
+ - Systems and process changes that go live
24
+ - The artefact that becomes compliance evidence once it exists
25
+
26
+ ## How it connects
27
+
28
+ - A `ImplementationWorkPackage` `realizes` it
29
+ - It is `ownedBy` an actor and `realizes` plateaus, requirements, goals, outcomes and `ComplianceEvidence`
30
+
31
+ ## Security and risk modelling
32
+
33
+ A deliverable of type `evidence` that `realizes` a `ComplianceEvidence` ties the plan (work package) to the proof
34
+ (evidence) of a control measure.
35
+ MD
36
+
37
+ icon "package"
38
+ layer "implementation"
39
+
40
+ annotation "deliverable/type",
41
+ description: "What kind of result this is (specialization of the deliverable)",
42
+ enum: %w[document system process-change report evidence],
43
+ filter: :word,
44
+ summary: true
45
+ annotation "deliverable/status",
46
+ description: "Where the result is",
47
+ enum: %w[planned in-progress delivered accepted],
48
+ filter: :word,
49
+ summary: true
50
+ annotation "deliverable/due",
51
+ description: "When the result is due (ISO 8601 date or time)",
52
+ title: "Due",
53
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
54
+
55
+ relation :ownedBy, :businessActors, :BusinessActor
56
+ relation :ownedBy, :businessRoles, :BusinessRole
57
+ relation :realizes, :implementationPlateaus, :ImplementationPlateau
58
+ relation :realizes, :motivationRequirements, :MotivationRequirement
59
+ relation :realizes, :goals, :MotivationGoal
60
+ relation :realizes, :outcomes, :MotivationOutcome
61
+ relation :realizes, :complianceEvidences, :ComplianceEvidence
62
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ImplementationEvent represents a state change related to implementation or migration
4
+ class Archsight::Resources::ImplementationEvent < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents a state change related to implementation or migration.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Implementation & Migration
13
+ **Aspect:** Behavior
14
+
15
+ An implementation event is something that happens during implementation or migration and may trigger work: a
16
+ milestone reached, a go-live, a decommissioning, a review date or a deadline.
17
+
18
+ ## Usage
19
+
20
+ Use ImplementationEvent to represent:
21
+
22
+ - Milestones and go-lives of a roadmap
23
+ - Deadlines (certification audit, end of a transition period)
24
+ - Reviews and decommissioning dates
25
+
26
+ ## How it connects
27
+
28
+ - `ownedBy` an actor
29
+ - `triggers` work packages and plateaus
30
+
31
+ Events of the running architecture (threat and loss events, incidents) are `BusinessEvent`, `ApplicationEvent`
32
+ and `TechnologyEvent`.
33
+ MD
34
+
35
+ icon "calendar-check"
36
+ layer "implementation"
37
+
38
+ annotation "event/type",
39
+ description: "What kind of event this is (specialization of the implementation event)",
40
+ enum: %w[milestone go-live decommission review deadline],
41
+ filter: :word,
42
+ summary: true
43
+ annotation "event/occurred",
44
+ description: "When the event happens or happened (ISO 8601 date or time)",
45
+ title: "Occurred",
46
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
47
+
48
+ relation :ownedBy, :businessActors, :BusinessActor
49
+ relation :ownedBy, :businessRoles, :BusinessRole
50
+ relation :triggers, :implementationWorkPackages, :ImplementationWorkPackage
51
+ relation :triggers, :implementationPlateaus, :ImplementationPlateau
52
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ImplementationGap represents the difference between two plateaus
4
+ class Archsight::Resources::ImplementationGap < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents a statement of difference between two plateaus.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Implementation & Migration
13
+ **Aspect:** Passive Structure
14
+
15
+ A gap is what is missing between a baseline and a target plateau: elements to add, change or remove. It is
16
+ the starting point of gap analysis in the TOGAF ADM.
17
+
18
+ ## Usage
19
+
20
+ Use ImplementationGap to represent:
21
+
22
+ - The difference between today's and the target architecture
23
+ - Requirements of a standard that are not met yet (compliance gap)
24
+ - The part of a plateau transition that a work package still has to deliver
25
+
26
+ ## How it connects
27
+
28
+ - A gap `compares` the plateaus it lies between (baseline and target)
29
+ - It is `closedBy` the work packages and deliverables that remove it
30
+ MD
31
+
32
+ icon "git-compare"
33
+ layer "implementation"
34
+
35
+ annotation "gap/status",
36
+ description: "Whether the gap is being closed",
37
+ enum: %w[open closing closed],
38
+ filter: :word,
39
+ summary: true
40
+ annotation "gap/impact",
41
+ description: "How much the gap matters",
42
+ enum: %w[low medium high critical],
43
+ filter: :word,
44
+ summary: true
45
+
46
+ relation :compares, :implementationPlateaus, :ImplementationPlateau
47
+ relation :closedBy, :implementationWorkPackages, :ImplementationWorkPackage
48
+ relation :closedBy, :implementationDeliverables, :ImplementationDeliverable
49
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ImplementationPlateau represents a relatively stable state of the architecture
4
+ class Archsight::Resources::ImplementationPlateau < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents a relatively stable state of the architecture that exists during a limited period of time.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Implementation & Migration
13
+ **Aspect:** Composite
14
+
15
+ A plateau is a coherent set of architecture elements as they exist (or will exist) in one period. Plateaus
16
+ are the points of a migration path: baseline, transition states, target.
17
+
18
+ ## Usage
19
+
20
+ Use ImplementationPlateau to represent:
21
+
22
+ - The baseline (today's architecture) and the target architecture
23
+ - Transition architectures of a roadmap
24
+ - The state of the ISMS scope at a certification date
25
+
26
+ ## How it connects
27
+
28
+ - A plateau `contains` the components, services, nodes, processes and requirements that belong to it
29
+ - It `triggers` the next plateau (migration path)
30
+ - A `ImplementationDeliverable` `realizes` it; a `ImplementationGap` `compares` two plateaus
31
+ MD
32
+
33
+ icon "packages"
34
+ layer "implementation"
35
+
36
+ annotation "plateau/type",
37
+ description: "Position on the migration path",
38
+ enum: %w[baseline transition target],
39
+ filter: :word,
40
+ summary: true
41
+ annotation "plateau/status",
42
+ description: "Where the plateau is",
43
+ enum: %w[planned current past],
44
+ filter: :word,
45
+ summary: true
46
+ annotation "plateau/from",
47
+ description: "When the plateau starts (ISO 8601 date or time)",
48
+ title: "From",
49
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
50
+ annotation "plateau/until",
51
+ description: "When the plateau ends (ISO 8601 date or time)",
52
+ title: "Until",
53
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
54
+
55
+ relation :contains, :applicationComponents, :ApplicationComponent
56
+ relation :contains, :applicationServices, :ApplicationService
57
+ relation :contains, :technologyNodes, :TechnologyNode
58
+ relation :contains, :businessProcesses, :BusinessProcess
59
+ relation :contains, :motivationRequirements, :MotivationRequirement
60
+ relation :triggers, :implementationPlateaus, :ImplementationPlateau
61
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ImplementationWorkPackage represents a series of actions that achieves a result within a time frame
4
+ class Archsight::Resources::ImplementationWorkPackage < Archsight::Resources::Base
5
+ include_annotations :git, :architecture, :risk
6
+
7
+ description <<~MD
8
+ Represents a series of actions identified and designed to achieve specific results within specified time and resource constraints.
9
+
10
+ ## ArchiMate Definition
11
+
12
+ **Layer:** Implementation & Migration
13
+ **Aspect:** Behavior
14
+
15
+ A work package is a piece of work with a defined start and end that produces deliverables. It is how the
16
+ architecture changes: projects, measures, remediation of findings, roadmap items.
17
+
18
+ ## Usage
19
+
20
+ Use ImplementationWorkPackage to represent:
21
+
22
+ - Projects and roadmap items that move the architecture from one plateau to the next
23
+ - Measures and realisation plans of an ISMS (due date, status, owner)
24
+ - Remediation of a risk, vulnerability or audit finding (the `MotivationAssessment` is `mitigatedBy` the work package)
25
+ - Audit programmes and recurring reviews
26
+
27
+ ## How it connects
28
+
29
+ - `ownedBy` the accountable actor or role, `performedBy` the actors or roles that carry it out
30
+ - `realizes` deliverables (its results), requirements and goals
31
+ - `affects` the assets it changes; the assessments (risks, findings) it treats are `mitigatedBy` it (written on the assessment)
32
+ - `triggers` the work packages that follow it; an `ImplementationEvent` can trigger it
33
+ - A `ImplementationGap` is `closedBy` it
34
+
35
+ ## Security and risk modelling
36
+
37
+ Set `workpackage/type` `remediation` and list the work package under `mitigatedBy` of the risk or finding to see what is open; filter
38
+ by `workpackage/status`, `workpackage/due` and `risk/domain` for the plan of one domain.
39
+ MD
40
+
41
+ icon "hammer"
42
+ layer "implementation"
43
+
44
+ annotation "workpackage/type",
45
+ description: "What kind of work this is (specialization of the work package)",
46
+ enum: %w[project measure remediation audit-programme change],
47
+ filter: :word,
48
+ summary: true
49
+ annotation "workpackage/status",
50
+ description: "Where the work is",
51
+ enum: %w[planned in-progress done cancelled],
52
+ filter: :word,
53
+ summary: true
54
+ annotation "workpackage/priority",
55
+ description: "How urgent the work is",
56
+ enum: %w[low medium high critical],
57
+ filter: :word
58
+ annotation "workpackage/start",
59
+ description: "When the work starts (ISO 8601 date or time)",
60
+ title: "Start",
61
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
62
+ annotation "workpackage/due",
63
+ description: "When the work is due (ISO 8601 date or time)",
64
+ title: "Due",
65
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
66
+ annotation "workpackage/completed",
67
+ description: "When the work was completed (ISO 8601 date or time)",
68
+ title: "Completed",
69
+ validator: ->(value) { Archsight::Resources::Page.timestamp_error(value) }
70
+
71
+ relation :ownedBy, :businessActors, :BusinessActor
72
+ relation :performedBy, :businessActors, :BusinessActor
73
+ relation :ownedBy, :businessRoles, :BusinessRole
74
+ relation :performedBy, :businessRoles, :BusinessRole
75
+ relation :realizes, :implementationDeliverables, :ImplementationDeliverable
76
+ relation :realizes, :motivationRequirements, :MotivationRequirement
77
+ relation :realizes, :goals, :MotivationGoal
78
+ relation :affects, :businessProcesses, :BusinessProcess
79
+ relation :affects, :applicationComponents, :ApplicationComponent
80
+ relation :affects, :applicationServices, :ApplicationService
81
+ relation :affects, :technologyNodes, :TechnologyNode
82
+ relation :triggers, :implementationWorkPackages, :ImplementationWorkPackage
83
+ end