JP2021111368A - Apiベースのソフトウェア開発プラットフォーム - Google Patents

Apiベースのソフトウェア開発プラットフォーム Download PDF

Info

Publication number
JP2021111368A
JP2021111368A JP2020204160A JP2020204160A JP2021111368A JP 2021111368 A JP2021111368 A JP 2021111368A JP 2020204160 A JP2020204160 A JP 2020204160A JP 2020204160 A JP2020204160 A JP 2020204160A JP 2021111368 A JP2021111368 A JP 2021111368A
Authority
JP
Japan
Prior art keywords
api
objects
software
input
generated
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.)
Withdrawn
Application number
JP2020204160A
Other languages
English (en)
Inventor
バーラミ・メフディ
Mehdi Bahrami
チェン・ウェイ−ペン
Wei-Peng Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2021111368A publication Critical patent/JP2021111368A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】APIベースのソフトウェア開発プラットフォームを提供する。【解決手段】APIのセットに関連づけられたドキュメンテーションコーパスのテキスト分析によりオブジェクト指向ソフトウェアプラットフォームを作成する方法は、APIのセットのうち第1のAPIのAPIエンドポイントのためのAPIコールオブジェクトのセットを生成することと、テキスト分析に基づいてAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築することを含む。方法は、APIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化する、ビジネスオブジェクトのセットを生成することと、APIコールオブジェクトのセット、自然言語記述子のセット及びビジネスオブジェクトのセットをカプセル化するソフトウェアパッケージを構築することと、をさらに含む。【選択図】図4

Description

本開示で論じられる実施形態は、アプリケーションプログラミングインターフェース(API)ベースのソフトウェア開発プラットフォームに関する。
多くの会社や組織が、音声処理やソーシャルメディア分析などのいくつかのアプリケーションのためのAPIを第三者の開発者や第三者の組織に提供するアプリケーションプログラミングインターフェース(API)インフラストラクチャを提供している。典型的には、APIは、第三者のソフトウェアがリソースにアクセスできる場所を指定する、公に公開されたエンドポイントを有するプログラマティックインターフェースである。これらのAPI及び関連する例示的なコードの使用に関する詳細は、通常、APIドキュメンテーションにおいて提供される。
ソフトウェアアプリケーションに様々な機能性を提供するためのAPIの急増に伴い、ソフトウェア業界の開発者及び組織は、既存のAPIの機能性を活用してソフトウェアアプリケーションを迅速に開発することができる。しかしながら、既存のAPIの使用によるソフトウェアアプリケーションの開発は、特に、開発者が成長し続ける数のAPIから関連するAPIを選択し、テストする必要があるとき、時間のかかる作業となり得る。さらに、ソフトウェアアプリケーションを開発したいがソフトウェアプログラミングにおいて限られたスキルを有するか又はスキルのない多くのユーザは、ソフトウェアプログラムを構築するのに熟練の開発者に頼る以外の選択肢がない。
本開示において請求される対象事項は、何らかの欠点を解決し又は上述されたような環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本開示に記載されるいくつかの実施形態が実施され得る1つの例示的な技術分野を示すためにのみ提供される。
一実施形態の態様によれば、動作が、アプリケーション開発者又は管理者のためのAPIベースのソフトウェア開発プラットフォームとしてオブジェクト指向ソフトウェアプラットフォームを作成することを含み得る。本明細書において、オブジェクト指向ソフトウェアプラットフォームは、開発者のためのマルチレベル粒度ソフトウェアプラットフォームと呼ばれることもある。オブジェクト指向ソフトウェアプラットフォームを作成する動作は、APIのセットに関連づけられたドキュメンテーションコーパスのテキスト分析を実行することと、APIのセットのうち第1のAPIのAPIエンドポイントのためのAPIコールオブジェクトのセットを生成することを含んでもよい。動作は、テキスト分析に基づいて、生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築することと、ビジネスオブジェクトのセットを生成することをさらに含んでもよい。ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化し得る。動作は、生成されたAPIコールオブジェクトのセット、構築された自然言語記述子のセット、及び生成されたビジネスオブジェクトのセットをカプセル化し得るソフトウェアパッケージを構築することをさらに含んでもよい。
別の実施形態の一態様によれば、APIベースのソフトウェア開発のためのシステムが提供される。該システムは、表示装置にオブジェクト指向マルチレベル粒度ソフトウェアプラットフォームの電子ユーザインターフェース(UI)をレンダリングし得る。レンダリングされた電子UIは、オブジェクト指向ソフトウェアプラットフォームに含まれるソフトウェアパッケージのセットに対応し得るユーザ選択可能なオブジェクトのセットを含み得る。システムは、ユーザ選択可能なオブジェクトのセットのうち第1のユーザ選択可能なオブジェクトを通じての第1の入力に基づいてソフトウェアパッケージのセットからソフトウェアパッケージを選択してもよく、第2の入力に基づいて、選択されたソフトウェアパッケージに含まれるAPIコールオブジェクトのセットのための入力/出力パラメータのセットに対する条件の値を更新してもよい。更新の後、システムはさらに、第3の入力に基づいてAPIコールオブジェクトのセットに対応する自然言語記述子のセットのうち少なくとも1つの自然言語記述子を選択し、第4の入力に基づいてAPIコールオブジェクトのセットのうち少なくとも1つのAPIコールオブジェクトを選択してもよい。システムは、ソフトウェアコンポーネントをコンパイルし、コンパイルされたソフトウェアコンポーネントに基づいてAPIベースのソフトウェアアプリケーションを構築してもよい。ソフトウェアコンポーネントは、選択された少なくとも1つのAPIコールオブジェクト、条件の更新された値、及び選択されたソフトウェアパッケージに基づいてコンパイルされてもよい。
実施形態の目的及び利点は、少なくとも特許請求の範囲において特に指し示された要素、特徴、及び組み合わせにより実現され、達成される。
前述の一般的な説明及び以下の詳細な説明の双方が例として与えられ、説明的であり、請求される発明の限定ではない。
例示的な実施形態が、添付図面の使用を通してさらなる特定性及び詳細と共に記載され、説明される。
オブジェクト指向ソフトウェアプラットフォームの作成に関連する一例示的な環境を示す図である。 図1のオブジェクト指向ソフトウェアプラットフォームの作成のための一例示的な電子デバイスを示すブロック図である。 オブジェクト指向ソフトウェアプラットフォームの作成のための一例示的なワークフローを示す。 図3のオブジェクト指向ソフトウェアプラットフォームの作成のための一例示的な方法のフローチャートである。 図5A及び図5Bは集合的にAPIコールオブジェクトの生成のための一例示的な方法のフローチャートを示す。 図5A及び図5Bは集合的にAPIコールオブジェクトの生成のための一例示的な方法のフローチャートを示す。 自然言語記述子の構築のための一例示的な方法のフローチャートである。 APIのセットの統一仕様のうち一部の例である。 オブジェクト指向ソフトウェアプラットフォームのデプロイのための一例示的なシステムを示すブロック図である。 図1のオブジェクト指向ソフトウェアプラットフォームの異なるレイヤにおける異なるオブジェクトの一例を示す。 図1のオブジェクト指向ソフトウェアプラットフォームの一例示的な電子UIである。 図3のオブジェクト指向ソフトウェアプラットフォームを使用するソフトウェアアプリケーションの開発のための一例示的な方法のフローチャートを示す。 図12A及び12Bは集合的に図3のオブジェクト指向ソフトウェアプラットフォームを使用するソフトウェアアプリケーションの開発のための一例示的な方法のフローチャートを示す。 図12A及び12Bは集合的に図3のオブジェクト指向ソフトウェアプラットフォームを使用するソフトウェアアプリケーションの開発のための一例示的な方法のフローチャートを示す。
全て、本開示に記載される少なくとも1つの実施形態による。
本開示に記載される実施形態は、ソフトウェアアプリケーションのAPIベースの開発のためのオブジェクト指向ソフトウェアプラットフォームの作成及び作成されたオブジェクト指向ソフトウェアプラットフォームの使用に関する。典型的には、APIに基づくソフトウェアアプリケーションの開発では、開発者がAPIに関連づけられたAPIドキュメンテーションを手動で分析して、APIの様々な側面、例えば、APIの各々のエンドポイント、パラメータ、及び応答を理解する必要がある。このようなドキュメンテーションの分析に基づき、開発者は、特定のプログラミング言語でプログラムコードを書いて、特定のAPIに関連づけられた様々なエンドポイントへのAPIコールを呼び出し、APIの機能性をソフトウェアアプリケーション又はソフトウェアアプリケーションのソフトウェアコンポーネントに組み込む必要があり得る。開発者は、多くのAPIをテストし、ソフトウェアアプリケーションの要件を満たすAPIを選択する必要もあり得る。APIを選択し、テストする際に、開発下のソフトウェアアプリケーションに関連した複雑さ、スケール、及び機能性のセットに依存して、より多くの開発者時間が消費される可能性がある。また、ソフトウェアアプリケーションを開発したいがソフトウェアプログラミングにおいて限られたスキルを有し又はスキルがない場合がある他のユーザは、しばしば、これらの問題を、自分自身でソフトウェアアプリケーションを開発することの禁止と感じることがある。
本開示の1つ以上の実施形態によれば、ソフトウェア開発の技術分野は、APIベースのソフトウェアアプリケーション開発のためのオブジェクト指向マルチレベル粒度(multi-level granularity)ソフトウェアプラットフォームを作成するようにコンピューティングシステムを構成することにより改善され得る。オブジェクト指向ソフトウェアプラットフォームは、マルチレイヤオブジェクト指向アーキテクチャに従ってもよく、APIドキュメンテーションを分析して最初のレイヤ内にAPIコネクタを生成し、APIコネクタの各固有入力/出力について第2のレイヤ内にマイクロサービスを生成することにより作成され得る。オブジェクト指向ソフトウェアプラットフォームは、さらに、第3のレイヤ内にソフトウェア/ハードウェアコンポーネント(例えば、ソフトウェア開発キット、すなわちSDK)を生成して前のレイヤの定義オブジェクトにビジネス指向ポリシー及びレガシーを適用し、最後に第4のレイヤ内にソフトウェア/ハードウェアパッケージ(例えば、モバイルアプリ、ソフトウェアアプリケーション、ウェブアプリケーション、ハードウェアベースのアプリケーション)を生成することにより作成されてもよい。ビジネスレイヤは、特定のタスクのための制約、制限、及びシステム能力を適用する。
本開示の1つ以上の実施形態によれば、ソフトウェアアプリケーション開発のためのオブジェクト指向マルチレベル粒度ソフトウェアプラットフォームは、様々なAPIのドキュメンテーションをマイニングすることにより自動的に作成され得る。したがって、オブジェクト指向ソフトウェアプラットフォームの作成は、限られた人間の監督により完全に動的であり得る。オブジェクト指向ソフトウェアプラットフォームが利用可能なAPIベースのリソースに基づいて作成されると、オブジェクト指向ソフトウェアプラットフォームはデプロイされ(deployed)、ユーザ(開発者/組織/管理者)が様々なマイクロサービスAPIコールを扱って様々な目的(例えば、簡素なソフトウェアアプリケーションの設計)を達成することを可能にし得る。オブジェクト指向ソフトウェアプラットフォームは、ユーザがオブジェクトを単にドラッグアンドドロップしてプロセスの論理フローを設計することを可能にし得る。各レイヤは、詳細/情報をカプセル化して(encapsulate)、ユーザがオブジェクト指向ソフトウェアプラットフォームとシンプルに対話することを可能にし得る。例えば、ユーザは、初期段階で詳細を見ることなくソフトウェアコンポーネントレイヤを設計することができ、次いで、ユーザは、各オブジェクトをダブルクリックして設計オブジェクトを含むプロセスのさらなる詳細を追加することができる。
オブジェクト指向ソフトウェアプラットフォームが定義される(各レイヤに関連する全てのコンセプトを追加される)と、ユーザは、各レイヤでオブジェクトを選択することができる。しかしながら、上位レイヤからオブジェクトを選択することにより、それは、下位レイヤで利用可能なリソース/コンセプトのうち限られた選択肢になる。例えば、ユーザは、ビジネスレイヤで通知を選択してもよく、次いで設計レイヤでは、利用可能なリソースのみ(例えば、電子メール通知、電話呼び出し通知、テキストメッセージSMS通知)を有する。オブジェクト指向ソフトウェアプラットフォームは、管理者又は開発者がオブジェクト指向ソフトウェアプラットフォームの下位レイヤにAPIコールを生成し、APIコールからのマイクロサービスを作成し、マイクロサービスを制限し、オブジェクト指向ソフトウェアプラットフォームの上位レイヤで最終的なソフトウェアパッケージを得ることを可能にし得る。オブジェクト指向ソフトウェアプラットフォームは、コンセプトマイニングを使用して各レイヤ内の各オブジェクトの記述/コンセプトを抽出及び定義してもよく、ソフトウェア/ハードウェアアプリケーションを作成するために使用することができる。オブジェクト指向ソフトウェアプラットフォームは、異なるビジネスが独自のアプリケーションを設計し、かつ/あるいはソフトウェア/ハードウェアアプリケーションをカスタマイズするのに役立ち得る。これらのソフトウェア/ハードウェアアプリケーションは、制限、レガシー、ポリシーなどのビジネス指向アプローチを考慮して容易に設計され得る。
開発者は、生成された電子UIを使用してソフトウェアアプリケーションのAPIベースの開発を行うことができる。オブジェクト指向ソフトウェアプラットフォームは、電子ユーザインターフェース(UI)を提供して、開発者が電子UIに表示されたユーザ選択可能なツールのセットからソフトウェアパッケージを選択し、ソフトウェアパッケージのプロパティを設定することを可能にし得る。さらに、電子UIは、開発者が選択したソフトウェアパッケージに関連づけられたビジネスオブジェクトを選択及び構成することを可能にし得、特定のAPIに関連づけられた個々のAPIコールオブジェクトを構成する選択肢をユーザに提供し得る。最後に、電子UIは、開発者が電子UIを介したユーザ選択及びユーザ入力のシーケンスに基づいてソフトウェアコンポーネントのコンパイルを要求することを可能にし得る。オブジェクト指向ソフトウェアプラットフォームは、コンパイルされたソフトウェアコンポーネントに基づいてソフトウェアアプリケーションをさらに生成してもよい。したがって、ソフトウェアアプリケーションは、短時間のうちに、開発者からの最小限のコーディング労力で、関連するAPIの機能性を含むように生成され得る。
従来、開発者向けのUIは、典型的には、コードエディタウィンドウと、コンパイルログ、エラーログ、実行されたコード、及びコード実行に対する出力を見るためのコンソールを含む。全てのウィンドウ(すなわち、エディタウィンドウ)には、詳細情報を参照する粒度レベルが含まれる。例えば、ユーザは、アイデアレイヤでは汎用的な定義を定義するが、ビジネスレイヤでは上位レイヤ(アイデアレイヤ)の各オブジェクトについてどのプロバイダを使用できるかを使用し判断する可能性がある。したがって、UIは、各レイヤで異なり得る。これらのUIは、ソフトウェアアプリケーション開発に一定の専門知識を有し、ソフトウェアアプリケーションの大部分を手動でコーディングする典型的な方法論に従うユーザに焦点を合わせて開発された。したがって、これらの従来のUIは、ソフトウェアアプリケーションのためのソフトウェアコードの大部分を書くことなく、通常のユーザ又は開発者さえもがソフトウェアアプリケーションを開発するのに役立ち得る適切な情報及び適切なユーザ選択可能な選択肢を提供することを欠いていた。
対照的に、本開示は、適切な情報及び適切なユーザ選択可能な選択肢を提供する電子UIを提供して、ソフトウェアアプリケーションを作成するユーザ(開発者/非開発者)の能力を改善する。電子UIと対話することにより、ユーザは、APIからマイクロサービス(APIコールオブジェクト)を作成し、ソフトウェアアプリケーションに含まれるマイクロサービスのパラメータを通じて条件を追加することができ得る。したがって、電子UIは、表示される情報のタイプと情報がどのように表示されるかを区別する改善されたUIであり得る。これは、ユーザがソフトウェアアプリケーションのあらゆる側面を手動でコーディングする必要をなくし、結果としていくらかの時間を節約し得る。
本開示の実施形態は、添付の図面を参照して説明される。
図1は、本開示に記載される少なくとも1つの実施形態に従って配置された、オブジェクト指向ソフトウェアプラットフォームの作成に関連する一例示的な環境を示す図である。図1を参照し、環境100が示される。環境100は、電子デバイス102、データベースシステム104、ユーザエンドデバイス106、及び通信ネットワーク108を含み得る。図1には、さらに、APIのセットに関連づけられデータベースシステム104に記憶されたドキュメントのセット(以降、ドキュメンテーションコーパス(documentation corpus)110と呼ぶ)が示されている。さらに、電子デバイス102及び/又はユーザエンドデバイス106に関連づけられ得るユーザ112が示されている。本明細書において、ユーザ112は、ソフトウェア開発、デバッグ、又はソフトウェアテスト機能に関連づけられた個人、個人のチーム、又は組織でもよい。
電子デバイス102は、ソフトウェアアプリケーション開発のために異なるユーザにより使用されるマルチレベル粒度ソフトウェア開発プラットフォームとしてのオブジェクト指向ソフトウェアプラットフォーム114の作成に関連する動作を実行するように構成され得る適切な論理、回路、及びインターフェースを含み得る。電子デバイス102の例は、これらに限られないが、統合開発環境(integrated development environment、IDE)デバイス、ソフトウェアテストデバイス、モバイルデバイス、デスクトップコンピュータ、ラップトップ、コンピュータワークステーション、コンピュータデバイス、メインフレームマシン、クラウドサーバなどのサーバ、及びサーバのグループを含んでもよい。1つ以上の実施形態において、電子デバイス102は、ユーザエンド端末デバイスと、ユーザエンド端末デバイスに通信上結合されたサーバを含んでもよい。ユーザエンド端末デバイスの例は、これらに限られないが、モバイルデバイス、デスクトップコンピュータ、ラップトップ、及びコンピュータワークステーションを含んでもよい。電子デバイス102は、プロセッサ、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを使用して実現されてもよい。いくつかの他の例において、電子デバイス102は、ハードウェアとソフトウェアの組み合わせを用いて実現されてもよい。
最初、電子デバイス102は、APIのセットに関連づけられたドキュメンテーションコーパス110を抽出する必要があり得る。このドキュメンテーションコーパスは、公に利用可能な情報として利用可能であり得、かつ/あるいはAPIリポジトリの一部であり得る。ドキュメンテーションコーパス110は、APIのセットに関連づけられた複数の構造化又は非構造化API仕様ドキュメントを含んでもよい。各API仕様ドキュメントは、APIタイトル、エンドポイント名、エンドポイント記述、入力/出力パラメータ、プライマリカテゴリ、セカンダリカテゴリ、APIのセットのうち対応するAPIに関連づけられたタグなどの、フィールドにマッピングされた情報を含み得る。
限定でなく例として、電子デバイス102は、ウェブ上の1つ以上のコンピュータベースのソースに対するウェブクローラ又はウェブスクレイパ(scraper)(例えば、クローラボット又はスクレイパボット)をデプロイして、APIのセットに関連づけられた公に利用可能な情報を検索し、収集してもよい。あるいは、電子デバイス102は、データベースシステム104からドキュメンテーションコーパス110を抽出してもよい。データベースシステム104は、APIのセットに関連づけられたドキュメンテーションコーパス110を記憶するように構成され得る適切な論理、インターフェース、及び/又はコードを含んでもよい。ある場合には、データベースシステム104は、クラウドサーバなどのサーバとして実現されてもよく、そこから、ドキュメンテーションコーパス110が電子デバイス102にキャッシュされ、記憶されてもよい。さらに又は代わりに、データベースシステム104は、これらに限られないがプロセッサ、マイクロプロセッサ(例えば、1つ以上のデータベース動作を実行し又は該動作の実行を制御する)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを使用して実現されてもよい。
オブジェクト指向ソフトウェアプラットフォーム114を作成するために、電子デバイス102は、APIのセットに関連づけられたドキュメンテーションコーパス110のテキスト分析を実行し得る。ドキュメンテーションコーパス110のテキスト分析に基づき、電子デバイス102は、APIのセットについての統一仕様(unified specification)(例えば、OpenAPI(OAS)仕様)を生成し得る。生成された統一仕様の一例が、図7で提供される。さらに、電子デバイス102は、APIのセットのうち第1のAPIのAPIエンドポイント(endpoint)のためのAPIコールオブジェクトのセットを生成し得る。各APIコールオブジェクトは、APIエンドポイントのためのAPIコールを呼び出すプログラムコードを含んでもよく、APIエンドポイントの入力/出力パラメータのセットのための固有値(unique values)に基づいて生成されてもよい。本明細書において、APIコールは、予め定義されたAPIエンドポイント(すなわち、APIに関連づけられたサービスを提供するサーバのユニフォームリソースロケータ(URL))へのファンクションコールに対応してもよい。APIコールは、単一のAPIエンドポイントを表し、かつAPIエンドポイントでAPIリソースにアクセス及び操作するための作成、読み出し、更新、削除メソッド(RESTful APIのGET及びPUTなど)を提供するAPIコネクタを介して実行されてもよい。単一のAPIエンドポイントに対して複数のAPIコールオブジェクトを生成することにより、APIエンドポイントの定義ジョブはマイクロジョブに分割され得る。これらのマイクロジョブは、APIマイクロサービス(API-micro services)と呼ばれることがあり、相互に異なる機能を有し得る。例えば、以下のように、APIコールオブジェクトを表1で定義してもよい。
Figure 2021111368

表1を参照し、変数パラメータP及びPに関連づけられる任意の特定のAPIエンドポイントについては、P及びPに対して固有のパラメータ値を設定することにより、多くのAPIコールオブジェクトが生成され得る。
APIコールオブジェクトごとに、コンセプト又は自然言語記述子(natural language descriptor)がマイニングされる必要があり得る。例えば、固有のAPIコールシナリオ、パラメータ記述、及び応答パラメータ記述を表すあらゆるAPIコールオブジェクトについて、APIタイトル及びAPI記述を使用してコンセプト/自然言語記述子を導出してもよい。このようなコンセプト/自然言語記述子は、関連づけられたAPIコールオブジェクトの目的を有意に記述し得る。したがって、電子デバイス102は、テキスト分析に基づいて、生成されたAPIコールオブジェクトのセットに対応し得る自然言語記述子のセットを構築し得る。各自然言語記述子は、それぞれのAPIコールオブジェクトの用途(use)を示し得、それぞれのAPIコールオブジェクトに関連づけられた自然言語記述及びトピックを含んでもよい。
限定でなく例として、例「scanner/new_scan」は、スキャナAPI(Scanner API)のAPIエンドポイントである。new_scanエンドポイントは、パラメータ「page」をとり、このパラメータは、「unlimited」又は「single」などの多くの値を有することができる。各固有のパラメータ値が、固有のAPIコールシナリオ/APIコールオブジェクトを作成するために使用されてもよく、固有のコンセプト/自然言語記述子を必要とし得る。したがって、「scanner/new_scan(page=unlimited)」がAPIコールオブジェクトに対応するとき、自然言語記述子は「Get unlimited pages from scanner」としての定義を含んでもよい。同様に、「scanner/new_scan(page=single)」が別のAPIコールオブジェクトに対応するとき、自然言語記述子は「Get scan of one page from scanner」としての定義を含んでもよい。
電子デバイス102は、ビジネスオブジェクトのセットを生成してもよく、ビジネスオブジェクトの各々が、生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化し得る。次いで、電子デバイス102は、生成されたAPIコールオブジェクトのセット、構築された自然言語記述子のセット、及び生成されたビジネスオブジェクトのセットをカプセル化し得るソフトウェアパッケージを構築してもよい。さらに、電子デバイス102は、構築されたソフトウェアパッケージにリンクされたユーザ選択可能なツールとしてUI要素のセットを含み得る電子ユーザインターフェース(UI)を生成してもよい。
オブジェクト指向ソフトウェアプラットフォーム114は、ひとたび作成されると、例えば、アプリケーションサーバ116にウェブアプリケーションとしてデプロイされ得る。少なくとも1つの実施形態において、オブジェクト指向ソフトウェアプラットフォーム114は電子デバイス102上にデプロイされてもよく、その場合、アプリケーションサーバ116はアプリケーションサーバ116の機能性全体を組み込み得る。あるいは、オブジェクト指向ソフトウェアプラットフォーム114の1つ以上のコンポーネント(例えば、対話型開発環境(Interactive Development Environment、IDE))がインストールファイルとして提供されてもよく、一方、オブジェクト指向ソフトウェアプラットフォーム114の残りのコンポーネントがアプリケーションサーバ116のバックエンドにデプロイされてもよい。ひとたびデプロイされると、ユーザ(ユーザ112など)は、ユーザエンドデバイス106上のオブジェクト指向ソフトウェアプラットフォーム114の電子UIにアクセスする選択肢を有することができる。ひとたびアクセスされると、そのようなユーザは、電子UI上に現れるユーザ選択可能なツールとの対話に基づいて、ソフトウェア開発キット、ソフトウェアパッケージ、又は完全なソフトウェアアプリケーションを設計及び開発することができ得る。これらのユーザ選択可能なツールにより、ユーザは、ビジネスロジック、ルール、及びポリシーを指定し、どの機能性及び関連づけられたAPIコールオブジェクトをソフトウェアアプリケーションに組み込むかを選択することにより、ソフトウェアアプリケーションの開発をカスタマイズすることができ得る。
例として、ユーザエンドデバイス106は、統合開発環境(IDE)、コードエディタ、ソフトウェアデバッガ、ソフトウェア開発キット、又は開発の各レイヤのためのテストアプリケーションのうち1つ以上を含んでもよい。ユーザエンドデバイス106の例は、これらに限られないが、モバイルデバイス、デスクトップコンピュータ、ラップトップ、コンピュータワークステーション、コンピューティングデバイス、メインフレームマシン、クラウドサーバなどのサーバ、及びサーバのグループを含んでもよい。図1では、ユーザエンドデバイス106は電子デバイス102から分離されているように示されているが、一部の実施形態において、ユーザエンドデバイス106は開示の範囲から逸脱することなく電子デバイス102と統合されてもよい。
電子デバイス102、データベースシステム104、及びユーザエンドデバイス106は、通信ネットワーク108を介して互いに通信上結合されてもよい。通信ネットワーク108は、電子デバイス102がデータベースシステム104、ユーザエンドデバイス106、及びアプリケーションサーバ116と通信し得るための通信媒体を含んでもよい。通信ネットワーク108の例は、これらに限らないが、インターネット、クラウドネットワーク、ワイヤレスフィデリティ(Wireless Fidelity、Wi‐Fi)ネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、及び/又はメトロポリタンエリアネットワーク(MAN)を含んでもよい。環境100内の様々な装置は、様々な有線及び無線通信プロトコルに従って通信ネットワーク108に接続するように構成されてもよい。そのような有線及び無線通信プロトコルの例は、これらに限られないが、トランスミッションコントロールプロトコル及びインターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキストトランスファープロトコル(HTTP)、ファイルトランスファープロトコル(FTP)、ZigBee、EDGE、IEEE802.11、ライトフィデリティ(light fidelity、Li‐Fi)、802.16、IEEE802.11s、IEEE802.11g、マルチホップ通信、無線アクセスポイント(AP)、デバイスツーデバイス(device to device)通信、セルラー通信プロトコル、及び/又はBluetooth(BT)通信プロトコル、又はこれらの組み合わせのうち少なくとも1つを含んでもよい。
本開示の範囲から逸脱することなく、図1に対して修正、追加、又は省略がなされてもよい。例えば、環境100は、本開示で例示及び説明されるものより多くの又は少ない要素を含んでもよい。例えば、いくつかの実施形態において、環境100は、電子デバイス102を含むがデータベースシステム104及びユーザエンドデバイス106を含まなくてもよい。さらに、いくつかの実施形態において、データベースシステム104及びユーザエンドデバイス106の各々の機能性は、本開示の範囲から逸脱することなく電子デバイス102に組み込まれてもよい。
図2は、本開示に記載される少なくとも1つの実施形態に従って配置された、図1のオブジェクト指向ソフトウェアプラットフォームの作成のための一例示的な電子デバイスを示すブロック図である。図2は、図1の要素と関連して説明される。図2を参照し、電子デバイス102のブロック図200が示される。電子デバイス102は、プロセッサ202、メモリ204、永続データ記憶装置206、入力/出力(I/O)デバイス208、表示画面210、及びネットワークインターフェース212を含み得る。
プロセッサ202は、電子デバイス102により実行されるべき異なる動作に関連づけられたプログラム命令を実行するように構成され得る適切な論理、回路、及び/又はインターフェースを含み得る。例えば、オブジェクト指向ソフトウェアプラットフォーム114を作成する動作のいくつかは、ドキュメンテーションコーパス110のテキスト分析、統一仕様の生成、APIコールオブジェクトのセットの生成、APIコールオブジェクトのセットのための自然言語記述子のセットの構築、ビジネスオブジェクトのセットの生成、ソフトウェアパッケージの構築、及びソフトウェアパッケージにリンクされたユーザ選択可能なツールを表示するための電子UIの生成を行うことを含んでもよい。
プロセッサ202は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な専用又は汎用コンピュータ、コンピューティングエンティティ、又は処理デバイスを含んでもよく、任意の適用可能なコンピュータ読取可能記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ202は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラム命令を解釈及び/又は実行し、及び/又はデータを処理するように構成された任意の他のデジタル若しくはアナログ回路を含んでもよい。
図2では単一のプロセッサとして示されているが、プロセッサ202は、本開示に記載される電子デバイス102の任意数の動作を個々に又は集合的に実行し又はその実行を指示するように構成された任意数のプロセッサを含んでもよい。さらに、プロセッサの1つ以上が、異なるサーバなどの1つ以上の異なる電子デバイスに存在してもよい。いくつかの実施形態において、プロセッサ202は、メモリ204及び/又は永続データ記憶装置206に記憶されたプログラム命令を解釈及び/又は実行し、及び/又はデータを処理するように構成されてもよい。いくつかの実施形態において、プロセッサ202は、永続データ記憶装置206からプログラム命令を取り出し、メモリ204にプログラム命令をロードすることができる。プログラム命令がメモリ204にロードされた後、プロセッサ202はプログラム命令を実行することができる。プロセッサ202の例のいくつかは、GPU、CPU、RISCプロセッサ、ASICプロセッサ、CISCプロセッサ、コプロセッサ、及び/又はこれらの組み合わせでもよい。
メモリ204は、プロセッサ202により実行可能なプログラム命令を記憶するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。特定の実施形態において、メモリ204は、オペレーティングシステム及び関連するアプリケーション特有の情報を記憶するように構成されてもよい。メモリ204は、記憶されたコンピュータ実行可能命令又はデータ構造を搬送し又は有するコンピュータ読取可能記憶媒体を含んでもよい。そのようなコンピュータ読取可能記憶媒体は、プロセッサ202などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体を含んでもよい。限定でなく例として、そのようなコンピュータ読取可能記憶媒体は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、コンパクトディスク読取専用メモリ(CD‐ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、又はコンピュータ実行可能命令又はデータ構造の形式で特定のプログラムコードを搬送又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、有形又は非一時的コンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能命令は、例えば、電子デバイス102に関連づけられた特定の動作又は動作のグループをプロセッサ202に実行させるように構成された命令及びデータを含んでもよい。
永続データ記憶装置206は、プロセッサ202により実行可能なプログラム命令、オペレーティングシステム、及び/又はログ及びアプリケーション特有のデータベースなどのアプリケーション特有の情報を記憶するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。永続データ記憶装置206は、記憶されたコンピュータ実行可能命令又はデータ構造を搬送し又は有するコンピュータ読取可能記憶媒体を含んでもよい。そのようなコンピュータ読取可能記憶媒体は、プロセッサ202などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体を含んでもよい。
限定でなく例として、そのようなコンピュータ読取可能記憶媒体は、コンパクトディスク読取専用メモリ(CD‐ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス(例えば、ハードディスクドライブ(HDD))、フラッシュメモリデバイス(例えば、ソリッドステートドライブ(SSD)、セキュアデジタル(SD)カード、他のソリッドステートメモリデバイス)、又はコンピュータ実行可能命令又はデータ構造の形式で特定のプログラムコードを搬送又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、有形又は非一時的コンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能命令は、例えば、電子デバイス102に関連づけられた特定の動作又は動作のグループをプロセッサ202に実行させるように構成された命令及びデータを含んでもよい。
いくつかの実施形態において、メモリ204、永続データ記憶装置206、又はこれらの組み合わせは、データベースシステム104から取り出されたドキュメンテーションコーパス110と、ドキュメンテーションコーパス110から生成された統一仕様を記憶してもよい。
I/Oデバイス208は、ユーザ入力(例えば、ソフトウェアパッケージにリンクされた選択可能なツールのセットのユーザ選択に関連づけられたユーザ入力)を受け取るように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。I/Oデバイス208は、さらに、ユーザ入力に応答して出力を提供するように構成されてもよい。I/Oデバイス208は、プロセッサ202及び他のコンポーネント、例えばネットワークインターフェース212などと通信するように構成され得る様々な入力及び出力デバイスを含んでもよい。入力デバイスの例は、これらに限られないが、タッチスクリーン、キーボード、マウス、ジョイスティック、及び/又はマイクロフォンを含んでもよい。出力デバイスの例は、これらに限られないが、ディスプレイ及びスピーカーを含んでもよい。
表示画面210は、ユーザ112に対して生成された電子UIをレンダリングするように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。表示画面210は、これらに限られないが、液晶表示(LCD)ディスプレイ、発光ダイオード(LED)ディスプレイ、プラズマディスプレイ、及び/又は有機LED(OLED)ディスプレイ技術、及び/又は他のディスプレイ技術などのいくつかの既知の技術を介して実現されてもよい。
ネットワークインターフェース212は、通信ネットワーク108を介して電子デバイス102、データベースシステム104、及びユーザエンドデバイス106間の通信を確立するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。ネットワークインターフェース212は、通信ネットワーク108を介した電子デバイス102の有線又は無線通信をサポートするために、様々な既知の技術の使用により実現されてもよい。ネットワークインターフェース212は、これらに限られないが、アンテナ、無線周波数(RF)トランシーバ、1つ以上の増幅器、チューナ、1つ以上の発振器、デジタル信号プロセッサ、コーダ‐デコーダ(CODEC)チップセット、加入者識別モジュール(subscriber identity module、SIM)カード、及び/又はローカルバッファを含んでもよい。
ネットワークインターフェース212は、インターネット、イントラネット、及び/又は無線ネットワーク、例えばセルラー電話ネットワーク、無線ローカルエリアネットワーク(LAN)、及び/又はメトロポリタンエリアネットワーク(MAN)などのネットワークと無線通信を介して通信してもよい。無線通信は、グローバルシステムフォーモバイルコミュニケーション(Global System for Mobile Communications、GSM)、拡張データGSM環境(Enhanced Data GSM Environment、EDGE)、広帯域符号分割多元接続(wideband code division multiple access、W‐CDMA)、ロングタームエボリューション(Long Term Evolution、LTE)、符号分割多元接続(code division multiple access、CDMA)、時分割多元接続(time division multiple access、TDMA)、Bluetooth、ワイヤレスフィデリティ(Wi‐Fi)(IEEE802.11a、IEEE802.11b、IEEE802.11g、及び/又はIEEE802.11nなど)、ボイスオーバーインターネットプロトコル(voice over Internet Protocol、VoIP)、ライトフィデリティ(Li‐Fi)、又はWi‐MAXなどの複数の通信規格、プロトコル、及び技術のうち任意のものを使用してもよい。オブジェクト指向ソフトウェアプラットフォームの作成のための一例示的なワークフローが、例えば図3で説明されている。
本開示の範囲から逸脱することなく、例示的な電子デバイス102に対して修正、追加、又は省略がなされてもよい。例えば、いくつかの実施形態において、例示的な電子デバイス102は、簡潔さのため明示的に例示又は記載されない場合がある任意数の他のコンポーネントを含んでもよい。
図3は、本開示に記載される少なくとも1つの実施形態に従って配置される、オブジェクト指向ソフトウェアプラットフォームの作成のための一例示的なワークフローを示す。図3は、図1及び図2の要素と関連して説明される。図3を参照し、オブジェクト指向ソフトウェアプラットフォーム302を作成するための一例示的なワークフロー300が示され、これにより、ユーザ(ユーザ112など)は、オブジェクト指向ソフトウェアプラットフォーム302の電子UIと対話することによりソフトウェアアプリケーションを開発することができる。本明細書において、オブジェクト指向ソフトウェアプラットフォーム302は、開発者のためのマルチレベル粒度ソフトウェアプラットフォームと交換可能に呼ばれることがある。例示的なワークフロー300は、APIドキュメント(API docs)のセット304、オープンAPI仕様(OAS)ソース306、APIコールオブジェクトのセット308、API設計オブジェクトのセット310、APIビジネスオブジェクトのセット312、及びAPIベースのソフトウェアコンポーネント314を含む。
オブジェクト指向ソフトウェアプラットフォーム302は、レイヤ化されたソフトウェアアーキテクチャに関連づけられてもよい。例えば、オブジェクト指向ソフトウェアプラットフォーム302は、APIコールオブジェクトのセット308をカプセル化し得る第1のレイヤ(例えば、ランタイムレイヤ316)と、API設計オブジェクトのセット310(すなわち、APIコールオブジェクトのセット308に対応する自然言語記述子のセット)をカプセル化し得る第2のレイヤ(例えば、設計レイヤ318)を含んでもよい。オブジェクト指向ソフトウェアプラットフォーム302は、APIビジネスオブジェクトのセット312をカプセル化し得る第3のレイヤ(例えば、ビジネスレイヤ320)と、構築されたソフトウェアパッケージ(すなわち、APIベースのソフトウェアコンポーネント314)を含み得る第4のレイヤ(例えば、APIソフトウェアコンポーネントレイヤ322)をさらに含んでもよい。限定でなく例として、以下のように、異なるアーチファクト(artefacts)が各レイヤに含まれてもよい。
1.ランタイムレイヤ(Runtime layer)316:利用可能なリソース、例えば、APIコネクタ、スタンドアロンAPIコールオブジェクトなど。
2.設計レイヤ(Design layer)318:マイクロウェブサービス、プロセス、スタンドアロン機能、ウェブサービス、APIコールオブジェクトのコンセプト/自然言語記述子など。
3.ビジネスレイヤ(Business layer)320:制約ルール、制限ルール、コンテキストルール(例えば、Office API)など。
4.APIソフトウェアコンポーネントレイヤ(API software component layer)322:ソフトウェアコンポーネント(例えば、ソフトウェア開発キット(SDK)、API、スタンドアロンソフトウェア)、ウェブページインターフェース、モバイルアプリなど。
図示のように、第1のレイヤ(すなわち、ランタイムレイヤ316)はオブジェクト指向ソフトウェアプラットフォーム302の最下レイヤを形成し、第2のレイヤ(すなわち、設計レイヤ318)、第3のレイヤ(すなわち、ビジネスレイヤ320)、及び第4のレイヤ(すなわち、APIソフトウェアコンポーネントレイヤ322)がこれに続きうる。第4のレイヤは、オブジェクト指向ソフトウェアプラットフォーム302の最上レイヤを形成し得、全てのレイヤの間で最大の抽象化を提供し得る。オブジェクト指向ソフトウェアプラットフォーム302の作成に関連する動作が、例えば図4、図5A、図5B、及び図6において詳細に提供される。
図4は、本開示に記載される少なくとも1つの実施形態に従って配置された、図3のオブジェクト指向ソフトウェアプラットフォームの作成のための一例示的な方法のフローチャートである。図4は、図1、図2及び図3の要素と関連して説明される。図4を参照し、フローチャート400が示される。フローチャート400に示される方法は402で開始してもよく、図2の例示的な電子デバイス102などの任意の適切なシステム、装置、又はデバイスにより実行されてよい。
402において、APIのセットに関連づけられたドキュメンテーションコーパス110のテキスト分析が実行され得る。少なくとも1つの実施形態において、プロセッサ202は、ドキュメンテーションコーパス110のテキスト分析を実行してもよい。例えば、図3に示すように、APIドキュメントのセット304は、APIのセットのドキュメンテーション(すなわち、ドキュメンテーションコーパス110)に対応してもよく、これらに限られないがハイパーテキストマークアップ言語(Hyper Text Markup Language、HTML)、ポータブルドキュメントフォーマット(Portable Document Format、PDF)、ユニコードプレーンテキスト(Txt)、オープンXMLドキュメント(DOCX)、カンマ区切り(Comma Separated Values、CSV)、拡張マークアップ言語(Extensible Markup Language、XML)、及びリッチテキストドキュメント(Rich Text document、RTF)などの特定のファイルフォーマットで利用可能であり得る。APIドキュメントのセット304は、例えば、開発者向けマニュアル、API仕様書、APIドキュメンテーション、チュートリアル、コードリポジトリ(例えば、GitHubリポジトリ)などを含んでもよい。プロセッサ202は、1つ以上のAPI学習方法(例えば、自然言語処理(Natural language Processing、NLP)方法)を適用して、テキスト分析を実行し、APIのセットの統一仕様を生成してもよい。統一仕様は、これらに限られないがJavaScript(登録商標) Object Notation(JSON)フォーマット、拡張マークアップ言語(XML)フォーマット、又はYAMLフォーマットなどの特定のフォーマットでOASソース306として含まれてもよい。APIドキュメントのセット304からのOASソース306の生成は、例えば図5Aにおいてさらに説明される。このような分析は、例えば、機械学習アルゴリズム及び訓練されたニューラルネットワークモデルに依拠してあらゆるAPI仕様ドキュメントの複雑な意味構造を理解し、API仕様ドキュメント内の関連情報を指し示すパターンを識別し得る自然言語処理(NLP)方法に基づいてもよい。例として、本明細書においてその全体を参照により組み込まれる米国特許シリアル番号第15/374,798号は、ドキュメンテーションコーパス110の個々のAPI仕様ドキュメントのテキスト分析を行うためのNLP方法の1つを論じている。ドキュメンテーションコーパス110のテキスト分析に基づいて、プロセッサ202は、APIのセットに関連づけられた統一仕様を生成し得る。ドキュメンテーションコーパス110のテキスト分析と統一仕様の生成は、例えば図5Aにおいて詳細に説明される。
404において、APIのセットのうち第1のAPIのAPIエンドポイントに対して、APIコールオブジェクトのセットが生成され得る。少なくとも1つの実施形態において、プロセッサ202は、第1のAPIのAPIエンドポイントのためのAPIコールオブジェクトのセットを生成し得る。APIコールオブジェクトのセットのうち第1のAPIコールオブジェクトの生成が、例えば図5A及び図5Bで詳細に説明される。同様に、他のAPIエンドポイントについても、APIコールオブジェクトの異なるセットが生成され得る。
406において、生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットが、テキスト分析に基づいて構築され得る。少なくとも1つの実施形態において、プロセッサ202は、生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築し得る。APIコールオブジェクトのセットから生成された第1のAPIコールオブジェクトに対応する第1の自然言語記述子の構築が、例えば図6で説明される。
408において、ビジネスオブジェクトのセットが生成され得る。少なくとも1つの実施形態において、プロセッサ202は、ビジネスオブジェクトのセットを生成し得る。ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化し得る。一実施形態において、条件は、入力/出力パラメータのセットの値に対する制約のセット、APIエンドポイントの使用及びアクセスに関連する構成可能なポリシー、及び入力/出力パラメータのセットの使用に対する制約としてのレガシー(legacy)を含んでもよい。例えば、条件は、入力/出力パラメータの最小値と最大値、APIエンドポイントの地理ベースの使用制約(例えば、特定の国/地域でのAPIエンドポイントの使用を制約するポリシー)、及びレガシー値(又は、非推奨値)に対応する入力/出力パラメータのセットの特定の値を含んでもよい。
図3で論じられたように、自然言語記述子のセットは、API設計オブジェクトのセット310に対応し得る。一実施形態において、プロセッサ202は、設計オブジェクトのセット308からの全ての定義された設計オブジェクトを、プロセスコネクタとして組み合わせてもよい。例えば、スキャナSDKでは、プロセスコネクタは、「新規スキャン」及び「電子メールスキャン」自然言語記述子(これらは、「new_scan()」及び「email_scan()」コールオブジェクトに対応し得る)に関連づけられた設計オブジェクトを含み得る。その後、プロセッサ202は、スキャナSDKの前述の2つの設計オブジェクトに関連づけられた制約及び条件をカプセル化し得る1つ以上のビジネスオブジェクトを生成し得る。
一例として、プロセッサ202は、ビジネスオブジェクトを生成して、new_scan()の使用に対して許可される最大スキャン数を定義するためのルールをカプセル化してもよい。別の例として、プロセッサ202は、ビジネスオブジェクトを生成して、特定のユーザグループ(ユーザ112など)がnew_scan()関数にアクセスすることを可能にし得るポリシーをカプセル化してもよい。別の例として、プロセッサ202は、ビジネスオブジェクトを生成して、スキャンされたファイルに関連づけられた許容可能なファイル記憶パスを制約し得るレガシーをカプセル化してもよい。
410において、ソフトウェアパッケージが構築され得る。ソフトウェアパッケージは、生成されたAPIコールオブジェクトのセット、設計オブジェクトとして構築された自然言語記述子のセット、及び生成されたビジネスオブジェクトのセットをカプセル化し得る。少なくとも1つの実施形態において、プロセッサ202は、生成されたAPIコールオブジェクトのセット、構築された自然言語記述子のセット、及び生成されたビジネスオブジェクトのセットをカプセル化し得るソフトウェアパッケージを構築してもよい。一実施形態において、構築されたソフトウェアパッケージは、ソフトウェア開発キット(SDK)、APIベースのソフトウェアコンポーネント、ウェブページインターフェース、又はモバイルアプリケーションインターフェースのうち少なくとも1つをさらにカプセル化してもよい。ここで、404〜410の動作は、他のAPIエンドポイント及び/又はAPIのセットのうち他のAPIのためのソフトウェアパッケージを構築するために反復的に実行されてもよいことに留意されたい。
少なくとも1つの実施形態において、オブジェクト指向ソフトウェアプラットフォーム302の作成のために、プロセッサ202は、電子UIをさらに生成してもよい。生成された電子UIは、構築されたソフトウェアパッケージにリンクされたユーザ選択可能なツールとしてUI要素のセットを含んでもよい。プロセッサ202は、最終的に、電子UI、構築されたソフトウェアパッケージ、ビジネスオブジェクトのセット、自然言語記述子のセット、及びAPIコールオブジェクトのセットを含むコンピュータ実行可能ファイル及び/又はアーチファクトの形式で、オブジェクト指向ソフトウェアプラットフォーム302を作成してもよい。オブジェクト指向ソフトウェアプラットフォーム302は、(図3にも示されるように)レイヤ化されたソフトウェアアーキテクチャに関連づけられてもよく、以下を含んでもよい。
1.生成されたAPIコールオブジェクトのセットをカプセル化する第1のレイヤ
2.生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットをカプセル化する第2のレイヤ
3.ビジネスオブジェクトのセットをカプセル化する第3のレイヤ
4.構築されたソフトウェアパッケージを含む第4のレイヤ
オブジェクト指向ソフトウェアプラットフォーム302の使用によるソフトウェアアプリケーションの開発のための一例示的な方法が、例えば図10で説明される。フローチャート400は402、404、406、408、及び410などの個別の動作として示されているが、特定の実施形態において、そのような個別動作はさらに、開示された実施形態の本質を損なうことなく特定の実装に依存してさらなる動作に分割され、より少ない動作に組み合わせられ、あるいは除去されてもよい。
図5A及び図5Bは集合的に、本開示に記載される少なくとも1つの実施形態に従って配置された、APIコールオブジェクトの生成のための一例示的な方法のフローチャートを示す。図5A及び図5Bは、図1、図2、図3、及び図4の要素と関連して説明される。図5A及び図5Bを参照し、フローチャート500が示される。フローチャート500に示される方法は502で開始してもよく、図2の例示的な電子デバイス102などの任意の適切なシステム、装置、又はデバイスにより実行されてよい。個別のブロックで示されているが、フローチャート500の1つ以上のブロックに関連づけられた動作は、特定の実装に依存してさらなるブロックに分割され、より少ないブロックに組み合わせられ、あるいは除去されてもよい。
502において、ドキュメンテーションコーパス110のテキスト分析(例えば、図2の402で実行される)に基づいて、APIのセットについての統一仕様が生成され得る。統一仕様の一例は、拡張マークアップ言語(XML)ファイル又はJavaScript Object Notation(JSON)ファイルなどのファイル形式で生成されたOAS仕様であり得る。限定でなく例として、テキスト分析から、ドキュメンテーションコーパスからの異なるキーオブジェクトが抽出されてもよい。キーオブジェクトの例は、これらに限られないが、APIエンドポイント、スキーム、ベースアドレス、ホストアドレス、エンドポイントパラメータ、パラメータ記述、パラメータタイプ、及びエンドポイントパラメータの入力/出力値を含んでもよい。
例えば、本明細書においてその全体を参照により組み込まれる米国特許シリアル番号第15/851,599号は、ドキュメンテーションコーパス110からキーオブジェクトを抽出し、APIのセットについてのAPI仕様ドキュメント(統一仕様とも呼ばれる)を生成する方法について論じている。
例えば、APIのセットについての統一仕様を生成するために、プロセッサ202は、APIのセットの機能性、パラメータ、動作、アクセシビリティ、及び出力を含み得るドキュメンテーションコーパス110(例えば、APIドキュメントのセット304)に基づいて、異種(heterogeneous)APIを学習してもよい。プロセッサ202は、ウェブベースのAPIリソースネットワークなどのネットワークをクローリングすることにより、異なるソースからのドキュメンテーションコーパス110を対照してもよい。ドキュメンテーションコーパス110は、APIのセットのうち各APIのAPIリソースを記述し得る自然言語テキストを含み得る。
プロセッサ202は、ドキュメンテーションコーパス110からAPI情報を抽出してもよい。API情報は、少なくとも1つの関数と、APIリソースに関連づけられた属性を含み得る少なくとも1つのテーブルを含んでもよい。次いで、プロセッサ202は、ドキュメンテーションコーパス110から、少なくとも1つの関数の各々について、自然言語テキストのサブセットを含み得る記述を抽出してもよい。その後、プロセッサ202は、抽出された少なくとも1つのテーブルを属性のモデルと比較して、抽出された属性を抽出された関数と相関させてもよい。さらに、プロセッサ202は、抽出された属性及び抽出された関数と自然言語テキストのサブセットとの間の相関に基づいて、ドキュメンテーションコーパス110に記述されたAPIリソースについての統一仕様(例えば、OASソース306)として、マシン読取可能なAPI仕様をコンパイルして(compile)もよい。統一仕様の一例が、例えば図7に示される。
504において、第1のAPIに関連づけられたスキームアドレス、ホストアドレス、又はベースアドレスが、生成された統一仕様から抽出され得る。少なくとも1つの実施形態において、プロセッサ202は、生成された統一仕様からスキームアドレス、ホストアドレス、又はベースアドレスを抽出してもよい。APIのスキームアドレスは、APIに関連づけられたAPIコネクタを介する、エンドポイントとの通信リンクの確立に関連づけられた通信プロトコルに対応し得る。APIのホストアドレスは、APIのサービスをホストするサーバのユニフォームリソースロケータ(URL)に対応し得る。さらに、APIのベースアドレスは、サーバでホストされるAPIサービスに関連づけられたパスに対応し得る。ホストアドレス、スキームアドレス、ベースアドレスは、第1のAPIに対するAPIコールメッセージに関連づけられたペイロードの一部として含まれてもよい。一例において、プロセッサ202は、OASソース306の関連するXMLタグから、第1のAPI(例えば、スキャナAPI)に対するスキームアドレス(「https」など)、ホストアドレス(「fujitsu.com」など)、及びベースアドレス(「/scanner」など)を抽出してもよい。
506において、第1のAPIに対してAPIプロバイダ情報が決定され得る。少なくとも1つの実施形態において、プロセッサ202は、抽出されたスキームアドレス、ホストアドレス、又は第1のAPIに関連づけられたベースアドレスに基づいてAPIプロバイダ情報を決定してもよい。APIプロバイダ情報は、第1のAPIに関連づけられたAPIプロバイダのURLを含んでもよい。例えば、抽出されたスキームアドレスが「https」であり、ホストアドレスが「fujitsu.com」であり、ベースアドレスがスキャナAPIに対する「/scanner」である場合、APIプロバイダ情報は、スキームアドレス、ホストアドレス、及びベースアドレスの連結に基づいて、「https://fujitsu.com/scanner」(すなわち、第1のAPIのAPIプロバイダのURL)」として決定されてもよい。
508において、生成された統一仕様から、第1のAPIのAPIエンドポイントに関連づけられたエンドポイント情報とエンドポイントパラメータのセットが抽出され得る。少なくとも1つの実施形態において、プロセッサ202は、生成された統一仕様から、第1のAPIのAPIエンドポイントに関連づけられたエンドポイント情報及びエンドポイントパラメータのセットを抽出してもよい。例えば、OAS仕様から、エンドポイント情報は、APIエンドポイントに関連づけられたアドレス(URL)(例えば、APIエンドポイントに関連づけられたサーバアドレス)を含んでもよい。同様に、エンドポイントパラメータのセットは、APIエンドポイントに対するAPIコールオブジェクト(マイクロサービス)が生成される前に指定される必要があり得る入力/出力パラメータ(任意的)を含んでもよい。抽出されたエンドポイント情報と、抽出されたエンドポイントパラメータのセットを使用して、APIエンドポイントに対するAPIコールメッセージに含まれるペイロードを作成してもよい。
510において、APIエンドポイントのためのAPIコネクタが、抽出されたエンドポイント情報及びエンドポイントパラメータのセットに基づいて生成され得る。いくつかの実施形態において、プロセッサ202は、抽出されたエンドポイント情報及びエンドポイントパラメータのセットに基づいて、APIエンドポイントのAPIコネクタを生成してもよい。生成されたAPIコネクタは、例えば、エンドポイントパラメータのセット、抽出されたエンドポイント情報、及びAPIプロバイダ情報(506で決定される)に含まれるURLを含んでもよい。APIコネクタは、実行されたときにAPIプロバイダエンドのAPIエンドポイントとAPIクライアントエンド(例えば、電子デバイス102)との間の接続リンクを形成するプログラムコードに対応し得る。
限定でなく例として、APIプロバイダ情報に含まれるURLが「https://fujitsu.com/scanner」であり、エンドポイントパラメータが「path」であり(すなわち、スキャンイメージを記憶するパスを表す)、エンドポイント情報がAPIエンドポイントのURLとして「/new_scan」を含む場合、プロセッサ202は、APIエンドポイントのためのAPIコネクタを「https://fujitsu.com/scanner/new_scan?parameter=path」として生成してもよい。
一実施形態において、プロセッサ202は、APIコネクタのためのプログラムコードをPythonなどの適切なプログラミング言語で生成してもよい。「pretty print」APIに関連したサンプルAPIコネクタのためのPythonコードの一例を以下に与える。
Figure 2021111368
一実施形態において、プロセッサ202は、電子デバイス102に関連づけられた様々なターゲットコンピューティング環境のためのAPIコネクタを生成してもよい。例えば、APIコネクタは、ユーザがAPIコールを発行することを計画し、そのようなAPIコールを発行するソフトウェアアプリケーションをデプロイし得る、ターゲットコンピューティング環境に特有のプログラムコードを含むように作成されてもよい。例えば、電子デバイス102がクラウドサーバに対応する場合、オブジェクト指向ソフトウェアプラットフォームのターゲットコンピューティング環境はクラウドベースのプラットフォームでもよい。プロセッサ202は、APIのセットに関連づけられたAPIリソースをターゲットコンピューティング環境(例えば、クラウドベースのプラットフォーム)にデプロイし、対応する生成されたAPIコネクタ及びAPIエンドポイント情報をターゲットコンピューティング環境(すなわち、クラウドベースのプラットフォーム)に追加してもよい。
512において、生成されたAPIコネクタのエンドポイントパラメータのセットに含まれる入力/出力パラメータのセットが分析され得る。少なくとも1つの実施形態において、プロセッサ202は、生成されたAPIコネクタのエンドポイントパラメータのセットに含まれる入力/出力パラメータのセットを分析してもよい。そのような分析では、統一仕様における入力/出力パラメータの記述を分析して、入力/出力パラメータのセット内の各パラメータが定数であるか変数であるかを決定してもよい。さらに、変数パラメータの場合、プロセッサ202は、変数パラメータのうちどれが変数パラメータについて有限数のバリエーション又は取り得る値を有するかを決定してもよい。
514において、固有(unique)入力/出力パラメータ値のセットが、そのような分析に基づいて入力/出力パラメータのセットに対して生成され得る。少なくとも1つの実施形態において、プロセッサ202は、入力/出力パラメータのセットのための固有入力/出力パラメータ値のセットを生成してもよい。限定でなく例として、固有入力/出力パラメータ値のセットを生成するために、プロセッサ202は、各定数値パラメータに関連づけられた定数値を生成してもよい。さらに、プロセッサ202は、有限数のとり得る変数パラメータ値を有する各パラメータについて変数値のセットを生成してもよい。例えば、「Test_API_Connector(‘alt’, ‘oauth_token’, ‘prettyPrint’)」により定義されるAPIコネクタの固有入力/出力パラメータ値のセットは、
1.パラメータ「alt」:「json」又は「xml」(2つのとり得る値)
2.パラメータ「oauth_token」:ユーザ入力(無限の値をとり得る)
3.パラメータ「prettyPrint」:「True」又は「False」(2つのとり得る値)
により与えられてもよい。
516において、生成された固有入力/出力パラメータ値のセットから、固有入力/出力パラメータ値が選択され得る。いくつかの実施形態において、プロセッサ202は、生成された固有入力/出力パラメータ値のセットから固有入力/出力パラメータ値を選択してもよい。そのような選択は、例えばラウンドロビン選択方法に基づいてもよい。上記の「Test_API_Connector」の例では、パラメータ「alt」に対して値「json」が選択されてもよく、パラメータ「prettyPrint」に対して値「True」が選択されてもよい。パラメータ「oauth_token」の値は、このパラメータに対して無限の値が可能であり得るため、選択されなくてもよい。
518において、生成されたAPIコネクタが、選択された固有入力/出力パラメータ値に基づいて構成され得る。少なくとも1つの実施形態において、プロセッサ202は、固有入力/出力パラメータ値(例えば、ブロック516で選択されるh)に基づいて、生成されたAPIコネクタを構成してもよい。本明細書において、APIコネクタは、いくつかのマイクロサービスレベルAPIコネクタ(又は、いくつかのAPIコールオブジェクト/シナリオ)を生成するために利用されてもよく、構成されたAPIコネクタは、生成されたAPIコネクタから生成された単に1つのマイクロサービスレベルAPIコネクタでもよい。上記の「Test_API_Connector」の例では、パラメータ「alt」及び「prettyPrint」に対して選択された入力/出力パラメータ値に基づいて、APIコネクタは、「Test_API_Connector(‘alt’:‘json’, ‘oauth_token’:user_input, ‘prettyPrint’:‘True’)」として構成されてもよい。他の入力/出力パラメータ値に対するAPIコネクタの他の構成は、以下のように与えられてもよい。
Test_API_Connector(‘alt’:‘xml’, ‘oauth_token’:user_input, ‘prettyPrint’:‘True’)
Test_API_Connector(‘alt’:‘xml’, ‘oauth_token’:user_input, ‘prettyPrint’:‘False’)
Test_API_Connector(‘alt’:‘json’, ‘oauth_token’:user_input, ‘prettyPrint’:‘False’)
520において、構成されたAPIコネクタのテスト実行が行われ得る。少なくとも1つの実施形態において、プロセッサ202は、構成されたAPIコネクタのテスト実行を行ってもよい。
522において、構成されたAPIコネクタのテスト実行の後に返される出力が抽出され得る。少なくとも1つの実施形態において、プロセッサ202は、構成されたAPIコネクタのテスト実行の後に返される出力を抽出してもよい。上記の「Test_API_Connector」の例を続けると、出力は、「json」フォーマットのメッセージとして抽出され、(「prettyPrint」パラメータが「True」に設定されていたとき)「prettyPrint」スタイルに従ってスタイル設定され(styled)てもよい。あるいは、出力は、「json」フォーマットでメッセージのセットとして抽出され、「prettyPrint」スタイルに基づいてスタイル設定されてもよい。メッセージのセットは、単一のトップメッセージ(表記‘[X]’で表される)又は上位10個のメッセージ(表記‘[Y]’で表される)のいずれかを含んでもよい。
524において、APIコールオブジェクトのセットのうち第1のAPIコールオブジェクトが、抽出された出力と、選択された固有入力/出力パラメータ値に基づいて生成され得る。少なくとも1つの実施形態において、プロセッサ202は、抽出された出力と選択された固有入力/出力パラメータ値に基づいて第1のAPIコールオブジェクトを生成してもよい。上記の「Test_API_Connector」の例では、出力としての単一のトップメッセージが「json」フォーマットで抽出され、「prettyPrint」スタイルでスタイル設定される場合、プロセッサ202は、第1のAPIコールオブジェクトを「Test_API_Connector(‘alt’:‘json’, ‘oauth_token’:user_input, ‘prettyPrint’:‘True’)[X]」として生成してもよい。
限定でなく例として、APIコールオブジェクトの全てのとり得る組み合わせが、表2に示すように、異なる有限変数の値(true/false、json/xml)及びそれぞれの出力([X]及び[Y])でさらに生成されてもよい。
Figure 2021111368
全てのAPIコールオブジェクト(524及び表2で取得される)について、例えば図6で説明されるように、各APIコールオブジェクトのコンセプトを定義する必要があってもよい。あらゆるAPIコールオブジェクトについて、そのコンセプトが自然言語記述子により定義される必要があり得る。
フローチャート500は502、504、506、508、510、512、514、516、518、520、522、及び524などの個別の動作として示されているが、特定の実施形態において、そのような個別動作はさらに、開示された実施形態の本質を損なうことなく特定の実装に依存してさらなる動作に分割され、より少ない動作に組み合わせられ、あるいは除去されてもよい。
図6は、本開示に記載される少なくとも1つの実施形態に従って配置された、自然言語記述子の構築のための一例示的な方法のフローチャートである。図6は、図1、図2、図3、図4、図5A及び図5Bの要素に関連して説明される。図6を参照し、フローチャート600が示される。フローチャート600に示される方法は602で開始してもよく、図2の例示的な電子デバイス102など、任意の適切なシステム、装置、又はデバイスにより実行されてもよい。
602において、生成された統一仕様から第1の情報が抽出され得る。少なくとも1つの実施形態において、プロセッサ202は、統一仕様(例えば、OASソース306)から第1の情報を抽出してもよい。第1の情報は、例えば、第1のAPIのAPIエンドポイントに関連づけられたAPI記述、APIエンドポイント記述、APIパラメータ記述、及び/又はAPI応答記述を含んでもよい。
604において、第1のAPIコールオブジェクト(図5の524で取得される)のための自然言語記述子のセットのうちの第1の自然言語記述子が構築され(constructed)得る。少なくとも1つの実施形態において、プロセッサ202は、選択された固有入力/出力パラメータ値、抽出された出力、及び抽出された第1の情報に基づいて、第1のAPIコールオブジェクトのための第1の自然言語記述子を構築してもよい。構築された第1の自然言語記述子は、第1のAPIコールオブジェクトの用途を示してもよく、第1のAPIコールオブジェクトに関連づけられた自然言語記述及びトピックを含んでもよい。
自然言語記述を構成するために、本明細書に記載されるように、NLP動作のシーケンスが実行され得る。最初、第1の記述テキストが、抽出された第1の情報に基づいて、第1のAPIコールオブジェクトに関連づけられた入力/出力パラメータ値に対して決定され得る。同様に、第2の記述テキストが、抽出された出力(例えば、図5の522で抽出される)に対して決定され得る。プロセッサ202は、抽出された第1の情報に基づいて、第1のAPIコールオブジェクトに関連づけられたAPIタイトルを決定してもよく、その後、プロセッサ202は、決定された第1の記述テキスト、決定された第2の記述テキスト、及び決定されたAPIタイトルを意味的に(semantically)連結して、第1のAPIコールオブジェクトのための自然言語記述を構築してもよい。
「Test_API_Connector」(図5B、ブロック524を参照)の例を続けると、第1のコールオブジェクトは、
「Test_API_Connector(‘alt’:‘json’, ‘oauth_token’:user_input, ‘prettyPrint’:‘True’)[X]」
として生成され得る。上記の例では、第1の記述テキストが、パラメータ「alt」に対して「JSONフォーマット(json format)」として、及びパラメータ「prettyPrint」に対して「prettyPrintスタイルを有する(with prettyPrint style)」として決定されてもよい。抽出された出力(すなわち、[X]又は単一のトップメッセージ)に対しては、第2の記述テキストが「トップメッセージを取得する(Get top message)」として決定されてもよい。同様に、APIタイトルが「Google+ API」として決定されてもよい。第1の記述テキスト、第2の記述テキスト、及び決定されたAPIタイトルを連結して、
「prettyPrintスタイルを有するJSONフォーマットで、Google+ APIからトップメッセージを取得する(Get top message from Google+ API as JSON format with prettyPrint style)」
として与えられる第1のコールオブジェクトのための自然言語記述を得てもよい。
上記の例を続けると、自然言語記述は、第1のAPIコールオブジェクトの使用の指標として機能し得る。第1の自然言語記述子は、第1のAPIコールオブジェクトに関連づけられたトピックをさらに含んでもよい。例えば、トピックは、自然言語記述に関連づけられた主な動詞と主な主語の意味的同等物に基づいて決定されてもよい。上記の例では、トピックは「メッセージを抽出する(Extract messages)」でもよい。
フローチャート600は例えば602及び604などの個別の動作として示されているが、特定の実施形態において、そのような個別動作はさらに、開示された実施形態の本質を損なうことなく特定の実装に依存してさらなる動作に分割され、より少ない動作に組み合わせられ、あるいは除去されてもよい。
図7は、本開示に記載される少なくとも1つの実施形態に従って配置された、APIのセットの統一仕様の一部の一例である。図7は、図1、図2、図3、図4、図5A、図5B、及び図6の要素に関連して説明される。図7を参照し、JSONフォーマットにおけるRESTful APIのセットのためのオープンAPI仕様700の一部が示される。
オープンAPI仕様700は、RESTful APIのセットに関連する情報の一部を含んでもよく、1つ以上のマークアップタグ及び/又はカテゴリにより指定されてもよい。図7に示すように、オープンAPI仕様700は、RESTful APIのセットのうち各APIのタイトルを含み得るインフォ(info)タグ702を含んでもよい。オープンAPI仕様700は、RESTful APIのセットの様々なAPIエンドポイントに関連づけられた情報を含み得るパス(path)タグ704をさらに含んでもよい。このような情報には、APIエンドポイントに関連づけられたURLを含んでもよい。
オープンAPI仕様700は、APIエンドポイントを有するAPIコネクタの生成に使用される通信プロトコルに関連する情報を含み得るスキーム(schemes)タグ706をさらに含んでもよい。一例として、図示されるように、スキームタグは、RESTful APIのセットのための「https」(ハイパーテキストトランスファープロトコルセキュア)通信プロトコルを示してもよい。さらに、オープンAPI仕様700は、APIエンドポイントに関連づけられた様々なパラメータに関連する情報を含み得るパラメータ(parameters)タグ708を含んでもよい。一例として、図7は、2つの「クエリ」タイプのパラメータ、例えば「prettyPrint」と名付けられた第1のパラメータ710A及び「fields」と名付けられた第2のパラメータ710Bなどを示している。第1のパラメータ710Aは、「True」のデフォルト値を有する「ブール(Boolean)」型でもよい。第1のパラメータ710Aの記述によれば、パラメータは、「インデントと改行を有する応答を返す(Returns response with indentations and line breaks)」。同様に、第2のパラメータ710Bは、「部分的な応答にどのフィールドを含めるべきかを指定するセレクタ(Selector specifying which fields to include in a partial response)」という記述を有する「ストリング(String)」型でもよい。
図7に示されるオープンAPI仕様700の一部は一例として提示されているに過ぎず、本開示を限定するものと解釈されるべきではないことに留意されたい。本開示はAPIに関連する他の情報を含んでもよく、あるいは、オープンAPI仕様700は本開示の範囲から逸脱することなくXML又はYAMLフォーマットなどの他のフォーマットでもよい。
図8は、本開示に記載される少なくとも1つの実施形態に従って配置された、オブジェクト指向ソフトウェアプラットフォームのデプロイのための一例示的なシステムを示すブロック図である。図8は、図1、図2、図3、図4、図5A、図5B、図6、及び図7の要素に関連して説明される。図8を参照し、システム802のブロック図800が示される。システム802は、プロセッサ804、メモリ806、永続データ記憶装置808、入力/出力(I/O)デバイス810、表示画面812、及びネットワークインターフェース814を含み得る。
プロセッサ804は、システム802により実行されるべき異なる動作に関連づけられたプログラム命令を実行するように構成され得る適切な論理、回路、及び/又はインターフェースを含み得る。例えば、動作のいくつかは、オブジェクト指向ソフトウェアプラットフォーム(オブジェクト指向ソフトウェアプラットフォーム114/302など)の展開及びライブ実行に関連してもよい。プロセッサ804は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な専用又は汎用コンピュータ、コンピューティングエンティティ、又は処理デバイスを含んでもよく、任意の適用可能なコンピュータ読取可能記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ804は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラム命令を解釈及び/又は実行し、及び/又はデータを処理するように構成された任意の他のデジタル若しくはアナログ回路を含んでもよい。
図2では単一のプロセッサとして示されているが、プロセッサ804は、本開示に記載されるシステム802の任意数の動作を個々に又は集合的に実行し又はその実行を指示するように構成された任意数のプロセッサを含んでもよい。さらに、プロセッサの1つ以上が、異なるサーバなどの1つ以上の異なる電子デバイスに存在してもよい。いくつかの実施形態において、プロセッサ804は、メモリ806及び/又は永続データ記憶装置808に記憶されたプログラム命令を解釈及び/又は実行し、及び/又はデータを処理するように構成されてもよい。いくつかの実施形態において、プロセッサ804は、永続データ記憶装置808からプログラム命令を取り出し、メモリ806にプログラム命令をロードすることができる。プログラム命令がメモリ806にロードされた後、プロセッサ804はプログラム命令を実行することができる。プロセッサ804の例のいくつかは、GPU、CPU、RISCプロセッサ、ASICプロセッサ、CISCプロセッサ、コプロセッサ、及び/又はこれらの組み合わせでもよい。
メモリ806は、プロセッサ804により実行可能なプログラム命令を記憶するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。特定の実施形態において、メモリ806は、オペレーティングシステム及び関連するアプリケーション特有の情報を記憶するように構成されてもよい。メモリ806は、記憶されたコンピュータ実行可能命令又はデータ構造を搬送し又は有するコンピュータ読取可能記憶媒体を含んでもよい。そのようなコンピュータ読取可能記憶媒体は、プロセッサ804などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体を含んでもよい。限定でなく例として、そのようなコンピュータ読取可能記憶媒体は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、コンパクトディスク読取専用メモリ(CD‐ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、又はコンピュータ実行可能命令又はデータ構造の形式で特定のプログラムコードを搬送又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、有形又は非一時的コンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能命令は、例えば、システム802に関連づけられた特定の動作又は動作のグループをプロセッサ804に実行させるように構成された命令及びデータを含んでもよい。
永続データ記憶装置808は、プロセッサ804により実行可能なプログラム命令、オペレーティングシステム、及び/又はログ及びアプリケーション特有のデータベースなどのアプリケーション特有の情報を記憶するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。永続データ記憶装置808は、記憶されたコンピュータ実行可能命令又はデータ構造を搬送し又は有するコンピュータ読取可能記憶媒体を含んでもよい。そのようなコンピュータ読取可能記憶媒体は、プロセッサ804などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体を含んでもよい。
限定でなく例として、そのようなコンピュータ読取可能記憶媒体は、コンパクトディスク読取専用メモリ(CD‐ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス(例えば、ハードディスクドライブ(HDD))、フラッシュメモリデバイス(例えば、ソリッドステートドライブ(SSD)、セキュアデジタル(SD)カード、他のソリッドステートメモリデバイス)、又はコンピュータ実行可能命令又はデータ構造の形式で特定のプログラムコードを搬送又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、有形又は非一時的コンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能命令は、例えば、システム802に関連づけられた特定の動作又は動作のグループをプロセッサ804に実行させるように構成された命令及びデータを含んでもよい。
I/Oデバイス810は、ユーザ入力(例えば、ソフトウェアパッケージにリンクされた選択可能なツールのセットのユーザ選択に関連づけられたユーザ入力)を受け取るように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。I/Oデバイス810は、さらに、ユーザ入力に応答して出力を提供するように構成されてもよい。I/Oデバイス810は、プロセッサ804及び他のコンポーネント、例えばネットワークインターフェース814などと通信するように構成され得る様々な入力及び出力デバイスを含んでもよい。入力デバイスの例は、これらに限られないが、タッチスクリーン、キーボード、マウス、ジョイスティック、及び/又はマイクロフォンを含んでもよい。出力デバイスの例は、これらに限られないが、ディスプレイ及びスピーカーを含んでもよい。
表示画面812は、ユーザ112に対して生成された電子UIをレンダリングするように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。表示画面210は、これらに限られないが、液晶表示(LCD)ディスプレイ、発光ダイオード(LED)ディスプレイ、プラズマディスプレイ、及び/又は有機LED(OLED)ディスプレイ技術、及び/又は他のディスプレイ技術などのいくつかの既知の技術を介して実現されてもよい。
ネットワークインターフェース814は、システム802、電子デバイス102、及びユーザエンドデバイス106間の通信を確立するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含んでもよい。ネットワークインターフェース814は、システム802の有線又は無線通信をサポートするために、様々な既知の技術の使用により実現されてもよい。ネットワークインターフェース814は、これらに限られないが、アンテナ、無線周波数(RF)トランシーバ、1つ以上の増幅器、チューナ、1つ以上の発振器、デジタル信号プロセッサ、コーダ‐デコーダ(CODEC)チップセット、加入者識別モジュール(SIM)カード、及び/又はローカルバッファを含んでもよい。
ネットワークインターフェース814は、インターネット、イントラネット、及び/又は無線ネットワーク、例えばセルラー電話ネットワーク、無線ローカルエリアネットワーク(LAN)、及び/又はメトロポリタンエリアネットワーク(MAN)などのネットワークと無線通信を介して通信してもよい。無線通信は、グローバルシステムフォーモバイルコミュニケーション(Global System for Mobile Communications、GSM)、拡張データGSM環境(Enhanced Data GSM Environment、EDGE)、広帯域符号分割多元接続(wideband code division multiple access、W‐CDMA)、ロングタームエボリューション(Long Term Evolution、LTE)、符号分割多元接続(code division multiple access、CDMA)、時分割多元接続(time division multiple access、TDMA)、Bluetooth、ワイヤレスフィデリティ(Wi‐Fi)(IEEE802.11a、IEEE802.11b、IEEE802.11g、及び/又はIEEE802.11nなど)、ボイスオーバーインターネットプロトコル(VoIP)、ライトフィデリティ(Li‐Fi)、又はWi‐MAXなどの複数の通信規格、プロトコル、及び技術のうち任意のものを使用してもよい。
本開示の範囲から逸脱することなく、システム802に対して修正、追加、又は省略がなされてもよい。例えば、いくつかの実施形態において、システム802は、簡潔さのため明示的に例示又は記載されない場合がある任意数の他のコンポーネントを含んでもよい。
図9は、本開示に記載される少なくとも1つの実施形態に従って配置された、図1のオブジェクト指向ソフトウェアプラットフォームの異なるレイヤにおける異なるオブジェクトの一例を示す。図9は、図1、図2、図3、図4、図5A、図5B、図6、図7、及び図8の要素に関連して説明される。図9を参照し、オブジェクト指向ソフトウェアプラットフォーム114の異なるレイヤにおける異なるオブジェクトの一例900が示される。例900には、APIソフトウェアコンポーネントレイヤ902、ビジネスレイヤ904、設計レイヤ906、及びランタイムレイヤ908が示されている。
オブジェクト指向ソフトウェアプラットフォーム114が作成されると、ユーザは、APIソフトウェアコンポーネントレイヤ902、ビジネスレイヤ904、設計レイヤ906、及びランタイムレイヤ908の各々に現れるオブジェクトを単に選ぶことができる。しかしながら、上位レイヤからオブジェクトを選択することにより、利用可能なリソース/コンセプトのうち限られた選択肢が下位レイヤに現れてもよい。例えば、ユーザは、ビジネスレイヤ904において通知を選択してもよく、次いで設計レイヤ906では、利用可能なリソースのみ(例えば、電子メール通知、電話呼び出し通知、及びテキストメッセージSMS通知)がユーザ選択に利用可能でもよい。
APIソフトウェアコンポーネントレイヤ902は、アプリケーション領域のために構築されたソフトウェアパッケージ(例えば、410で得られる)に対応するユーザ選択可能なオブジェクトをカプセル化し得る。図示のように、これらのユーザ選択可能なオブジェクトは、現在位置(current location)オブジェクト902A、ユーザ登録(user registration)オブジェクト902B、電子支払い(e-payment)オブジェクト902C、及び通知(notification)オブジェクト902Dを含んでもよい。ユーザ選択可能なオブジェクトの各々は、それぞれのソフトウェアパッケージにリンクされ得る。
各々のユーザ選択可能なオブジェクト(又は、構築されたソフトウェアパッケージ)について、ビジネスレイヤ904は、それぞれのソフトウェアパッケージに含まれるAPIコールオブジェクトの入力/出力パラメータのセットに適用可能な条件に関連するユーザ選択可能な選択肢を含んでもよい。図示のように、現在位置オブジェクト902Aでは、ビジネスレイヤ904は、GPS制約(GPS restrictions)選択肢904A及びIP制約(IP restrictions)選択肢904Bを含んで、現在位置オブジェクト902Aに対して構築されたソフトウェアパッケージに含まれるAPIコールオブジェクトの入力/出力パラメータのセットに適用可能な条件を指定してもよい。
各ユーザ選択可能オブジェクト(又は、構築されたソフトウェアパッケージ)について、設計レイヤ906は、コンセプトとして自然言語記述子のセット(図6で得られる)をカプセル化してもよい。これらのコンセプトは、構築されたソフトウェアパッケージのアプリケーション領域に関連する複数のマイクロサービス又はAPIコールオブジェクトを記述することができる。図示のように、設計レイヤ906は、現在位置オブジェクト902Aに対する自然言語記述子に含まれる2つのトピックとしてGPS位置(GPS location)906A及びIP位置(IP location)906Bを含む設計オブジェクトをカプセル化する。
設計レイヤ906内の各コンセプト又はトピック(自然言語記述子に含まれる)について、ランタイムレイヤ908は、APIコールオブジェクトのセット(例えば、524で生成される)を含んでもよい。図示のように、ランタイムレイヤ908は、Android.GPS API908A、Apple.GPS API908B、及びIP2Location API908CなどのAPIコールオブジェクトに関連する選択肢を含んでもよい。ここで、Android.GPS API908AとApple.GPS API908Bは、設計レイヤ906内のGPS位置906Aに関連し得、IP2Location API908Cは、設計レイヤ906内のIP位置906Bに関連し得る。
図10は、本開示に記載される少なくとも1つの実施形態に従って配置された、図1のオブジェクト指向ソフトウェアプラットフォームの一例示的な電子UIである。図10は、図1、図2、図3、図4、図5A、図5B、図6、図7、図8及び図9の要素に関連して説明される。図10を参照し、電子UI1000が示される。オブジェクト指向ソフトウェアプラットフォーム114の作成のために、プロセッサ804は、フロー領域1002、ツールボックス領域1004、及びプロパティ領域1006などのUI要素のセットを含み得る電子UI1000を生成してもよい。ひとたび作成されると、オブジェクト指向ソフトウェアプラットフォーム114は、システム802又は電子デバイス102などの適切な計算デバイスにデプロイされ得る。
例えば、システム802において、プロセッサ804は、表示画面210に電子UI1000をレンダリングして、ユーザ(ユーザ112など)がオブジェクト指向ソフトウェアプラットフォーム114を使用してソフトウェアアプリケーションを開発できるようにし得る。プロセッサ804は、ツールボックス領域1004内のオブジェクト指向ソフトウェアプラットフォーム114のあらゆるレイヤに関連づけられたオブジェクトを表示してもよい。ユーザ112は単に、ツールボックス領域1004からオブジェクト1008をドラッグし、それをフロー領域1002に追加する必要があり得る。ひとたびツールボックス領域1004内のオブジェクト1008に対してユーザ選択が行われると、プロセッサ804は、プロパティ領域1006内に選択されたオブジェクト1008のプロパティ1010を表示して、ユーザ112が選択されたオブジェクト1008のプロパティ1010を設定できるようにし得る。さらに、選択されたオブジェクト1008の下位レイヤに属するオブジェクト/選択肢が、ツールボックス領域1004又はフロー領域1002に現れてもよい。上記プロセスは、最下レイヤに到達し、ソフトウェアコンポーネントに対して結果的に生じるソースコードがユーザ112のためのソフトウェアアプリケーションを生成するためにコンパイルされる準備ができるまで、反復されてもよい。オブジェクト指向ソフトウェアプラットフォーム114の電子UI1000を使用したソフトウェアアプリケーションの開発方法の一例が、例えば図12A及び図12Bで説明される。本明細書では詳述しないが、UI要素のセットは、開示の範囲から逸脱することなく、オブジェクト指向ソフトウェアプラットフォーム114の様々なソフトウェアレイヤに関連づけられた階層内に他のユーザ選択可能なオブジェクト及びユーザ選択可能な選択肢のセットを含んでもよい。
図11は、本開示に記載される少なくとも1つの実施形態に従って配置された、図3のオブジェクト指向ソフトウェアプラットフォームを使用するソフトウェアアプリケーションの開発のための一例示的な方法のフローチャートを示す。図11は、図1、図2、図3、図4、図5A、図5B、図6、図7、図8、図9、及び図10の要素と関連して説明される。図11を参照し、フローチャート1100が示される。フローチャート1100に示される方法は1102で開始してもよく、図8のシステム802又は図2の電子デバイス102などの任意の適切なシステム、装置、又はデバイスにより実行されてもよい。個別のブロックで示されているが、フローチャート1100のブロックのうち1つ以上に関連づけられた動作は、特定の実装に依存してさらなるブロックに分割され、より少ないブロックに組み合わせられ、あるいは除去されてもよい。
1102において、オブジェクト指向ソフトウェアプラットフォーム302の電子UIが、システム802の表示画面812にレンダリングされ得る。少なくとも1つの実施形態において、プロセッサ804は、表示画面812に電子UI(例えば、電子UI1000)をレンダリングするように構成されてもよい。オブジェクト指向ソフトウェアプラットフォーム302は、レイヤ化されたソフトウェアアーキテクチャに関連づけられてもよく、例えば、第1のレイヤ、第2のレイヤ、第3のレイヤ、及び第4のレイヤを含んでもよい。第1のレイヤは、APIコールオブジェクトのセット308をカプセル化してもよく、第2のレイヤは、APIコールオブジェクトのセット308に対応する自然言語記述子のセット(すなわち、API設計オブジェクトのセット310)をカプセル化してもよい。さらに、第3のレイヤは、APIビジネスオブジェクトのセット312をカプセル化してもよい。各ビジネスオブジェクトは、入力/出力パラメータのセットに対する条件を含んでもよい。第4のレイヤは、ソフトウェアパッケージのセット(例えば、APIベースのソフトウェアコンポーネント314)を含んでもよく、各ソフトウェアパッケージは、APIコールオブジェクトのセット308、API設計オブジェクトのセット310、及びAPIビジネスオブジェクトのセット312をカプセル化してもよい。
レンダリングされた電子UIは、ソフトウェアパッケージのセットに対応し得るユーザ選択可能なオブジェクトのセットを含んでもよい。ここで、各ソフトウェアパッケージは、アプリケーション領域に関連づけられてもよく、ユーザ112が開発を計画しているソフトウェアアプリケーションに特定の機能性を追加してもよい。一例として、図9に示すように、現在位置オブジェクト902A、ユーザ登録オブジェクト902B、電子支払いオブジェクト902C、及び通知オブジェクト902Dが、ユーザ選択可能なオブジェクトのセットとして電子UIに表示されてもよい。
1104において、ユーザ選択可能なオブジェクトのセットのうち第1のユーザ選択可能なオブジェクトを通じての第1の入力(例えば、ユーザ入力)に基づいて、ソフトウェアパッケージのセットからソフトウェアパッケージが選択され得る。少なくとも1つの実施形態において、プロセッサ804は、ソフトウェアパッケージのセットからソフトウェアパッケージを選択してもよい。一例として、第1の入力は、位置に関連するソフトウェアパッケージを選択するために現在位置オブジェクト902Aを通じてユーザ112により提供されてもよい。一実施形態において、選択されたソフトウェアパッケージは、APIコールオブジェクトのセット308、APIコールオブジェクトのセットに対応する自然言語記述子のセット(すなわち、API設計オブジェクトのセット310)、及び入力/出力パラメータのセット(APIビジネスオブジェクトのセット312に対応する)に対する条件をカプセル化することができる。
1106において、選択されたソフトウェアパッケージに含まれるAPIコールオブジェクトのセット308の入力/出力パラメータのセットに対する条件について値が更新され得る。そのような更新は、第2の入力(例えば、別のユーザ入力)に基づいてもよい。少なくとも1つの実施形態において、プロセッサ804は、選択されたソフトウェアパッケージに含まれるAPIコールオブジェクトのセット308の入力/出力パラメータのセットに対する条件についての値を更新してもよい。そのような更新は、ユーザ112からの第2の入力に基づいて実行されてもよい。
上記の例を続けると、ユーザ入力に基づいて、プロセッサ804は、GPS制約選択肢904Aを介してGPS制約を選択し、更新し得る。例えば、GPS制約選択肢904Aは、GPSデバイスに関連する制限、GPSデバイスの使用に対して選択された地理的領域、GPSデバイスへのユーザアクセスの制約、及びGPSデバイスを使用するための時間制限を含んでもよい。API設計オブジェクトのセット310に対する、財務制約、ユーザ認証、及び/又はユーザ許可などの他のタイプの制約が、ビジネスレイヤ320内の他のビジネスオブジェクトを介して更新されてもよい。
1108において、更新の後、第3の入力(例えば、別のユーザ入力)に基づいて1つ以上の自然言語記述子が選択され得る。少なくとも1つの実施形態において、プロセッサ804は、自然言語記述子のセットから1つ以上の自然言語記述子を選択するように構成されてもよい。自然言語記述子のセットは、APIコールオブジェクトのセット308を定義するために設計レイヤ318内にコンセプトとして現れてもよい。上記の例を続けると、ユーザ入力に基づくGPS制約選択肢904Aの選択及び構成の後、設計レイヤ318内のGPS位置906Aが、(1106における)条件が適用可能であり得るAPIコールオブジェクトの自然言語記述子/コンセプトとしてユーザ112により選択されてもよい。
1110において、第4の入力(例えば、別のユーザ入力)に基づいてAPIコールオブジェクトのセット308から1つ以上のAPIコールオブジェクトが選択され得る。少なくとも1つの実施形態において、プロセッサ804は、APIコールオブジェクトのセット308から1つ以上のAPIコールオブジェクトを選択してもよい。上記の例を続けると、ユーザ入力に基づくGPS位置906Aの選択の後、ターゲットソフトウェアアプリケーションがAndroid(登録商標)プラットフォーム向けの場合、Android.GPS API908AなどのAndroid(登録商標) OSに関連するAPIコールオブジェクトが選択されてもよい。
1112において、選択された1つ以上のAPIコールオブジェクト、条件の更新された値、及び選択されたソフトウェアパッケージに基づいてソフトウェアコンポーネントがコンパイルされ得る。少なくとも1つの実施形態において、プロセッサ804は、選択された1つ以上のAPIコールオブジェクト、条件の更新された値、及び選択されたソフトウェアパッケージに基づいてソフトウェアコンポーネントをコンパイルしてもよい。コンパイルは、選択された1つ以上のAPIコールオブジェクト、条件の更新された値、及び選択されたソフトウェアパッケージを含むソースファイルを、コンピュータ実行可能ソフトウェアアーチファクト又は中間オブジェクトに変えることができる。これらのコンピュータ実行可能ソフトウェアアーチファクト又は中間オブジェクトは、コンパイルされたソフトウェアコンポーネントの一部として、ソフトウェアアプリケーションを構成してもよい。
1114において、コンパイルされたソフトウェアコンポーネントに基づいてAPIベースのソフトウェアアプリケーションが構築され得る。少なくとも1つの実施形態において、プロセッサ804は、コンパイルされたソフトウェアコンポーネントに基づいてAPIベースのソフトウェアアプリケーションを構築するように構成されてもよい。上記の例を続けると、現在位置ソフトウェアコンポーネントがコンパイルされ、ターゲットAPIベースのソフトウェアアプリケーションに統合され得る。ソフトウェアコンパイル及びソフトウェアパッケージ化は典型的には当業者に知られており、したがって、これに関する詳細な説明は簡潔さのため開示から省略されている。
フローチャート1100は1102、1104、1106、1108、1110、1112、及び1114などの個別の動作として示されているが、特定の実施形態において、そのような個別動作はさらに、開示された実施形態の本質を損なうことなく特定の実装に依存してさらなる動作に分割され、より少ない動作に組み合わせられ、あるいは除去されてもよい。
図12A及び12Bは集合的に、本開示に記載される少なくとも1つの実施形態に従って配置された、図3のオブジェクト指向ソフトウェアプラットフォームを使用するソフトウェアアプリケーションの開発のための一例示的な方法のフローチャートを示す。図12A及び図12Bは、図1、図2、図3、図4、図5A、図5B、図6、図7、図8、図9、図10、及び図11の要素と関連して説明される。図12A及び図12Bを参照し、フローチャート1200が示される。フローチャート1200に示される方法は1202で開始してもよく、図8のシステム802などの任意の適切なシステム、装置、又はデバイスにより実行されてよい。個別のブロックで示されているが、フローチャート1200の1つ以上のブロックに関連づけられた動作は、特定の実装に依存してさらなるブロックに分割され、より少ないブロックに組み合わせられ、あるいは除去されてもよい。
1202において、APIソフトウェアコンポーネントレイヤ322のユーザ選択可能なオブジェクトがツールボックス領域1004から選択され得る。一実施形態において、プロセッサ804は、APIソフトウェアコンポーネントレイヤ322のユーザ選択可能なオブジェクトを選択してもよい。APIソフトウェアコンポーネントレイヤ322の様々なユーザ選択可能なオブジェクトは、ユーザ選択のためにツールボックス領域1004内に最初に存在し得る。ユーザ入力(表示画面812を介したマウスクリック又はタッチ入力など)に基づいて、プロセッサ804は、ツールボックス領域1004からAPIソフトウェアコンポーネントレイヤ322のユーザ選択可能なオブジェクトを選択してもよい。
1204において、ユーザ選択可能なオブジェクトがフロー領域1002に追加され得る。一実施形態において、プロセッサ804は、ユーザ入力(マウスクリック又はタッチ入力、ドラッグアンドドロップ入力など)に基づいて、APIソフトウェアコンポーネントレイヤ322の選択されたユーザ選択可能なオブジェクトをフロー領域1002に追加してもよい。ひとたびフロー領域1002に追加されると、次のレイヤ、すなわちビジネスレイヤ320からのビジネスオブジェクトが、ユーザ選択可能なオブジェクトと共に現れ得る。
1206において、ビジネスレイヤ320のビジネスオブジェクトがフロー領域1002から選択され得る。一実施形態において、プロセッサ804は、ユーザ入力(表示画面812を介したマウスクリック又はタッチ入力など)に基づいて、ビジネスレイヤ320のビジネスオブジェクトを選択してもよい。ビジネスオブジェクトの選択に基づいて、プロセッサ804は、ツールボックス領域1004/プロパティ領域1006にビジネスレイヤ320内の選択されたビジネスオブジェクトに関連する選択肢/プロパティを投入し(populate)てもよい。
1208において、ビジネス制約、ビジネス制限、ビジネスポリシー、及びビジネスレガシーを含み得るプロパティがユーザの入力に基づいて更新され得る。一実施形態において、ユーザ入力に基づいてプロセッサ804はプロパティを更新してもよい。ビジネス制約、ビジネス制限、ビジネスポリシー、及びビジネスレガシーを含むが、これらに限定されない。これらのプロパティは、プロパティ領域1006に現れ得る。
1210において、プロパティの値が設定され得る。一実施形態において、プロセッサ804は、ビジネスレイヤ320の選択されたビジネスオブジェクトに関連づけられたプロパティの値を設定してもよい。
1212において、ユーザ112がオブジェクト指向ソフトウェアプラットフォーム302に関連づけられた上位レイヤ(例えば、APIソフトウェアコンポーネントレイヤ322)を選択したかどうかを判定するためにチェックが実行され得る。一実施形態において、プロセッサ804はこのチェックを実行してもよい。プロセッサ804が、上位レイヤ(又は、上位レイヤオブジェクト)が選択されていると判定した場合、制御は1204に渡り得る。そうでない場合、制御は1214に渡り得る。
1214において、ビジネスレイヤ320内のあらゆるビジネスオブジェクトがフロー領域1002から選択され得る。一実施形態において、プロセッサ804は、ユーザ入力(表示画面812を介したマウスダブルクリック又はタッチ入力など)に基づいて、ビジネスレイヤ320内のあらゆるオブジェクトを選択してもよい。あらゆる選択のために、プロセッサ804は、ツールボックス領域1004に設計レイヤ318の設計オブジェクトを投入してもよい。
1216において、選択されたビジネスオブジェクトに対して設計レイヤ318の設計オブジェクトが表示され得る。一実施形態において、プロセッサ804は、ツールボックス領域1004において、ビジネスレイヤ320の選択されたビジネスオブジェクト及びAPIソフトウェアコンポーネントレイヤ322の選択されたユーザ選択可能なオブジェクトに関連づけられた各設計オブジェクトを表示してもよい。
1218において、設計レイヤ318の設計オブジェクトがツールボックス領域1004から選択され得、フロー領域1002に追加され得る。一実施形態において、プロセッサ804は、ユーザ入力(表示画面812を介したマウスクリック又はタッチ入力など)に基づいて、ツールボックス領域1004から設計レイヤ318の設計オブジェクトを選択してもよい。
1220において、ユーザ112がオブジェクト指向ソフトウェアプラットフォーム302に関連づけられた上位レイヤを選択したかどうかを判定するためにチェックが実行され得る。一実施形態において、プロセッサ804はこのチェックを実行してもよい。プロセッサ804が、上位レイヤ(又は、上位レイヤオブジェクト)に対してユーザ入力が受信されていると判定した場合、制御は1206に渡り得る。そうでない場合、制御は1222に渡り得る。
1222において、フロー領域1002内の設計レイヤ318の各設計オブジェクトが選択され得る。一実施形態において、プロセッサ804は、ユーザ入力(表示画面812を介したマウスダブルクリック又はタッチ入力など)に基づいて、設計レイヤ318の各オブジェクトを選択してもよい。あらゆる選択のために、ツールボックス領域1004は、ランタイムレイヤ316のそれぞれのAPIコールオブジェクトを投入されてもよい。
1224において、設計レイヤ318の選択された設計オブジェクトに関連づけられたランタイムレイヤ316のあらゆるAPIコールオブジェクトが表示され得る。一実施形態において、プロセッサ804は、ツールボックス領域1004において、設計レイヤ318の選択された設計オブジェクトに関連づけられたランタイムレイヤ316の全てのAPIコールオブジェクトを表示してもよい。
ブロック1226において、ランタイムレイヤ316のAPIコールオブジェクトがツールボックス領域1004から選択され得、フロー領域1002に追加され得る。一実施形態において、プロセッサ804は、ユーザ入力(表示画面812を介したマウスクリック又はタッチ入力など)に基づいて、ツールボックス領域1004からランタイムレイヤ316のAPIコールオブジェクトを選択してもよい。
1228において、ユーザ112がオブジェクト指向ソフトウェアプラットフォーム302に関連づけられた上位レイヤを選択したかどうかを判定するためにチェックが実行され得る。一実施形態において、プロセッサ804はこのチェックを実行してもよい。プロセッサ804が、ユーザ入力が上位レイヤ(又は、上位レイヤオブジェクト)に対するものでないと判定した場合、制御は1230に渡り得る。
1230において、ユーザ112がソフトウェアコンポーネントをコンパイルする選択肢を選択したかどうかを判定するためにチェックが実行され得る。一実施形態において、プロセッサ804はこのチェックを実行してもよい。プロセッサ804が、ユーザ112がソフトウェアコンポーネントをコンパイルする選択肢を選択したと判定した場合、プロセッサ804は、ブロック1232に関連づけられた動作を実行してもよい。
1232において、ソフトウェアプロダクトが生成され得る。一実施形態において、プロセッサ804は、ランタイムレイヤ316のユーザ選択オブジェクト、設計レイヤ318のユーザ選択オブジェクト、ビジネスレイヤ320のオブジェクトに関連づけられたユーザ構成プロパティ、及びAPIソフトウェアコンポーネントレイヤ322のユーザ選択オブジェクトを使用するソフトウェアコンポーネントのコンパイルに基づいてソフトウェアプロダクトを生成してもよい。プロセッサ804は、ソフトウェアコンパイル手法の使用によりソフトウェアコンポーネントをコンパイルしてもよく、コンパイルされたソフトウェアコンポーネントに基づいてソフトウェアプロダクトを生成してもよい。制御はさらに終了に渡り得る。
フローチャート1200は1202、1204、1206、1208、1210、1212、1214、1216、1218、1220、1222、1224、1226、1228、1230、及び1232などの個別の動作として示されているが、特定の実施形態において、そのような個別動作はさらに、開示された実施形態の本質を損なうことなく特定の実装に依存してさらなる動作に分割され、より少ない動作に組み合わせられ、あるいは除去されてもよい。
本開示の様々な実施形態は、実行されたことに応答してシステム(例示的な電子デバイス102など)に動作を実行させる命令を記憶するように構成された1つ以上の非一時的コンピュータ読取可能記憶媒体を提供し得る。この動作は、オブジェクト指向ソフトウェアプラットフォームを作成することを含み得る。オブジェクト指向ソフトウェアの作成の動作は、APIのセットに関連づけられたドキュメンテーションコーパスのテキスト分析を実行することをさらに含んでもよい。動作には、APIのセットのうち第1のAPIのAPIエンドポイントのためのAPIコールオブジェクトのセットを生成することをさらに含んでもよい。動作には、テキスト分析に基づいて、生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築することをさらに含んでもよい。さらに、動作には、ビジネスオブジェクトのセットを生成することを含んでもよい。ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化し得る。動作には、生成されたAPIコールオブジェクトのセット、構築された自然言語記述子のセット、及び生成されたビジネスオブジェクトのセットをカプセル化し得るソフトウェアパッケージを構築することをさらに含んでもよい。
本開示の別の実施形態は、実行されたことに応答してシステム(システム802など)に動作を実行させる命令を記憶するように構成された1つ以上の非一時的コンピュータ読取可能記憶媒体を提供し得る。この動作は、表示装置におけるオブジェクト指向ソフトウェアプラットフォームの電子UIのレンダリングを含み得る。レンダリングされた電子UIは、ソフトウェアパッケージのセットに対応し得るユーザ選択可能なオブジェクトのセットを含み得る。さらに、動作には、ユーザ選択可能なオブジェクトのセットのうち第1のユーザ選択可能なオブジェクトを通じての第1の入力に基づいて、ソフトウェアパッケージのセットからソフトウェアパッケージを選択することを含んでもよい。動作には、第2の入力に基づいて、選択されたソフトウェアパッケージに含まれるAPIコールオブジェクトのセットのための入力/出力パラメータのセットに対する条件の値を更新することをさらに含んでもよい。動作には、更新の後、第3の入力に基づいてAPIコールオブジェクトのセットに対応する自然言語記述子のセットのうち少なくとも1つの自然言語記述子を選択することをさらに含んでもよい。動作には、第4の入力に基づいてAPIコールオブジェクトのセットのうち少なくとも1つのAPIコールオブジェクトを選択することをさらに含んでもよい。さらに、動作には、選択された少なくとも1つのAPIコールオブジェクト、条件の更新された値、及び選択されたソフトウェアパッケージに基づいてソフトウェアコンポーネントをコンパイルすることを含んでもよい。動作には、コンパイルされたソフトウェアコンポーネントに基づいてAPIベースのソフトウェアアプリケーションを構築することを含んでもよい。
本開示において用いられるとき、用語「モジュール」又は「コンポーネント」は、モジュール又はコンポーネントのアクションを実行するように構成された特定のハードウェア実装、及び/又はコンピューティングシステムの汎用ハードウェア(例えば、コンピュータ読取可能媒体、処理デバイス等)に記憶され及び/又は汎用ハードウェアにより実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを参照し得る。いくつかの実施形態において、本開示に記載される異なるコンポーネント、モジュール、エンジン、及びサービスが、コンピューティングシステム上で実行するオブジェクト又はプロセスとして(例えば、別個のスレッドとして)実現されてもよい。本開示に記載されるシステム及び方法のいくつかは、一般に、(汎用ハードウェアに記憶され、及び/又は汎用ハードウェアにより実行される)ソフトウェアで実現されるものとして記載されるが、特定のハードウェア実装、又はソフトウェアと特定のハードウェア実装との組み合わせもまた可能であり、企図される。本説明において、「コンピューティングエンティティ」は、本開示において前に定義された任意のコンピューティングシステム、又はコンピューティングシステム上で動作する任意のモジュール又はモジュレートの組み合わせであってもよい。
本開示において、特に別記の特許請求の範囲(例えば、別記の特許請求の範囲の本文)において用いられる用語は、一般に「開放的」な用語として意図されている(例えば、用語「含んでいる」は、「含んでいるがこれに限定されない」と解釈されるべきであり、用語「有する」は、「少なくとも有する」と解釈されるべきであり、用語「含む」は、「含むがこれに限定されない」と解釈されるべきである、等)。
さらに、特定数の導入された請求項記載が意図されている場合、そのような意図は請求項に明示的に記載され、そのような記載がない場合、そのような意図は存在しない。例えば、理解の助けとして、以下の別記の特許請求の範囲は、請求項記載を導入するために、導入フレーズ「少なくとも1つの」及び「1つ以上の」の使用を含むことがある。しかしながら、そのようなフレーズの使用は、不定冠詞「一の」(“a”又は“an”)による請求項記載の導入が、同じ請求項が導入フレーズ「1つ以上の」又は「少なくとも1つの」と「一の」などの不定冠詞とを含むときでも、そのような導入された請求項記載を含む任意の特定の請求項を1つのそのような記載のみ含む実施形態に限定することを暗に示すように見なされるべきではない(例えば、「一の」(“a”及び/又は“an”)は「少なくとも1つの」又は「1つ以上の」を意味するよう解釈されるべきである)。請求項記載を導入するために用いられる定冠詞の使用についても同様である。
さらに、特定数の導入された請求項記載が明示的に記載されている場合であっても、当業者は、そのような記載は少なくとも記載された数を意味するよう解釈されるべきであることを認識するであろう(例えば、他の修飾語を伴わない「2つの記載」というただそれだけの記載は、少なくとも2つの記載、又は2つ以上の記載を意味する)。さらに、「A、B、及びC等のうち少なくとも1つ」又は「A、B、及びC等のうち1つ以上」と類似の規定が用いられている例において、一般に、そのような構造は、A単独、B単独、C単独、A及びB共に、A及びC共に、B及びC共に、又はA、B、及びC共に等を含むことが意図される。
さらに、明細書においてか、特許請求の範囲においてか、又は図面においてかにかかわらず、2つ以上の代替的な用語を提示するいかなる分離的なワード又はフレーズも、用語のうち1つ、用語のうちいずれか、又は双方の用語を含む可能性を考慮するよう理解されるべきである。例えば、フレーズ「A又はB」は、「A」又は「B」又は「A及びB」の可能性を含むよう理解されるべきである。
本開示に記載された全ての例及び条件付き言語は、本開示と発明者が当該分野を促進するために寄与した概念とを理解する際に読者を助けるための教育的目的を意図されており、そのような具体的に記載された例及び条件への限定を伴わないとみなされるべきである。本開示の実施形態が詳細に記載されたが、本開示の主旨及び範囲から逸脱することなく、種々の変更、置換、及び改変をこれに行うことができる。
上記の実施形態につき以下の付記を残しておく。
(付記1)
方法であって、
オブジェクト指向ソフトウェアプラットフォームを作成するステップ、を含み、該作成するステップは、
アプリケーションプログラミングインターフェース(API)のセットに関連づけられたドキュメンテーションコーパスのテキスト分析を実行するステップと、
前記APIのセットのうち第1のAPIのAPIエンドポイントのためのアプリケーションプログラミングインターフェース(API)コールオブジェクトのセットを生成するステップと、
前記テキスト分析に基づいて前記生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築するステップと、
ビジネスオブジェクトのセットを生成するステップであり、
前記ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、前記生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化する、ステップと、
前記生成されたAPIコールオブジェクトのセット、前記構築された自然言語記述子のセット、及び前記生成されたビジネスオブジェクトのセットをカプセル化するソフトウェアパッケージを構築するステップと、
を含む、方法。
(付記2)
前記作成するステップは、前記ドキュメンテーションコーパスのテキスト分析に基づいて前記APIのセットについての統一仕様を生成するステップをさらに含む、付記1に記載の方法。
(付記3)
前記作成するステップは、
前記生成された統一仕様から、前記第1のAPIに関連づけられたスキームアドレス、ホストアドレス、又はベースアドレスを抽出するステップと、
前記第1のAPIに関連づけられた、抽出された前記スキームアドレス、前記ホストアドレス、又は前記ベースアドレスに基づいて、前記第1のAPIのAPIプロバイダ情報を決定するステップと、
をさらに含む、付記2に記載の方法。
(付記4)
前記作成するステップは、
前記生成された統一仕様から、前記第1のAPIの前記APIエンドポイントに関連づけられたエンドポイント情報とエンドポイントパラメータのセットとを抽出するステップと、
前記抽出されたエンドポイント情報と前記抽出されたエンドポイントパラメータのセットとに基づいて、前記APIエンドポイントのAPIコネクタを生成するステップであり、
前記生成されたAPIコネクタは、前記エンドポイントパラメータのセット、前記エンドポイント情報、及び前記決定されたAPIプロバイダ情報に含まれるユニフォームリソースロケータ(URL)を含む、ステップと、
をさらに含む、付記3に記載の方法。
(付記5)
前記作成するステップは、
前記生成されたAPIコネクタの前記エンドポイントパラメータのセットに含まれる前記入力/出力パラメータのセットを分析するステップと、
前記分析に基づいて前記入力/出力パラメータのセットのための固有入力/出力パラメータ値のセットを生成するステップと、
をさらに含む、付記4に記載の方法。
(付記6)
前記作成するステップは、
前記生成された固有入力/出力パラメータ値のセットから固有入力/出力パラメータ値を選択するステップと、
前記選択された固有入力/出力パラメータ値に基づいて前記生成されたAPIコネクタを構成するステップと、
前記構成されたAPIコネクタのテスト実行を行うステップと、
前記構成されたAPIコネクタのテスト実行の後に返された出力を抽出するステップと、
をさらに含む、付記5に記載の方法。
(付記7)
前記作成するステップは、前記抽出された出力と前記選択された固有入力/出力パラメータ値とに基づいて前記APIコールオブジェクトのセットのうち第1のAPIコールオブジェクトを生成するステップをさらに含む、付記6に記載の方法。
(付記8)
前記作成するステップは、
前記生成された統一仕様から、前記第1のAPIの前記APIエンドポイントに関連づけられたAPI記述、APIエンドポイント記述、APIパラメータ記述、又はAPI応答記述を含む第1の情報を抽出するステップと、
前記選択された固有入力/出力パラメータ値、前記抽出された出力、及び前記抽出された第1の情報に基づいて、前記第1のAPIコールオブジェクトのために前記自然言語記述子のセットのうち第1の自然言語記述子を構築するステップと、
をさらに含む、付記7に記載の方法。
(付記9)
前記構築された第1の自然言語記述子は、前記第1のAPIコールオブジェクトの用途を示し、前記第1のAPIコールオブジェクトに関連づけられた自然言語記述及びトピックを含む、付記8に記載の方法。
(付記10)
前記第1の自然言語記述子を構築するステップは、
前記抽出された第1の情報に基づいて前記第1のAPIコールオブジェクトに関連づけられた入力/出力パラメータのための第1の記述テキストを決定するステップと、
前記抽出された出力のための第2の記述テキストを決定するステップと、
前記抽出された第1の情報に基づいて前記第1のAPIコールオブジェクトに関連づけられたAPIタイトルを決定するステップと、
前記決定された第1の記述テキスト、前記決定された第2の記述テキスト、及び前記決定されたAPIタイトルを意味的に連結して、前記第1のAPIコールオブジェクトに関連づけられた前記自然言語記述を構築するステップと、
を含む、付記9に記載の方法。
(付記11)
前記条件は、前記入力/出力パラメータのセットの値に対する制約のセット、前記APIエンドポイントの使用及びアクセスに関連する構成可能なポリシー、及び前記入力/出力パラメータのセットの使用に対する制約としてのレガシーを含む、付記1に記載の方法。
(付記12)
前記構築されたソフトウェアパッケージは、ソフトウェア開発キット(SDK)、APIベースのソフトウェアコンポーネント、ウェブページインターフェース、又はモバイルアプリケーションインターフェースのうち少なくとも1つをさらにカプセル化する、付記1に記載の方法。
(付記13)
前記作成するステップは、前記構築されたソフトウェアパッケージにリンクされたユーザ選択可能なツールとしてユーザインターフェース(UI)要素のセットを含む電子UIを生成するステップをさらに含む、付記1に記載の方法。
(付記14)
前記UI要素のセットは、
アプリケーション領域のための前記構築されたソフトウェアパッケージに対応するユーザ選択可能なオブジェクトを含む第1のUI要素と、
前記入力/出力パラメータのセットに適用可能な前記条件に関連する第1のユーザ選択可能な選択肢を含む第2のUI要素と、
前記構築された自然言語記述子のセットに関連する第2のユーザ選択可能な選択肢を含む第3のUI要素と、
前記生成されたAPIコールオブジェクトのセットに関連する第3のユーザ選択可能な選択肢を含む第4のUI要素と、
を含む、付記13に記載の方法。
(付記15)
前記作成されたオブジェクト指向ソフトウェアプラットフォームは、レイヤ化されたソフトウェアアーキテクチャに関連づけられ、
前記作成されたオブジェクト指向ソフトウェアプラットフォームは、
前記生成されたAPIコールオブジェクトのセットをカプセル化する第1のレイヤと、
前記生成されたAPIコールオブジェクトのセットに対応する前記自然言語記述子のセットをカプセル化する第2のレイヤと、
前記ビジネスオブジェクトのセットをカプセル化する第3のレイヤと、
前記構築されたソフトウェアパッケージを含む第4のレイヤと、
を含む、付記1に記載の方法。
(付記16)
動作を実行し又は動作の実行を制御するために1つ以上のプロセッサにより実行可能なプログラミングコードを符号化された非一時的コンピュータ読取可能媒体であって、前記動作は、
オブジェクト指向ソフトウェアプラットフォームを作成すること、を含み、該作成することは、
アプリケーションプログラミングインターフェース(API)のセットに関連づけられたドキュメンテーションコーパスのテキスト分析を実行することと、
前記APIのセットのうち第1のAPIのAPIエンドポイントのためのアプリケーションプログラミングインターフェース(API)コールオブジェクトのセットを生成することと、
前記テキスト分析に基づいて前記生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築することと、
ビジネスオブジェクトのセットを生成することであり、
前記ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、前記生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化する、ことと、
前記生成されたAPIコールオブジェクトのセット、前記構築された自然言語記述子のセット、及び前記生成されたビジネスオブジェクトのセットをカプセル化するソフトウェアパッケージを構築することと、
を含む、非一時的コンピュータ読取可能媒体。
(付記17)
前記作成することは、前記構築されたソフトウェアパッケージにリンクされたユーザ選択可能なツールとしてユーザインターフェース(UI)要素のセットを含む電子UIを生成することをさらに含む、付記16に記載の非一時的コンピュータ読取可能媒体。
(付記18)
システムであって、
回路を備え、前記回路は、
表示装置にオブジェクト指向ソフトウェアプラットフォームの電子ユーザインターフェース(UI)をレンダリングし、
前記レンダリングされた電子UIは、前記オブジェクト指向ソフトウェアプラットフォームに含まれるソフトウェアパッケージのセットに対応するユーザ選択可能なオブジェクトのセットを含み、
前記ユーザ選択可能なオブジェクトのセットのうち第1のユーザ選択可能なオブジェクトを通じての第1の入力に基づいて前記ソフトウェアパッケージのセットからソフトウェアパッケージを選択し、
第2の入力に基づいて、前記選択されたソフトウェアパッケージに含まれるアプリケーションプログラミングインターフェース(API)コールオブジェクトのセットのための入力/出力パラメータのセットに対する条件の値を更新し、
前記更新の後、第3の入力に基づいて前記APIコールオブジェクトのセットに対応する自然言語記述子のセットのうち少なくとも1つの自然言語記述子を選択し、
第4のユーザ入力に基づいて前記APIコールオブジェクトのセットのうち少なくとも1つのAPIコールオブジェクトを選択し、
前記選択された少なくとも1つのAPIコールオブジェクト、前記条件の前記更新された値、及び前記選択されたソフトウェアパッケージに基づいてソフトウェアコンポーネントをコンパイルし、
前記コンパイルされたソフトウェアコンポーネントに基づいてAPIベースのソフトウェアアプリケーションを構築する
ように構成される、システム。
(付記19)
前記選択されたソフトウェアパッケージは、前記APIコールオブジェクトのセット、前記APIコールオブジェクトのセットに対応する前記自然言語記述子のセット、及び前記入力/出力パラメータのセットに対する前記条件をカプセル化する、付記18に記載のシステム。
(付記20)
前記オブジェクト指向ソフトウェアプラットフォームは、レイヤ化されたソフトウェアアーキテクチャに関連づけられ、
前記オブジェクト指向ソフトウェアプラットフォームは、
前記APIコールオブジェクトのセットをカプセル化する第1のレイヤと、
前記APIコールオブジェクトのセットに対応する前記自然言語記述子のセットをカプセル化する第2のレイヤと、
ビジネスオブジェクトのセットをカプセル化する第3のレイヤであり、各ビジネスオブジェクトは、前記入力/出力パラメータのセットに対する条件を含む、第3のレイヤと、
前記ソフトウェアパッケージのセットを含む第4のレイヤと、
を含む、付記18に記載のシステム。

Claims (10)

  1. 方法であって、
    オブジェクト指向ソフトウェアプラットフォームを作成するステップ、を含み、該作成するステップは、
    アプリケーションプログラミングインターフェース(API)のセットに関連づけられたドキュメンテーションコーパスのテキスト分析を実行するステップと、
    前記APIのセットのうち第1のAPIのAPIエンドポイントのためのアプリケーションプログラミングインターフェース(API)コールオブジェクトのセットを生成するステップと、
    前記テキスト分析に基づいて前記生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築するステップと、
    ビジネスオブジェクトのセットを生成するステップであり、
    前記ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、前記生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化する、ステップと、
    前記生成されたAPIコールオブジェクトのセット、前記構築された自然言語記述子のセット、及び前記生成されたビジネスオブジェクトのセットをカプセル化するソフトウェアパッケージを構築するステップと、
    を含む、方法。
  2. 前記作成するステップは、前記ドキュメンテーションコーパスのテキスト分析に基づいて前記APIのセットについての統一仕様を生成するステップをさらに含む、請求項1に記載の方法。
  3. 前記作成するステップは、
    前記生成された統一仕様から、前記第1のAPIに関連づけられたスキームアドレス、ホストアドレス、又はベースアドレスを抽出するステップと、
    前記第1のAPIに関連づけられた、抽出された前記スキームアドレス、前記ホストアドレス、又は前記ベースアドレスに基づいて、前記第1のAPIのAPIプロバイダ情報を決定するステップと、
    をさらに含む、請求項2に記載の方法。
  4. 前記作成するステップは、
    前記生成された統一仕様から、前記第1のAPIの前記APIエンドポイントに関連づけられたエンドポイント情報とエンドポイントパラメータのセットとを抽出するステップと、
    前記抽出されたエンドポイント情報と前記抽出されたエンドポイントパラメータのセットとに基づいて、前記APIエンドポイントのAPIコネクタを生成するステップであり、
    前記生成されたAPIコネクタは、前記エンドポイントパラメータのセット、前記エンドポイント情報、及び前記決定されたAPIプロバイダ情報に含まれるユニフォームリソースロケータ(URL)を含む、ステップと、
    をさらに含む、請求項3に記載の方法。
  5. 前記作成するステップは、
    前記生成されたAPIコネクタの前記エンドポイントパラメータのセットに含まれる前記入力/出力パラメータのセットを分析するステップと、
    前記分析に基づいて前記入力/出力パラメータのセットのための固有入力/出力パラメータ値のセットを生成するステップと、
    をさらに含む、請求項4に記載の方法。
  6. 前記作成するステップは、
    前記生成された固有入力/出力パラメータ値のセットから固有入力/出力パラメータ値を選択するステップと、
    前記選択された固有入力/出力パラメータ値に基づいて前記生成されたAPIコネクタを構成するステップと、
    前記構成されたAPIコネクタのテスト実行を行うステップと、
    前記構成されたAPIコネクタのテスト実行の後に返された出力を抽出するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記作成するステップは、前記抽出された出力と前記選択された固有入力/出力パラメータ値とに基づいて前記APIコールオブジェクトのセットのうち第1のAPIコールオブジェクトを生成するステップをさらに含む、請求項6に記載の方法。
  8. 前記作成するステップは、
    前記生成された統一仕様から、前記第1のAPIの前記APIエンドポイントに関連づけられたAPI記述、APIエンドポイント記述、APIパラメータ記述、又はAPI応答記述を含む第1の情報を抽出するステップと、
    前記選択された固有入力/出力パラメータ値、前記抽出された出力、及び前記抽出された第1の情報に基づいて、前記第1のAPIコールオブジェクトのために前記自然言語記述子のセットのうち第1の自然言語記述子を構築するステップと、
    をさらに含む、請求項7に記載の方法。
  9. 1つ以上のプロセッサに動作を実行させるコンピュータプログラムであって、前記動作は、
    オブジェクト指向ソフトウェアプラットフォームを作成すること、を含み、該作成することは、
    アプリケーションプログラミングインターフェース(API)のセットに関連づけられたドキュメンテーションコーパスのテキスト分析を実行することと、
    前記APIのセットのうち第1のAPIのAPIエンドポイントのためのアプリケーションプログラミングインターフェース(API)コールオブジェクトのセットを生成することと、
    前記テキスト分析に基づいて前記生成されたAPIコールオブジェクトのセットに対応する自然言語記述子のセットを構築することと、
    ビジネスオブジェクトのセットを生成することであり、
    前記ビジネスオブジェクトのセットのうち各ビジネスオブジェクトは、前記生成されたAPIコールオブジェクトのセットのうち対応するAPIコールオブジェクトに関連づけられた入力/出力パラメータのセットに適用可能な条件をカプセル化する、ことと、
    前記生成されたAPIコールオブジェクトのセット、前記構築された自然言語記述子のセット、及び前記生成されたビジネスオブジェクトのセットをカプセル化するソフトウェアパッケージを構築することと、
    を含む、非一時的コンピュータ読取可能媒体。
  10. システムであって、
    回路を備え、前記回路は、
    表示装置にオブジェクト指向ソフトウェアプラットフォームの電子ユーザインターフェース(UI)をレンダリングし、
    前記レンダリングされた電子UIは、前記オブジェクト指向ソフトウェアプラットフォームに含まれるソフトウェアパッケージのセットに対応するユーザ選択可能なオブジェクトのセットを含み、
    前記ユーザ選択可能なオブジェクトのセットのうち第1のユーザ選択可能なオブジェクトを通じての第1の入力に基づいて前記ソフトウェアパッケージのセットからソフトウェアパッケージを選択し、
    第2の入力に基づいて、前記選択されたソフトウェアパッケージに含まれるアプリケーションプログラミングインターフェース(API)コールオブジェクトのセットのための入力/出力パラメータのセットに対する条件の値を更新し、
    前記更新の後、第3の入力に基づいて前記APIコールオブジェクトのセットに対応する自然言語記述子のセットのうち少なくとも1つの自然言語記述子を選択し、
    第4のユーザ入力に基づいて前記APIコールオブジェクトのセットのうち少なくとも1つのAPIコールオブジェクトを選択し、
    前記選択された少なくとも1つのAPIコールオブジェクト、前記条件の前記更新された値、及び前記選択されたソフトウェアパッケージに基づいてソフトウェアコンポーネントをコンパイルし、
    前記コンパイルされたソフトウェアコンポーネントに基づいてAPIベースのソフトウェアアプリケーションを構築する
    ように構成される、システム。
JP2020204160A 2020-01-13 2020-12-09 Apiベースのソフトウェア開発プラットフォーム Withdrawn JP2021111368A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/741700 2020-01-13
US16/741,700 US11200033B2 (en) 2020-01-13 2020-01-13 Application programming interface (API) based object oriented software development and textual analysis

Publications (1)

Publication Number Publication Date
JP2021111368A true JP2021111368A (ja) 2021-08-02

Family

ID=72474238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020204160A Withdrawn JP2021111368A (ja) 2020-01-13 2020-12-09 Apiベースのソフトウェア開発プラットフォーム

Country Status (3)

Country Link
US (1) US11200033B2 (ja)
EP (1) EP3848793A1 (ja)
JP (1) JP2021111368A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455237B2 (en) * 2020-06-01 2022-09-27 Agora Lab, Inc. Highly scalable system and method for automated SDK testing
TWI765322B (zh) * 2020-08-21 2022-05-21 伊斯酷軟體科技股份有限公司 用於軟體專案之知識管理裝置、方法及電腦程式產品
US11513792B2 (en) * 2020-09-30 2022-11-29 Izuma Tech, Inc. Tracking history of firmware program updates
US11379225B1 (en) * 2021-03-09 2022-07-05 Wells Fargo Bank, N.A. System and methods for application programming interface reference documentation updater
US20230089710A1 (en) * 2021-09-22 2023-03-23 Target Brands, Inc. Data request server code and configuration file deployment
US11354505B1 (en) * 2021-11-11 2022-06-07 Vivun Inc. Natural language text processing for automated product gap clustering and display
CN114826717B (zh) * 2022-04-18 2024-02-23 深信服科技股份有限公司 一种异常访问检测方法、装置、电子设备及存储介质
CN117667031A (zh) * 2022-08-25 2024-03-08 中兴通讯股份有限公司 应用程序编程接口api间的参数适配方法及装置
US11729161B1 (en) * 2022-12-15 2023-08-15 Citibank, N.A. Pre-built, pre-tested, and standardized connectors for end-to-end connection

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5331556A (en) * 1993-06-28 1994-07-19 General Electric Company Method for natural language data processing using morphological and part-of-speech information
US5799268A (en) * 1994-09-28 1998-08-25 Apple Computer, Inc. Method for extracting knowledge from online documentation and creating a glossary, index, help database or the like
US6026388A (en) * 1995-08-16 2000-02-15 Textwise, Llc User interface and other enhancements for natural language information retrieval system and method
US6076088A (en) * 1996-02-09 2000-06-13 Paik; Woojin Information extraction system and method using concept relation concept (CRC) triples
US6081774A (en) * 1997-08-22 2000-06-27 Novell, Inc. Natural language information retrieval system and method
US6094679A (en) * 1998-01-16 2000-07-25 Microsoft Corporation Distribution of software in a computer network environment
US6321372B1 (en) * 1998-12-23 2001-11-20 Xerox Corporation Executable for requesting a linguistic service
US7346490B2 (en) * 2000-09-29 2008-03-18 Axonwave Software Inc. Method and system for describing and identifying concepts in natural language text for information retrieval and processing
US7805704B2 (en) * 2005-03-08 2010-09-28 Microsoft Corporation Development framework for mixing semantics-driven and state-driven dialog
CN101390050B (zh) * 2005-12-22 2018-04-24 艾伦·J·薛比洛 通过相减性安装达成选择性分配软件资源的装置与方法
US8516442B2 (en) * 2008-02-27 2013-08-20 Accenture Global Services Limited Graphical user interface metadata evolution tool
US8630975B1 (en) * 2010-12-06 2014-01-14 The Research Foundation For The State University Of New York Knowledge discovery from citation networks
US8782603B2 (en) * 2010-12-21 2014-07-15 Sap Ag Standardized configuration checklists for software development
US9614901B2 (en) 2011-08-26 2017-04-04 Nimblestack Inc. Data infrastructure for providing interconnectivity between platforms, devices, and operating systems
US8893084B2 (en) * 2012-01-04 2014-11-18 Apple Inc. Methods and apparatuses for deferred object customization
US9015730B1 (en) * 2013-12-17 2015-04-21 International Business Machines Corporation Natural language access to application programming interfaces
US20170102925A1 (en) 2014-03-26 2017-04-13 Syed Adeel Ali Automatch process and system for software development kit for application programming interface
US9811395B1 (en) 2016-10-11 2017-11-07 Google Inc. Multi-platform mapping API

Also Published As

Publication number Publication date
US20210216288A1 (en) 2021-07-15
EP3848793A1 (en) 2021-07-14
US11200033B2 (en) 2021-12-14

Similar Documents

Publication Publication Date Title
JP2021111368A (ja) Apiベースのソフトウェア開発プラットフォーム
US11561846B2 (en) API notebook tool
US10846153B2 (en) Bot creation with workflow development system
US11210068B2 (en) Automatic anonymization of workflow templates
US20150293764A1 (en) Method and system to compose and execute business rules
US10606957B1 (en) Method and system for translating natural language policy to logical access control policy
US8762963B2 (en) Translation of programming code
US20120311309A1 (en) Software execution using multiple initialization modes
US9003361B2 (en) Generating a restful web service software development kit client
WO2018210096A1 (zh) 一种基于规则引擎的规则配置方法、终端、设备以及存储介质
US20140156828A1 (en) Method and system for abstracting restful web service http between a client and a server
JP2022041907A (ja) コンピューティングシステム上のapiマッシュアップインフラストラクチャ生成
US20150143267A1 (en) SYSTEM AND METHOD FOR DEVELOPING A RULE-BASED EVENT-DRIVEN MULTI-LAYERED FRONTEND FOR BUSINESS SERVICES AND RENDERING THE GUIs ON MULTIPLE CLIENT DEVICES
JP2023024365A (ja) ソフトウェアバージョン間のapi下位互換性の検出
JP2021190106A (ja) Apiマッシュアップのための自動コード生成
CN115543440A (zh) 安卓项目迁移到类安卓系统的方法、电子设备和存储介质
CN113805877B (zh) 基于idea插件的项目工程的构建方法及装置
US8615744B2 (en) Methods and system for managing assets in programming code translation
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
US11977882B2 (en) System and method implementing a design system review tool
US11847477B1 (en) Techniques for natively interpreting logic across disparate platforms
US20240126624A1 (en) Automatically generating application programming interfaces
US20240111512A1 (en) Recommending version updates for software packages
Chernetskyi Web application for organizing and administrating of language courses
CN113342399A (zh) 应用项目的结构配置方法、装置及可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230804

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240126