SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
クラウド・モデリング
浅海智晴
匠Lab
2010年5月12日
内容
• クラウド・アプリケーションのモデリング技術について、
  浅海の取り組みの中で考えたことをお話します。
文脈
オブジェクト・モデリングの確認
SimpleModelingの本
オブジェクト・モデルの構成
                                      状態機械モデル

                                      ステートマシーン図




  ユースケースを現実化したものがコミュニケーショ
 ン図/シーケンス図、 コミュニケーション図/シーケン
                                                                オブジェクト図/クラス
 ス図を利用者の視点によるシステムの利用事例と
                                                                図、 コミュニケーション
        して抽象化したものがユースケース
                                                                図/シーケンス図に登
                                                                場するオブジェクトの
                                                                状態遷移を記述


   ユースケース図               コミュニケーション図                   オブジェクト図


        ユースケース
         (利用事例)


                                                                               クラス図をインスタンス
                                                                               化(実体化)したものが
                                                                               オブジェクト図




    コミュニケーション図を時間
    軸の側面から記述したもの        シーケンス図                        クラス図
                                        オブジェクト図上でコラ
          がシーケンス図
                                        ボレーション(メッセー
                                        ジの送受信の集まり)
                                        を記述したものがコミュ
                                        ニケーション図




                     協調モデル                            静的構造モデル
SimpleModeling全体像
                   ドメイン・モデル                        要求モデル               システム・モデル             設計モデル




                                   用語
                                   事実                      契約
 自然言語             規則               契約                     ユースケース
          宣言モデル        拡張   静的モデル          利用      動的モデル




                                                     変換
                                                                         コラボレーション              コラボレーション
                                                                       動的モデル                動的モデル          アプリケ
                                                                                                           ーション・
                              同期




                                                   機能モデル          変換                  具体化                   モデル
                                                    サービス契約             静的モデル                静的モデル
                                                    データフロー図                   クラス図                  クラス図
オブジェクト・
                                                            OCL
           同期




                                                                         操作




                                                                                              操作
 モデル
                                        OCL                                     OCL
                                    クラス図                                      クラス図                 クラス図
                            静的モデル                  変換                  静的モデル          具体化   静的モデル
                                                                                                           ドメイン・
                                                                                                            モデル
                                                                                            動的モデル
                    張
                   拡




                                                                                       化
                                                                                      体
                                                                                      具
ルール・モデル   宣言モデル                               変換                        宣言モデル
           ビジネス・ルール                                                      ビジネス・ルール
SimpleModelingモデル変換

業務モデル          ドメイン・モデル           要求モデル          システム・モデル                  設計モデル              実装



                    静的構造                             エンティティ                   ドメイン層                ドメイン層

          抽出
                                  具体化                                                                      格納
 現実世界
                                                                                                                     データベース




                                      ドメイン・モデル




        抽出
                                                      コントロール                アプリケーション層         アプリケーション層
                             ボキャブラリ                              詳細化                    実現




  動的モデル
                                           具体化

                   文脈

                                  ユースケース




                                           具体化
                           利用事例                       バウンダリ                プレゼンテーション層        プレゼンテーション層


                                                                                                           操作

                              やりたいこと



                                                                                                           エンド・ユーザ


                                                            アプリケーション・モデル
SVO
ユースケースとSVO
クラウド・アプリケーションのモデ
リング
クラウド・アプリケーション・アーキテク
チャ
論理層の観点から
                                                 サーバ側では、 GUIが使用する
                                                 サービスを提供する。


   クライアントはWebブラウザ上で
   動作するHTML5で本格的なGUI
                                   プレゼンテーション層
             を構築する。
                                                                    クラウド・アプリケーション
                              クライアント側           サーバ側                                      アプリケーションの論理的な構成は
                                                                                          従来のものと変わらない
                                                                     プレゼンテーション層
                               HTML5            サービス

                                                                       ビジネス層


                                                                       ドメイン層


   プレゼンテーション層はWeb指                                                      統合層           アクセス方式1: RDBMS
  向のMVC2ではなく、 クライアント                                                                  ACID特性を要求されるデータはRDBMSに
                                 アクセス方式4: 手続き呼出し
  /サーバ時代のGUIに回帰する。                                                                    格納する。
                               性能特性、 障害特性がローカル
                                の手続き呼び出しよりも脆弱。


     アクセス方式5: メッセージング                                                  統合層
分散環境での連携に適応する特性をもつ。                                                                               RDBMS




                                メッセージ・キュー



                                                                                                  アクセス方式2: KVS
                                                                                    KVS           一般のデータはKVSに格納するのが望ましい。
                                                       サービス             REST

                       サービス




                                                アクセス方式3:REST
                                       Webページを手繰って情報を取得する               サービス
クラウド・アプリケーション・アーキテ
クチャの例
                                   マスターデータなど更新頻度が低いデータは
                                         KVSで配布して直接参照する。
                                                                           結果を直接知りたい場合には、 手続き呼
                                                                    KVS    び出しで同期型の連携を行う。
                                                                           この形式の連携を行うとスケーラビリティが
                                                                           低くなる。



プレゼンテーションの段階でできることをや
っておくと、 スケールアウトの効果によって                  クラウド・アプリケーション
         スケーラビリティが高まる。
外部サービスからRESTを用いて情報を取
     得するのが典型的な利用方法。                                                                                 サービス利用の主力はメッセージである。
                         プレゼンテーション                     サービス                         サービス
                                                                                                    この形式の連携を行うとスケールアウトに
                                                                                                    よってスケーラビリティを確保できる。




                                                                                    サービス          バックエンドのサービス群もメッセージによ
                                                           メッセージ・キュー
                            REST                                                                  って連携。




                                                            サービス                   メッセージ・キュー

                                                                                                              同期通信
                           サービス

                                                                                                            メッセージ送信


                                                                                                            メッセージ配信


                                                              KVS          RDBMS
                         データベースをアクセスするスコープは
                            サービスに閉じておくのがよい。




                                                                KVSとRDBMSを適材適所で使い分ける。
                                                                可能であればKVSを使うのが望ましい。
クラウドの要件とモデリング技
法
             エンティティ・モデル
  データベース選択
               データ種別


   データ分割

             ユースケース・モデル

  サービス分割      アクセス法解析

               責務抽出

   非同期処理      コラボレーション




   顧客要求
イベントを中心にした連携
ミッシングリンク
メッセージフローの理由
メッセージフロー図
メッセージフロー図文法(α)
SIMPLEMODELER
SimpleModeler
• SimpleModel用モデル・コンパイラ
• テキストDSL
  • Scala DSL
  • Scala DSL&mavenによるモデル・リポジトリ
• Web仕様書、Java、Grails、Google App Engine Python/Java
  を生成
SimpleModelerの動作
                                                                                    Web仕様書


                                   project                                           クラス図
                                                            html
                                                                                     ステート
  CSV      import                                                                   マシーン図


                                                              java
                            SimpleModelリポジトリ
                               (Maven project)                                    Javaプログラム
 convert
                                                             grails
                                     Scala DSL
                                                                                 Grailsプログラム
           import
                                                                     gae
 Mindmap
 (Xmind)
                                                                             Google App Engine/Python
                                                                                    プログラム
                                                                      gaej
                          verify                  testset
           import

                                                                              Google App Engine/Java
                                                             gaeo                   プログラム
  Excel


                          検証結果                   テストセット                        Google App Engine Oil
                                                                                    プログラム
                    企画中
SimpleModelerが生成するコード
Web Controller/
Action/Template                      HTML Form
                              JSP
                  index.jsp                                                         EntityRepositoryService
                                                             Servlet
              Dojoウィジェット
                  index.jsp
                    index.jsp                 DEACustomerController
                      index.jsp
                                                                         <<document>>
                                                                          DDCustomer



                                              GwtCustomer                        DSYorozuEntity
     GWT                                                                        RepositoryService
                                    GWT-RPC                                                                    JDO
                      index.html                             Servlet
                                                                                                      <<entity>>
                                                   GwtYorozuEntity                                   DEACustomer
                    GWTCustomer                  RepositoryServiceImpl
                       Editor
                                                                                        JDO

                                                 Atom

   AtomPub
                                    AtomPub                  Servlet
                                                AtomYorozuDomain
                   Atomクライアント
                                              RepositoryServiceServlet
                                                                                    DataStore

                                          HTML Form
     REST                                   JSON
                                                             Servlet
                     Webブラウザ                    RESTYorozuDomain
                     (JavaScript)             RepositoryServiceServlet
SimpleModelerでの対応方針
                                        状態機械モデル



                                                                         DSLで記述。
                                        ステートマシーン図




                                                                         自動生成。
    ユースケースを現実化したものがコミュニケーショ
   ン図/シーケンス図、 コミュニケーション図/シーケン
                                                                  オブジェクト図/クラス
   ス図を利用者の視点によるシステムの利用事例と
                                                                  図、 コミュニケーション
          して抽象化したものがユースケース
                                                                  図/シーケンス図に登
                                                                  場するオブジェクトの
                                                                  状態遷移を記述


     ユースケース図               コミュニケーション図                   オブジェクト図


          ユースケース
           (利用事例)



ユースケース、サービスをDSLで記述。
                                                                                 クラス図をインスタンス
                                                                                 化(実体化)したものが
                                                                                 オブジェクト図

ユースケースからサービスまではモデル検証。
サービス契約からコンポーネントの
骨組みを自動生成。
      コミュニケーション図を時間
      軸の側面から記述したもの
            がシーケンス図
                          シーケンス図          オブジェクト図上でコラ
                                          ボレーション(メッセー
                                                        クラス図


           G3フレームワークとの                    ジの送受信の集まり)
                                          を記述したものがコミュ
                                                                                 DSLで記述。
           連携で精度を上げたい
                                          ニケーション図


                                                                                 自動生成。

                       協調モデル                            静的構造モデル
SimpleModelerデモ
Scala DSL
package com.yorozu

import org.simplemodeling.dsl._
import org.simplemodeling.dsl.datatype._
import org.simplemodeling.dsl.domain._
import org.simplemodeling.dsl.domain.values._

case class DER製品 extends DomainResource {
 term = "製品"
 caption = "製品"
 brief = <t></t>
 description = <text></text>

    id("製品Id", DVI製品Id())
    attribute("製品Name", DVN製品Name())
}

case class DVI製品Id extends DomainValueId {
 term = "製品Id"
 caption = "製品Id"
 brief = <t></t>
 description = <text></text>

    attribute("value", XString)
}

case class DVN製品Name extends DomainValueName {
 term = "製品Name"
 caption = "製品Name"
 brief = <t></t>
 description = <text></text>

    attribute("value", XString)
}
SimpleModelerデモ
Web仕様書
SimpleModelerデモ
クラス図
SimpleModelerデモ
Scala DSL→ステートマシーン図
package com.yorozu
                                                 case class DMS入荷待 extends DomainState {
import org.simplemodeling.dsl._                   term = "入荷待"
import org.simplemodeling.dsl.datatype._          caption = "入荷待"
import org.simplemodeling.dsl.domain._            brief = <t></t>
import org.simplemodeling.dsl.domain.values._     description = <text></text>

case class DER商品 extends DomainResource {            transition(DEE商品入荷(), DMS在庫中())
 term = "商品"                                     }
 caption = "商品"
 brief = <t></t>                                 case class DMS在庫中 extends DomainState {
 description = <text></text>                      term = "在庫中"
                                                  caption = "在庫中"
    id("商品Id", DVI商品Id())                         brief = <t></t>
    attribute("商品Name", DVN商品Name())              description = <text></text>
    association("製品", DER製品(), OneMore)
    statemachine(DM商品状態())                           transition(DEE顧客購入(), DMS配送中())
}                                                    transition(DEE顧客購入(), DMS販売完())
                                                 }
・・・中略・・・
case class DM商品状態 extends DomainStateMachine {   case class DMS配送中 extends DomainState {
 term = "商品状態"                                    term = "配送中"
 caption = "商品状態"                                 caption = "配送中"
 brief = <t></t>                                  brief = <t></t>
 description = <text></text>                      description = <text></text>

    state(DMS入荷待())                                  transition(DEE商品配送(), DMS販売完())
    state(DMS在庫中())                              }
    state(DMS配送中())
    state(DMS販売完())                              case class DMS販売完 extends DomainState {
}                                                 term = "販売完"
                                                  caption = "販売完"
                                                  brief = <t></t>
                                                  description = <text></text>

                                                 }
SimpleModelerデモ
ステートマシーン図と状態遷移
表
SimpleModeler & AppEngine Java
• Web UI
• サービス
• エンティティ
Web UI
• Web MVC→Web GUI
• HTML5/CSS3
  • REST/JSON
• GWT2
  • GWT-RPC
• HTML4/jQuery
  • REST/JSON
SimpleModeler & AppEngine/Java
サービス
サービス/コンポーネントの生成

                                                                                                    完全自動生成
                                                      コンポーネント本体
                                                         実装

                                                                                                     雛形生成




                              <<abstract>>
                                             サービス契約    <<abstract>>         外部リソース   <<abstract>>

                               プロトコル                                                   リソース
                                                      コンポーネント本体
                               ファサード                                                   アダプタ




                                                                      変化点



                                                                                       リソース
                                                       <<abstract>>
AtomPub   JSON   XML   WS-*             CSV                                            アダプタ            外部リソース
                                                        変化責務                            実装




                                                        変化責務
                                                         実装
動的モデルの記述と実装
    手続き                  関数(宣言)                    状態機械
                                                    モデル
                                                    サービスの挙動を
                                             モデルを作る
                         期待度大                       適切なモデルで記述
                                             のが難しい
 変換は
                                                                  変換!
 かなり難しい


 イベント            状態   イベント                 イベント
                                      状態                   状態




        状態機械                 状態機械                 状態機械
                ガード                  ガード                  ガード

                                                                実行時は
        アクション                アクション                アクション         状態機械ベースの
                                                                リアクティブシステム
                              実装
SimpleModeler & AppEngine/Java
エンティティ
SimpleModelerが生成するレコー
ド
• 共通属性
 • 作成日時、更新日時
    • 論理更新、楽観ロックなど
    • AtomPub
• 自己記述的
 • スキーマバージョン
    • スキーマエボリューション
 • スキーマメタデータ
    • レコードのメタデータをインスタンスごとに持つ
 • 更新ログ
• 論理更新、論理削除
 • append-only
• AtomPubフィールド対応
メタ・モデル
               <<usecase>>
                UseCase




               <<service>>
                 Usage




   <<actor>>    <<event>>    <<resource>>
    Actor         Event        Resource




               <<service>>   <<powertype>>
                 Service      Powertype




                <<rule>>
                  Rule
メタ・モデルのインスタンス

                                                       サービス・システム外
              アクターと業務システムの物語                            にあるオブジェクト          イベントに参加するアクター         サービス・システムが管理
                                                                                                 しているオブジェクト




      業務ユースケースのフローの中で            業務タスクの実行によって                                     ドメイン
    サービス・システムと対話するステップ              イベントが発生する
                                                                    アクター
                                                                           登場人物

                           業務ユースケース
        業務タスクをアクターと                                                                                        道具
サービス・システムの対話として具体化                  脚本                                                         リソース
                            業務タスク
                                                                    イベント
                                                                                              状態機械
                                                                           出来事
                                         物語




                                                                                                                イベントによって状態が
                          システム・ユースケース
                                                                                                                遷移する

                           システム・タスク             サービス                  サービス・システム上         イベントによって更新(+参照)
                                                                      で発生するイベント          されるリソース




      アクターとサービス・システムの物語
関連
                              関連の種類
<<aggregate>>
                                   関連(association)
                                   集約 (aggregation)
                                   合成 (composition)
                                   whole-partの合成
                              多重度
                                   1, 0..1(?), 1..N(+), 0..N(*)
                              DataStore Id
                                   Key, String, Long
                              物理ID、論理ID
                              エンティティ参照
                                   物理ID、論理ID
                              自動採番、手動採番
                              物理更新、論理更新
                              物理削除、論理削除
                <<part>>
                              unary、binary
                              リンク参照、Query参照
                              キャッシュ有無
                              トランザクション
                                   気にしない、BASE、ACID
EntityとValue Object(document)
間の転記

           <<document>>
         DD顧客購入依頼文書
                                                          <<actor>>
           日時: DateTime                                   DEA顧客

         顧客番号: DVI顧客番号                <<event>>       顧客番号: DVI顧客番号
           商品番号: DVI商品番号             DEE顧客購入           顧客名: PartyName
 1...N         価格: Money        顧客取引番号: DVI顧客取引番号
             個数: XUnsignedInt       日時: DateTime
                                  顧客番号: DVI顧客番号




                                      <<item>>
                                  DEI顧客購入商品明細
           <<document>>
         DD顧客購入結果文書             顧客取引番号: DVI顧客取引番号         <<actor>>
 顧客取引番号: DVI顧客取引番号                商品番号: DVI商品番号           DER商品

           日時: DateTime            明細番号: ItemNo       商品番号: DVI商品番号
         顧客番号: DVI顧客番号               価格: Money         商品名: DVN商品名
          顧客名: PartyName           個数: XUnsignedInt   在庫数: XUnsignedInt
           商品番号: DVI商品番号
            商品名: DVN商品名
 1...N
               価格: Money
             個数: XUnsignedInt
同期write +
非同期ログwrite + 管理情報cache
                      /customer/c11/update-async?name=ABC_Taro


                                                 アプリケーション            ②
     Web    ①                                                            Customer
                                                   (Servlet)
    ブラウザ
                  ⑤

                                                           ④
                            ③



                                                     TaskQueue



                                                           ⑥
                            /_system/event/log
                                                 アプリケーション                処理結果
                                                   (Servlet)              ログ
                                                                     ⑦




                                                     memcache


                                                           ⑨
                                    /_system/flush
                                                                 ⑩
                                                 アプリケーション                Customer
           Cron
                        ⑧                          (Servlet)             管理情報
非同期write
                    /customer/c11/update-async?name=ABC_Taro


                                               アプリケーション
   Web     ①
                                                 (Servlet)
  ブラウザ
           ③

                                                        ②




                                                   TaskQueue



                                                        ④
                                                                   ⑤   Customer
                /customer/c11/update?name=ABC_Taro
                                               アプリケーション
                                                 (Servlet)

                                                                   ⑦   処理結果
                                                         ⑥              ログ



                                                   memcache


                                                         ⑨
                                  /_system/flush
                                                               ⑩
                                               アプリケーション                Customer
         Cron
                   ⑧                             (Servlet)             管理情報
powertype/区分コード

                              <<actor>>              <<powertype>>
                              DEA顧客                   DP料金区分

                                                   無料
                                                   エントリ
                                                   プロフェッショナル



       DD顧客                   DEA顧客                           DP料金区分

  ID          12345      ID               12345      ID       料金区分名        updated

 名前           山田太郎      名前                山田太郎       1               無料   2008-10-10

料金区分           3      料金区分                  3        2           エントリ     2008-10-10

 料金区分                  料金区分
               プロ                          プロ        3      プロフェッショナル     2009-05-05
_料金区分名                _料金区分名
                      料金区分
                                      2009-03-03
                      _updated
モデルとレコード

                                                                           1..*
                       <<actor>>                     <<event>>                       <<part>>        <<resource>>
                       DEA注文                          DEE注文                        DEP注文詳細             DER商品




       DEA顧客                                                           DEE注文                                               DER商品

  ID      12345                      ID      1234567                                                     ID         商品_名前          価格     updated

 名前       山田太郎                     発効日       山田太郎                                                        135        みかん            100   2009-05-05

updated   2009-03-03                顧客       23456                                                       246         りんご           80    2009-05-05

                                   顧客_名前     山田太郎                                                        369         ぶどう           120   2009-05-05

                                                                 DEP注文詳細

                                                     ID          商品        商品_名前       価格       個数

                                                     1           135       みかん          100     5
                                   注文詳細
                                                     2           246        りんご         80      3

                                                     3           369        ぶどう         120     8



                                   updated   2009-09-09
スキーマ・エボリューション(課
題)

    スキーマ V1


    スキーマ V2

    スキーマ V3   生成

                                       スキーマ V1
                             スキーマ V1    レコード
                              ハンドラ


                   スキーマ V3   スキーマ V2   スキーマ V2
                   エンティティ     ハンドラ      レコード
アプリケーション
                             スキーマ V3
                              ハンドラ     スキーマ V3
                                        レコード
G3フレームワーク
G3フレームワーク
• メッセージフロー実行系
• Scala DSLで記述したメッセージフローモデルを実行する
 • メッセージ、チャネル、エージェント
 • 分散サービス向けの糊言語
 • 故障、遅延、規模を扱う
• プラットフォーム(構想)
 • ローカル環境
  • スクリプト言語として
 • クラウド環境
  • Google App Engine
  • Mule ESB/Active MQ/Spring
    • Windows Azure/Amazon EC2/VMforce
チャネルの構造
例1
class Split4 extends G3Application {
 agent('compute) {
   case x: Int => x + 100
 } aggregate()

    start(List(1, 2, 3, 4, 5)) split() publish("compute")
}
例2
class Join extends G3Application {
 agent('compute) {
   case x: Int => x + 100
 }

  start(List(1, 2, 3, 4, 5)) split() publish("compute") join()
aggregate()
}
例3
class TwitterScan extends G3Application {
 service('demogon,
"http://[user]:[password]@twitter.com/statuses/user_timeline/[
user].atom")

    start invoke("demogon") agent {
      case AtomFeed(feed) => feed.toString
      case _ => "???"
    } agent {
      x => println("==> " + x)
      x
    }
}
まとめ
• 静的モデル
 • 基本的なモデリングの枠組みは同じでよさそう
  • クラウド(BASEなど)を意識した追加定義で対応
 • DSLからの自動生成はかなりできそう
  • モデルに記述した各種特性から最適なコードを生成する
• 動的モデル
 • 状態遷移モデルはモデル定義可能、自動生成可能
  • ただし適用範囲が狭い
 • 振舞いモデルに工夫が必要
  • 浅海のアプローチはメッセージフローモデルの導入
    • メッセージフロー図
    • メッセージフローDSL&実行フレームワーク
    • SimpleModelerでのDSL定義&自動生成も行いたい
End

Contenu connexe

Similaire à クラウド・モデリング

DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要Shintaro Hosoai
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】Tomoharu ASAMI
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】Tomoharu ASAMI
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】Tomoharu ASAMI
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】Tomoharu ASAMI
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】Tomoharu ASAMI
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】Tomoharu ASAMI
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】Tomoharu ASAMI
 
A Model-Based Development Process for Dependable Robots
A Model-Based Development Process for Dependable RobotsA Model-Based Development Process for Dependable Robots
A Model-Based Development Process for Dependable RobotsKeiju Anada
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】Tomoharu ASAMI
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】Tomoharu ASAMI
 
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)Tomoharu ASAMI
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】Tomoharu ASAMI
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】Tomoharu ASAMI
 

Similaire à クラウド・モデリング (20)

DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
動的モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第6回】
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
 
EMF勉強会
EMF勉強会EMF勉強会
EMF勉強会
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
 
A Model-Based Development Process for Dependable Robots
A Model-Based Development Process for Dependable RobotsA Model-Based Development Process for Dependable Robots
A Model-Based Development Process for Dependable Robots
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
 

Plus de Tomoharu ASAMI

アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】Tomoharu ASAMI
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】Tomoharu ASAMI
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】Tomoharu ASAMI
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】Tomoharu ASAMI
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】Tomoharu ASAMI
 
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】Tomoharu ASAMI
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】Tomoharu ASAMI
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】Tomoharu ASAMI
 
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】Tomoharu ASAMI
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】Tomoharu ASAMI
 
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】Tomoharu ASAMI
 
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】Tomoharu ASAMI
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】Tomoharu ASAMI
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】Tomoharu ASAMI
 
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】Tomoharu ASAMI
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】Tomoharu ASAMI
 
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】Tomoharu ASAMI
 
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】Tomoharu ASAMI
 

Plus de Tomoharu ASAMI (18)

アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
 
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
 
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
 
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
 
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
 
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
 
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
 
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
静的モデル(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第5回】
 

クラウド・モデリング

  • 2. 内容 • クラウド・アプリケーションのモデリング技術について、 浅海の取り組みの中で考えたことをお話します。
  • 6. オブジェクト・モデルの構成 状態機械モデル ステートマシーン図 ユースケースを現実化したものがコミュニケーショ ン図/シーケンス図、 コミュニケーション図/シーケン オブジェクト図/クラス ス図を利用者の視点によるシステムの利用事例と 図、 コミュニケーション して抽象化したものがユースケース 図/シーケンス図に登 場するオブジェクトの 状態遷移を記述 ユースケース図 コミュニケーション図 オブジェクト図 ユースケース (利用事例) クラス図をインスタンス 化(実体化)したものが オブジェクト図 コミュニケーション図を時間 軸の側面から記述したもの シーケンス図 クラス図 オブジェクト図上でコラ がシーケンス図 ボレーション(メッセー ジの送受信の集まり) を記述したものがコミュ ニケーション図 協調モデル 静的構造モデル
  • 7. SimpleModeling全体像 ドメイン・モデル 要求モデル システム・モデル 設計モデル 用語 事実 契約 自然言語 規則 契約 ユースケース 宣言モデル 拡張 静的モデル 利用 動的モデル 変換 コラボレーション コラボレーション 動的モデル 動的モデル アプリケ ーション・ 同期 機能モデル 変換 具体化 モデル サービス契約 静的モデル 静的モデル データフロー図 クラス図 クラス図 オブジェクト・ OCL 同期 操作 操作 モデル OCL OCL クラス図 クラス図 クラス図 静的モデル 変換 静的モデル 具体化 静的モデル ドメイン・ モデル 動的モデル 張 拡 化 体 具 ルール・モデル 宣言モデル 変換 宣言モデル ビジネス・ルール ビジネス・ルール
  • 8. SimpleModelingモデル変換 業務モデル ドメイン・モデル 要求モデル システム・モデル 設計モデル 実装 静的構造 エンティティ ドメイン層 ドメイン層 抽出 具体化 格納 現実世界 データベース ドメイン・モデル 抽出 コントロール アプリケーション層 アプリケーション層 ボキャブラリ 詳細化 実現 動的モデル 具体化 文脈 ユースケース 具体化 利用事例 バウンダリ プレゼンテーション層 プレゼンテーション層 操作 やりたいこと エンド・ユーザ アプリケーション・モデル
  • 9. SVO
  • 12. クラウド・アプリケーション・アーキテク チャ 論理層の観点から サーバ側では、 GUIが使用する サービスを提供する。 クライアントはWebブラウザ上で 動作するHTML5で本格的なGUI プレゼンテーション層 を構築する。 クラウド・アプリケーション クライアント側 サーバ側 アプリケーションの論理的な構成は 従来のものと変わらない プレゼンテーション層 HTML5 サービス ビジネス層 ドメイン層 プレゼンテーション層はWeb指 統合層 アクセス方式1: RDBMS 向のMVC2ではなく、 クライアント ACID特性を要求されるデータはRDBMSに アクセス方式4: 手続き呼出し /サーバ時代のGUIに回帰する。 格納する。 性能特性、 障害特性がローカル の手続き呼び出しよりも脆弱。 アクセス方式5: メッセージング 統合層 分散環境での連携に適応する特性をもつ。 RDBMS メッセージ・キュー アクセス方式2: KVS KVS 一般のデータはKVSに格納するのが望ましい。 サービス REST サービス アクセス方式3:REST Webページを手繰って情報を取得する サービス
  • 13. クラウド・アプリケーション・アーキテ クチャの例 マスターデータなど更新頻度が低いデータは KVSで配布して直接参照する。 結果を直接知りたい場合には、 手続き呼 KVS び出しで同期型の連携を行う。 この形式の連携を行うとスケーラビリティが 低くなる。 プレゼンテーションの段階でできることをや っておくと、 スケールアウトの効果によって クラウド・アプリケーション スケーラビリティが高まる。 外部サービスからRESTを用いて情報を取 得するのが典型的な利用方法。 サービス利用の主力はメッセージである。 プレゼンテーション サービス サービス この形式の連携を行うとスケールアウトに よってスケーラビリティを確保できる。 サービス バックエンドのサービス群もメッセージによ メッセージ・キュー REST って連携。 サービス メッセージ・キュー 同期通信 サービス メッセージ送信 メッセージ配信 KVS RDBMS データベースをアクセスするスコープは サービスに閉じておくのがよい。 KVSとRDBMSを適材適所で使い分ける。 可能であればKVSを使うのが望ましい。
  • 14. クラウドの要件とモデリング技 法 エンティティ・モデル データベース選択 データ種別 データ分割 ユースケース・モデル サービス分割 アクセス法解析 責務抽出 非同期処理 コラボレーション 顧客要求
  • 21. SimpleModeler • SimpleModel用モデル・コンパイラ • テキストDSL • Scala DSL • Scala DSL&mavenによるモデル・リポジトリ • Web仕様書、Java、Grails、Google App Engine Python/Java を生成
  • 22. SimpleModelerの動作 Web仕様書 project クラス図 html ステート CSV import マシーン図 java SimpleModelリポジトリ (Maven project) Javaプログラム convert grails Scala DSL Grailsプログラム import gae Mindmap (Xmind) Google App Engine/Python プログラム gaej verify testset import Google App Engine/Java gaeo プログラム Excel 検証結果 テストセット Google App Engine Oil プログラム 企画中
  • 23. SimpleModelerが生成するコード Web Controller/ Action/Template HTML Form JSP index.jsp EntityRepositoryService Servlet Dojoウィジェット index.jsp index.jsp DEACustomerController index.jsp <<document>> DDCustomer GwtCustomer DSYorozuEntity GWT RepositoryService GWT-RPC JDO index.html Servlet <<entity>> GwtYorozuEntity DEACustomer GWTCustomer RepositoryServiceImpl Editor JDO Atom AtomPub AtomPub Servlet AtomYorozuDomain Atomクライアント RepositoryServiceServlet DataStore HTML Form REST JSON Servlet Webブラウザ RESTYorozuDomain (JavaScript) RepositoryServiceServlet
  • 24. SimpleModelerでの対応方針 状態機械モデル DSLで記述。 ステートマシーン図 自動生成。 ユースケースを現実化したものがコミュニケーショ ン図/シーケンス図、 コミュニケーション図/シーケン オブジェクト図/クラス ス図を利用者の視点によるシステムの利用事例と 図、 コミュニケーション して抽象化したものがユースケース 図/シーケンス図に登 場するオブジェクトの 状態遷移を記述 ユースケース図 コミュニケーション図 オブジェクト図 ユースケース (利用事例) ユースケース、サービスをDSLで記述。 クラス図をインスタンス 化(実体化)したものが オブジェクト図 ユースケースからサービスまではモデル検証。 サービス契約からコンポーネントの 骨組みを自動生成。 コミュニケーション図を時間 軸の側面から記述したもの がシーケンス図 シーケンス図 オブジェクト図上でコラ ボレーション(メッセー クラス図 G3フレームワークとの ジの送受信の集まり) を記述したものがコミュ DSLで記述。 連携で精度を上げたい ニケーション図 自動生成。 協調モデル 静的構造モデル
  • 25. SimpleModelerデモ Scala DSL package com.yorozu import org.simplemodeling.dsl._ import org.simplemodeling.dsl.datatype._ import org.simplemodeling.dsl.domain._ import org.simplemodeling.dsl.domain.values._ case class DER製品 extends DomainResource { term = "製品" caption = "製品" brief = <t></t> description = <text></text> id("製品Id", DVI製品Id()) attribute("製品Name", DVN製品Name()) } case class DVI製品Id extends DomainValueId { term = "製品Id" caption = "製品Id" brief = <t></t> description = <text></text> attribute("value", XString) } case class DVN製品Name extends DomainValueName { term = "製品Name" caption = "製品Name" brief = <t></t> description = <text></text> attribute("value", XString) }
  • 28. SimpleModelerデモ Scala DSL→ステートマシーン図 package com.yorozu case class DMS入荷待 extends DomainState { import org.simplemodeling.dsl._ term = "入荷待" import org.simplemodeling.dsl.datatype._ caption = "入荷待" import org.simplemodeling.dsl.domain._ brief = <t></t> import org.simplemodeling.dsl.domain.values._ description = <text></text> case class DER商品 extends DomainResource { transition(DEE商品入荷(), DMS在庫中()) term = "商品" } caption = "商品" brief = <t></t> case class DMS在庫中 extends DomainState { description = <text></text> term = "在庫中" caption = "在庫中" id("商品Id", DVI商品Id()) brief = <t></t> attribute("商品Name", DVN商品Name()) description = <text></text> association("製品", DER製品(), OneMore) statemachine(DM商品状態()) transition(DEE顧客購入(), DMS配送中()) } transition(DEE顧客購入(), DMS販売完()) } ・・・中略・・・ case class DM商品状態 extends DomainStateMachine { case class DMS配送中 extends DomainState { term = "商品状態" term = "配送中" caption = "商品状態" caption = "配送中" brief = <t></t> brief = <t></t> description = <text></text> description = <text></text> state(DMS入荷待()) transition(DEE商品配送(), DMS販売完()) state(DMS在庫中()) } state(DMS配送中()) state(DMS販売完()) case class DMS販売完 extends DomainState { } term = "販売完" caption = "販売完" brief = <t></t> description = <text></text> }
  • 30. SimpleModeler & AppEngine Java • Web UI • サービス • エンティティ
  • 31. Web UI • Web MVC→Web GUI • HTML5/CSS3 • REST/JSON • GWT2 • GWT-RPC • HTML4/jQuery • REST/JSON
  • 33. サービス/コンポーネントの生成 完全自動生成 コンポーネント本体 実装 雛形生成 <<abstract>> サービス契約 <<abstract>> 外部リソース <<abstract>> プロトコル リソース コンポーネント本体 ファサード アダプタ 変化点 リソース <<abstract>> AtomPub JSON XML WS-* CSV アダプタ 外部リソース 変化責務 実装 変化責務 実装
  • 34. 動的モデルの記述と実装 手続き 関数(宣言) 状態機械 モデル サービスの挙動を モデルを作る 期待度大 適切なモデルで記述 のが難しい 変換は 変換! かなり難しい イベント 状態 イベント イベント 状態 状態 状態機械 状態機械 状態機械 ガード ガード ガード 実行時は アクション アクション アクション 状態機械ベースの リアクティブシステム 実装
  • 36. SimpleModelerが生成するレコー ド • 共通属性 • 作成日時、更新日時 • 論理更新、楽観ロックなど • AtomPub • 自己記述的 • スキーマバージョン • スキーマエボリューション • スキーマメタデータ • レコードのメタデータをインスタンスごとに持つ • 更新ログ • 論理更新、論理削除 • append-only • AtomPubフィールド対応
  • 37. メタ・モデル <<usecase>> UseCase <<service>> Usage <<actor>> <<event>> <<resource>> Actor Event Resource <<service>> <<powertype>> Service Powertype <<rule>> Rule
  • 38. メタ・モデルのインスタンス サービス・システム外 アクターと業務システムの物語 にあるオブジェクト イベントに参加するアクター サービス・システムが管理 しているオブジェクト 業務ユースケースのフローの中で 業務タスクの実行によって ドメイン サービス・システムと対話するステップ イベントが発生する アクター 登場人物 業務ユースケース 業務タスクをアクターと 道具 サービス・システムの対話として具体化 脚本 リソース 業務タスク イベント 状態機械 出来事 物語 イベントによって状態が システム・ユースケース 遷移する システム・タスク サービス サービス・システム上 イベントによって更新(+参照) で発生するイベント されるリソース アクターとサービス・システムの物語
  • 39. 関連  関連の種類 <<aggregate>>  関連(association)  集約 (aggregation)  合成 (composition)  whole-partの合成  多重度  1, 0..1(?), 1..N(+), 0..N(*)  DataStore Id  Key, String, Long  物理ID、論理ID  エンティティ参照  物理ID、論理ID  自動採番、手動採番  物理更新、論理更新  物理削除、論理削除 <<part>>  unary、binary  リンク参照、Query参照  キャッシュ有無  トランザクション  気にしない、BASE、ACID
  • 40. EntityとValue Object(document) 間の転記 <<document>> DD顧客購入依頼文書 <<actor>> 日時: DateTime DEA顧客 顧客番号: DVI顧客番号 <<event>> 顧客番号: DVI顧客番号 商品番号: DVI商品番号 DEE顧客購入 顧客名: PartyName 1...N 価格: Money 顧客取引番号: DVI顧客取引番号 個数: XUnsignedInt 日時: DateTime 顧客番号: DVI顧客番号 <<item>> DEI顧客購入商品明細 <<document>> DD顧客購入結果文書 顧客取引番号: DVI顧客取引番号 <<actor>> 顧客取引番号: DVI顧客取引番号 商品番号: DVI商品番号 DER商品 日時: DateTime 明細番号: ItemNo 商品番号: DVI商品番号 顧客番号: DVI顧客番号 価格: Money 商品名: DVN商品名 顧客名: PartyName 個数: XUnsignedInt 在庫数: XUnsignedInt 商品番号: DVI商品番号 商品名: DVN商品名 1...N 価格: Money 個数: XUnsignedInt
  • 41. 同期write + 非同期ログwrite + 管理情報cache /customer/c11/update-async?name=ABC_Taro アプリケーション ② Web ① Customer (Servlet) ブラウザ ⑤ ④ ③ TaskQueue ⑥ /_system/event/log アプリケーション 処理結果 (Servlet) ログ ⑦ memcache ⑨ /_system/flush ⑩ アプリケーション Customer Cron ⑧ (Servlet) 管理情報
  • 42. 非同期write /customer/c11/update-async?name=ABC_Taro アプリケーション Web ① (Servlet) ブラウザ ③ ② TaskQueue ④ ⑤ Customer /customer/c11/update?name=ABC_Taro アプリケーション (Servlet) ⑦ 処理結果 ⑥ ログ memcache ⑨ /_system/flush ⑩ アプリケーション Customer Cron ⑧ (Servlet) 管理情報
  • 43. powertype/区分コード <<actor>> <<powertype>> DEA顧客 DP料金区分 無料 エントリ プロフェッショナル DD顧客 DEA顧客 DP料金区分 ID 12345 ID 12345 ID 料金区分名 updated 名前 山田太郎 名前 山田太郎 1 無料 2008-10-10 料金区分 3 料金区分 3 2 エントリ 2008-10-10 料金区分 料金区分 プロ プロ 3 プロフェッショナル 2009-05-05 _料金区分名 _料金区分名 料金区分 2009-03-03 _updated
  • 44. モデルとレコード 1..* <<actor>> <<event>> <<part>> <<resource>> DEA注文 DEE注文 DEP注文詳細 DER商品 DEA顧客 DEE注文 DER商品 ID 12345 ID 1234567 ID 商品_名前 価格 updated 名前 山田太郎 発効日 山田太郎 135 みかん 100 2009-05-05 updated 2009-03-03 顧客 23456 246 りんご 80 2009-05-05 顧客_名前 山田太郎 369 ぶどう 120 2009-05-05 DEP注文詳細 ID 商品 商品_名前 価格 個数 1 135 みかん 100 5 注文詳細 2 246 りんご 80 3 3 369 ぶどう 120 8 updated 2009-09-09
  • 45. スキーマ・エボリューション(課 題) スキーマ V1 スキーマ V2 スキーマ V3 生成 スキーマ V1 スキーマ V1 レコード ハンドラ スキーマ V3 スキーマ V2 スキーマ V2 エンティティ ハンドラ レコード アプリケーション スキーマ V3 ハンドラ スキーマ V3 レコード
  • 47. G3フレームワーク • メッセージフロー実行系 • Scala DSLで記述したメッセージフローモデルを実行する • メッセージ、チャネル、エージェント • 分散サービス向けの糊言語 • 故障、遅延、規模を扱う • プラットフォーム(構想) • ローカル環境 • スクリプト言語として • クラウド環境 • Google App Engine • Mule ESB/Active MQ/Spring • Windows Azure/Amazon EC2/VMforce
  • 49. 例1 class Split4 extends G3Application { agent('compute) { case x: Int => x + 100 } aggregate() start(List(1, 2, 3, 4, 5)) split() publish("compute") }
  • 50. 例2 class Join extends G3Application { agent('compute) { case x: Int => x + 100 } start(List(1, 2, 3, 4, 5)) split() publish("compute") join() aggregate() }
  • 51. 例3 class TwitterScan extends G3Application { service('demogon, "http://[user]:[password]@twitter.com/statuses/user_timeline/[ user].atom") start invoke("demogon") agent { case AtomFeed(feed) => feed.toString case _ => "???" } agent { x => println("==> " + x) x } }
  • 52. まとめ • 静的モデル • 基本的なモデリングの枠組みは同じでよさそう • クラウド(BASEなど)を意識した追加定義で対応 • DSLからの自動生成はかなりできそう • モデルに記述した各種特性から最適なコードを生成する • 動的モデル • 状態遷移モデルはモデル定義可能、自動生成可能 • ただし適用範囲が狭い • 振舞いモデルに工夫が必要 • 浅海のアプローチはメッセージフローモデルの導入 • メッセージフロー図 • メッセージフローDSL&実行フレームワーク • SimpleModelerでのDSL定義&自動生成も行いたい
  • 53. End