ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

  • BridgePointの使い方2-起動と、適当にコード生成

    2018-11-04 16:08
    今回は使い方の説明。
    長くなってしまったので、必要と思うところを飛ばし飛ばし読んでください。

    1. 起動、プロジェクト作成(テンプレート読み込み)

    (インストール先)/eclipce/Launcher.bat から起動します。
    前回ショートカットを作成された方はそちらからでも。

    起動すると、まずワークスペースの場所を聞かれます。
    今回はひとまず適当な場所を指定しておきます。




    OKを押すと、ロゴが出て本格的に起動します。
    しばらくしてWelcome画面が表示されます。

    テンプレートがあるので、せっかくなんで使いましょうか。
    上から三つ目の「Quick Start」を選択します。



    色々サンプルなどが出てきます。
    GPS時計(GPS Watch)や、電子レンジ(Microwave Oven)のサンプルもあるので
    こちらを選択して、どんなモデルが作られているのか見てみるのもいいかもしれません。
    xtUML Metamodel は、BridgePoint上のモデルデータをモデル化した、まさにメタモデルです。
    コード自動生成する際にはこの枠組みを使っているため、出力するコードのカスタマイズをしたい場合に眺めることになります。

    とりあえず今は、一番下の「TEmplateProject」を選択しましょう。


    テンプレートが展開されてBridgePointの編集画面に変わり、
    同時にHelp画面が別窓で表示されます。


    ↑別窓表示されたHelp画面

    英語が堪能な方は、表示されたHelpに従い進めることをお勧めします。
    私はそっとHelpを閉じました……

    さて、ひとまずプロジェクトの作成まではできました。

    なお、TemplateProjectを使わずに全て自分で用意することも当然できます。
    ModelExplorerで右クリック New > xtUML Project で作っていけばいいだけです。
    プロジェクト名は後から変更できない(できないこと無いけどエラーになったりする)ので、本当はテンプレートを使わず自分で作るのが望ましいのですが、
    まずはBridgePointでの標準的なプロジェクト構成を知って頂こうと、今回はテンプレートを使用しています。


    2. プロジェクト内の構成説明


    BridgePointの画面はモデル編集用の画面になっているかと思います。


    TemplateProjectがどんなものか、
    左側、ModelExplorerのところで、左側の l> を押して展開してみましょう。
    以下のようになっています。




    はPackageというもので、ディレクトリみたいなものです。

    External Entities は、[ExternalEntity]をまとめたPackage。
    [ExternalEntity]は、外部のAPIなどへのBridgeのことです。
    この中の[Bridge]が、API(関数)そのものになります。
    Cで例えるなら、
     stdlib
      malloc
       size
      realloc
       ptr
       size
    みたいな感じです。

    InterFaces は、[Interface]をまとめたPackage。
    [Interface]は[Component]間通信の規約を表現するものです。
    [Interface]の中に、[Operation(同期的通信)] か [Signal(非同期的通信)]で一つ一つ規定します。

    Libraryは……Library!? Componentsじゃないんか……[Component]をまとめたPackageです。

    [Component]は、システムを構成するひとつの機能群です。
    要は、今から作ろうとしているシステムのメイン部分です。
    この中に[Class]を配置していきます。
    既に2つ並んでいるとおり、複数作れます。入れ子にすることも可能です。
    なお、
    BridgePoint上では[Component]の存在は必須です。
    [Class]は必ず[Component]の中に作ってください。(直下でなくても(で区切った中でも)OK)
    上記を守らずProject直下のPackageにClassを配置したりできてしまいますが、そうするとコードの生成時に失敗します。

    Systemは、[Component]間の関係を表したものになります。
    Packageをダブルクリックすると、画面中央に以下のように表示されます。


    ComponentOne と ComponentTwo が Interface により繋がっています。
    [ImportComponent]は、[Component]の参照です。
    ComponentOne と ComponentTwoの実体はLibraryの中にいるので、
    [ImportComponent]で参照して配置しています。

    さて、実はこれら、で区切る必要はありません。
    一つのの中にも配置して、を使わず直接で繋ぐことも可能です。
    しかし、やはり分かりやすく(≒管理しやすく)するためにも、
    テンプレートのように、用途毎にで区切っておくことを強くお勧めしておきます。

    長くなりましたが、以上がTemplateProjectの構成です。


    3. とりあえずコード生成…の前の準備(初回のみ)

    長くなってきたし、
    [Class]以下について説明するとさらに長くなってしまうのでこれは次回に託して、
    ひとまずコード生成をしてみます。

    まず、一度だけやればいい部分の説明。
    ・生成するコード種別の選択
    Projectを右クリックして、
    BridgePoint Utilities > Set Model Compiler
    を選択してください。


    すると、生成するコードの選択を求められます。


    TemplateProjectを取り込まず、新規にProjectを作った際は、最初にこの画面が出ますが、
    後からこのように変更することも可能です。

    ひとまずここは「C Model Compiler (Source)」を選んでおきます。
    余談
    Classとかあるのに、C言語? と思う方もいるかと思いますが、
    構造体やポインタを使ってメソッドはクラス名をヘッダにして…などすれば、やりたいことはやれます。
    こういった部分はコードの生成ルール側で考えるところなので、
    モデルを作る側は、対象システムの言語仕様など細かいことを気にせず作ることができます。

    ・コード生成する画面の表示
    Window > Perspective > Open Perspective > C/C++
    を選択してください。


    すると、右上(Perspective一覧)にC/C++が表示されます。


    コードを生成するのは、このC/C++ の画面で行います。
    (モデルの編集をする場合は、xtUML Modeling の画面で行います)


    4.コード生成

    さていよいよコード生成。

    ……の前に、まずはモデル上で異常が無いかをチェックします。
    これをやっておかないと、チェックされていない部分がコード生成対象から外されてしまいます。

    右上Perspective一覧からxtUML Modeling をクリックしてモデル編集画面に行きます。
    左側ProjectExplorerのProjectを右クリック、Parse All Activities を選択して下さい。


    これで、Project配下の全ての項目に対してパースします。つまり破綻が無いかなどチェックします。
    規模が大きくなるとそこそこ時間はかかりますが、この程度であれば一瞬で終了するでしょう。

    いよいよ、コード生成します。
    右上Perspective一覧から C/C++の画面へ移って、
    ProjectExplorer のProjectを右クリック、Build Project を選択して下さい。



    なにやら右下に色々表示されはじめます。
    完了すると Build Finished と表示されます。



    そのすぐ上を見てみると、gccやg++など表示されています。
    デフォルトでは、コードを生成したあとコンパイルまで実施するためこのようになっています。

    大規模なシステムでは単体コードだけではコンパイルが通らないこともあるでしょう、
    ヘッダ群を置いてパスを通して…などをすれば通るのかもしれませんが詳しいやりかたはわからず。
    ProjectのプロパティのBuildの設定で、コンパイルはしないようにできるので、それで回避してもいいかもしれません。

    右下、Console ボタンを押すことで、表示するものを切り替えられます。
    Code generation complete. と出ているやつが、コード自動生成時のログ表示です。

    生成したコードは、Projectの中のsrcディレクトリの中に格納されています。
    ちなみにgenフォルダの中の .mark ファイルの中を編集することで
    生成されるコードを変化させることが可能です。(デバッグ情報を仕込むとか、この部分だけはコード生成しないとか)

    以上、ひとまずコード生成するところまでを説明しました。
    次回は [Class]や[Event]や状態遷移図なんかについて説明しようかと思います。
    (いつになるやら…)

    [追記]
    念のため、注意点。
    コード生成できるのは、今回説明したところ+クラス図・状態遷移図(とその中のアクション) あたりまでです。(そのはず)

    アクティビティ図やシーケンス図などは自動生成できません。
    (これらはあくまでとあるケースの一例を表したものであって、直接実装に結びつけられないはず)
  • 広告
  • BridgePointの使い方1-インストール

    2018-11-04 13:05
    使い方の説明が(少なくとも日本語では)見つからないので書いてみる。

    Helpとかはあまり読んでいないので間違った情報もあるかもしれません。
    その場合ご指摘頂けると助かります。

    0. そもそもBridgePointってなーに?


    UMLでモデルを描いて、ツール上で動かして検証し、実装コードを吐き出せるツールです。
    モデル駆動開発と呼んでいるそうな。
    (正確には純粋なUMLではありません。executable UML)

    以下の説明が詳しい(他人任せ)
    モデル検討に専念できる!! 「BridgePoint」によるアプローチ (1/3)
    http://monoist.atmarkit.co.jp/mn/articles/1106/08/news002.html

    上記では「メンター・グラフィックス社のMDDツール」と書かれていますが、
    その後無償化・オープンソース化して独立、現在はxtUML.orgより提供されているようです。
    1ライセンス数十万数百万していたのが無償化!
    BridgePoint製品は現在xtUML.orgから提供されていますhttp://www.mentorg.co.jp/products/sm/bridgepoint/index.html

    いくつかの市場の製品で使われているようです。
    他にも、ETロボコンとかでも使われているみだいで、
    ETロボコン用にカスタマイズされた環境の使い方が詳しく説明されています。
    GitHub : MCLMのインストール
    https://github.com/xtuml/modelsjp/wiki/MCLMのインストール
    その他、BridgePointの概要については探せばいくらでも転がっているのでいくつか貼っておきます
    BridgePointを使ったモデル駆動開発(ETロボコン環境のご紹介)https://www.slideshare.net/YukiTsuchitoi/bridge-point-mdd
    BridgePointでモデル駆動を実践する (ppt)
    https://onefact.net/wp-content/uploads/2017/07/BridgePointでモデル駆動を実践する.pptx
    CodeZine : モデル駆動開発におけるモデル変換の役割https://codezine.jp/article/detail/10597


    1. インストール


    以下の通り(他人任せ)

    のた犬のうまい猫めし:BridgePoint、xtUMLでExecutable UMLしたい 1
    http://notainu.hateblo.jp/entry/2015/02/09/213712

    色々変わってしまっているようなのでちゃんと書きます。

    公式サイトのxtuml.orgよりダウンロードしてきます。
    https://xtuml.org/
    緑色の枠の左側「Download Bridgepoint」から



    最新の BridgePoint Community Edition v5.5.0の Windows版をDLします
    (以降の説明、たぶんLinux版でも大差ないはず)



    のた犬さんの記事だとインストーラがあったみたいだけど、今は無さそう……

    ダウンロードしたものを適当な場所に解凍してください。

    ただし、解凍するときに注意。
    デスクトップに解凍するとパスが長いと怒られると思います。
    パス名の短いところに解凍しましょう。(私は K:\BridgePoint に解凍しました)

    以上でインストールは完了です。

    ……が、起動するためのショートカットくらいは追加で用意しておきましょうか。

    起動するには
    (インストール先)/eclipse/Launcher.bat
    を実行すればよいので、これのショートカットを作成してしましょう。
    また、お好みでショートカットのアイコンを
    (インストール先)/bp.ico
    に設定しておくとよいです。




    次回は簡単な使い方を説明します。