«前7日分 最新 次7日分» 追記

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2003-12-13 古い日記からの変換データ [長年日記]

_ 新幹線

新幹線の切符の時間変更に出かける.係りの人は,列車の時刻を言っただけで列車名が分かるんだろうか?不思議.


2003-12-10 古い日記からの変換データ [長年日記]

_ AOSD

Ramnivas Laddad によるリファクタリングの記事.http://www.theserverside.com/resources/articles/AspectOrientedRefactoringPart1/article.html

「メソッド呼び出しの抽出」として,クラス内のある特定タイミングでのメソッド呼び出しをアスペクトとして抽出する段階を説明している.・pointcut と空のアドバイスを作って, pointcut が正しい位置にくっついたことを AJDT などを使って確認する.・アドバイスの中にメソッドの中の横断的な部分を移す. declare warning を使って, 元のクラスに除去すべき部分が残ってないことを調べる.・pointcut 定義を整理する.・必要なら,アスペクトの定義を整理する.

declare warning を積極的に使うところがポイントかも.AspectJ 1.2 ではコンテキスト情報(どこで warning になったか)を使ったメッセージ生成ができるようになるらしいので,pointcut が完全に消えたかどうか,あるいは本当に望みの位置にかかっているかどうか,というのを調べるために活用できそう.

_ APSEC2003

これも論文発表者のスライドだけ.

Yuming Zhou, Lijie Wen, Jianmin Wang, and Yujian Chen:DRC: A Dependence Relationships Based Cohesion Measure for Classes.

クラスの凝集度を測るためのメトリクス提案.クラスのメンバー間での呼び出し・読み書き,データ依存するかどうかでのフィールド間の依存関係をとって,

各メンバーごとに,「依存関係をたどって到達可能なメンバーの数」を計算して平均をとる.値としては,メンバー間の依存関係が完全グラフ(どのメンバーも他のすべてのメンバーに依存する)となるときに1,逆に依存辺がまったくない場合に0となる.

凝集度のメトリクスとしては必ず計算可能であること,単調増加であること,といった要求があるが,Chidamber の LCOM,Briand の RCI,Chae の CBMC がそれぞれ不適切な値となるケースでも正しく振舞うことができる,と述べている.

_ APSEC2003

これまた論文ではなくスライドだけ見ている. Wei Zhao, Lu Zhang, Yin Liu, Jing Luo, Jiasu Sun: Understanding How the Requirements Are Implemented in Source Code. ソフトウェアの保守作業にかかるコストはライフサイクルの40%を占めると言われている.しかも,保守作業中に行われる,ソフトウェアの拡張や修正作業ではソフトウェア理解が,それぞれ 47%,62%を占める[Fjeldstad 83],あるいは半分以上を占めている [Corbi 89] という報告がある. そこで,要求ドキュメントの内容とソースコードの対応を自動的にとることができれば,機能に対応したコードを簡単に発見できて開発者のソフトウェア理解作業に役立てることができる,としている. 手法としては,要求ドキュメントの内容から抽出したソースコードから抽出した内容でマッチングを行って(ベクタ空間モデルを使うらしい)要求に対応したコードがどこか,その機能の中心はどのあたりかを探すというもの.最終的には完全性,正確性ともに60%くらいのところで最適値になっているので(完全性90%だと正確性10%程度),それなりに見つかるらしい. 引用している文献はそれぞれ,次の通り.
(Fjeldstad 93) Application Program Maintenance Study: 
Report to Our Respondents. 
Proceedings GUIDE 48,Philadelphia, PA, April 1983.
(Corbi 89) Program Understanding: Challenge for the 1990's.
IBM Systems Journal, 28(2), pp.294-306, 1989.

_ APSEC2003

APSEC2003開催.出席してる先生から,参考になりそうな論文のメールが届いたので発表者のスライドをチェック.

ライブ映像も見ることができる.スライド映されても声聞こえないんですけど…….http://vwin.co.th/apsec/

Tao Qin, Lu Zhang, Zhiying Zhou, Dan Hao, Jiasu Sun: Discovering Use Cases from Source Code using the Branch-Reserved Call Graph.

ユースケース図は機能を把握するために便利だけれど,ドキュメントが常に最新に保たれているとは限らない(最悪失われている)ので,ソースコードから最新の状態を発見したい,というもの.

ソースコードから,分岐を残した状態の(if 文の骨格が残った状態の)コールグラフを作成して,関数ごとに作ったものを接続してやる.接続後,重要度(Importance Metric)を計算する.末端には初期値として適当な重みを与えておき,if による分岐なら分岐先の重要度の和,ただの順接しているブロックなら一番大きいものを取り出す,という形で計算していく.で,閾値で枝を刈ったあとに実行トレースを生成する.重要度の計算方法から,条件判定が大きな影響を与える if 文,粒度の大きい関数ほど残りやすいことになるので,その実行トレースはユースケースに近いものになると考えられる.おおざっぱな方法のわりに,そこそこの結果が出ているようで,面白い.

_ Delphi

Delphi から XML を使おうかな?と思ったので探してみた.XDOMJ: XDOM の日本語化した DOM Level2 ライブラリhttp://hp.vector.co.jp/authors/VA017148/delphi/xml/

XML 編集エディタ Open eXeed (Delphi による GPL なエディタ)http://openexeed.sourceforge.jp/ja/about.html


2003-12-09 古い日記からの変換データ [長年日記]

_ Calendar

hyCalendar,こんなところにも紹介されてたりして.中身は Vector に出した原稿のコピーっぽい.http://www.melma.com/mag/61/m00056861/a00000277.html

Vector サイトとパートナーシップでも結んで転載してるのだろうか.原稿の単純なコピーで付加情報がまったくないようなので,Vector のメールサービスのほうがよさそうに見えるのだが…….そのへんは好みなのかなぁ.http://www.vector.co.jp/magazine/softnews/mailnews/

_ 論文

久々に論文読み.

Johan Brichau, Wolfgang De Meuter, Kris De Volder:Jumping Aspects, Position paper at the workshop Aspects and Dimensions of Concerns, ECOOP 2000.

アスペクトを貼り付けるときに,・要素の追加(add)に対して状態変化を通知したいけど, add を何度も呼び出す addAll が使われたときは 状態変化の通知を1回だけにしたい・メソッドを synchronize させるけど, 既に(呼び出し経路上で)synchronize 済みの場合は synchronize したくないといったように,コンテキストに応じてアスペクトが実行されるかどうかを制御したい場合がある.現状では,プログラマが手でこのような記述をするしかないが,それでは「本当に表現したいことが何か」というのが見えてこないので困る.アスペクト指向プログラミング言語はこのような記述(呼び出し経路などに依存した処理)を可能にするべきである,というもの.

個人的には,かなり共感できる部分がある.reference リストに追加.


2003-12-08 古い日記からの変換データ [長年日記]

_ Calendar

hyCalendar 0.5.1 にバグ発見."1/x" といった文字列が,"1/" の部分で日付候補と認定されてx を数値に変換しようとして落ちる.プログラム的には StrToInt --> StrToIntDef で修正したが,次のリリースまで間があるが,とりあえずテキストエディタでしのげる.テキスト形式のデータでよかった.

_ 読書

星野亮,ザ・サード0「風花の舞う街で」読了.なぜか読まないまま放置していた外伝.あとがきを読むとけっこう前の話だなーと何となく分かる.


2003-12-07 古い日記からの変換データ [長年日記]

_ 読書

山田悠介「リアル鬼ごっこ」(文芸社)読了.

中盤までの展開からだいたいエンディングは想像できたけど,その設定自体はよく思いついたなーというところ.

ブレイド・オブ・アルカナのアングルス/コロナの "殺戮者" 的な行動をふと連想.そう考えるとブレカナの世界はさらに理不尽なのかも.

_ 読書

星野亮,ザ・サード「夜明けまで」読了.短編集.好みのキャラクターの出番が少ないので,少し残念.

設定がわりと大掛かりになる都合上か,短編よりはやはり長編のほうが面白い気がする.


2003-12-05 古い日記からの変換データ [長年日記]

_ 院ゼミ

博士前期課程の人の発表を聞く.事前/事後条件をベースにした検証を開発環境に取り込みましょう,という話が一番興味深かった.再帰などの扱いのときにはやはり不変条件を使うらしい.「不変条件は実行中だったら守らなくていいんじゃないの?」と聞いたら困ってた.やはりみんなあまり深く考えてないらしい.

_ GPS

借り物の某メーカーの GPS を PDA に付けてみる.建物や高架の影では使えないが,それ以外だと3秒くらいで反応が返ってきて面白い.アンテナ部分が大きすぎてペン(スタイラス)挿すところを覆ってしまうので使いようはないけど.

しかも,地図データが大きいはずなので,無線ネットワークで必要な部分だけダウンロードするとかしてくれないと今の PDA には厳しいかも.


2003-12-03 古い日記からの変換データ [長年日記]

_ 紅茶

アッサムティーをレピシエのアノンドバーグに変える.値段もそこそこで,わりと美味しい.

_ [Delphi] TListView のアイテム交換

(レイアウト崩れていたので2005/11/10修正) TListView がどうやら任意の二つのアイテムの位置交換ができないようなので,自前で 削除 → 挿入をすることに.ItemIndex と同時に FocusedItem も動かさないとフォーカスだけ取り残されてかっこ悪いことになる.
引数: index1, index2: integer;
ListView.Items.BeginUpdate;
ListView.Items.Delete(index1);
item := ListView.Items.Insert(index2);
FItemList.Exchange(index1, index2);
updateItem(item, FItemList[index2]); // item に値をセット
ListView.ItemFocused := item;
ListView.ItemIndex := Index2;
ListView.Items.EndUpdate;

_ Eclipse

2nd Eclipse Technology Exchange Workshop の案内が届いた.どうでもいいが,本文10行くらいのメールのヘッダに770個くらいのメールアドレスが列挙されていて気持ち悪かった.

http://web.comlab.ox.ac.uk/oucl/work/oege.de.moor/etxpage/eclipse.html