(57)【要約】基本プロダクトの開発を、基本プロダクトのインターナショナリゼーション及びローカリゼーションと並行して進めてプロダクトの多重言語バージョンを作成し、顧客へ多言語同時出荷するシステム及び方法。本システム及び方法によって顧客は、単一のインストレーションプロセスによって多重言語の１つまたはそれ以上をアップロードすることができる。
2004528653.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行されるアプリケーションを開発し、上記アプリケーションの多言語同時出荷を可能にする方法であって、
上記アプリケーションのベースバージョンをベース言語で開発する開発プロセスを実行するステップを含み、上記開発プロセスは、上記アプリケーションのベースバージョン内の言語依存コードと言語非依存コードとを区別するステップを含み、
上記アプリケーションのベースバージョンのインターナショナリゼーションプロセスを並行して実行するステップを更に含み、上記インターナショナリゼーションプロセスは、上記アプリケーションのベースバージョンを疑似ローカリゼーションするステップを含み、
上記アプリケーションのベースバージョンのローカリゼーションプロセスを並行して実行するステップを更に含み、上記ローカリゼーションプロセスは、上記言語依存コードを上記ベース言語とは異なる少なくとも１つの言語に翻訳するステップを含む、
ことを特徴とする方法。
【請求項２】
上記言語依存コードと言語非依存コードとを区別するステップは、
全ての言語依存ユーザインタフェースコードを識別するステップと、
上記アプリケーションのソースコード構造を作成するステップと、
を含み、
上記言語依存ユーザインタフェースコードを非ユーザインタフェースコードとは分離して維持することを特徴とする請求項１に記載の方法。
【請求項３】
上記ベースバージョン開発プロセスは、開発すべき上記アプリケーションのフィーチャを定義するプロセスを更に含み、上記開発すべきアプリケーションのフィーチャを定義するプロセスは、開発主要管理点を選択するステップと、上記各開発主要管理点においてどのフィーチャを実施するかを決定するステップとを含むことを特徴とする請求項１に記載の方法。
【請求項４】
上記ベースバージョン開発プロセスは、第１ベースステージ、第２ベースステージ、及び第３ベースステージを含み、上記各ベースステージは、上記アプリケーションのベースバージョンの所定の部分の開発に対応することを特徴とする請求項１に記載の方法。
【請求項５】
上記ベース言語は英語であることを特徴とする請求項１に記載の方法。
【請求項６】
上記第１ベースステージは、上記アプリケーションのベースバージョンのほぼ60％の開発に対応することを特徴とする請求項４に記載の方法。
【請求項７】
上記第２ベースステージは、上記アプリケーションのベースバージョンのほぼ80％の開発に対応することを特徴とする請求項４に記載の方法。
【請求項８】
上記第３ベースステージは、上記アプリケーションのベースバージョンのほぼ100％の開発に対応することを特徴とする請求項４に記載の方法。
【請求項９】
上記疑似ローカリゼーションは、上記アプリケーション内の各翻訳可能なストリングにプレフィックスを追加するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
上記インターナショナリゼーションプロセスは、上記アプリケーションの先行バージョン内の欠陥を識別するステップと、フィーチャ見直しプロセスと、単位試験プロセスとを更に含むことを特徴とする請求項１に記載の方法。
【請求項１１】
上記インターナショナリゼーションプロセスは、第１国際ステージ、第２国際ステージ、及び第３国際ステージを含み、上記各国際ステージは、上記開発プロセスにおいて開発された上記アプリケーションのベースバージョンの所定の部分のインターナショナリゼーションに対応することを特徴とする請求項１に記載の方法。
【請求項１２】
上記言語依存コードは、
ベース用語集の翻訳と、少なくとも１つのローカリゼーションキットの完了と、
を含むことを特徴とする請求項１に記載の方法。
【請求項１３】
上記ローカリゼーションキットは、全ての現存フィーチャを含む現存する翻訳済みベース用語集及び上記アプリケーションの構築を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
上記ローカリゼーションプロセスは、ベース用語集を生成するステップと、地域パートナーを訓練するステップと、上記ベース用語集を翻訳するステップと、少なくとも１つのローカリゼーションキットを完了させるステップとを更に含むことを特徴とする請求項１に記載の方法。
【請求項１５】
上記ローカリゼーションプロセスは、第１地域ステージ、第２地域ステージ、及び第３地域ステージを含み、上記各地域ステージは、上記開発プロセスにおいて開発された上記アプリケーションのベースバージョンの所定の部分のローカリゼーションに対応することを特徴とする請求項１に記載の方法。
【請求項１６】
上記ベース言語とは異なる少なくとも１つの言語は、ドイツ語、スペイン語、フランス語、日本語、デンマーク語、オランダ語、イタリア語、ポルトガル語、スウェーデン語、中国語、朝鮮語、チェコ語、フィンランド語、ギリシャ語、及びヘブライ語からなるグループから選択されることを特徴とする請求項１に記載の方法。
【請求項１７】
コンピュータによって実行させるアプリケーションを開発し、上記アプリケーションの多言語同時出荷を可能にする方法であって、
フロントエンド、中間、及びデータモデルからなるアプリケーションを開発するステップを含み、上記フロントエンドはベース言語で開発されたユーザインタフェースコードからなり、上記中間はプログラミング言語で開発された非ユーザインタフェースからなり、
上記ユーザインタフェースコードを、上記非ユーザインタフェースコードとは分離して維持するステップと、
上記アプリケーション内に存在する何等かのハードコード化されたストリングを並行して識別するステップと、
上記ユーザインタフェースコードを、上記ベース言語とは異なる少なくとも１つの言語に並行して翻訳するステップと、
を含むことを特徴とする方法。
【請求項１８】
上記媒体は１組のプログラムされた命令を含むコンピュータ可読媒体であって、上記命令は、
アプリケーションのベースバージョンをベース言語で開発する開発プロセスを実行させる命令を含み、上記開発プロセスは、上記アプリケーションのベースバージョン内の言語依存コードと言語非依存コードとを区別するステップを含み、
上記アプリケーションのベースバージョンのインターナショナリゼーションプロセスを並行して実行させる命令を更に含み、上記インターナショナリゼーションプロセスは、上記アプリケーションのベースバージョンを疑似ローカリゼーションするステップを含み、
上記アプリケーションのベースバージョンのローカリゼーションプロセスを並行して実行させる命令を更に含み、上記ローカリゼーションプロセスは、上記言語依存コードを上記ベース言語とは異なる少なくとも１つの言語に翻訳するステップを含む、
ことを特徴とするコンピュータ可読媒体。
【請求項１９】
上記言語依存コードと言語非依存コードとを区別するステップは、
全てのユーザインタフェースコードを言語依存コードとして識別するステップと、
上記アプリケーションのためのソースコードを作成するステップと、
を含み、
上記ユーザインタフェースコードは、非ユーザインタフェースコードとは分離して維持される、
ことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
上記ベースバージョン開発プロセスは、開発すべき上記アプリケーションのフィーチャを定義するプロセスを更に含み、上記開発すべきアプリケーションのフィーチャを定義するプロセスは、開発主要管理点を選択するステップと、上記各開発主要管理点においてどのフィーチャを実施するかを決定するステップとを含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２１】
上記ベースバージョン開発プロセスは、第１ベースステージ、第２ベースステージ、及び第３ベースステージを含み、上記各ベースステージは、上記アプリケーションのベースバージョンの所定の部分の開発に対応することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２２】
上記ベース言語は英語であることを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２３】
上記第１ベースステージは、上記アプリケーションのベースバージョンのほぼ60％の開発に対応することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２４】
上記第２ベースステージは、上記アプリケーションのベースバージョンのほぼ80％の開発に対応することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２５】
上記第３ベースステージは、上記アプリケーションのベースバージョンのほぼ100％の開発に対応することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２６】
上記疑似ローカリゼーションは、上記アプリケーション内の各翻訳可能なストリングにプレフィックスを追加するステップを含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２７】
上記インターナショナリゼーションプロセスは、上記アプリケーションの先行バージョン内の欠陥を識別するステップと、フィーチャ見直しプロセスと、単位試験プロセスとを更に含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２８】
上記インターナショナリゼーションプロセスは、第１国際ステージ、第２国際ステージ、及び第３国際ステージを含み、上記各国際ステージは、上記開発プロセスにおいて開発された上記アプリケーションのベースバージョンの所定の部分のインターナショナリゼーションに対応することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２９】
上記言語依存コードを翻訳するステップは、
ベース用語集を翻訳するステップと、少なくとも１つのローカリゼーションキットを完了させるステップと、
を含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項３０】
上記ローカリゼーションキットは、全ての現存フィーチャを含む現存する翻訳済みベース用語集及び上記アプリケーションの構築を含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項３１】
上記ローカリゼーションプロセスは、ベース用語集を生成するステップと、地域パートナーを訓練するステップと、上記ベース用語集を翻訳するステップと、少なくとも１つのローカリゼーションキットを完了させるステップとを更に含むことを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項３２】
上記ローカリゼーションプロセスは、第１地域ステージ、第２地域ステージ、及び第３地域ステージを含み、上記各地域ステージは、上記開発プロセスにおいて開発された上記アプリケーションのベースバージョンの所定の部分のローカリゼーションに対応することを特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項３３】
上記ベース言語とは異なる少なくとも１つの言語は、ドイツ語、スペイン語、フランス語、日本語、デンマーク語、オランダ語、イタリア語、ポルトガル語、スウェーデン語、中国語、朝鮮語、チェコ語、フィンランド語、ギリシャ語、及びヘブライ語からなるグループから選択されることを特徴とする請求項１に記載の方法。
【請求項３４】
１組のプログラムされた命令を実行するマイクロプロセッサ、メモリ、及び入力／出力セクションを含むサーバーであって、上記命令は、
アプリケーションのベースバージョンをベース言語で開発する開発プロセスを実行させる命令を含み、上記開発プロセスは、上記アプリケーションのベースバージョン内の言語依存コードと言語非依存コードとを区別するステップを含み、
上記アプリケーションのベースバージョンのインターナショナリゼーションプロセスを並行して実行させる命令を更に含み、上記インターナショナリゼーションプロセスは、上記アプリケーションのベースバージョンを疑似ローカリゼーションするステップを含み、
上記アプリケーションのベースバージョンのローカリゼーションプロセスを並行して実行させる命令を更に含み、上記ローカリゼーションプロセスは、上記言語依存コードを上記ベース言語とは異なる少なくとも１つの言語に翻訳するステップを含む、
ことを特徴とするサーバー。
【請求項３５】
上記マイクロプロセッサは、上記開発プロセス、上記インターナショナリゼーションプロセス、及び上記ローカリゼーションプロセスを最終的に確定するための公開フェーズを実行するために、１組の予めプログラムされた命令を更に実行することを特徴とする請求項３４に記載のサーバー。
【請求項３６】
コンピュータによって実行されるアプリケーションを開発し、上記アプリケーションの多言語同時出荷を可能にする方法であって、
上記アプリケーションのベースバージョンをベース言語で開発する開発プロセスを実行するステップを含み、上記開発プロセスは、
上記アプリケーションのフィーチャを定義するステップと、
上記アプリケーションのためのコードを書くステップと、
を含み、
上記コードを書くステップは、ユーザインタフェースコードと非ユーザインタフェースコードとを区別するステップを含み、
上記開発プロセスは更に、
上記コードを試験するステップと、
上記開発プロセスのプロダクトをインターナショナリゼーションプロセス及びローカリゼーションプロセスへ導くステップと、
上記アプリケーションのベースバージョンのインターナショナリゼーションプロセスを並行して実行してインターナショナリゼーションプロセスのプロダクトを作成するステップと、
を含み、
上記インターナショナリゼーションプロセスは、
上記アプリケーションの先行バージョン内の欠陥を識別するステップと、
上記アプリケーションのベースバージョンの疑似ローカリゼーション環境を作成するステップと、
フィーチャ見直しプロセスを実行するステップと、
上記インターナショナリゼーションプロセスのプロダクトを上記開発プロセスへ導くステップと、
を含み、
上記アプリケーションのベースバージョンのローカリゼーションプロセスを並行して実行してローカリゼーションプロダクトを作成するステップ、
を更に含み、
上記ローカリゼーションプロセスは、
ユーザインタフェースコードの少なくとも一部分を含むベース用語集を生成するステップと、
翻訳ツールを使用するために地域パートナー及び生産者を訓練するステップと、
上記ベース用語集を翻訳するステップ及び少なくとも１つのローカリゼーションキットを完了させるステップを含む上記ユーザインタフェースコードを翻訳するステップと、
を含むことを特徴とする方法。
【請求項３７】
上記開発プロセス、上記インターナショナリゼーションプロセス、及び上記ローカリゼーションプロセスを最終的に確定するための公開フェーズを実行するステップを更に含むことを特徴とする請求項３６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェア開発に関し、特定的には、多言語同時出荷を可能にするソフトウェアの開発方法に関する。ベース（基本）プロダクトは、そのベースプロダクトを同時にインターナショナリゼーション（internationalization）し、ローカリゼーション（localization）してエンドユーザがインストールできるような多重言語能力を有するソフトウェアとして同時出荷を可能にするように開発される。
【背景技術】
【０００２】
電子商取引及び国際市場は拡張し続け、ソフトウェアベンダの国際的顧客は英語での公開と同時に彼等自身の言語でのプロダクトを要望するようになってきている。更に多くの巨大な国内会社は地球全体にわたって分布する顧客を有しており、これらの顧客は多くの異なる言語を話し、広範なインフラストラクチャ、その地域の状態及び慣習に従って仕事をしている。これらの顧客と効果的に、且つ効率的に通信するために、多重言語Ｅコマースの解決法は、現存する、または潜在的な顧客と、彼等がビジネスを行おうとして捜している会社との間に通信を導いて分配することを益々頼りにしている。
【０００３】
ソフトウェアの開発は、典型的に、プロダクトの単一言語のベースバージョン（例えば、英語）の生成、試験、及び出荷の順に進められる。プロダクトの英語バージョンの出荷の後に、そのプロダクトの１つまたはそれ以上の付加的な言語バージョンを作成するために、ベースプロダクトをインターナショナリゼーション及びローカリゼーションするプロセスが開始される。この開発方法は、インターナショナリゼーションプロセス及びローカリゼーションプロセスのための比較的安定なコードのベースバージョンが利用できることは確実である。しかしながらこの開発方法は、多くの固有欠陥も有している。例えば、そのソフトウェアの付加的な言語バージョンの販売及び／または使用が遅延し、将来の定期的な保守公開を介してソフトウェアをアップグレードする場合の障害になる。
【０００４】
ベースコード内の欠陥（“バグ”）は必ず発見され、その後にインターナショナリゼーション及びローカリゼーションプロセス中に修復されるので、従来のソフトウェア開発方法によって得られたプロダクトの種々の言語バージョンは、最終的には初めに公開された英語バージョンとは異なるものになる。顧客のソフトウェアをアップグレードするために、及びユーザがそのプロダクトを使用している間に屡々発見される欠陥を訂正するために、ソフトウェア開発者はそのプロダクトの定期的な保守公開を準備して分配するように努めるので、これらの差が益々重大になる。
【０００５】
ソフトウェアの定期的な保守公開の準備及び組込みは、ソフトウェア開発者にとって資源の実質的なコミットメントを表しており、高価なソフトウェアアプリケーションのエンドユーザに対する市場調査及び販売における重要な役割である。顧客のアプリケーションを１つのバージョンから次のバージョンへアップグレードしようとする場合に、または保守公開を組込もうとする場合に、ソフトウェア開発者が当面する難題は現行ソフトウェアの状態である。複数の顧客が同一ソフトウェアのさまざまなバージョンを有している場合、変化を実現させようとする基準が均一ではないために、保守公開の準備及び引渡しに伴う時間及びコストが大幅に増加する。
【０００６】
更に、プロダクトの英語バージョンの顧客も、典型的には彼等がそのソフトウェアを実際に使用している間にバグを発見する。これらのバグは、多重言語バージョンを生成するためにインターナショナリゼーションプロセス及びローカリゼーションプロセスに伴う遅延時間中にソフトウェア開発者によって訂正され、典型的には、（手直しして）確定されたものがその後の言語バージョン内に組み入れられるので、インターナショナリゼーション及びローカリゼーション中に発見されたバグを確定するために実行しなければならない変化の数及び複雑さが組合わされてそのソフトウェアの多重言語バージョンの引渡しが更に遅延する可能性がもたらされる。
【発明を実施するための最良の形態】
【０００７】
本発明の図示の実施例は、顧客へ多言語を同時に出荷するために、ベースプロダクトの開発をベースプロダクトのインターナショナリゼーション及びローカリゼーションと並行して進行させてプロダクトの多重言語バージョンを生成するようにしたソフトウェア開発方法を提供する。更に、図示実施例は、顧客が多重言語の１つまたはそれ以上を、単一のインストレーションプロセスでアップロードできるようにし、且つこのインストレーションプロセス自体を複数の言語の１つで実行できるようにする多言語ソフトウェアプロダクトを提供する。
【０００８】
本発明の特定の目的、長所、及び機能、及び図示実施例は、以下の添付図面に基づく詳細な説明から理解されよう。
【０００９】
以下の説明では、本発明の実施例を完全に理解するのを容易にするために、多くの特定の詳細を記述する。しかしながら、当業者ならば理解されるように、本発明はこれらの特定の詳細の１つまたはそれ以上を用いることなく、または他の方法、成分、材料等を用いて実現することができる。また、本発明のさまざまな面が不明瞭になるのを回避するために、公知の構造、材料、または動作については図示もしくは説明を省略する。
【００１０】
本明細書において使用する“一実施例”または単に“実施例”とは、その実施例が本発明の少なくとも１つの実施例内に含まれていることに関連して記述する特定の特色、構造、または特性のことを意味する。従って、本明細書の諸処に現れる“一実施例では”または“実施例では”というフレーズは、必ずしも全て同一の実施例を指すものではない。
【００１１】
初めに、以下に記載する開発方法の特定の要素に加えて、コンピュータに実行させるアプリケーションを開発する本方法を実施しようとする者は、前記背景技術のセクションで説明したアプリケーションの単一言語バージョンの開発に使用される現存スキーマ内に若干の基本的なアーキテクチャの変化を組入れる必要があることを銘記すべきである。例えば、多重言語アプリケーションを効率的に開発するには、言語依存ユーザインタフェースコード（“ＵＩコード”）を非ユーザインタフェースコード（“非ＵＩコード”）とは別に維持することができるようなソースコードの構築が必要である。開発者は、機能の実施に向けて開発を進める際にＵＩ成分が最初に実施されるように、実施される機能に関連するＵＩ成分を設計し、ＵＩストリングを定義する。従って、例えば、特定の機能がコード完了＃１（第１ベースステージの完了：詳細は後述する）における完了によるものである場合には、開発の主要管理点（マイルストーン）について指定されているプリセットされた期間だけコード完了＃１に先行して、用語集（グロッサリ）凍結＃１（詳細は後述する：コード完了＃１に対応）において対応するＵＩ成分が最終決定される。
【００１２】
ＵＩコードは、地域特定ディレクトリ内に存在する全ての翻訳可能なファイルと共に、多重言語マスタリポジトリ内に維持される。ＵＩコードの多重翻訳を、全ての物理的スキーマ及びビジネスロジックと共に保持するための多重言語マスタリポジトリを生成することにより、ストリングの翻訳プロセス、及びローカリゼーションベンダとのインタラクションが容易になり、また言語特定属性の管理が容易になり、そしてＷＹＳＩＷＹＧローカリゼーションプロセスが可能になる。単一のコードページに基づいて、リポジトリオブジェクト当たり１つの地域表を、翻訳可能な、または地域オーバーライド属性と共に有している多重言語マスタリポジトリを生成することにより、インポート／エクスポート及び更新の問題が解消され、全ての翻訳可能なストリングを単一の視点で見ることが可能になる。一実施例では、マスタリポジトリを各コードページ毎に生成することができ、例えば英語、ドイツ語、スペイン語、フランス語、イタリア語等のような全てのロマンス言語をサポートするコードページは単一のマスタリポジトリからなることができる。
【００１３】
添付図面、特に図１を参照する。図１には、本発明の原理によるソフトウェア開発方法（全体を１０で示す）が絵画的に示されている。図１には、本発明のソフトウェア開発方法の異なる機能間の特定のインタラクションは示されてはいないが、どのようにして全てのプロセスが進行するのかを簡略に表しており、本発明のシステム及び方法を詳述している他の図面の説明と共に参照すべきである。ソフトウェア開発方法１０は、全体として３つの分離してはいるが、相互接続されている開発プロセス、即ち、ベースバージョン開発１２、インターナショナリゼーション１４、及びローカリゼーション１６からなる。公開フェーズ１７は３つの各先行プロセスの最終決定を可能にし、方法１０は最上部に示されている顧客１８へのソフトウェアの多言語同時出荷に到達する。
【００１４】
本発明のシステム及び方法は典型的には人間によって促進することが可能であり、本発明のシステム及び方法はコンピュータ可読媒体内に含まれる１組のプログラムされた命令を実行できるコンピュータまたは同等デバイスによって実施することができる。例えばマイクロプロセッサ、メモリ、及び入力／出力セクション、その他のシステム成分を含むサーバーを使用して、本発明のシステム及び方法を実施することができる。従って、本明細書が本発明の範囲を限定する意図はないことを理解されたい。
【００１５】
３つのプロセス１２、１４、及び１６は並行関係で進行し、それによって、一般的に言えば、各プロセスのステージが完了すると、そのステージのプロダクトはさらなる開発のために別のプロセスへ導かれ、同時に、オリジナルプロセスの次のステージが開始される。図１には概要で示されているが、３つのプロセスの間の相互接続は図に示されているよりも複雑である。この相互接続の詳細に関しては、図２−４に基づいて後述する。
【００１６】
内部的には、各プロセス１２、１４、及び１６は、ソフトウェア開発チームのメンバーと共に作業する地域パートナーによってコードが書かれ、インターナショナリゼーションされ、そして翻訳される際に、開発プロセス１０を通して継続される繰り返しループ内に組込むことができる複数の独特なステップからなっている。例えば、３つの各プロセス１２、１４、及び１６は、本実施例を説明する目的で３つの独自のセクションに分割されているが、実際にはステップの数は、開発方法１０全体の複雑さ及びスケールの関数である。ベースバージョン開発プロセス１２は、第１ベースステージ２０、第２ベースステージ２２、及び第３ベースステージ２４からなる。インターナショナリゼーションプロセス１４は、第１国際（インターナショナル）ステージ３０、第２国際ステージ３２、及び第３国際ステージ３４からなり、ローカリゼーションプロセス１６は、第１地域（ローカル）ステージ４０、第２地域ステージ４２、及び第３地域ステージ４４からなる。これらの各ステージは、本発明の方法によって開発中のソフトウェアの一部分、即ち開発のパーセンテージ及び完了を表しており、詳細に関しては図２−４に基づいて後述する。
【００１７】
当業者ならば、ソフトウェアアプリケーションの開発が、（１）ユーザがどのようにしてソフトウェアアプリケーションとインタラクトするかを定義するユーザインタフェースを含むフロントエンド、（２）アプリケーションを通して入力、プロセス、及び出力の諸点からの、及びこれらの点への情報の流れを定義するソフトウェアコード自体を含む中間、及び（３）アプリケーションを機能的ならしめるデータベース、表、カラム、ドメイン等からなるデータモデルを含む複数の要素の開発からなることは理解できよう。本発明の重要な面は、アプリケーションのフロントエンドを定義し、またどのようにユーザがアプリケーションとインタラクトするかを定義するＵＩコードと、アプリケーションの中間を定義し、ユーザインタフェースに機能性を与えるためにアプリケーションの機能的バックエンドへの、及びそれからの通信経路を提供する非ＵＩコードとの間の区別である。アプリケーションの多重言語バージョンの開発においては、ＵＩコードはローカリゼーションプロセスを介して翻訳しなければならず、一方アプリケーション全体はいろいろな地域との互換性を保証するために、インターナショナリゼーションプロセスを介して見直され、試験される。翻訳は、１つの言語から別の言語への変換だけではなく、例えば色の変化、アドレスレイアウト等のような他の多くの潜在的変化をも含む。全てのＵＩコードが、必ずしもこのプロセスにおいて翻訳されるものではないことを理解されたい。
【００１８】
以下に、開発方法１０における開始、完了、または重要イベントを定義する複数の主要管理点について、３つの各プロセス１２、１４、及び１６に関連して説明する。これらの主要管理点はプロジェクトの重要なチェックポイントを表しており、プロジェクトのスケジュールを定義することができる。これらの主要管理点によって、ソフトウェア開発チームはプロジェクトの完了、または処理中の開発プロセス１０のいろいろなステップまたはステージの開始までのタイムラインを評価、または再評価できるようになる。
【００１９】
ソフトウェア開発方法１０は、第１ベースステージ２０におけるベースバージョン開発から開始される。これは、本発明の実施例を説明する目的から、ＵＩコードの約60％の開発に関係付けられている第１コード完了主要管理点に対応する。第１コード完了主要管理点は、このステージの完了によって実施される機能及び機能に対する60％ＵＩコードに対応するソフトウェアコードの完了（アプリケーションの中間）として定義される。第２ベースステージ２２は、ＵＩコードの約80％の開発に対応する第２コード完了主要管理点によって定義することができ、第３ベースステージ２４は、ＵＩコードの約100％の開発によって定義することができる。これらのパーセンテージは任意であり、これらの理論的ステージの実際の数は開発中のアプリケーションの特定の要求によって異なり得る。
【００２０】
ソフトウェア開発方法１０の第１ベースステージ２０の完了に続いて、第１国際ステージ３０を介してのインターナショナリゼーションプロセス１４、及び第１地域ステージ４０を介してのローカリゼーションプロセス１６が開始され、第１ベースステージ２０において作成されたコードが処理される。並行して、第２ベースステージ２２が開始されてベースバージョンコードが更に開発され、第１ベースステージ２０によって生成されたコードのインターナショナリゼーション１４及びローカリゼーション１６中に発見されたバグの確定及び／または変化が実行される。方法１０は、第１ベースステージコードのインターナショナリゼーション１４及びローカリゼーション１６が完了し、第２ベースステージも完了した時に、並行開発プロセスが図１に示す手法で効果的に進行するように実施することができる。
【００２１】
第３ベースステージコードのインターナショナリゼーション１４及びローカリゼーション１６に続いて、公開フェーズ１７に入って仕上がったソフトウェアプロダクトを顧客へ多言語同時出荷１８する準備を整える。公開フェーズ１７は、ＵＩコードの翻訳が実質的に完了した時点に開始される。公開フェーズ１７は、アプリケーション内のバグを識別し、識別されたバグを手直しし、付加的な、または残されたバグを識別するためのさらなる試験のために、アプリケーションを再構築する繰り返しプロセスからなる。上述したプロセスの各ステージにおいて開発のパーセンテージまたは量を固定する必要もなければ、ソフトウェア開発プロセスの次の連続ステップへ進む前に合計に対するパーセンテージを限定する必要もない。本実施例を説明するために使用するパーセンテージは、開発方法１０へのアプローチを例示することだけを意図しており、本発明の範囲を限定するものではない。
【００２２】
３つの並行開発プロセス１２、１４、及び１６間の一般的なインタラクション及び関係の詳細を説明したが、個々の各プロセスの特定の詳細及びステップ、及びそれらの間の特定の相互関係を説明する。この点において、複数の特定のステップを図１に関連して上述した３つの特定のプロセスの１つの見出しと共にグループ化することは単に例示目的に過ぎず、実際には本発明のソフトウェア開発方法１０はこのようなカテゴリ化を行うことなく進行することに注目されたい。
【００２３】
図２は、ベースバージョン開発プロセス１２のフローチャートである。ベースバージョン開発プロセス１２は、開発すべきソフトウェアアプリケーションの機能を定義するプロセスから開始される（ステップ５０）。エンジニアリング管理者は、この点において、特定の機能の機能性、及びコード問題、並びにサード・パーティ依存性及び問題を定義する詳細なエンジニアリングプランを生成し始める。当業者ならば、ソフトウェアの機能、または特定の機能の機能性を定義するプロセスは、本発明の開発方法が企図する新しいバージョン公開内にどの機能を付加または実施するかを決定するプロセスであることを理解しているであろう。例えば、ソフトウェア開発チームは、ソフトウェア開発プロジェクトの必要な成分及び機能性の限定的な全体像を提供する機能リストを定義する公開を生成することができる。このリストは、特定のコーディングを定義するものではなく、アプリケーションの機能性の高レベル全体像を定義する。同様に、ソフトウェア開発チームがプロジェクトをどのように開発しようとしているのかという計画（多くの場合、開発チームが機能的仕様をどのように実施しようとしているのかに関するステップ・バイ・ステップ情報を供給する）を明確にするために、詳細な設計仕様またはエンジニアリングプランを生成することができる。詳細な設計仕様は、どのサード・パーティソフトウェアをそのアプリケーションに使用するのかというような情報を含むことができる。例えば、より大きいデータベース管理アプリケーションの一部であることができる報告書生成アプリケーションを使用して、開発中のアプリケーション内の報告書機能性を処理することができる。報告書生成プログラムは、典型的に、特定の報告書フィールド、または報告書の範囲を選択するために、及び見出し、ページ番号、及びフォントのような機能を含むことによって出力を魅力あるものとするために使用される。コード問題とは、例えば、マルチバイト文字セットをサポートしないアプリケーションの１つの機能のような機能の機能性に関する制約、またはオペレーティングシステム／データベース制約のことをいう。
【００２４】
機能の定義、及びこれらの機能を実施するためのエンジニアリングプランの開発（ステップ５０）は、前述したような開発主要管理点の選択、及びどの機能を実施して各開発主要管理点に含ませるのかという決定をも含む。各主要管理点は、上述した個々のプロセス１２、１４、及び１６のあるステージのある部分の完了を定義し、他の２つの並行プロセスの１つまたはそれ以上のステージ、または個々のステップに関係付けることができる。開発主要管理点の例としては、図１に関連して説明したコード完了主要管理点が代表的である。各コード完了主要管理点は、開発プロセス内において、アプリケーションのあるパーセンテージ、または機能の限定された数がコード化され、単位試験が終了した時点に対応する。この主要管理点は、並行進行する開発プロセス１２、１４、及び１６のステージ内の付加的ステップを開始することができる、または成功裏に完了した点を定義する。
【００２５】
ベースバージョン開発１２は、次に新しいコードの生成及び／またはソフトウェアの先行バージョンからのコードの更新へ進む（ステップ５２）。例えば１つの機能が現在開発中の公開に対して完全に新しい場合、多言語同時出荷するための新しいバージョンの開発の基にしたくてもコードの以前の（prior）バージョンが常に利用できるとは限らないことは理解されよう。しかしながら、以前のバージョンが存在しない場合には、直前（previous）バージョンからのコードの更新には、プロダクトを汎用にするためにプロダクトの大域化（グローバリゼーション）を含むことになろう。プロダクトを汎用化するためのプロセスは、最終的にプロダクトを翻訳する１つまたはそれ以上の地域にとっては不適切であるアイコン、色、またはユーザインタフェースの他の属性を除去することを含む。次いで、ローカリゼーションプロセス１６中に、その特定の地域に合わせるように特定の属性を再導入し、変更し、追加し、または変化させることができる（詳細は後述する）。
【００２６】
ベースバージョン開発プロセス１２は、一般にアプリケーションのバージョンを英語のようなベース言語で開発することからなる。次いで、ローカリゼーションプロセス１６によって、アプリケーションのこのベース言語バージョンを、例えばドイツ語、スペイン語、フランス語、日本語、デンマーク語、オランダ語、イタリア語、ポルトガル語、スウェーデン語、中国語、朝鮮語、チェコ語、フィンランド語、ギリシャ語、ヘブライ語、またはそのアプリケーションに対する市場要求が存在する他の何れかの言語のような１つまたはそれ以上の付加的な言語に翻訳する。アプリケーションのベース言語バージョンの翻訳は、ユーザインタフェースの他の属性に関して前述したベース言語地域の翻訳をも含む。前述したように、本発明のソフトウェア開発方法におけるコードの生成及び／または更新の重要な面は、ＵＩコードと非ＵＩコードとを区別することである（ステップ５４）。ＵＩコードとは、一般的に、アプレット内に使用されるエラーメッセージ、メニュー、ダイアログタイトル、及びテキスト、及びソフトウェア全体のビューのような言語依存コードのことであり、非ＵＩコードが実施されている特定の言語に依存して変化する。
【００２７】
一実施例では、ＵＩコードの80乃至90％がリポジトリ内に維持され、残りの10乃至20％は資源ファイル内に配置されている。当業者ならば、資源ファイルが典型的には、メニュー、ウィンドウ、またはダイアログボックス、並びにデータを索引する資源マップのような特定の資源に関連付けられたデータ構造、テンプレート、定義手順、管理ルーチン、アイコンマップ等を含む資源データからなることは理解できよう。データまたはコードの資源アイテムは、２つ以上のプログラムによって、またはダイアログボックス等のような１つのプログラム内の２つ以上の場所で使用することができるので、ＵＩコードの一部分をリポジトリではなく資源ファイル内に維持することによってより効率的にアプリケーションの機能を変更または追加することが可能になる。非ＵＩとは、一般的に、ソフトウェアプログラム自体の機能性を定義する根元的なプログラミングコードのことであり、例えばＣ＋＋のような任意数のプログラミング言語の形状を取ることができる。実際には、ＵＩコードのベース言語はソフトウェアの付加的な言語バージョンを表し、最終的に翻訳される他の何等かの言語と異なることはない。非ＵＩコードは、翻訳する必要がない汎用エンティティとしてＵＩコードから独立して存在する。プログラマがアプリケーションの機能、または機能のサブセットを設計する際に、彼または彼女はＵＩコードをリポジトリ内へ、または資源ファイルの一部として入力する。
【００２８】
ＵＩコードの定義されたパーセンテージ（第１ベースステージ２０の場合、ベース開発プロセス１２のベースステージの１つ、例えば60％に対応）のプログラミングが完了すると、完了したＵＩコードはステップ５６においてローカリゼーション１６へ導かれ、ローカリゼーション１６においてベース用語集が生成され、ソフトウェア開発チームのメンバーと共に作業中の地域パートナーによって最終的に翻訳される。ローカリゼーションプロセス１６の詳細に関しては後述する。このプロセスが遂行されている間に、並行して開発されている非ＵＩコードがステップ５６においてインターナショナリゼーションプロセス１４へ導かれて機能の見直し及び単位試験が遂行される。これらのステップの詳細に関しても、インターナショナリゼーションプロセス１４に関連して後述する。次いで、翻訳された用語集、及び見直された機能、及び単位試験されたコードはベースバージョン開発プロセス１２へ戻され、この特定のステージにおいて実施することが意図され、コード化され、チェックインされ、そして単位試験された特定の機能の完了として定義されているコード完了主要管理点を用いて完結する（ステップ６０）。
【００２９】
各機能は、コード完了主要管理点（ステップ６０）を通過した後に、試験（ステップ６２）へ引渡される。ベースバージョン開発のこのステージにおいては、機能が主コードライン内へ統合される前に現存プロダクトが試験される。試験（ステップ６２）は、ベース統合試験、エンジニアリング受入れ試験、及び機能的受入れ試験を含むことができる。
【００３０】
ベース統合試験は、単位試験プロセス（インターナショナリゼーションプロセス１４の一部）を介して個々に試験済みの新たに組合わされたアプリケーションのモジュールの統合を試験することからなる。ベース統合試験を遂行する目的は、個々のモジュールが一緒になってシステムとして如何に良好に動作するか、及び他のモジュールと組合わされた時にこれらのモジュールが個々に正しく機能し続けているかを決定することである。当業者ならば、ベース統合試験がコード完了主要管理点（ステップ６０）に続く現存アプリケーションの構築時に遂行されることが理解されよう。
【００３１】
エンジニアリング受入れ試験は、単位試験及び統合試験が完了した後の試験からなり、一般的には、主要管理点を定義するドキュメンテーションによって指定されているアプリケーションの機能及び機能、及びこの試験が行われる時の開発内の点において実施されるアプリケーション機能が利用可能であることを立証するように設計されている。エンジニアリング受入れ試験は、識別された有効入力のクラスがアプリケーションによって受入れられ、識別された無効入力のクラスがアプリケーションによって拒絶され、識別された機能がアプリケーションによって実行され、識別されたアプリケーション出力のクラスが適切に機能しており、そして全てのインタフェーシングシステムまたは手順が呼出されていることを確実にする。
【００３２】
機能的受入れ試験は、統合された現存アプリケーション全体を試験して、既知の結果及び予測可能な結果を保証することである。機能的受入れ試験は、構造化試験及びスクリプト化試験を伴ってはいるが、生の状態をシミュレートする。
【００３３】
上述した試験に加えて、例えば性能試験、回帰試験等を含むアプリケーションの特定の属性または機能を検証するために、他の多くの試験シナリオを使用し、遂行することもできる。
【００３４】
試験（ステップ６２）の後に、ベースバージョンコードはローカリゼーションプロセス１６へ導かれ（ステップ６３参照）、ソフトウェア開発チームと共に作業中の地域パートナーのためにローカリゼーションキットが生成される。ローカリゼーションキットは、一般的に、言語特定のユーザインタラクションを与えるワード、ストリング、及び他のＵＩコードを含む既存の翻訳された用語集と、先行コード完了（ステップ６０）主要管理点に関連付けられた機能を組入れたアプリケーションの最新の構築とからなる。ローカリゼーションキットの詳細に関しては、ローカリゼーションプロセス１６に関連して後述する。
【００３５】
ステップ５０において定義されたソフトウェアアプリケーションの機能が未だに100％コード化されていない場合には、その後のベースステージ（この場合には、第２ベースステージ２２）が開始され、プロセス１２はステップ５２まで戻って繰り返される。図２のフローチャートに記載されている残りのステップは、アプリケーション機能の100％コード化の後ではあるが、このソフトウェアを顧客へ多言語同時集荷１８する前の公開フェーズ１７（図１）に対応する開発プロセス１０を示している。これらのプロセスに関しては、インターナショナリゼーションプロセス及びローカリゼーションプロセスの説明の後に詳述する。
【００３６】
主として図３を参照する。フローチャートに示されているインターナショナリゼーションプロセス１４は、新しい公開の基になっているソフトウェアの先行バージョン内の欠陥の識別から開始される（ステップ７４）。このステップは、本質的には、ローカリゼーションに関して特に問題となり得る先行公開内に存在するインターナショナリゼーションバグの識別である。例えば、アプリケーションの先に公開されたバージョンからの既存機能は、アプリケーションと共に使用されるサード・パーティソフトウェアによってもたらされる機能性問題について、または最新多言語公開のための機能の機能性及び／またはローカリゼーションを妨害し得る日付、時刻、及び／または通貨フォーマット問題について見直すことができる。更に、優先権が比較的低いか、または技術的に困難であるために据え置かれた先行公開からの欠陥が存在し得る。先行バージョンが常に利用可能であるとは限らず、またこのような場合、プロセスのこの部分を無視できることは理解できよう。このステップ７４は、ベースバージョン開発の開始と並行して遂行することができるので、早期に識別された欠陥はベースバージョン開発１２の第１ベースステージ２０（図１参照）において訂正することができる。インターナショナリゼーションバグを識別した後に、ソフトウェア開発チームは欠陥追跡ツールを使用して、バグをログし、数量化し、そして管理することができる。このような追跡ツールは、実質的にバグをカタログし、識別されたバグのための確定状態を維持するデータベースである。
【００３７】
インターナショナリゼーション自体は、一般的に、ソフトウェアアプリケーションが真に“インターナショナリゼーション”され、従ってさまざまな地域においてローカリゼーションできるようにすることを保証する責を負う。従ってインターナショナリゼーションプロセス１４は、主として、代わりの言語特定インタラクションへローカリゼーションすることを妨害するようなストリングを一つ残らず発見し、ハードコード化された全ての日付、時刻、及び通貨フォーマットのサポートを検査し、及び絵画的に基本化された言語の多重バイト文字サポートを検査することに関する。ハードコード化されたストリングの識別及び確定の詳細に関しては、疑似ローカリゼーション環境の生成に関連して後述する。
【００３８】
全ての日付、時刻、及び通貨フォーマットについてのサポートの検査は、各地域依存フォーマット（例えば、日付、時刻、及び通貨）が、アプリケーションを走らせるオペレーティングシステム内の類似フォーマットに対応することを確認することからなる。例えば、もしアプリケーションが「ウィンドウズ2000」（登録商標）オペレーティングシステム上で走るのであれば、検査プロセスは、領域（地域）セッティングを例えば英語のベース言語セッティングから代わりの例えば日本語の地域セッティングへ変化させ、アプリケーションを走らせ、そして各地域依存フォーマットがオペレーティングシステムの地域フォーマットに一致することを確認することを含む。
【００３９】
多重バイト文字サポートの検査は、アプリケーションのために実施された試験プロセスを介して入力された多重バイト文字ストリング（絵画的に表された文字）が、対応するアプリケーションサーバー内に正しく格納され、アプリケーションのクライアント側からアクセス可能であることを確認することからなる。多重バイト文字サポートは、選択されたオペレーティングシステムのアプリケーションプログラミングインタフェース（オペレーティングシステムによって手順の動作が指令される）によって遂行される。検査は、領域（地域）セッティングを、ベース言語セッティングから絵画的に表された文字セットに対応する代わりの言語セッティングへ変化させ、アプリケーションをアプリケーションサーバーと共に走らせ、そしてこれらの入力されたストリングが正しく格納され、上述したようにアクセス可能であることを確認することを含む。
【００４０】
ソフトウェアアプリケーションの先行公開内の欠陥の識別（ステップ７４）に続くインターナショナリゼーションプロセス１４の次のステップは、第１国際ステージ３０（図１参照）の開始と考えることができ、疑似ローカリゼーション環境を生成する（ステップ７６）。
【００４１】
疑似ローカリゼーションは、アプリケーション内の全ての翻訳可能なストリングにプレフィックス文字を追加し、動作環境内の何れかの地域特定セッティング（例えば、日付、時刻、番号、通貨フォーマット等）を変更することによって、ローカリゼーションをシミュレートするプロセスである。疑似ローカリゼーションは、真の翻訳が利用可能になる前に国際試験のために使用することができる。アプリケーションの疑似ローカリゼーション構築は、ＵＩコードの将に別の言語バージョンとして処理される。疑似ローカリゼーション構築は、上述したプレフィックスを組入れるように翻訳可能なベース言語ストリングを変更することによって、実際の疑似翻訳を自動的に遂行するように設計することができる。
【００４２】
疑似ローカリゼーション環境は、コードのローカリゼーションをシミュレートすることによってソースコード内のハードコード化されたストリングを、インターナショナリゼーションプロセス１４が一つ残らず識別することを可能にする。更に、疑似ローカリゼーション環境は、時刻、日付、及び通貨記号配置のようなハードコード化されたフォーマット、並びに、特に翻訳に対するハードコード化された参照の識別を容易にする。シミュレーションは、プロダクト内の全ての翻訳可能なストリングにプレフィックス文字を追加することによって遂行される。同様に、他のインターナショナリゼーションバグが識別され、訂正される。疑似ローカリゼーションに続くプレフィックスを担持していないこれらのストリングは、ハードコード化されている（翻訳可能なファイル内には位置していない）ものとして識別されるので、それらはベースバージョン開発１２の次のステージにおいて元へ戻すことができ、プロダクトの完全且つ効果的なローカリゼーションが保証される。更に、疑似翻訳されたストリングはユーザインタフェース内にフィットさせるための付加的な空間を必要とするので、疑似翻訳は、ユーザインタフェースがＵＩコードの実際の翻訳（これも付加的な空間を必要とする）を組入れるように十分に設計されているか否かについての第１の指示を与える。これらの再サイジング問題の詳細に関しては、ローカリゼーションプロセス１６に関連して説明する。
【００４３】
疑似ローカリゼーション（ステップ７６）に続いて、インターナショナリゼーションプロセス１４は機能見直し及び単位試験（ステップ７８）へ進む。機能見直しは、アプリケーションの現存機能を、例えば機能性及び／または効果的なローカリゼーションを妨害し得る機能に関する特定の設計またはアーキテクチャの問題のようなインターナショナリゼーション問題に関して解析することからなる。そこで、インターナショナリゼーションチームのメンバーはベース開発チームのエンジニアと共同作業してこれらの問題を解決するか、またはこれらの問題を回避するように設計を再アーキテクトする。単位試験は、ソフトウェアアプリケーションの１つまたはそれ以上の機能を包含するモジュールの各独自流路が文書化された仕様を正確に遂行することを保証するように各モジュール内のコードの各流路の分離した試験からなり、明確に定義された入力及び予測される結果を含む。単位試験は機能見直しと共に作業し、現存アプリケーションが主要設計を含むのか、または図２のステップ５０に関して先に説明した公開定義用機能リストのような仕様文書に対して測定された機能的欠陥を含むのかの決定を容易にする。更に、機能見直し／単位試験（ステップ７８）は、現存アプリケーションが統合試験、及びコード完了主要管理点に続く他の試験へ移動する準備が整った時点を決定し、また現存アプリケーションが、潜在的な顧客ベースのために必要なネットワーク、ハードウェア、オペレーティングシステム、関係型データベース管理システム等のような試験環境において正しく機能するか否かを決定する手段を提供する。
【００４４】
機能検査完了（ステップ８０）主要管理点は、ソフトウェア開発プロセス１０において全ての現機能の見直しが終わり且つ単位試験が終了した時点に対応し、コード完了（図２のステップ６０）、試験（ステップ６２）、ローカリゼーションキットの生成のためにローカリゼーションプロセス１６（ステップ６３）との通信について、ベースバージョン開発プロセス１２へ信号を戻す（ステップ８１）。機能検査完了（ステップ８０）主要管理点は、ベースバージョン開発プロセス１２のコード完了主要管理点（図２のステップ６０）に類似しており、付加的なステージ及び／またはステップを開始することができるソフトウェア開発方法１０内の点を表明している。
【００４５】
図２のステップ５０において定義された機能が100％コード化されていない場合（ステップ８２参照）には、図１に示されているように、ベースバージョン開発プロセス１２の第２ベースステージ２２（図１参照）のプロダクトについて、続いてベースバージョン開発プロセス１２の第３ベースステージ２４のプロダクトについて、インターナショナリゼーションプロセス１４がステップ７６から繰り返される。機能が実質的に100％完了すると（ステップ８２において決定される）インターナショナリゼーション確認（ステップ８３）主要管理点に到達し、ソフトウェア開発プロセス１０内の全ての定義された機能が機能見直し及び単位試験を完了し、全てのインターナショナリゼーション欠陥が識別されて理想的に確定された点が定義される。
【００４６】
図４に、ローカリゼーションプロセス１６をフローチャートで示す。ローカリゼーションプロセス１６は、ベース用語集の生成（ステップ８４）から開始される。ベース用語集８４を生成するプロセスは、ベースバージョン開発プロセス１２内のＵＩコードの定義されたパーセンテージの完了、及びステップ５６を介してのそのＵＩコードのローカリゼーションプロセス１６への導きに続いて遂行される。言語特定ユーザインタラクションを提供するために翻訳する必要があるワード、ストリング、及び他のＵＩコードを含むベース用語集の生成（ステップ８４）は、開発中のソフトウェアアプリケーションのローカリゼーションのための出発点を与える。ベース用語集は、ベースステージ２０、２２、または２４の何れか１つに対応するベースバージョン開発プロセス１２内の対応するコード完了（図２のステップ６０）主要管理点において実施されるソフトウェアアプリケーションの定義された機能に対応する現存ＵＩコードに基づいて生成される。ベース用語集は、全てのベース言語ストリングのリストを発生する用語集ツール及びデータベースエンジンを使用することによって生成することができる（ステップ８４）。もしアプリケーションの先行バージョンが存在すれば、ユーザは、新たに生成されたベース言語ストリングのリストと先行バージョンリストとを比較することによって、先に翻訳された先行公開から用語を排除することを望むかも知れない。
【００４７】
用語集生成（ステップ８４）は、用語集凍結（ステップ８５）主要管理点と、ベースバージョン開発プロセス１２内の対応するコード完了（ステップ６０）主要管理点とに関連付けられる。用語集凍結（ステップ８５）は、対応するローカリゼーションキットを地域パートナーへ伝送する前に用語集の生成、翻訳、及び見直しのための時間を与えるために、ある期間（例えば、２週間）だけコード完了（ステップ６０）に先行する。
【００４８】
ベース用語集が生成される点（ステップ８４）にベースバージョンの限定的なパーセンテージを完了させることは不可欠ではなく、ベース用語集の生成（ステップ８４）には、一般に用語集キット構築と呼ばれるソフトウェアアプリケーションの安定なランニングバージョンが必要である。更に、地域パートナーは、ローカリゼーションキットが配布された時のソフトウェアアプリケーション内の翻訳された用語の文脈に基づいて翻訳を検査するために、アプリケーションの安定なランニングバージョンを必要としよう。従って、第１ベースステージ２０（図１参照）の完了は、一実施例におけるソフトウェアアプリケーション内の合計コードの約60％の開発と同等と考えられる。
【００４９】
第１のインスタンスにおけるベース用語集の生成（ステップ８４）及び用語集凍結（ステップ８５）に続いて、地域パートナー訓練（ステップ８６）が遂行され、ＵＩコードをいろいろな言語バージョンに実際に翻訳する各地域からのパートナーが訓練され、翻訳プロセスを遂行するのに必要な手順及びツールの実演が行われる。地域パートナーは、ローカリゼーション及びエンジニアリングプロセスの見直し、ローカリゼーションキット構造、文書化手順、及びリポジトリの見直し及び構造／プロセスの構築、並びにどのようにしてローカリゼーションプロセス１６が構築されるか（プロジェクトのタイムラインを含む）の説明を含むローカリゼーションパースペクティブからアプリケーションの全ての面について訓練される。
【００５０】
ステップ８４を介しての第１ベース用語集の生成に対応するＵＩコードは用語集凍結（ステップ８５）時に、またはその前に実施されるが、アプリケーションの対応する機能を定義する対応非ＵＩコードは、コード完了（６０）主要管理点まで完全に実施する必要はない。その後のベースステージにおけるベースバージョン開発１２を介して付加的な機能が追加されるにつれて、新しい機能及び対応する非ＵＩコードに関連付けられた新しいＵＩコードを包含するように用語集が拡張され、新たに更新されたアプリケーションの安定バージョンに対する翻訳を相応に進めることができることは理解されよう。ベース用語集の各更新は、先行ベース用語集に基づいていようから、ローカリゼーションプロセス１６の各ステージにおける翻訳は維持されるが、もし必要ならば、変化させることができる。リポジトリ内の地域エントリの作成及び／または変更は、次の２つの方法で実施することができる。即ち、地域モード（例えば、ドイツ語）でリポジトリデータベース上へログし、リポジトリからのプロジェクトをチェックアウトし、そしてアプレットを編集する方法か、または、リポジトリ表へ、及び該表からストリングデータをインポートまたはエクスポートするために地域管理ユーティリティを使用する方法である。
【００５１】
地域パートナー訓練（ステップ８６）に続いて、ローカリゼーションプロセス１６は、ローカリゼーションプロセスの核心であるＵＩコード翻訳へ進む。ＵＩコード翻訳は、２つの分離した部分、即ち、用語集翻訳（ステップ８８）及びローカリゼーションキット完了（ステップ９０）として定義することができる。用語集翻訳（ステップ８８）はローカリゼーションキットを受ける前に遂行され、対応するローカリゼーションキットを完了させるために地域パートナーによって使用される全ての専門用語集のための基礎を形成する。用語集翻訳（ステップ８８）は、図２のステップ５６において現存ベース用語集がベースバージョン開発プロセス１２からローカリゼーションプロセス１６へ導かれると、用語集凍結（図２のステップ５８）に続いて遂行される。用語集凍結（ステップ８５）は、開発プロセス１０内の、ＵＩコードの定義された部分が実施され且つベース用語集が生成された時点である。ある点においては、限定的な静的用語集が翻訳のために使用可能でなけらばならず、これは用語集凍結主要管理点（ステップ８５）によって定義される。ソフトウェア開発１０が完了へ進むにつれて、現ベース用語集をソフトウェアアプリケーションの対応する機能的な面に関連して翻訳できるように、各用語集凍結（ステップ８５）にコード完了（ステップ６０）が後続する。生成されたベース用語集は、用語集内で識別された各ベース言語ストリングをその特定地域言語でその同等語に翻訳することによって、簡単に翻訳することができる。
【００５２】
ローカリゼーションプロセス１６内のこの点において、コード完了（ステップ６０）及び試験（ステップ６２）のために翻訳された用語集が、ベースバージョン開発プロセス１２へ戻される。ベースバージョン開発プロセス１２の第１ベースステージ２０内のコード完了（ステップ６０）及び試験（ステップ６２）、及びインターナショナリゼーションプロセス１４の第１国際ステージ（ステップ３０）に続いて、現存アプリケーションは、現存翻訳済みベース用語集、及び全ての現存機能を含むアプリケーションの構築を含む第１ローカリゼーションキットを生成するために、第１地域ステージ（図１のステップ４０）へ導かれ、ローカリゼーションキット完了（ステップ９０）が遂行される。
【００５３】
ローカリゼーションキット完了（ステップ９０）は、現存翻訳済みベース用語集に基づく残りの全てのＵＩコードの翻訳、アプリケーションの文脈による翻訳の検査、必要ならば翻訳されたストリングを受入れるためのユーザインタフェースの再サイジング、及び何等かのローカリゼーションバグの識別からなる。各コード完了主要管理点に続いて、且つ現存機能が構築内に組入れられた後に、ローカリゼーションキットが生成される。ローカリゼーションキットを生成するプロセスは、リポジトリからのものであろうが、または資源ファイルからのものであろうが、全ての翻訳可能なストリングと共働する。初期ローカリゼーションキットが生成された後に、エンジニアリングチームは、ベース言語ファイル及び／またはストリングと先行バージョン（もしあれば）とを比較し、全ての新しい、または変化したストリングを識別する。この比較プロセスは、上述した地域管理ユーティリティを使用して遂行することができる。
【００５４】
各ローカリゼーションパートナーは、若干異なる手法でローカリゼーションキット完了（ステップ９０）を遂行することができる。プロセスの例は、現存アプリケーションをより小さいモジュールに分割して翻訳者へ引渡すステップと、それに続いて、翻訳されたストリングを見直すステップと、もし必要ならば、例えばダイアログボックスを翻訳されたストリングを含むように再サイジングするステップとを含むことができる。この点において、翻訳されたローカリゼーションキットがベースバージョン開発プロセス１２へ戻され（ステップ９１）、ベース言語を翻訳した複数の各言語のＵＩコードを含む主多重言語リポジトリ内へ組入れられる。ベースバージョン開発プロセス１２及びインターナショナリゼーションプロセス１４の場合と同様に、定義された機能が未だに100％完了ではない場合には（ステップ９２参照）、ローカリゼーションプロセス１６はステップ８８から繰り返される。この繰り返しループ内には、ベース用語集（ステップ９４）及び用語集凍結（ステップ９６）生成のためのステップも組み入れられている。これらのステップは、この点における用語集生成及び凍結は先行ローカリゼーションステージから存在する用語集に基づいていようから、ステップ８４及び８５から別個に指定されている。
【００５５】
各ローカリゼーションステージが完了すると、翻訳されたＵＩコードは多重言語リポジトリ内へ組入れられ、それからリポジトリファイルを作成することができる。リポジトリファイルは、リポジトリ内の全てのエンティティをコンパイルすることによって生成されたオブジェクトファイルである。そこで、オブジェクトコンパイラは、リポジトリフィルがコンパイルされた言語に依存して、適切なメッセージテキストをメッセージ表からリポジトリファイルへ挿入することができる。オブジェクトコンパイラは、適切なメッセージテキストをメッセージ表からリポジトリ内の特定オブジェクトへマップし、従ってリポジトリファイルはそれが生成された特定の言語に特定である。
【００５６】
コードが実質的に100％完了した（ステップ９２が判断）後にローカリゼーションプロセス１６はローカリゼーション検査ステップ９８へ進み、開発したアプリケーションを美的及び言語的問題について見直す。
【００５７】
ベースバージョン開発、インターナショナリゼーション、及びローカリゼーションプロセス１２、１４、１６が開発プロセス１０の各ステージを用いて繰り返しループをサイクルする場合、定義された機能、及び対応するユーザインタフェースに関してコードが100％実施されてしまうまで、先行インタラクションが繰り返される。この点において、インターナショナリゼーションが確認され（図３のステップ８３）、ローカリゼーション検査が完了し（ステップ９８）、そしてベースバージョン開発はコード冷却（code chill）として知られるステップ６６へ進む。コード冷却（ステップ６６）は、アプリケーションの定義された機能及びユーザインタフェースが完全にコード化され、且つ第３国際ステージ（図１のステップ３４）及び第３ローカリゼーション（ステップ４４）からの最終確定がベースバージョンプロダクト主コードライン内へ組み入れられる点を表す。
【００５８】
コード冷却（ステップ６６）に続いて、ベースバージョン開発１２はコード凍結（ステップ６８）へ進む。コード凍結（ステップ６８）は、開発中のソフトウェアバージョンの主コードラインがロックされ、全てのＰ０及びＰ１バグが識別されて確定されるか、または据え置かれてしまう点における主要管理点を表す。偶発的な変更または追加を防ぐために、この点において何かを変化させようとするには例外承認を必要とする。
【００５９】
コード凍結（ステップ６８）に続いて、ゴールデンマスタ候補が構築されて（ステップ７０）試験され、一般利用可能公開（ステップ７２）が顧客への多言語同時出荷のためのソフトウェアアプリケーションの開発を完了させる。
【００６０】
多言語同時出荷のためのアプリケーションの単一の多重言語構築の一部として、多重言語インストレーションプロセスは、アプリケーションのユーザが、インストーラを多重言語の何れか１つで走らせることを可能にし、また多言語同時出荷の一部として包含される複数の言語の１つまたはそれ以上をインストールし、走らせる能力を有することを可能にする。例えば、顧客はアプリケーションインストーラを発進させ、彼等が英語プロダクトのインストールを欲していることを決定し、同時に彼等がインストーラにイタリア語でのインストレーションの遂行を欲していることを決定することができる。複数の言語をインストールできる能力は、ソフトウェアベンダとアプリケーションのエンドユーザとの間でライセンス合意期間の承認を得なければならないかも知れない。
【００６１】
以上に本発明を限定された数の実施例に関して説明したが、本発明は本発明の本質的な特徴の思想から逸脱することなく実施することができる。従って、図示し、説明した実施例は、要約書の記述を含めて全て単なる例示に過ぎず、本発明を限定するものではない。本発明の範囲は、以上の説明によってではなく、特許請求の範囲によって限定されるものであり、全ての変化は従属請求項の意味及び範囲内に包含されるものと理解されたい。
【図面の簡単な説明】
【００６２】
【図１】多言語同時出荷のためのソフトウェアプロダクトのベースバージョン開発、インターナショナリゼーション、及びローカリゼーションの間のインタラクション及び並行進行を示すフローチャートである。
【図２】ベースバージョン開発を示すフローチャートである。
【図３】インターナショナリゼーションプロセスを示すフローチャートである。
【図４】ローカリゼーションプロセスを示すフローチャートである。
【図１】
2004528653.tif 000003
【図２】
2004528653.tif 000004
【図３】
2004528653.tif 000005
【図４】
2004528653.tif 000006
【国際公開パンフレット】
2004528653.tif 000007
2004528653.tif 000008
2004528653.tif 000009
2004528653.tif 000010
2004528653.tif 000011
2004528653.tif 000012
2004528653.tif 000013
2004528653.tif 000014
2004528653.tif 000015
2004528653.tif 000016
2004528653.tif 000017
2004528653.tif 000018
2004528653.tif 000019
2004528653.tif 000020
2004528653.tif 000021
2004528653.tif 000022
2004528653.tif 000023
2004528653.tif 000024
2004528653.tif 000025
2004528653.tif 000026
2004528653.tif 000027
2004528653.tif 000028
2004528653.tif 000029
2004528653.tif 000030
2004528653.tif 000031
2004528653.tif 000032
2004528653.tif 000033
2004528653.tif 000034
2004528653.tif 000035
2004528653.tif 000036
2004528653.tif 000037
2004528653.tif 000038
2004528653.tif 000039
2004528653.tif 000040
【国際公開パンフレット（コレクトバージョン）】
2004528653.tif 000041
2004528653.tif 000042
【国際調査報告】
2004528653.tif 000043
2004528653.tif 000044