netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
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
その他のエラーに対しては,だいたいどの表明も有効.逆に,表明が効かないものとしては
・パフォーマンスの問題
・要求の変化による機能不足
といったものがある.
2006-03-05 ▲
_ [hyCalendar][お知らせ] hyCalendar 1.3.4 リリース ▲
ドキュメントの更新も無事終わったので,公開しました.ダウンロードはこちらから.
また何かご意見/ご要望ありましたら,tdiaryのツッコミないし掲示板にて,コメントをお願いいたします.
_ [VolumeDeskbar] Bluetooth ヘッドセットと「既定のデバイス」の変化 ▲
Skypeとか使うために Plantronics M3000 + Planex BT-01UDE を買ってインストールしてみた.音声出力先を Bluetooth デバイスに指定しないと内蔵スピーカから音が出てしまうので,切り替えはどうするのだろうと思っていたら,接続が確立されると同時に「Bluetooth Wave」というデバイスが出現し,「既定のデバイス」をそれに切り替えるという仕組みが付いていた.
ところが,VolumeDeskbar 側は,この突然のデバイス出現と切り替えに追随できないので,これらの Bluetooth デバイスに対する音量はうまく動作しない.
定期的にポーリングして変更を検知するのも効率が悪いということであちこち調べてみて,オーディオの「既定のデバイス」は,レジストリのHKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper
という場所に書き込まれていることがようやく判明.
ということは,レジストリ変更を通知するRegNotifyChangeKeyValue あたりを使えば,ちゃんと変更に追随できるようになるかも.