プログラム書き換えのための 「プログラム修正パターン」

プログラム書き換えのための
「プログラム修正パターン」記述
松下誠
大阪大学大学院情報科学研究科
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
動機付け
プログラミング言語でプログラムは書けるのに,プログラミ
ングする行為自体はどうして書けないのか?
ソフトウェアプロセスにおけるプロセス記述
• 確かにプロセス(作業)は書けたが,それしか書けない
• 人間の作業はたいていblackbox
• 工程管理にはなっても,プログラミングを書いたことにならない
画像処理・画像加工ツール
• 画像に対する特殊な効果はその手順が「書けて」いる
• 適当なUIを用意することにより,作業者が行った行為を論理的
に表現,記述,利用するものも
ウィンターワークショップ・イン・鴨川
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
プログラミング行為を記述するために
何が書ければ良いのか
第一義的には「やったこと」
この部分を・こういうつもりで・こうやって
編集対象と編集行為の組,(可能なら)その意図
どう書ければ良いのか
極論すれば「書かなくて良いならどうなっていてもよい」
現実的には何らかのテキスト表現
人が直接記述するのは現実的ではない
• また新しい記述言語を覚える手間の発生
• 人間の作業自身から機械的に生成可能
ウィンターワークショップ・イン・鴨川
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
可能性を探るためにできること
いきなりプログラミング行為を記述する環境を構築し
ても,うまくいかないかもしれない
少なくとも必要なのは記述のための体系,であればそ
れを決めるのに必要なことを考えればよい
記述言語自体は必要なものを適当に決めればよいが,
最低限何が必要なのか
プログラミングする中身,をどう書くのか(手続きなのか,推
論記述なのか,それ以外なのか)
ウィンターワークショップ・イン・鴨川
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
開発時に蓄積された差分情報を用いた
プログラム修正パターン
版管理システムには,過去に行われた開発作業の記録が
差分として記録されている
単純な old/new 両方の差分から情報を取り出せないか
• (プログラミング言語で書かれていることを前提に)構文情報
• 単純な字面に依存しない書き換え内容
• 変更内容の持つ意図
たくさんの情報から特徴的なパターンを発見
• データマイニング?
• 「良くある」修正はおそらく意味がある(と思いたい)
プログラム修正内容を表現するパターン
ソフトウェアパターン,なんて使えない
いまやってる開発作業にすぐ使えるパターンを
ウィンターワークショップ・イン・鴨川
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5