ArchiMate

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

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

アーキテクチャの要素

各要素は archimate で定義します。

ステレオタイプとして、アイコンを使うことができます。 使用できるアイコンの一覧は、[#使用できるアイコン一覧|こちらを参照してください。]

HTMLのカラーネームを使って、色の変更ができます。 また、いくつかのキーワード(Business, Application, Motivation, Strategy, Technology, Physical, Implementation)を使うこともできます。

🎉 Copied!

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

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

ジャンクション

プリプロセス機能を使って circle を定義し、使用してください。

🎉 Copied!

@startuml
!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
@enduml

例 1

🎉 Copied!

@startuml
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
@enduml

例 2

🎉 Copied!

@startuml
skinparam roundcorner 25
rectangle "Capture Information"  as CI <<$archimate/business-process>> #Business
@enduml

使用できるアイコン一覧

アーキテクチャ図で使用できるアイコンの一覧は、次のコードで表示することができます。

🎉 Copied!

@startuml
listsprite
@enduml

ArchiMateマクロ

Archimateマクロとライブラリ

Archimateマクロの一覧はArchimate-PlantUML で定義されています。このマクロはアーキテクチャ図の作成を簡単にしてくれます。ArchimateはPlantUMLの標準ライブラリにネイティブに存在します。

Archimate要素

マクロを使用したArchiMate要素の生成は次のように行います: Category_ElementName(nameOfTheElement, "description")

例:
  • Motivationカテゴリに含まれる「ステークホルダー」要素を定義する場合、次のように記述します:Motivation_Stakeholder(StakeholderElement, "Stakeholder Description"):

🎉 Copied!

@startuml
!include <archimate/Archimate>
Motivation_Stakeholder(StakeholderElement, "Stakeholder Description")
@enduml

  • 「ビジネスサービス」要素を定義する場合は、Business_Service(BService, "Business Service")

🎉 Copied!

@startuml
!include <archimate/Archimate>
Business_Service(BService, "Business Service")
@enduml

Archimateの関係(relationship)

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

次のRelationTypesがサポートされています:
  • Access
  • Aggregation
  • Assignment
  • Association
  • Composition
  • Flow
  • Influence
  • Realization
  • Serving
  • Specialization
  • Triggering

次のDirectionsがサポートされています:
  • Up
  • Down
  • Left
  • Right

例:
  • 上で定義した「ステークホルダー」と「ビジネスサービス」に対して、コンポジション関係を定義する場合、次のように記述します
Rel_Composition(StakeholderElement, BService, "Description for the relationship")

🎉 Copied!

@startuml
!include <archimate/Archimate>
Motivation_Stakeholder(StakeholderElement, "Stakeholder Description")
Business_Service(BService, "Business Service")
Rel_Composition(StakeholderElement, BService, "Description for the relationship")
@enduml

  • Unordered List ItemTo orient the two elements in top - down position, the syntax will be
Rel_Composition_Down(StakeholderElement, BService, "Description for the relationship")

🎉 Copied!

@startuml
!include <archimate/Archimate>
Motivation_Stakeholder(StakeholderElement, "Stakeholder Description")
Business_Service(BService, "Business Service")
Rel_Composition_Down(StakeholderElement, BService, "Description for the relationship")
@enduml

付録:すべてのArchimate RelationTypeの例

🎉 Copied!

@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

🎉 Copied!

@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
}


rectangle Dynamic {
() i10
() j10
() i15
() j15
}

rectangle Dependency {
() i13
() j13
() i4
() j4
() i11
() j11
() i7
() j7
}

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

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(i7, j7, \nAssociation_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(i4, j4, Access_rw)
Rel_Access_r(i4, j4, Access_r)
Rel_Access(i4, j4, Access)
@enduml

[Adapted from Archimate PR#25]


Privacy Policy      Advertise