プログラム図式を用いたソフトウェア開発支援
著者
後藤 隆彰
著者別名
GOTO Takaaki
雑誌名
工業技術
巻
42
ページ
52-56
発行年
2020-02
URL
http://doi.org/10.34428/00011454
Creative Commons : 表示 - 非営利 - 改変禁止 http://creativecommons.org/licenses/by-nc-nd/3.0/deed.jaプログラム図式を用いたソフトウェア開発支援
Software Development Support using Program Diagrams
後藤 隆彰* 1.はじめに 近年、ソフトウェア開発は開発規模や開発期間が増大 し、開発者への負担が大きくなっている。開発対象によ り規模は様々であるが、例えば、DVD レコーダーや自 動車組み込みソフトウェアでは開発行数が数百万行に ものぼるケースもある。高品質なソフトウェアを開発す るためにソフトウェア開発者を支援することは特に重 要である。本稿ではプログラム図式を用いた開発支援に 関する方法と現状について述べる。 2.プログラム図式を用いた開発支援環境 2.1 プログラム図式 プログラムの図表示は、視覚的プログラミングツール やプログラム情報の視覚化において不可欠な機能であ る。プログラム図式は、その視認性の良さからソフトウ ェア設計や開発において利用されている。 図1 Hichart
こ れ ま で に 、 Hichart (Hierarchical flowchart language), PAD (Problem Analysis Diagram), HCP (Hierarchical and Compact Description Chart) そし て SPD (Structured Programming Diagram)等、様々
なプログラム図の記述言語が報告されている。図 1 は Hichart の例である。Hichart は木構造図型のフローチ ャートであり、1 つの図形(セルと呼ぶ)には様々な種 類があり、様々な機能を表すことが可能である [1]。 Hichart ではアルゴリズムの流れ、データの流れ等を同 時に表示することができ、プログラムを直感的に把握・ 理解することが可能である。Hichart は様々なプログラ ム言語に対応しており、C 言語対応 Hichart [2]や
Pascal 言語対応 Hichart [3]、DXL 対応 Hichart [1]が 提案されている。 2.2 グラフ文法を用いたプログラム図式の形 式化 プログラム図式の構成要素であるセルは、エッジと呼 ばれる線で結ばれており、さらに、セルの接続の組み合 わせには規則が存在する。Hichart 図は左上を座標の原 点として、右下方向にセルを接続することを繰り返して 得られる。グラフ文法は2 次元のグラフィカルなオブ ジェクトを生成する規則を定義したものであり、グラフ 文法の枠組みをHichart に適用することにより、 Hichart 図の生成を規則的に扱うことができる。 図2 if then ステートメントの生成規則 図2 は、if 文の Hichart 図を生成するための生成規則 である。図中の 1 番の番号がつけられているセルが if を表す図形である。図中の 2 番のセルの部分は生成規
プログラム置式を扇いたソフトウェア開覺支橿
〗。はじめに 2. プログラム園式を恩いた襲曼宣橿環壊 2. 1 プログラム図式 2. 2 グラフ文麟を恩いたプログラム置式の形 式化 [Title:Word countprogram; Module: int word_count(char *); Input: File name; Output: Number of word;Function: Count the number of word intheinput file;
Constraints: Only English words can be counted;
Revision: 06/05/95 H.T.
Design: 05/30/95 H.N.;]
口〗
プログラム図式を用いたソフトウェア開発支援
Software Development Support using Program Diagrams
後藤 隆彰* 1.はじめに 近年、ソフトウェア開発は開発規模や開発期間が増大 し、開発者への負担が大きくなっている。開発対象によ り規模は様々であるが、例えば、DVD レコーダーや自 動車組み込みソフトウェアでは開発行数が数百万行に ものぼるケースもある。高品質なソフトウェアを開発す るためにソフトウェア開発者を支援することは特に重 要である。本稿ではプログラム図式を用いた開発支援に 関する方法と現状について述べる。 2.プログラム図式を用いた開発支援環境 2.1 プログラム図式 プログラムの図表示は、視覚的プログラミングツール やプログラム情報の視覚化において不可欠な機能であ る。プログラム図式は、その視認性の良さからソフトウ ェア設計や開発において利用されている。 図1 Hichart
こ れ ま で に 、 Hichart (Hierarchical flowchart language), PAD (Problem Analysis Diagram), HCP (Hierarchical and Compact Description Chart) そし て SPD (Structured Programming Diagram)等、様々
なプログラム図の記述言語が報告されている。図 1 は Hichart の例である。Hichart は木構造図型のフローチ ャートであり、1 つの図形(セルと呼ぶ)には様々な種 類があり、様々な機能を表すことが可能である [1]。 Hichart ではアルゴリズムの流れ、データの流れ等を同 時に表示することができ、プログラムを直感的に把握・ 理解することが可能である。Hichart は様々なプログラ ム言語に対応しており、C 言語対応 Hichart [2]や
Pascal 言語対応 Hichart [3]、DXL 対応 Hichart [1]が 提案されている。 2.2 グラフ文法を用いたプログラム図式の形 式化 プログラム図式の構成要素であるセルは、エッジと呼 ばれる線で結ばれており、さらに、セルの接続の組み合 わせには規則が存在する。Hichart 図は左上を座標の原 点として、右下方向にセルを接続することを繰り返して 得られる。グラフ文法は2 次元のグラフィカルなオブ ジェクトを生成する規則を定義したものであり、グラフ 文法の枠組みをHichart に適用することにより、 Hichart 図の生成を規則的に扱うことができる。 図2 if then ステートメントの生成規則 図2 は、if 文の Hichart 図を生成するための生成規則 である。図中の 1 番の番号がつけられているセルが if を表す図形である。図中の 2 番のセルの部分は生成規 則をさらに適用することにより、if 文の条件が成り立つ 場合に行われる処理の内容が記述される。 図3 図 2 の生成規則に対する意味規則 Hichart グラフ文法では、各セルは座標などの属性を持 っている。属性は生成規則に付随する意味規則を使用し て値が計算される。例えば、if 文が成り立つ場合の処理 の内容を記載するセルのx 座標は、図 3 のように、意 味規則が x(2) = x(1) + w(1) + GapX となっており、if を表す図 2 中の 1 番のセルの x 座標 の値に 1 番のセルの横幅とギャップサイズを足し合わ せた値となる。 グラフ文法を用いることにより、プログラム図式の Hichart 図を生成規則の適用を繰り返して生成するこ とができ、また、属性を用いてレイアウトの計算を自動 算出することができる。また、構文解析系の枠組みも提 案してあり、与えた Hichart 図が決められている規則 に沿った図かどうかを判定することも可能である。 2.3 図式プログラム開発環境 定義したグラフ文法は視覚的なプログラム開発環境 として実現することが可能である。図4 は DXL 対応 Hichart を Java 言語を用いて実装した図式プログラム 開発環境のスクリーンショットである。この開発環境で は、配置したいセルの種類を画面上部の一覧から選択し、 画面中央部の図病がエリアでダブルクリックすること でセルの配置が行える。また、配置したセル間を結ぶエ ッジを指定できる。 図4 図式プログラム開発環境 図を作成した時点では、作成した図が正しい図かどうか が保証されていない状態であり、「Command」メニュ ーから「Parse」を選択することで、与えられた図の構 文解析が実行できる。構文解析を実行した結果、定義さ れた規則に適合することが確認された後、属性評価が行 われ、図のレイアウトが自動計算され再描画される。図 5 に構文解析を実行した後の状態のスクリーンショッ トを示す。 図5 構文解析実行後 3.UML を対象とした開発支援 3.1 UML
UML (Unified Modeling Language) は、オブジェク ト指向開発で用いられる図式表現であり、ソフトウェア の設計や仕様を図を用いて表記するものである [4]。 UML は現在のソフトウェア開発で頻繁に用いられて おり、広く普及している。UML 用いられる図は、静的 構造を表すための「構造図」と振る舞いを表記するため の「振る舞い図」の2 種類に分類することができる。 プログラム図式を用いたソフトウェア開発支援 Software Development Support using Program Diagrams
後藤 隆彰 emantic Rules x(I) = x(0), x(2) = x(I) + w(I) + GapX top(I) = top(0), top(2) = top(0) y(0) = y(I), y(I) = y(2) bottom(0) = max(bottom(I), bottom(2)) bottom(I) = y(I) + h(I), cy(0) = cy(2) + I id(I) = id(0), id(2) = id(I) + I nc(O)=nc(2)+ I, ~- 3 閻式プログラム開勢濡壊
.
.
Hlcha,tEdlto,/Use 心~g/Oesktop/HlchartED//19_1oopdat File View Com mand HelpII
~
可薔r•--;;
べI
I
D
I
〈〉にコI
O
I
D
I
D
>
I
□
I
□
I
□
I
・
"
・
I
-
:
-
:
ビ
品
,
"
≪
● ● Hlcha,tEdlto, m s凩匹esktop/Hlcha,tED/./19Jocp.dat file View Com mand HelpII
~ 丁
園!•~!"lIDf<>
[
o
f
o
]
D
l
D
>
l
□
T
口l
ロド干ご, 3 囀しを鴛象とした開曼支橿 3口 1 じ鼠構造図には、クラス図、パッケージ図、配置図等が含ま れる。一方で、振る舞い図にはユースケース図、アクテ ィビティ図等が含まれる。 構造図の一つであるパッケージ図は、クラスやパッケ ージの包含関係や依存関係を表示するための図表現で ある。図6 はパッケージの包含関係を表したパッケー ジ図である。この図ではパッケージ3 はクラス 2、3 を 含んでおり、パッケージ1 はパッケージ 2 と 3 を含ん でいることを示している。 図6 パッケージ図の例 3.2 UML を対象としたグラフ文法 UML のパッケージ図を対象としたグラフ文法とし て、GGPD (Graph Grammar for uml Package Diagram)が提案されている [5]。GGPD は 17 個の生成 規則から成り立っている。図7 は GGPD の生成規則の 例である。この生成規則では、子を持つパッケージを生 成するための規則である。GGPD も Hichart グラフ文 法と同様に、レイアウト等の情報を保持する属性が定義 されており、レイアウトの値を計算するための意味規則 も定義されている。 GGPD の生成規則を適用した結果得られるパッケー ジ図の例を図8 に示す。 図7 GGPD の生成規則の例 図8 GGPD で生成されたパッケージ図 3.3 UML 向け開発支援機能
GGPD をシステム化した Package Diagram Editor は構文指向型のエディタであり、領域に描画されている セルをクリックすると、適用可能な生成規則が表示され る。
図 9 Package Diagram Editor における生成規則 適用可能な生成規則がプルダウンメニューに表示さ
゜
lep 3. 3 直l阿け開曼支橿讚隧 3, 2 直しを駕蒙としたグラフ文論 OK Cancel し 』 し 』構造図には、クラス図、パッケージ図、配置図等が含ま れる。一方で、振る舞い図にはユースケース図、アクテ ィビティ図等が含まれる。 構造図の一つであるパッケージ図は、クラスやパッケ ージの包含関係や依存関係を表示するための図表現で ある。図6 はパッケージの包含関係を表したパッケー ジ図である。この図ではパッケージ3 はクラス 2、3 を 含んでおり、パッケージ1 はパッケージ 2 と 3 を含ん でいることを示している。 図6 パッケージ図の例 3.2 UML を対象としたグラフ文法 UML のパッケージ図を対象としたグラフ文法とし て、GGPD (Graph Grammar for uml Package Diagram)が提案されている [5]。GGPD は 17 個の生成 規則から成り立っている。図7 は GGPD の生成規則の 例である。この生成規則では、子を持つパッケージを生 成するための規則である。GGPD も Hichart グラフ文 法と同様に、レイアウト等の情報を保持する属性が定義 されており、レイアウトの値を計算するための意味規則 も定義されている。 GGPD の生成規則を適用した結果得られるパッケー ジ図の例を図8 に示す。 図7 GGPD の生成規則の例 図8 GGPD で生成されたパッケージ図 3.3 UML 向け開発支援機能
GGPD をシステム化した Package Diagram Editor は構文指向型のエディタであり、領域に描画されている セルをクリックすると、適用可能な生成規則が表示され る。
図 9 Package Diagram Editor における生成規則 適用可能な生成規則がプルダウンメニューに表示さ れるため、プルダウンメニューから選択して OK を押 すことで生成規則が適用でき、パッケージ図を生成 することができる。 図 10 生成規則適用後得られた図 4.ソフトウェアドキュメント 近年では、ソフトウェア開発においてオープンソ ースソフトウェア(以下、OSS と表記する)が用いられ る機会が増えている。OSS はプログラムのソースコー ドがライセンス条件に従って公開されており、公開 されているソースコードを各々の開発で利用するこ とが可能である。その際、既存のソースコードを理 解することが必要となる場合があるが、ソースコー ドを理解するための方法としては、OSS のソースコー ド中に含まれるコメントや README 等の説明を活用す ることなどが考えられる。これまでに提案してきたプ ログラム図式を用いたソフトウェアの可視化もソフト ウェア理解の支援の方法の一つとして活用することが できる。 ソフトウェアドキュメント中でプログラム図式を活 用できるケースとして、対象となるソフトウェアの全体 像を把握する場合、ソフトウェア中の特定の処理内容や 処理フローを把握する場合などが考えられる。いずれの 場合でも、プログラム図式の表示に併せて注釈を表示す ることや、プログラム図式を対話的に操作できる機能を 持たせることが重要と考えられる。 前述の UML パッケージ図に対しては、属性グラフ文法 の枠組みを用いて、注釈を扱うための属性を定義し、意 味規則を用いて注釈を自動生成する提案を行っている [6]。 図11 注釈用意味規則の例 6.まとめ 本稿では、プログラム図式を対象に、開発支援機能を グラフ文法の枠組みを用いて実現する方法について述 べた。近年、人工知能に注目が集まり、機械学習やディ ープラーニングに関する研究が盛んに行われている。ソ フトウェア開発支援の分野においても人工知能で用い られている技術を適用できる可能性があり、人工知能技 術の開発支援への適用などが今後の課題として挙げら れる。 参考文献
1) Takaaki GOTO, Kenji RUISE, Takeo YAKU and Kensei TSUCHIDA, "Visual Software Development Environment Based on Graph Grammars", IEICE TRANSACTIONS on Information and Systems, Vol.E92-D, No.3, pp.401-412, 2009. 2) 深瀬宰史, 田辺文雄, 山崎浩一, 夜久竹夫, 米田信夫, 図形 型プログラム言語のグラフ文法による定義, 第 47 回情報処 理学会全国大会公園論文集, pp.115-116, 1993. 3) 久保知之, 安達由洋, 安斉公士, 土田賢省, 夜久竹夫, 属性 グラフ文法に基づいたHichart エディタ, 第 51 回情報処理 学会全国大会講演論文集, pp.3-4, 1995.
4) OBJECCT MANAGEMENT GROUP, OMG Unified Mo deling Language(OMG UML), Infrastructure, https://w
プログラム図式を用いたソフトウェア開発支援 Software Development Support using Program Diagrams
後藤 隆彰 ー PackageDiagraml File Display Execution lep
こ二—
2゜
nodeName(l)•<pac 匹ename>
contents(0)一ヤack雫 "+nodeName
(I)+ "contains"+ con1en1S(2)
4 ソフトウェア ドキュメント
且 まとめ
ww.omg.org/spec/UML/2.4.1/Infrastructure/PDF
5) Takaaki Goto, Tadaaki Kirishima, Tetsuro Nishino, Takeo Yaku, Kensei Tsuchida, "Generation of UML Package Diagrams Based on an Attribute Graph Grammar", Journal of Computational Science, Vol. 5, Issue 4, pp.606-615, ISSN 1877-7503, ELSEVIER, 2014.
6) Takaaki Goto, Takeo Yaku, Kensei Tsuchida, "Generation of Annotation for Diagrams Based on Attribute
Evaluation", Proceedings of the 32th International Conference on Computers and Their Applications (CATA 2017), pp.265-271, 2017.