集約関係

用語

集約関係

用語(英)

Aggregation

別名

-

識別情報

  • Term ID: src/main/doxsite/glossary/object-foundation/aggregation.dox

  • English label: Aggregation

  • Japanese label: 集約関係

  • Japanese short label: 集約

  • Scope qualifier: Object Foundation / shared whole-part relationship

  • Bare-label linking: explicit-only

  • Category: Object Foundation

  • Status: normative

  • Definition authority: SimpleModeling BoK, aligned with UML 2.5.1 and narrowed for explicit modeling

定義

集約関係(Aggregation)とは、全体と部分を表す関連関係のうち、部分の排他的な構造上の所有やライフサイクル従属を伴わず、部分を複数の全体から共有し得る全体部分関係です。SimpleModelingでは、何を全体および部分とみなすか、共有を許すか、追加のライフサイクル制約があるかを明示した場合にだけ使用します。

UML

UML 2.5.1では、集約関係はAssociation EndのAggregation Kindを shared とする全体部分関係です。UMLはshared aggregationに一般化された強い意味を定めていないため、SimpleModelingでは、集約という記号だけに意味を委ねず、全体部分の役割、共有、多重度、ライフサイクル制約をモデルに記述します。

一般的な用法

一般語の「集約」は、情報を集めること、集計、サービス集約などにも使われます。この用語が表す集約関係は、モデル上の全体部分関係です。データを一画面へ集めることや、複数APIの結果をまとめることだけでは集約関係になりません。

オブジェクト関数パラダイム

集約関係はオブジェクト側の共有可能な全体部分構造を表します。Functional側のコレクション集約やfoldとは別の概念です。

CML

CML(Cozy Modeling Language)で集約関係を記述する場合、全体端と部分端、役割、多重度、共有可能性、および必要な制約を明示します。意味が通常の関連関係と変わらない場合は集約関係を使いません。

Scala

Scalaのコレクション、フィールド、参照は集約関係を実現できますが、それらは通常の関連関係や合成関係にも使われます。言語構造だけから集約関係を推論しません。

simplemodeling-lib

simplemodeling-libのCollection、Group、Schemaなどは集約された構造の実現に利用できますが、利用したライブラリ型だけでは共有可能な全体部分という意味は成立しません。

公開成果物での用法

日本語の記事と動画では、初出を「集約関係(Aggregation)」とし、同じモデル関係を扱う文脈が続く場合だけ「集約」と短縮します。一般語の「集約」は用語として自動リンクしません。

境界

  • 集約関係は通常の関連関係と同義ではなく、明示された全体部分の意味を持ちます。

  • 集約関係は合成関係と異なり、一つの全体による排他的な構造上の所有を意味しません。

  • コレクション、集計、同時表示、API集約だけでは、集約関係になりません。

関連語

  • モデル上の関連

  • 合成関係

  • モデル関係

  • 構造上の所有

  • 多重度

  • ライフサイクル

参照