netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-04-20 ▲
_ [論文] アスペクトの処理をベースコードと一緒に読むエディタの提案 ▲
やはり時間は経過したけれど,SPLAT 2006 の論文からいくつか面白かったものを整理.
Michael Desmond, Margaret-Anne Storey, Chris Exton: Fluid Source Code Views for Just In-Time Comprehension. Proceedings of SPLAT 2006.
あるソースコードを読んでいるとき,そこから呼び出しているメソッドの中身や,実行されるアドバイスの中身が気になることがあるので,最近の開発環境で使える「メソッドの折りたたみによる非表示化」の逆で,メソッドの中身やアドバイスの中身をその場(メソッドならその呼び出し文の直後とか,アドバイスが動く場所)に展開してソースをまとめて読めるようにしよう,というもの.多態性については,複数の候補のどれを見たいか選んだりする.
複数のエディタ,あるいは1ファイル内の複数の場所をあちこち移動しているうちに本筋の処理を見失ってしまうことがあるので,その手間を省こう,というのがコンセプトのようで,アイディアとしては面白い.
この手法の弱点(かもしれないもの)として指摘されていたのは,「あまり調子に乗ってコードを展開しすぎたり,展開先のコードが100行以上あったりしたら,本来の処理が何だったか分からなくなりそう」というもの.展開した状態を保存・再現したり,エイリアス解析を使って多態性の解決を自動化したりとか,実装上はかなり工夫の余地がありそう.発表してた人とも少し話してみたら,いくらかアイディアは持ってるみたい.個人的には,プログラムスライシングとかの適用結果の出力方法として使えそうなので,有望そうな情報表示方法の1つとして参考文献入りにしておく.
それから,別の人が「アスペクトはコードの挿入ではないので,そういう表示方法だと,誤解を招くことがあるのではないか」といった指摘をしていた.分かるような分からないような.
_ [論文] 小さな単位でポイントカットを定義したほうが再利用性がよくなる(かもしれない) ▲
Bert Lagaisse, Wouter Joosen: Decomposition into Elementary Pointcuts: A Design Principle for Improved Aspect Reusability. Proceedings of SPLAT 2006.
アスペクト内でポイントカットをいくつも定義するとき,AかつB,A’かつB,A”かつB,といったようによく似たポイントカットがたくさん登場するので,アスペクトを継承して子アスペクトでポイントカットを使いまわすときにはAとBは個別に名前付きポイントカットとして定義しておいたほうが実は再利用しやすく便利になる,という話.
「1つのイベントに1つの名前」というのは,「1つのメソッドは1つの仕事」という概念に近いのではないか,というような賛同意見が出ていた.個人的にも,構文ベースで選択されるジョインポイントに,早めに名前をつけて意味を与えたほうが変更の波及を防げる気がするし, 分割するよりは統合するほうが簡単なので(AかつBというポイントカットに新しく名前をつければ良い),もしかしたら将来的には当たり前のデザインになっているかもしれない,と思ったりする.
2008-04-20 ▲
_ [読書] 計算モデルの本 ▲
コンピュータプログラミングの概念・技法・モデルの日本語版(wikipediaのページ)のうち興味があったところだけ拾い読みしてみました.
計算モデル,言語の意味(操作的意味とか)について,関数型,OOP,論理型,制約プログラミング,並列計算など幅広く日本語で解説が読めます.私の場合は,意味論まわりの知識が不足気味だった(関連書籍も持っていなかった)ので,ちょうど役立ちそうな本を手に入れたという印象です.
章構成はプログラミング言語の概念にしたがっているので,「大規模プログラムの設計」みたいなソフトウェア工学のトピックは6.7節とか,7章の一部にこっそり埋まっています.リファクタリングやデザインパターン,契約による設計などについても,そのあたりで言及があります(別にすごいことが書いてあるわけではありませんが).
事前知識としていくらかの概念を知っているとき,たとえば抽象データ型,コンポーネントベースプログラミング,オブジェクトについて,違いは何だろうか,みたいなことを調べたいときには良さげな本だと思います.