??????????? ????? MDA???

Shared by: 586HB40
Categories
Tags
-
Stats
views:
4
posted:
6/18/2012
language:
Japanese
pages:
20
Document Sample
scope of work template
							AOPミニワークショップ       SPA-SUMMER 2004




           アスペクト指向に基づく
           拡張可能な
           MDAモデルコンパイラ
          九州工業大学
          情報工学部 知能情報工学科
          鵜林尚靖
          2004年8月24日
                                1
  MDAとは

    従来の開発                       MDAによる開発

                                                         設計フェーズが
        分析                              CIM
                                                          大きく変化!

                                        PIM
                                                       モデルコンパイラ
        設計
                                                       による自動変換
                                        PSM


     コーディング                        ソース・コード


MDA: Model-Driven Architecture     PIM: Platform Independent Model
CIM: Computation Independent Model PSM: Platform Specific Model      2
モデル変換の例(Strutsの場
合)
             ステップ1: 複数PIMの合成


                 ①PIMクラスのマージ

             ステップ2: アクションフォーム
                    Beanへの変換

                 ②Bean規約名に変更
                 ③ActionFormを継承
                 ④setter/getterを追加

             ステップ3: アクションクラス
                    の新規作成

                 ⑤アクションクラスを生成
                 ⑥Actionを継承
                 ⑦executeメソッドを追加
                 ⑧メソッド本体を追加

                                     3
 PIM   PSM
研究のアプローチ
MDAの課題
 モデル作成者自身がアプリケーションの特性や目的に応
 じてモデル変換規則を定義するのが難しい eg. QVT

     アスペクト指向に基づいたモデルコンパイラ
     モデリング言語AspectM

 ゴール
  モデル作成者はモデリングの一環としてアスペクトを定
   義することにより、モデルコンパイラの機能を拡張できる
  モデル変換記述も通常のモデリングも同じ土俵で考える
   ことができる(モデリングレベルのメタプログラミング)
                                4
    何故、アスペクト指向なのか?
    (研究のモチベーション)
   MDAにおけるモデル変換は実装に関わる部分の変
    換であるが、モデル変換の対象はこれに留まらない。
    最適化、等々。Active Library の考え方をモデルコン
    パイラに導入する必要はないか?
   実装に関わる部分は横断的関心事。
   アスペクトはソフトウェアモジュールであると同時
    に変換モジュールである。この2面性を考えると、
    システムの構成要素と変換規則を同じモジュール化
    メカニズム(アスペクト)で実現できる可能性があ
    る。
   上流段階(ユースケースや設計レベル)でのアスペ
    クト指向サポートとMDAサポートを同じメカニズ
    ムで実現できる。
                                   5
AOPのメカニズム

JPM


  Join Point                                    実行コード
                      元ソース             Advice
 メソッド呼び出し
  メソッド実行               ・・・・・・                   ・・・・・・
     ・                 ・・・・・・                   ---
     ・                 ・・・・・・                   ・・・・・・
                       ・・・・・・                   ---
                       ・・・・・・                   ・・・・・・
                       ・・・・・・                   ---




                                    Point Cut


 AOP: Aspect-Oriented Programming
 JPM: Join Point Model
                                                         6
AOPとMDA
   JPM においてのadviceはプログラム変換と呼
    ぶことができる
   JPMでモデル変換を記述することが可能にな
    るのでは
Join Point
             クラス名   Advice      クラス名
              属性                属性①
              ・・・               属性②

              操作                 操作
              ・・・                ・・・

             クラス図   Point Cut


                                       7
以降の内容

   拡張可能なモデルコンパイラの考え方
   モデル変換のためのJPM(Join Point
    Model)
   AspectMの概要
   AspectMの実装(開発中)
   関連研究
   まとめ

                              8
拡張可能モデルコンパイラの考え方

                   アスペクト
                   アスペクト
                   アスペクト図
                (モデル変換モジュール
                (モデル変換モジュール
                 (モデル変換モジュール
                 としてのアスペクト)
                  としてのアスペクト)
                   としてのアスペクト)

                                 アスペクトを追加する
                                 ことにより様々な変換
                                 を可能にする

  UMLモデル                          UMLモデル
                   weave              (クラス図)
   (クラス図)


                           モデルコンパイラ
   アスペクト図
 (システム構成モジュール
   としてのアスペクト)




                                               9
MDAはどう変化するか?

       モデル         モデル            モデル
 PIM         PSM         プログラムコード



XML          XML            XML


  XMLで記述された         XMLで記述された
    アスペクト             アスペクト


                                    10
モデル変換のためのJPM
 モデル変換機能           PA    CM   NE    OC    RN    RL       ①PIMクラスのマージ
操作本体の変更            ○
                                                           CM
                                                         ②Bean規約名に変更
クラスのマージ                  ○
                                                           RN
クラスの追加/削除                     ○                          ③ActionFormを継承
操作の追加/削除                            ○                      RL
属性の追加/削除                            ○                    ④setter/getterを追加
                                                           OC
クラス名の変更                                   ○
                                                         ⑤アクションクラスを生成
操作名の変更                                    ○                NE
属性名の変更                                    ○              ⑥Actionを継承
継承の追加/削除                                        ○          RL
集約の追加/削除                                        ○
                                                         ⑦executeメソッドを追加
                                                           OC
関連の追加/削除                                        ○
                                                         ⑧メソッド本体を追加
PA(pointcut & advice),CM(composition),NE(new element),     PA
OC(open class),RN(rename),RL(relation)
                                                                          11
AspectMの概要
6つのJPMをサポート(新たなJPMを追加可能)
3種類のアスペクトをサポート(通常アスペクト、コンポーネント
 アスペクト、テンプレートアスペクト)
UMLを対象としたXMLベースのAOP言語

          ダイアグラム表記                         ダイアグラム保存形式(XMLベース)
 aspect
             << jpm-type >>                <aspect name=aspect-name type=jpm-type >
              aspect-name                   { <pointcut name=pointcut-name
                                                        type=joinpoint-type>
pointcut-name : joinpoint-type                  pointcut-body
   { pointcut-body }
    :
                                              </pointcut> } +
    :                                       { <advice name=advice-name
                                                      type=advice-type>
advice-name [pointcut-name]: advice-type       <ref-pointcut>pointcut-name </pointcut>
  { advice-body }
                                               <advice-body>advice-body </advice-body>
   :
   :                                         </advice> } +
                                           </aspect>
                                                                                      12
AspectMのJPM
JPM   Join point                    Pointcut               Advice
PA    operation                                             before,
                                                            after,
                                                            around
CM    class                                                merge-by-name
NE    class-diagram                   記述例                   add-class
                                      ① setX || setY        delete-class
OC    class                           ② set*                add-operation,
                                      ③ classA || classB    delete-operation,
                                                            add-attribute,
                                      ④ class*
                                                            delete-attribute
RN    class, operation, attribute                          rename

RL    class                                                 add-inheritance,
                                                            delete-inheritance,
                                                            add-aggregation,
                                                            delete-aggregation,
                                                            add-relationship,
                                                            delete-relationship
                                                                              13
AspectMの記述例
          MessageクラスとMessageProfileクラスを
          マージしてPostMessageクラスに変換


aspect          << CM >>
          merge-message-classes
message-classes : class
  { Message || MessageProfile }
merge-message-classes [message-classes]
                      : merge-by-name
  { PostMessage }

 <aspect name="merge-message-classes" type="CM" >
  <pointcut name="message-classes" type="class"> Message || MessageProfile </pointcut>
  <advice name="merge-message-classes" type="merge-by-name">
   <ref-pointcut> message-classes </ref-pointcut>
   <advice-body>
     <element> PostMessage</element>
   </advice-body>
  </advice>
 </aspect>                                                                          14
AspectMにおける部品合成
<aspect name=“Generic-Class2ActionForm“ type=“template”>   テンプレート
 <params>                                                  アスペクト
   <param>@aspect@</param>
   <param>@class@</param>
 </params>

 <aspect name=“Class2ActionForm” type=“component”>         コンポーネント
                                                           アスペクト
  <aspect name=concat(“RN_”,@aspect@) type=“RN”>
   …
  </aspect>

  <aspect name=concat(“RL_“,@aspect@) type=“RL” >
   …                                                       通常アスペクト
  </aspect>

  <aspect name=concat(“OC_“,@aspect@) type=“OC” >
   …
  </aspect>

 </aspect>

</aspect>                                                       15
当研究室で開発中のツール
          モデルエディタ
    PIM
 クラス図        ユ
 アスペクト図      ー              XML
             ザ          メ   文書    モデルコンパイラ
             イ          タ
   PSM       ン          モ
             タ          デ
 クラス図
             ー          ル
 アスペクト図
             フ              XML
             ェ              文書    モデルコンパイラ
             ー
             ス
  Javaソース                   XML
                            文書
              Eclipse                  16
AspectMのメタモデル(プロト
タイプ)




             アスペクトの
             メタモデル


                      17
モデルコンパイラの実装(プロトタイ
プ)
             アスペクト図


        「アスペクト図→XMI形式」変換


           XMI形式アスペクト


        「XMI形式アスペクト→XSLT変換
              ルール」変換


            XSLT変換ルール


クラス図                         クラス図
             XSLT処理系
(PIM)                        (PSM)
                                     18
関連研究
Stein他[AOSD2002]
 アスペクトをUML図として表現する方法を提案
 モデリング段階のアスペクトはAspectJなどのAOP言語に変換
  するもので、この方法ではMDAは実現できない
 AspectMのアスペクトはUML図自身を操作するもの

Gray他[GPCE2003]
 AODM(Aspect-Oriented Domain Modeling)を提案
 属性や関連などのモデル要素を追加する機能をもつ
 MDAなどの一般的なモデル変換を対象にしたものではない

Sillito他[ECOOP2004]
 ユースケースレベルのポイントカットを提案
 上流のモデリング段階においてもJPMの考え方が有効であるこ
  とを示した                                      19
まとめ

   MDAのモデルコンパイラをアスペクトを組
    み合わせることにより実現する方式を提案
   従来別々の概念と考えられていたアスペクト
    指向とMDAを同じ枠組みで捉えることが可
    能になった




                       20

						
Related docs
Other docs by 586HB40
LA EUCARIST�A CELEBRADA PASO AP ASO
Views: 2  |  Downloads: 0
River Landforms Chart
Views: 27  |  Downloads: 0
EFFECT Sonderposten Einrichtungstechnik
Views: 70  |  Downloads: 0
Northwest Women Flyfishers (NWF)
Views: 1  |  Downloads: 0
INLAND GEOLOGICAL SOCIETY
Views: 5  |  Downloads: 0
Office Address:
Views: 1  |  Downloads: 0
RiverFLO 2D GUI Espanol
Views: 46  |  Downloads: 0