Architectural Repair of Open Source Software

http://web.archive.org/web/20030406224753/http://plg.uwaterloo.ca/~migod/papers/iwpc00.pdf

研究として、LinuxVim 5.3 についてアーキテクチャの修正を行ったという話。
Vim の方について簡単にメモ。

概念的アーキテクチャ
設計上のアーキテクチャ
具体的アーキテクチャ
ソースコード上のアーキテクチャ
anomalies
具体的アーキテクチャと概念的アーキテクチャの不一致
Unexpected dependencies
概念的アークテクチャにあるが具体的アーキテクチャにはない依存関係。
Gratuitous dependencies
具体的アークテクチャにあるが概念的アーキテクチャにはない依存関係。
Forward architecture repair
概念的アーキテクチャに合うように具体的アーキテクチャを修正すること。
Kidnapping
モジュールなどを移動させる。
Splitting
モジュールなどを分割する。
Reverse architecture repair
具体的アーキテクチャに合うよう概念的アーキテクチャを修正すること。

やったこと

  • misc1.c と misc2.c に正規表現、文字列ユーティリティ、メモリユーティリティなど雑多なものがあった。
  • 正規表現関連を regexp.c に移動。
  • 文字列ユーティリティを vim stdlib.c に移動。
  • メモリユーティリティを memory.c に移動。
  • buffer.c に構文ハイライト関連の処理があるので、新たに Buffer というサブシステムを概念アーキテクチャに追加。
  • かかった時間は 80 person hour。