拡張可能な診断項目記述を用いた多視点からのプログラ

拡張可能な診断項目記述を用いた多視点
からのプログラム診断に関する研究
2007/02/10
修論公聴会
海尻・海谷研究室
高野佑一
背景
 ソフトウェア工学の学習の一環として、プログラミ
ング演習が教育現場で頻繁に実施されている
 学生の作成したプログラムは、すべて教師によっ
て診断・評価が行われる
2
背景
 プログラムの適切な評価のためには、複数の切り
口からの診断が必要である





実行テスト
課題で指定された条件の達成度
処理の理解しやすさ
コーディングスタイルのチェック
適切なコメントの有無
など・・・・
3
背景
 手動で行われる診断には問題点が存在する
問題点
 学生数の増加に比例して、診断に要する教師の
労力・消費時間が増加してしまう
4
目的
 手動で行われてきた診断作業を自動化するシス
テムを構築する


教師の負担軽減
学生の学習効率UP
 複数視点からの診断を行うことで、プログラムに
対するより適切な評価を実現する
5
目的
 プログラムの要件は課題ごとに異なる

診断項目の選択、追加、カスタマイズといった機能が必要
 上記の機能を簡単に実行できる仕組みを実現す
る
6
システムの概要
 システムの適用対象


プログラミング初級学習コース
言語はJava
7
システムの概要
診断システム
オーサリング
ツール
提出
プログラム
評価
XMLデータ
(診断結果)
診断用データの
作成・登録
XMLデータ
(診断用)
プログラム診断
ツール
8
診断の種類
 動的解析診断

プログラムの入出力に基づく実行テスト
 静的解析診断


課題条件チェック
コーディングスタイルチェック
9
動的解析診断
 実行テスト


CUIベースのプログラムを対象とする
正答プログラムと診断対象プログラムに同じテストデータを与えて、
その出力結果同士を比較し評価を行う
 テストデータ


プログラムに与える標準入力などを指定する
データの作成はオーサリングツールで行う
10
動的解析診断
 比較方法の選択・追加方式


出力結果の比較方法を、課題に応じて変更できる
新規追加の場合、比較用のメソッドを実装・登録する
 比較方法の一例


完全文字列比較
スペース・改行などを無視した比較
11
静的解析診断
 課題条件チェック


教育目的の演習では、プログラム内部で満たすべき条件(課題条
件)が指定されている場合が多い
このような課題におけるプログラム評価に課題条件のチェックは必
要不可欠
 課題条件の一例



Shopクラスを作成する
Shopクラスを継承してBookStoreクラスを作成する
Shopクラスにメソッド public boolean sell(int number) を実装する
12
静的解析診断
 コーディングスタイルチェック


コーディング規約に違反していないかを確認
初期段階からコーディングスタイルを意識することは重要
13
静的解析診断
 XQueryとは


XMLデータから特定の要素を照会する言語
任意のデータを比較的容易な記述で抽出可能
for $B in //book
where $B/@price < 2000
return
<result>{$B/title}</result>
値段が2000円未満の本の
タイトル一覧を出力するXQuery
<books>
<book price=“2,280”>
<title>XML解説書</title>
<author>中山</author>
</book>
<book price=“1,980”>
<title>Java入門</title>
<author>柴田</author>
</book>
<books>
<result>
<title>Java入門</title>
</result>
出力結果
XMLデータ
14
静的解析診断
 実現方法



テキスト形式であるプログラムをJavaMLを用いてXML形式に変換
診断項目に対応したXQueryを作成
XQueryを実行し、目的の要素の有無を調査
 XQueryの作成



オーサリングツールで作成・編集
課題条件チェック ⇒ 課題毎に用意
コーディングスタイルチェック ⇒ 一度だけ用意
15
静的解析診断
 XQueryの記述能力


XQueryはXMLデータの中から特定のパターンを抽出する
診断項目によってはXQueryだけでは表現できないものがある
 プログラミングによる診断



XQueryで記述不可能な場合に使用
診断項目に対応するメソッドを実装・登録
Reflection APIによる動的メソッド呼出し
16
オーサリングツール
 診断に必要となるデータの作成・編集を行う

GUIベース
 対象データ


テストデータ(動的解析診断)
XQuery(静的解析診断)
17
オーサリングツール
実行テスト用データの作成画面
18
オーサリングツール
課題条件チェック用データ(XQuery)の作成画面
19
まとめ
 診断項目の選択・追加をXQueryの選択・追加で
実現しているので、システム本体を変更することな
く、課題ごとに異なる要件に対応できる
 複数の視点からの診断を組み合わせることで、質
の高い自動評価を実現した
20
まとめ
 診断に必要なデータを作成すれば、残りの工程は
すべて自動で行われるため、診断作業における教
師の負担を大きく軽減できる
21
今後の展望
 システムのWebベース化


システムと学生の間のUIが未実装
学生がWebブラウザ等を用いてプログラムの提出・評価結果の閲
覧ができるようにする必要がある
 オーサリングツールの実装の完成
22