netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-03-01 古い日記からの変換データ [長年日記] ▲
2004-03-04 古い日記からの変換データ [長年日記] ▲
2004-03-05 古い日記からの変換データ [長年日記] ▲
_ Word ▲
Word ドキュメントを PDF に変換することを頼まれたので変換する.
Word ドキュメントがワードパッドで開けることをすっかり忘れていたけど.Windows 以外の人には PDF のほうがいいんだろうけれど,人口比率は不明.
_ 論文 ▲
Barbara Liskov:Data Abstraction and Hierarchy.ACM SIGPLAN Notices, 23(5), (1988), pp.17-34.OOPSLA '87 のキーノート.やっぱり前に読んだ論文のほうがLiskov Substitution Principles の数学的定義らしい.こちらでは,実装継承と,型の継承を区別していて,継承と Subtyping によってインクリメンタルな設計,関連した型の階層化といった今のオブジェクト指向では基本的な概念を説明している.Liskov Substitution Principles の持っている利便性について話すコンテキストではこちらを引用したほうがいいのかも.
_ 論文 ▲
とりあえず古典をおさえるべく,Liskovの置換原則(Liskov Substitution Principle)の原点とされる論文の一つ.(もう1つは OOPSLA'87 の keynote なので, こっちは違うかも)
Barbara H. Liskov and Jeannette M. Wing:A Behavioral Notion of Subtyping. ACM Transactions on Programming Languages and Systems,Vol.16, No.6, November 1994, pp.1811-1841.
Subtype Requirement: 型Tのオブジェクト x で特性 φ(x) が成り立つとき,SがTのsubtypeであるためにはどんなSのオブジェクト y もφ(y)を満たさなければならない.
ということを説明した論文.int32, int16 は相互に兄弟ではあるけれど親子ではない,といったように具体的な階層構造があってわかりやすい.
_ 論文 ▲
久々に時間ができた感があるので,ちょっとだけ論文読み.
David S. Rosenblum:A Practical Approach to Programming With Assertions.IEEE Transactions on Software Engineering, Vol.21, No.1,pp.19-31, January 1995.
表明を実際に開発者が使うような道具とするにはどうしたらよいか,という論文.C 言語に対して /*@ @*/ コメントを追加してプリプロセッサで表明検査をするというアプローチで実装.
表明は,次のように使われる.
手続きのヘッダにおいて:
I1)複数の引数の間での一貫性の記述
I2)戻り値が引数に対してどのように依存しているかの記述
I3)グローバルな状態の変更(副作用)の記述
I4)特定のデータを破壊しないことの記述
I5)実行されるコンテキスト(グローバル変数の状態)の記述
I6)データの範囲の指定
I7)データの範囲の列挙
I8)null ポインタを防ぐ
手続きの本体において:
B1)複雑な条件の if 文において,else 節の条件確認
B2)switch 文における default 節の条件確認
B3)関連しあったデータの一貫性確認
B4)一定地点での状態の確認
欠陥に対する有効な表明の対応実験を行っている.その結果,主には次のような感じで特徴が出てきた.
F1: インタフェースと実装の不一致: I1, I2
F3: 機能の不一致: I2, I3, I4, I5
F6: インタフェースの使用の誤り: I
F7: データ構造の変更: I1, I5, I6, I7, I8, B3
F10: リソース解放などの後始末忘れ: I3
F12: 初期化忘れ: I1, I3, I6, I7, I8, B3
F13: データ制約違反: I2, I3, I5, I6, I7, B3
その他のエラーに対しては,だいたいどの表明も有効.逆に,表明が効かないものとしては
・パフォーマンスの問題
・要求の変化による機能不足
といったものがある.
2004-03-09 古い日記からの変換データ [長年日記] ▲
2004-03-10 古い日記からの変換データ [長年日記] ▲
2004-03-16 古い日記からの変換データ [長年日記] ▲
2004-03-17 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
SPLAT2004 残り2本.
Istvan Nagy, Lodewijk Bergmans, Mehmet Aksit:Declarative Aspect Composition.特定の join point に複数のアスペクトがくっつくとき,往々にして「アスペクトAの後に,アスペクトBは動く」とか「アスペクトAが動かないときだけアスペクトBが動く」といった関係が生じることがある.このような関係を,宣言的に記述することであとは言語処理系が勝手に処理しようというもの.Aが動く,動かないというのを boolean メソッドで判定するあたりいい加減なようで,わりと実用的かも.
_ 論文 ▲
Thomas Cottenier, TzillaLinguistic provisions for Aspect/Core semantic interactions.
Aspect と Core(ベースモジュール)の間を橋渡しするような何か(invariants とか)がないと,現在のような Syntax-based で記述する joinpoints になってしまって,Syntax-based ではクラスの改変にあわせて join points も変わってしまうのでうれしくない.
"Semantic" な記述ができるとうれしい,といいたいのだろうが,何をもって semantic と言っているのか分からないので,現状ではなんともいえない.
_ 論文 ▲
splat2004 つづき.
Bert Lagaisse, Wouter Joosen, Bart De Win:Managing semantic interference with aspect integration contracts.
アスペクトはコンポーネントに対して何を要求するか,コンポーネントはアスペクトに対して何を許すか,を記述することでアスペクトが不用意にコンポーネントの状態を破壊したりしないようにするという話.
Kasper B. Graversen:Role collaborations.
コラボレーションごとに,役割(Role)が用意されていて,コラボレーションのインスタンスごとに,その役割にオブジェクトを関連付けることでインタラクションをしようというもの.なんか昔考えた(けれど効果が疑わしいので捨てた)アイディアに近い.
Pengcheng Wu and Mitchell Wand:An Empirical Study of the Demeter System.
いわゆる Adaptive Programming を実際に使って,オブジェクトの Traverse 関連のコードがどれだけ減ったか,という論文.実際に Traverse 処理というのはプログラム中にけっこうあるらしく,結果としては,かなり効果があった,らしい.
Tom Tourwe and Andy Kellens:Inductively Generated Pointcuts to Support Refactoring to Aspects.
プログラム構造が改変されたら pointcut 定義も変更しなければならないので,アスペクトと Refactoring との相性の悪さが問題となっている.プログラムの情報を使って帰納的に pointcut を簡潔な形式に変換してやろう,というもの.ただ,自動生成が本当に正しいかどうか,とかを調べるのが難しいので,必ずしもうまくいっているわけではないよう.
_ 論文 ▲
SPLAT2004 ワークショップ参加前準備として論文読み.
Erik Ernst:Simple, eh?言語の単純さというのはどういう意味があるのか,というワークショップのテーマ的な論文.言語のコンセプト・文法の単純さがcomprehensibilityには重要.また,predictabilityは,「何が起きるか」という意味では言語がハードウェアに近いほど簡単となるが,それは情報隠蔽の性質でもある."semantic interactions"は,変数への代入文がその後のプログラム実行に影響を与えるような状態(依存関係の影響)をあらわしている言葉のつもりだったらしい.
_ 論文 ▲
Jonathan Aldrich:Open Modules: Reconciling Extensibility and Information Hiding.Proceedings of SPLAT 2004 in conjunction with AOSD 2004, March (2004).
アスペクトが追加できる範囲を・モジュールインタフェースとして宣言されたメソッドへの外部からの呼び出し・モジュールインタフェースとして宣言された pointcutに抑えることで,カプセル化を守ろうという提案.
_ 論文 ▲
Gustav Bostrom:A case study on estimating the software engineering properties of implementing Database Encryption as an aspect.
データの暗号化をアスペクトを使ってやってみた,という話.ところが,SQL の LIKE 文による部分文字列のマッチが,暗号化に対応できなくて困ったらしい.Comprehensibility と Evolvability は下がったが,ツールサポートが大きく影響を与えたらしい.また,Evolvability については,インタフェースが安定している(pointcut 定義が変わらない)ことが強く影響するみたい.
2004-03-19 古い日記からの変換データ [長年日記] ▲
_ ミーティング ▲
企業の人とミーティング.上流工程の人々なので,着眼点が面白い.
UML などの図とソースとの対応とか,工数見積もりとか,色々考えることは多いらしい.
将来的に,食べていくなら上流工程……のはずなので#研究職だったら別だけどこのあたり,色々学んでおきたい.
_ SIGSE ▲
IPSJ-SIGSE-144 の学生研究賞は松川文一ほか: ユースケースポイント計測支援ツールの実装とその適用.となった.
研究賞になりそうな「このあたりいいかな?」と思ったいくつかチェックを付けてた他の論文と見比べると,仕様書に自然言語処理を適用しているあたりの実現上の工夫と実際の結果が伴っているあたり,面白みがあって妥当という気がする.
#受賞した当の本人は,私が取るかも,と思っていたようだけど#私のは,どちらかというと Position Paper で,#いくら面白くても,"研究賞" というには#まだ研究途中という気がしてたので,一安心(?)
_ SIGSE ▲
一通り学生セッション終了.聞いた限りで面白いかな?と思ったのは:
木梨 充高ほか(茨城大),デザインパターン利用促進のためのモデリング支援開発ツール.
自然言語の仕様書からデザインパターンの手がかりになるような語を探して見せる,というもの.
全文検索と組み合わせるのとはどう違うか,というのもあるけれど,いわゆるドメインの言葉と,デザインパターン上の言葉の対応(ディレクトリ==階層構造のオブジェクトといったような)などはドメイン知識がないといけないので全文検索では無理なところがある,ということになるらしい.今後の展開が楽しみ.
もう1つは,新原敦介ほか(東工大),ゴール指向要求分析を用いたステークホルダの対立の検出.
各人の満足度を数値化して,行列として並べたときに同じ列上に+値と?値(満足と不満)があったら対立,とかいう形で対立を検出しようというもの.実験結果を聞いた限りでは,ゴールの誤解や思い込みなどが要求分析に影響を与える様子が分かって面白かった.