(57)【特許請求の範囲】
【請求項１】
オブジェクト指向プログラムの一部を変更する場合に要求される工数を見積もるプログラム変更工数見積装置であって、
工数見積対象プログラムを解析することで、工数見積対象プログラムがどのような名前空間を用いているのかということを解析するとともに、工数見積対象プログラムの定義する画面定義体を単位にして、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析する解析手段と、
前記解析手段の解析結果に基づいて、その解析結果を視覚化したデータを生成してディスプレイに表示する表示手段と、
前記視覚化データに記述されるクラスの中からプログラムの変更対象となるクラスが選択される場合に、前記解析手段の解析結果に基づいて、その選択されたクラスの持つメソッドに関係する処理を行うメソッドを持つクラスを特定して、前記視覚化データに記述されるそれらの特定したクラスを明示表示する関係クラス表示手段と、
前記関係クラス表示手段の明示表示するクラスの持つメソッドについて、プログラムの変更量を入力する入力手段と、
前記入力手段の入力したプログラム変更量を集計し、それに基づいて、工数見積対象プログラムの一部を変更する場合に要求される工数を見積もる見積手段とを備えることを、
特徴とするプログラム変更工数見積装置。
【請求項２】
請求項１に記載のプログラム変更工数見積装置において、
前記入力手段は、画面定義体を単位にして各クラスについて定義されるプログラム変更率のデフォルト値と、プログラム変更量の入力対象となるメソッドのプログラム量とに基づいて、そのメソッドのプログラム変更量を算出することで、そのメソッドのプログラム変更量を入力することを、
特徴とするプログラム変更工数見積装置。
【請求項３】
請求項１又は２に記載のプログラム変更工数見積装置において、
前記入力手段は、前記関係クラス表示手段の明示表示するクラスに新たなメソッドを追加する変更を行う場合には、そのクラスの持つメソッドのプログラム量に基づいて、その新たなメソッドのプログラム量を決定することで、その新たなメソッドのプログラム変更量を入力することを、
特徴とするプログラム変更工数見積装置。
【請求項４】
オブジェクト指向プログラムの一部を変更する場合に要求される工数を見積もるプログラム変更工数見積方法であって、
工数見積対象プログラムを解析することで、工数見積対象プログラムがどのような名前空間を用いているのかということを解析するとともに、工数見積対象プログラムの定義する画面定義体を単位にして、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析する過程と、
前記解析結果に基づいて、その解析結果を視覚化したデータを生成してディスプレイに表示する過程と、
前記視覚化データに記述されるクラスの中からプログラムの変更対象となるクラスが選択される場合に、前記解析結果に基づいて、その選択されたクラスの持つメソッドに関係する処理を行うメソッドを持つクラスを特定して、前記視覚化データに記述されるそれらの特定したクラスを明示表示する過程と、
前記明示表示するクラスの持つメソッドについて、プログラムの変更量を入力する過程と、
前記入力したプログラム変更量を集計し、それに基づいて、工数見積対象プログラムの一部を変更する場合に要求される工数を見積もる過程とを備えることを、
特徴とするプログラム変更工数見積方法。
【請求項５】
オブジェクト指向プログラムの一部を変更する場合に要求される工数を見積もるプログラム変更工数見積装置の実現に用いられるプログラム変更工数見積処理用プログラムであって、
コンピュータを、
工数見積対象プログラムを解析することで、工数見積対象プログラムがどのような名前空間を用いているのかということを解析するとともに、工数見積対象プログラムの定義する画面定義体を単位にして、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析する解析手段と、
前記解析手段の解析結果に基づいて、その解析結果を視覚化したデータを生成してディスプレイに表示する表示手段と、
前記視覚化データに記述されるクラスの中からプログラムの変更対象となるクラスが選択される場合に、前記解析手段の解析結果に基づいて、その選択されたクラスの持つメソッドに関係する処理を行うメソッドを持つクラスを特定して、前記視覚化データに記述されるそれらの特定したクラスを明示表示する関係クラス表示手段と、
前記関係クラス表示手段の明示表示するクラスの持つメソッドについて、プログラムの変更量を入力する入力手段と、
前記入力手段の入力したプログラム変更量を集計し、それに基づいて、工数見積対象プログラムの一部を変更する場合に要求される工数を見積もる見積手段として機能させるためのプログラム変更工数見積処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向プログラムの一部を変更する場合に要求される工数を見積もるプログラム変更工数見積装置およびその方法と、そのプログラム変更工数見積装置の実現に用いられるプログラム変更工数見積処理用プログラムとに関する。
【背景技術】
【０００２】
プログラムを開発する場合には、スケジュールの計画立案を行う必要があることから、プログラムの開発工数を見積もる必要がある。
【０００３】
プログラムの開発工数の見積もりに関係して、製品開発プロジェクトにおいて、プロジェクトの日程計画を立案する際に、工数算出式の持つ係数を変化できるようにすることで、製品や製品を構成する部品の仕様が変化したり、製品開発における各作業の生産性が変化する場合にも、プロジェクトの日程計画立案に必要となる工数を高精度に見積もることができるようにするという発明が開示されている（例えば、特許文献１参照）。
【０００４】
また、プログラムの開発工数の見積技術として、開発途中の任意の時点において、過去の見積値や実績値を利用して、それ以降の工程で導出される成果物の量や作業の量を高精度に見積もることができるようにするという発明が開示されている（例えば、特許文献２参照）。
【０００５】
また、別のプログラムの開発工数の見積技術として、機能仕様書の情報よりユーザが要求する各種の機能を抽出し、その抽出した各機能の複雑度に従って機能量（ファンクションポイント）という値を求めて、プロジェクトを構成する全部の機能の機能量を総合計した総機能量を算出することで、複数の作業で構成されるプロジェクトを実行する場合における作業工数を見積もることができるようにするという発明が開示されている（例えば、特許文献３参照）。
【特許文献１】特開２００２−１０９１７３号公報
【特許文献２】特開平１０−２４０８０８号公報
【特許文献３】特開平１１−２０３３５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように、従来から、プログラムの開発工数を見積もるための様々な手法が提案されている。
【０００７】
しかしながら、従来の手法は、基本的には、これから開発する新たなプログラムの開発工数を見積もることを想定しており、既存のプログラムの一部を変更する場合に要求される工数を見積もることを想定している訳ではない。
【０００８】
これから、現在までのところ、既存のプログラムをバージョンアップする場合などに、その変更に要求される工数がどの程度のものになるのかということを正確に見積もることができないというのが実情である。
【０００９】
このことは大規模なシステムの運用に用いられるプログラムを開発するメーカにとって極めて深刻な問題である。プログラムを使用しているユーザから、プログラムの一部を変更する要求がある場合に、その変更に要求される工数がどの程度のものになるのかということを正確に見積もることができないことから、誤った見積り価格により多大な損害が強いられることがあり、極めて深刻な問題なのである。
【００１０】
本発明はかかる事情に鑑みてなされたものであって、名前空間を使ってクラスを分類するオブジェクト指向プログラムを見積対象として、オブジェクト指向プログラムの一部を変更する場合に要求される工数を簡単かつ正確に見積もる新たなプログラム変更工数見積技術の提供を目的とする。
【課題を解決するための手段】
【００１１】
この目的を達成するために、本発明のプログラム変更工数見積装置は、名前空間を使ってクラスを分類するオブジェクト指向プログラムの一部を変更する場合に要求される工数を見積もることを実現するために、（１）工数見積対象プログラムを解析することで、工数見積対象プログラムがどのような名前空間を用いているのかということを解析するとともに、工数見積対象プログラムの定義する画面定義体を単位にして、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析する解析手段と、（２）解析手段の解析結果に基づいて、その解析結果を視覚化したデータを生成してディスプレイに表示する表示手段と、（３）表示手段の表示する視覚化データに記述されるクラスの中からプログラムの変更対象となるクラスが選択される場合に、解析手段の解析結果に基づいて、その選択されたクラスの持つメソッドに関係する処理を行うメソッドを持つクラスを特定して、表示手段の表示する視覚化データに記述されるそれらの特定したクラスを明示表示する関係クラス表示手段と、（４）関係クラス表示手段の明示表示するクラスの持つメソッドについて、プログラムの変更量を入力する入力手段と、（５）入力手段の入力したプログラム変更量を集計し、それに基づいて、工数見積対象プログラムの一部を変更する場合に要求される工数を見積もる見積手段とを備えるように構成する。
【００１２】
以上の各処理手段はコンピュータプログラムでも実現できるものであり、このコンピュータプログラムは、適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり、ネットワークを介して提供され、本発明を実施する際にインストールされてＣＰＵなどの制御手段上で動作することにより本発明を実現することになる。
【００１３】
このように構成される本発明のプログラム変更工数見積装置は、名前空間を使ってクラスを分類するオブジェクト指向プログラムを見積対象として、工数見積対象プログラムを解析することで、工数見積対象プログラムがどのような名前空間を用いているのかということを解析するとともに、工数見積対象プログラムの定義する画面定義体を単位にして、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析して、その解析結果に基づいて、その解析結果を視覚化したデータを生成してディスプレイに表示する。
【００１４】
この視覚化データの表示を受けて、プログラムの変更工数を見積もるユーザは、視覚化データに記述されるクラスの中から変更対象となるクラスを選択する。
【００１５】
これから、本発明のプログラム開発工数見積装置は、このユーザの選択操作を受けて、視覚化データに記述されるクラスの中からプログラムの変更対象となるクラスが選択されると、名前空間の解析結果に基づいて、その選択されたクラスの持つメソッドに関係する処理を行うメソッドを持つクラスを特定して、視覚化データに記述されるそれらの特定したクラスを明示表示する。
【００１６】
このクラスの明示表示を受けて、プログラムの変更工数を見積もるユーザは、明示表示されるクラスを順次選択して、その選択したクラスの持つ各メソッドについて、そのメソッドを変更する必要がある場合には、その変更のプログラム量を入力する。
【００１７】
これから、本発明のプログラム開発工数見積装置は、このユーザの入力操作を受けて、明示表示するクラスの持つメソッドについて、プログラムの変更量を入力する。そして、その入力したプログラム変更量を集計し、それに基づいて、工数見積対象プログラムの一部を変更する場合に要求される工数を見積もる。
【００１８】
このとき、プログラムの変更工数を見積もるユーザの便宜を図るために、画面定義体を単位にして各クラスについてプログラム変更率のデフォルト値を定義しておいて、そのデフォルト値とプログラム変更量の入力対象となるメソッドのプログラム量とに基づいて、そのメソッドのプログラム変更量を算出することで、そのメソッドのプログラム変更量を入力することがある。
【００１９】
また、プログラムの変更工数を見積もるユーザの便宜を図るために、明示表示するクラスに新たなメソッドを追加する変更を行う場合には、そのクラスの持つメソッドのプログラム量に基づいて、その新たなメソッドのプログラム量を決定することで、その新たなメソッドのプログラム変更量を入力することがある。
【発明の効果】
【００２０】
このようにして、本発明では、名前空間を使ってクラスを分類するオブジェクト指向プログラムを見積対象として、工数見積対象プログラムがどのような名前空間を用いているのかということを解析するとともに、画面定義体を単位にして、工数見積対象プログラムがその名前空間を用いてどのようにクラスを分類しているのかということについて解析して、その名前空間の解析結果に基づいて、互いに関連する処理を行うメソッドを持つクラスがどれであるのかということを視覚表示しながら、各クラスの持つ各メソッドについてプログラムの変更量を漏れなく入力して、その入力したプログラム変更量に基づいて、工数見積対象プログラムの一部を変更する場合に要求される工数を見積もるようにする。
【００２１】
これにより、本発明によれば、名前空間を使ってクラスを分類するオブジェクト指向プログラムの一部を変更する場合に要求される工数を、簡単かつ正確に見積もることができるようになる。
【発明を実施するための最良の形態】
【００２２】
以下、実施の形態に従って本発明を詳細に説明する。
【００２３】
図１に、本発明のプログラム変更工数見積装置１の一実施形態例を図示する。
【００２４】
本発明のプログラム変更工数見積装置１は、プログラムの変更工数を見積もるユーザとの間の対話手段として機能する入出力端末２を備えて、名前空間を使ってクラスを分類するオブジェクト指向プログラムで構成される見積対象プログラム３の一部を変更する場合に要求される工数を見積もることを実現するために、プログラム入力部１０と、見積対象プログラム格納部１１と、名前解析部１２と、名前解析結果記憶部１３と、名前空間情報視覚化データ作成部１４と、名前空間情報視覚化データ記憶部１５と、プログラム変更量入力部１６と、プログラム変更量集計部１７と、プログラム変更量集計結果記憶部１８と、プログラム変更工数見積部１９とを備える。
【００２５】
プログラム入力部１０は、見積対象プログラム３を入力して、見積対象プログラム格納部１１に格納する。
【００２６】
名前解析部１２は、見積対象プログラム格納部１１に格納される見積対象プログラム３を解析することで、見積対象プログラム３がどのような名前空間を用いているのかということを解析するとともに、見積対象プログラム３の定義する画面定義体を単位にして、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析して、その解析結果を名前解析結果記憶部１３に格納する。
【００２７】
このときに解析対象となる見積対象プログラム３は、例えば、アプリケーションレベルのプログラムである場合には、図２に示すように、ソリューション毎に、どのような画面定義体を用いるのかについてプログラムし、さらに、各レイヤ（各層）毎に、どのようにクラスを構成するのかということについてプログラムし、さらに、各クラスがどのようなメソッドを持つのかということについてプログラムする。
【００２８】
ここで、クラスの名前の中に所属層の名前を記述することで、そのクラスがどの層に所属しているのかということが分かるようになっているとともに、メソッドの名前の中に所属クラスの名前を記述することで、そのメソッドがどのクラスに所属しているのかということが分かるようになっている。
【００２９】
見積対象プログラム３にプログラムされる画面定義体は、画面デザインの具体的な内容について定義する画面デザイン定義と、その画面デザイン定義で定義される画面デザインの持つボタンなどのコントロールが操作されるときに、どのようなイベントを呼び出すのかについて定義するイベント呼出し定義とについて記述する。そして、見積対象プログラム３にプログラムされる各メソッドは、自メソッドが呼び出されるときに、どのような処理を実行するのかということについて記述するとともに、その処理の実行にあたって、どの層に所属するどのクラスの持つどのメソッドを呼び出していくのかということについて記述する。
【００３０】
これから、名前解析部１２は、見積対象プログラム３の名前空間定義記述を解析することで、見積対象プログラム３がどのような名前空間を用いているのかということを解析するとともに、見積対象プログラム３の定義する画面定義体を単位にしてメソッドの呼び出し関係を辿っていくことで、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて解析する。
【００３１】
この名前解析によって、例えば、名前空間として、ユーザ・インタフェース層（ＵＩ層）、イベント層（ＩＶ層）、サービス・エージェント層（ＳＡ層）、サービス・インタフェース層（ＳＩ層）、ビジネス・ルール層（ＢＲ層）、ビジネス・ファサード層（ＢＦ層）、ビジネス・エンティティ・コンポーネント層（ＢＥＣ層）、データ・アクセス・コントロール層（ＤＡＣ層）というレイヤ構成を採る場合には、そのような名前空間を用いているということを解析するとともに、画面定義体を単位にして、それらの各層に属する各クラスの持つ各メソッドがどの層に属するどのグラスの持つどのメソッドと関係する処理を行っているのかという情報を得ることができることになる。
【００３２】
なお、イベント層は実際にはユーザ・インタフェース層の一部を構成しているものなので、ユーザ・インタフェース層とイベント層とを区分けしないレイヤ構成を用いるようにしてもよい。
【００３３】
名前空間情報視覚化データ作成部１４は、名前解析結果記憶部１３に格納される解析結果を視覚化した図３に示すような視覚化データ（以下、名前空間情報視覚化データと称する）を作成して、名前空間情報視覚化データ記憶部１５に格納する。
【００３４】
すなわち、画面定義体（図３の例ではＡフォーム（Ａ．Ｆｏｒｍ）という画面定義体）を単位にして、見積対象プログラム３がどのような名前空間を用いているのかということと、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて示す図３に示すような名前空間情報視覚化データを作成するのである。
【００３５】
ここで、図３に示す名前空間情報視覚化データからでは、各クラスがどのようなメソッドを持っているのかということについて知ることができないが、図４に示すように、この名前空間情報視覚化データに記述されるクラス名をダブルクリック（Ｔree 表示の＋をクリックすることでよい）すると、そのクラスの持つメソッドの一覧とそれらのメソッドの属性情報とが表示されるように構成されているので、見積対象プログラム３の変更工数を見積もるユーザ（以下、ユーザと略記する）は、この名前空間情報視覚化データを参照することで、見積対象プログラム３がどのような名前空間を用いているのかということと、その名前空間の各層がどのようなクラスを持っているのかということと、それらの各クラスがどのようなメソッドを持っているのかということについて把握することができるのである。
【００３６】
名前空間情報視覚化データは、図４に示すように、メソッドの属性情報の一つとして“予定変更行数”欄を持っているが、ここには、ユーザによりプログラムの変更量が入力されることになる。
【００３７】
プログラム変更量入力部１６は、名前空間情報視覚化データ記憶部１５から名前空間情報視覚化データを読み出して入出力端末２のディスプレイに表示するとともに、その表示にあたって、名前解析結果記憶部１３に格納される名前解析結果により特定される互いに関係のあるクラスを明示しつつ、入出力端末２を介してユーザと対話することで、名前空間情報視覚化データに記述される各クラスの持つ各メソッドについて、そのプログラムの変更量を入力する。このとき入力するプログラムの変更量については、名前空間情報視覚化データ記憶部１５に格納される名前空間情報視覚化データの持つ“予定変更行数”欄に記録されることになる。
【００３８】
プログラム変更量集計部１７は、名前空間情報視覚化データ記憶部１５に格納される名前空間情報視覚化データに記録されるプログラム変更量を集計して、その集計結果の情報をプログラム変更量集計結果記憶部１８に格納する。
【００３９】
プログラム変更工数見積部１９は、プログラム変更量集計結果記憶部１８に格納されるプログラム変更量集計結果に基づいて、見積対象プログラム３の一部を変更する場合に要求される工数を見積もる。
【００４０】
図５ないし７に、このように構成される本発明のプログラム変更工数見積装置１の実行するフローチャートを図示する。
【００４１】
ここで、図５のフローチャートは、プログラム入力部１０／名前解析部１２／名前空間情報視覚化データ作成部１４の実行するフローチャートを示し、図６のフローチャートは、プログラム変更量入力部１６の実行するフローチャートを示し、図７のフローチャートは、プログラム変更量集計部１７の実行するフローチャートを示す。
【００４２】
次に、これらのフローチャートに従って、このように構成される本発明のプログラム変更工数見積装置１の実行する処理について説明する。
【００４３】
本発明のプログラム変更工数見積装置１は、見積対象プログラム３の一部変更の工数の見積りに先立って、ユーザから見積対象プログラム３の解析要求が発行されると、図５のフローチャートに示すように、先ず最初に、ステップＳ１００で、見積対象プログラム３を入力する。
【００４４】
続いて、ステップＳ１０１で、入力した見積対象プログラム３の記述する名前空間の定義箇所を解析することで、見積対象プログラム３の用いている名前空間を特定する。
【００４５】
例えば、見積対象プログラム３がユーザ・インタフェース層（ＵＩ層）、イベント層（ＩＶ層）、サービス・エージェント層（ＳＡ層）、サービス・インタフェース層（ＳＩ層）、ビジネス・ルール層（ＢＲ層）、ビジネス・ファサード層（ＢＦ層）、ビジネス・エンティティ・コンポーネント層（ＢＥＣ層）、データ・アクセス・コントロール層（ＤＡＣ層）という名前空間を用いているということを特定するのである。
【００４６】
続いて、ステップＳ１０２で、見積対象プログラム３の持つ全てのソリューションを処理したのか否かを判断して、全てのソリューションを処理していないことを判断するときには、ステップＳ１０３に進んで、未処理のソリューションを１つ選択する。
【００４７】
続いて、ステップＳ１０４で、選択したソリューションの持つ画面定義体を抽出する。すなわち、図２に記載するように、各ソリューションはＵＩ層でそのソリューションで用いている画面定義体について定義しているので、それらの画面定義体を抽出するのである。
【００４８】
続いて、ステップＳ１０５で、抽出した全ての画面定義体を処理したのか否かを判断して、全ての画面定義体を処理していないことを判断するときには、ステップＳ１０６に進んで、未処理の画面定義体を１つ選択する。
【００４９】
続いて、ステップＳ１０７で、選択した画面定義体の持つコントロールを起点としてメソッドの呼出し関係を辿ることで、名前空間の各層に属するクラスと、それらの各クラスの持つメソッドとを特定する。この特定結果（解析結果）については名前解析結果記憶部１３に格納することになる。
【００５０】
続いて、ステップＳ１０８で、ステップＳ１０７で特定した情報に基づいて、選択した画面定義体についての名前空間情報視覚化データを作成する。すなわち、選択した画面定義体について、図３および図４に示すような名前空間情報視覚化データを作成するのである。
【００５１】
続いて、ステップＳ１０９で、作成した名前空間情報視覚化データを名前空間情報視覚化データ記憶部１５に格納してから、ステップＳ１０５の処理に戻る。
【００５２】
そして、ステップＳ１０５〜ステップＳ１０９の処理を繰り返していくことで、ステップＳ１０５で、選択したソリューションから抽出した全ての画面定義体を処理したことを判断するときには、ステップＳ１０２の処理に戻る。
【００５３】
そして、ステップＳ１０２〜１０９の処理を繰り返していくことで、ステップＳ１０２で、見積対象プログラム３の持つ全てのソリューションを処理したことを判断するときには、処理を終了する。
【００５４】
このようにして、本発明のプログラム変更工数見積装置１は、見積対象プログラム３の一部を変更する工数の見積りに先立って図５のフローチャートを実行することで、図３および図４に示すような名前空間情報視覚化データを作成して、それを名前空間情報視覚化データ記憶部１５に格納するように処理するのである。
【００５５】
これにより、名前空間情報視覚化データ記憶部１５には、図８に示すように、見積対象プログラム３の持つソリューション毎に、そのソリューションの持つ画面定義体を単位にして作成された名前空間情報視覚化データが格納されることになる。
【００５６】
この後、ユーザから見積対象プログラム３の一部変更工数の見積り要求が発行されると、本発明のプログラム変更工数見積装置１は、図６のフローチャートに示すように、先ず最初に、ステップＳ２００で、見積対象プログラム３の持つ全てのソリューションを処理したのか否かを判断して、全てのソリューションを処理していないことを判断するときには、ステップＳ２０１に進んで、未処理のソリューションを１つ選択する。
【００５７】
続いて、ステップＳ２０２で、名前空間情報視覚化データ記憶部１５から、選択したソリューションの持つ各画面定義体に対応付けて作成した名前空間情報視覚化データを読み出す。
【００５８】
続いて、ステップＳ２０３で、読み出した全ての名前空間情報視覚化データを処理したのか否かを判断して、全ての名前空間情報視覚化データを処理していないことを判断するときには、ステップＳ２０４に進んで、未処理の名前空間情報視覚化データを１つ選択する。
【００５９】
続いて、ステップＳ２０５で、選択した名前空間情報視覚化データを入出力端末２のディスプレイに表示する。すなわち、図３に示すように表示するのである。
【００６０】
続いて、ステップＳ２０６で、ユーザから、ディスプレイに表示する名前空間情報視覚化データに記述されるＢＥＣ層のクラスとそのクラスの持つデータ項目とに対する選択操作が行われるのを待って、ＢＥＣ層のクラス・データ項目の選択操作が行われることを検出すると、ステップＳ２０７に進んで、図５のフローチャートの実行により得た名前解析結果に基づいて、ユーザにより選択されたＢＥＣ層のクラス・データ項目に関係する処理を行うメソッドを持つ各層のクラスを特定して、それらの特定したクラスを名前空間情報視覚化データ上で明示表示する。
【００６１】
例えば、図３に示す名前空間情報視覚化データをディスプレイに表示しているときに、ユーザがＢＥＣ層に所属するＢＥＣ０１というクラスの持つ項目０３というデータ項目を選択する場合に、そのクラス・データ項目に関係する処理を行うメソッドを持つクラスとして、ＵＩ層のラジオボタン２と、ＩＶ層のクラスＩＶ０２，０３，０７と、ＳＡ層のクラスＳＡ０２，０３と、ＳＩ層のクラスＳＩ０１と、ＢＲ層のクラスＢＲ０１，０３と、ＢＦ層のＢＦ０２と、ＤＡＣ層のクラスＤＡＣ０１とがある場合には、図９に示すように、それらのクラスを名前空間情報視覚化データ上で明示表示するのである。
【００６２】
このとき、図１０に示すように、例えば、ＢＲ層のクラスＢＲ０３の全ステップの中で、クラスＢＥＣ０１を呼び出しているステップの割合を求めて、その割合をクラスＢＲ０３に対応付けてインジケータで表示するというように、明示表示するクラスと明示元のクラスとの影響度合いを求めて、それをインジケータで表示するようにしてもよい。
【００６３】
このようなインジケータ表示を行うと、ユーザは、明示表示するクラスの内で、明示元のクラスの持つメソッドの変更により大きな影響を受けることになるクラスがどれであるのかということを一目で把握できるようになる。
【００６４】
続いて、ステップＳ２０８で、明示表示するクラスの持つメソッドの内、ユーザにより選択されたＢＥＣ層のクラス・データ項目に関係する処理を行うメソッドについてプログラム変更量（例えばプログラム行数で表現する）を入力する。
【００６５】
すなわち、図９に示すような形態で名前空間情報視覚化データを表示しているときに、ユーザが明示表示するクラスの内の１つをダブルクリックすると、図１１に示すように、そのダブルクリックされたクラスの持つメソッドの一覧とそれらのメソッドの属性情報とを表示して、ユーザに対して、ユーザが選択したＢＥＣ層のクラス・データ項目に関係する処理を行うメソッドについてプログラム変更量の入力を促すことで、そのプログラム変更量を入力するのである。
【００６６】
このとき、ダブルクリックされたクラスの持つメソッドの内、ユーザが選択したＢＥＣ層のクラス・データ項目に関係する処理を行うメソッドについては、そのメソッドの持つ“変更”欄にチェックマークを表示することで、プログラム変更量を入力しなければならないメソッドであることをユーザに知らせるようにしている。
【００６７】
また、図１１では示していないが、ダブルクリックされたクラスについて、プログラム変更量を入力しなければならない全てのメソッドについてプログラム変更量を入力した場合には、そのクラスの明示表示の形態を変化させるようにすることで、プログラム変更量の入力が終了したクラスであることを明示するようにしている。
【００６８】
続いて、ステップＳ２０９で、明示表示する全てのクラスについてプログラム変更量の入力が終了したのか否かを判断して、まだプログラム変更量の入力が終了していない明示表示のクラスがあることを判断するときには、ステップＳ２０８に処理に戻っていく。
【００６９】
一方、ステップＳ２０９の判断処理に従って、明示表示する全てのクラスについてプログラム変更量の入力が終了したことを判断するときには、ステップＳ２１０に進んで、ＢＥＣ層の全てのクラス・データ項目が選択されたのか否かを判断して、ＢＥＣ層の全てのクラス・データ項目が選択されていないことを判断するときには、ステップＳ２０６の処理に戻り、ＢＥＣ層の全てのクラス・データ項目が選択されたことを判断するときには、ステップＳ２０３の処理に戻る。
【００７０】
そして、ステップＳ２０３〜ステップＳ２１０の処理を繰り返していくことで、ステップＳ２０３で、選択したソリューションの持つ全ての名前空間情報視覚化データを処理したことを判断するときには、ステップＳ２１１に進んで、プログラム変更量を書き込んだステップＳ２０２で読み出した名前空間情報視覚化データを、名前空間情報視覚化データ記憶部１５に書き戻してから、ステップＳ２００の処理に戻る。
【００７１】
そして、ステップＳ２００〜ステップＳ２１１の処理を繰り返していくことで、ステップＳ２００で、全てのソリューションを処理したことを判断するときには、処理を終了する。
【００７２】
このようにして、本発明のプログラム変更工数見積装置１は、ＢＥＣ層に所属するクラスの持つデータ項目（広義のメソッドと言える）が変更されることになるプログラム変更の見積りを行う場合には、図６のフローチャートを実行することで、ユーザに対してプログラムの変更箇所を提示して、その変更箇所のプログラム変更量の入力を促していくことで、そのプログラム変更に必要となるプログラム変更量を漏れのない形で入力するように処理するのである。
【００７３】
ここで、図６のフローチャートでは、データベースのカラムが変更されたり追加されたりするというプログラム変更を想定しているので、ＢＥＣ層のクラス・データ項目を起点とするプログラム変更量の入力処理について記載したが、ＢＥＣ層のクラス・データ項目を起点としないプログラム変更についても同様の処理に従ってプログラム変更量を入力していくように処理することになる。
【００７４】
また、図６のフローチャートでは、対象クラスの全てに対して処理を行わなければ処理を終了できないことで説明しているが、ユーザが処理対象とするクラスを任意に指定できるようにするという構成を採ることも可能である。
【００７５】
このようにして、名前空間情報視覚化データ記憶部１５に格納される名前空間情報視覚化データに対して見積対象プログラム３についてのプログラム変更量を書き込むと、本発明のプログラム変更工数見積装置１は、図７のフローチャートに示すように、先ず最初に、ステップＳ３００で、見積対象プログラム３の持つ全てのソリューションを処理したのか否かを判断して、全てのソリューションを処理していないことを判断するときには、ステップＳ３０１に進んで、未処理のソリューションを１つ選択する。
【００７６】
続いて、ステップＳ３０２で、名前空間情報視覚化データ記憶部１５から、選択したソリューションの持つ各画面定義体に対応付けて作成した名前空間情報視覚化データ（プログラム変更量が記録されている）を読み出す。
【００７７】
続いて、ステップＳ３０３で、読み出した全ての名前空間情報視覚化データを処理したのか否かを判断して、全ての名前空間情報視覚化データを処理していないことを判断するときには、ステップＳ３０４に進んで、未処理の名前空間情報視覚化データを１つ選択する。
【００７８】
続いて、ステップＳ３０５で、選択した名前空間情報視覚化データに記録されているプログラム変更量を処理対象として、各層について、各クラス毎に、各クラスの持つメソッドに記録されているプログラム変更量を集計し、それに基づいて、選択した名前空間情報視覚化データ（画面定義体に対応付けられている）に対してユーザから入力されたプログラム変更量の総和を算出する。
【００７９】
続いて、ステップＳ３０６で、プログラム変更量集計結果記憶部１８に、ソリューション名・画面定義体名に対応付ける形で、算出したプログラム変更量を記録してから、ステップＳ３０３の処理に戻る。
【００８０】
すなわち、ステップＳ３０１で選択したソリューションのソリューション名と、ステップＳ３０４で選択した名前空間情報視覚化データに対応付けられる画面定義体の画面定義体名とに対応付ける形で、算出したプログラム変更量を記録してから、ステップＳ３０３の処理に戻るのである。
【００８１】
一方、ステップＳ３０３の判断処理に従って、ステップＳ３０２で読み出した全ての名前空間情報視覚化データを処理したことを判断するときには、ステップＳ３０７に進んで、ステップＳ３０６の処理に従ってプログラム変更量集計結果記憶部１８に記録した同一ソリューション（ステップＳ３０１で選択したソリューション）に係るプログラム変更量の総和を算出する。
【００８２】
続いて、ステップＳ３０８で、プログラム変更量集計結果記憶部１８に、ソリューション名に対応付ける形で、算出したプログラム変更量を記録してから、ステップＳ３００の処理に戻る。
【００８３】
そして、ステップＳ３００〜ステップＳ３０８の処理を繰り返していくことで、ステップＳ３００で、全てのソリューションを処理したことを判断するときには、ステップＳ３０９に進んで、プログラム変更量集計結果記憶部１８に記録した全ソリューションのプログラム変更量の総和を算出して、見積対象プログラム３の名前であるアプリケーション名に対応付ける形で、その算出したプログラム変更量をプログラム変更量集計結果記憶部１８に記録して、処理を終了する。
【００８４】
このアプリケーション名に対応付ける形でプログラム変更量集計結果記憶部１８に記録されるプログラム変更量を受けて、プログラム変更工数見積部１９は、予め定めてあるプログラム変更量と工数との変換関係に従って、見積対象プログラム３の変更に要する工数を見積もることになる。
【００８５】
このようにして、本発明のプログラム変更工数見積装置１は、ユーザと対話することで、名前空間を使ってクラスを分類するオブジェクト指向プログラムで構成される見積対象プログラム３の一部を変更する場合に要求される工数を見積もるように処理するのである。
【００８６】
図１２に、本発明のプログラム変更工数見積装置１の他の実施形態例を図示する。
【００８７】
本実施形態例のプログラム変更工数見積装置１は、図１に示す実施形態例のプログラム変更工数見積装置１の備える構成に加えて、新たに標準変更率テーブル２０を備えることを特徴とする。
【００８８】
この標準変更率テーブル２０は、図１３に示すように、画面の種類に応じて定義される、各層に属するクラスに適用されるプログラム変更率の標準値を格納している。
【００８９】
この標準変更率テーブル２０が備えられるときには、プログラム変更量入力部１６は、名前空間情報視覚化データに記述される各クラスの持つ各メソッドについて、そのプログラムの変更量を入力するときに、ユーザから標準変更率テーブル２０による入力指定がある場合には、標準変更率テーブル２０から、その名前空間情報視覚化データに対応付けられる画面定義体が定義する画面の種類とプログラム変更量の入力対象となるクラスの属する層とに対応付けて定義されるプログラム変更率を取得して、その取得したプログラム変更率とプログラム変更量の入力対象となるメソッドのプログラム量とを乗算し、その乗算値を入力要求のプログラム変更量として入力するように処理する。
【００９０】
この構成に従って、ユーザは簡単にプログラム変更量を入力することができるようになる。
【００９１】
図１４に、本発明のプログラム変更工数見積装置１の他の実施形態例を図示する。
【００９２】
本実施形態例のプログラム変更工数見積装置１は、プログラム変更量入力部１６が新たに新規メソッド入力支援機能１６０を備えることを特徴とする。
【００９３】
この新規メソッド入力支援機能１６０は、名前空間情報視覚化データ記憶部１５に格納される名前空間情報視覚化データがメソッドの属性情報を記憶することで、各メソッドのプログラム量を記憶していることに着目して、例えば、ユーザが図９に示すＢＲ層のクラスＢＲ０３に新たなメソッドを追加するときの見積りを要求する場合に、そのクラスＢＲ０３の持つメソッドのプログラム量を取得して、その中から最大値を選択したり、それらの平均値を算出することなどにより、追加するメソッドのプログラム量を推定して、その推定値を入力要求のプログラム変更量として入力するように処理する。
【００９４】
この構成に従って、ユーザはメソッドを追加する場合に、簡単にプログラム変更量を入力することができるようになる。
【００９５】
ここで、クラスＢＲ０３の持つメソッドが少ない場合には、ＢＲ層に所属する全てのメソッドのプログラム量を使って、追加するメソッドのプログラム量の推定を行ったり、メソッドの追加対象となっている画面定義体に所属する全てのメソッドのプログラム量を使って、追加するメソッドのプログラム量の推定を行ったり、メソッドの入力対象となっているソリューションに所属する全てのメソッドのプログラム量を使って、追加するメソッドのプログラム量の推定を行ったり、アプリケーションに所属する全てのメソッドのプログラム量を使って、追加するメソッドのプログラム量の推定を行うようにしてもよい。
【００９６】
このとき、ユーザからどの範囲に属するメソッドのプログラム量を使って推定を行うのかということを指定させるようにしてもよい。
【産業上の利用可能性】
【００９７】
本発明は、名前空間を使ってクラスを分類するオブジェクト指向プログラムの一部を変更する場合に適用されるものであり、その変更に要求される工数を簡単かつ正確に見積もることができるようになる。
【図面の簡単な説明】
【００９８】
【図１】本発明のプログラム変更工数見積装置の一実施形態例である。
【図２】見積対象となるプログラムの説明図である。
【図３】名前空間情報視覚化データの説明図である。
【図４】名前空間情報視覚化データの説明図である。
【図５】本発明のプログラム変更工数見積装置の実行するフローチャートである。
【図６】本発明のプログラム変更工数見積装置の実行するフローチャートである。
【図７】本発明のプログラム変更工数見積装置の実行するフローチャートである。
【図８】名前空間情報視覚化データ記憶部の記憶データの説明図である。
【図９】名前空間情報視覚化データの表示処理の説明図である。
【図１０】名前空間情報視覚化データの表示処理の説明図である。
【図１１】プログラム変更量の入力処理の説明図である。
【図１２】本発明のプログラム変更工数見積装置の他の実施形態例である。
【図１３】標準変更率テーブルの説明図である。
【図１４】本発明のプログラム変更工数見積装置の他の実施形態例である。
【符号の説明】
【００９９】
１    プログラム変更工数見積装置
２    入出力端末
３    見積対象プログラム
１０  プログラム入力部
１１  見積対象プログラム格納部
１２  名前解析部
１３  名前解析結果記憶部
１４  名前空間情報視覚化データ作成部
１５  名前空間情報視覚化データ記憶部
１６  プログラム変更量入力部
１７  プログラム変更量集計部
１８  プログラム変更量集計結果記憶部
１９  プログラム変更工数見積部
【図１】
0004982725.tif 000002
【図２】
0004982725.tif 000003
【図３】
0004982725.tif 000004
【図４】
0004982725.tif 000005
【図５】
0004982725.tif 000006
【図６】
0004982725.tif 000007
【図７】
0004982725.tif 000008
【図８】
0004982725.tif 000009
【図９】
0004982725.tif 000010
【図１０】
0004982725.tif 000011
【図１１】
0004982725.tif 000012
【図１２】
0004982725.tif 000013
【図１３】
0004982725.tif 000014
【図１４】
0004982725.tif 000015