(57)【要約】【課題】  総工数の見積もりの精度を高くする。【解決手段】  見積もり装置４０は、複数のモジュールを表わす情報および複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに複数のモジュールを実行する順序を表わす階層構造を受付ける階層用入力部４２および定義用入力部４４と、階層構造および定義表を記憶し、複数のモジュールを実行する順序にあわせて、複数のモジュールの修正の順序を決定し、修正の順序および定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定し、クリティカルパスおよび定義表が表わす工数から、クリティカルパスが費やす工数の和である総工数を算出する計数部４６と、クリティカルパスに対応する情報および総工数を表わす情報を出力する出力部４８とを含む。【選択図】        図１
2006260041.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを表わす情報および前記複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに前記複数のモジュールを実行する順序を表わす階層構造を受付けるための受付手段と、
前記階層構造および定義表を記憶するための記憶手段と、
前記複数のモジュールを実行する順序にあわせて、前記複数のモジュールの修正の順序を決定するための決定手段と、
前記決定手段が決定した順序および前記定義表が表わす工数から、前記複数のモジュール全体の修正のクリティカルパスを特定するための特定手段と、
前記クリティカルパスおよび定義表が表わす工数から、前記クリティカルパスが費やす工数の和である総工数を算出するための算出手段と、
前記クリティカルパスに対応する情報および前記総工数を表わす情報を出力するための出力手段とを含む、見積もり装置。
【請求項２】
前記複数のモジュールの修正は、
他のモジュールの修正の影響を受ける修正と、
前記他のモジュールの修正から独立した修正とを含み、
前記複数のモジュールを実行する順序は、前記複数のモジュールのいずれかを実行する途中で前記他のモジュールを実行する順序を含む、請求項１に記載の見積もり装置。
【請求項３】
前記他のモジュールの修正の影響を受ける修正は、前記他のモジュールの修正後に実施可能となる修正を含む、請求項２に記載の見積もり装置。
【請求項４】
前記定義表は、前記複数のモジュールそれぞれを修正する担当者を表わす情報をさらに含み、
前記出力手段が出力する情報は、前記担当者を表わす情報をさらに含む、請求項１に記載の見積もり装置。
【請求項５】
前記定義表は、
前記複数のモジュールのいずれかを修正する複数の担当者を表わす情報と、
前記複数の担当者それぞれが費やすコストを表わす情報とをさらに含み、
前記見積もり装置は、前記複数のモジュールのうち、前記クリティカルパスに影響をおよぼすモジュール以外のモジュールごとに、前記コストが低い担当者を選択するための選択手段をさらに含み、
前記出力手段が出力する情報は、前記選択手段が選択した担当者を表わす情報をさらに含む、請求項１に記載の見積もり装置。
【請求項６】
複数のモジュールを表わす情報および前記複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに前記複数のモジュールを実行する順序を表わす階層構造を受付ける受付ステップと、
前記階層構造および定義表を記憶する記憶ステップと、
前記複数のモジュールを実行する順序から、前記複数のモジュールの修正の順序を決定する決定ステップと、
前記決定ステップにおいて決定した順序および前記定義表が表わす工数から、前記複数のモジュール全体の修正のクリティカルパスを特定する特定ステップと、
前記定義表が表わす工数から、前記複数のモジュールの修正に要する総工数を算出する算出ステップと、
前記クリティカルパスに対応する情報および前記総工数を表わす情報を出力する出力ステップとを含む各ステップをコンピュータに実行させるための見積もりプログラム。
【請求項７】
複数のモジュールを表わす情報および前記複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに前記複数のモジュールを実行する順序を表わす階層構造を受付ける受付ステップと、
前記階層構造および定義表を記憶する記憶ステップと、
前記複数のモジュールを実行する順序から、前記複数のモジュールの修正の順序を決定する決定ステップと、
前記決定ステップにおいて決定した順序および前記定義表が表わす工数から、前記複数のモジュール全体の修正のクリティカルパスを特定する特定ステップと、
前記定義表が表わす工数から、前記複数のモジュールの修正に要する総工数を算出する算出ステップと、
前記クリティカルパスに対応する情報および前記総工数を表わす情報を出力する出力ステップとを含む各ステップをコンピュータに実行させるための見積もりプログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、見積もり装置、見積もりプログラム、見積もりプログラムを記録したコンピュータ読取り可能な記録媒体に関し、特に、既存のソフトウェアの保守に要する工数やコストを見積もる見積もり装置、見積もりプログラム、見積もりプログラムを記録したコンピュータ読取り可能な記録媒体に関する。
【背景技術】
【０００２】
いわゆるデジタル家電商品（携帯電話や液晶テレビなど）を開発し、販売し、利益を増大させるために、開発コストを極力抑えること、タイムリーに製品を市場に投入すること、およびスピーディーに製品を市場に投入することが必要である。デジタル家電商品に組み込まれるソフトウェア（組み込みソフトウェア）の開発時、最も優先度の高い項目は、開発期間の短縮、ならびに開発コストの低減である。開発期間と開発コストとを低減する方法として、既存のソフトウェアを再利用することが有効である。既存のソフトウェアを再利用する場合、既存のソフトウェアに対して何の改変も加えずに再利用することは稀である。既存のソフトウェアを再利用する場合、なんらかの修正を施した上で再利用することが多い。ソフトウェア開発において、既存のソフトウェアを再利用する場合、各ソフトウェアに修正の担当者を割当てることが必要となる。既存のソフトウェアを再利用する場合、製品開発プロジェクトの計画を立案する際（既存のソフトウェアを再利用する前）に、既存のソフトウェアを修正するための工数やコストを見積もることも必要となる。
【０００３】
特許文献１は、保守の担当者の能力に応じて工数を見積もるシステムを開示する。この発明によると、再利用される既存のソフトウェアの保守作業に対する工数を見積もることができる。
【０００４】
しかしながら、特許文献１に開示された発明では、総工数の見積もりの精度が高くないという問題点がある。ソフトウェア全体での、見積もられた工数と実際に必要な工数との差が大きいからである。工数の差が大きいのは、ソフトウェア全体の保守に要する工数を見積もる際、ソフトウェアを構成する部品（モジュールなど）の内容を考慮せず工数を決めているためである。実際に必要な工数はモジュールの内容に応じて大きく異なる。
【特許文献１】特開平７−１３４６４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は上述の問題点を解決するためになされたものであって、その目的は、総工数の見積もりの精度が高い見積もり装置、見積もりプログラム、見積もりプログラムを記録したコンピュータ読取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明のある局面にしたがうと、見積もり装置は、複数のモジュールを表わす情報および複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに複数のモジュールを実行する順序を表わす階層構造を受付けるための受付手段と、階層構造および定義表を記憶するための記憶手段と、複数のモジュールを実行する順序にあわせて、複数のモジュールの修正の順序を決定するための決定手段と、決定手段が決定した順序および定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定するための特定手段と、クリティカルパスおよび定義表が表わす工数から、クリティカルパスが費やす工数の和である総工数を算出するための算出手段と、クリティカルパスに対応する情報および総工数を表わす情報を出力するための出力手段とを含む。
【０００７】
すなわち、決定手段は、複数のモジュールを実行する順序にあわせて、複数のモジュールの修正の順序を決定する。複数のモジュールを実行する順序は、階層構造により表わされる。特定手段は、決定手段が決定した順序および定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定する。算出手段は、クリティカルパスおよび定義表が表わす工数から、クリティカルパスが費やす工数の和である総工数を算出する。出力手段は、クリティカルパスに対応する情報および総工数を表わす情報を出力する。これにより、複数のモジュールを実行する順序およびモジュールの修正に要する工数から、精度が高い総工数を得ることができる。その結果、総工数の見積もりの精度が高い見積もり装置を提供することができる。
【０００８】
また、上述の複数のモジュールの修正は、他のモジュールの修正の影響を受ける修正と、他のモジュールの修正から独立した修正とを含むことが望ましい。あわせて、複数のモジュールを実行する順序は、複数のモジュールのいずれかを実行する途中で他のモジュールを実行する順序を含むことが望ましい。
【０００９】
すなわち、決定手段は、複数のモジュールのいずれかを実行する途中で他のモジュールを実行する順序にあわせて、複数のモジュールの、他のモジュールの修正の影響を受ける修正および他のモジュールの修正から独立した修正の順序を決定する。特定手段は、他のモジュールの修正の影響を受ける修正および他のモジュールの修正から独立した修正の順序ならびに定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定する。クリティカルパスが、他のモジュールの修正の影響を受ける修正および他のモジュールの修正から独立した修正の順序から特定されるので、特定手段が特定したクリティカルパスは、現実の修正におけるクリティカルパスに近くなる。これにより、総工数の精度は極めて高くなる。その結果、総工数の見積もりの精度が極めて高い見積もり装置を提供することができる。
【００１０】
また、上述の他のモジュールの修正の影響を受ける修正は、他のモジュールの修正後に実施可能となる修正を含むことが望ましい。
【００１１】
すなわち、決定手段は、複数のモジュールのいずれかを実行する途中で他のモジュールを実行する順序を含む複数のモジュールを実行する順序にあわせて、複数のモジュールの、他のモジュールの修正後に実施可能となる修正および他のモジュールの修正から独立した修正の順序を決定する。他のモジュールの修正後に実施可能となる修正および他のモジュールの修正から独立した修正の順序が、複数のモジュールを実行する順序にあわせられるので、特定手段が特定したクリティカルパスは、合理的な修正に対応し、かつ現実の修正におけるクリティカルパスに近くなる。これにより、総工数の精度は特に際立って高くなる。その結果、総工数の見積もりの精度が特に際立って高い見積もり装置を提供することができる。
【００１２】
また、上述の定義表は、複数のモジュールそれぞれを修正する担当者を表わす情報をさらに含むことが望ましい。あわせて、出力手段が出力する情報は、担当者を表わす情報をさらに含むことが望ましい。
【００１３】
また、上述の定義表は、複数のモジュールのいずれかを修正する複数の担当者を表わす情報と、複数の担当者それぞれが費やすコストを表わす情報とをさらに含むことが望ましい。あわせて、見積もり装置は、複数のモジュールのうち、クリティカルパスに影響をおよぼすモジュール以外のモジュールごとに、コストが低い担当者を選択するための選択手段をさらに含むことが望ましい。あわせて、出力手段が出力する情報は、前記選択手段が選択した担当者を表わす情報をさらに含むことが望ましい。
【００１４】
本発明の他の局面にしたがうと、見積もりプログラムは、複数のモジュールを表わす情報および複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに複数のモジュールを実行する順序を表わす階層構造を受付ける受付ステップと、階層構造および定義表を記憶する記憶ステップと、複数のモジュールを実行する順序から、複数のモジュールの修正の順序を決定する決定ステップと、決定ステップにおいて決定した順序および定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定する特定ステップと、定義表が表わす工数から、複数のモジュールの修正に要する総工数を算出する算出ステップと、クリティカルパスに対応する情報および総工数を表わす情報を出力する出力ステップとを含む各ステップをコンピュータに実行させる。
【００１５】
すなわち、総工数の見積もりの精度が高い見積もりプログラムを提供することができる。
【００１６】
本発明の他の局面にしたがうと、記録媒体は、見積もりプログラムを記録した、コンピュータ読取り可能な記録媒体である。記録媒体は、複数のモジュールを表わす情報および複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに複数のモジュールを実行する順序を表わす階層構造を受付ける受付ステップと、階層構造および定義表を記憶する記憶ステップと、複数のモジュールを実行する順序から、複数のモジュールの修正の順序を決定する決定ステップと、決定ステップにおいて決定した順序および定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定する特定ステップと、定義表が表わす工数から、複数のモジュールの修正に要する総工数を算出する算出ステップと、クリティカルパスに対応する情報および総工数を表わす情報を出力する出力ステップとを含む各ステップをコンピュータに実行させるための見積もりプログラムを記録した、コンピュータ読取り可能な記録媒体である。
【００１７】
すなわち、総工数の見積もりの精度が高い見積もりプログラムを記録したコンピュータ読取り可能な記録媒体を提供することができる。
【発明の効果】
【００１８】
本発明に係る見積もり装置、見積もりプログラム、見積もりプログラムを記録したコンピュータ読取り可能な記録媒体は、総工数の見積もりの精度を高くできる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同一である。したがって、それらについての詳細な説明は繰返さない。
【００２０】
＜第１の実施の形態＞
以下、本発明の第１の実施の形態に係る見積もり装置について説明する。
【００２１】
図１を参照して、本実施の形態に係る見積もり装置４０は、階層用入力部４２と、定義用入力部４４と、計数部４６と、出力部４８とを含む。階層用入力部４２は、「階層構造」の入力や修正を受付ける。「階層構造」とは、複数のモジュールを実行する順序を表わす情報のことである。定義用入力部４４は、「定義表」の入力や修正を受付ける。「定義表」とは、複数のモジュール、モジュールそれぞれを修正する担当者、複数のモジュールの修正に要する工数（他のモジュールの修正から独立した修正の工数（独立型の修正の工数）および他のモジュールの修正の影響を受ける修正の工数（依存型の修正の工数）を含む）を表す情報のことである。本実施の形態の場合、「他のモジュールの修正の影響を受ける修正」とは、他のモジュールの修正後に実施可能となる修正（たとえば他のモジュールを実行して得られた値を用いたデバック）をいう。計数部４６は、各階層構造に対する、総工数、クリティカルパスに影響をおよぼすモジュール、および各モジュールの担当者を出力する。計数部４６は、階層構造と定義表とを用いて、それらのデータを出力する。出力部４８は、計数部４６が算出した結果を出力する。
【００２２】
図２を参照して、本実施の形態に係る見積もり装置４０を実現するコンピュータハードウェアの例を示す。図１に示した見積もり装置４０の各部は、図２に示すコンピュータハードウェアにより実現される仮想回路である。図２に示すコンピュータハードウェアは、バス５０と、ＣＰＵ（Central Processing Unit）５２と、モニタ５４と、記憶部５６と、入力装置５８と、通信用インターフェイス６０と、固定ディスク６２と、ＦＤ（Floppy(登録商標) Disk）駆動装置６４と、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）駆動装置６６とを含む。バス５０は、見積もり装置４０を実現する装置や回路を互いに接続する。これにより、見積もり装置４０を実現する装置や回路は、情報を交換することができる。ＣＰＵ５２は、固定ディスク６２に記憶されたプログラムに基づいて、見積もり装置４０の各ブロックを制御する回路である。モニタ５４は、見積もりの結果を映像として出力する装置である。記憶部５６は、入力装置５８を通じて入力された補正値を予め記憶するブロックである。入力装置５８は、ユーザからデータを受付ける装置である。本実施の形態の場合、入力装置５８は、キーボードおよびマウスを含む。通信用インターフェイス６０は、見積もりの結果をデータとしてサーバに出力する回路である。固定ディスク６２は、見積もり装置４０を実現するプログラムを予め記憶する装置である。ＦＤ駆動装置６４はＦＤ８０が装着される。ＣＤ−ＲＯＭ駆動装置６６はＣＤ−ＲＯＭ９０が装着される。
【００２３】
見積もり装置４０を構成する装置や回路は、コンピュータハードウェアと、ＣＰＵ５２により実行されるソフトウェアとにより実現される。一般的にこうしたソフトウェアは、ＦＤ８０、ＣＤ−ＲＯＭ９０などの記録媒体に格納されて流通し、ＦＤ駆動装置６４またはＣＤ−ＲＯＭ駆動装置６６などにより記録媒体から読取られて固定ディスク６２に一旦格納される。さらに固定ディスク６２から記憶部５６に読出されて、ＣＰＵ５２により実行される。図２に示したコンピュータのハードウェア自体は一般的なものである。したがって、本発明の最も本質的な部分は、ＦＤ８０、ＣＤ−ＲＯＭ９０、および固定ディスク６２などの記録媒体に記録されたソフトウェアである。
【００２４】
なお、図２に示したコンピュータ自体の動作は周知であるので、ここではその詳細な説明は繰返さない。
【００２５】
図３を参照して、本実施の形態に係る見積もり装置４０で実行されるプログラムは、総工数、クリティカルパスに影響をおよぼすモジュール、および各モジュールの担当者を出力する処理に関し、以下のような制御構造を有する。
【００２６】
ステップ１００（以下、ステップをＳと略す。）にて、階層用入力部４２は、階層構造の入力を受付ける。本実施の形態の場合、階層用入力部４２は、ＧＵＩ(Graphical User Interface)を用いて階層構造の入力を受付ける。階層構造の入力が受付けられると、定義用入力部４４は、定義表の入力を受付ける。階層構造および定義表が受付けられると、計数部４６は、これらを記憶する。本実施の形態の場合、実際には記憶部５６が階層構造および定義表を記憶する。具体的には、階層用入力部４２および定義用入力部４４は、後述するＳ１２０〜Ｓ１３８の処理を実施する。
【００２７】
Ｓ１０２にて、計数部４６は、アローグラフを作成する。計数部４６が作成するアローグラフは、１つのイベントを起点とする。アローグラフの各アクティビティは、モジュールと独立型の修正および依存型の修正のいずれかとを表わす。具体的には、計数部４６は、後述するＳ１１０〜Ｓ１１６の処理を実施する。
【００２８】
Ｓ１０４にて、計数部４６は、作成したアローグラフおよび定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスや総工数を特定する。総工数やクリティカルパスを特定する方法は、公知のＰＥＲＴ（Program Evaluation and Review Technique）法である。総工数およびクリティカルパスは、以下の処理により特定される。第１の処理は、各アクティビティが費やす工数を特定する処理である。第２の処理は、クリティカルパスを構成するイベントおよびアクティビティを選択する（最早結合点工数と最遅結合点工数との計算を含む）処理である。本実施の形態において、「最早結合点工数」および「最遅結合点工数」は、最早結合点時刻および最遅結合点時刻（これらはＰＥＲＴ法を利用する際に算出される時刻である）を、工数により表わした値として定義される。本実施の形態において、「工数」とは、日、時、分、秒など、時間を表わす値として定義される。第３の処理は、クリティカルパスとなるアクティビティと定義表とを参照して、クリティカルパスを構成するアクティビティの担当者を抽出する処理である。
【００２９】
Ｓ１０６にて、出力部４８は、計数部４６が計算した値などを出力する。本実施の形態の場合、計数部４６が計算した値はモニタ５４の画像として出力される。
【００３０】
図４を参照して、本実施の形態に係る見積もり装置４０で実行されるプログラムは、総工数などを計算する処理に関し、以下のような制御構造を有する。
【００３１】
Ｓ１１０にて、計数部４６は、階層構造および定義表の内容を参照して、アクティビティを定義する。本実施の形態において、１つのアクティビティは、１つのモジュールの、依存型の修正または独立型の修正のこととする。
【００３２】
Ｓ１１２にて、計数部４６は、アクティビティの順序を定義する。本実施の形態の場合、アクティビティの順序は、独立型のアクティビティの後に、同じモジュールの依存型のアクティビティが続くように定義される。これらのアクティビティはイベントで接続される。さらに、計数部４６は、独立型のアクティビティ同士を１つのイベントで接続する。
【００３３】
Ｓ１１４にて、計数部４６は、階層構造を参照して、ダミーアクティビティを追加する。「ダミーアクティビティ」とは、仮想の作業を表わすアクティビティのことである。ダミーアクティビティの工数はゼロである。本実施の形態において、計数部４６は、モジュールＭ（Ｉ）がモジュールＭ（Ｊ）を呼出す場合、ダミーアクティビティを追加する。このダミーアクティビティは、モジュールＭ（Ｊ）の依存型のアクティビティの終点からモジュールＭ（Ｉ）の依存型のアクティビティの始点へのアクティビティである。このダミーアクティビティは、モジュールＭ（Ｊ）の依存型の修正が完了しないと、モジュールＭ（Ｉ）の依存型の修正が開始できないことを表す。
【００３４】
Ｓ１１６にて、計数部４６は、アローグラフの冗長さを除去する。ちなみに、冗長さを除去するか否かに関わらず、クリティカルパスの大きさは同じである。計数部４６は、次の条件を満たす場合に、イベント「Ｉ」からイベント「Ｊ」へのアクティビティと、イベント「Ｊ」からイベント「Ｋ」へのアクティビティとを削除する。さらに、計数部４６は、イベント「Ｊ」からイベント「Ｋ」へのアクティビティを追加する。アクティビティを削除する条件とは、アローグラフに、イベント「Ｉ」からイベント「Ｊ」へのアクティビティと、イベント「Ｊ」からイベント「Ｋ」へのアクティビティとがあり、かつイベント「Ｊ」へ流入するアクティビティと、イベント「Ｊ」から流出するアクティビティとがそれぞれ１つであるという条件である。
【００３５】
図５を参照して、本実施の形態に係る見積もり装置４０で実行されるプログラムは、階層構造および定義表を入力する処理に関し、以下のような制御構造を有する。
【００３６】
Ｓ１２０にて、階層用入力部４２は、出力部４８（具体的にはモニタ５４）に、モジュールの指定、「矢印」の設定、または定義表の入力を選択するよう求めるメッセージを表示させる。メッセージが表示されると、階層用入力部４２（具体的にはマウス）は、モジュールの指定、「矢印」の設定、または定義表の入力の選択を受付ける。
【００３７】
Ｓ１２２にて、階層用入力部４２は、モジュールの指定が選択されたか否かを判断する。モジュールの指定が選択されたと判断した場合（Ｓ１２２にてＹＥＳ）、処理はＳ１２４へと移される。もしそうでないと（Ｓ１２２にてＮＯ）、処理はＳ１２８へと移される。
【００３８】
Ｓ１２４にて、階層用入力部４２は、モニタ５４の画面上の１点が指定されたこと（この１点は、ユーザにより指定される。この指定には、マウスが用いられる。）に応じて、その１点を中心とする楕円を描く。あわせて、階層用入力部４２は、その楕円の内側にある座標を１つのグループとして記憶する。本実施の形態において、この楕円および座標のグループは、１つのモジュールを表わす。
【００３９】
Ｓ１２６にて、階層用入力部４２（具体的にはキーボード）は、モジュール名の入力を受付ける。モジュール名が受付けられると、計数部４６は、Ｓ１２４にて記憶したグループに対応付けて、入力されたモジュール名を記憶する。あわせて、階層用入力部４２は、入力されたモジュール名をモニタ５４に表示させる。
【００４０】
Ｓ１２８にて、階層用入力部４２は、「矢印」の設定が選択されたか否かを判断する。「矢印」の設定が選択されたと判断した場合（Ｓ１２８にてＹＥＳ）、処理はＳ１３０へと移される。もしそうでないと（Ｓ１２８にてＮＯ）、処理はＳ１３６へと移される。
【００４１】
Ｓ１３０にて、階層用入力部４２（具体的にはマウス）は、ドラッグアンドドロップにより、矢印の入力を受付ける。矢印が入力されると、階層用入力部４２は、ドラッグアンドドロップの始点および終点を矢印の始点および終点として記憶する。本実施の形態の場合、ドラッグアンドドロップの始点が矢印の始点とみなされる。ドラッグアンドドロップの終点が矢印の終点とみなされる。
【００４２】
Ｓ１３２にて、階層用入力部４２は、入力された矢印の始点および終点が、Ｓ１２４にて記憶したグループに含まれるか否かを判断する。Ｓ１２４にて記憶したグループに含まれると判断した場合（Ｓ１３２にてＹＥＳ）、処理はＳ１３４へと移される。もしそうでないと（Ｓ１３２にてＮＯ）、処理はＳ１２０へと移される。
【００４３】
Ｓ１３４にて、階層用入力部４２は、入力された矢印の始点を含むグループに対応するモジュール（第１のモジュール）のモジュール名と、終点を含むグループに対応するモジュール（第２のモジュール）のモジュール名とを、対応付けて記憶する。あわせて、階層用入力部４２は、入力された矢印をモニタ５４に表示させる。
【００４４】
Ｓ１３６にて、階層用入力部４２は、自らが記憶したモジュール名の組合せを、階層構造を表わす文字列に変換する。本実施の形態の場合、第１のモジュールのモジュール名を「Ｍ（Ａ）」とし、かつ第２のモジュールのモジュール名を「Ｍ（Ｂ）」とする場合、階層用入力部４２は、これらのモジュール名を「Ｍ（Ａ），Ｍ（Ｂ）」という文字列に変換する。１つの階層構造は「ＳｏｆｔＨｉｅｒａｒｃｈｙ（１）＝｛（Ｍ（Ａ），Ｍ（Ｂ）），・・・｝」という文字列に変換される。文字列への変換が終了すると、階層用入力部４２は、変換した文字列を記憶する。
【００４５】
Ｓ１３８にて、定義用入力部４４は、モニタ５４に、定義表の入力を求めるメッセージと、定義表を表わす枠を表示させる。メッセージおよび枠が表示されると、定義用入力部４４（具体的にはキーボード）は、定義表を構成するデータを受付ける。
【００４６】
以上のような構造およびフローチャートに基づく、見積もり装置４０の動作について説明する。
【００４７】
図６は、本実施の形態において階層用入力部４２が受付ける「階層構造」を、あるモジュールがどのモジュールを呼出すかを表すグラフ（閉路のない有向グラフ）として示す図である。図６の階層構造の場合、モジュールＭ（０）はモジュールＭ（１）およびモジュールＭ（２）を呼出す。また、モジュールＭ（１）およびモジュールＭ（２）は、それぞれモジュールＭ（３）を呼出す。図６の矢印は、モジュール間の動作の順序を表わす。階層用入力部４２は、次のようにして、階層構造の入力を受付ける。
【００４８】
階層用入力部４２は、モニタ５４に、モジュールの指定、「矢印」の設定、または定義表の入力を選択するよう求めるメッセージを表示させる（Ｓ１２０）。図７に、このときモニタ５４に表示される画像を示す。メッセージが表示されると、階層用入力部４２（具体的にはマウス）は、モジュールの指定、「矢印」の設定、または定義表の入力の選択を受付ける。選択が受付けられると、階層用入力部４２は、モジュールの指定が選択されたか否かを判断する（Ｓ１２２）。この場合、モジュールの指定が選択されたと判断されるので（Ｓ１２２にてＹＥＳ）、階層用入力部４２は、モニタ５４の画面上の１点が指定されたことに応じて、その１点を中心とする楕円を描く。あわせて、階層用入力部４２は、その楕円の内側にある座標を１つのグループとして記憶する（Ｓ１２４）。図８に、画面上の１点が指定された時モニタ５４に表示される画像を示す。座標が記憶されると、階層用入力部４２（具体的にはキーボード）は、モジュール名の入力を受付ける。モジュール名が受付けられると、計数部４６は、Ｓ１２４にて記憶したグループに対応付けて、入力されたモジュール名を記憶する。あわせて、階層用入力部４２は、入力されたモジュール名をモニタ５４に表示させる（Ｓ１２６）。図９に、モジュール名が表示された時モニタ５４に表示される画像を示す。モジュール名が表示されると、Ｓ１２０の処理を経て、階層用入力部４２（具体的にはマウス）は、モジュールの指定、「矢印」の設定、または定義表の入力の選択を受付ける。選択が受付けられると、階層用入力部４２は、モジュールの指定が選択されたか否かを判断する（Ｓ１２２）。この場合、「矢印」の設定が選択されたと判断されるので（Ｓ１２２にてＮＯ）、階層用入力部４２は、「矢印」の設定が選択されたか否かの判断（Ｓ１２８）を経て、階層用入力部４２（具体的にはマウス）は、ドラッグアンドドロップにより、矢印の入力を受付ける。矢印が入力されると、階層用入力部４２は、ドラッグアンドドロップの始点および終点を矢印の始点および終点として記憶する（Ｓ１３０）。矢印の始点および終点が記憶されると、階層用入力部４２は、入力された矢印の始点および終点が、Ｓ１２４にて記憶したグループに含まれるか否かを判断する（Ｓ１３２）。Ｓ１２４にて記憶したグループに含まれると判断した場合（Ｓ１３２にてＹＥＳ）、階層用入力部４２は、入力された矢印の始点を含むグループに対応するモジュール名と、終点を含むグループに対応するモジュール名とを、対応付けて記憶する。あわせて、階層用入力部４２は、入力された矢印をモニタ５４に表示させる（Ｓ１３４）。図１０に、矢印が表示された時モニタ５４に表示される画像を示す。矢印が表示されると、Ｓ１２０〜Ｓ１３４の処理が繰返される。Ｓ１２０〜Ｓ１３４の処理が繰返された後、定義表の入力が選択されると（Ｓ１２０）、Ｓ１２２〜Ｓ１２８の処理を経て、階層用入力部４２は、自らが記憶したモジュール名の組合せを、階層構造を表わす文字列に変換する。文字列への変換が終了すると、階層用入力部４２は、変換した文字列を記憶する（Ｓ１３６）。本実施の形態の場合、階層用入力部４２は、図６に示す階層構造を「ＳｏｆｔＨｉｅｒａｒｃｈｙ（１）＝｛（Ｍ（０），Ｍ（１）），（Ｍ（０），Ｍ（２）），（Ｍ（１），Ｍ（３）），（Ｍ（２），Ｍ（３））｝」と表現される文字列として記憶する。この文字列において「Ｍ（Ｉ），Ｍ（Ｊ）」は、モジュールＭ（Ｉ）がモジュールＭ（Ｊ）を呼出すことを表わす。これにより、階層構造の入力が終了する。
【００４９】
階層構造の入力が受付けられると、定義用入力部４４は、定義表の入力を受付ける。図１１に、このとき受付けられる定義表を示す。図１１に示す定義表は、モジュールＭ（０）の担当者がＰ（０）、独立型の修正の工数が「１０」、依存型の修正の工数が「６」であることを示す。定義用入力部４４は、次の手順により、定義表の入力を受付ける。Ｓ１３６にて文字列が記憶されると、定義用入力部４４は、モニタ５４に、定義表の入力を求めるメッセージと、定義表を表わす枠とを表示させる。図１２に、このときモニタ５４に表示される画像を示す。メッセージおよび枠が表示されると、定義用入力部４４（具体的にはキーボード）は、定義表を構成するデータを受付ける（Ｓ１３８）。これにより、階層用入力部４２および定義用入力部４４は、複数のモジュールを表わす情報および複数のモジュールの修正に要する工数を表わす情報を含む定義表、ならびに複数のモジュールを実行する順序を表わす階層構造を受付けたこととなる。
【００５０】
階層構造および定義表が記憶されると、計数部４６は、複数のモジュールを実行する順序にあわせて、複数のモジュールの修正の順序を決定する。そのために、まず計数部４６は、階層構造および定義表の内容を参照して、アクティビティを定義する。定義表によると、モジュールＭ（０）の依存型の修正の工数は「６」である。モジュールＭ（０）の独立型の修正の工数は「１０」である。計数部４６は、モジュールＭ（０）の依存型の修正の工数「６」を表わすアクティビティと、モジュールＭ（０）の独立型の修正の工数「１０」を表わすアクティビティとを定義する。同様に、計数部４６は、その他のモジュールについてのアクティビティを定義する（Ｓ１１０）。アクティビティが定義されると、計数部４６は、アクティビティの順序を定義する（Ｓ１１２）。図１３に、計数部４６が接続したアクティビティを示す。図１４に、このとき計数部４６が記憶する（実際にはＣＰＵ５２の制御により記憶部５６が記憶する）アクティビティを示す。本実施の形態の場合、記憶部５６は、「モジュール」、「タイプ」、「イベント（始点）」、「イベント（終点）」、および「工数」からなるデータのグループをアクティビティとみなす。「タイプ」は、アクティビティが独立型の修正か、依存型の修正かを示す（１つのモジュールに対する修正は、独立型の修正と依存型の修正とを含む）。本実施の形態の場合、１つのアクティビティは、上述のデータを１つずつ含む。アクティビティの順序が定義されると、計数部４６は、階層構造を参照して、ダミーアクティビティを追加する（Ｓ１１４）。図１５に、ダミーアクティビティが接続されたイベントを示す。たとえば、図６に示す階層構造によれば、モジュールＭ（０）がモジュールＭ（１）を呼出す。この場合、計数部４６は、モジュールＭ（１）の依存型のアクティビティの終点から、モジュールＭ（０）の依存型のアクティビティの始点へ、工数がゼロのダミーアクティビティを追加する。図１５のイベント「５」からイベント「２」へのアクティビティが、ダミーアクティビティである。これにより、複数のモジュールを実行する順序に、複数のモジュールのいずれかを実行する途中で他のモジュールを実行する順序が含まれることとなる。図１６に、このとき計数部４６が記憶するアクティビティを示す。「モジュール」および「タイプ」を表わすデータとして「ダミー」という単語を表わすデータが記憶される。ダミーアクティビティが追加されると、計数部４６は、アローグラフの冗長さを除去する（Ｓ１１６）。たとえば、図１５の場合、アローグラフは、イベント「１」からイベント「８」へのアクティビティと、イベント「８」からイベント「９」へのアクティビティとを含む。イベント「８」に流入するアクティビティは、イベント「１」からのアクティビティのみである。イベント「８」から流出するアクティビティは、イベント「９」へのアクティビティのみである。イベント「８」は除去の対象となる。イベント「１」からイベント「８」へのアクティビティと、イベント「８」からイベント「９」へのアクティビティとが、イベント「１」からイベント「９」へのアクティビティに置き換えられる。その他、イベント「５」およびイベント「７」が削除される。図１７に、これらのイベントが削除された後のアローグラフを示す。図１８に、このとき計数部４６が記憶するアローグラフ（冗長さが除去された結果、単なるアクティビティの集合体からアローグラフに変化している）を示す。イベント「５」、イベント「７」およびイベント「８」を含むアクティビティが削除されている。削除されたアクティビティと同一の経路を辿るアクティビティが追加されている。
【００５１】
アローグラフの冗長さが除去されると、計数部４６は、作成したアローグラフ（ひいては複数のモジュールの修正の順序）および定義表が表わす工数から、総工数および複数のモジュール全体の修正のクリティカルパスを特定する（Ｓ１０４）。総工数およびクリティカルパスは、以下の処理により特定される。第１の処理は、各アクティビティが費やす工数を特定する処理である。図１９に、アローグラフと各アクティビティの工数とを併記したものを示す。図２０は、このとき記憶部４６が記憶するアローグラフ（工数を付加したもの）の図である。アクティビティごとに工数を表わす情報が追加されている。第２の処理は、図１９に示したアローグラフと各アクティビティの工数とから、クリティカルパスを構成するイベントおよびアクティビティを選択する（最早結合点工数と最遅結合点工数とを計算し、かつこれらが一致するイベントを順次記憶する処理を含む）処理である。これにより、計数部４６は、クリティカルパスを特定する。また、計数部４６は、クリティカルパスおよび定義表が表わす工数から、クリティカルパスが費やす工数の和である総工数を算出する。図２１に、クリティカルパスを構成するイベントおよびアクティビティを示す。第３の処理は、クリティカルパスとなるアクティビティと定義表とを参照して、クリティカルパスを構成するアクティビティの担当者を抽出する処理である。これらの処理により、総工数は「２２」と算出される。クリティカルパスに関与するイベントとして、イベント「１」、イベント「９」、イベント「６」、イベント「２」、およびイベント「３」が抽出される。クリティカルパスとなるアクティビティにおいて修正されるモジュールとして、モジュールＭ（０）、モジュールＭ（２）、およびモジュールＭ（３）が抽出される（これらのモジュールはクリティカルパスを構成するイベントを始点および終点とするアクティビティを参照することにより抽出できる）。モジュール「０」の担当者としてＰ（０）が抽出される。モジュール「１」の担当者としてＰ（１）が抽出される。モジュール「２」の担当者としてＰ（２）が抽出される。モジュール「３」の担当者としてＰ（３）が抽出される。
【００５２】
総工数およびクリティカルパスが求められると、出力部４８は、計数部４６が計算した値などをモニタ５４の画像として出力する（Ｓ１０６）。具体的には、総工数、クリティカルパスとなるアクティビティにおいて修正されるモジュール、および各モジュールの担当者が出力される。
【００５３】
以上のようにして、本実施の形態に係る見積もり装置は、モジュールを修正するための各工程と、他のモジュールの処理の影響を受けるか否かと、モジュール毎に担当者が費やす工数とから、クリティカルパスおよび総工数を求める。クリティカルパスを求める際、各工程や工数と他のモジュールの処理の影響を受けるか否かということとを予め関連付けておけば、見積もりの誤差は大幅に改善される。他のモジュールの処理の影響を受けるか否かにより、クリティカルパスおよび総工数が異なるからである。他のモジュールに依存しない工程（ソフトウェアの修正そのものや単体テスト）は、任意の時点で修正を開始できる。他のモジュールに依存する工程（統合テスト）は、依存するモジュールの修正が完了しなければ修正を開始できない。これにより、本実施の形態に係る見積もり装置は、容量が大きなソフトウェアの工数を正確に見積もることができる。その結果、本実施の形態に係る見積もり装置は、総工数の見積もりの精度を高くできる。精度が高くなるので、開発コストを極力抑え、タイムリーに製品を市場に投入し、かつスピーディーに製品を市場に投入することができる。
【００５４】
モジュールの修正が他のモジュールの修正に依存したり依存しなかったりする原因は、ソフトウェアの構造にある。すなわち、図６に階層構造を示すソフトウェアの場合、モジュールＭ（０）はモジュールＭ（１）およびモジュールＭ（２）を呼出す。モジュールＭ（１）およびモジュールＭ（２）は、それぞれモジュールＭ（３）を呼出す。モジュールＭ（１）およびモジュールＭ（２）を用いてモジュールＭ（０）の統合テストを実施するためには、あらかじめモジュールＭ（１）およびモジュールＭ（２）の修正が完了している必要がある。このため、モジュールを修正する担当者は、まず自らが担当するモジュールの修正を行う。修正が行われると、担当者は、自らが担当するモジュール自体の動作をテスト（単体テスト）する。単体テストが行われると、担当者は、他のモジュールを呼出した上での動作をテストする。このようにモジュールが修正されるので、自ずと他のモジュールの修正に依存する修正とそうでない修正とが分離する。
【００５５】
なお、階層構造は、必ずしもＳ１２０〜Ｓ１３６の処理を経て入力される必要がない。たとえば、Ｓ１２０〜Ｓ１３６の処理に代えて、「ＳｏｆｔＨｉｅｒａｒｃｈｙ（１）＝｛（Ｍ（０），Ｍ（１）），（Ｍ（０），Ｍ（２）），（Ｍ（１），Ｍ（３）），（Ｍ（２），Ｍ（３））｝」などといった文字列を受付けてもよい。
【００５６】
＜第２の実施の形態＞
以下、本発明の第２の実施の形態に係る見積もり装置について説明する。
【００５７】
図２２を参照して、本実施の形態に係る見積もり装置２４０は、第１の実施の形態に係る階層用入力部４２、定義用入力部４４、および計数部４６に代えて、別機能の階層用入力部２４２と、定義用入力部２４４と、計数部２４６とを含む。階層用入力部２４２は、複数の階層構造の入力や修正を受付ける。定義用入力部２４４は、定義表の入力や修正を受付ける。本実施の形態に係る定義表は、担当者の賃金（コスト）をさらに含む。計数部２４６は、総工数、クリティカルパス、および担当者に加え、コストを計算する。なお、その他のハードウェア構成については前述の第１の実施の形態と同じである。それらについての機能も同じである。図２に示すコンピュータハードウェアにより実現される仮想回路である点も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【００５８】
図２３を参照して、本実施の形態に係る見積もり装置２４０で実行されるプログラムは、総工数などを計算する処理に関し、以下のような制御構造を有する。
【００５９】
Ｓ３００にて、階層用入力部２４２は、１種類以上の階層構造の入力を受付ける。本実施の形態の場合、階層用入力部２４２は、２種類の階層構造の入力を受付ける。階層構造の入力が受付けられると、定義用入力部２４４は、定義表の入力を受付ける。階層構造および定義表が受付けられると、計数部２４６は、これらを記憶する。階層構造や定義表を受付けるための具体的な方法は、第１の実施の形態と同様である。ただし、階層構造を入力するための一連の処理が繰返されることおよび定義表の入力の際コストをあわせて入力することが第１の実施の形態と異なる。
【００６０】
Ｓ３０２にて、計数部２４６は、階層構造ごとに、アローグラフを作成する。具体的には、計数部２４６は、階層構造ごとに、上述したＳ１１０〜Ｓ１１６の処理を実施する。Ｓ３０４にて、計数部２４６は、作成したアローグラフを用いて、総工数、クリティカルパス、および総コストを求める。総工数、クリティカルパス、および総コストを求める方法は、第１の実施の形態と同様である。
【００６１】
Ｓ３０６にて、出力部４８は、計数部２４６が計算した値のうち、総工数が最小かつコストが最小である、階層構造、モジュールの集合、および各モジュールの担当者の組合せを出力する。本実施の形態の場合、計数部２４６が計算した値はモニタ５４の画像として出力される。
【００６２】
以上のような構造およびフローチャートに基づく、見積もり装置４０の動作について説明する。
【００６３】
階層用入力部２４２は、２種類の階層構造の入力を受付ける（Ｓ３００）。階層用入力部２４２が受付けた階層構造の１つは、第１の実施の形態に係る階層構造と同じ内容の階層構造である（図６参照）。図２４を参照して、もう１つの階層構造を示す。本実施の形態の場合、モジュールＭ（０）は、モジュールＭ（４）、モジュールＭ（５）、およびモジュールＭ（６）を呼出す。階層構造の入力が受付けられると、定義用入力部２４４は、定義表の入力を受付ける。階層構造および定義表が受付けられると、計数部２４６は、これらを記憶する。図２５に、このとき受付けられる定義表を示す。図２５に示す定義表は、モジュールＭ（０）の担当者がＰ（０）、独立型の修正の工数が「１０」、依存型の修正の工数が「６」、コストが「１００」であることを示す。これにより、階層用入力部２４２および定義用入力部２４４は、複数のモジュールを表わす情報、複数のモジュールの修正に要する工数を表わす情報、複数のモジュールのいずれかを修正する複数の担当者を表わす情報、および複数の担当者それぞれが費やすコストを表わす情報を含む定義表、ならびに複数のモジュールを実行する順序を表わす階層構造を受付けることとなる。
【００６４】
階層構造および定義表の入力が受付けられると、計数部２４６は、階層構造ごとに、アローグラフを作成する（Ｓ３０２）。これにより、計数部２４６は、複数のモジュールを実行する順序にあわせて、複数のモジュールの修正の順序を決定する。本実施の形態の場合、モジュールＭ（１）に対しては、担当者が２名割当られる。担当者が２名ずつ割当られるので、計数部２４６は、図６に示す階層構造に対して、２種類のアローグラフを作成する。他のモジュールに対しては、担当者が１名ずつ割当られる。担当者が１名ずつ割当られるので、図２４に示す階層構造に対して作成されるアローグラフは１種類となる。作成されるアローグラフは合計３種類となる。それらのうち１種類は第１の実施の形態に係るアローグラフ（第１のアローグラフ）と同一となる。図２６および図２７に、その他のアローグラフを示す。図２６は、第２のアローグラフを示す図である。図２７は、第３のアローグラフを示す図である。アローグラフが作成されると、計数部２４６は、作成したアローグラフを用いて、総工数、クリティカルパス、および総コストを求める（Ｓ３０４）。これにより、計数部２４６は、自らが決定した順序および定義表が表わす工数から、複数のモジュール全体の修正のクリティカルパスを特定することとなる。計数部２４６は、定義表が表わす工数から、複数のモジュールの修正に要する総工数を算出することとなる。
【００６５】
第１のアローグラフ（モジュールＭ（１）の担当者はＰ（１））の場合、総工数、クリティカルパス、および担当者は第１の実施の形態と同様である。総コストは「１００」＋「３０」＋「４０」＋「３０」＝「２００」である。この値は、各モジュールの担当者に割当てあてられたコスト（賃金）の総和に等しい。第２のアローグラフ（モジュールＭ（１）の担当者はＰ（４））の場合、総工数が「２２」、クリティカルパスが、イベント「１」、イベント「９」、イベント「６」、イベント「２」、およびイベント「３」、総コストが、「１００」＋「２０」＋「４０」＋「３０」＝「１９０」である。第３のアローグラフの場合、総工数が「４６」、クリティカルパスが、イベント「１」、イベント「９」、イベント「２」、およびイベント「３」、総コストが、「１００」＋「２０」＋「２０」＋「２０」＝「１６０」である。これにより、計数部２４６は、複数のモジュールのうち、クリティカルパスに影響をおよぼすモジュール以外のモジュールごとに、コストが低い担当者を選択することとなる。総工数などが求められると、出力部４８は、計数部２４６が計算した値のうち、総工数が最小かつコストが最小である、階層構造、モジュールの集合、および各モジュールの担当者の組合せを出力する（Ｓ３０６）。出力される階層構造、モジュールの集合、および各モジュールの担当者の組合せは、第２のアローグラフに対応する組合せである。これにより、出力部４８は、クリティカルパスに対応する情報、総工数を表わす情報、および計数部２４６が選択した担当者を表わす情報を出力することとなる。このとき、モニタ５４には、図６に示す階層構造と、モジュールＭ（０）、モジュールＭ（２）、およびモジュールＭ（３）の集合と、モジュールＭ（０）の担当者Ｐ（０）、モジュールＭ（１）の担当者Ｐ（４）、モジュールＭ（２）の担当者Ｐ（２）、およびモジュールＭ（３）の担当者Ｐ（３）とが表示される。
【００６６】
以上のようにして、本実施の形態に係る見積もり装置は、階層構造を用いて工数を見積もることができるので、ソフトウェアの保守方法に複数の選択肢がある場合に、最も総工数（ひいては修正を依頼してから修正が完了するまでの時間）が短くなるモジュールの組合わせを選択できる。また、総工数が等しいモジュールの組合わせが存在する場合、最も修正コストが安価な担当者の組合わせを抽出できる。すなわち、ある機能を実現する再利用ソフトウェアに複数の選択肢がある場合、総工数が最短でコストが最小となる担当者を抽出できる。ただし、再利用しようとするソフトウェア（仕様書およびコードのいずれかを含む）が、次の要件を満たしていることが前提となる。その第１の要件は、複数のモジュールから構成されていることである。第２の要件は、それらのモジュールが階層構造をなしていることである。第３の要件は、各モジュールに１人以上の担当者が割り当てられていることである。総工数を変化させず、最もコストの安い修正担当者を選択することができるので、ソフトウェアを再利用するプロジェクトにおいて、総工数の最小化やコストの最小化を図ることができる。その結果、本実施の形態に係る見積もり装置は、総工数の見積もりの精度を高くでき、かつ総工数の最小化やコストの最小化を図ることができる。
【００６７】
ちなみに、各モジュールを修正する工数やコスト（賃金）は、担当者によってまちまちである。たとば、担当者が、修正しようとするモジュールを作成した者であったり、そのモジュールが取扱う問題に精通していたりする場合、修正に要する工数は小さい。そのモジュールの仕様を理解しているためである。一方、担当者が未経験者であったり、修正しようとするモジュールが取扱う問題に明るくなかったりする場合、修正工数は大きい。修正担当者が、まずそのモジュールの仕様や動作を理解するところから着手しなければならない（すなわち修正の準備のための工数が余分に追加される）からである。
【００６８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００６９】
【図１】本発明の第１の実施の形態に係る見積もり装置の全体構成図である。
【図２】本発明の第１の実施の形態に係る見積もり装置を実現するコンピュータハードウェアの全体構成図である。
【図３】本発明の第１の実施の形態に係る総工数などの出力処理の制御の手順を示すフローチャートである。
【図４】本発明の第１の実施の形態に係るアローグラフ作成処理の制御の手順を示すフローチャートである。
【図５】本発明の第１の実施の形態に係る階層構造および定義表の入力処理の制御の手順を示すフローチャートである。
【図６】ソフトウェアの階層構造の概念図（その１）である。
【図７】本発明の第１の実施の形態に係る選択を求める画面を示す図である。
【図８】本発明の第１の実施の形態に係る画面上の１点が指定された時の画面を示す図である。
【図９】本発明の第１の実施の形態に係るモジュール名が表示された時の画面を示す図である。
【図１０】本発明の第１の実施の形態に係る矢印が表示された時の画面を示す図である。
【図１１】定義表の概念図（その１）である。
【図１２】本発明の第１の実施の形態に係る定義表の入力を求めるメッセージと定義表を表わす枠とが表示された時の画面を示す図である。
【図１３】作成中の第１のアローグラフの図である。
【図１４】本発明の第１の実施の形態に係る記憶部が記憶するアクティビティを示す図である。
【図１５】第１のアローグラフ（ダミーアクティビティを追加した後）の図である。
【図１６】本発明の第１の実施の形態に係る記憶部が記憶するアクティビティ（ダミーアクティビティを追加した後）の図である。
【図１７】第１のアローグラフ（冗長性を除去した後）の図である。
【図１８】本発明の第１の実施の形態に係る記憶部が記憶する第１のアローグラフの図である。
【図１９】第１のアローグラフ（工数を明示した後）の図である。
【図２０】本発明の第１の実施の形態に係る記憶部が記憶する第１のアローグラフ（工数を付加したもの）の図である。
【図２１】クリティカルパスを明示した第１のアローグラフの図である。
【図２２】本発明の第２の実施の形態に係る見積もり装置の全体構成図である。
【図２３】本発明の第２の実施の形態に係る総工数などの出力処理の制御の手順を示すフローチャートである。
【図２４】ソフトウェアの階層構造の概念図（その２）である。
【図２５】定義表の概念図（その２）である。
【図２６】クリティカルパスを明示した第２のアローグラフの図である。
【図２７】クリティカルパスを明示した第３のアローグラフの図である。
【符号の説明】
【００７０】
４０，２４０  見積もり装置、４２，２４２  階層用入力部、４４，２４４  定義用入力部、４６，２４６  計数部、４８  出力部、５０  バス、５２  ＣＰＵ、５４  モニタ、５６  記憶部、５８  入力装置、６０  通信インターフェイス、６２  固定ディスク、６４  ＦＤ駆動装置、６６  ＣＤ−ＲＯＭ駆動装置、８０  ＦＤ、９０  ＣＤ−ＲＯＭ。
【図１】
2006260041.tif 000003
【図２】
2006260041.tif 000004
【図３】
2006260041.tif 000005
【図４】
2006260041.tif 000006
【図５】
2006260041.tif 000007
【図６】
2006260041.tif 000008
【図７】
2006260041.tif 000009
【図８】
2006260041.tif 000010
【図９】
2006260041.tif 000011
【図１０】
2006260041.tif 000012
【図１１】
2006260041.tif 000013
【図１２】
2006260041.tif 000014
【図１３】
2006260041.tif 000015
【図１４】
2006260041.tif 000016
【図１５】
2006260041.tif 000017
【図１６】
2006260041.tif 000018
【図１７】
2006260041.tif 000019
【図１８】
2006260041.tif 000020
【図１９】
2006260041.tif 000021
【図２０】
2006260041.tif 000022
【図２１】
2006260041.tif 000023
【図２２】
2006260041.tif 000024
【図２３】
2006260041.tif 000025
【図２４】
2006260041.tif 000026
【図２５】
2006260041.tif 000027
【図２６】
2006260041.tif 000028
【図２７】
2006260041.tif 000029