JP5965080B2 - コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト - Google Patents

コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト Download PDF

Info

Publication number
JP5965080B2
JP5965080B2 JP2015547044A JP2015547044A JP5965080B2 JP 5965080 B2 JP5965080 B2 JP 5965080B2 JP 2015547044 A JP2015547044 A JP 2015547044A JP 2015547044 A JP2015547044 A JP 2015547044A JP 5965080 B2 JP5965080 B2 JP 5965080B2
Authority
JP
Japan
Prior art keywords
software
new
source code
code
load balancer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015547044A
Other languages
English (en)
Other versions
JP2016505952A (ja
Inventor
ヨハンソン、ベント
ペッテション、ステン
アンデルソン、ペル
シャティラ、アブダラ
フランセーン、アンデシュ
マロワ、ジョン
ニルソン、トルド
ハマム、タリク
トレンブレイ、リチャード
Original Assignee
テレフオンアクチーボラゲット エルエム エリクソン(パブル)
テレフオンアクチーボラゲット エルエム エリクソン(パブル)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by テレフオンアクチーボラゲット エルエム エリクソン(パブル), テレフオンアクチーボラゲット エルエム エリクソン(パブル) filed Critical テレフオンアクチーボラゲット エルエム エリクソン(パブル)
Publication of JP2016505952A publication Critical patent/JP2016505952A/ja
Application granted granted Critical
Publication of JP5965080B2 publication Critical patent/JP5965080B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、一般的に、ソフトウェアのビルド処理及びロード処理に関し、より具体的には、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクトに関する。
典型的には、ソフトウェアアプリケーションがビルドされた後、ソースコード、構成ファイル、及び他の人工物(artefacts)が生成され、コンパイルされ、ロードモジュールへとパッキングされる。これらロードモジュールは、一旦ビルドされると、実行環境へと輸送され、そこでロードされて恐らくは処理ユニットへリンク付けされる。
図1は、典型的なビルド処理を示すフローチャートである。ソースファイル110が提供され、又はソースファイル110はジェネレータ120を用いて自動的に作成される。ジェネレータ120は、例えば汎用フレーム、クラス、プロトタイプ、テンプレート、アスペクト又は他の存在論的モデルを用いて、ソースファイル110を自動的に生成するために構成ファイル100を使用し得る。ジェネレータ120は、テンプレートプロセッサ又は統合開発環境(“IDE”)といった1つ以上のプログラミングツールをも含み得る。
ソースファイル110は、コンパイラ130によりオブジェクトファイル140へとコンパイルされ得る。コンパイラ130は、1つのプログラミング言語で書かれたソースコードを他のコンピュータ言語へと変換するプログラム又はプログラムのセットであり得る。例えば、コンパイラ130は、高級プログラミング言語からソースコードをアセンブリ言語又はマシンコードといったより低級な言語へと変換し得る。
典型的なビルド処理において、図1に示したように、コンパイラ130は、ソースファイル110をオブジェクトファイル140へと変換し得る。オブジェクトファイル140は、例えば、再配置可能なフォーマットのマシンコードを含み得る。オブジェクトファイル140は、直接的に実行可能ではないかもしれず、アーカイバ150へと入力され得る。アーカイバ150は、リンカ又はリンクエディタであってよく、コンパイラ130により生成された1つ以上のオブジェクトファイルを受け取って、それらを単一の実行可能なプログラムあるいはロードモジュール160へと組み合わせる。コンピュータアプリケーションは、複数のモジュール160を含んでよく、それらモジュールの全てが必ずしも単一のオブジェクトファイル140内に包含されるわけではない。例えば、オブジェクトファイル140は、アーカイバ150により解決されるシンボルを包含してよく、アーカイバ150は、オブジェクトファイル群を統一的な実行可能プログラムあるいはロードモジュール160へとリンク付けする。結果として、ロードモジュール160は、“ELF(Executable and Linkable Format)”アーカイブ、JAR(Java ARchive)若しくはTAR(Tape ARchive)ファイル、“DEB”(DEB)若しくはRPMパッケージ、又は他のコンテナを含み得る。
ロードモジュールがソフトウェアアプリケーションのために一旦ビルドされると、ソフトウェアアプリケーションのタイプによって、ロードされるべきビルドが行われたサイトからロードモジュールがいかにして処理ユニットへと送信されるかが決定され得る。現在のところ、ロードユニット(load-units)を処理ユニットへと送信する際、新たなロードユニットは処理ユニット上の既存のソフトウェアと干渉しないことが前提とされることが多い。加えて、新たなロードモジュールは、ミドルウェア及びオペレーティングシステムといった処理ユニット上で基礎となるソフトウェアフレームワークと整合していることが前提とされることが多い。いくつかの例では、新たなロードモジュールは、処理ユニット上のサンドボックス内でテストされ得る。サンドボックスは、実際の機器の運用に干渉するリスク無く、新たなロードモジュールを実際の処理ユニットの環境に対してテストすることを可能にする。
図2は、処理ユニットへとロードされる複数のロードモジュールを示すフローチャートである。典型的なロード処理において、最悪のケースは、ロードモジュール160が処理ユニット200へとロードされる際に、何らのチェックも行われないことである。他のケース−apt or yumのようなパッケージマネージャが使用される場合など−では、新たなパッケージが処理ユニット200へとロードされ又は既存のパッケージがアップデートされる際に、初歩的な依存関係チェックが実行される。1つ以上の依存関係に違反するパッケージはロードされないかもしれない。
図1及び図2に示したような上述したビルド処理及びロード処理は、ソフトウェアの変更が相対的に頻繁には行われない静的な環境において、良好に機能する。例えば、現在の処理は、デスクトップセッティングにおいて又は小規模サーバファームにおいては十分であり得る。しかしながら、現代の環境において、上述したビルド処理及びロード処理は、問題を呈している。例えば、大規模なデータセンタ及びクラウド配備においては、通常のコンテナ又はパッケージシステムは十分でない。加えて、データセンタ及びクラウド環境ではステートの変化が頻繁であることから、頻繁なロードモジュールの配備を要する。さらに、特にクラウド環境では、機能中のソフトウェアをパッケージ化し、動的に割り当てられる仮想マシン上でそれを配備することができなければならない。
複雑なアプリケーションは、複数の処理ユニット200にわたって展開(stretch)されることも多い。アプリケーションが複数の処理ユニット200にまたがることは一般的であり、そのため、インストール及びアップグレードは、複数の処理ユニット200をまたいで協調的に行われなければならない。例えば、ソフトウェアは、特定のタスクを実行する複数の処理ユニット200へとロードされる必要があるかもしれず、結果として、ソフトウェアの異なる断片が処理ユニットへのロードの際に協働しなければならない。処理ユニット200及びサービスが異なる要件を有する複数のユーザの間で共有されることもあり得る。加えて、新たなソフトウェアは、既存のソフトウェアと干渉し、それにより処理ユニット上での実行の際にエラー及びダウンタイムを引き起こすかもしれない。
従って、現在のソフトウェアのビルド処理及びロード処理のそれら欠点を克服するというニーズが存在する。
具体的な実施形態は、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクトを対象とする。
ある実施形態において、コンパイル(compilation)及び配備(deployment)サービスを提供するために配置されるサーバ(あるいはサービス)へソフトウェアがロードされる。当該サービスは、例えばターゲット処理ユニットにより採用されるアクティブソフトウェアの全てを記憶することを許容するように構成されるデータベースを提供する。アクティブソフトウェアは、ソース形式又は中間的形式であってよい。例えば、中間的なフォーマットとは、ターゲット環境向けのネイティブオブジェクトコードであってよい。
1つの具体的な実施形態において、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のための方法が提供される。上記方法は、上記サービスにおいて、新たなソフトウェアを受信することを含む。上記方法は、上記サービスにおいて、受信される新たなソフトウェアを、データベース内のアクティブソフトウェアを含むデータと比較することをさらに含む。上記方法は、上記サービスにおいて、比較に基づいて、新たなソフトウェアとアクティブソフトウェアとを1つ以上のロードモジュールへと統合することをさらに含む。上記方法は、上記1つ以上のロードモジュールを、1つ以上のターゲット処理ユニットへと配備することをさらに含む。
ある実施形態において、上記新たなソフトウェアは、コンテナへとパッケージ化されたソースコードであってよい。当該実施形態において、比較するステップは、過去に定義された拘束条件(restraints)及びアクティブソフトウェアに対して、ソースレベルでソースコードをチェックすること、をさらに含む。加えて、統合するステップは、上記サービスにおいて、ソースコードをアクティブソフトウェアと統合してコンパイルすること、をさらに含む。
ある実施形態において、新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナへとパッケージ化されたコンパイル済みのソースコードであってよい。当該実施形態において、データベース内のデータは、アクティブソフトウェアに関連付けられる1つ以上の既存のマニフェストのファイルを含む。比較するステップは、新たなマニフェストを抽出することと、予め定義される制約(constraints)及び1つ以上の既存のマニフェストに対して、新たなマニフェストをチェックすることと、をさらに含む。
いくつかの実施形態において、新たなソフトウェアは、中間フォーマットソースコードであってよい。当該実施形態において、上記方法の比較するステップは、中間フォーマットソースコードを、予め定義される制約及びアクティブソフトウェアに対してチェックすること、をさらに含む。加えて、統合するステップは、中間フォーマットソースコードを完全にコンパイルすること、をさらに含む。いくつかの実施形態において、統合するステップは、中間フォーマットソースコードを文(statement)及び式(expression)のレベルでアクティブソフトウェアと統合すること、をさらに含んでよい。
いくつかの実施形態において、上記方法は、上記サービスにおいて、受信される新たなソフトウェアの1つ以上のコード特性を受信すること、をさらに含み、データベースのデータは、アクティブソフトウェアの記憶された特性を含む。上記方法は、上記サービスにおいて、データの比較の一部として、受信される新たなソフトウェアのコード特性を、アクティブソフトウェアの記憶されたコード特性と比較すること、をさらに含む。
他の実施形態において、ターゲット処理ユニットは、1つ以上のSGSNノード及びロードバランサを含み、新たなソフトウェアは、SGSNソフトウェア及び新たなロードバランサルールを含み、データは、既存のロードバランサルールを含む。
いくつかの実施形態において、上記方法の比較するステップは、1つ以上のロードバランサチェッカ及びコンパイラを用いて、既存のロードバランサルールに対して、新たなロードバランサルールをチェックすること、をさらに含む。上記方法の統合するステップは、新たなロードバランサルールのうちの、既存のロードバランサルールと共通的な部分を統合することと、既存のロードバランサルールと競合する新たなロードバランサルールをレポートすることと、をさらに含む。
いくつかの実施形態において、上記方法の比較するステップは、1つ以上のSGSNチェッカ及びコンパイラにおいて、SGSNソフトウェアをチェックすること、をさらに含む。
いくつかの実施形態において、ターゲット処理ユニットは、1つ以上のプロセッサアーキテクチャ、オペレーティングシステム、及び/又は新たなソフトウェアの意図される用途、のうちの1つ以上により分類される。
具体的な実施形態によれば、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステムが提供される。上記システムは、サーバと、サーバへ連結されるプロセッサと、プロセッサへ連結されるメモリと、サーバへ電子的に連結されるデータベースと、を備えるコンパイル及び配備サービスを含む。上記プロセッサは、新たなソフトウェアを受信するように構成される。上記プロセッサは、受信される新たなソフトウェアを、データベース内のアクティブソフトウェアを含むデータと比較するようにさらに構成される。上記プロセッサは、上記比較に基づいて、新たなソフトウェアとアクティブソフトウェアとを1つ以上のロードモジュールへと統合する、ようにさらに構成される。加えて、上記プロセッサは、1つ以上のロードモジュールをターゲット処理ユニットへと配備するようにさらに構成される。
ある実施形態において、新たなソフトウェアは、コンテナへとパッケージ化されたソースコードであり、上記プロセッサは、過去に定義された拘束条件及びアクティブソフトウェアに対して、ソースレベルでソースコードをチェックする、ようにさらに構成されてよい。上記プロセッサは、ソースコードをアクティブソフトウェアと統合してコンパイルする、ようにもさらに構成され得る。
他の実施形態において、新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナへとパッケージ化されたコンパイル済みのソースコードである。当該実施形態において、データベース内のデータは、アクティブソフトウェアに関連付けられる1つ以上の既存のマニフェストのファイルを含み得る。加えて、上記プロセッサは、新たなマニフェストを抽出し、予め定義される制約及び1つ以上の既存のマニフェストに対して、新たなマニフェストをチェックする、ようにさらに構成され得る。
いくつかの実施形態において、新たなソフトウェアは、中間フォーマットソースコードであり、上記プロセッサは、中間フォーマットソースコードを、予め定義される制約及びアクティブソフトウェアに対してチェックする、ようにさらに構成される。上記プロセッサは、中間フォーマットソースコードを完全にコンパイルする、ようにさらに構成されてよい。いくつかの実施形態において、上記プロセッサは、中間フォーマットソースコードを文(statement)及び式(expression)のレベルでアクティブソフトウェアと統合する、ようにさらに構成され得る。
いくつかの実施形態において、上記システムは、受信される新たなソフトウェアの1つ以上のコード特性を受信するようにさらに構成されるプロセッサ、をさらに含み、データベースのデータは、アクティブソフトウェアの記憶された特性を含む。上記プロセッサは、データの比較の一部として、受信される新たなソフトウェアのコード特性を、アクティブソフトウェアの記憶されたコード特性と比較する、ようにさらに構成され得る。
他の実施形態において、ターゲット処理ユニットは、1つ以上のSGSNノード及びロードバランサを含み、新たなソフトウェアは、SGSNソフトウェア及び新たなロードバランサルールを含み、データは、既存のロードバランサルールを含む。いくつかの実施形態において、上記システムは、既存のロードバランサルールに対して、新たなロードバランサルールをチェックする、ようにさらに構成されるプロセッサ、を含み得る。上記プロセッサは、新たなロードバランサルールのうちの、既存のロードバランサルールと共通的な部分を統合する、ようにさらに構成され得る。上記プロセッサは、既存のロードバランサルールと競合する新たなロードバランサルールをレポートする、ようにもさらに構成され得る。いくつかの実施形態において、上記システムは、1つ以上のSGSNチェッカ及びコンパイラ、をさらに含んでもよく、上記プロセッサは、1つ以上のSGSNチェッカ及びコンパイラを用いて、新たなSGSNソフトウェアをチェックする、ようにさらに構成される。
他の実施形態によれば、コンピュータ読取可能な媒体において具現化されるコンピュータ読取可能なプログラムコードを記憶する当該媒体を含む、非一時的なコンピュータプログラムプロダクトが提供される。上記コンピュータプログラムプロダクトは、デバイスに、新たなソフトウェアを受信させるためのプログラムコードを含む。上記コンピュータプログラムプロダクトは、デバイスに、受信される新たなソフトウェアを、データベース内のアクティブソフトウェアを含むデータと比較させるためのプログラムコード、をさらに含む。上記コンピュータプログラムプロダクトは、デバイスに、上記比較に基づいて、新たなソフトウェアとアクティブソフトウェアとを1つ以上のロードモジュールへと統合させるためのプログラムコード、を含む。加えて、上記コンピュータプログラムプロダクトは、デバイスに、ロードモジュールを1つ以上のターゲット処理ユニットへと配備させるためのプログラムコード、を含む。
ある実施形態において、新たなソフトウェアは、コンテナへとパッケージ化されたソースコードである。上記コンピュータプログラムプロダクトは、デバイスに、過去に定義された拘束条件及びアクティブソフトウェアに対してソースレベルでソースコードをチェックさせるためのプログラムコード、をさらに含む。上記コンピュータプログラムプロダクトは、上記デバイスに、ソースコードをアクティブソフトウェアと統合させコンパイルさせるためのプログラムコード、をさらに含む。
他の実施形態において、新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナへとパッケージ化された当該コンパイル済みのソースコードである。加えて、データベース内のデータは、アクティブソフトウェアに関連付けられる1つ以上の既存のマニフェストのファイルを含む。上記コンピュータプログラムプロダクトは、上記デバイスに、新たなマニフェストを抽出させ、予め定義される制約及び1つ以上の既存のマニフェストに対して新たなマニフェストをチェックさせるためのプログラムコード、をさらに含む。
いくつかの実施形態において、新たなソフトウェアは、中間フォーマットソースコードである。上記コンピュータプログラムプロダクトは、上記デバイスに、中間フォーマットソースコードを予め定義される制約及びアクティブソフトウェアに対してチェックさせるためのプログラムコード、をさらに含んでよい。上記コンピュータプログラムプロダクトは、上記デバイスに、中間フォーマットソースコードを文(statement)及び式(expression)のレベルでアクティブソフトウェアと統合させるためのプログラムコード、をさらに含んでよい。
ここに取り入れられ明細書の一部を成す添付図面は、本開示の多様な実施形態を描いており、本説明と共に、本開示の原理を説明し、関連分野における当業者がここで開示される実施形態を活用することを可能とするためにさらに供される。図面において、同等の参照番号は同一の又は機能的に同様のエレメントを指し示す。
典型的なビルド処理を示すフローチャートである。 処理ユニットへロードモジュールがロードされる様子を示すフローチャートである。 例示的な実施形態に係る配備サービスを用いる配備を示すフローチャートである。 例示的な実施形態に係るアプリケーションプロセッサにサービスしているロードバランサを示すフローチャートである。 例示的な実施形態に係るSGSN関連の新たなソフトウェアのチェック及びビルドの最終ステージを示すフローチャートである。 例示的な実施形態に係る配備サービスを用いる配備の方法を示すフローチャートである。 例示的な実施形態に係るサービスを概略的に示す機能ブロック図である。
具体的な実施形態は、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクトを対象とする。
新たなソフトウェアは、ロードモジュールの作成及び配備を管理するサービスへとロードされ得る。当該サービスは、新たなソフトウェアのロードモジュールを処理ユニットへと配備する仲介者として動作し得る。いくつかの実施形態において、上記サービスは、データベースを含むサーバである。当該データベースは、最新の時点でターゲット処理ユニット上で実行されているアクティブソフトウェアの全て、当該サービスにより過去に受信されターゲット処理ユニットへと配備されたソフトウェア、及び/又はターゲット処理ユニットに関する制約といった他の情報を包含し得る。アクティブソフトウェアは、例えばソース形式又は中間フォーマットといった、複数の異なるフォーマットで記憶されてよい。いくつかの実施形態において、中間フォーマットは、ターゲット処理ユニット環境向けのネイティブオブジェクトコードであってよい。
いくつかの実施形態において、上記サービスは、ソース形式又は何らかの事前にコンパイル済みの中間コードのいずれかで新たなソフトウェアを受信し得る。例示的な実施形態において、中間コードは、ターゲット処理ユニットに対する適合性(compliance)についてサービスがコードを調査し及びチェックすることを可能にする。適合性が一旦チェックされると、上記サービスは、新たなソフトウェアを、過去にサービスへとアップロードされデータベース内に格納されたソフトウェアと統合することができる。いくつかの実施形態において、統合されたソフトウェアから新たなロードユニット群を生成し、これらをターゲット処理ユニットへと配備することができる。
次に図3を参照すると、例示的な実施形態に係る配備サービスを用いた配備を描いたフローチャートが示されている。例示的な実施形態において、サービス300は、処理ユニット340上へ配備されるべき新たなソフトウェアを受信する。いくつかの実施形態において、ソースファイル及び/又は中間コード310であり得る新たなソフトウェアは、プリコンパイラによって、1つ以上のコンテナ320へとパッケージ化され得る。サービス300は、1つ以上のコンテナ320を受信し得る。例示的な実施形態において、いかなるアップロードされるコンテナ320も、配備サービス300がアクティブソフトウェア及びターゲット処理ユニットの情報との適合性についてコンテナ320の内部のコードを調査し及びチェックするために適切な形式をとるコード310を含み、その情報はデータベース内に記憶され得る。
例示的な実施形態において、サービス300は、受信される新たなソフトウェアがアクティブな又は既存のソフトウェアと共に作動することを保証する。1つの利点は、新たなソフトウェアがアクティブソフトウェアと作動することを処理ユニット340へ配備される前に保証できることである。他の利点は、ソースコードの開示を強いられることなく、処理ユニット340上の既存のソフトウェアとの適合性について異なるサプライヤからのソフトウェアをチェックできることである。
新たな中間コードを作成し、当該中間コードをアクティブソフトウェアと共にチェックする場合のいくつかの可能性が存在する。1つの実施形態において、例えば、ソースコード310は、サービス300により受信される前にコンテナ320へとパッケージ化されてもよい。サービス300は、データベース内の予め定義される制約及び/又はアクティブコードに対して、上記ソースコードをチェックし又は比較し得る。制約の全てが充足される場合、新たなコードはコンパイルされ、他のアクティブソフトウェアと統合され、ロードモジュール330になり得る。コンパイルされる形式は、例えば、ネイティブオブジェクトコード、又はJava仮想マシン(”JVM”)といった中間的な仮想マシンコードを含み得る。
いくつかの実施形態において、ソースコード310は、コンテナ320へとコンパイルされパッケージ化されてよく、コンテナ内のコードを説明するマニフェストがコンテナ320と共に伝送され得る。概して、ソース及び中間コードを含むコードに関する特性がサーバ300により受信され得る。サーバ300は、コンテナ320の内部のコードと、当該コンテナの内部のコードのプロパティ(即ち、コード特性)を記述するマニフェストとを受信してもよい。いくつかの実施形態において、サービス300は、コンテナ320内のコードを受信すると、そのコードを説明するマニフェストを抽出し、当該マニフェストを、データベース内に記憶されている、予め定義される制約(即ち、コード特性)及びアクティブな又は過去にアップロード済みのコードの他のマニフェストに対してチェックする。制約の全てが充足される場合、サービス300は、コンパイルされた新たなソフトウェア、又はコンテナ320内のコードを、データベース内に記憶されている他のアクティブソフトウェアと統合して、1つ以上のロードモジュール330を形成する。
ある実施形態において、ソースコード310は、人間には読み取り不能であるもののプログラムによって調査可能な中間フォーマットへとコンパイルされてもよい。そのセミコンパイル済みコード310がコンテナ320内にパッケージ化され、サービス300によって受信されてもよい。サービス300は、データベース内に記憶される、予め定義される制約(即ち、コード特性)及びアクティブコードに対して、セミコンパイル済みコードを適合性についてチェックし得る。制約の全てが充足される場合、コードは、その最終形式へとコンパイルされ、他のアクティブソフトウェアと統合されて、ロードモジュール330になり得る。コンパイルされる形式は、例えば、ネイティブオブジェクトコード、又はJava仮想マシン(”JVM”)といった中間的な仮想マシンコードを含み得る。
上述した及び他の実施形態の1つの利点は、新たなソフトウェア310、320がソース形式でアップロードされることを要さず、従って人間によっては容易に調査可能ではないことである。しかしながら、新たなソフトウェアは、サービス300上で実装される整合性チェッカにとってその複雑さの全てにおいて利用可能である。例えば、新たなソフトウェアは、何らかのあり得る不整合性又は制約について、文(statement)及び式(expression)のレベルにまでサービスの整合性チェッカによってチェックされてよい。他の利点は、文及び式のレベルにまで、セミコンパイル済みコードを他のアクティブコードと込み入った形で統合することが可能なことであり得る。従って、サービス300がアプリケーションの一部を受信し、一旦整合性及び他の制約についてチェックしたならば、それをアプリケーション全体と完全に統合することが可能であり得る。さらに可能なこととして、サービス300は、異なる複数のサプライヤからのソフトウェアの断片を1つのアプリケーションへと統合し得る。
いくつかの実施形態において、データベースは、例えばプロセッサアーキテクチャ及びオペレーティングシステムなどを含むターゲット処理ユニット340の分類を含む。データベースは、処理ユニット340が当該処理ユニット向けであることを意図される新たなソフトウェアのみを受信し得るように、処理ユニット340又はアクティブソフトウェアの意図される用途に関する分類情報を含んでもよい。それら分類及び分類情報は、新たなソフトウェア又はアクティブソフトウェアに関連付けられるコード特性の一部として含まれることができる。
さらに、いくつかの実施形態において、サービス300は、ロードモジュール330を処理ユニット340へと配備し得る。一旦ビルド処理が開始すると、サービス300は、新たなソフトウェアの変更により影響を受けるターゲット処理ユニット340のためのロードモジュール330を生成し又は再ビルドし得る。サービス300は、ロードモジュール330の再ビルド又はビルドの後に、ロードモジュールをターゲット処理ユニット340へとロードし及びアクティブ化する。
次に図4を参照すると、いくつかの実施形態に係るアプリケーションプロセッサにサービスしているロードバランサを描いたフローチャートが示されている。いくつかの実施形態において、処理ユニットのいくつかは、アプリケーション410を実行しているいくつかの他の処理ユニットのためのロードバランサとして動作する。アプリケーションは、例えばウェブサーバ、SIPサーバ、モビリティ管理エンティティ(“MME”)ノード、ホーム加入者サーバ(“HSS”)ノードなどを含む、ネットワークからパケットを受け付ける何らかのアプリケーションを含み得る。
アプリケーションプロセッサ410の構成は、動的であって、時間にわたって変化してよい。いくつかの実施形態において、構成が変更される場合、新たな及び/又はアップデートされたアプリケーションを収容する目的で、ロードバランサ400のソフトウェアがアップデートされる。いくつかの実施形態において、図4のセットアップによれば、システムは、最新の時点でウェブサーバ及びSIPサーバを処理ユニット410上で実行している。例えば、SGSNノードとして稼動するために、処理ユニット410のいくつかを再構成することが望まれ得る。結果的に、SGSNソフトウェアが処理ユニット410のいくつかの上にインストールされることが必要であろう。加えて、ロードバランサ400が無線ネットワークからの接続をそれらをハンドリングする特定のアプリケーションプロセッサへと分散させ得るように、ロードバランサ400上のソフトウェアをアップグレードする必要があり得る。
図5は、例示的な実施形態に係る新たなSGSN関連ソフトウェアのチェック及びビルドの最終ステージを示すフローチャートである。上の例で説明したように、ウェブサーバ及びSIPサーバのみを伴うシステムにおいて、SGSNノードを実行するようにある処理ユニットを再構成することが望ましくあり得る。いくつかの実施形態によれば、サービス300は、新たなSGSNソフトウェアバンドル510又は新たなソフトウェアと、当該新たなSGSNソフトウェアバンドル510に関連付けられるロードバランサルール520とを受信し得る。
いくつかの実施形態において、サービス300は、SGSNチェッカ及びコンパイラ540aを通じて、新たなSGSNソフトウェアバンドル510を実行し得る。いくつかの実施形態において、SGSNチェッカ及びコンパイラ540aは、新たなSGSNソフトウェアを、例えばサーバ300によりアクセス可能なデータベース内に記憶されているアクティブSGSNソフトウェア又は処理ユニット制約と比較し得る。SGSNソフトウェアバンドル510がSGSNチェッカ540aにより実行される上記比較を成功裏に完了すると、新たなSGSNソフトウェアバンドル510が1つ以上の処理ユニットにより理解可能なコードへとコンパイルされ、SGSNロードモジュール550aへとロードされ得る。
いくつかの実施形態において、ロードバランサルール520は、人間によっては読み取り不能だがサーバ300上のルールコンパイラの次のステージによりパース可能な形式へと、プリコンパイルされる。例示的な実施形態では、新たなロードバランサルール520が既存のロードバランサルール525に対してチェックされる。既存のロードバランサルール525は、例えば、サーバ300によりアクセス可能なデータベース内に記憶されていてよい。いくつかの実施形態では、ロードバランサチェッカ及びコンパイラ540bが存在し、ロードバランサチェッカ及びコンパイラ540bは、新たなロードバランサルール520を比較し及びコンパイルする。ロードバランサチェッカ及びコンパイラ540によって行われる上記比較は、新たなロードバランサルール520及び既存のロードバランサルール525のどの部分が共通的であるかを判定することを含み得る。上記比較は、新たなロードバランサルール520及び既存のロードバランサルール525の競合する部分を判定し及びレポートすることをも含み得る。これらロードバランサルールは、新たなソフトウェア又はアクティブソフトウェアに関連付けられるコード特性の一部として含まれることができる。
いくつかの実施形態において、ロードバランサチェッカ及びコンパイラ540は、新たなロードバランサルール520の全てを既存のロードバランサルール525と統合してもよく、又は、ルールのうちの共通ルールといったサブセットのみを統合してもよい。加えて、統合されたルールは、ロードバランサにより理解可能なコードへとコンパイルされてよく、そしてロードモジュール550bへとパッケージ化される。いくつかの実施形態では、エラーが発生した場合―例えば、いくつかの新たなロードバランサルール520が既存のロードバランサルール525と競合することになる場合―古いソフトウェアバージョンはターゲット処理ユニットから除去されないであろう。さらに、トランザクションを開始したユーザへとエラーレポートが返送されてもよい。
次に図6を参照すると、例示的な実施形態に係る配備サービスを用いた配備の方法を描いたフローチャートが示されている。いくつかの実施形態において、ステップS600によれば、サービスは、新たな又は修正されたソフトウェアを受信する。上で説明したように、受信されるソフトウェアは、ソースコード形式、中間的な形式、コードを説明するマニフェストを伴うコンパイル済み形式などを含む多くの異なるフォーマットをとり得る。
いくつかの実施形態において、ステップS610によれば、サービスは、受信された新たなソフトウェアをデータベース内のデータと比較する。当該データは、例えば、その時点でターゲット処理ユニット上に配備されているアクティブソフトウェア、サービスにて過去に受信済みのソフトウェア、ソフトウェア及び/若しくはターゲット処理ユニットに関する制約、ソフトウェア及び/若しくはターゲット処理ユニットに関するコード特性などを含み得る。上記比較は、例えば、他の制約及びコード特性の評価に加えて、受信される新たなソフトウェアとアクティブソフトウェアとの間の不整合性(inconsistencies)についてのチェック、例えばオペレーティングシステム要件といった互換性(compatibility)についてのチェックなどを含み得る。
ステップS620によれば、いくつかの実施形態において、サービスは、新たなソフトウェアとアクティブソフトウェアとを、ステップS610の比較に基づいて、1つ以上のロードモジュールへと統合する。上で説明したように、新たなソフトウェアは、ソースコード形式又は中間的な形式であってよく、加えてアクティブソフトウェアとのロードモジュールへの統合の目的でコンパイルされる必要があり得る。さらに、上記比較に基づいて、新たなソフトウェアは、その全体として、又は新たなソフトウェア及びアクティブソフトウェアの間で共通するコンポーネントのみといったサブセットとして、アクティブソフトウェアと統合され、及びロードモジュールへとビルドされ得る。
いくつかの実施形態において、ステップS630によれば、1つ以上のロードモジュールが1つ以上のターゲット処理ユニットへと配備され得る。その配備は、例えば当該処理ユニットに関するデータベースに含まれるデータに基づき得る。
次に図7を参照すると、例示的な実施形態に係るサービスを概略的に描いた機能ブロック図が示されている。サービス300は、プロセッサ又は他の処理手段、メモリ又は他の記憶手段、及びネットワークインタフェース又は他のネットワーキング手段を含み得る。例示的な実施形態において、デバイスは、データ処理システム700(例えば、マイクロプロセッサ、ASIC(application specific integrated circuits)、FPGA(Field-programmable gate arrays)、ロジック回路、及び他の回路、のうちの1つ以上)と、データストレージシステム725(例えば、ハードディスク、フラッシュメモリ又は他のストレージユニットといった不揮発性メモリ)と、ネットワークインタフェース720とを含む。
データストレージシステム725は、1つ以上の不揮発性ストレージデバイス及び/又は1つ以上の揮発性ストレージデバイス(例えば、ランダムアクセスメモリ(RAM))を含み得る。サービス300がデータ処理システム700及びマイクロプロセッサを含む例においては、コンピュータ読取可能なプログラムコードがコンピュータ読取可能な媒体内に記憶されてよく、そうした媒体は、限定ではないものの、磁気媒体(例えば、ハードディスク)、光媒体(例えば、DVD)、メモリデバイス(例えば、ランダムアクセスメモリ)などである。いくつかの実施形態において、コンピュータ読取可能なプログラムコードが、プロセッサにより実行された際にデバイスに上述したステップ群を実行させるように構成される。他の実施形態において、デバイスは、コードを必要とすることなく、上述したステップ群を実行するように構成される。
さらに、ネットワークインタフェース720は、ネットワーク730へと接続する手段を提供し得る。ネットワークインタフェース720は、有線及び/又は無線接続を用いて通信ネットワーク730との通信を可能とするように構成される。例示的な実施形態において、処理ユニットもまたネットワーク730へと接続される。ネットワーク730は、例えば、GPRSコアネットワーク、インターネットなどであってよい。
上記サービスがサーバである実施形態において、サーバ300は、データを送受信するためのネットワークインタフェース720と、サーバデバイス300の動作を制御するためのプロセッサを伴うデータ処理システム700と、コンピュータ読取可能な命令(即ち、ソフトウェア)及びデータを記憶するためのデータストレージシステム725とを含み得る。ネットワークインタフェース720及びデータストレージシステム725は、それらの動作を制御し及びそれらの間のデータのフローを制御するデータ処理システム700へ連結され、データ処理システム700と通信する。
ここで説明した方法は、上述したサービス300において実装されることができる。そうした実施形態において、上記方法のアクションは、データストレージシステム725のコンピュータ読取可能な媒体内に記憶されデータ処理システム700により実行可能なコンピュータ読取可能なプログラムコードの手段によって実現される。そうしたコンピュータ読取可能なプログラムコードは、当業者により認識されるように、例えば製造の期間中にインストールされ、又はより遅い時にアップロードされるなど、何らかの適した手法で実現され及び提供されることができる。その上、データストレージシステム725、データ処理システム700及びネットワークインタフェース720は、ソフトウェア及び/又はファームウェアを含み、それらは、説明された方法を実装可能なように構成されることに加えて、ネットワーク内で動作する場合のサービスの一般的な動作を制御するように構成される。しかしながら、不必要な詳細を回避する目的のために、その一般的な動作に関して本開示ではこれ以上の説明を行わないこととする。
上で説明した実施形態は、いくつもの利点をもたらす。例えば、ソフトウェアパッケージ間の複雑な依存関係の解決を自動化するためにサービスを用いることで、ソフトウェアが複雑なデータセンタ及び/又はクラウド環境において配備される場合に、エラーの回数が低減される。加えて、サービスの使用は、新たなソフトウェアを特定の処理ユニットへと自動的にマッピングするルールの共通的なセットによって、新たなソフトウェアの配備を自動化することにより、ソフトウェア管理及び配備を簡略化し得る。
サービスの使用は、ソフトウェアインテグレーションにおける新たな可能性を導入し得る。例えば、新たなソフトウェアを、意図されるシステム向けにソフトウェアが適用可能であること及び意図される動作環境がソフトウェアと互換的であることを保証する制約のセットに対してチェックすることができる。加えて、サービスの使用は、ソフトウェアの込み入った統合を可能とし、それにより既存のソフトウェアとその新たなバージョンとの統合体(synthesis)が生み出され得る。
本発明の多様な実施形態を上で説明したが、それらは限定ではなく例示の手法でのみ提示されていることが理解されるべきである。よって、本発明の広がり及び範囲は、上述した例示的な実施形態のいずれによっても限定されるべきでない。その上、上述したエレメントの、それらの全てのあり得るバリエーションにおけるいずれの組み合わせも、ここで別段の記載が無く、又は文脈によって明らかに矛盾することが無い限り、本発明に包含される。
加えて、上で説明し図中に描いた処理は、一連のステップとして示されているが、これは説明のためになされたに過ぎない。従って、いくつかのステップが追加されてもよく、いくつかのステップが省略されてもよく、ステップの順序が再配置されてもよく、いくつかのステップが並列的に実行されてもよいことが予期される。

Claims (24)

  1. コンパイル及び配備サービス(300)を用いたソフトウェアのビルド及びロード処理のための方法であって、
    前記サービス(300)において、新たなソフトウェアを受信することと、
    前記サービス(300)において、受信される前記新たなソフトウェアを、データベース(525,725)内のアクティブソフトウェアを含むデータと比較することと、
    前記サービス(300)において、前記比較に基づいて、前記新たなソフトウェアとアクティブソフトウェアとを1つ以上のロードモジュール(330,550a,550b)へと統合することと、
    前記1つ以上のロードモジュールを、1つ以上のターゲット処理ユニット(340,400,410)へと配備することと、
    を含む方法。
  2. 前記新たなソフトウェアは、コンテナ(320,520)へとパッケージ化されたソースコード(310,510)であり、
    前記比較するステップは、過去に定義された拘束条件及び前記アクティブソフトウェアに対して、ソースレベルで前記ソースコードをチェックすること、をさらに含み、
    前記統合するステップは、前記サービスにおいて、前記ソースコードを前記アクティブソフトウェアと統合してコンパイルすること、をさらに含む、
    請求項1の方法。
  3. 前記新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナ(320,520)へとパッケージ化された前記コンパイル済みのソースコード(310,510)であり、
    前記データベース内の前記データは、前記アクティブソフトウェアに関連付けられる1つ以上の既存のマニフェストのファイルを含み、
    前記比較するステップは、前記新たなマニフェストを抽出することと、予め定義される制約及び前記1つ以上の既存のマニフェストに対して、前記新たなマニフェストをチェックすることと、をさらに含む、
    請求項1の方法。
  4. 前記新たなソフトウェアは、中間フォーマットソースコード(310,320,510,520)であり、
    前記比較するステップは、前記中間フォーマットソースコードを、予め定義される制約及び前記アクティブソフトウェアに対してチェックすること、をさらに含み、
    前記統合するステップは、前記中間フォーマットソースコードを完全にコンパイルすること、をさらに含む、
    請求項1の方法。
  5. 前記統合するステップは、前記中間フォーマットソースコードを文(statement)及び式(expression)のレベルで前記アクティブソフトウェアと統合すること、をさらに含む、請求項4の方法。
  6. 前記サービス(300)において、受信される前記新たなソフトウェアの1つ以上のコード特性を受信することと、前記データベースのデータは、前記アクティブソフトウェアの記憶された特性を含むことと、
    前記サービス(300)において、前記データの比較の一部として、受信される前記新たなソフトウェアのコード特性を、アクティブソフトウェアの前記記憶されたコード特性と比較することと、
    をさらに含む、請求項1〜5のいずれかの方法。
  7. 前記ターゲット処理ユニット(340)は、1つ以上のSGSNノード及びロードバランサ(400)を含み、前記新たなソフトウェアは、SGSNソフトウェア(510)及び新たなロードバランサルール(520)を含み、前記データは、既存のロードバランサルール(525)を含む、請求項1〜6のいずれかの方法。
  8. 前記比較するステップは、1つ以上のロードバランサチェッカ及びコンパイラ(540b)を用いて、前記既存のロードバランサルールに対して、前記新たなロードバランサルールをチェックすること、をさらに含み、
    前記統合するステップは、前記新たなロードバランサルールのうちの、前記既存のロードバランサルールと共通的な部分を統合することと、前記既存のロードバランサルールと競合する前記新たなロードバランサルールをレポートすることと、をさらに含む、
    請求項7の方法。
  9. 前記比較するステップは、1つ以上のSGSNチェッカ及びコンパイラ(540a)において、前記SGSNソフトウェアをチェックすること、をさらに含む、請求項7又は請求項8の方法。
  10. 前記ターゲット処理ユニットは、プロセッサアーキテクチャ、オペレーティングシステム、及び前記新たなソフトウェアの意図される用途、のうちの1つ以上により分類される、請求項1〜9のいずれか1項の方法。
  11. コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステムであって、
    サーバ(300)と、
    前記サーバへ連結されるプロセッサ(700)と、
    前記プロセッサへ連結されるメモリ(725)と、
    前記サーバへ電子的に連結されるデータベースと、
    を含み、
    前記プロセッサは、
    新たなソフトウェアを受信し、
    受信される前記新たなソフトウェアを、データベース(525,725)内のアクティブソフトウェアを含むデータと比較し、
    前記比較に基づいて、前記新たなソフトウェアとアクティブソフトウェアとを1つ以上のロードモジュール(330,550a,550b)へと統合し、
    前記1つ以上のロードモジュールを、1つ以上のターゲット処理ユニット(340,400,410)へと配備する、
    ように構成される、システム。
  12. 前記新たなソフトウェアは、コンテナ(320,520)へとパッケージ化されたソースコード(310,510)であり、
    前記プロセッサは、
    過去に定義された拘束条件及び前記アクティブソフトウェアに対して、ソースレベルで前記ソースコードをチェックし、
    前記ソースコードを前記アクティブソフトウェアと統合してコンパイルする、
    ようにさらに構成される、請求項11のシステム。
  13. 前記新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナ(320,520)へとパッケージ化された前記コンパイル済みのソースコード(310,510)であり、
    前記データベース内の前記データは、前記アクティブソフトウェアに関連付けられる1つ以上の既存のマニフェストのファイルを含み、
    前記プロセッサは、前記新たなマニフェストを抽出し、予め定義される制約及び前記1つ以上の既存のマニフェストに対して、前記新たなマニフェストをチェックする、ようにさらに構成される、
    請求項11のシステム。
  14. 前記新たなソフトウェアは、中間フォーマットソースコード(310,320,510,520)であり、
    前記プロセッサは、
    前記中間フォーマットソースコードを、予め定義される制約及び前記アクティブソフトウェアに対してチェックし、
    前記中間フォーマットソースコードを完全にコンパイルする、
    ようにさらに構成される、請求項11のシステム。
  15. 前記プロセッサは、前記中間フォーマットソースコードを文(statement)及び式(expression)のレベルで前記アクティブソフトウェアと統合する、ようにさらに構成される、請求項14のシステム。
  16. 前記プロセッサは、受信される前記新たなソフトウェアの1つ以上のコード特性を受信する、ようにさらに構成され、
    前記データベースのデータは、前記アクティブソフトウェアの記憶された特性を含み、
    前記プロセッサは、前記データの比較の一部として、受信される前記新たなソフトウェアのコード特性を、アクティブソフトウェアの前記記憶されたコード特性と比較する、ようにさらに構成される、
    請求項11〜15のいずれかのシステム。
  17. 前記ターゲット処理ユニット(340)は、1つ以上のSGSNノード及びロードバランサ(400)を含み、前記新たなソフトウェアは、SGSNソフトウェア(510)及び新たなロードバランサルール(520)を含み、前記データは、既存のロードバランサルール(525)を含む、請求項11〜16のいずれかのシステム。
  18. 1つ以上のロードバランサチェッカ及びコンパイラ(540b)をさらに含み、
    前記プロセッサは、
    前記既存のロードバランサルールに対して、前記新たなロードバランサルールをチェックし、
    前記新たなロードバランサルールのうちの、前記既存のロードバランサルールと共通的な部分を統合し、
    前記既存のロードバランサルールと競合する前記新たなロードバランサルールをレポートする、
    ようにさらに構成される、請求項17のシステム。
  19. 1つ以上のSGSNチェッカ及びコンパイラ(540a)、をさらに含み、
    前記プロセッサは、前記1つ以上のSGSNチェッカ及びコンパイラを用いて、前記新たなSGSNソフトウェアをチェックする、ようにさらに構成される、
    請求項17又は請求項18のシステム。
  20. 前記ターゲット処理ユニットは、プロセッサアーキテクチャ、オペレーティングシステム、及び前記新たなソフトウェアの意図される用途、のうちの1つ以上により分類される、請求項11〜19のいずれか1項のシステム。
  21. コンピュータ読取可能な媒体(725)において具現化されるコンピュータ読取可能なプログラムコードを記憶する当該媒体を含む、非一時的なコンピュータプログラムプロダクトであって、
    デバイス(300)に、新たなソフトウェアを受信させるためのプログラムコードと、
    前記デバイスに、受信される前記新たなソフトウェアを、データベース(525,725)内のアクティブソフトウェアを含むデータと比較させるためのプログラムコードと、
    前記デバイスに、前記比較に基づいて、前記新たなソフトウェアと前記アクティブソフトウェアとを1つ以上のロードモジュール(330,550a,550b)へと統合させるためのプログラムコードと、
    前記デバイスに、前記ロードモジュールを1つ以上のターゲット処理ユニット(340,400,410)へと配備させるためのプログラムコードと、
    を含む、コンピュータプログラムプロダクト。
  22. 前記新たなソフトウェアは、コンテナ(320,520)へとパッケージ化されたソースコード(310,510)であり、
    前記コンピュータプログラムプロダクトは、
    前記デバイスに、過去に定義された拘束条件及び前記アクティブソフトウェアに対してソースレベルで前記ソースコードをチェックさせるためのプログラムコードと、
    前記デバイスに、前記ソースコードを前記アクティブソフトウェアと統合させコンパイルさせるためのプログラムコードと、
    をさらに含む、請求項21の非一時的なコンピュータプログラムプロダクト。
  23. 前記新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナ(320,520)へとパッケージ化された前記コンパイル済みのソースコード(310,510)であり、
    前記データベース内の前記データは、前記アクティブソフトウェアに関連付けられる1つ以上の既存のマニフェストのファイルを含み、
    前記コンピュータプログラムプロダクトは、前記デバイスに、前記新たなマニフェストを抽出させ、予め定義される制約及び前記1つ以上の既存のマニフェストに対して前記新たなマニフェストをチェックさせるためのプログラムコード、をさらに含む、
    請求項21の非一時的なコンピュータプログラムプロダクト。
  24. 前記新たなソフトウェアは、中間フォーマットソースコード(310,510)であり、
    前記コンピュータプログラムプロダクトは、
    前記デバイスに、前記中間フォーマットソースコードを予め定義される制約及び前記アクティブソフトウェアに対してチェックさせるためのプログラムコードと、
    前記デバイスに、前記中間フォーマットソースコードを文(statement)及び式(expression)のレベルで前記アクティブソフトウェアと統合させるためのプログラムコードと、
    をさらに含む、請求項21の非一時的なコンピュータプログラムプロダクト。
JP2015547044A 2012-12-14 2013-12-13 コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト Active JP5965080B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261737605P 2012-12-14 2012-12-14
US61/737,605 2012-12-14
PCT/EP2013/076506 WO2014090982A1 (en) 2012-12-14 2013-12-13 Systems, methods, and computer program products for a software build and load process using a compilation and deployment service

Publications (2)

Publication Number Publication Date
JP2016505952A JP2016505952A (ja) 2016-02-25
JP5965080B2 true JP5965080B2 (ja) 2016-08-03

Family

ID=49759335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015547044A Active JP5965080B2 (ja) 2012-12-14 2013-12-13 コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト

Country Status (8)

Country Link
US (2) US9189227B2 (ja)
EP (1) EP2932374B1 (ja)
JP (1) JP5965080B2 (ja)
CN (1) CN104854558B (ja)
IL (1) IL238981B (ja)
MX (1) MX342205B (ja)
RU (1) RU2628176C2 (ja)
WO (1) WO2014090982A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458661B2 (en) * 2006-03-31 2013-06-04 Ebay Inc. Distributed parallel build system
CN104854558B (zh) 2012-12-14 2018-10-23 瑞典爱立信有限公司 用于使用编译和部署服务进行软件构建和负载处理的系统、方法和计算机程序产品
US10749985B2 (en) * 2015-05-19 2020-08-18 Amazon Technologies, Inc. Custom communication channels for application deployment
US9658836B2 (en) 2015-07-02 2017-05-23 Microsoft Technology Licensing, Llc Automated generation of transformation chain compatible class
US9733993B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Application sharing using endpoint interface entities
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US9785484B2 (en) 2015-07-02 2017-10-10 Microsoft Technology Licensing, Llc Distributed application interfacing across different hardware
US9712472B2 (en) 2015-07-02 2017-07-18 Microsoft Technology Licensing, Llc Application spawning responsive to communication
US9733915B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Building of compound application chain applications
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US9860145B2 (en) 2015-07-02 2018-01-02 Microsoft Technology Licensing, Llc Recording of inter-application data flow
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
GB2542127B (en) * 2015-09-08 2020-06-03 Arm Ip Ltd Processing digital content
US10686908B2 (en) 2016-11-18 2020-06-16 Sap Se Embedded database as a microservice for distributed container cloud platform
US10237118B2 (en) * 2016-11-18 2019-03-19 Sap Se Efficient application build/deployment for distributed container cloud platform
CN107621963B (zh) * 2017-09-21 2020-11-27 深圳市融壹买信息科技有限公司 一种软件部署方法、软件部署系统及电子设备
US10572294B1 (en) * 2018-01-03 2020-02-25 Amazon Technologies, Inc. Automated application footprint discovery for application migration to containers
US10769057B2 (en) * 2018-05-09 2020-09-08 International Business Machines Corporation Identifying potential errors in code using machine learning
US10884893B2 (en) 2018-08-24 2021-01-05 International Business Machines Corporation Detecting software build errors using machine learning
US11080174B2 (en) * 2019-05-01 2021-08-03 Red Hat, Inc. Detecting and handling discrepancies between external circuit breakers and internal circuit breakers
US20220138068A1 (en) * 2019-07-02 2022-05-05 Hewlett-Packard Development Company, L.P. Computer readable program code change impact estimations
US11275571B2 (en) * 2019-12-13 2022-03-15 Sap Se Unified installer
CN111552508B (zh) * 2020-04-29 2023-03-14 杭州数梦工场科技有限公司 应用程序版本构建方法、装置、电子设备
US11347499B1 (en) 2020-12-16 2022-05-31 Red Hat, Inc. Merging multiple package files into a merged package file
US20240045786A1 (en) * 2022-08-04 2024-02-08 Airbiquity Inc. Build system supporting code audits, code verification, and software forensics
CN115167874B (zh) * 2022-08-19 2023-04-14 禾多科技(北京)有限公司 自动驾驶软件镜像部署方法、装置、电子设备和可读介质

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561800A (en) * 1993-05-19 1996-10-01 Hewlett-Packard Company Method and apparatus for incrementally linking modified routines into software
US5940623A (en) * 1997-08-01 1999-08-17 Cummins-Allison Corp. Software loading system for a coin wrapper
JP2000122871A (ja) * 1998-10-14 2000-04-28 Hitachi Ltd アプリケーション配布方法
US6591272B1 (en) * 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
US7096465B1 (en) * 1999-05-17 2006-08-22 Invensys Systems, Inc. Process control configuration system with parameterized objects
US6385766B1 (en) * 1999-05-20 2002-05-07 Dell Usa L.P. Method and apparatus for windows-based installation for installing software on build-to-order computer systems
US6397385B1 (en) * 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
US6438743B1 (en) * 1999-08-13 2002-08-20 Intrinsity, Inc. Method and apparatus for object cache registration and maintenance in a networked software development environment
US6598223B1 (en) * 1999-10-06 2003-07-22 Dell Usa, L.P. Method and system for installing and testing build-to-order components in a defined configuration computer system
US20030050932A1 (en) * 2000-09-01 2003-03-13 Pace Charles P. System and method for transactional deployment of J2EE web components, enterprise java bean components, and application data over multi-tiered computer networks
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US7246351B2 (en) * 2001-02-20 2007-07-17 Jargon Software System and method for deploying and implementing software applications over a distributed network
JP2002261927A (ja) * 2001-03-05 2002-09-13 Nippon Telegr & Teleph Corp <Ntt> プログラムダウンロード方法
US6748380B2 (en) * 2001-05-14 2004-06-08 International Business Machines Corporation Method, system, and program product for permission to access software
US7055149B2 (en) * 2001-07-25 2006-05-30 Lenovo (Singapore) Pte Ltd. Method and apparatus for automating software upgrades
US7774772B2 (en) * 2001-09-28 2010-08-10 Siebel Systems, Inc. Method and apparatus to perform an application software migration
DE10158991A1 (de) * 2001-11-30 2003-06-12 Bosch Gmbh Robert Verfahren und Installation von einem Softwaremodul in einem Gerät
US7577948B2 (en) * 2003-07-02 2009-08-18 Upgradedetect, Inc. System and method for providing computer upgrade information
FR2857471B1 (fr) * 2003-07-10 2008-09-26 Open Plug Procede de gestion des composants logiciels integres dans un systeme embarque
US7594219B2 (en) * 2003-07-24 2009-09-22 International Business Machines Corporation Method and apparatus for monitoring compatibility of software combinations
US7669177B2 (en) * 2003-10-24 2010-02-23 Microsoft Corporation System and method for preference application installation and execution
EP1678609A1 (en) * 2003-10-27 2006-07-12 American Power Conversion Corporation System and method for updating a software program
US20050177826A1 (en) * 2004-02-05 2005-08-11 Miller James S. Versioning support in object-oriented programming languages and tools
US7607126B2 (en) * 2004-05-21 2009-10-20 Bea Systems, Inc. System and method for external override of annotations
US7900201B1 (en) * 2004-12-21 2011-03-01 Zenprise, Inc. Automated remedying of problems in software application deployments
AU2006205055A1 (en) * 2005-01-13 2006-07-20 Hsbc North America Holdings Inc. Framework for configuration and release management of group systems software
US8341622B1 (en) * 2005-12-15 2012-12-25 Crimson Corporation Systems and methods for efficiently using network bandwidth to deploy dependencies of a software package
US8185576B2 (en) * 2006-03-14 2012-05-22 Altnet, Inc. Filter for a distributed network
US8060871B2 (en) * 2006-03-30 2011-11-15 Microsoft Corporation Servicing software through versioning
WO2007113533A1 (en) * 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Xml-based transfer and a local storage of java objects
CN101212759B (zh) * 2006-12-26 2011-03-02 中兴通讯股份有限公司 一种手机软件集成测试方法
US20080201705A1 (en) * 2007-02-15 2008-08-21 Sun Microsystems, Inc. Apparatus and method for generating a software dependency map
US8701102B2 (en) * 2007-06-27 2014-04-15 Microsoft Corporation Techniques for automatic software provisioning
CA2710346A1 (en) * 2007-12-20 2009-07-02 Hsbc Technologies Inc. Automated methods and systems for developing and deploying projects in parallel
US8869140B2 (en) * 2008-05-09 2014-10-21 Sap Se Deploying software modules in computer system
US8543998B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
JP5239964B2 (ja) * 2009-03-16 2013-07-17 ブリヂストンスポーツ株式会社 ゴルフクラブ、シャフト挿入深さ変更方法及びシャフト交換方法
US8327351B2 (en) * 2009-04-30 2012-12-04 Sap Ag Application modification framework
US8880736B2 (en) * 2009-07-09 2014-11-04 Simon Cooper Methods and systems for archiving and restoring securely installed applications on a computing device
US8972974B2 (en) * 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US8584113B2 (en) * 2009-11-09 2013-11-12 Bank Of America Corporation Cross-updating of software between self-service financial transaction machines
US8627309B2 (en) * 2010-02-25 2014-01-07 Microsoft Corporation Automated deployment and servicing of distributed applications
US8438541B2 (en) * 2010-06-15 2013-05-07 International Business Machines Corporation Software change management extension for uniformly handling artifacts with relaxed contraints
US8826265B2 (en) * 2011-10-24 2014-09-02 Texas Instruments Incorporated Data concentrator initiated multicast firmware upgrade
CN104854558B (zh) 2012-12-14 2018-10-23 瑞典爱立信有限公司 用于使用编译和部署服务进行软件构建和负载处理的系统、方法和计算机程序产品

Also Published As

Publication number Publication date
WO2014090982A1 (en) 2014-06-19
RU2015128277A (ru) 2017-01-18
EP2932374B1 (en) 2023-11-15
US9760365B2 (en) 2017-09-12
MX342205B (es) 2016-09-21
CN104854558A (zh) 2015-08-19
US20150378718A1 (en) 2015-12-31
US9189227B2 (en) 2015-11-17
IL238981A0 (en) 2015-07-30
JP2016505952A (ja) 2016-02-25
IL238981B (en) 2018-03-29
EP2932374A1 (en) 2015-10-21
MX2015006815A (es) 2015-09-07
CN104854558B (zh) 2018-10-23
US20140181800A1 (en) 2014-06-26
RU2628176C2 (ru) 2017-08-15

Similar Documents

Publication Publication Date Title
JP5965080B2 (ja) コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト
US11868231B2 (en) System and method for evaluating code by a hybrid of local and cloud-based computers
US8601433B2 (en) Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using the platform
US20140196022A1 (en) Cloud Based Application Packaging
US8001530B2 (en) Method and framework for object code testing
US20080276221A1 (en) Method and apparatus for relations planning and validation
CN110727440B (zh) 一种软件封装方法
US10514898B2 (en) Method and system to develop, deploy, test, and manage platform-independent software
CN117714527A (zh) 利用微服务的边缘设备和关联的网络
CN104077140A (zh) 用于持续集成的自动化编译方法和编译装置
US20130125092A1 (en) Generating deployable code from simulation models
US8839223B2 (en) Validation of current states of provisioned software products in a cloud environment
US11561790B2 (en) Orchestrating multi-level tools for the deployment of a network product
CN103186463B (zh) 确定软件的测试范围的方法和系统
US10459698B2 (en) Framework for generating adapters in an integrated development environment
Brada et al. Practical verification of component substitutability using subtype relation
US20130111432A1 (en) Validation of a system model including an activity diagram
CN110321138B (zh) 一种程序更新、迁移方法和装置
Chiozzi et al. A UML profile for code generation of component based distributed systems
US20240045786A1 (en) Build system supporting code audits, code verification, and software forensics
US11360805B1 (en) Project discovery for automated compilation, testing, and packaging of applications
Lin et al. Justifying the transition from trustworthiness to resiliency via generation of safety cases
Bisiaux et al. Evaluation and qualification of mobile application quality.
Gomes et al. UTTOS: A tool for testing UEFI code in OS environment
Bombarda et al. From Concept to Code: Unveiling a Tool for Translating Abstract State Machines into Java Code

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160630

R150 Certificate of patent or registration of utility model

Ref document number: 5965080

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250