(57)【要約】【課題】ソフトウェア開発時に管理者等が欠陥除去率の目標値を調整することで工数の短縮を図ることができるようにする。【解決手段】ソフトウェア開発支援装置１００において、記憶部２００は、ソフトウェアに存在する欠陥の推定数と、ソフトウェアの設計工程で除去される欠陥の数と設計工程で欠陥の除去作業にかかる工数との関係を表す第１関数と、設計工程の後のテスト工程で除去される欠陥の数とテスト工程で欠陥の除去作業にかかる工数との関係を表す第２関数とを記憶する。設定部３００は、ソフトウェアに存在する欠陥のうち設計工程で除去される欠陥の目標比率を複数設定する。計算部４００は、設定部３００により設定された目標比率ごとに、記憶部２００に記憶された推定数から、記憶部２００に記憶された第１関数と第２関数とを用いて、設計工程とテスト工程とで欠陥の除去作業にかかる合計工数を計算する。【選択図】図１
2015156142.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアに存在する欠陥のうちソフトウェアの設計工程で除去される欠陥の目標比率を複数設定する設定部と、
前記設定部により設定された目標比率ごとに、ソフトウェアに存在する欠陥の推定数から、前記設計工程で除去される欠陥の数と前記設計工程で欠陥の除去作業にかかる工数との関係を表す第１関数と、前記設計工程の後のテスト工程で除去される欠陥の数と前記テスト工程で欠陥の除去作業にかかる工数との関係を表す第２関数とを用いて、前記設計工程と前記テスト工程とで欠陥の除去作業にかかる合計工数を計算する計算部と、
前記設定部により設定された目標比率と前記計算部により計算された合計工数との関係を示すデータを作成し、作成したデータを出力する出力部と
を備えることを特徴とするソフトウェア開発支援装置。
【請求項２】
前記計算部は、第１関数として、前記設計工程で除去される欠陥の数が多いほど前記設計工程で１つの欠陥の除去作業にかかる工数が増える関数を用いることを特徴とする請求項１のソフトウェア開発支援装置。
【請求項３】
前記計算部は、第１関数として、前記設計工程で除去される欠陥の数と前記設計工程で欠陥の除去作業にかかる工数とが比例する関数を用いることを特徴とする請求項１のソフトウェア開発支援装置。
【請求項４】
前記計算部は、第２関数として、前記テスト工程で除去される欠陥の数と前記テスト工程で欠陥の除去作業にかかる工数とが比例する関数を用いることを特徴とする請求項１から３のいずれかのソフトウェア開発支援装置。
【請求項５】
ソフトウェアに存在する欠陥の推定数Ｎｅを記憶するとともに、第１関数のパラメータとして、前記設計工程で１つの欠陥の除去作業にかかる工数Ｔ１を記憶し、第２関数のパラメータとして、前記テスト工程で１つの欠陥の除去作業にかかる工数Ｔ２を記憶する記憶部
をさらに備え、
前記計算部は、前記設定部により設定された目標比率Ｒごとに、前記記憶部に記憶された推定数Ｎｅから、前記設計工程で除去される欠陥の数Ｎ１＝Ｎｅ×Ｒと、前記テスト工程で除去される欠陥の数Ｎ２＝Ｎｅ×（１−Ｒ）とを計算し、前記記憶部に記憶された第１関数のパラメータＴ１と第２関数のパラメータＴ２とを用いて、合計工数Ｔｓ＝Ｎ１×Ｔ１＋Ｎ２×Ｔ２を計算することを特徴とする請求項１のソフトウェア開発支援装置。
【請求項６】
前記設定部は、目標比率を下限比率から上限比率まで一定間隔で設定する請求項１から５のいずれかのソフトウェア開発支援装置。
【請求項７】
ソフトウェアに存在する欠陥の推定数と、ソフトウェアの設計工程で除去される欠陥の数と前記設計工程で欠陥の除去作業にかかる工数との関係を表す第１関数と、前記設計工程の後のテスト工程で除去される欠陥の数と前記テスト工程で欠陥の除去作業にかかる工数との関係を表す第２関数とを記憶装置に記憶するコンピュータが、
ソフトウェアに存在する欠陥のうち前記設計工程で除去される欠陥の目標比率を複数設定し、
設定された目標比率ごとに、前記記憶装置に記憶された推定数から、前記記憶装置に記憶された第１関数と第２関数とを用いて、前記設計工程と前記テスト工程とで欠陥の除去作業にかかる合計工数を計算し、
設定された目標比率と計算された合計工数との関係を示すデータを作成し、作成したデータを出力することを特徴とするソフトウェア開発支援方法。
【請求項８】
ソフトウェアに存在する欠陥の推定数と、ソフトウェアの設計工程で除去される欠陥の数と前記設計工程で欠陥の除去作業にかかる工数との関係を表す第１関数と、前記設計工程の後のテスト工程で除去される欠陥の数と前記テスト工程で欠陥の除去作業にかかる工数との関係を表す第２関数とを記憶装置に記憶するコンピュータに、
ソフトウェアに存在する欠陥のうち前記設計工程で除去される欠陥の目標比率を複数設定する設定処理と、
前記設定処理により設定された目標比率ごとに、前記記憶装置に記憶された推定数から、前記記憶装置に記憶された第１関数と第２関数とを用いて、前記設計工程と前記テスト工程とで欠陥の除去作業にかかる合計工数を計算する計算処理と、
前記設定処理により設定された目標比率と前記計算処理により計算された合計工数との関係を示すデータを作成し、作成したデータを出力する出力処理と
を実行させることを特徴とするソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援装置及びソフトウェア開発支援方法及びソフトウェア開発支援プログラムに関するものである。本発明は、例えば、欠陥除去率を利用した工数予測値算出及びシミュレーションを行う方式に関するものである。
【背景技術】
【０００２】
ソフトウェア（ＳＷ）開発時の計画段階等では、各組織でこれまでの経験や過去データの分析結果等から、作業工数の見積もりを実施している。作業工数は、成果物の作成時間と、成果物の欠陥除去作業（レビュー及びテスト時の、欠陥発見作業と修正作業）の時間とからなる。このとき、成果物の欠陥除去作業は、作成する成果物に含まれる欠陥の量により、必要工数が変化する。このため、作業工数の見積もりでは、欠陥除去作業の工数予測を行う必要がある。
【０００３】
ソフトウェア工学では、ソフトウェア開発工程Ｖ字モデル（単に「Ｖ字モデル」ともいう）というソフトウェア開発の工程同士の関係を体系化した一般的に広く適用されるモデルが存在する（例えば、非特許文献１参照）。ソフトウェア開発の工程と欠陥の混入・除去の関係性（ベースとなる概念）は、このソフトウェア開発工程Ｖ字モデルで表すことができる。
【０００４】
図１３は、ソフトウェア開発工程Ｖ字モデルの概要を示す図である。
【０００５】
図１３に示すように、ソフトウェア開発工程Ｖ字モデルは、ウォーターフォール型のソフトウェア開発の工程を、コーディングを頂点として順にＶ字型に並べて開発全工程の関係を示した開発モデルである（Ｖ字型の左は設計工程、右は対応するテスト工程）。本モデルにおいて、欠陥の混入（誤りの作り込み）は設計工程で起こり、対応するテスト工程にて欠陥が除去される。これら１対の工程をＶ字工程と呼ぶ。
【０００６】
設計工程のうち、要件定義工程、方式設計工程、詳細設計工程では、ドキュメントレビュー（ＤＲ）が行われ、コーディング工程では、コードレビュー（ＣＲ）が行われる。これらのレビュー作業でも欠陥が除去されるため、設計工程で混入した欠陥の数は当該工程のレビュー作業で一部除去され、除去しきれなかった誤りが対応するテスト工程（図中、設計工程からの横向きの矢印が指しているテスト工程）で除去される。なお、頂点のコーディング工程には対応するテスト工程がないため、Ｖ字工程は１工程のみで完結しているものとする。
【０００７】
上記のように、ソフトウェア開発工程は、大きく分けると設計工程とテスト工程との２つに分けることができる。ここでは、ある１つの設計工程とある１つのテスト工程が１対１で対応し、当該設計工程で混入した欠陥は、当該設計工程でのレビュー作業と、当該テスト工程でのテスト作業で除去される関係が成り立つ（残りは残存欠陥となる）ものとする。
【０００８】
図１３の仕組みから、混入する欠陥の数がある一定値だとして最終的に全ての欠陥を取り除く場合、設計工程での欠陥除去数が変化するとテスト工程で必要な欠陥除去数は変化する。例えば、方式設計工程での欠陥混入数が１００個のとき、方式設計工程のレビュー作業で欠陥を７０個除去すると、結合テスト工程で３０個除去することになる（パターン１）。方式設計工程のレビュー作業で欠陥を３０個除去すると、結合テスト工程で７０個除去することになる（パターン２）。つまり、欠陥混入数を一定値に固定した場合、設計工程で多くの欠陥を除去するとテスト工程で除去しなければならない除去数は減るというような関係性がある（設計工程で除去する割合とテスト工程で除去する割合が変化するだけで、最終的に除去する個数は一定である）。
【０００９】
従来は、欠陥数予測技術（品質予測技術）でソフトウェア開発の工程ごとに欠陥検出数を予測し（例えば、非特許文献２参照）、工数予測技術で工数を予測する（例えば、非特許文献１参照）、というように別々に単一の値を算出していた。
【００１０】
欠陥数予測技術に関しては、ソフトウェア開発工程全体を対象とした欠陥数予測を行う技術として普及しているものがない。ゴンペルツ曲線等、よく知られるモデルはテスト工程のみを対象としたもので、設計工程を対象としない。つまり、従来の欠陥数予測技術は、１つのテスト工程でどれだけ欠陥が検出できそうかを予測する技術である。そこで、ソフトウェア開発の現場では、以下の式１のような単純な式により各開発工程の欠陥検出数の予測値を算出し、検出件数の計画値として利用している。
規模×パラメータ値α＝欠陥検出数（予測値）・・・（式１）
【００１１】
式１について、「規模」はソフトウェア開発計画段階で見積もる開発最終ライン数等のソフトウェア開発規模である。「パラメータ値α」は組織が過去データや経験等から、欠陥検出数の予測値を得るために定めた独自のパラメータ値で、工程ごとに定義する固定値である。当該パラメータ値は、組織の開発レベルや品質目標等が経験から複合的に判断され、欠陥が混入する様々な要因が固定値として扱われて設定される。
【００１２】
工数予測技術に関しては、欠陥数予測技術と同様に、一般的に普及している技術がない。そこで、ソフトウェア開発の現場では、以下の式２のような単純な式により工数の予測値を算出し、計画値として利用している。
規模×パラメータ値β＝工数（予測値）・・・（式２）
【００１３】
式２についても、「規模」はソフトウェア開発計画段階で見積もる開発最終ライン数等のソフトウェア開発規模である。「パラメータ値β」は組織が過去データや経験等から、工数の予測値を得るために定めた独自のパラメータ値で、工程ごとに定義する固定値である。当該パラメータ値は、組織の開発レベルや品質目標等が経験から複合的に判断され、欠陥が混入する様々な要因が固定値として扱われて設定される。
【００１４】
式１及び式２に入力される値には、「規模」、「パラメータ値α」、「パラメータ値β」があるが、「規模」は見積り値であり、「パラメータ値α」、「パラメータ値β」は組織で設定する固定値である。よって、式１及び式２には、開発中に管理者が制御可能な値が存在していない（「規模」は、開発中に結果として出てくる値であり、管理者により制御できるものではない）。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】独立行政法人情報処理推進機構  ソフトウェア・エンジニアリング・センター（編）、「ソフトウェアテスト開発見積りガイドブック」、独立行政法人情報処理推進機構、２００８年９月
【非特許文献２】野中誠、小池利和、小室睦（著）、「データ指向のソフトウェア品質マネジメント」、日科技連出版社、２０１２年９月
【発明の概要】
【発明が解決しようとする課題】
【００１６】
従来は、欠陥数予測技術と工数予測技術が全く別であるため、各工程で検出される欠陥の数との兼ね合いで変化する工数の推移を把握することができないという課題があった。仮に単純に２つの技術を組み合わせたとしても、欠陥検出数と工数の予測値を１つずつ算出するのみで、工数を短縮するためにとるべきアクションを検討することはできない。つまり、欠陥検出数（品質に関する指標値）を条件とした工数の推移を把握することはできない。また、欠陥検出数の変化に応じた工数の推移を示すための手段もない。このような背景から、ソフトウェア開発時に管理者が品質（欠陥除去率）との兼ね合いで工数効率化を検討することができないという課題が生じている。
【００１７】
本発明は、例えば、ソフトウェア開発時に管理者等が欠陥除去率の目標値を調整することで工数の短縮を図ることができるようにすることを目的とする。
【課題を解決するための手段】
【００１８】
本発明の一の態様に係るソフトウェア開発支援装置は、
ソフトウェアに存在する欠陥のうちソフトウェアの設計工程で除去される欠陥の目標比率を複数設定する設定部と、
前記設定部により設定された目標比率ごとに、ソフトウェアに存在する欠陥の推定数から、前記設計工程で除去される欠陥の数と前記設計工程で欠陥の除去作業にかかる工数との関係を表す第１関数と、前記設計工程の後のテスト工程で除去される欠陥の数と前記テスト工程で欠陥の除去作業にかかる工数との関係を表す第２関数とを用いて、前記設計工程と前記テスト工程とで欠陥の除去作業にかかる合計工数を計算する計算部と、
前記設定部により設定された目標比率と前記計算部により計算された合計工数との関係を示すデータを作成し、作成したデータを出力する出力部とを備える。
【発明の効果】
【００１９】
本発明では、ソフトウェアに存在する欠陥のうち設計工程で除去される欠陥の目標比率（欠陥除去率の目標値）と、設計工程とテスト工程とで欠陥の除去作業にかかる合計工数との関係を示すデータを出力する。このため、本発明によれば、ソフトウェア開発時に管理者等が欠陥除去率の目標値を調整することで工数の短縮を図ることができるようになる。
【図面の簡単な説明】
【００２０】
【図１】実施の形態１に係るソフトウェア開発支援装置の構成を示すブロック図。
【図２】実施の形態１に係るソフトウェア開発支援装置のハードウェア構成の一例を示す図。
【図３】実施の形態１に係る工程定義の一例を示す表。
【図４】実施の形態１に係るシミュレーション用定義の一例を示す表。
【図５】実施の形態１に係る工程別シミュレーション用定義の一例を示す表。
【図６】実施の形態１に係る計算式定義の一例を示す表。
【図７】実施の形態１に係る作業工数予測結果の一例を示す表。
【図８】実施の形態１に係るソフトウェア開発支援装置の動作を示すフローチャート。
【図９】実施の形態１に係る結果グラフの一例。
【図１０】実施の形態１に係る作業工数予測結果の別の例を示す表。
【図１１】実施の形態１の仕組みを表す図。
【図１２】実施の形態２に係る結果グラフの一例。
【図１３】ソフトウェア開発工程Ｖ字モデルの概要を示す図。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について、図を用いて説明する。
【００２２】
実施の形態１．
本実施の形態では、前述した欠陥数予測技術のアウトプットを、前述した工数予測技術のインプットにすることで、２つの技術を組み合わせる。しかし、単に組み合わせただけでは、単一の値を算出するだけで工数効率化の検討に利用することはできない。前述したように、開発中に管理者等が制御可能な値が必要である。そこで、本実施の形態では、開発中に管理者等が制御可能な「欠陥除去率」を条件として利用し、条件に応じた工数の推移について検討するための数値を提供する。具体的には、条件をリスト化して複数用意しておき、条件に応じた工数予測値を全て（複数）算出する。算出した複数の数値は、羅列したままの状態では管理に利用できないため、条件に応じた工数の推移として、管理者等が条件の値をいくつに設定すべきか検討できるようグラフで表示する。
【００２３】
つまり、本実施の形態は、以下の２つの機能により、ソフトウェア開発時に管理者等が欠陥除去率の目標値を変化させることで工数効率化を検討できるようにするものである。
（１）条件に応じて複数の工数予測値を自動算出する自動シミュレーション機能
（２）工数予測値の推移と欠陥除去率との関係性を把握可能な形式で表示する表示機能
【００２４】
上記の２つの機能を実現するために、本実施の形態では、従来は組織で固定値とすることが常識であった欠陥除去率を条件として利用し、条件をリスト化して複数与えることで、条件に応じた工数予測値を複数算出し、条件に応じた工数の推移について検討するための数値を提供する。
【００２５】
図１は、本実施の形態に係るソフトウェア開発支援装置１００の構成を示すブロック図である。図２は、ソフトウェア開発支援装置１００のハードウェア構成の一例を示す図である。
【００２６】
図１において、ソフトウェア開発支援装置１００は、記憶部２００、設定部３００、計算部４００、出力部５００を備える。
【００２７】
図２において、ソフトウェア開発支援装置１００は、コンピュータであり、出力装置９１０、入力装置９２０、記憶装置９３０、処理装置９４０といったハードウェアを備える。ハードウェアは、ソフトウェア開発支援装置１００の各部（本実施の形態の説明において「〜部」として説明するもの）によって利用される。
【００２８】
出力装置９１０は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）等の表示装置、プリンタ、通信モジュール（通信回路等）である。出力装置９１０は、各部（「〜部」）によってデータ、情報、信号の出力（送信）のために利用される。
【００２９】
入力装置９２０は、例えば、キーボード、マウス、タッチパネル、通信モジュール（通信回路等）である。入力装置９２０は、各部（「〜部」）によってデータ、情報、信号の入力（受信）のために利用される。
【００３０】
記憶装置９３０は、例えば、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ・Ｓｔａｔｅ・Ｄｒｉｖｅ）である。記憶装置９３０には、プログラム９３１、ファイル９３２が記憶される。プログラム９３１には、各部（「〜部」）の処理（機能）を実行するプログラムが含まれる。ファイル９３２には、各部（「〜部」）によって演算、加工、読み取り、書き込み、利用、入力、出力等が行われるデータ、情報、信号（値）等が含まれる。
【００３１】
処理装置９４０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。処理装置９４０は、バス等を介して他のハードウェアデバイスと接続され、それらのハードウェアデバイスを制御する。処理装置９４０は、記憶装置９３０からプログラム９３１を読み出し、プログラム９３１を実行する。処理装置９４０は、各部（「〜部」）によって演算、加工、読み取り、書き込み、利用、入力、出力等を行うために利用される。
【００３２】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ソフトウェアのみ、ハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせで実現される。ソフトウェアは、プログラム９３１として、記憶装置９３０に記憶される。プログラム９３１は、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラム９３１は、本実施の形態の説明で述べる「〜部」の処理をコンピュータに実行させるものである。
【００３３】
図１に示すように、記憶部２００は、工程定義２０１、シミュレーション用定義２０２、工程別シミュレーション用定義２０３、計算式定義２０４、作業工数予測結果２０５の各種データを記憶する。
【００３４】
記憶部２００は、ソフトウェアに存在する欠陥の推定数を工程定義２０１の一部として、記憶装置９３０を用いて記憶する。記憶部２００は、ソフトウェアに存在する欠陥のうち設計工程で除去される欠陥の目標比率の設定間隔をシミュレーション用定義２０２の一部として、記憶装置９３０を用いて記憶する。記憶部２００は、ソフトウェアの設計工程で除去される欠陥の数と設計工程で欠陥の除去作業にかかる工数との関係を表す第１関数を工程別シミュレーション用定義２０３及び計算式定義２０４の一部として、記憶装置９３０を用いて記憶する。また、記憶部２００は、設計工程の後のテスト工程で除去される欠陥の数とテスト工程で欠陥の除去作業にかかる工数との関係を表す第２関数を工程別シミュレーション用定義２０３及び計算式定義２０４の一部として、記憶装置９３０を用いて記憶する。なお、前述したように、記憶装置９３０は、揮発性をもつＲＡＭ等であってもよいし、不揮発性をもつＨＤＤやＳＳＤ等であってもよい。即ち、工程定義２０１、シミュレーション用定義２０２、工程別シミュレーション用定義２０３、計算式定義２０４、作業工数予測結果２０５の各種データは、揮発性の記憶装置９３０に直接外部から入力されてもよいし、予め不揮発性の記憶装置９３０に保存されていてもよい。
【００３５】
本実施の形態において、第１関数は、設計工程で除去される欠陥の数と設計工程で欠陥の除去作業にかかる工数とが比例する関数である。即ち、設計工程で１つの欠陥の除去作業にかかる工数をＴ１、設計工程で除去（検出）される欠陥の数をＮ１、設計工程で欠陥（検出された全ての欠陥）の除去作業にかかる工数をＴｄとしたとき、第１関数は、Ｔｄ＝Ｎ１×Ｔ１となる。Ｎ１は計算可能であるため、記憶部２００は、第１関数のパラメータとして、Ｔ１のみを記憶すればよい。
【００３６】
本実施の形態において、第２関数は、テスト工程で除去される欠陥の数とテスト工程で欠陥の除去作業にかかる工数とが比例する関数である。即ち、テスト工程で１つの欠陥の除去作業にかかる工数をＴ２、テスト工程で除去（検出）される欠陥の数をＮ２、テスト工程で欠陥（検出された全ての欠陥）の除去作業にかかる工数をＴｔとしたとき、第２関数は、Ｔｔ＝Ｎ２×Ｔ２となる。Ｎ２は計算可能であるため、記憶部２００は、第２関数のパラメータとして、Ｔ２のみを記憶すればよい。
【００３７】
設定部３００は、シミュレーション用定義読み取り機能３０１、欠陥除去率計算機能３０２を有する。
【００３８】
設定部３００は、ソフトウェアに存在する欠陥のうち設計工程で除去される欠陥の目標比率を複数設定する。設定部３００は、目標比率を設定する処理を欠陥除去率計算機能３０２等として、処理装置９４０を用いて実行する。設定部３００は、目標比率を少なくとも２個設定すればよいが、工数の推移を把握しやすくするために、目標比率を２０個以上、より望ましくは４０個以上設定することが望ましい。また、設定部３００は、目標比率をランダムに複数設定してもよいが、工数の推移を把握しやすくするために、目標比率を下限比率から上限比率まで一定間隔で設定することが望ましい。後述する１つの例では、目標比率の設定間隔を２．５％、下限比率を０％、上限比率を１００％としているため、設定部３００は、目標比率を４１個設定することになる。後述する別の例では、目標比率の設定間隔を２．５％、下限比率を２．５％、上限比率を９０％としているため、設定部３００は、目標比率を３６個設定することになる。
【００３９】
計算部４００は、工程定義読み取り機能４０１、Ｖ字工程識別機能４０２、欠陥除去数計算機能４０３、シミュレーション計算用入力値設定機能４０４、工程別シミュレーション用定義読み取り機能４０５、計算式定義読み取り機能４０６、シミュレーション計算用入力値読み取り機能４０７、作業工数計算機能４０８、作業工数合計機能４０９、作業工数出力機能４１０を有する。
【００４０】
計算部４００は、設定部３００により設定された目標比率ごとに、記憶部２００に記憶された推定数から、記憶部２００に記憶された第１関数と第２関数とを用いて、設計工程とテスト工程とで欠陥の除去作業にかかる合計工数を計算する。計算部４００は、合計工数を計算する処理を作業工数合計機能４０９等として、処理装置９４０を用いて実行する。
【００４１】
前述したように、本実施の形態において、第１関数は、Ｔｄ＝Ｎ１×Ｔ１、第２関数は、Ｔｔ＝Ｎ２×Ｔ２である。Ｔ１は、設計工程で１つの欠陥の除去作業にかかる工数、Ｎ１は、設計工程で除去される欠陥の数、Ｔｄは、設計工程で欠陥の除去作業にかかる工数である。Ｔ２は、テスト工程で１つの欠陥の除去作業にかかる工数、Ｎ２は、テスト工程で除去される欠陥の数、Ｔｔは、テスト工程で欠陥の除去作業にかかる工数である。ここで、記憶部２００に記憶された、ソフトウェアに存在する欠陥の推定数をＮｅとする。設定部３００により設定された目標比率をＲとする。設計工程とテスト工程とで欠陥（検出された全ての欠陥）の除去作業にかかる合計工数をＴｓとする。このとき、計算部４００は、Ｎ１＝Ｎｅ×Ｒと、Ｎ２＝Ｎｅ×（１−Ｒ）とを計算し、合計工数Ｔｓ＝Ｎ１×Ｔ１＋Ｎ２×Ｔ２を計算する。Ｒは複数設定されるため、計算部４００は、それぞれのＲについて、Ｎ１、Ｎ２、Ｔｓを計算する。
【００４２】
なお、第１関数としては、Ｎ１からＴｄを求められる関数であれば、上記したようなもの以外が用いられても構わない。例えば、第１関数として、Ｎ１が多いほどＴ１が増える関数が用いられてもよい（後述する実施の形態２参照）。同様に、第２関数としては、Ｎ２からＴｔを求められる関数であれば、上記したようなもの以外が用いられても構わない。例えば、第２関数として、Ｎ２が多いほどＴ２が増える関数が用いられてもよい。
【００４３】
出力部５００は、結果グラフ作成機能５０１を有する。
【００４４】
出力部５００は、設定部３００により設定された目標比率と計算部４００により計算された合計工数との関係を示すデータを作成し、作成したデータを出力する。出力部５００は、目標比率と合計工数との関係を示す結果グラフ５０２を作成する処理を結果グラフ作成機能５０１として、処理装置９４０を用いて実行する。出力部５００は、結果グラフ５０２を、出力装置９１０を用いて表示する。なお、出力部５００は、結果グラフ５０２の代わりに、目標比率と合計工数との関係を示す一覧表等、別の形式のデータを作成して出力してもよい。
【００４５】
図３は、工程定義２０１の一例を示す表である。
【００４６】
図３において、工程定義２０１は、各ソフトウェア開発工程に対応する値（Ｖ字対応関係等）の定義表である。それぞれの値は、ユーザ（管理者等）によって設定される。表中の値は例であり、適宜変更することができる。
【００４７】
工程定義２０１は、「工程名」、「Ｖ字工程識別子」、「潜在欠陥数推定値」、「工数コスト」、「結果出力表」のカラムを有する。
【００４８】
「工程名」は、開発工程名（識別子）である。
【００４９】
「Ｖ字工程識別子」は、ソフトウェア開発工程とＶ字工程との対応関係を定義する。データ形式は任意であるが、設計工程とテスト工程とが識別できるように取り決めて運用する。図３の例では、Ｖ１−１とＶ１−２とが１対となることを表している（Ｖの直後の数値はＶ字工程を表し、ハイフンの後の１は設計工程、２はテスト工程を表す）。
【００５０】
「潜在欠陥数推定値」は、ソフトウェアに存在する欠陥の推定数である。図３では、例えば、要件定義工程でソフトウェアに混入する欠陥の推定数が１０に設定されている。
【００５１】
「工数コスト」は、各設計工程のレビュー作業又は各テスト工程の作業コスト（欠陥除去数１件あたりに必要な作業工数）である。
【００５２】
「結果出力表」は、結果の出力先を表す（表、データベース、ファイル等の識別子）。
【００５３】
図４は、シミュレーション用定義２０２の一例を示す表である。
【００５４】
図４において、シミュレーション用定義２０２は、シミュレーションに利用する値の定義表（任意の項目を定義可能）である。それぞれの値は、ユーザによって設定される。表中の値は例であり、適宜変更することができる。
【００５５】
シミュレーション用定義２０２は、「項目」、「値」のカラムを有する。
【００５６】
「項目」は、任意の項目名（識別子）である。
【００５７】
「値」は、「項目」に対する値である。図４では、ソフトウェアに存在する欠陥のうち設計工程で除去される欠陥の目標比率（欠陥除去率）の設定間隔が２．５％に設定されている。
【００５８】
図５は、工程別シミュレーション用定義２０３の一例を示す表である。
【００５９】
図５において、工程別シミュレーション用定義２０３は、工程別に定義する値の定義表である。それぞれの値は、ユーザによって設定される。表中の値は例であり、適宜変更することができる。
【００６０】
工程別シミュレーション用定義２０３は、「工程名」、「欠陥除去率」、「欠陥除去数」、「工数コスト」、「作業工数」のカラムを有する。
【００６１】
「工程名」は、ソフトウェア開発工程名（工程定義２０１の「工程名」に対応）である。
【００６２】
「欠陥除去率」は、欠陥除去率の値の格納先を示す識別子（図５の例では、「表名称．項目名」）である。
【００６３】
「欠陥除去数」は、欠陥除去数の値の格納先を示す識別子（図５の例では、「表名称．項目名」）である。
【００６４】
「工数コスト」は、工数コストの値の格納先を示す識別子（図５の例では、「表名称．項目名」）である。
【００６５】
「作業工数」は、計算部４００が算出した作業工数（予測結果）の値の格納先を示す識別子（図５の例では、「表名称．項目名」）である。
【００６６】
図６は、計算式定義２０４の一例を示す表である。
【００６７】
図６において、計算式定義２０４は、計算式の定義表である。計算式は、ユーザによって設定される。表中の式は例であり、適宜変更することができる。
【００６８】
計算式定義２０４は、「式名」、「式」、「出力先」のカラムを有する。
【００６９】
「式名」は、任意の式の名称（識別子）である。
【００７０】
「式」は、工程別シミュレーション用定義２０３の項目名を利用して記載した計算式である。
【００７１】
「出力先」は、工程別シミュレーション用定義２０３の項目名を利用して記載した計算結果の出力先である。
【００７２】
図７は、作業工数予測結果２０５の一例を示す表である。
【００７３】
図７において、作業工数予測結果２０５は、設定部３００及び計算部４００が算出した値（最終結果を含む）を格納する表である。作業工数予測結果２０５は、Ｖ字工程の数だけ存在する。本実施の形態では、Ｖ１からＶ４までの４つの工程があるため、作業工数予測結果２０５は、４つ作成される。図７に示している作業工数予測結果２０５は、Ｖ１（要件定義工程とシステムテストとのＶ字工程）に対応する表である。
【００７４】
作業工数予測結果２０５は、「欠陥除去率」、「潜在欠陥数」、「設計欠陥除去数」、「設計工数コスト」、「設計作業工数」、「テスト欠陥除去数」、「テスト工数コスト」、「テスト作業工数」、「合計作業工数」のカラムを有する。
【００７５】
「欠陥除去率」は、設計工程の欠陥除去率（目標比率）である。
【００７６】
「潜在欠陥数」は、工程定義２０１の要件定義工程の「潜在欠陥数推定値」である。
【００７７】
「設計欠陥除去数」は、「潜在欠陥数」×「欠陥除去率」で計算部４００が算出した値である。
【００７８】
「設計工数コスト」は、設計工程のレビュー作業時の作業コスト（欠陥除去数１件あたりに必要な作業工数）である。
【００７９】
「設計作業工数」は、「設計欠陥除去数」×「設計工数コスト」で計算部４００が算出した値である。
【００８０】
「テスト欠陥除去数」は、「潜在欠陥数」−「設計欠陥除去数」で計算部４００が算出した値である。
【００８１】
「テスト工数コスト」は、テスト工程のテスト作業時の作業コスト（欠陥除去数１件あたりに必要な作業工数）である。
【００８２】
「テスト作業工数」は、「テスト欠陥除去数」×「テスト工数コスト」で計算部４００が算出した値である。
【００８３】
「合計作業工数」は、「設計作業工数」＋「テスト作業工数」で計算部４００が算出した値である。
【００８４】
以下では、ソフトウェア開発支援装置１００の動作（本実施の形態に係るソフトウェア開発支援方法、本実施の形態に係るソフトウェア開発支援プログラムの処理手順）について説明する。
【００８５】
図８は、ソフトウェア開発支援装置１００の動作を示すフローチャートである。
【００８６】
図８において、Ｓ１１及びＳ１２からなる設定ステップは、図１に示した設定部３００の機能群が、欠陥除去率の算出を行うステップである。
【００８７】
Ｓ１１のシミュレーション用定義読み取り機能３０１は、シミュレーション用定義２０２の値を読み取る機能である。
【００８８】
Ｓ１２の欠陥除去率計算機能３０２は、シミュレーション用定義読み取り機能３０１で読み取った値を利用し、各工程の欠陥除去率（目標比率）を算出する機能である。欠陥除去率計算機能３０２では、欠陥除去率を０〜１００％の間でシミュレーション用定義読み取り機能３０１で指定された値の間隔で動かし、作業工数予測結果２０５の「欠陥除去率」に相当する値を全て算出する。
【００８９】
図８において、Ｓ１３〜Ｓ２２からなる計算ステップは、図１に示した計算部４００の機能群が、設定部３００で算出した欠陥除去率に応じた各Ｖ字工程の設計工程の欠陥除去数の算出と、その欠陥除去数を基にした各Ｖ字工程の作業工数の算出とを行うステップである。
【００９０】
Ｓ１３の工程定義読み取り機能４０１は、工程定義２０１の値を読み取る機能である。
【００９１】
Ｓ１４のＶ字工程識別機能４０２は、工程定義読み取り機能４０１で読み取った値のうち、「Ｖ字工程識別子」の列を読み取り、工程のＶ字対応（設計工程及び対応するテスト工程の１対１の関係と、Ｖ字の頂点）を識別する機能である。
【００９２】
Ｓ１５の欠陥除去数計算機能４０３は、設計工程について、工程定義読み取り機能４０１で読み取った「潜在欠陥数推定値」と、設定部３００の欠陥除去率計算機能３０２で算出した「欠陥除去率」との積を算出し、作業工数予測結果２０５の「設計欠陥除去数」に相当する値を算出する機能である。また、欠陥除去数計算機能４０３は、対応するテスト工程について、工程定義読み取り機能４０１で読み取った「潜在欠陥数推定値」と、算出した「設計欠陥除去数」との差を算出し、作業工数予測結果２０５の「テスト欠陥除去数」に相当する値を算出する機能である。
【００９３】
Ｓ１６のシミュレーション計算用入力値設定機能４０４は、工程定義読み取り機能４０１で読み取った値、設定部３００の欠陥除去率計算機能３０２で算出した値、欠陥除去数計算機能４０３で算出した値を出力する機能である。出力先は、工程定義読み取り機能４０１で読み取った「結果出力表」に該当する表である。シミュレーション計算用入力値設定機能４０４は、作業工数予測結果２０５の「欠陥除去率」、「潜在欠陥数」、「設計欠陥除去数」、「設計工数コスト」、「テスト欠陥除去数」、「テスト工数コスト」の値を設定する。
【００９４】
Ｓ１３〜Ｓ１６は、Ｖ字工程の数だけ繰り返し実施される。
【００９５】
Ｓ１７の工程別シミュレーション用定義読み取り機能４０５は、工程別シミュレーション用定義２０３の値を読み取る機能である。
【００９６】
Ｓ１８の計算式定義読み取り機能４０６は、計算式定義２０４の値を読み取る機能である。
【００９７】
Ｓ１９のシミュレーション計算用入力値読み取り機能４０７は、シミュレーション計算用入力値設定機能４０４で入力された作業工数予測結果２０５の値を読み取る機能である。
【００９８】
Ｓ２０の作業工数計算機能４０８は、工程別シミュレーション用定義読み取り機能４０５、シミュレーション計算用入力値読み取り機能４０７で読み取った値を定義情報として、計算式定義読み取り機能４０６で読み取った式の値を工程ごとに算出する機能である。例えば、計算式定義２０４の「出力先」である「作業工数」の値については、工程別シミュレーション用定義２０３の「工数コスト」と「欠陥除去数」に記載された値を掛け算して値を算出する。作業工数計算機能４０８では、例えば、要件定義工程について、工程別シミュレーション用定義２０３の「作業工数」の情報を基に、出力先が表「Ｖ１」の項目「設計作業工数」の列であると判断する。計算の際は、工程別シミュレーション用定義２０３の「工数コスト」と「欠陥除去数」に記載された情報を基に、表「Ｖ１」の項目「設計工数コスト」×項目「設計欠陥除去数」を計算式とすることを判断し、欠陥除去率０％から１００％までの全ての行に対して「設計作業工数」の値を算出する。
【００９９】
Ｓ２１の作業工数合計機能４０９は、作業工数計算機能４０８で算出した「設計作業工数」と「テスト作業工数」の値を合計し、「合計作業工数」を算出する機能である。要件定義工程の場合、表「Ｖ１」の項目「設計作業工数」＋項目「テスト作業工数」を計算式として、「合計作業工数」の値を算出する。
【０１００】
Ｓ２０及びＳ２１は、Ｖ字工程の数だけ繰り返し実施される。
【０１０１】
Ｓ２２の作業工数出力機能４１０は、作業工数計算機能４０８、作業工数合計機能４０９で算出した値を、作業工数予測結果２０５に対して出力する機能である。要件定義工程の場合、表「Ｖ１」の項目「設計作業工数」、「テスト作業工数」、「合計作業工数」に値を出力する。
【０１０２】
図８において、Ｓ２３からなる出力ステップは、図１に示した出力部５００の結果グラフ作成機能５０１が、結果グラフ５０２の作成を行うステップである。
【０１０３】
Ｓ２３の結果グラフ作成機能５０１は、作業工数予測結果２０５の値を利用して結果グラフ５０２を出力する機能である。結果グラフ５０２は、Ｖ字工程の数だけ出力される。
【０１０４】
図９は、結果グラフ５０２の一例である。
【０１０５】
図９において、結果グラフ５０２は、横軸（Ｘ軸）が設計工程の欠陥除去率（作業工数予測結果２０５の「欠陥除去率」）、縦軸（Ｙ軸）が自動シミュレーション機能で得られた作業工数の予測値（作業工数予測結果２０５の「設計作業工数」、「テスト作業工数」、「合計作業工数」）になっている。結果グラフ５０２は、Ｖ字工程の数だけ作成する。本実施の形態では、Ｖ１からＶ４までの４つの工程があるため、結果グラフ５０２は、４つ作成される。図８に示している結果グラフ５０２は、Ｖ２（方式設計工程と結合テストとのＶ字工程）に対応するグラフである。
【０１０６】
上記のように、結果グラフ５０２は、作業工数予測結果２０５からプロットデータを取得して作成される。管理者等は、結果グラフ５０２を参照することにより、設計工程の欠陥除去率の目標値に対する、１つのＶ字工程の総工数の推移を把握することができるため、工数効率化の検討が可能となる。
【０１０７】
本実施の形態では、作業工数予測結果２０５の「設計作業工数」、「テスト作業工数」、「合計作業工数」の算出のために、図１３に示した技術を応用している。つまり、Ｖ字工程の設計工程とテスト工程の工数コスト（欠陥を１件除去するのに必要な工数）の違いより、１つのＶ字工程での総工数が変化する仕組みを利用して工数を算出している。以下では、例を用いて、Ｖ字モデル設計工程の欠陥除去率の違いによる総工数の変化の仕組みを説明する。
【０１０８】
例えば、欠陥混入数が１００個、設計工程作業工数コストが０．５時間、テスト工程作業コストが１時間であるとする。このとき、以下のようなパターンが起こり得る。
・パターン１：設計工程で７０個除去し、テスト工程で３０個除去する場合、設計工程作業時間の推定値は、７０×０．５＝３５時間、テスト工程作業時間の推定値は、３０×１＝３０時間、合計の作業時間推定値は、３５＋３０＝６５時間となる。
・パターン２：設計工程で３０個除去し、テスト工程で７０個除去する場合、設計工程作業時間の推定値は、３０×０．５＝１５時間、テスト工程作業時間の推定値は、７０×１＝７０時間、合計の作業時間推定値は、１５＋７０＝８５時間となる。
【０１０９】
パターン１とパターン２の合計の作業時間推定値を比較すると、パターン２の方が少ない。
【０１１０】
図１０は、作業工数予測結果２０５の別の例を示す表である。
【０１１１】
以下では、さらに、値算出の仕組みを、図１０を利用して説明する（図１０は、図５の数値を変えただけのものである）。
【０１１２】
図１０において、作業工数予測結果２０５は、以下の項目（カラム）を有する（［］内には、目標の欠陥除去率（検出した欠陥を全て除去する場合、目標検出率と同義）が９０％の場合の数値を例として示している）。
・１列目：方式設計工程での目標の欠陥除去率（％）［９０％］である。
・２列目：方式設計工程における潜在欠陥数（欠陥混入数の推定値（計画値））［８８．３件］である。
・３列目：方式設計工程における目標の欠陥除去率に応じた目標欠陥除去数［８８．３件×９０％＝７９．５件］である。
・４列目：方式設計工程での欠陥除去に必要な作業工数［０．３時間］である。
・５列目：方式設計工程での作業工数［７９．５件×０．３時間＝２３．８時間］である。
・６列目：結合テスト工程で除去（検出）すべき欠陥数［８８．３件−７９．５件＝８．８件］である。
・７列目：結合テスト工程での欠陥除去に必要な作業工数［１時間］である。
・８列目：結合テスト工程での作業工数［８．８件×１時間＝８．８時間］である。
・９列目：Ｖ字対応工程全体での合計作業工数［２３．８時間＋８．８時間＝３２．７時間］である。
【０１１３】
なお、１列目の目標の欠陥除去率の数値及び数値幅は、任意である。Ｖ字工程頂点のコードレビュー工程については、６〜８列目の値をゼロとして計算する。
【０１１４】
これらの計算における特徴をまとめると、以下の通りとなる。
・Ｖ字工程ごとに算出する。
・Ｖ字工程中の設計工程とテスト工程の予測工数を合算することで、１つのＶ字工程の総工数とする。
・各数値は任意の関数から算出される数値でもよいため、総工数は関数同士の和であると言える。
【０１１５】
図１１は、本実施の形態の仕組みを表す図である。
【０１１６】
図１１において、「自動シミュレーション機能」は、図１に示した設定部３００及び計算部４００の機能群に相当し、「表示機能」は、図１に示した出力部５００の結果グラフ作成機能５０１に相当する。また、「条件リスト」、「欠陥検出数リスト」、「工数予測値リスト」は、作業工数予測結果２０５に集約される。「条件リスト」は、作業工数予測結果２０５の「欠陥除去率」に相当し、「欠陥検出数リスト」は、作業工数予測結果２０５の「設計欠陥除去数」及び「テスト欠陥除去数」に相当し、「工数予測値リスト」は、作業工数予測結果２０５の「設計作業工数」、「テスト作業工数」及び「合計作業工数」に相当する。また、「欠陥除去率と工数予測値の関係グラフ」は、結果グラフ５０２に相当する。
【０１１７】
本実施の形態の仕組みには、例えば、以下のような特徴がある。
・ソフトウェア開発時に管理可能な値である「欠陥除去率」を条件とした工数予測の仕組みを提供する。
・「欠陥除去率」を変化させることにより、複数の工数を算出する仕組みを提供する。
・Ｖ字工程における設計工程とテスト工程との欠陥除去件数の関係性を利用して工数予測値を算出し、これらを合算することにより１つのＶ字工程の総工数を得る仕組みを提供する（工数予測には関数を利用してもよいため、総工数は関数の和となる）。
・目標の欠陥除去率に応じた各工程の欠陥検出数の把握を可能とする表（作業工数予測結果２０５）を提供する。
・工数予測値の推移と欠陥除去率の関係性を把握可能な形式で表示するグラフ（結果グラフ５０２）を作成する。
【０１１８】
これらの特徴により、本実施の形態では、ソフトウェア開発時に管理者等が欠陥除去率の目標値を変化させることで工数効率化を検討できるようになる。
【０１１９】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【０１２０】
実施の形態１では、第１関数として、設計工程で除去される欠陥の数と設計工程で欠陥の除去作業にかかる工数とが比例する関数を用いるが、本実施の形態では、第１関数として、設計工程で除去される欠陥の数が多いほど設計工程で１つの欠陥の除去作業にかかる工数が増える関数を用いる。
【０１２１】
図７に示した例では、作業工数予測結果２０５の「設計工数コスト」と「テスト工数コスト」が、それぞれ「欠陥除去率」によらず、０．５と１という固定値になっている。これは、欠陥除去作業に必要な工数が欠陥除去率によらず一定であるという前提条件を適用した例である（このため、図９に示した結果グラフ５０２の線が直線になっている）。
【０１２２】
本実施の形態では、対象工程の欠陥除去率が上がるに従って欠陥検出コストが増加するというソフトウェア工学上の概念を利用して工数を予測する（各工数の数値は任意の関数から算出される数値でよい）。この概念は、次のようなものである。即ち、多くの単純な欠陥検出は欠陥除去率が低い段階で完了する。このため、欠陥除去率が上がった状態では、検出困難な欠陥の除去作業が実施される。したがって、欠陥検出に必要な工数は徐々に増え、欠陥除去率１００％に向かって作業工数は指数関数的に上がっていく。
【０１２３】
図１２は、本実施の形態に係る結果グラフ５０２の一例である。
【０１２４】
図１２に示すように、本実施の形態では、欠陥除去作業に必要な工数が欠陥除去率により指数関数的に変動するような関数が利用されるので、合計作業工数の線が曲線になっている。
【０１２５】
つまり、図１２の例では、設計工程の工数コストについて欠陥除去率によりコストそのものが変化するので、図９の例のように各工程中のコスト工数が固定の場合よりもコスト効率化に対する結果の把握がグラフ化されない場合は困難になる（最低作業時間はどの辺りかといった確認や、現状は８０％程度除去したがあと５件検出するとなると作業時間効率的に見て跳ね上がってしまわないか等、数値の羅列では確認しづらい）。このため、実施の形態１に比べて、グラフ化による視認効果がより高くなる。
【０１２６】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。例えば、これらの実施の形態の説明において「〜部」として説明するもののうち、いずれか１つのみを採用してもよいし、いずれか２つ以上の任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１２７】
１００  ソフトウェア開発支援装置、２００  記憶部、２０１  工程定義、２０２  シミュレーション用定義、２０３  工程別シミュレーション用定義、２０４  計算式定義、２０５  作業工数予測結果、３００  設定部、３０１  シミュレーション用定義読み取り機能、３０２  欠陥除去率計算機能、４００  計算部、４０１  工程定義読み取り機能、４０２  Ｖ字工程識別機能、４０３  欠陥除去数計算機能、４０４  シミュレーション計算用入力値設定機能、４０５  工程別シミュレーション用定義読み取り機能、４０６  計算式定義読み取り機能、４０７  シミュレーション計算用入力値読み取り機能、４０８  作業工数計算機能、４０９  作業工数合計機能、４１０  作業工数出力機能、５００  出力部、５０１  結果グラフ作成機能、５０２  結果グラフ、９１０  出力装置、９２０  入力装置、９３０  記憶装置、９３１  プログラム、９３２  ファイル、９４０  処理装置。
【図１】
2015156142.tif 000003
【図２】
2015156142.tif 000004
【図３】
2015156142.tif 000005
【図４】
2015156142.tif 000006
【図５】
2015156142.tif 000007
【図６】
2015156142.tif 000008
【図７】
2015156142.tif 000009
【図８】
2015156142.tif 000010
【図９】
2015156142.tif 000011
【図１０】
2015156142.tif 000012
【図１１】
2015156142.tif 000013
【図１２】
2015156142.tif 000014
【図１３】
2015156142.tif 000015