(57)【特許請求の範囲】
【請求項１】
データベース、インターフェースおよびプロセッサを含むシステムにおいて、前記データベースに記憶された複数のコード要素および外部から獲得される複数の要件を有するアプリケーション開発プロジェクトの完全性を監視する方法であって、
前記プロセッサが、複数の追跡可能性リンクであって、それぞれが前記アプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンにおける前記複数のコード要素のうちの特定のコード要素と、前記複数の要件のうちの１つとの間にあり、前記複数の追跡可能性リンクそれぞれに関して、第１の強度を計算するステップと、
前記プロセッサが、前記現在のソフトウェア・コード・バージョンからの前記特定のコード要素に対する修正を含む新たなソフトウェア・コード・バージョンにおける前記複数の追跡可能性リンクそれぞれに関して、第２の強度を計算するステップと、
前記プロセッサが、個々の前記第２の強度と前記第１の強度との間の差分に基づき、不整合性通知を生成するステップと、
を方法。
【請求項２】
前記プロセッサが、前記複数の追跡可能性リンクを自動的に特定するために、前記アプリケーション開発プロジェクトと、前記複数の要件とを解析するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記インターフェースが、前記複数の追跡可能性リンクを示す手動入力をユーザから受領するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記方法は、前記プロセッサが、不整合性通知閾値を提供するステップをさらに含み、前記生成するステップは、前記差分が前記不整合性通知閾値よりも大きければ前記不整合性通知を生成するステップを含む、請求項１に記載の方法。
【請求項５】
前記方法は、前記プロセッサが、相関閾値を提供するステップをさらに含み、前記新たなソフトウェア・コード・バージョンは、新たな要件を含み、前記生成するステップは、前記特定のコード要素と前記新たな要件との間のさらなる追跡可能性リンクの第３の強度を計算するステップを含み、前記生成するステップは、前記第３の強度が前記相関閾値を超過すれば実行される、請求項１に記載の方法。
【請求項６】
前記不整合性通知は、前記新たな要件と、前記複数の要件のうちの少なくとも１つとの間の矛盾を示す、請求項５に記載の方法。
【請求項７】
前記計算するステップは、前記特定のコード要素の意味解析に従って実行される、請求項１に記載の方法。
【請求項８】
前記計算するステップは、前記複数の要件の意味解析に従って実行される、請求項１に記載の方法。
【請求項９】
前記現在のソフトウェア・コード・バージョンおよび前記新たなソフトウェア・コード・バージョンは両方とも、共通のデータベースに記憶され、ユーザと、前記データベース内のレコードの自動解析とのうちの少なくとも一方により選択される、請求項１に記載の方法。
【請求項１０】
第１の強度を前記計算するステップ、第２の強度を前記計算するステップ、および前記生成するステップは、前記アプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンおよび新たなソフトウェア・コード・バージョンにおける複数のコード要素それぞれに関して実行される、請求項１に記載の方法。
【請求項１１】
請求項１乃至１０のいずれか１項に記載の方法の前記ステップすべてを実行するのに適した手段を含むシステム。
【請求項１２】
コンピュータに、請求項１乃至１０のいずれか１項に記載の方法の前記ステップすべてを実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、その一部の実施形態において、ソフトウェア開発に関し、特に、これに限った訳ではないが、要件もしくはコード要素またはその両方の完全性を監視することに関する。
【背景技術】
【０００２】
大規模なソフトウェア開発プロジェクトでは、要件と、コードにおける要件の実装とについて、現状が分からなくなりがちである。或る要件が実装された後もコードは進化し続け、その要件をサポートする論理が変更または削除されることもある。そうしたソフトウェア開発プロジェクトでは、製品文書の要件などの要件と、ソース・コードまたはソース・コードの高水準表現とをリンクするために、追跡可能性リンクが使用され得る。ソース・コードと要件との間に追跡可能性リンクがあることは、影響解析、プログラム理解、および高品質システムの要件保証を含む様々なソフトウェア保守タスクの実行を促進する。これらのリンクは、オブザーバまたはテキスト解析モジュールにとって、特定の関数またはクラスがプログラム内に存在する理由の説明に役立つ。
【０００３】
この数年間に、多様なシステムおよび方法が開発された。例えば、特許文献１は、ソース・コードと、ソフトウェア・システムのビジネス要件との間に確立される結合について記載している。ビジネス要件を反映するユーザ指定のキーワードが、オントロジおよびシソーラスを使用して拡大される。ユーザ指定のキーワードの増大したリストが、自動的にアノテーションされたソース・コードと照合される。照合の結果はソース・コードの呼び出しグラフとともに使用されて、ソース・コードからビジネス論理へのマッピングを提供するワークフローが生成される。
【０００４】
特許文献２は、基礎をなすコード要素にプロジェクトの要件が関連付けられることを可能にする多様な技術およびテクニックを記載している。特定のソフトウェア・プロジェクトが解析され、その特定のソフトウェア・プロジェクトに含まれるコード要素のリストが生成される。１つ以上のプロジェクト要件をコード要素の１つ以上に関連付けるために、要件管理アプリケーションのユーザから入力が受領される。プロジェクト要件と、１つ以上のコード要素との関連付けとが、後から取得するためにデータ・ストアに記憶される。これらの関連付けは、プロジェクト要件に影響する可能性のある変更が、基礎をなすコード要素に対して加えられた場合を判断するために使用される。ソフトウェア開発アプリケーションは、データ・ストアと相互に作用し、ソフトウェア・プロジェクトの特定のコード要素に対する変更が１つ以上のプロジェクト要件に影響を与えることになるという通知をソフトウェア開発アプリケーションのユーザに提供するよう動作可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７，６４０，５３２号
【特許文献２】米国特許出願公開第２００８／０２６３５０４号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、大規模なソフトウェア開発プロジェクトでは、依然として、要件と、コードにおける要件の実装とについて、現状が分からなくなりがちである。或る要件が実装された後もコードは進化し続け、その要件をサポートする論理が変更または削除されることもある。
【課題を解決するための手段】
【０００７】
本発明の一部の実施形態によれば、複数のコード要素および複数の要件を有するアプリケーション開発プロジェクトの完全性を監視する、コンピュータ化された方法が提供される。本方法は、アプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンにおける複数のコード要素のうちの特定のコード要素と、複数の要件のうちの１つとの間にそれぞれある複数の追跡可能性リンクそれぞれに関して、第１の強度を計算するステップと、現在のソフトウェア・コード・バージョンからの特定のコード要素に対する修正を含む新たなソフトウェア・コード・バージョンにおける複数の追跡可能性リンクそれぞれに関して、第２の強度を計算するステップと、個々の第２の強度と第１の強度との間の差分に基づき、不整合性通知を生成するステップと、を含む。
【０００８】
任意選択で、本方法は、複数の追跡可能性リンクを自動的に特定するために、アプリケーション開発プロジェクトと、複数の要件とを解析するステップをさらに含む。
【０００９】
任意選択で、本方法は、複数の追跡可能性リンクを示す手動入力をユーザから受領するステップをさらに含む。
【００１０】
任意選択で、本方法は、不整合性通知閾値を提供するステップをさらに含み、生成するステップは、差分が不整合性通知閾値よりも大きければ不整合性通知を生成するステップを含む。
【００１１】
任意選択で、本方法は、相関閾値を提供するステップをさらに含み、新たなソフトウェア・コード・バージョンは、新たな要件を含み、生成するステップは、特定のコード要素と新たな要件との間のさらなる追跡可能性リンクの第３の強度を計算するステップを含み、生成するステップは、第３の強度が相関閾値を超過すれば実行される。
【００１２】
さらに任意選択で、不整合性通知は、新たな要件と、複数の要件のうちの少なくとも１つとの間の矛盾を示す。
【００１３】
任意選択で、計算するステップは、特定のコード要素の意味解析に従って実行される。
【００１４】
任意選択で、計算するステップは、複数の要件の意味解析に従って実行される。
【００１５】
任意選択で、現在のソフトウェア・コード・バージョンおよび新たなソフトウェア・コード・バージョンは両方とも、共通のデータベースに記憶され、ユーザと、データベース内のレコードの自動解析とのうちの少なくとも一方により選択される。
【００１６】
任意選択で、第１の強度を計算するステップ、第２の強度を計算するステップ、および生成するステップは、アプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンおよび新たなソフトウェア・コード・バージョンにおける複数のコード要素それぞれに関して実行される。
【００１７】
本発明の一部の実施形態によれば、複数のコード要素および複数の要件を有するアプリケーション開発プロジェクトの監視のためのシステムが提供される。システムは、プロセッサと、追跡可能性リンク強度モジュールであって、アプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンにおける複数のコード要素のうちの特定のコード要素と複数の要件のうちの１つとの間にそれぞれある複数の追跡可能性リンクそれぞれに関する第１の強度、および現在のソフトウェア・コード・バージョンからの特定のコード要素に対する修正を含む新たなソフトウェア・コード・バージョンにおける複数の追跡可能性リンクそれぞれに関する第２の強度を計算するために、プロセッサを使用する、追跡可能性リンク強度モジュールと、第２の強度と第１の強度との間の差分に基づき不整合性通知を生成する警報モジュールとを含む。
【００１８】
任意選択で、システムは、複数の追跡可能性リンクを特定するために、複数の要件および複数のコード要素にアクセスするインターフェースをさらに含む。
【００１９】
さらに任意選択で、インターフェースは、複数の要件をソフトウェア開発ワークスペースから受領する。
【００２０】
任意選択で、システムは、複数の追跡可能性リンクを自動的に特定するために、複数の要件および複数のコード要素を解析する、追跡可能性リンク特定モジュールをさらに含む。
【００２１】
本発明の一部の実施形態によれば、複数のコード要素および複数の要件を有するアプリケーション開発プロジェクトにおける要件の矛盾を特定する、コンピュータ化された方法が提供される。本方法は、相関閾値を提供するステップと、アプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンにおける特定のコード要素と複数の要件のうちの１つとの間にそれぞれある、複数の追跡可能性リンクを提供するステップと、アプリケーション開発プロジェクトの新たなソフトウェア・コード・バージョンにおける特定のコード要素と少なくとも１つの新たな要件との間の新たな追跡可能性リンクを特定するステップと、新たな追跡可能性リンクに関して強度を計算するステップと、強度が相関閾値を超過すれば、要件の矛盾を示す通知を生成するステップとを含む。
【００２２】
任意選択で、相関閾値は、ユーザにより手動でセットされる。
【００２３】
別途定義されない限り、本願明細書で使用される技術用語もしくは科学用語またはその両方はすべて、本発明の関連技術分野の当業者が普通に理解するのと同じ意味を有する。本発明の実施形態の実施またはテストでは、本願明細書に記載されるものと類似した、または等価な方法および物質を使用できるが、以下では例示の方法もしくは物質またはその両方について記載する。矛盾が生じた場合には、定義を含め、この特許明細書が優先する。さらに、物質、方法、および例は説明のためのものにすぎず、必ずしも限定として意図されていない。
【００２４】
添付の図面を参照して、本発明の一部の実施形態が本願明細書に単なる例として記載される。図示される項目は例としてのものであり、本発明の実施形態の説明的な議論のためのものであるということを、以下、図面を具体的に詳しく参照するにあたり強調しておく。この関連で、図面と併せて理解される記載は、本発明の実施形態がどのように実施され得るかを当業者に対して明らかにする。
【図面の簡単な説明】
【００２５】
【図１】本発明の一部の実施形態による、要件の完全性を監視する方法のフローチャートである。
【図２】本発明の一部の実施形態による、要件の完全性を監視するシステムのソフトウェア・コンポーネントおよびハードウェア・コンポーネントの関係ビューである。
【図３】本発明の一部の実施形態による、アプリケーション開発プロジェクトにおけるコード要素と要件とを結合する追跡可能性リンクの強度を測定するためのプロセスのフローチャートである。
【図４】例示のアプリケーション開発プロジェクトからのコード要素を提示するツールのスクリーンショットを示す。
【図５】例示のアプリケーション開発プロジェクトからのコード要素を提示するツールのスクリーンショットを示す。
【図６】例示のアプリケーション開発プロジェクトからのコード要素を提示するツールのスクリーンショットを示す。
【図７】本発明の一部の実施形態による、例示のアプリケーション開発プロジェクトの現在のソフトウェア・コード・バージョンにおける追跡可能性リンクの強度と、例示のアプリケーション開発プロジェクトの新たなソフトウェア・コード・バージョンにおける同じ追跡可能性リンクの強度との照合の概略図である。
【図８】本発明の一部の実施形態による、追跡可能性リンクの強度に基づいてアプリケーション開発プロジェクトのソフトウェア・コード・バージョン間の矛盾する要件を特定することのフローチャートである。
【図９】本発明の一部の実施形態による、矛盾する要件の特定と、要件の完全性の監視とを組み合わせるプロセスの概略図である。
【発明を実施するための形態】
【００２６】
本発明は、その一部の実施形態において、ソフトウェア開発に関し、特に、これに限った訳ではないが、要件もしくはコード要素またはその両方の完全性を監視することに関する。
【００２７】
本発明の一部の実施形態によれば、アプリケーション開発プロジェクトのソフトウェア・コード・バージョン間の、１つ以上の追跡可能性リンクの強度における変化を検出することにより、複数の要件を有するアプリケーション開発プロジェクトの完全性を監視する方法およびシステムが提供される。
【００２８】
例えば、本方法は、アプリケーション開発プロジェクトのいくつかのソフトウェア・コード・バージョンそれぞれにおける、コード要素間の複数の追跡可能性リンクの１つ１つの強度を計算すること、およびソフトウェア・コード・バージョン間の、１つ以上の追跡可能性リンクの強度における変化を検出することに基づく。差分とも呼ばれるこの変化に基づき、１つ以上の不整合性通知が生成され、例えばメッセージとしてソフトウェア開発ワークスペースのユーザに対して提示されるなど、出力されてもよい。上記に概略を述べ、さらに後述される方法は、追跡可能性リンクの解析に基づいて、プロジェクトの開発中にコード要素と要件との間の不整合性を特定して、任意選択としてリアルタイムで、ユーザに自動的に警告することを可能にする。
【００２９】
本発明の一部の実施形態によれば、アプリケーション開発プロジェクトの新たなソフトウェア・コード・バージョンにおける１つ以上の新たな追跡可能性リンクの強度が、任意選択で動的相関閾値である相関閾値を超過すると、アプリケーション開発プロジェクトにおける要件の矛盾を検出する方法およびシステムが提供される。
【００３０】
例えば、本方法は、既存のコード要素と新たな要件との間の新たな追跡可能性リンクの強度を計算すること、およびそれが相関閾値を超過するかどうかを判断することに基づく。この検出に基づき、１つ以上の不整合性通知が生成され、例えばソフトウェア開発ワークスペースのユーザに対してメッセージとして提示されるなど、出力されてもよい。
【００３１】
任意選択で、新たなソフトウェア・コード・バージョンにおける特定のコード要素に結合されている新たな追跡可能性リンクが相関閾値を超過した場合であって、新たなソフトウェア・コード・バージョンにおける同じ特定のコード要素に結合されている別の追跡可能性リンクの強度がアプリケーション開発プロジェクトの以前のソフトウェア・コード・バージョンに対して変化した場合、要件の矛盾が検出される。
【００３２】
上記に概略を述べ、さらに後述される方法は、追跡可能性リンクの解析に基づいて、開発プロジェクトのソース・コード・バージョンにおける要件の矛盾を判断して、任意選択としてリアルタイムで、要件の矛盾に関してユーザに警告することを可能にする。
【００３３】
本発明の少なくとも１つの実施形態を詳細に説明する前に、本発明がその応用において、以下の説明に記載され、または図面もしくは例もしくはその両方で例示され、またはその両方がなされるコンポーネントもしくは方法またはその両方の構成および配列の詳細に、必ずしも限定されないということを理解されたい。本方法は、他の実施形態、または多様な方法での実施もしくは実行が可能である。
【００３４】
当業者には当然のことながら、本発明の各側面は、システム、方法、またはコンピュータ・プログラム製品として具現化されてもよい。したがって、本発明の側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本願明細書においてすべて概して「回路」、「モジュール」もしくは「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとってもよい。さらに、本発明の側面は、コンピュータ可読プログラム・コードが具現化された１つ以上のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態をとることもできる。
【００３５】
１つ以上のコンピュータ可読媒体の任意の組み合わせが利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体とされてもよい。コンピュータ可読記憶媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、または前述のものの任意の適切な組み合わせとすることもできる。コンピュータ可読記憶媒体のより具体的な例（包括的でないリスト）には、１つ以上のワイヤを有する電気的結合、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光学式記憶デバイス、磁気記憶デバイス、または前述のものの任意の適切な組み合わせが含まれるであろう。この文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置もしくはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、または記憶することができる任意の有形の媒体とされてもよい。
【００３６】
コンピュータ可読信号媒体は、例えば、ベースバンドに、または搬送波の一部として、コンピュータ可読プログラム・コードが具現化された伝播データ信号を含んでもよい。そのような伝播信号は、電磁気、光学、またはその任意の適切な組み合わせを含むがこれらに限定されない、様々な形態のいずれかをとってもよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でなく、命令実行システム、装置もしくはデバイスによって、またはそれに関連して使用されるプログラムを伝達すること、伝播させること、または搬送することができる、任意のコンピュータ可読媒体としてもよい。
【００３７】
コンピュータ可読媒体上に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述のものの任意の適切な組み合わせを含むがこれに限定されない任意の適切な媒体を使用して伝送されてもよい。
【００３８】
本発明の各側面の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋または同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラム・コードは、完全にユーザのコンピュータ上で実行されることも、部分的にユーザのコンピュータ上で実行されることも、スタンド・アロン・ソフトウェア・パッケージとして実行されることも、または部分的にユーザのコンピュータ上で、かつ部分的にリモート・コンピュータ上で実行されることも、または完全にリモート・コンピュータもしくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ）、もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに結合されてもよく、または、（例えば、インターネット・サービス・プロバイダを使用しインターネットを介して）外部コンピュータに結合されてもよい。
【００３９】
本発明の側面について、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図、またはその両方を参照して後述する。当然のことながら、フローチャート図もしくはブロック図、またはその両方の各ブロック、およびフローチャート図もしくはブロック図、またはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。マシンをもたらすよう、当該コンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサを用いて実行されて、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実装する手段をもたらすようにすることもできる。
【００４０】
さらに、特定の形で機能するようコンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスに指示することができる当該コンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実装する命令を含む製品をもたらすようにすることもできる。
【００４１】
さらに、コンピュータ・プログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスにロードされて、コンピュータ、その他のプログラム可能装置、またはその他のデバイス上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスをもたらし、コンピュータまたはその他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００４２】
以下、図１を参照する。図１は、本発明の一部の実施形態による、本願明細書では要件と呼ばれる開発要件の完全性を監視する方法１００のフローチャートである。監視は、アプリケーション開発プロジェクトの特定のソフトウェア・コード・バージョンにおける追跡可能性リンクの強度と、アプリケーション開発プロジェクトのより新しいソフトウェア・コード・バージョンにおけるこれらの追跡可能性リンクの強度との差分を検出することによって実行される。本願明細書で使用されるアプリケーション開発プロジェクトとは、ソフトウェア製品、またはハードウェア製品、またはサービス、または該製品もしくはサービスもしくはその両方の任意の部分、またはそのいずれかの組み合わせに関する開発プロジェクトを意味する。
【００４３】
図２も参照する。図２は、本発明の一部の実施形態による、要件の完全性もしくは要件の矛盾またはその両方を監視する、システム２００のソフトウェア・コンポーネントおよびハードウェア・コンポーネントの関係ビューである。システム２００は、アプリケーション開発プロジェクトの１つ以上のソフトウェア・コード・バージョン、もしくはアプリケーション開発プロジェクトのソフトウェア・コード・バージョン間の修正、またはその両方を記憶するデータベース２０１を含む。データベース２０１は、任意選択で、ソフトウェア・コード・バージョンのデータセット、もしくはソフトウェア・コード・バージョン間の修正のデータセット、またはその両方を管理する。例えば、特定された修正を記録する１つ以上のメトリクスが使用されてもよい。データベース２０１は、いくつかの異なるアプリケーション開発プロジェクトのソフトウェア・コード・バージョンを記憶するために使用されてもよい。システム２００はさらに、インターフェース２０２、プロセッサ２０３、リンク強度モジュール２０４、および警報ユニット２０５を含む。簡潔さのために言及しておくが、以下記載の演算関数は、プロセッサ２０３を使用して実行されてもよい。
【００４４】
まず、１０１に示されているように、インターフェース２０２が、複数のコード要素を有する特定のアプリケーション開発プロジェクトに対する複数の要件を、例えば受領またはアクセスするなどして獲得する。要件は、任意選択で、製品要件文書（ＰＲＤ）から抽出された要件、もしくはＰＲＤに詳細に述べられた要件、またはその両方であり、ＰＲＤは、製品もしくはサービス、または製品もしくはサービスへの追加を定義するものである。
【００４５】
複数の要件が、ファイルとして受領されてもよく、文書からスキャンされてもよく、ファイルへのリンクにより示されてもよく、テキストの解析などの解析によりコードソースから抽出されてもよく、ワークスペースにおいてマークもしくは選択されてもよく、もしくは同様のことがなされてもよく、またはそのいずれかの組み合わせがなされてもよい。
【００４６】
任意選択で、１０２に示されているように、特定のアプリケーション開発のソフトウェア・コード・バージョンが、例えばデータベース２０１から提供される。
【００４７】
任意選択で、１０３に示されているように、システム２００、例えばリンク強度モジュール２０４が、例えば少なくともアプリケーション開発プロジェクトの最新のソフトウェア・コード・バージョンでなど、データベース２０１内のソフトウェア・コード・バージョンの１つ以上において、各コード要素と、アプリケーション開発プロジェクトの要件の１つ１つとの間の複数の追跡可能性リンクを特定し、タグ付けする。アプリケーション開発プロジェクトの複数の追跡可能性リンクの特定およびタグ付けは、オペレータにより手動で行うことも、ソフトウェア・コードの解析により自動で行うことも可能であり、このソフトウェア・コードの解析は、例えば当該技術分野で既知の、追跡可能性リンクの取得または発見のためのテクニック、モジュール、またはツールによる。
【００４８】
ここで、１０４に示されているように、システム２００、例えば追跡可能性リンク強度モジュール２０４が、例えば最新のソフトウェア・コード・バージョンなどの現在のソフトウェア・コード・バージョンにおける追跡可能性リンクの１つ１つに関して、追跡可能性リンク強度を計算する。任意選択で、現在のソフトウェア・コード・バージョンは、システム２００により自動的に特定されるか、またはワークスペース等のユーザにより選択される。
【００４９】
例として以下、図３を参照する。図３は、本発明の一部の実施形態による、アプリケーション開発プロジェクトにおけるコード要素と要件とを結合する、上述の追跡可能性リンクなどの追跡可能性リンクの強度を測定するためのプロセスのフローチャート３００である。このプロセスでは、要件および追跡可能性リンクは自動的に特定される。３０１に示されているように、１つ以上の要件文書が複数セクションへとセグメント化され、各セクションは単一の要件を含む。
【００５０】
続いて、３０２に示されているように、各セクションは、ストップワード・フィルタ・アルゴリズムおよび語幹化など、多様なテクニックのうちの任意のものを使用して前処理される。続いて、３０３に示されているように、各セクションがインデックス付けされ、３０４に示されているように検索エンジンに転送される。さらに、３０５に示されているように、特定のアプリケーション開発の或るソフトウェア・コード・バージョンの各コード要素が、それが従うべき１つ以上の要件を特定するためのクエリに変換される。任意選択で、３０６、３０７、および３０８に示されているように、コード要素からのワードが抽出、拡大、およびランク付けされる。例えば、Ｊａｖａ（Ｒ）クラスの場合、以下のフィールドのうちの１つ以上からワードが抽出される：クラス名、パブリック関数名、クラス・コメント、パブリック関数引数および戻り型、スーパークラス名および実装されたインターフェース、およびパブリック関数コメント。続いて、ワードは、そのソースの意味論的意味に従ってランク付けされてもよい。例えば、クラス名はコメントよりも高くランク付けされる。任意選択で、３０９に示されているように、抽出およびランク付けされたワードが、例えば、ストップワード・フィルタ・アルゴリズムおよび語幹化などの多様なテクニックのいずれかを使用して前処理される。前処理の間、または前に、キャメルケース（すなわちワード中の大文字）またはアンダーラインにより連結されたワードが任意選択で分離される。
【００５１】
ここで、３１０に示されているように、クエリが検索エンジンに入力され、検索エンジンは、要件文書から抽出された関係する要件を取得する。そのような実施形態では、個々のコード要素と取得された要件それぞれとの間に追跡可能性リンクがマークされ、クエリ・ワードのランク付けに追跡可能性リンクが基づくようにスコアが付けられてもよい。
【００５２】
３０５〜３０９に記載されたプロセスは、各コード要素に対して繰り返される。
【００５３】
以下、コンテキスト認識追跡可能性技術（ＣＡＴＴ）ツールにおける、図３に示されたプロセスの例示の実装を参照する。図４は、Ｅｃｌｉｐｓｅプロジェクトからの特定のコード要素、クラスＣＶＳＰｒｏｊｅｃｔＳｅｔＣａｐａｂｉｌｉｔｙを提示するＣＡＴＴツールのスクリーンショットを示す。図５は、そのクラスを拡大し、コンカレント・バージョン・システム（ＣＶＳ）からのプロジェクトのチェックアウトを処理する特定の関数を示す。図４の左上隅に、コード要素に関係する文書を取得するための、丸印４０１で示されたリンクがある。図６は、前述のプロセスからクラスＣＶＳＰｒｏｊｅｃｔＳｅｔＣａｐａｂｉｌｉｔｙに関して取得された結果を示す。これは、まさに所与のクラスにおいて拡大された関数として、ＣＶＳからのプロジェクトのチェックアウトを処理するので、これが関連する結果であることは極めて明白である。
【００５４】
１０５に示されているように、新たなソフトウェア・コード・バージョンが受領される。これは、例えば、ワークスペースのユーザまたはデータベース２０１のユーザにより選択されるか、コンパイルされるソフトウェア・コード・バージョンとして特定されるか、ワークスペース等へアップロードされるものであってもよい。新たなソフトウェア・コード・バージョンでは、例えばアプリケーション開発プロジェクトの実装プロセスの間に、本願明細書では現在のソフトウェア・コード・バージョンとも呼ばれる最新のソフトウェア・コード・バージョンに対して１つ以上のコード要素が修正されている。
【００５５】
ここで、１０６に示されているように、新たなソフトウェア・コード・バージョンにおける、少なくとも修正されたコード要素の追跡可能性リンクの強度が算出される。例えば、ブロック１０４に関して上述したように強度が算出される。
【００５６】
１０７に示されているように、現在のソフトウェア・コード・バージョンと、新たなソフトウェア・コード・バージョンとにおける特定の追跡可能性リンクの強度間の強度差分が特定される。このプロセスは、修正されたコード要素をリンクする複数の追跡可能性リンクに対して繰り返されてもよい。
【００５７】
ここで、１０８に示されているように、特定された強度差分に基づき不整合性通知が生成される。不整合性通知は、開発ワークスペースで提示されたり、ソース・コードへ注釈として追加されたりする通知、コメント、またはメッセージであってもよく、あるいはアプリケーション開発プロジェクトの代表者に送信されるメッセージであってもよい。不整合性通知は、例えば要件もしくは個々のコード要素またはその両方を示すテキストのコンテンツなど、不整合性の記述を任意選択で含む。任意選択で、不整合性通知は、差分が特定の閾値または閾値範囲を超過する場合に限り生成される。
【００５８】
例として、以下、図７を参照する。図７は、要件ｋと、ｖ１と示される現在のソフトウェア・コード・バージョン１．０におけるコード要素クラスｉとの間の追跡可能性リンクの強度と、ｖ２と示される新たなソフトウェア・コード・バージョン２．０における同じ追跡可能性リンクの強度との照合の概略図である。この照合では、新たなソフトウェア・コード・バージョンの追跡可能性リンクのうちの１つに関して、
ｔ（ｖ２）＞ｔ（ｖ１）；かつ
ｌｉｎｋ＿ｖ１（ｉ，ｋ）＞ｌｉｎｋ＿ｖ２（ｉ，ｋ）
であれば不整合性通知が生成され、式中、ｌｉｎｋ＿は、前述の強度測定プロセスなど、特定の追跡可能性リンクに関する強度測定関数を示し、ｔ（ｘ）は、新たなソフトウェア・コード・バージョンｖ２が現在のバージョンｖ１よりも最新であることを確認する時刻関数を示す。
【００５９】
任意選択で、新たなソフトウェア・コード・バージョンは、アプリケーション開発プロジェクトのより新しいソフトウェア・コード・バージョンに照らして要件の完全性を監視するためのその後の反復のために、データベース２０１に記憶され、現在のソフトウェア・コード・バージョンとしてマークされる。
【００６０】
以下、図８も参照する。図８は、本発明の一部の実施形態による、追跡可能性リンクの強度に基づき、アプリケーション開発プロジェクトのソフトウェア・コード・バージョンにおける矛盾する要件を特定するフローチャート８００である。ブロック１０１〜１０３および１０５〜１０６は、任意選択で上述のとおりである。ただし、図８にはさらにブロック８０１〜８０４が含まれる。８０１に示されているように、ブロック１０１〜１０３および１０５〜１０６でのアプリケーション開発プロジェクトの新たなソフトウェア・コード・バージョンおよび現在のソフトウェア・コード・バージョンに加えて、相関閾値が受領される。続いて、８０２に示されているように、新たなソフトウェア・コード・バージョンが解析され、例えば新たな要件に起因し、現在のソフトウェア・コード・バージョンにおいては記述されていない、１つ以上の新たな追跡可能性リンクが特定される。それらの新たな追跡可能性リンクの強度が、相関閾値と照合される。強度のうちのいずれかが相関閾値よりも高ければ、前述の不整合性通知などの矛盾要件通知が生成および出力される。そうでなければ、プロセスは終了するか、もしくはさらなる新たなソフトウェア・コード・バージョンの新たな追跡可能性リンクに対し繰り返される。
【００６１】
任意選択で、矛盾する要件を特定するための前述のプロセスは、追跡可能性リンクの強度差分を特定することにより要件の完全性を監視するための前述のプロセスと組み合わされる。例として、以下、そのような組み合わされたプロセスの概略図である図９を参照する。図９に例示されているように、要件ｋと、ｖ１と示される現在のソフトウェア・コード・バージョン１．０内のコード要素クラスｉとの間の追跡可能性リンクの強度が、ｖ２と示される新たなソフトウェア・コード・バージョン２．０における同じ追跡可能性リンクの強度と照合される。この照合は、図７に関して上述したのと類似している。このプロセスは、新たな要件ｊと、コード要素クラスｉとを結合する新たな追跡可能性リンクの強度が、０．５の例示の相関閾値を超過するかどうかを検証することをさらに含む。任意選択で、この組み合わされたプロセスにより、追跡可能性リンクの強度差分を特定することによる要件完全性の低下の特定と、相関閾値からの例外による要件矛盾の検出の特定との両方がなされれば、その結果、図９に示されているように不整合性通知が出力される。不整合性通知は、要件の完全性が低下しているだけの場合、または要件の矛盾が検出されただけの場合に出力されてもよい。
【００６２】
上述の方法は、集積回路チップの製造において使用される。各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能を実装する１つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。さらに、一部の代わりの実装では、ブロック内に示されている機能が図面に示されているのとは異なる順序で生じてもよいということにも留意されたい。例えば、関連する機能性次第で、連続して示されている２つのブロックが実際には事実上同時に実行されてもよく、または、各ブロックが逆順で実行されることがあってもよい。さらに、ブロック図およびフローチャート図における各ブロック、および複数ブロックの組み合わせは、指定の機能もしくは動作を実行する専用ハードウェア・ベース・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができるということにも留意されたい。
【００６３】
本発明の様々な実施形態の記載は、説明のために示されたものであるが、包括的であることも、開示された実施形態に限定されることも目的としていない。当業者には、記載された実施形態の範囲および意図から逸脱することのない、多数の変更および変形が明らかであろう。本願明細書で使用された用語は、実施形態の原理、実際の用途、または市場にある技術に比べた技術的改善を最もよく説明するよう、または当業者が本願明細書に開示された実施形態を理解できるよう選ばれた。
【００６４】
特許権の存続期間中、本願から発展して、関連する多数のシステムおよび方法が開発されることが予期されるが、プロセッサ、ワークスペース、およびデータベースという用語の範囲は、そのような新たな技術すべてを事前に含むものとする。
【００６５】
本願明細書で使用される「約」という用語は、±１０％を指す。
【００６６】
「含む」、「有する」という用語、およびその活用形は、「含むがそれに限定されない」という意味である。この用語は、「からなる」および「実質的に・・・からなる」という用語を包含する。
【００６７】
「実質的に・・・からなる」という表現は、構造または方法が追加の構成要素またはステップを含んでもよいが、それが、特許請求される構造または方法の基本的および新規特徴を追加の構成要素またはステップが著しく変更しない場合に限られることを意味する。
【００６８】
本願明細書で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が別途明白に指示しない限り、複数指示を含む。例えば、「複合物」または「少なくとも１つの複合物」という用語は、複数の複合物を、その混合物も含めて含んでもよい。
【００６９】
本願明細書では、「例示の」という語は、「例、実例、または説明としての機能を果たす」という意味で使用される。「例示」として記載された任意の実施形態は、他の実施形態よりも好適もしくは有利なもの、もしくは他の実施形態からの特徴を組み入れることを除外するもの、またはその両方として必ずしも解釈されるべきでない。
【００７０】
本願明細書では、「任意選択で」という語は、「一部の実施形態では提供され、他の実施形態では提供されない」という意味で使用される。本発明の任意の特定の実施形態は、複数の「任意選択の」特徴を、そのような特徴が矛盾しない限り含むことができる。
【００７１】
本願全体にわたって、本発明の多様な実施形態が、範囲形式で提示されることもある。当然のことながら、範囲形式での記載は、単に便宜および簡潔さのためのものであり、本発明の範囲の柔軟性のない限定として解釈されてはならない。よって、範囲の記載は、可能な部分範囲、ならびにその範囲内の個々の数値をすべて具体的に開示したものと見なされなければならない。例えば、１〜６などの範囲の記載は、１〜３、１〜４、１〜５、２〜４、２〜６、３〜６などの部分範囲、ならびに例えば１、２、３、４、５、および６など当該範囲内の個々の数字を具体的に開示したものと見なされるべきである。これは、範囲の幅にかかわらず当てはまる。
【００７２】
数値範囲が本願明細書で示されるときは常に、示された範囲内の言及された任意の数（小数または整数）を含むことが意図されている。第１の指示数字と第２の指示数字との「間の範囲にわたっている／わたる」、および第１の指示数字「から」第２の指示数字「まで及んでいる／及ぶ」という表現は、本願明細書において交換可能なように使用され、指示された第１および第２の数字、ならびにその間のすべての小数および整数を含むよう意図されている。
【００７３】
当然のことながら、明瞭性のために別々の実施形態の文脈で記載された本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能である。逆に、簡潔さのために単一の実施形態の文脈で記載された本発明の多様な特徴が、別々に、または任意の適切な部分的組み合わせで、または本発明のその他任意の記載された実施形態において適するように、提供されることも可能である。多様な実施形態の文脈で記載された特定の特徴は、その実施形態が当該要素なしには機能しないということでない限り、当該実施形態の必須の特徴と見なされてはならない。
【００７４】
本発明は、その特定の実施形態に関連して記載されたが、当然のことながら、当業者には、多数の代案、変更および変形が明らかとなるであろう。したがって、添付の特許請求の範囲の意図および広範な範囲内に入るような代案、変更、および変形すべてが含まれるものとする。
【００７５】
本明細書で言及した刊行物、特許および特許出願はすべて、個々の刊行物、特許または特許出願それぞれが具体的かつ個別的に参照により本願明細書に援用されることが示された場合と同じ範囲で、参照により全体が本明細書に援用される。さらに、本願における任意の引用文献の引用または特定は、そのような引用文献が本発明の先行技術として入手可能であることの自認と解釈されてはならない。セクションの見出しが使用されている場合、それらは必ずしも限定として解釈されてはならない。
【図１】
0005961275.tif 000002
【図２】
0005961275.tif 000003
【図３】
0005961275.tif 000004
【図４】
0005961275.tif 000005
【図５】
0005961275.tif 000006
【図６】
0005961275.tif 000007
【図７】
0005961275.tif 000008
【図８】
0005961275.tif 000009
【図９】
0005961275.tif 000010