オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

ソフトウェア保守の法則(リーマンの法則)、ご存知ですか?

»

Programs, Life Cycles, and Laws of Software EvolutionというタイトルのM. Lehman氏の論文があります。論文の著者の名前で"Lehman's law(リーマンの法則)"と呼ばれていることもあります。

論文はタイトルのとおり、以下のような3つの部分から構成されています。

  • プログラムの分類: プログラムを3つのタイプに分類しています。
  • ライフサイクル: 開発→リリース→拡張→リリース・・・といったソフトウェアのライフサイクルが書かれています。
  • ソフトウェア保守の法則: 商用ソフトウェアの開発において収集したデータをもとに「使われるシステムは変わり続ける」「対策をしない限り、継続して変更していくとソフトウェアがだんだん複雑になる」等をはじめとして5つの法則が書かれています。

出典は M. Lehman, “Programs, Life Cycles, and Laws of Software Evolution” IEEE Transactions on Software Engineering, Vol. 68, No. 9, pp. 1060-1076 (1980) です。

シンプルなものばかりですが、今でも十分に通用する内容です。この論文をはじめとして保守開発(既存バージョンをもとに拡張していくタイプのソフトウェア)を対象とした論文は非常に多いのですが、意外と知られていないものが多いように思います。

前に本ブログのエントリにした「バグ修正のための変更の40%が新たなバグを混入するという研究結果 - Googleのバグ予測方法との共通点」もそのような知られていないものの一つではないかと思います。このエントリで紹介している論文は2000年に公開されたものです。

また、Google Engineering Toolsのブログエントリ「グーグルでのバグ予測」(Bug prediction at Google)で参考にしたと記述されている論文の1つである"Predicting Faults from Cached History"も同じように過去の不具合と更新履歴からApache httpd, Subversion, PostgreSQL, Mozilla, JEdit等を対象にして過去に修正の多い箇所に次の不具合も存在しやすいという経験的法則を報告しています。

商用開発においても、開発のほとんどは既存バージョンのソフトウェアを改変して新たなバージョンを作るという保守開発になりつつあるように思います。そのような保守開発に関してプロセス、課題、基礎技術、事例、研究動向を紹介するセッション「アプリケーション保守開発の基礎と研究動向~短納期時代の課題と対策、最新動向~」をSODEC(ソフトウェア開発環境展)の専門セミナーでお話することになりました。5/10(木)9:30~ 東京ビッグサイトです。詳細はこちら。他のセッションを含めた一覧はこちら

有料のセミナーなので保守開発に困ってらっしゃる方が対象になるかと思いますが、プロセスの整理や事例に関して、基礎的な情報から動向まで概観できる内容となるよう準備しています。セッションの後半は富士通鎌倉氏から運用コストの視点も含めて保守開発の事例と効率化のポイントが紹介されます。

Comment(0)