netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-02-05 古い日記からの変換データ ▲
_ MD ▲
ポータブルMDが謎のエラーを出すようになってしまった.故障のようだが,保証書その他の周辺品をどこへやったか思い出せない.
とりあえず,当座は PDA + マイクロハードディスクでしのぐことにする.
2004-02-05 古い日記からの変換データ ▲
_ 実験 ▲
Java プログラムを書く実験1日目.小さいプログラムを2本さくっと書いてしまった.人に監視されてる環境下でプログラムを書くので,妙に緊張する.難易度自体は簡単だが,コンポーネントの使い方を間違えたりすると少し恥ずかしい.
2005-02-05 古い日記からの変換データ ▲
_ コンテキスト制約記述言語CCL ▲
Context-Based Constraint Language,というのがあるらしいというので調べてみた.
あるコンポーネントにコンテキスト値を付加して,そのコンポーネントが働いているときに属しているコンテキストをリストアップしておく.そして,「コンテキスト 'Controller' のときは 'Personal Data = Yes' の属性を持ったオブジェクトに アクセスしては駄目です」といったように制約を記述する.
使い方としては,設計時に UML などに付加しておいてあとでコードに落とす制約言語なので,OCL と似ている.
単なる表明だけでなくて ENCRYPTED WHEN CALLING とかいった呼び出しまわりの属性付加もあるので,主には CORBA やら EJB なんかでの使用になるみたい.
単に表明を記述する言語としてみると,AspectJ・JBoss AOP などでアトリビュートを付加してdeclare error や実行時のエラーチェックを付加する実装方法とうまく対応しそうな印象がある.
SPLAT2004に出したアサーションをアスペクトで書くと,という話とも絡むけれど,CCLでいうコンテキストはかなり大域的な情報で,「利用コンポーネントに応じて違う表明を書く」というのはコンポーネントとその利用者の間だけのローカルな情報なのかなと思ったりする.技術的には極端な差はないように見えるけれど.
_ [論文]ソフトウェア内部のパターン認識 ▲
Martin Pinzger and Harald Gall:Pattern-Supported Architecture Recovery.Technical Report, TUV-1841-2002-16, Technical University of Vienna.
ソフトウェア・アーキテクチャをソースやドキュメントから復元するために,どんな設計上の決定がシステム内に含まれているかを認識しましょう,という話みたい.
ただ,やってることはちょっと賢い(複数行に渡った情報が扱える)grep のように見えなくもない.マッチした結果を「パターンインスタンス」と呼んで,それらの関係図を出力しましょう,といった感じに見える.
_ [論文]データ項目の自動対応付け ▲
Sebastian Bossung, Hermann Stoeckle, John Grundy, Robert Amor, John Hosking:Automated Data Mapping Specification via Schema Heuristics and User Interaction.Proceedings of ASE 2004, pp.208-217.
XMLスキーマがたくさんあって,データを相互変換したいが,毎回手動で変換ルールを作るのは大変だから,XMLスキーマが2個与えられたとき,なるべく自動でデータのマッピングを生成しましょう,という論文.スキーマだけでなく,インスタンス文書のほうも(もしあれば)入力として受け付けるようにしているみたい.
スキーマ間のデータ項目のマッチが基本になるが,マッチの実装方式としては,色々なヒューリスティックを実装したエージェントを環境に放り込む,という形にしている.
使うヒューリスティックとしては
・項目の名前が同一である
・一方の項目の名前が,他方の項目名の部分列になっている
・文字列同士の Levenshtein 距離(一方を他方に変換する操作列の長さ)が小さい
・要素型が等しい
・要素のセット(あるタグの配下全員)で型が等しい
・一方が他方の略称アルファベット列になっている
・インスタンス文書の,要素の値が同じ…など.
ツールをプロトタイプを作ってみたら,スキーマがそれなりに似ていると事前に分かっているものでは,いい感じに使えた,らしい.
ただ,この時点では,データのマッピングは値のコピーにしか対応してないようなので,複数項目の集計とかに反応しようとすると大変そう.(変換を容易に記述できるスクリプトと組み合わせになる?)
あったら便利そう,という印象はあるけれど,こういう類のツールはどう評価するのがいいのか分からない(せいぜい「正しい対応付け」に対する正解率?)という微妙なところ.どのヒューリスティックがよく効くのかは見てみたい気もするが.
_ [論文]デバッグ操作のプログラム化 ▲
Guillaume Marceau, Gregory H. Cooper, Shriram Krishnamurthi, Steven P. Reiss:A Dataflow Language for Scriptable Debugging.Proceedings of ASE 2004, pp.218-227.
デバッグ用の操作をプログラム(スクリプト)から扱えるようにした,という話.デバッグ時に行う操作はわりと定型的だ,というのが前提.
Lispぽい文法の言語を作っていて,Trace命令で(AspectJの args や this などのように)プログラムの状態のいくつかを変数にバインドして,プログラム実行中に制約違反を起こしたらプログラムを止める,といったスクリプトを作っている.
東工大の千葉先生のところでやってたデバッガにAOPな機能を取り込んでみる,という話が近いのかも.
_ [論文]抽象プログラムによる制約違反の発見 ▲
Mana Taghdiri: Inferring Specifications to Detect Errors in Code.Proceedings of 19th International Conference on Automated Software Engineering (ASE'04), pp.144-153,Linz, Austria, September, 2004.
クラスの各メソッドから簡単な仕様を抽出し(たとえば戻り値が null でないとかフィールドが更新されるとか),プログラム中のメソッド呼び出しをその制約式で単純化し(a = list.contains(element) なら [a = "?"] のように)抽象化されたプログラムが制約を本当に満たすか検査する.満たさない場合,制約違反を起こすような抽象実行列を出力する.
あんまりよく分かっていないが,データ構造コンポーネントの一貫性検査などに使ったりするみたい.
_ [論文]ソフトウェア変更時の横断的関心事 ▲
Elisa L.A. Baniassad, Gail C. Murphy, Christa Schwanninger and Michael Kircher:Managing Crosscutting Concerns During Software Evolution Tasks:An Inquisitive Study.Proceedings of AOSD 2002.
ソフトウェアの変更時に,開発者がどう横断的関心事を意識して対処するかを調べようというケーススタディ.
開発者に後からインタビューしたところ,明示的にドキュメントやモジュールがないと,「何をしているのか」という理解が人によって変わってきて,また対処方法も3つくらいのパターンに分かれたらしい.
また,「このコードを変更するとどこに変更が及ぶのか?」というのが開発者の不安の種となっていることが確認されている.
開発者の作業の監視ではなく終わった後のインタビューなのと,参加者8人でタスクも小さいということからValidity として強いわけではないけれど.
2006-02-05 ▲
_ [VolumeDeskbar][お知らせ] 1.0.5 リリースしました. ▲
正式に 1.0.5 にしました.タスクバーから分離した状態でウィンドウが閉じられたときに異常終了する問題を修正しています.
また,制御対象のデバイスが選べるようになりました.普通は単一デバイス環境なので影響はありませんが,USBスピーカなどを使っている方には意味があると思います.
ちなみに,現在の実装では,デバイスを名前で区別しているので,同名のオーディオデバイスが複数ある場合はうまく動きませんが,同じサウンドカードを2枚挿している人がそういるとも思えないので,そのままにしてあります.
_ [ツール] ポータブルハードディスク+Secure Lock Ware ▲
ポータブルハードディスク HD-PHGU2 の120GBモデルを購入したので,Secure Lock Wareと組み合わせて使うことにした.
Secure Lock Mobile というのがドライブと一緒に付いているのだが,こちらはファイルを個別に暗号化する必要があるらしく,1GBの暗号化で何分,とかCPUパワーもかなりかかるらしい.
そこで,ドライブ単位で適用される Secure Lock Ware のほうを選択した.インストールして,ドライブに暗号設定をつけて,Disk Formatter というツールでフォーマットしたら設定完了.ドライブをSecure Lock Ware がインストールされた PC の USB ポートに接続すると,パスワードを聞かれて,それ以降は普通にアクセスできるようになる.速度が気になったので,音楽ファイルなどを置いてみたり,そこそこ大きなサイズのデータをコピーしてみたが,特別問題は感じなかった.性能に関する要求が低いだけかもしれないけれど.
2007-02-05 ▲
_ [ツール] Graphviz の巨大な出力を TeX に貼り込むとき ▲
どうも図が途中で途切れてしまうことがあったのですが,dvipdfmx を使ってる場合,Graphviz の出力オプションを -Tps → -Tps2 (PDFに変換することを仮定したPS)としてやったら直りました.このオプションでの出力ファイルの違いは,追加でページサイズ情報を埋めるかどうかだけのようです.これで常にうまくいくのかどうかは分かりません.
横長の図のときは,その結果をrotateboxを使って回転させてやります.
\begin{figure}[p] \begin{center} \rotatebox{90}{\includegraphics[scale=0.08]{foo.ps}} \caption{Caption} \label{fig:} \end{center} \end{figure}