(57)【要約】【課題】新たなソフトウェア製品を開発する場合に、熟練者でなくても迅速かつ一定以上の品質を維持しながら、短い開発期間でソフトウェア製品の開発ができるよう、ソフトウェア開発を行う作業者を支援する。【解決手段】まず、ある範疇に属するソフトウェア製品の開発に必要であるとして列挙されたソフトウェアコンポーネント、開発項目、並びに要求仕様の各アイテムを記録手段に登録する。開発項目を登録する際に、その開発項目の作業を開始するために完了していなければならない他の開発項目があるときには、当該他の開発項目を指定する先後情報を併せて登録する。続いて、前記アイテム登録機能によって登録されたソフトウェアコンポーネント、開発項目、及び要求仕様の相互について、アイテム毎に作業者が関連付けを行うことを可能にし、その関連を示す関連情報を前記記録手段に登録する。【選択図】          図１
2004355326.tif 000002
【特許請求の範囲】
【請求項１】
ある範疇に属するソフトウェア製品の開発を行う作業者を支援するために、コンピュータに、少なくとも、
前記ある範疇に属するソフトウェア製品の開発に必要であるとして列挙されたソフトウェアコンポーネント、開発項目、並びに要求仕様の各アイテムを記録手段に登録するアイテム登録機能と、
前記開発項目を登録する際に、その開発項目の作業を開始するために完了していなければならない他の開発項目があるときは、当該他の開発項目を指定する先後情報を併せて登録する、先後関係登録機能と、
前記アイテム登録機能によって登録されたソフトウェアコンポーネント、開発項目、及び要求仕様の相互について、アイテム毎に作業者が関連付けを行うことを可能にし、その関連を示す関連情報を前記記録手段に登録する関連情報登録機能と、
前記ある範疇に属する特定のソフトウェア製品を開発するときに、前記要求仕様の各アイテムを作業者に提示するとともに、必要に応じて要求仕様のアイテムの追加、変更、削除を行って最終的に必要とされる要求仕様の内容の決定を促す要求仕様決定機能と、
決定された要求仕様及び前記関連情報に基づいて、前記記録手段から前記要求仕様と関連付けられたソフトウェアコンポーネントのアイテムを抽出して作業者に提示するとともに、必要に応じて抽出されたソフトウェアコンポーネントのアイテムの追加、変更、削除を行って最終的に必要なソフトウェアコンポーネントの決定を促すソフトウェアコンポーネント決定機能と、
決定されたソフトウェアコンポーネント及び前記関連情報に基づいて、前記記録手段から、関連付けられた開発項目のアイテムを抽出するとともに、前記先後情報に基づいて、作業者に対してその時点で作業を開始できる開発項目を提示する開発項目抽出機能と、
作業者が特定の開発項目の作業を開始したときは、決定された開発項目に基づいて、それぞれの時点で遂行可能な開発項目の内容を作業者に提示して作業者が行うべき作業の遂行を支援する開発作業支援機能と、
を実現させることを特徴とするソフトウェア開発支援プログラム。
【請求項２】
作業者がある開発項目の作業を行うときに、その中で実行しなければならない作業項目を列挙し、各作業項目が終了したときはそれぞれに終了した旨のマークを付すことができる機能を有し、そして、すべての作業項目にマークが付されたときに当該開発項目を終了状態とすることができる機能を有する、請求項１に記載のソフトウェア開発支援プログラム。
【請求項３】
ある範疇に属するソフトウェア製品の開発を行う作業者を支援するソフトウェア開発支援システムであって、
前記ある範疇に属するソフトウェア製品の開発に必要であるとして列挙されたソフトウェアコンポーネント、開発項目、並びに要求仕様の各アイテムを記録手段に登録するアイテム登録手段と、
前記開発項目を登録する際に、その開発項目の作業を開始するために完了していなければならない他の開発項目があるときは、当該他の開発項目を指定する先後情報を併せて登録する、先後関係登録手段と、
前記アイテム登録手段によって登録されたソフトウェアコンポーネント、開発項目、及び要求仕様の相互について、アイテム毎に作業者が関連付けを行うことを可能にし、その関連を示す関連情報を前記記録手段に登録する関連情報登録手段と、
前記ある範疇に属する特定のソフトウェア製品を開発するときに、前記要求仕様の各アイテムを作業者に提示するとともに、必要に応じて要求仕様のアイテムの追加、変更、削除を行って最終的に必要とされる要求仕様の内容の決定を促す要求仕様決定手段と、
決定された要求仕様及び前記関連情報に基づいて、前記記録手段から前記要求仕様と関連付けられたソフトウェアコンポーネントのアイテムを抽出して作業者に提示するとともに、必要に応じて抽出されたソフトウェアコンポーネントのアイテムの追加、変更、削除を行って最終的に必要なソフトウェアコンポーネントの決定を促すソフトウェアコンポーネント決定手段と、
決定されたソフトウェアコンポーネント及び前記関連情報に基づいて、前記記録手段から、関連付けられた開発項目のアイテムを抽出するとともに、前記先後情報に基づいて、作業者に対してその時点で作業を開始できる開発項目を提示する開発項目抽出手段と、
作業者が特定の開発項目の作業を開始したときは、決定された開発項目に基づいて、それぞれの時点で遂行可能な開発項目の内容を作業者に提示して作業者が行うべき作業の遂行を支援する開発作業支援手段と、
を実現させることを特徴とするソフトウェア開発支援システム。
【請求項４】
作業者がある開発項目の作業を行うときに、その中で実行しなければならない作業項目を列挙し、各作業項目が終了したときはそれぞれに終了した旨のマークを付すことができる機能を有し、そして、すべての作業項目にマークが付されたときに当該開発項目を終了状態とすることができる手段を有する、請求項３に記載のソフトウェア開発支援システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ある製品にソフトウェアとして組み込まれるプログラムの開発を行う作業者に対して当該作業者が行うべき作業の内容を提示する他、種々の方法で作業者を支援する、ソフトウェア開発支援システム及びソフトウェア開発支援プログラムに関する。
【０００２】
【従来の技術】
従来は、ある種の範疇（例えば携帯電話の範疇）に属する新たな製品を設計する場合には、その製品の形状やデザイン、使用する機構部品等の機構的な部分や電気的な部分を設計するとともに、その製品がＣＰＵなどからなる演算部を有するものである場合には、当該演算部の動作を制御するためのソフトウェア部分についても、従来のものをそのまま流用する場合を除き、新たに開発するのが一般的だった。
【０００３】
【発明が解決しようとする課題】
しかしながら、携帯電話などは、短期間に数多くの機種を市場に投入しなければならなず、その度に各製品毎に個別にソフトウェアを開発しなければならなかった。ソフトウェアの開発は、機構的な設計や電気的な設計に比べて標準化が遅れており、このため新たな製品を開発するたびに、ソフトウェア開発に熟練した開発者による開発作業が必要とされ、このため、製品開発の中で最もマンパワーを必要とする部分となっている。したがって、新たな製品を開発する場合、ソフトウェアの開発には長期間を要し、そのことが新たな製品の投入を遅らせる一つの原因となっていた。
【０００４】
本発明はこのような背景のもとでなされたものであり、その目的は、新たなソフトウェア製品を開発する場合に、熟練者でなくても迅速かつ一定以上の品質を維持しながら、短い開発期間でソフトウェア製品の開発ができるよう、ソフトウェア開発を行う作業者を支援するシステム及びそのためのコンピュータプログラムを提供することである。
【０００５】
【課題を解決するための手段】
上記の課題を解決するために、本発明は、ある範疇に属するソフトウェア製品の開発を行う作業者を支援するための、ソフトウェア開発支援プログラム及びソフトウェア開発支援システムを提供する。
【０００６】
そのために、まず、前記ある範疇に属するソフトウェア製品の開発に必要であるとして列挙されたソフトウェアコンポーネント、開発項目、並びに要求仕様の各アイテムを記録手段に登録する。前記開発項目を登録する際に、その開発項目の作業を開始するために完了していなければならない他の開発項目があるときは、当該他の開発項目を指定する先後情報を併せて登録する。続いて、前記アイテム登録機能によって登録されたソフトウェアコンポーネント、開発項目、及び要求仕様の相互について、アイテム毎に作業者が関連付けを行うことを可能にし、その関連を示す関連情報を前記記録手段に登録する。
【０００７】
前記ある範疇に属する特定のソフトウェア製品を開発するときには、前記要求仕様の各アイテムを作業者に提示するとともに、必要に応じて要求仕様のアイテムの追加、変更、削除を行って最終的に必要とされる要求仕様の内容の決定を促す。そして、決定された要求仕様及び前記関連情報に基づいて、前記記録手段から前記要求仕様と関連付けられたソフトウェアコンポーネントのアイテムを抽出して作業者に提示するとともに、必要に応じて抽出されたソフトウェアコンポーネントのアイテムの追加、変更、削除を行って最終的に必要なソフトウェアコンポーネントの決定を促す。決定されたソフトウェアコンポーネント及び前記関連情報に基づいて、前記記録手段から、関連付けられた開発項目のアイテムを抽出するとともに、前記先後情報に基づいて、作業者に対してその時点で作業を開始できる開発項目を提示する。作業者が特定の開発項目の作業を開始したときは、決定された開発項目に基づいて、それぞれの時点で遂行可能な開発項目の内容を作業者に提示して作業者が行うべき作業の遂行を支援する。
【０００８】
なお、作業者がある開発項目の作業を行うときには、その中で実行しなければならない作業項目を列挙し、各作業項目が終了したときはそれぞれに終了した旨のマークを付すことができるようにし、そして、すべての作業項目にマークが付されたときに当該開発項目を終了状態とすることができるようにしてもよい。
【０００９】
【発明の実施の形態】
以下に図面を参照しながら、本発明の実施の一形態として実現したソフトウェア開発ナビゲーションシステムについて説明する。本実施形態のソフトウェア開発ナビゲーションシステムは基本的に、コンピュータと、このコンピュータ上で実行されるコンピュータ・プログラムより構成される。すなわち、コンピュータにソフトウェア開発ナビゲーション・プログラムを搭載したものが、ソフトウェア開発支援システムである。
【００１０】
このソフトウェア開発ナビゲーションシステムの動作は、作業者の操作の面からみると、「構築モード」と「実行モード」という二つのモードに大きく分けられる。
【００１１】
本実施形態のシステムの最終的な目的は、ソフトウェア開発の経験が浅い作業者でも迅速かつ一定のレベル以上のソフトウェア製品の開発作業が可能となるように、行うべき作業や手順について作業者をナビゲートすることである。このようなナビゲーションを実行するためには、予め、そのソフトウェア製品が属する範疇のソフトウェア製品全般について、開発作業をナビゲートするのに必要な情報を集積しておく必要がある。「構築モード」は、このようなナビゲーションに必要な情報を集積するためのモードである。本実施形態では、このように特定の範疇に属するソフトウェア製品のために構築モードによって構築された情報の集積を「マスター」と呼ぶ。
【００１２】
本実施形態の一つの特徴は、特定のソフトウェア製品であるコンピュータ・プログラムを、標準化された多数のソフトウェアコンポーネントという部品に分け、新たなソフトウェア製品を開発する場合には、できる限りこれらのソフトウェアコンポーネントをそのまま利用するという点である。
【００１３】
このような標準化されたソフトウェアコンポーネントを用意する作業は、通常は構築モードにおいて行う。しかしながら、前記範疇に属する特定のソフトウェア製品を開発する場合に、必ずしもすべてを予め用意されているソフトウェアコンポーネントの組合せだけで開発できるとは限らず、ある部分については新たにコーディング作業が必要となる場合がある。その場合には、新たにコーディングされた部分についても、新しいソフトウェアコンポーネントとして登録しておき、それ以降の新たなソフトウェア製品のために利用できるようにしてある。
【００１４】
コンピュータ・プログラム或いはソフトウェアをコンポーネント化し、それらを必要に応じて組み合わせるという技術思想は以前から存在する。しかしながら、単にソフトウェアをコンポーネント化しただけだと、その数が多くなったときに、ソフトウェア開発の経験が浅い作業者にとっては、どのソフトウェアコンポーネントをどのように組み合わせて利用してよいかが分からない。そこで、本実施形態のナビゲーションシステムは、後述のように適切なソフトウェアコンポーネントを使用することができるよう作業者をナビゲートすることによって、ソフトウェア開発の経験が浅い作業者でも短時間で一定レベルのソフトウェアの開発を行えるようにする。
【００１５】
一方、「実行モード」は、前記「構築モード」において構築されたある範疇に属するソフトウェア製品のためのマスター及び予め登録されている各種の情報を利用して、実際に前記範疇に属する特定のソフトウェア製品の詳細部分の開発作業を行う作業者をナビゲートするモードである。
【００１６】
例えば、携帯電話のためのアプリケーション・プログラムを開発する場合を考えると、まず経験豊富な作業者が構築モードにおいて、携帯電話のためのアプリケーション・プログラムを開発するために必要なすべての情報をコンピュータに登録してマスターを構築する。構築されたマスターは、コンピュータのデータベースに格納される。そして、新たな携帯電話を開発することになった場合には、依頼者からその製品の仕様や各種の条件を与えられ、開発を担当する作業者は実行モードにおいて、そのような各種条件に沿うように、一つ一つの作業についてナビゲーションシステムの指示に従いながら、適切なソフトウェアコンポーネントを組み込んだり、必要な部分については実際にコーディング作業を行ってアプリケーション・プログラムを開発してゆく。
【００１７】
例えば携帯電話という範疇に含まれる製品に実装されるアプリケーション・プログラムの開発を考えると、構築モードでは、この範疇に属するアプリケーション・プログラムが備えている必要があると考えられる仕様（要求仕様）、アプリケーション・プログラムを構成するソフトウェアコンポーネント（関数、クラス、オブジェクト等）、開発担当の作業者が実行しなければならない開発項目を予め用意しておき、これらをコンピュータ上で相互に関連付けてデータベースに登録する。これが構築モードで行う作業である。すなわち、構築モードにおいては、実際にある範疇に属するソフトウェア製品の開発を行う作業者をナビゲートするために必要とされる情報を、その開発作業に先立って予め準備する。
【００１８】
ソフトウェアコンポーネントの例としては、例えば通話に関する本来の機能の他、液晶画面にカレンダーを表示させる機能、時計を表示させる機能、着信メロディーを選択する機能、住所録や電話番号を登録しておくデータベース的機能、ディジタルカメラが付随する機種の場合はそれに関する機能などを挙げることができる。携帯電話といっても、機種によってディジタルカメラ機能を有するものもそうでないものもある。また、ディジタルカメラ機能を新たに搭載する機種であっても、その他の機能については以前に開発された機種のソフトウェアコンポーネントをそのまま流用できるものもある。したがって、ユーザから要求される仕様に従って新たに開発する携帯電話にディジタルカメラ機能を搭載する場合に、そのためのソフトウェアコンポーネントが過去にない場合には新たにその機能を制御するソフトウェアを開発しなければならないが、その他の部分については既にあるソフトウェアコンポーネントを利用できるものである場合には、それをそのまま利用することができる。
【００１９】
［構築モード］
図１は、構築モードにおいて作業者自身が行う作業及びコンピュータに行わせる作業の作業手順を示したフローチャートである。
【００２０】
図２は、本実施形態のナビゲーションシステムを起動して構築モードに入ったときの基本画面である。以下の説明では、便宜上、このナビゲーションシステムを利用して、ユーザ向けに新たなナビゲーションシステムのソフトウェアそのものを構築する場合を例に挙げて説明する。
【００２１】
構築モードにおける作業は、通常は、この範疇に属するソフトウェア、すなわちナビゲーションシステムのソフトウェア開発の経験が豊富な熟練作業者、例えばＳＥ（Ｓｙｓｔｅｍ  Ｅｎｇｉｎｅｅｒ）が行う。
【００２２】
構築モードにおいてまず行うことは、その範疇に属するソフトウェアを開発する場合に必要になるだろうと考えられるソフトウェアコンポーネントと、それぞれのソフトウェアコンポーネントをシステムに実装するために必要になると考えられる開発項目を洗い出す作業である（Ｓ１０１）。このような洗い出しの作業は、通常は、当該範疇に属するソフトウェア開発に精通した熟練作業者が、従来から行われているソフトウェア開発の作業を顧みなが行う。
【００２３】
ここでソフトウェアコンポーネントとは、オブジェクト指向のプログラム言語で記述された、コンピュータにある特定の機能を実行させることができる比較的小規模のプログラムをいう。例えば、ナビゲーションシステムを開発する場合において、コンピュータの画面上に何らかの画像を表示させるビュアーを設ける場合を考えると、ビュアーを表示させるプログラムはそれだけで一つのソフトウェアコンポーネントとなりうる。
【００２４】
このとき、もし使いたいソフトウェアコンポーネントが用意されていなければ、その時点で、熟練作業者らがコーディング作業を行って、そのようなソフトウェアコンポーネントを開発し、それをデータベースに登録する。なお、ここではコーディングのためのプログラム言語として、オブジェクト指向言語に分類されるＪａｖａ（登録商標）を使うことを前提として説明するが、Ｊａｖａの場合「クラス」が、ソフトウェアコンポーネントに相当する。
【００２５】
このようにして洗い出したソフトウェアコンポーネントと開発項目の各アイテムを、図２に表紙したツリー構造の画面に列挙してゆく。列挙したアイテムは、簡単に追加、変更、削除を行うことができるようにしてあるので、最終的にどのようなアイテムを残し、それらの順番をどうするかは後に考慮すればよく、作業者は思いついたものを取り敢えずここに追加してゆけばよい。また、残されたアイテムについても、特定のナビゲーションシステムを構築するときには、それらすべてが使われるわけではなく、ユーザが希望するナビゲーションシステムの仕様に応じて必要なものが選択されので、考え得るアイテム（ここではソフトウェアコンポーネント及び開発項目のアイテム）はすべて入力しておくことが望ましい。
【００２６】
図２に示したツリーは４階層とされているが、この階層の深さは作業者が任意に決めることができる。ただし本実施形態のシステムでは、最も下の階層には開発項目のアイテムを、その一つ上の階層にはソフトウェアコンポーネントのアイテムを列挙するというルールが決められている。このルールに従って列挙することによって、ソフトウェアコンポーネントのアイテムとその下の階層に属する開発項目のアイテムは、内部的に互いに関連付けられてデータベースに記録されるようにしてある。データ同士を関連づけて記録すること自体は周知の技術であるが、ソフトウェアコンポーネントと開発項目を関連付けるという点は、本発明の特徴の一つである。
【００２７】
以上のようにな仕組みにより、ソフトウェアコンポーネントをキーとして、それに関連する開発項目を結びつけながら必要なソフトウェアコンポーネントと開発項目を洗い出すことができ、その結果、漏れを少なくでき、また、効率的に構築作業を行うことができる。ただし、ソフトウェアコンポーネントと開発項目を関連付ける方法は上述の方法には限定されず、例えば横軸にソフトウェアコンポーネント、縦軸に開発項目を列記したセルマトリックスを用意し、縦軸と横軸の対応するセルにマークを付すことによって、縦軸の開発項目と横軸のソフトウェアコンポーネント同士を内部的に関連付けるといった方法も可能である。
【００２８】
図２において、新たな項目を追加する場合は、図２に示した画面の項目追加ボタン１０をクリックする。すると、図３に示した画面が現れ、符号１１に示した欄に項目名を入力するとともに、その右側に示した「ユニット」、「ソフトウェアコンポーネント」、「開発項目」の三種類から該当する項目をクリックして選択する。選択したものが「開発項目」である場合は、図２に示したツリーの最も下の階層に追加され、選択したものが「ソフトウェアコンポーネント」である場合には、同じツリーの一つ上の階層に追加される。ここで、「ユニット」とは、「ソフトウェアコンポーネント」の一つ上の階層で、ソフトウェアコンポーネントと開発項目とを括ることのできる上位概念である。
【００２９】
図２の中程から下に一覧として列挙されている、左端に右向きの三角のアイコンが示されている各項目（一番上の項目が「ステータスよりノードにセットするアイコンの変更」）は、このナビゲーションシステムを構築するときに実行することが考えられる開発項目である。その一つ上の階層の各項目はソフトウェアコンポーネントを表している。図２の例では「Ａｉｃｏｎ」、「ＤｅａｍｏｎＡｐｉ」が、ソフトウェアコンポーネントに該当する。
【００３０】
つづいて、図２のように熟練作業者がナビゲーションシステムのマスターを構築するのに必要と考えて列挙した開発項目のそれぞれについて、図４に示すプロパティ画面において必要な情報を定義する（Ｓ１０２）。図４は、一例として、図２の上から３番目の「ジョブノードのアイコンを変更する」という開発項目についてのプロパティ画面を示している。プロパティを定義するためには、図２の画面においてプロパティを定義しようとする開発項目を作業者がクリックする。これにより図４の画面が表示されるので、ここに必要な情報を入力してゆくという態様でプロパティを定義する。
【００３１】
ここで、「ジョブノードのアイコン」とは、コンピュータ端末の画面に表示させる特定のジョブをシンボル的に表示するあるアイコンを別のアイコンに自動的に変えるようにする機能である。例えば、２月は「スキー」をイメージするアイコンだったのを、３月になると同時に自動的に「雛祭り」をイメージするアイコンに自動的に切り替わるようにする機能である。
【００３２】
図４は、「ジョブノードのアイコンを変更する」という開発項目について既に定義されて登録されたものを読み出した状態の画面であるが、最初にプロパティを定義するときは、図４の各欄は空欄となっている。この画面では、ジョブノードのアイコンを変更するという機能を備えるソフトウェアを開発する場合に、実際に開発作業を行う作業者に見せたい仕様やノウハウを、この図４の画面上に予め入力して登録しておく。
【００３３】
図４の画面そのものを実行モードで開発作業を行う作業者に見せる必要はなく、ここで入力される情報は、開発作業を行う作業者が後述の実行モードにおける作業を行う際に、その作業をナビゲートする画面において、作業者に指示を出すための情報として用いられる。
【００３４】
図４の画面において、一番上の「前タスク」とは、この開発項目「ジョブノードのアイコンを変更する」を実行するために、既に終了していることが必要な開発項目を定義する欄である。すなわち、この欄にある開発工程を入力するということは、ここに入力されている開発項目が終わっていなければ、「ジョブノードのアイコンを変更する」という開発項目を実行できないことを意味する。この欄で指定した「前タスク」は、後述の実行モードにおいて、実際に開発作業を行う作業者に対して、その段階で実行することができる具体的な開発項目を指示する情報を提示するナビゲート動作に反映される。
【００３５】
図４の例では、「前タスク」欄に「ステータスよりノードにセットするアイコンの変更」と入力されている。これは、この部分に入力された内容をコンピュータが自然文検索を実行できる環境にあることによるものであり、このコンピュータは、この内容を認識して、それがどの開発項目であるかを自動的に判定することができるようになっている。ただし、開発項目の名称そのものを入力したり、あるいは各開発項目に予め記号や番号が割り振られている場合にはその記号や番号を入力するようにしてもよい。要は、この開発項目を実行する前に完了していなければならない開発項目が特定されればよい。
【００３６】
その下の「タスク定義」という欄は、この開発項目について、それがどのような内容であるかを説明する欄である。
【００３７】
その下の「権限」という欄は、この開発項目を実行させる作業者を指定する欄である。ここでは「詳細設計者」と入力されているが、これは実際に開発作業を行う作業者、すなわちプログラマを指している。
【００３８】
その下の「チェック項目」という欄には、ここでは、「アイコンＤＢを利用できているか」という項目が登録されている。これは、開発作業を行う作業者がこのナビゲーションシステムの表示画面を見たときに、アイコンＤＢという所定のデータベースを参照しながら作業するようにとの指示を当該作業者に見せるための情報である。ここに作業者への指示として登録された内容は、最終的には後述のように、詳細設計を行う際のナビゲーション画面に反映される。実際に開発作業を行う場合には、後述のように、作業者が、このアイコンＤＢを参照して作業したときにここにチェックマークを入れることができるような画面構成となっており、ここにチェックマークが入らない限り先へ進むことができない仕組みとしてあり、詳細設計の作業者が確実にアイコンＤＢを参照するようにしている。
【００３９】
その下の「ノウハウ」という欄は、熟練作業者が、実際の開発作業を行う作業者に対してノウハウとして見せたいと考える各種資料を登録するための欄である。ここに登録される資料は、例えばワードやエクセル（いずれもマイクロソフト社の登録商標）といった文書作成用プログラムのデータファイルとしてコンピュータ内に格納されており、作業者が自己のコンピュータ端末からアクセスすることができるようになっている。「ノウハウ」欄へファイル名を登録すると、そのファイルへのアクセスに必要なパスが内部的に登録される。
【００４０】
図５は、図４の「ノウハウ」欄において、ノウハウの「カテゴリー」を指定するときに予め用意されているカテゴリーの例を示している。構築モードでナビゲーションシステムのマスターを構築する熟練作業者が、この図５の画面から、登録しようとするノウハウの該当するカテゴリーを選択すると、図４の画面の「カテゴリー」に自動的に挿入される。
【００４１】
複数の開発項目が登録され、それらのプロパティの「前タスク」欄に各開発項目の先後関係が記述されると、その情報に基づいて作業フロー図を作成することができる（Ｓ１０３）。図６及び図７は、作業フロー図の一例を示している。「前タスク」欄の情報があれば、各開発項目相互の先後関係が決まるので、このような作業フロー図をコンピュータに自動的に作成させることができる。一般には作業フロー図の全体は一画面には収まらないので、ここでは便宜上、図６、図７という二つに分けて示しているが、コンピュータ端末の画面上ではスクロールして全体を見ることができる。
【００４２】
熟練作業者は、必要なソフトウェアコンポーネント及び開発項目を洗い出す過程で、必要に応じてこの作業フロー図を表示させ、これを参照することによって、それまでに洗い出したものに足りないものはないか、無駄なものが含まれていないかなどを検討し、その検討結果に基づいて、開発項目の追加、変更、削除を行うことができる。
【００４３】
必要と考えられるソフトウェアコンポーネント及び開発項目を洗い出し、図２に示す画面においてこれらを列挙し（Ｓ１０１）、図４に示す画面を通して各開発項目のプロパティを定義したら（Ｓ１０２）、これらの情報をデータベースに登録する（Ｓ１０４，Ｓ１０５）。このようにしてデータベースに登録されたものを、本実施形態ではナビゲーションシステムの「マスター」と呼ぶ。
【００４４】
なお、図１に示したフローチャートにおいて、Ｓ１０１の「ソフトウェアコンポーネント及び開発項目の洗い出し」とＳ１０２の「開発項目のプロパティの定義」は、必ずしもこの順番に行われるとは限らず、一つの開発項目を考えた段階でそれについてプロパティを定義することもできる。また、後述のＳ１０６〜Ｓ１０８の手順についても、必ずしもこのような順番で実行しなければならないというものではない。
【００４５】
続いて、要求仕様の登録と、関連する要求仕様とソフトウェアコンポーネントとの関連付けを行う（Ｓ１０６〜Ｓ１０９）。図８は、要求仕様とソフトウェアコンポーネントとの関連づけを行うための画面である。
【００４６】
先にソフトウェアコンポーネントと開発項目の洗い出しを行ったのと同様にして、熟練作業者は構築モードにおいて、要求仕様の洗い出しを行う（Ｓ１０６）。要求仕様とは、そのソフトウェア製品のユーザが開発元に対して要求する、そのソフトウェア製品の仕様に当たるものであり、熟練作業者はユーザから要求されることが考えられる仕様を予め洗い出し、これをデータベースに登録する。その際、その要求仕様を実現することができるソフトウェアコンポーネントとの関連付けを行う。
【００４７】
ユーザからソフトウェア製品の開発が発注されたときに、熟練作業者であればその発注とともに提出された要求仕様に基づいて、自己の経験等からどのようなソフトウェアコンポーネントを使えばよいかある程度分かる。しかしながら、ソフトウェア開発経験が浅い作業者は、要求されている仕様を実現するためにどのようなソフトウェアコンポーネントを使えばよいかが自己の経験だけからは分からない場合がある。そこで、熟練作業者がその経験や知識を活用し、この構築モードにおいて、考えられ得る要求仕様の洗い出しと、洗い出した各要求仕様とそれを実現するのに必要なソフトウェアコンポーネントとの関連付けを行う。
【００４８】
図８左側の「部品名」の列には、Ｊａｖａのソフトウェアコンポーネントであるクラス名が縦に列挙されている。ここに列挙された各クラスは、図２のツリーを表示した画面で、ソフトウェアコンポーネントとして登録されているものである。すなわち、図２の画面で、ソフトウェアコンポーネントとして登録されたものは、データベースから抽出されて自動的にここに列挙される。
【００４９】
一方、その右側のＡ列の「Ｆｌｏｗ表示用」以下には、事前に考え得る要求仕様が列挙されている。これは、事前に熟練作業者によって洗い出され、必要・不必要が検討された上で最終的にシステムのデータベースに登録されたものを、抽出してここに列挙したものである。各要求仕様は、そのソフトウェア製品で実現することのできる多様な機能のうちの個々の機能と言い換えることもできる。
【００５０】
例えば三つ目の「ＮＧシミュレート」とは、ある程度まで開発が進んだが、何らかの理由で要求仕様に変更が生じ、既に完了しているある開発項目まで戻って開発作業を行うといった場合に、そこまで戻ることによって、既に作業が済んでいるどのような開発項目に影響が及ぶかをシミュレートする機能である。このような機能、すなわち要求仕様は、ユーザによって必要とする場合と必要としない場合がある。したがって、この機能を採用するかどうかは、このナビゲーションシステムを発注したユーザの意思によって変わりうる。
【００５１】
再び図８右側のスプレッドシートに戻って説明する。このスプレッドシートは全体としてマトリックスとなっており、Ａ列には縦に要求仕様が列挙され、第２行には横方向に左側の「部品名」列に列挙されたクラスが列挙されている。
【００５２】
図８の画面では、「部品名」列の「ＰｖＡｐｉ」というクラスを選択した状態となっいてる。一方、右側のスプレッドシートの第３列を見ると、ここにも同じ「ＰｖＡｐｉ」が表示され、これを縦に見てゆくと、「Ｆｌｏｗ表示用」及び「Ｆｌｏｗ表示編集用」という二つの要求仕様のセルに丸印が付されている。これは、「Ｆｌｏｗ表示用」という要求仕様と「ＰｖＡｐｉ」というクラス、「Ｆｌｏｗ表示編集用」という要求仕様と「ＰｖＡｐｉ」というクラスがそれぞれ関連づけられたことを示している。すなわち、「ＰｖＡｐｉ」というクラスを使えば、「Ｆｌｏｗ表示用」及び「Ｆｌｏｗ表示編集用」という二つの要求仕様を実現できることを知っている熟練者が、その知識に基づいて、「Ｆｌｏｗ表示用」及び「Ｆｌｏｗ表示編集用」という二つの要求仕様と「ＰｖＡｐｉ」というソフトウェアコンポーネントとを関連付けるたものである。このように、所定欄に丸印を付けるという、視覚的に非常に分かりやすい方法で、要求仕様とソフトウェアコンポーネントとを関連づけることができる。以下、同様にして要求仕様とソフトウェアコンポーネントの間で関連づけを行っゆく。
【００５３】
図８までの作業を行うことによって、ナビゲーションシステムという範疇に属するソフトウェアの開発に必要と考えられるソフトウェアコンポーネント、開発項目、要求仕様が洗い出され、さらにソフトウェアコンポーネントと開発項目との関連付け、要求仕様とソフトウェアコンポーネントとの関連づけが行われたことになる。以上が構築モードにおいて行う作業であり、このような作業を行うことによって、ある範疇に属するソフトウェア製品のマスターが構築される。
【００５４】
図９以降は、構築モードにおいて構築されたマスターを活用して、実際にソフトウェア製品の開発を行う実行モードについての説明である。図９の画面において行う作業は、この実施形態の例では実行モードに属するが、実際の詳細に亘る開発作業に先立って行う作業であって、通常はある程度の経験を有する熟練作業者が行う。
【００５５】
図９のスプレッドシートにおいて、「設計規格名」という列には、要求仕様が列挙されている。これは、ナビゲーションシステムを構築するときに熟練作業者が必要と考えて構築モードにおいて列挙したものであり、図８のＡ列に列挙されているものと同じである。作業者は、これらの各要求仕様について、必要なデータを入力してゆくという仕方で実行モードの作業を行う。ここで行う具体的な作業は、例えば作業者がソフトウェア製品を発注したユーザとその製品についての打ち合わせを行いながら遂行する。
【００５６】
本実施形態のナビゲーションシステムでは、実行モードにおいて過去に同じ範疇に属する別のソフトウェア製品を開発した際のデータを参照することと、過去に開発した同じ範疇に属する別の製品のデータを流用することができるようにしてある。図９において「参考機種１」の欄に「ｏｒｄｅｒ０２０７２１３０」、「参考機種２」の欄に「ｏｒｄｅｒ０２０７２１３０」とあるのは、これらの機種用に開発されたソフトウェア製品における要求仕様の内容を参考として表示することを示している。一方、「流用機種」の欄に「ｏｒｄｅｒ０２０７２１３０」とあるのは、この機種用に開発されたソフトウェア製品がこれから開発するソフトウェア製品に一番近いと考えて、そこでなされた要求仕様の内容の多くを流用することを目論んで表示させたものである。その下の「参考値１」、「参考値２」、「流用値」という各列は、これらの機種のために過去に開発されたソフトウェア製品の要求仕様の内容である。なお、ここでは説明の都合上、例として挙げた三つの機種はすべて同じものを用いているが、実際には多くの場合これらは異なっている。
【００５７】
例えば、「設計規格名」列一番上の「Ｆｌｏｗ表示用」のところを見ると、いずれの機種も「必要」となっている。また、「設計規格名」列の上から五番目の「ＮＧ実績ありタスク一覧表示」のところを見ると、いずれの機種も「不要」となっている。ここでは、このような「必要」又は「不要」という値を作業者が入力してゆくという作業を行う。
【００５８】
図９に表示されている設計規格名の各データは、たまたますべて「必要」又は「不要」という内容であるが、設計規格名によっては、具体的な数値を入力してゆくのものもある。例えば、仕様によっては何人のユーザが同時使用するかでソフトウェアの内容が変わる場合があるので、想定される同時使用の人数をデータとして入力するしたり、使い勝手を優先するかレスポンスの速さを優先するかを選択するという態様でデータを入力する場合もある。
【００５９】
なお、ユーザとの打ち合わせの際に、これまでには存在しなかった全く新しい要求仕様が出されることが考えられる。その場合には、後にその仕様を実現するためのソフトウェアコンポーネントを熟練作業者が開発し、構築モードにおいてそのソフトウェアコンポーネントとこれに関連する要求仕様を登録し、図８の画面において関連づけを行う、というような作業を行うこともできる。この場合、次に新たな製品で同じ仕様がユーザから要求されたときは、過去に開発されたその同じソフトウェアコンポーネントを利用して新たなソフトウェア製品に組み込むことが可能になる。このようなことを積み重ねることによって、マスターの適用範囲が広がり、そのことが開発作業における作業効率の向上に寄与する。
【００６０】
図１０は、図９の画面で、「必要」とされた設計規格名（要求仕様）と関連づけられたソフトウェアコンポーネントが、図８の画面において設定された関連付け情報に基づいてデータベースから抽出され、表示された状態を示している。すなわち、ユーザから今回開発するソフトウェア製品についての必要仕様が提示され、その情報を図９の画面において「必要」、「不必要」等のデータという情報として入力してゆくだけで、今回の新たなソフトウェア製品の開発に必要とされる部品が図１０に示すように抽出される。開発担当の作業者は、ここで抽出されたソフトウェアコンポーネントのすべてを利用するかどうか、別のソフトウェアコンポーネントを追加するかどうかなどを検討し、最終的に使用するソフトウェアコンポーネントを決定する必要があるが、従来と比べると、使用するソフトウェアコンポーネントの決定が容易になる。そして、開発を担当する作業者は、ここで決められたソフトウェアコンポーネントを利用しながら、効率よくソフトウェア製品の開発作業を遂行することができる。
【００６１】
本実施形態のナビゲーションシステムは、これまでに得られた情報に基づいて図１１に示す作業フロー図をコンピュータに自動作成させることができる。図１１において、横軸は開発工程の時間の経過を示している。
【００６２】
図１１の作業フロー図は、図６、図７の作業フロー図と類似しているが、すべての開発項目が含まれたマスターの作業フロー図である図６、図７とは異なり、図１１は、今回開発するソフトウェア製品（すなわち特定のナビゲーションシステム）の開発工程の流れを示した作業フロー図である。すなわち、図１１の作業フロー図では、図６、図７に示されているいるすべての開発項目の中から図９までの作業で抽出され、抽出されたもののプロパティにおける「前タスク」欄の情報に基づいて、全体の作業の流れを示すように表示される。最終的な開発を行う作業者は、この作業フロー図を見ることによって、現在自分が実行することができる作業を視覚的に認識することができるだけでなく、自分が現在行っている作業が全体の開発作業の中でどこに位置するのかを把握するのにも役立つ。
【００６３】
以上で、実行モードにおける前半の作業は終了する。ここまでで得られた情報は、ネットワークを介して、実際に実行モードの後半の作業、すなわち具体的な開発作業を行う作業者に送られる。プログラマは、これまでに得られた情報に基づいて一つ一つ開発項目を実行する。
【００６４】
図１２は、実際に開発を行う経験の浅い開発作業を行う際に見る画面であり、ここに作業者が行わなければならない開発項目（タスク）の一覧が表示される。図では分かりにくいが、実際の端末画面上では、Ｎｏ．３１とＮｏ．３３〜３６の行が例えば青色で表示され、それ以外が黒で表示されている。これは、前者は現時点で実行可能な開発項目であり、後者は現時点では実行できない開発項目であることを示している。なお、図１２は、実行すべき開発項目全体のうちの一部のみを表示しており、一般にはこれよりもずっと多くの開発項目が存在する。図１２の画面に表示されていない開発項目は、画面をスクロールすることによって参照することができる。
【００６５】
図１２の開発項目一覧は図１１に示した作業フロー図と一対一に対応しており、相互に画面表示を簡単に切り替えることができる。作業者は、図１２の青色で表示された開発項目の中からいずれかを選択してクリックすることで、その開発項目の作業を開始したことをコンピュータに知らせる。
【００６６】
図１３は、一例として、開発項目一覧から「タスク追加メソッドを実装」という開発項目を選択したときに現れる画面を示している（ただしこの開発項目は、図１２に表示された範囲には含まれていない）。これを選択したプログラマは「タスク追加メソッドを実装」するための開発作業を別の端末上で実行する。
【００６７】
図１３の画面中程の「ナレッジリスト」欄には、図４に一例を示したタスクのプロパティ画面のうちの「ノウハウ」の部分に、構築モードの担当者が指定したファイル一覧が表示される。ここには、これらのファイルが格納されているパスも登録されているので、図１３の画面上で例えば「ＰＳ画面一覧．ｘｌｓ」というファイルをクリックすると、このファイルタイプと関連づけられているエクセルが起動し、このファイルが読み込まれて表示される。その下の「ＪｍｅｎｕＩｔｅｍ．ｈｔｍｌ」というファイルをクリックすると、このファイルタイプと関連付けられているインターネットエクスプローラ（マイクロソフトの商標）が起動し、このファイルが読み込まれて表示される。
【００６８】
図１４は、上記の「ＪｍｅｎｕＩｔｅｍ．ｈｔｍｌ」というファイルをクリックしたときに現れた画面を示している。これは、いわゆる「クラス図」と呼ばれるもので、ここに、「タスク追加メソッドを実装」というプログラミング作業の際に使うクラスが示されている。担当作業者は、ここに表示される指示に従ってここに示されたクラスをソフトウェアコンポーネントとして使って作業を遂行する。このクラス図で、一番下の「ｊａｖａｘ．ｓｗｉｎｇ．ＪＭｅｎｕＩｔｅｍ」を指定することによって、この端末とは別に用意されたコンピュータ端末上で開発ツールが起動され、そこにこのクラスのコードが表示されるようにしてある。このようにして簡単に「タスク追加メソッドを実装」という機能を実現するソフトウェアを実現することができる。したがって、経験の浅い作業者（プログラマ）であっても、一定以上の品質で開発作業を迅速に行うことが可能となる。
【００６９】
図１３の「ナレッジリスト」欄の下の「実績ファイル一覧」という欄は、過去にこの開発項目を実行して実際に開発されたソフトウェア製品のファイルを一覧表示する欄である。ただし、図１３の例では、過去の実績がないので空欄になっている。
【００７０】
その下の「チェックリスト」欄は、図４のプロパティ画面の「チェック項目」に入力された情報に基づいて構成されている。作業者は、ここに列挙された各項目すべてについて作業を行わなければならない。一つ一つの項目の作業が終わるごとに、作業者は図１３の画面右上のマーク３０をクリックしてここでの作業を終了した旨をコンピュータに知らせる。そして、チェック項目の右側に設けられたチェック欄のすべてにチェックマークが入っていないと、この開発項目を終了することができず、先へ進めないようになっている。
【００７１】
一方、すべてにチェックマークが入って作業者がマーク３０をクリックすると、この開発項目は終了したことになり、図１５に示した画面が現れる。ここで、作業者が「了解」ボタンをクリックすると、ここでの開発項目が終了した旨が登録される。このとき、この開発項目で得られた実際のデータが登録される他、誰がどの開発項目を何時から何時まで実行したかという労務管理用のデータも併せて登録される。この作業で得られたデータは、これ以降、実績データとして活用することができるようになる。
【００７２】
図１６は、図１１と同じ作業フロー図ではあるが、一つの開発項目が終了することによって、その表示が変化すること示している。すなわち、ここにその作業が終了したことを、その開発項目を示すアイコンの色を変えることによって表す。また、すでに完了した作業タスと、まだ完了していない開発項目、そして現在誰かが実行中の開発項目が、それぞれ一目で分かるように、異なる表示色、あるいは点滅の有無等で表示される。これにより、全体の作業の進捗状況が視覚的に直ちに把握できる。
【００７３】
一つの開発項目の作業が終了すると、そのことは図１２に示した開発項目一覧に反映され、図１２の対応する開発項目の「状態」フィールドが「設計終了」となり、同時にその行の表示色が変化する。
【００７４】
図１７は、前述の「ＮＧシミュレート」、すなわち、詳細設計における作業がある程度まで進んだ段階で、何らかの理由により要求仕様に変更が生じたために、既に終わっている作業をある段階まで遡って再度作業を行う必要が生じた場合に、当該ある段階まで戻ることによって、既に完了している開発項目に及ぶ影響をシミュレートする機能を示した図である。
【００７５】
図１７において、符号１２１，１２２，１２３で示した三つの開発項目は既に一応完了しているが、作業を進めていく途中で、符号１２１で示した開発項目に仕様変更が生じたとする。そこで、作業者が、符号１２１で示す開発項目のアイコンを右クリックし、そこに現れるいくつかの選択肢の中から「ＮＧシミュレート」を選択すると、この１２１で示す開発項目と、この開発項目が仕様変更を受けることによって影響を受ける開発項目１２２及び１２３のアイコンが赤い色に変化する。
【００７６】
このような動作は、図４に示したプロパティ定義の画面において「前タスク」の項目に前タスクとして指定した情報に基づいて行うことができる。これによって、作業者は、符号１２１で示す開発項目に仕様変更が生じることによって、開発項目１２２，１２３についても改めて作業を行わなければならないことを視覚的に把握することができるとともに、その他の開発項目については改めて作業を行う必要がないことを直ちにに知ることができる。そして、作業者は、赤い色に変わった三つの開発項目１２１，１２２，１２３について、変更後の仕様に応じて再度作業を実行する。
【００７７】
本実施形態のナビゲーションシステムは、実行モードの作業を実際に行う複数の作業者が各自のコンピュータ端末上で共有することができ、それぞれに担当が振り分けられた各開発項目を実行しながら、共同で一つのソフトウェア製品を開発するこができる。全体としてどこまで作業が進んだかや、そのときに自分が取り掛かることのできる開発項目は、図１１の作業フロー図や図１２の一覧表示を見れば直ちに把握されるので、複数の作業者が同じ開発項目について重複して作業を行うといった無駄も排除できる。
【００７８】
そして、図１２に示したすべての開発項目が完了すれば、このソフトウェア製品の開発は終わったことになり、あとは、通常の方法でそれぞれの製品に実装する。
【００７９】
【発明の効果】
以上説明したように、本発明によれば、構築モードにおいて、熟練作業者がソフトウェア製品の開発に必要とされる情報を容易に蓄積することが可能となり、また、必要な情報同士を容易に関連づけることが可能となり、これによってある範疇に属するソフトウェア製品を開発するために必要な情報（マスター）を構築することができる。そして、実行モードにおいては、構築モードで構築されたマスターを利用して、作業者の作業内容をナビゲートするので、このナビゲーション動作に従って作業することによって、ソフトウェア開発の経験が浅い作業者であっても、迅速かつ一定以上の品質を維持しながらソフトウェア製品の開発を行うことが可能となる。
【図面の簡単な説明】
【図１】構築モードにおいて作業者自身が行う作業及びコンピュータに行わせる作業の作業手順を示したフローチャートである。
【図２】実施の形態のナビゲーションシステムを起動して構築モードに入ったときの基本画面である。
【図３】図２のツリーに表示された項目に新たな項目を追加する操作を行った場合に現れる画面である。
【図４】ある開発項目のプロパティを登録するためのプロパティ画面を示している。
【図５】図４の「ノウハウ」欄において、ノウハウの「カテゴリー」を指定するときに予め用意されているカテゴリーの例を示している。
【図６】構築モードにおいて得られる作業フロー図の一例を示す図である。
【図７】構築モードにおいて得られる作業フロー図の一例を示す図である。
【図８】要求仕様とソフトウェアコンポーネントとの関連づけを行うための画面を示した図である。
【図９】実行モードにおいて、要求仕様を決定する作業を行う画面を示した図である。
【図１０】図９の画面で、「必要」とされた設計規格名（要求仕様）と関連づけられたソフトウェアコンポーネントが、図８の画面において設定された関連付け情報に基づいてデータベースから抽出され、表示された状態を表示する画面の図である。
【図１１】それ以前の作業で得られた情報に基づいてコンピュータに作成させた作業フロー図を示した図である。
【図１２】作業者が行わなければならない開発項目の一覧を表示させた画面の図である。
【図１３】図１２の一覧の中から特定の開発項目を選んだときに表示される画面を示した図である。
【図１４】いわゆるクラス図の一例を示した図である。
【図１５】ある開発項目の作業を終了したときに現れる画面を示した図である。
【図１６】作業フロー図において、一つの開発項目が終了することによって変化する色の表示の様子を示した図である。
【図１７】「ＮＧシミュレート」の機能を説明するための図である。
【図１】
2004355326.tif 000003
【図２】
2004355326.tif 000004
【図３】
2004355326.tif 000005
【図４】
2004355326.tif 000006
【図５】
2004355326.tif 000007
【図６】
2004355326.tif 000008
【図７】
2004355326.tif 000009
【図８】
2004355326.tif 000010
【図９】
2004355326.tif 000011
【図１０】
2004355326.tif 000012
【図１１】
2004355326.tif 000013
【図１２】
2004355326.tif 000014
【図１３】
2004355326.tif 000015
【図１４】
2004355326.tif 000016
【図１５】
2004355326.tif 000017
【図１６】
2004355326.tif 000018
【図１７】
2004355326.tif 000019