2.4. PlantUML:ArchiMate#

2.4.1. ArchiMateとは#

PlantUMLのホームページからの引用です。

ArchiMateはオープンで独立したエンタープライズ・アーキテクチャ・モデリング言語であり、ビジネス・ドメイン内およびドメイン間のアーキテクチャの記述、分析、視覚化をサポートします。ArchiMateダイアグラムは、企業のさまざまなコンポーネント、それらの相互関係、およびITインフラストラクチャとの統合を構造化して表現します。

ArchiMateとUMLはどちらもモデリング言語ですが、その目的は異なります。UMLは主にソフトウェア設計とシステム・モデリングに使用され、システムの構造的側面と動作的側面に焦点を当てている。対照的に、ArchiMateはエンタープライズ・アーキテクチャに特化しており、企業の組織層、情報層、技術層の全体的なビューを提供する。

archimate #Technology "VPN サーバ" as vpnServerA <<technology-device>>

rectangle 実行 #lightgreen
rectangle 終了 #red
rectangle 待機 #orange

2.4.2. プリプロセス機能#

!define Junction_Or circle #black
!define Junction_And circle #whitesmoke

Junction_And JunctionAnd
Junction_Or JunctionOr

archimate #Technology "VPN サーバ" as vpnServerA <<technology-device>>

rectangle 実行 #lightgreen
rectangle 終了 #red
rectangle 待機 #orange
実行 -up-> JunctionOr
終了 -up-> JunctionOr
終了 -down-> JunctionAnd
待機 -down-> JunctionAnd

図 2.32 プリプロセス機能#

skinparam rectangle<<behavior>> {
        roundCorner 25
}
sprite $bProcess jar:archimate/business-process
sprite $aService jar:archimate/application-service
sprite $aComponent jar:archimate/application-component

rectangle "Handle claim"  as HC <<$bProcess>><<behavior>> #Business
rectangle "Capture Information"  as CI <<$bProcess>><<behavior>> #Business
rectangle "Notify\nAdditional Stakeholders" as NAS <<$bProcess>><<behavior>> #Business
rectangle "Validate" as V <<$bProcess>><<behavior>> #Business
rectangle "Investigate" as I <<$bProcess>><<behavior>> #Business
rectangle "Pay" as P <<$bProcess>><<behavior>> #Business

HC *-down- CI
HC *-down- NAS
HC *-down- V
HC *-down- I
HC *-down- P

CI -right->> NAS
NAS -right->> V
V -right->> I
I -right->> P

rectangle "Scanning" as scanning <<$aService>><<behavior>> #Application
rectangle "Customer admnistration" as customerAdministration <<$aService>><<behavior>> #Application
rectangle "Claims admnistration" as claimsAdministration <<$aService>><<behavior>> #Application
rectangle Printing <<$aService>><<behavior>> #Application
rectangle Payment <<$aService>><<behavior>> #Application

scanning -up-> CI
customerAdministration  -up-> CI
claimsAdministration -up-> NAS
claimsAdministration -up-> V
claimsAdministration -up-> I
Payment -up-> P

Printing -up-> V
Printing -up-> P

rectangle "Document\nManagement\nSystem" as DMS <<$aComponent>> #Application
rectangle "General\nCRM\nSystem" as CRM <<$aComponent>>  #Application
rectangle "Home & Away\nPolicy\nAdministration" as HAPA <<$aComponent>> #Application
rectangle "Home & Away\nFinancial\nAdministration" as HFPA <<$aComponent>>  #Application

DMS .up.|> scanning
DMS .up.|> Printing
CRM .up.|> customerAdministration
HAPA .up.|> claimsAdministration
HFPA .up.|> Payment

legend left
Example from the "Archisurance case study" (OpenGroup).
See
====
<$bProcess> :business process
====
<$aService> : application service
====
<$aComponent> : application component
endlegend

図 2.33 例1#

2.4.3. 使用できるアイコン一覧#

listsprite

図 2.34 使用できるアイコン一覧#

2.4.4. ArchiMateマクロ#

!include <archimate/Archimate>
Motivation_Stakeholder(StakeholderElement, "Stakeholder Description-1")
Business_Service(BService, "Business Service-1")

図 2.35 Archimate要素#

!include <archimate/Archimate>

Motivation_Stakeholder(StakeholderElement, "Stakeholder Description-1")
Business_Service(BService, "Business Service1")
Rel_Composition(StakeholderElement, BService, "Description for the relationship")

   Motivation_Stakeholder(StakeholderElement2, "Stakeholder Description-2")
Business_Service(BService2, "Business Service2")
Rel_Composition_Up(StakeholderElement2, BService2, "Description for the relationship")

2.4.5. すべてのArchimate RelationTypeの例#

@startuml
left to right direction
skinparam nodesep 4
!include <archimate/Archimate>
Rel_Triggering(i15, j15, Triggering)
Rel_Specialization(i14, j14, Specialization)
Rel_Serving(i13, j13, Serving)
Rel_Realization(i12, j12, Realization)
Rel_Influence(i11, j11, Influence)
Rel_Flow(i10, j10, Flow)
Rel_Composition(i9, j9, Composition)
Rel_Association_dir(i8, j8, Association_dir)
Rel_Association(i7, j7, Association)
Rel_Assignment(i6, j6, Assignment)
Rel_Aggregation(i5, j5, Aggregation)
Rel_Access_w(i4, j4, Access_w)
Rel_Access_rw(i3, j3, Access_rw)
Rel_Access_r(i2, j2, Access_r)
Rel_Access(i1, j1, Access)
@enduml

図 2.36 すべてのArchimate RelationTypeの例#

2.4.6. ArchiMate Relationships Overview#

Archimateの関係は、次のように定義します: Rel_RelationType(fromElement, toElement, "description") また、次のように、2つの要素の方向を定義します: Rel_RelationType_Direction(fromElement, toElement, "description")

@startuml
title ArchiMate Relationships Overview
skinparam nodesep 5
<style>
interface {
    shadowing 0
    backgroundcolor transparent
    linecolor transparent
    FontColor transparent
}
</style>
!include <archimate/Archimate>
left to right direction

rectangle Other {
() i14
() j14
}
Rel_Specialization(i14, j14, Specialization)


rectangle Dynamic {
() i10
() j10
() i15
() j15
}
Rel_Triggering(i15, j15, Triggering)
Rel_Flow(i10, j10, Flow)

rectangle Dependency {
() i13
() j13
() i4
() j4
() i11
() j11
() i7
() j7
}
Rel_Serving(i13, j13, Serving)
Rel_Access_w(i4, j4, Access_w)
Rel_Access_rw(i4, j4, Access_rw)
Rel_Access_r(i4, j4, Access_r)
Rel_Access(i4, j4, Access)
Rel_Influence(i11, j11, Influence)
Rel_Association_dir(i7, j7, \nAssociation_dir)
Rel_Association(i7, j7, Association)

rectangle Structural {
() i9
() j9
() i5
() j5
() i6
() j6
() i12
() j12
}

Rel_Realization(i12, j12, Realization)
Rel_Composition(i9, j9, Composition)
Rel_Assignment(i6, j6, Assignment)
Rel_Aggregation(i5, j5, Aggregation)
@enduml

図 2.37 ArchiMate Relationships Overview#