MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

吉岡 弘隆 - よしおか ひろたか

日本OSS推進フォーラム ステアリングコミッティ委員
OSDL Board of Directorsを歴任
カーネル読書会主宰

2000年6月、ミラクル・リナックスの創業に参加。
95年~98年、米国OracleにてOracle RDBMSの開発をおこなっていた。
98年にNetscapeのソースコード公開(Mozilla)に衝撃をうけ、オープンソースの世界に飛びこみ、ついには会社も立ち上げてしまう。
2008年6月取締役CTOを退任し一プログラマとなった。

ミラクル関連リンク

Miracle Technology Day 2008 夏
採用情報

サイト検索

最近のトラックバック

2008年8月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

« 大規模ソフトウェアの効率的な理解(その3) | メイン | 試行錯誤を共有すること »

大規模ソフトウェアの効率的な理解(その4)

巨視的、微視的な理解

大規模ソフトウェアを理解する視点として、巨視的な理解、微視的な理解というのがある。巨視的な理解では、ソフトウェアをトップダウンに全体像から細部へと理解の道筋をたどる。一方、微視的な理解では、逆に細部から全体像へとボトムアップな理解の道筋をとおる。

規模の理解というのは、典型的な巨視的な理解の手法であり、ソースコードの解析は微視的な手法である。どちらも重要な視点で、それぞれの手法をバランスよく利用する必要がある。

大規模ソフトウェアの場合、微視的な視点からスタートすると、その規模のため、時間がおそろしくかかるという特徴があるので、最初は、巨視的な理解からはじめるのが王道である。その理解のプロセスの中で、興味のあるサブコンポーネント(論理的あるいは物理的な部分)へ到達したとして、そのサブコンポーネントの理解は徹底的に微視的な視点からはいるという方法もある。

例えば、あるソフトウェアのバグ修正などという作業の場合、ある程度の巨視的な理解の上、どの部分でバグが発生しているかを同定した後は、ソースコードレベル(微視的な)の理解をしつつデバッグをするというプロセスになる。

またコードリーディングは典型的な微視的な理解の方法論である。(ひらメソッドコードブログなども参考にされたい)

巨視的理解、微視的理解それぞれに必要なテクニックやツールというのがあるので、それについてもプロのプログラマとしては十分訓練しておく必要がある。

巨視的な理解    規模の把握(ファイル数、行数など)、ディレクトリ構造、ドキュメントの精査、プロジェクトのポータルサイトの確認(サイトマップ)、メーリングリスト、掲示板等コミュニティサイトの確認、名前付け規約の確認、ソースコード管理システム、バグ管理システム、

微視的な理解    ソースコード、ソースコードリファレンス、ChangeLog、バグデータベース、ソースコード管理システム(バージョン間の差分)、検索エンジン、メーリングリスト

トラブルシューティングの場合、前提条件としてあるソフトウェアについての巨視的理解については、ある程度おわっているとして、いきなり微視的な作業からはじまる。例えば、ある不具合についてバグデータベースを検索し、同様の不具合があるのかないのかの調査、エラーメッセージを検索エンジンで調査するなどのフェーズがある。問題を再現したら、デバッガを利用しつつソースコードの解析、分析などをしながら問題点の詳細な理解などをしていく。その時に必要な道具立てもいろいろかわってくる。

このようなツールと手法あるいはプロセスについては明文化した教科書がないので、各人がそれぞれのスタイルで長年の経験のなかで培っている。今回あえて自分のプロセスを公開するのは、このことによって、多くの人に参考にしてもらうとともにさらなる改良をほどこしたいと思っているからである。それがインターネット時代あるいはオープンソース(バザールモデル)の基本的なスタイルであるからだ。

公開することによって進化する方法論といっても差し支えない。
読者諸氏のコメント、トラックバックなどを強く期待するところである。

それぞれのツールと手法についてはまた別途記す。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/6465271

このページへのトラックバック一覧 大規模ソフトウェアの効率的な理解(その4):

» gdbの実践的使い方 トラックバック ユメのチカラ
「大規模ソフトウェアの効率的な理解(その1、2、3、4、5、6)」などという大袈 [続きを読む]

» ソースコードの読み方 トラックバック ユメのチカラ
ソフトウェア工学の標準的なカリキュラムにソースコードの読み方というのがあるのかな [続きを読む]

コメント

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.