1.はじめに
.この資料は、UMTPモデリング技術部会『UML2.5勉強会』の2013年度成果物として作成されました。 – UMTPについてhttp://www.umtp-japan.org/ －モデリング技術部会についてhttp://www.umtp-japan.org/modules/introduction1/index.php?id=34&tmid0=22当部会2013年度活動予定と結果は以下の通りです。 – 「モデリング技術の調査・研究及びモデリング技術動向の発信。」 UML規格の最新動向キャッチアップ活動＆成果報告1. [[UML2.5勉強会』の月例開催年度末の勉強会成果物(本資料)作成セミナー&ワークショップによる情報発信2. • モデリングセミナー[[DDD(domain-driven design)をじっくり語る60分]開催告知URL: http://www.umtp-japan.org/modules/activity2/index.php?id=222
•  2013年度活動テーマ– 「UML規格の最新動向をキャッチアップする」 － UML 1.xから2.xへの変更点調査－ 2.xで導入された仕様の理解− 2.5での変更点調査変更点調査の結果–意味定義、表記法の変更は無し－仕様書の構成に大きな変更あり■メンバー(あいうえお順)河合昭男(有限会社オブジェクトデザイン研究所)豊田徳子（株式会社オージス総研）羽生田栄一（株式会社豆蔵）細谷竜一株式会社オージス総研)山城明宏(東芝ソリューション株式会吉田裕之(高士通株式会社)宮川城(株式会社オージス総務仕様変更の内容をまとめるよりも、仕様書を読むにあたってのガイドを作成する方向へ方針を転換した。
1.2この資料の内容について
. UML仕様は何を定義するものか– UML成立の歴史から、標準化の目的を述べる。 – UMLの各バージョンで導入されたコンセプトを紹介し、定義のバックボーンを知る。 . UML仕様書の読み方– UML1.5およびUML2.0仕様書から、UML1.xとUML2.xに共通の部分を明らかにする。 – UML2.5仕様書の内容を見ながら、その読み方を解説する。 •その他の調査事項
• UMLの黎明•   The Three Amigos • UMLの誕生• UMLの標準化• UMLの目的• UMLの成長
2.1 UMLの黎明
1960’s ソフトウェア危機によるソフトウェア工学の発展1970's多数の開発方法論が勃興1980's オプジェクト推向書願の勃興設計技術としてのオプジェクト推向が始まるGE社のJames RumbaughがOMT法を公開Rational社のGrady BoochがBooch端を公開Objectory AB社のIvar JacobsonがObjectory蓋を公開RumbaughがSRational社へ移籍Rational社、オブジェクト指向開発手法Unified Method発表JacobsonががRational社へ移籍Rational社、オブジェクト指向開発手法Objectory Process発表その表記法として、UML0.9を発表
UMLの誕生に尽力した偉大な三人のエンジニアと彼らのオブジェクト指向開発方法論Objectory(OOSE) Ivar Jacobson 1992年! 「OOSE: Object-Or Engineering! W 57
2.3 UMLの誕生
→Rational Objectory Process(楽のRUP)イラストはhttps://www.ibm.com/developerworks/community/blogs/invisiblethread/entry/tnuthaboutagile?lang=en_より引用2.5 UMLが作られた目的モデルの現状化•特定の開発方法論に依存することなく、モデルを視覚化することモデルの相互珊瑚•開発関係者間で誤解や論争が発生しないように、相互理解を可能にすること多種なシステム前用への適用•さまざまな視点からのモデリングをサポートすることモデルの意味第一•モデリングに使用する要素(クラスや関連など)の定義を統一することモデルの表記法統一•要索の表記法を統一すること3. UML仕様書の読み方• UML1.5仕様書の構造• UML2.0仕様書の構造• UML2.5での変更点UML1.5

•この節の目標
– UML1.x系の最新バージョン1.5を題材に、仕様書の読み方の基本と、定義されているものについての大まかな知識を得る。 •仕様書の冊子･章構成・内容を理解するためのコンセプト•分類方法•パッケージとメタクラスUML1.1 • Ac 201年12意味の統•表記法の統- UML1.5 UML1.5仕様書(1) Unified Modeling Language Specification Version 1.5(formal/03-03-01) (全一冊) Model Interchangeの節で参照する外部仕様書(2冊) UML1.5
.
 UML1.5仕様書は1冊から成る。 – UMLモデルを他形式に変換するための「Model Interchange」の章で
「は、「MOF1.3」と「XMI 1.1」仕様書を参照している。 –紙の書籍よりPDFなどの電子ファイルが便利.
背景となる考え方として、｢Primary Artifacts｣ ｢4-layer Metamodel Architecture」[ Language Formalism ]の3つのコンセプトがある。 – これらのコンセプトは、仕様書の内容を理解する強力な助けとなる。 — 「Primary Artifacts」はは、何を定義するかについての考え方を述べている。 —   ｢4-layer Metamodel Architecture｣では、モデルを4つの階層に分ける考え方を説明している。 – 「Language Formalism」では、言語を定義するための3つの観点について説明している。 UML1.5
Primary Artifacts(1)
• UML仕様書の「Semantics」で定義する物とその記法、拡張方法Development Project Artifacts -メタクラスの組み合わせで意味が発生するものDiagrams:ユースケース図、クラス図、振る舞い図、実装図など図の種類Modeling Levels:開発プロセスの各段階が要求するモデリングの内容• UMLで定義することの範囲外で、開発方法論によって異なるUML1.5
UML1.5
Primary Artifacts(3)
開発方法論のプロセスで要求されるモデリングレベルに柔軟に対応する。標準的な図の種類を定義する。図で使用できるメタクラスを定義し、意味、ルール、記法を統一する。メタクラスにユーザ独自の意味を追加する拡張を可能にする。 UML1.5
4つのメタモデル階層の中で、UMLは「メタモデル層」に属する(参考) • MOFはメタメタモデル層に属する• OMGの他のモデリング仕様であるCWM、BPMNなどもメタモデル層に属する
この資料では以降、UMLで定義する要素を指す時には「火分ラス」という用語を使用する。 UML1.5
Language Formalism
自然言語に倣って、メタクラスの定義を3つの視点から行う–言語定義としての正確性、完全性の向上を図る各視点を仕様書の見出しとする定義にはUML図、OCL式、英語を組み合わせて使用する
あるメタケラスの定義をUML仕様書で調べる時に、どの見出しの内容を参照すべきかのガイドとなる。 UML1.5
分類1 :メタクラスの意味上の役割で分類する→仕様書第2章「UML Semantics」の目次に利用されている。
分類2 :メタクラスを使用する図(クラス図など)ごとに分類する→仕様書第3章「UML Notification Guide」の目次に利用されている単なる目次上の分類とネームスペースとしてのパッケージの差異はあいまい。
メタクラス一覧(1)
General Mechanisms
Model Managementバッケー Elementimport, Package, Model, Subsystem
Foundation
– CoreバッケージBackbone: Element, ModelElement, ElementOwnership, Feature, Namespace, GeneralableElement, Palameter, Constraint, Classifier, StructuralFeature, BehavialFeature, Attribute, Operation, Method Relationships: Relationship, Row, Generalization, Association, AssociationEnd, AssociationClass Dependencies: Dependency, Binding, Abstraction, Usage, Permission Classifiers: Class, Interface, Node, Component, Artifacts, DataType, Enumeration, Primitive Auxiliary elements: TemplatePalameter, TemplateArgument, PresentationElement, Comment – Extension Mechanismsパッケージ• Constraint, Stereotype, TaggedValue, TagDefinition – Data Types/バッケージMain: Integer, UnlimitedInteger, String, Geometry, LocationReference, Mapping, MultiplicityRange, 
Name , <<enumeration>>AggregationKind, Boolean, CallConcurrencyKind, Chang OrderingKind, ParameterDirectionKind, PseudostateKind, ScopeKind, VisibilityKind Expressions: Expression, ArgListsExpression, BooleanExpression, MappingExpression,
ProcedureEdxpression, TimeExpression, TypeExpression

Behavioral Elements
– Common BehaviorバッケージSignals: Signal, Exception, Reception . Procedure: Procedure Instances: AttributeLink, Stimulus, Procedure, Instance, DataValue, SubsystemInstance , Componentinstance, Nodeinstance, Object Links: Link, LinkEnd, Stimulus, LinkObject Collaborationバッケージl • Roles: Collaboration, AssociationRole, AssociationEndRole, ClassifierRole Interactions: Interaction, Message Instances: InteractionInstanceSet, CollaborationInstanceSet – Use CasesバッケージUseCaseInstance, Actor, UseCase, Include, Extend, ExtensionPoint State MahinesバッケージMain: StateMachine, Guard, StateVertex, Transition, Psudostate, SynchState, SubState, State, . Transition, CompositeState, SimpleState, FinalState, SubmachineState Events: Event, SignalEvent, CallEvent, TimeEvent, ChangeEvent – AcivityGraphsバッケージActivityGraph, Partition, ActionState, ObjectFlowState, ClassifierInState, CallState, SubactivityState, Transition
UML1.5
メタクラス一覧(3)
Actions
– Actionバッケー Action Foundation: Pin, ControlFlow, Action, PrimitiveAction, OutputPin, InputPin, DataFlow, Procedure Composite Actions: Clause, GroupAction, Variable, ConditionalAction, LoopAction Read and Write Actions: CreateObjectAction, DestroyObjectAction, ReclassifyObjectAction, ReadIsClassifiedObjectAction, AttributeAction, ReadAttributeAction, WriteAttrixuteAction, ClearAttributeAction, AddAttributeValueAction, RemoveAttributeValueAction, LinkAction, LinkEndData, QualifierValue, ReadLinkAction, ReadLinkObjectEndAction, ReadLinkObjectQualifierAction, WriteLinkAction, CreateLinkAction, LinkEndCreatiionData, CreateLinkObjectAction, DestroyLinkAction, ClearAssociationAction, VariableAction, ReadVariableAction, WriteVariableAction, AddVariableValueAction, RemoveVariableValueAction, ClearVariableAction, ReadExtentAction,
ReadSelfAction, StartObjectStateMachineAction, CallProcedureAction Computation Actions: ApplyFunctionAction, CodeAction, TestIdentityAction, LiteralValueAction, NullAction, PrimitiveFunction, ArgumentSpecification, UnmarshalAction, MarshalAction Collection Actions: CollectionAction, MapAction, FilterAction, IterateAction, ReduceAction Messaging Actions: ExplicitInvocationAction, InvocationAction, CallOperationAction, BroadcastSignalAction, SendSignalAction, SynchronousInvocationAction, AsynchronousInvocationAction Jump Actions: JumpHandler, HandlerAction, JumpAction, BreakJump, ContinueJump UML1.5
UML2.0
•この節の目標– UML1.xからUML2.0で行われた変更点について知る。 UML2.0
UML2.0仕様書は6冊の仕様書から成る。 – UML Infrastructure (全1冊) • OMGのモデリング仕様(UML、MOF、CWM)の共通部分を抽出したものツールメーカーやMDAユーザ向けで、一般的なユーザは読む必要なし。 — UML Superstructure (全1冊) UML2.0の知識を得たい人はSuperstructureだけを読めばよい。関連仕様を分冊化したもの(全4冊) • OCL、MOF Core、MOF-XMI Mapping、DIの4冊。 •図の変換についての仕様が新規追加された。 2つの分類コンセプト「Language Unit」「Compliance Level」が追加された。 – 「Language Unit」は、密接に関連するメタクラスをグループ化したもの。ユニットにはバッケージが属し、その中にメタクラスが属する。 – 「Compliance Level」は、Language UnitにLO-L3のレベルを定義し、UML利用者とUMLツールに
      UML仕様を利用する基準を示すもの。 「PackageMerge」機能が追加された。 −　あるメタクラスの定義をバッケージに分けてインクリメンタルに定義するために導入された。 UML2.0
Γ UML Infrastructure」の内容
モデリングの基盤(Infrastructure)となるメタクラスを定義する。 UML2.0
Infrastructureで定義されたメタクラスを再利用する。 UML2.0
Language Unit
密接に関係するモデリングコンセプトによって、パッケージをグループ化するInfrastructureのコニット– Basic － Constructsユニットは、基礎的なコンセプトからより高いモデリング能力を要するコンセプトへとインクリメンタルに分割されている。 .ユーザは自分のモデリングに必要なユニットごとに学習すればよく、UML仕様全体を知る必要はない。 Superstructureのコニット– Actions – Activities Classes – Components – Deployments —    General Behavior — Information Flows — Interactions - Models – Profiles — State Machines — Structures — Templates – UseCases UML2.0
ユニットごとにサポートするパッケージを選択し、「UML」ネームスペースに統合する。 .レベルツールがUMLのどの部分をカバーするかを示すことができる。 1989
InfrastructureのBasicユニットに属するパッケージをすべて統合する。SuperstructureではKernelパッケージに該当する。データ交換可能な最小モデルをサポートする。 L1 L0+InfrastructureのConstructsユニットに属するパッケージとSuperstructureの10個のパッケージを統合する。クラス図、ユースケース図、シーケンス図、コミュニケーション図、アクティビティ図をサポートする。 L1+Superstructureの15個のパッケージを統合する。コンポジット構造図、コンポーネント図、配置図、ステートマシン図、プロファイルをサポートする。 L2+Superstructureの14個のパッケージを統合する。UMLのすべての定義をサポートする。 L2 L3 UML2.0
PackageMerge
. . UML2.0で新規追加された機能。 Compliance Levelごとにマージして1つのメタクラスとして利用できる。 . L3のUML::Classは、 – Kernel – StructuredClasses – Communications – Profilesパッケージで定義されたすべてのClassメタクラスをマージしたメタクラスである。右図で、パッケージ「P3」には、「P1」と「P2」の定義をマージした「A」が存在するのと同等となる。 UML2.0 UML2.0仕様書の構成UML2.5
•この節の目標– UML2.0からUML2.5で行われた変更について知る。 • UML定義が1冊になった・メタクラスの定義と記法は変わっていない・メタモデルの分類と仕様書の構成を一致させ・不一致やあいまいさを改善したUML2.5
UML2.5
• 「UML Infrastructure」はどうなったのか？ – UML2.5では「Meta Object Facility (MOF) Core, v2.5 J(OMG Specification ptc/2013-08-20)になる予定。 – 「MOF v2.4.1」(最新)ではUML2.4.1の「Infrastructure」を再利用している。 – UML2.4.1の「Infrastructure」はISO19505-1で規格化されているが、2.5はその兆しもない。 . PackageMerge不使用– L0-L3の分類をやめたため、メタクラスの定義をパッケージに分割する必要が
なくなった。よってマージする必要もなくなった。 — PackageMergeの機能自体はUML2.5にも存在している。一覧追加– 加した。 －このドキュメントは、機械可読のメタモデル定義から自動生成されている。
UML2.5

UML2.5
ー貫性. →「仕様書とモデル構造｣｢仕様書目次｣スライド参照。 .正確性–  OCLの定義も2.2から2.3.1に更新された。 • OclValid値/OclInvalid値の追加• UnlimitedNatural型(多重度の"*"に該当する)の追加・オブジェクトの型の違い(単一か集合か)による定義の違いの明文化• XMI変換− 2.4.1以降、データ交換性を強化し、実際の使用に耐えるよう改善がなされた。 – 2.5の目的の一つはXMIによる厳密な表現をしやすくするためのあいあいさの解消と全体的な仕様とメタモデルの構造の対応関係のシン
ラル化だと愚われる。 UML2.5
仕様書とモデル構造
.
モデル構造の基本分類
UML2.5
モデル標造と目次構成が一致している！
13. Common Behavior 14. State Machines
Standard Profile Annex A: Diagrams Annex B: UML Diagram Interchange Annex C: Keywords Annex D: Tabular Notation for Sequence Diagrams Examples Annex E: XMI Serialization and Schema各節がSemantic Area UML2.5節の下位分類UML2.5
メタクラスが1つのパッケージに属するようになった。構文、ルール、記法の解説が1ケ11.1 Summary (Classメタクラスの例)
4.その他の調査事項
Q1.シーケンス図のシーケンス番号について– UML 2.5仕様書(ptc/2013-09-05)にシーケンス番号を持つ図の例があるが、UML2.5で復活したのか？ Q2. Interfaceメタモデルの属性と関連について– UML1xではInterfaceは「属性は持たない」となっていたが、UML2xでは属性を持てる。 — UML1xではInterfaceは「関連は持たない」となっていたが、UML2xでは関連を持てる。
シーケンス番号を持つ図(Figure 17.10)は、 –図はUML2.5仕様書で初出で以前のバージョンには含まれていない。 –図はGeneralOrdering(中間に矢じりを持つ点線)の記法例である。 －メタモデル定義にシーケンス番号を持つものはない。 – 「17.9 Communication Diagrams」にのみSequence expressionの項がある。 — Annex Bの「B.4.5 Interaction Tables」にUMLInteractionTableLabelKind.seguenceNumber値の定義があるが、これは
シーケンス図を表形式に落とす場合、列の種類を表す。(表形式についてはAnnex Dにサンブルがある) A1.図の間違いと思われる。 umlツールでは描画可能なものもあるが、UML1.xとの互換性のためではないか。 Figure 17.10 Example showing general Ordering in a sequence diagram Q2. Interfaceの属性と関連A2. UML2.0で仕様が変更されました。 ・「属性を持つ」ことと「関連端を持つ」ことは同義です。 . InterfaceメタクラスはPropertyをownedAttributeとして持つことができるようになっています。 •そもそも、CORBA IDLでinterfaceにはattributeがありましたから、 UML 1.xでAttributeを持てないとしたのはこれと矛盾していたのではないでしょうか？