Domain-Specific Modeling tool Domain-Specific Modeling top 2 logo Domain-Specific Modeling top3 image
English Deutsch Deutsch Japanese

言語のアーキテクチャ

開発者がアーキテクチャ上のルールに従ってアプリケーションを開発しメンテナンスすることを、全てのアーキテクトは望んでいることでしょう。さもなければ計画されたアーキテクチャは崩壊し、変更が困難でコストが嵩むことになるので。そしてこれは開発チームが増大したり、異なるサイトに配置されていたりすると、より大きな課題となる。

ガイドラインやマニュアル、トレーニングは助けになるものの、残念ながらアーキテクチャ上のガイドラインやルールが守られることを保証することは出来ない。そしてそれらが逆効果になる前に、レビューやコードスタイルのチェックだけが増大することになる。また残念ながら、コード記述された後でしかそのようなチェックは行われないことが大きな課題。

>解決策

健全なエンジニアリングの実践で良く知られるように、早期段階でアーキテクチャ上のルールが守られることが良い結果となる。理想的にはデザインの段階で直ちに実践されることで、それが後工程にいたっても維持されること。それはアプリケーションがデザインされビルドされる特別の言語に、アーキテクチャのルールを体系的に組込むことで達成できる。

そのようなドメインスペシフィックモデリング言語の定義は、ルールを既に良く知るアーキテクトが行うのがベスト。言語内のコンセプトとルールで開発者の作業をガイドし、より良いアプリケーションが即座に生成できることを支援し、アーキテクチャが守られることを確実にして、動作しないものや役に立たないものが生成されることを回避できる。コードジェネレータもアーキテクトに定義され、最終製品に至るコードの品質を堅持する。

ノキア・シーメンスネットワークス (Nokia Siemens Networks)のアーキテクトは、このようにして特定のテレコミュニケーションプラットフォームのアーキテクチャ上のルールとコンストレインツをドメインスペシフィック言語として、モデリング言語とコードジェネレータに用意した。

そのモデリング言語は、モデリング言語を編集するための最高峰の環境である MetaEdit+ を用いて開発された。特に注目すべきは、MetaEdit+ は再利用、リファクタリング、モデルエレメントの入替、大規模モデル化とその処理、マルチユーザアクセスといった産業界で実践的に活用できる機能を提供できることが、NSN の採用の決め手となったこと。

成果

アーキテクチャ上のルールをモデリング言語とコードジェネレターに組込むことで得られた成果:

大規模なプロセスをサポート

アプリケーションのデザインと実装は開発プロセスの大きな部分を占める。要件から始まって、レガシーコードの統合、各種テスト、パッケージングまで。そして DSM が、以下に示すように開発プロセスの様々な段階をカバーするために拡張された。

はじめにレガシーファイルを読込み構文解析して、重要な基本データやメッセージの定義を実装し、モデリングツールのライブラリにインポートした。その構文解析機能は、コード生成機能を構築するための MetaEdit+ Reporting Language を用いて実装された。

それら定義をインポートすることで、アプリケーション開発者はモデリングしながらレガシーデータをモデルエレメントとして直接参照することが出来た。 そして C や GUI 用の Java コードを自動生成させることに加えて、デザインドキュメント生成やモデルチェッキングなど様々な機能もジェネレータを活用して構築した。さらにパッケージング(ファイル構成)や make ファイルなどの自動生成も。またモデルレベルデバッグやデバッグにもジェネレータを有効活用できた。プログラム実行状況をモデル上にアニメーションで同期させたりなど。

まとめ

従来のマニュアルで人手に頼ったコーディングに比較して、 DSM では開発速度が飛躍的に向上し、また容易にもなった。そして開発者はアーキテクチャの詳細や配下のフレームワークについてマスターする必要が無くなるのでトレーニングも少なくて済む。アーキテクチャのルールはモデリング言語に組込まれ、コード生成機能によりアプリケーションコードの品質が向上し、アーキテクチャやコーディングのルールが保証される。そしてこれら自動化を享受できる仕組みを構築するために要した期間は 1人・週だけであったことは特筆すべき成果。