モデル・コード・ドキュメントを記述する プログラミング言語AIDA 会津大学 コンピュータ理工学部 情報システム学部門 データベースシステム学講座 准教授 渡部 有隆 1
モデル・コード・ドキュメントを記述する
プログラミング言語AIDA
会津大学
コンピュータ理工学部
情報システム学部門
データベースシステム学講座
准教授 渡部 有隆
1
ソフトウェア開発の生産性に関する問題
プロジェクトの失敗、納期遅れの発生
ソフトウェアの欠陥に関する問題
バグによる損害、信頼性の欠如
ソフトウェアの管理に関する課題
ソフトウェアの再利用と修正、技術継承
研究背景
2
多くのアプリケーション分野に関するモデルや
アルゴリズムをAIDAによって記述・検証した:
新技術の基となる研究成果・技術(1)
熱伝導
数値シミュレーション
流体
数値シミュレーション
マルチエージェント
シミュレーション
画像処理
アルゴリズム
グラフ・ネットワーク
アルゴリズム
計算幾何学
アルゴリズム 等 3
新技術の基となる研究成果・技術(2)
モデル・アルゴリズムを記述するための
ピクチャとアニメーションによるフォーマット
(Algorithmic CyberFilm)を開発した。
ピクチャ・アニメーションによるプログラムから実行可能コードを生成するコンパイラのアルゴリズム及び自動コード生成器を開発した。
ピクチャによるプログラムを編集するためのエディタを開発した。
4
Animation and Images to Develop Algorithm
間(あいだ):空間と時間の概念でモデル・アルゴリズムを表現・記述する
アニメーションとピクチャによる拡張文字を用いるプログラミング・モデリング言語である。
AIDA
5
単なるプログラミング言語ではなく、情報資源を記述・管理するための言語である
AIDAの特長
AIDA コード
モデル
ドキュメント
計算の構造
属性
アノテーション(注釈)
仕様書
計算手順・計算式
アルゴリズム
6
AIDA:ピクチャによる拡張文字の例(1)
計算構造と変数の宣言を行う拡張文字の例
計算の手順(計算の流れ)を定義する拡張文字の例
7
AIDA:ピクチャによる拡張文字の例(2)
関数・オペレーション・数式パタン・入出力処理を指定する拡張文字の例
変数に対する属性(単位等)を指定する拡張文字の例
8
AIDA:アプリケーションの例
AIDAによる流体解析コード
AIDA開発環境でコーディング
背後にテンプレートプログラム
C++コードを自動生成
実行可能
拡張文字をフレームに配置し
プログラムが構成される
コンパクトなコード(1ページ)
(C++言語で約5~6ページ)
9
AIDA開発環境:アノテーション機能
必要に応じて拡張文字のアノテーションを観覧することが可能
数式の展開
動的な特徴はアニメーションで観覧
変数の属性を観覧
10
AIDA開発環境:エディタ(1)
拡張文字を挿入・削除・移動するためのエディタ群が利用可能
数式
変数 構造
計算手順
数式パタン
11
• 拡張文字をリストから選んで、プログラムにドラッグ&ドロップすることで要素を追加できる。
• 通常のキーボードとキーバインドを使用して素早く入力を行うことも可能。
• 拡張文字の候補を適切に提案し、適切な位置へ配置することをエディタがサポートする
(作業効率を上げ、誤った入力を防ぐ)。
AIDA開発環境:エディタ(2)
12
従来のプログラミング言語の問題点
例:C, C++, Java, Fortran, etc.
汎用性・自由度が高く多くのアプリケーションで使用されている
高い抽象度による分かり難さ
アルゴリズムの動的な特徴が表現できない
バグを埋め込み易い
etc.
従来技術とその問題点(1)
13
従来のビジュアル言語の問題点
例:LabView、UML、etc.
なお抽象度が高く動的な特徴は表し難い
アプリケーションが限られる
プログラムをコンパクトに表現できない
なお従来言語によるコーディングが必要
etc.
等の理由で広く応用されるまでに至っていない
従来技術とその問題点(2)
14
モデル・アルゴリズム、コード、ドキュメントがほぼ別々に記述・管理されている
第三者による検証が困難
アルゴリズムの特徴を抜き出すことが困難
再利用や修正が困難
技術継承が困難
従来技術とその問題点(3)
15
• アニメーションとピクチャを用いてアルゴリズムとプログラマが思い描く計算モデルを直接記述することができる
より簡潔で、分かり易いプログラムの開発が可能となった。
• モデル・コード・ドキュメントを一体化
ビジュアルデバッギングや妥当性のチェックが可能になり、より信頼性の高い安全なソフトウェアの開発が可能となった。
新技術の特徴・従来技術との比較(1)
16
• アノテーションによる自己説明的プログラム
言語要素の暗記が必要なく学習コストが
低い言語である。
• 数に限りのないオープンな言語要素
幅広い分野で応用することができる。
言語要素を追加することで分野に特化した
新しいアプリケーション開発に対応すること
ができる(ユニバーサルな言語になり得る)。
新技術の特徴・従来技術との比較(2)
17
• シミュレーション:物理、工学、機械、ビジネス等
• 信頼性が要求されるソフトウェアの開発
• 教育資料の開発
• プレゼンテーションツールとして利用
• 短いライフサイクルを持ち常に定期的な変更を必要とするソフトウェアの開発・管理
• etc.
想定される用途
18
• ソフトウェア開発
• 電力(原子力及びその他)、機械産業
• 組み込みシステム開発
• 教育産業(学校、大学、研究機関等)
• 情報資源の開発に関連する企業
• etc.
想定される業界
19
• 多くのアプリケーションをサポートするために、必要不可欠な言語要素とライブラリを充実させる。
• ユーザビリティテストを継続し、言語要素の分かり易さ及び開発環境の操作性を向上させる。
• モデルの特徴を自動的にチェックするメカニズムを実装し(設計済み)、作成されるソフトウェアの信頼性をさらに向上させる。
実用化に向けた課題
20
• アプリケーションの提供
要件定義を基に、AIDAによる実装を試みる
より分かり易く、安全なコードへ変換
• 言語や開発環境に対するフィードバック
試作品に対するコメント・提案等
言語要素デザインに関するコメント・提案等
企業への期待
21
• 発明の名称 :
• 出願番号 : • 公開番号 : • 出願人 : • 発明者 :
編集支援プログラム、プログラム改変の支援方法、プログラム編集の支援方法およびコンピュータ処理方法
特願2005-056804
特開2006-243987
公立大学法人会津大学
ニコライ ミレンコフ
吉岡 廉太郎
渡部 有隆
本技術に関する知的財産
22
• 2010年-2011年 日本原子力安全基盤機構
(JNES)委託研究
産学連携の経歴
23
会津大学
産学官連携コーディネーター 本杉 常治
TEL 0242-37 -2776
FAX 0242-37 -2778
e-mail ubic-adm@ubic-u-aizu
お問い合わせ先
24