JP2023550607A - セキュアな環境におけるコードの継続的なインテグレーション及び開発 - Google Patents

セキュアな環境におけるコードの継続的なインテグレーション及び開発 Download PDF

Info

Publication number
JP2023550607A
JP2023550607A JP2023526939A JP2023526939A JP2023550607A JP 2023550607 A JP2023550607 A JP 2023550607A JP 2023526939 A JP2023526939 A JP 2023526939A JP 2023526939 A JP2023526939 A JP 2023526939A JP 2023550607 A JP2023550607 A JP 2023550607A
Authority
JP
Japan
Prior art keywords
source code
code
requirements
qms
source
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.)
Pending
Application number
JP2023526939A
Other languages
English (en)
Inventor
ニアズ アフサン ジャラル,
アブデスレム ドリディ,
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.)
Genentech Inc
Original Assignee
Genentech Inc
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 Genentech Inc filed Critical Genentech Inc
Publication of JP2023550607A publication Critical patent/JP2023550607A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本開示は、デジタルヘルスプラットフォーム上のソースコードの継続的インテグレーション及び継続的デプロイのための技術に関する。具体的には、態様は、ソフトウェア開発システムからソースコードを受け取ること(ソースコードは第1のQMSに従って検証されている)、ソースコードのプロファイルを生成すること、プロファイルに基づいてソースコードをコードのクラスに分類すること、コードのクラスに関連する第2のQMSを取得すること、第2のQMSに従ってソースコードを検証すること、ソースコードが検証されると、ビルドプロセスを実行して、ソースコードから実行可能プログラムを生成すること、実行可能プログラムをコンテナにカプセル化すること、及び、ソフトウェアプラットフォームの一又は複数のノード上にコンテナをデプロイすること、に関する。第1のQMSはソフトウェア開発システムの観点から適合されている一方、第2のQMSはソフトウェアプラットフォームの観点から適合されている。【選択図】図1

Description

優先権の主張
本願は、2020年11月10日に出願された米国仮特許出願第63/111,991号の利益及び優先権を主張するものであり、その全体があらゆる目的のために参照により本明細書に援用される。
分野
[0002]本開示はデジタルかつパーソナルなヘルスケアに関し、具体的には、デジタルヘルスプラットフォームにおけるソースコードの継続的インテグレーション及び継続的デプロイのための技術に関する。
背景
[0003]継続的インテグレーション(CI)はソフトウェア開発手法の一つであり、アプリケーションの基礎となるコードにチームメンバーや開発者が変更を加えるにつれてその調整をテストするものである。CIは、開発サイクルの早い段階でバグを発見し修正することによってリリースプロセスを加速させ、開発者間のコラボレーションを促進する。継続的デプロイ(CD)は、新しいソフトウェアのビルドをできるだけ早くユーザに提供するプロセスである。これはCIを超える自然な次のステップであり、ソフトウェアや新機能のリリースに関するリスクを最小限に抑えるために用いられるアプローチである。ソフトウェア開発チームは、ソフトウェアの迅速なリリース、品質とセキュリティの向上に対する需要の高まりに対応すべく、多くの場合、プロセスを合理化するための継続的開発パイプラインに注目している。継続的インテグレーション及び継続的デプロイ(CI/CD)の手法を採用することで、ソフトウェアのオンデマンド適応、市場投入までの時間、テストの自動化、セキュリティ、ユーザ満足度の向上が可能となる。
[0004]ヘルスケア分野において、コストを削減しつつよりパーソナルな医療を実現するため、データ駆動型のテクノロジーソリューションが開発されている。ヘルスケア業界は、パーソナルな医療サービスやソリューションのオンデマンド展開システムに移行しており、ヘルスケアのプロバイダは、ソフトウェア開発とサービス管理プロセスの自動化と合理化を通じてソリューションをより速く革新するため、開発者に助けを求めている。ヘルスケアプロバイダやサービスをサポートするため、開発者はヘルスケア情報技術インフラの標準として分散コンピューティング環境(例えば、クラウドコンピューティング)に注目している。これは、サービスモデル(例えば、AaaS(アナリティクス・アズ・ア・サービス))内でのソフトウェアの継続的な開発パイプラインとデプロイをサポートするのに必要な複雑なインフラを低コストで開発する方法として注目されている。クラウドコンピューティングのような分散コンピューティング環境は、ヘルスケアプロバイダに多くのメリットをもたらす一方で、従来のストレージや情報共有ソリューションとは異なる機能を持つゆえに、プライバシーとセキュリティについて固有の課題が生じる。例えば、ユーザはインターネット接続を通じてデータにアクセスするので、ソフトウェアの継続的開発パイプラインとデプロイをサポートするクラウドソリューションを検討しているヘルスケアプロバイダにとって、政府規制(例えば、医療保険の携行性と説明責任に関する法律(HIPAA)、「グッドプラクティス」品質ガイドライン及び規制(GxP)、一般データ保護規則(GDPR))の遵守は、固有の課題となっている。したがって、保護されたヘルスケア情報の機密性、可用性、完全性を確保するよう構築された、コンプライアンスに準拠したソフトウェア開発プラットフォームの進歩が求められている。
[0005]様々な実施形態で、コンピュータ実装方法が提供される。本方法は以下を含む:継続的インテグレーション・継続的デプロイ(CI/CD)システムにおいて、ソフトウェア開発システムからソースコードを受け取ることであって、ソースコードが、ソフトウェア開発システムに関連する第1の品質管理システム(QMS)に従って既に検証されており、第1のQMSが、ソースコードを検証するための要件の第1のセットを定義する、ソースコードを受け取ること;CI/CDシステムによって、ソースコードのプロファイルを生成することであって、ソースコードの特性及び該コードによって動作するデータの特性を特定することと、ソースコードの特性及び該ソースコードによって動作するデータの特性を用いて、プロファイルを構築することとを含む、ソースコードのプロファイルを生成すること;CI/CDシステムによって、プロファイルに基づいて、ソースコードをコードのクラスに分類すること;CI/CDシステムによって、コードのクラスに関連する第2のQMSを取得することであって、第2のQMSが、コードのクラスを検証するための要件の第2のセットを定義する、第2のQMSを取得すること;CI/CDシステムによって、第2のQMSに従ってソースコードを検証することであって、コード解析を実施して、ソースコードの、要件の第2のセットへの準拠又は非準拠を決定することを含む、ソースコードを検証すること;ソースコードが検証されると、CI/CDシステムによって、ソースコードから実行可能プログラムを生成するためにビルドプロセスを実行すること;CI/CDシステムによって、実行可能プログラムをコンテナにカプセル化すること;ならびに、CI/CDシステムによって、ソフトウェアプラットフォームの一又は複数のノード上にコンテナをデプロイすること。
[0006]いくつかの実施形態では、ソフトウェア開発システムが、ネットワーク接続を介してCI/CDシステムから遠隔に位置しており、要件の第1のセットは要件の第2のセットと異なり、要件の第1のセットは、ソースコードが、使用意図に適合するかどうか、使用意図を実施するため意図したように動作するかどうか、及びセキュリティの基本レベルを満たすかどうかを決定するように定義される。
[0007]いくつかの実施形態では、ソースコードの特性が、ソースコードコメント及びソースコードの範囲を解析することによって特定され、ソースコードの特性が、ソースコードを書くのに用いられる一又は複数のプログラミング言語、ソースコードの使用意図、及びソースコードの実行が意図される環境を含み、ソースコードによって動作するデータの特性が、ソースコードに入力されるデータのタイプ及び形式、ならびにソースコードによって生成されるデータのタイプ及び形式を含む。
[0008]いくつかの実施形態では、分類することが、以下を含む:プロファイルを用いて、様々なコードのクラスに関連する複数のプロファイルを保存するデータ構造をクエリすること;複数のプロファイルから、ソースコードの特性と該ソースコードによって動作するデータの特性とに一致する所定の数の特性を有するそれらしいプロファイルを特定すること;ならびに該ソースコードを、それらしいプロファイルに関連するコードのクラスとして分類すること。
[0009]いくつかの実施形態では、分類することが、プロファイルを入力とする分類器を用いて、ソースコードの特性及びソースコードによって動作するデータの特性に基づいて、コードのクラスの推定を生成することを含む。
[0010]いくつかの実施形態では、要件の第2のセットは、ソースコードが、使用意図を実施するため意図したように動作するかどうか、セキュリティの拡張レベルを満たすかどうか、国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか、データプライバシーへの配慮を満たすかどうか、ならびにコンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定するように定義される。
[0011]いくつかの実施形態では、方法はさらに、以下を含む:CI/CDシステムによって、ツールの第1のパイプラインを構成して、第2のQMSに従ってコード解析を実施することであって、該コード解析が静的解析を含み、ツールの第1のパイプラインを構成することが、以下を含む:要件のセットを満たすためにソースコードを解析できる静的解析ツールのセットを特定すること;要件の第2のセットを満たすために静的解析ツールのセットを実行する静的テストプロトコルを決定すること;ならびに、静的テストプロトコルに従って、ツールの第1のパイプライン内に静的解析ツールのセットをプロビジョニングすること。
[0012]いくつかの実施形態では、方法はさらに、以下を含む:CI/CDシステムによって、ツールの第2のパイプラインを構成して、第2のQMSに従ってコード解析を実施することであって、該コード解析が動的解析を含み、ツールの第2のパイプラインを構成することが、以下を含む:要件の第2のセットを満たすためにソースコードを解析できる動的解析ツールのセットを特定すること;要件の第2のセットを満たすために静的解析ツールのセットを実行する動的テストプロトコルを決定すること;ならびに、動的テストプロトコルに従って、ツールの第2のパイプライン内に動的解析ツールのセットをプロビジョニングすること。
[0013]いくつかの実施形態では、静的解析が、エラー、ハイリスクコンポーネント、予期しない機能、オープンソース機能、セキュリティ脆弱性、及びソースコードにおけるバージョンからバージョンへの変更点を決定し、動的解析が、基本機能、ローカライズ機能、性能メトリクス、及びセキュリティ脆弱性を決定する。
[0014]いくつかの実施形態では、オープンソース機能を決定することが、以下を含む:CI/CDシステムによって、ソースコードのオープンソース機能を特定すること、;CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスを決定すること;ならびに、CI/CDシステムによって、オープンソース機能に関連づけられた許可又はライセンスをデータ構造にコンパイルすること。
[0015]いくつかの実施形態では、方法はさらに、以下を含む:CI/CDシステムによって、静的解析に基づいて、ソースコードのバージョンを特定すること;CI/CDシステムによって、特定されたソースコードのバージョンに基づいて、該ソースコードを含む新しい実行可能プログラムバージョンを生成すること;ならびに、CI/CDシステムによって、新しい実行可能プログラムバージョンの起動及び可視化、及び/又は該ソースコードを含む旧い実行可能プログラムバージョンを管理すること。
[0016]いくつかの実施形態では、方法はさらに、CI/CDシステムによって、ソフトウェアプラットフォーム上に一又は複数のノードを作成して、コンテナ内の実行可能プログラムをデプロイすることを含む。
[0017]いくつかの実施形態では、方法はさらに、ソースコードが無効とされると、CI/CDシステムによって、ソースコードが無効であるとの通知をソフトウェア開発システムに提供することを含み、通知が、ソースコード無効の一又は複数の理由に関する情報を含む。
[0018]いくつかの実施形態では、要件の第2のセットが、ソースコードの使用意図が医療デバイス内であるか又は医療デバイスとしてのものであることを考慮して定義される。
[0019]本開示のいくつかの実施形態は、一又は複数のデータプロセッサを含むシステムを含む。いくつかの実施形態では、システムは、命令を含む非一時的コンピュータ可読記憶媒体であって、命令が、一又は複数のデータプロセッサ上で実行されると、一又は複数のデータプロセッサに、本明細書に開示された一又は複数の方法の一部又は全部及び/又は一又は複数のプロセスの一部又は全部を実行させる、非一時的コンピュータ可読記憶媒体を含む。本開示のいくつかの実施形態は、一又は複数のデータプロセッサに、本書に開示された一又は複数の方法の一部又は全部及び/又は一又は複数のプロセスの一部又は全部を実行させるように構成された命令を含む非一時的機械可読記憶媒体において、有形に具現化されたコンピュータプログラム製品を含む。
[0020]使用された用語及び表現は、限定ではなく説明の用語として使用され、そのような用語及び表現の使用において、示されて説明された特徴のいかなる均等物又はその一部も除外する意図はないが、特許請求の範囲に記載された発明の範囲内で様々な変更が可能であることが認識される。したがって、特許請求の範囲に記載された本発明は、実施形態及び任意の特徴によって具体的に開示されているが、本書に開示された概念の変更及び変形は、当業者によってあてにされてもよく、そのような変更及び変形は、添付の特許請求の範囲によって定義される本発明の範囲内にあると見なされることを理解されたい。
[0021]本開示は、以下の添付の図面と併せて説明される。
様々な実施形態による、データ駆動型技術ソリューションを提供するデジタルヘルスプラットフォームを図示する。 様々な実施形態によるCI/CDシステムを図示する。 様々な実施形態による、デジタルヘルスプラットフォームにおけるコードのインテグレーション、開発、及びデプロイのプロセスを示すスイムレーン図を示す。 様々な実施形態による、コードのインテグレーション、開発、及びデプロイのプロセスのフロー図を示す。 様々な実施形態による、特定されたツールの例示的なパイプラインとそのツールを実行するための静的テストプロトコルを示す。 様々な実施形態による、特定されたツールの例示的なパイプラインとそのツールを実行するための動的テストプロトコルを示す。
[0028]添付の図面において、同様のコンポーネント及び/又は特徴は、同じ参照ラベルを有することができる。さらに、同じタイプの様々なコンポーネントは、参照ラベルの後に同様のコンポーネントを区別するダッシュ及び第2のラベルを続けることによって区別されることができる。本明細書において第1の参照ラベルのみが使用される場合、説明は、第2の参照ラベルに関係なく、同じ第1の参照ラベルを有する同様のコンポーネントのいずれかに適用可能である。
I.概要
[0029]本開示は、デジタルヘルスプラットフォーム上におけるソースコードのCI/CDのための技術を記載する。より具体的には、本開示の実施形態は、様々なクラスのコード(例えば、ソフトウェア・アズ・ア・メディカルデバイス)を、当該様々なクラスのソースコードを検証する要件のセットを定義する品質管理システムに従って、検証しデプロイするための技術を提供する。
[0030]品質管理システム(QMS)は、組織を導くために個別に又は集合的に確立された、方針、目的、手順、プロセス、及びリソースなどの相互に関連又は相互作用する要素のセットである。本開示の文脈で、デジタルヘルスプラットフォーム上でデータ駆動型テクノロジーソリューションに従事する組織は、ソフトウェア製品、サービス、又はシステムに関連する法定及び規制要件内で、消費者及びその他の利害関係者のニーズを満たすことを保証するのに役立つQMSを確立、実装、監視、及び維持すべきである。
これは、ソフトウェア製品、サービス、又はシステムが要件を満たすこと、及び意図した目的を達成することをチェックするためのコードの妥当性確認と検証を含む。
[0031]要件は、システム又はそのソフトウェアに対するニーズや期待であり得る。要件は、消費者の明示的又は黙示的なニーズを反映したものであり、市場ベース、契約上の、又は法定の要件、及び組織の内部的な要件であることがある。要件には様々な種類があり得る(例えば、設計要件、機能要件、実装要件、インタフェース要件、性能要件、物理要件)。ソフトウェア要件は通常、ソフトウェアに割り当てられたシステム機能の側面についてのシステム要件に由来する。ソフトウェア要件は通常、機能的な用語で記述され、開発プロジェクトの進行に伴って定義、改良、更新される。
[0032]仕様書は、要件を記載した文書である。仕様書は、図面、パターン、その他の関連文書を参照するか又は含むことがあり、通常、要件への適合性を確認するための手段や基準を示す。仕様書には、システム要件仕様書、ソフトウェア要件仕様書、ソフトウェア設計仕様書、ソフトウェアテスト仕様書、ソフトウェアインテグレーション仕様書など、様々な種類があり、これら文書はすべて「指定された要件」を確立し、様々な形式の妥当性確認を行うための設計出力である。
[0033]ソフトウェア妥当性確認は、ソフトウェア開発ライフサイクルの特定のフェーズにおける設計出力が、そのフェーズで指定された要件をすべて満たしているという客観的な証拠を提供するものである。ソフトウェア妥当性確認は、開発中のソフトウェアとそのサポート文書の一貫性、完全性、正確性を調べ、ソフトウェアが検証されているというその後の結論の裏付けとなる。ソフトウェアテストは、ソフトウェア開発の出力が入力要件を満たしていることを確認することを目的とした多くの妥当性確認活動の1つである。他の妥当性確認活動には、様々な静的及び動的解析、コード及び文書の検査、ウォークスルー、及びその他の技法が含まれる。
[0034]ソフトウェアの検証とは、完成したソフトウェア製品、サービス、又はシステムの設計上の検証の一部であり、ソフトウェアの仕様がユーザのニーズや意図した用途に適合していること、ソフトウェアを通じて実装される特定の要件が一貫して満たされることを、検査や客観的証拠の提示によって確認することを含む。実際には、ソフトウェアの検証活動は、すべての要件が満たされたことを確認するために、ソフトウェア開発ライフサイクルの最中と終わりの両方で行われることがある。ソフトウェアは通常、より大きなハードウェアシステムの一部であるため、ソフトウェアの検証には、すべてのソフトウェア要件が正確かつ完全に実装され、システム要件に追跡可能であることの証拠が含まれるのが一般的である。ソフトウェアの妥当性が確認されているという結論は、ソフトウェア開発ライフサイクルの各段階で実施される包括的なソフトウェアテスト、検査、解析、及びその他の妥当性確認タスクに大きく依存する。ソフトウェア製品、サービス、又はシステム機能の模擬使用環境でのテスト、又はユーザサイトのテストは、通常、ソフトウェア製品、サービス、又はシステムの全体的な設計上の検証プログラムの構成要素として含まれる。
[0035]ソフトウェア開発ライフサイクル(SDLC)とは、高品質なソフトウェアをQMSで定義する要件に従って設計、開発、テストするためにソフトウェア産業で使用されるプロセスである。SDLCにおける主要なタスクの1つは、ソフトウェアのソースコードの妥当性確認及び検証である。本書で使用する「ソースコード」とは、ソフトウェアシステムの完全に実行可能な記述のうち任意のものを意味する。したがって、様々なプログラミング言語、マシンコード、又はシステムの実行可能なグラフィック表現で元々書かれているソフトウェアバージョンを含むように解釈される。ヘルスケアなどの規制された環境においてデータ駆動型技術ソリューションを考慮する場合、リスクベースのSDLCコードレビューへの堅牢なアプローチには、明確に定義されたプロセス、適格なインフラの使用、ソフトウェアの妥当な設計と展開、適格な人員、厳格な変更管理とバージョン管理が必要となる。クラウドベースのアプリケーションやサービスの導入の増加にともない、AaaSやソフトウェア・アズ・ア・サービス(SaaS)などのクラウドコンピューティングソリューションは、費用対効果の向上、導入の容易さ、柔軟で拡張性の高いプラットフォームなど多くの利点を提供している。しかし、クラウドコンピューティングソリューションにおけるデータインテグリティとデータプライバシーを保証するには、規制対象事業者が、クラウドプロバイダのサイト上のデータ駆動型技術ソリューションに実装された後のデータ制御を計画し維持すべく、十分な情報を得た上で能動的にアプローチすることが必要である。これには、データインテグリティとデータプライバシーのための能動的アプローチをSDLCのコードレビューに組み込むことが含まれるが、多くの場合、規制対象事業者が開発されたものでないソフトウェアソースコードの妥当性確認と検証が必要となるため、困難な場合がある。例えば、開発者はプログラミング言語のアイデンティティに関する偽のステートメントを作成して、プログラミング言語の真のアイデンティティを直接的に隠蔽し、適切なコードスキャンを回避するかもしれない。あるいは、開発者はファイルの拡張子を変更して、プログラミング言語の真のアイデンティティを間接的に隠蔽し、適切なコードスキャンを回避するかもしれない。
[0036]これらの制限や問題に対処するため、規制対象事業者によるソースコードの検証やデプロイのための本開示の技術は、SDLCに対するカスタマイズされたアプローチを利用するものである。この技術は、SDLCのうち開発者の部分(ある場合では、開発者のQMSに従って開発されるCIベースのアプローチ)を、SDLCのうち規制対象事業者の部分(規制対象事業者自身のQMSに従って開発されるカスタマイズされたCI/CDベースのアプローチ)から切り離すことを意図している。これにより、開発者は、SDLCのうち自身の部分の反復をn回行ってから最終的にソースコードの単一バージョンをリリースすることができ、このソースコードの単一バージョンが、SDLCのうち規制対象事業者の部分に入力され、データインテグリティやデータプライバシーなど規制対象事業者のデジタルヘルスプラットフォームに固有の課題を扱うようカスタマイズされる。SDLCの規制対象事業者の部分内でソースコードが検証に失敗した場合は、開発者に通知がなされ、開発者は検証失敗のもととなった問題を修正するために戻って、SDLCの自身の部分の追加の反復を任意の数だけ繰り返すことができ、最終目標はデジタルヘルスプラットフォームにソースコードをデプロイすることである。
[0037]本開示の例示的な一実施形態は方法に関し、方法は、CI/CDシステムにおいて、ソフトウェア開発システムからソースコードを受け取ることを含み、ソースコードが、ソフトウェア開発システムに関連する第1のQMSに従って既に検証されており、第1のQMSが、ソースコードを検証するための要件の第1のセットを定義する。方法は、CI/CDシステムによって、ソースコードのプロファイルを生成することをさらに含む。該生成することは、ソースコードの特性及び該コードによって動作するデータの特性を特定すること、ならびに、ソースコードの特性及び該ソースコードによって動作するデータの特性用いてプロファイルを構築することを含む。方法は、CI/CDシステムによって、プロファイルに基づいて、ソースコードをコードのクラスに分類すること、ならびに、CI/CDシステムによって、コードのクラスに関連する第2のQMSを取得することをさらに含み、第2のQMSが、コードのクラスを検証するための要件の第2のセットを定義する。方法は、CI/CDシステムによって、第2のQMSに従ってソースコードを検証することをさらに含み、該検証することが、コード解析を実施して、該ソースコードの、要件の第2のセットへの準拠又は非準拠を決定することを含む。方法は、ソースコードが検証されると、CI/CDシステムによって、ビルドプロセスを実行して、ソースコードから実行可能プログラムを生成すること、CI/CDシステムによって、実行可能プログラムをコンテナにカプセル化すること、ならびに、CI/CDシステムによって、ソフトウェアプラットフォームの一又は複数のノード上にコンテナをデプロイすることをさらに含む。
II. デジタルヘルスプラットフォーム
[0038]図1は、様々な実施形態によるデータ駆動型技術ソリューションを提供するためのデジタルヘルスプラットフォーム100の簡略化した図である。図示の実施形態では、デジタルヘルスプラットフォーム100は、ネットワークゲートウェイ120及びネットワークメッシュ125を含むネットワーク(一又は複数)115を介して、クラウドベースのインフラストラクチャ110に結合されるクライアントコンピューティングデバイス105を含む。インフラストラクチャ110は、様々なハードウェア及びクラウドインフラ(例えば、プライベートクラウド又はオンプレミスクラウドインフラ及び公共クラウドインフラ)を使用してクラウドサービスプロバイダ140により、配置リング135内で提供されたリソースを使用して、サービスポッド130内のサービス又はソフトウェアアプリケーションを実行するように適合される。これらのサービス又はソフトウェアアプリケーションは、クライアントコンピューティングデバイス105のユーザに対して、AaaS又はSaaSモデルなどに基づきウェブベース又はクラウドサービスとして提供され得る。いくつかのプロバイダが、Amazon、Google、及びOracleなどのクラウドサービスを提供している。クラウドサービスという用語は一般に、政府の規制対象である事業者などのサービスプロバイダのシステム(例えば、インフラストラクチャ110)によって、オンデマンドで、インターネットなどの通信ネットワークを介してユーザが利用可能とされるサービスを指すのに使用される。したがって、消費者は、サービスをサポートするライセンス、サポート、又はハードウェア及びソフトウェアリソースを別途購入することなく、サービスプロバイダによって提供されるクラウドサービスを利用することができる。例えば、クラウドサービスプロバイダのシステムが一又は複数のプログラムをホストすることができ、ユーザは、該一又は複数のプログラムを実行するためのインフラリソースを購入することなく、インターネットを介して、オンデマンドで、該一又は複数のプログラムを使用することができる。クラウドサービスは、アプリケーション、リソース、及びサービスへの容易でスケーラブルなアクセスを提供するように設計されている。
[0039]ある場合では、クライアントコンピューティングデバイス105を操作するユーザ(例えば、ソフトウェア又はサービスの消費者)が、一又は複数のクライアントアプリケーションを利用して、インフラストラクチャ110の様々なコンポーネント145によって提供されるソフトウェア製品、サービス、又はシステムを消費する。他の例では、クライアントコンピューティングデバイス105を操作するユーザ(例えば、開発者)が、一又は複数のクライアントアプリケーションを利用して、インフラストラクチャ110の様々なコンポーネント145によって提供されるソフトウェア製品、サービス、又はシステムのソースコードをアップロードする。コンポーネント145は、一又は複数のプロセッサ、ハードウェアコンポーネント、又はそれらの組み合わせによって実行され得るソフトウェアコンポーネントを含む。様々な異なるシステム構成が可能であり、それらはデジタルヘルスプラットフォーム100について図示されたものとは異なる可能性があることを理解されたい。したがって、図1に示す実施形態は、デジタルヘルスプラットフォームを実装するための分散コンピューティング環境の一例であり、限定することを意図していない。
[0040]クライアントコンピューティングデバイス105は、ポータブルハンドヘルドデバイス、パーソナルコンピュータやラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサその他のセンシングデバイスなど、様々なタイプのコンピューティングシステムを含む。これらのコンピューティングデバイスは、様々なタイプやバージョンのソフトウェアアプリケーションやオペレーティングシステムを実行することができ(例えば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)又はUNIX系オペレーティングシステム、Linux又はLinux系オペレーティングシステム、例えばGoogle Chrome(商標)OS)、これには様々なモバイルオペレーティングシステム(例えば、Microsoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(商標)、BlackBerry(登録商標)、Palm OS(登録商標))が含まれる。携帯型ハンドヘルドデバイスは、携帯電話、スマートフォン、(例えば、iPhone(登録商標))、タブレット(例えば、iPad(登録商標))、パーソナルデジタルアシスタント(PDA)等を含み得る。ウェアラブルデバイスは、Fitbit VersaTMスマートウォッチ、マジックリープ1(登録商標)やオキュラス(登録商標)などの仮想現実(VR)又は拡張現実(AR)システム、及びその他のデバイスを含み得る。ゲームシステムは、様々な携帯ゲーム機、インターネット対応ゲーム機(例えば、Microsoft Xbox(登録商標)ゲーム機(Kinect(登録商標)ジェスチャー入力デバイスを有する又は有しないもの)、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する様々なゲームシステムその他)等を含むことができる。クライアントデバイス105は、様々なインターネット関連アプリ、通信アプリ(例えば、電子メールアプリ、ショートメッセージサービス(SMS)アプリ)等の様々なアプリケーションを実行することができ、様々な通信プロトコルを使用することができる。
[0041]ネットワーク(一又は複数)115は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)等を含むがこれらに限定されない、様々な利用可能プロトコルのいずれかを使用してデータ通信をサポートできる、当業者に周知の任意のタイプのネットワークである。例示にすぎないが、ネットワーク(一又は複数)115は、ローカルエリアネットワーク(LAN)、イーサネットに基づくネットワーク、トークンリング、広域ネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、電気電子学会(IEEE)1002.11プロトコル群に基づいて動作するネットワーク、Bluetooth(登録商標)、及び/又は任意の他の無線プロトコル)及びこれらのネットワークやその他のネットワークの任意の組み合わせであり得る。
[0042]ネットワークゲートウェイ120は、同じ又は異なるプロトコルで動作する2つかそれ以上のネットワーク115間でセキュアな通路を形成するネットワークノードである。ネットワークゲートウェイ120は、下記のうちの一又は複数の技術を使用してネットワークセキュリティを提供できる。入出力ネットワークトラフィックを監視するファイアウォール、プライベートかつセキュアな通信チャネルを提供する仮想プライベートネットワーク、ネットワーク(一又は複数)内のセキュリティ欠陥を特定するセキュリティスキャン、認証及び認可サービス等のためのアクセスマネージャなど。ネットワークゲートウェイ120は、ルータ、及び様々なソフトウェア製品、サービス、又はシステムへのアクセスを管理するサービスコネクタ(例えば、サービス加入ビジネスモデルを使用)サービスコネクタを使用して、ネットワークトラフィックをルーティングする。ネットワークメッシュ125は、インフラストラクチャ110(例えば、ブリッジ、スイッチ、及び他のインフラデバイス)が、できるだけ多くの他のノードに直接、動的に、かつ非階層的に接続し、互いに協働してデバイスとノード間でデータを効率的にルーティングするローカルネットワークトポロジである。ネットワークメッシュ125は、負荷分散、製品、サービス、もしくはシステムのディスカバリ、ネットワークアクセス、ルーティング、及びピアリング、トラフィックミラーリング等の一又は複数の技術を使用して、接続を管理する。ネットワーク(一又は複数)115、ネットワークゲートウェイ120、及びネットワークメッシュ125は、インフラストラクチャ110から流入又は流出するすべてのデータを管理するために組み合わせて動作する。
[0043]コンポーネント145は、一又は複数の汎用コンピュータ、特殊サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、アプリケーション専用サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバ等を含む)、サーバファーム、サーバクラスタ、又は、個別に又は組み合わせで動作してリソース、データ、サービス又はプログラムをネットワーク(一又は複数)115を介してクライアントコンピューティング装置105に提供する、任意の他の適切な構成及び/又は組み合わせコンピュータもしくはシステムを含む。コンポーネント145はさらに、仮想オペレーティングシステムを実行する一又は複数の仮想マシン、又は仮想記憶デバイスを維持するために仮想化することができる論理記憶デバイスの一又は複数のフレキシブルプールなど、仮想化を伴う他のコンピューティングアーキテクチャを含み得る。様々な実施形態において、コンポーネント145は、本開示に記載の機能を提供する一又は複数のサービス又はソフトウェアアプリケーションを実行するように適合される。
[0044]コンポーネント145はまた、一又は複数のデータリポジトリを含む。これらのデータリポジトリは、様々な実施形態においてデータ及び他の情報を保存するために使用され得る。例えば、一又は複数のデータリポジトリは、ソフトウェア・アズ・ア・メディカルデバイス(SAMD)などのデータ駆動型技術ソリューションを提供するための情報を保存し、該データ駆動型技術ソリューションを実装するためのソースコードの検証及びデプロイのための情報を保存するために、使用することができる。データリポジトリは、様々な場所に存在することができる。例えば、コンポーネントによって使用されるデータリポジトリは、該コンポーネントのローカルにあってもよいし、該コンポーネントからリモートで、ネットワークベース又は専用接続を介して該コンポーネントと通信してもよい。データリポジトリは様々なタイプのものであり得る。ある実施形態では、コンポーネントによって使用されるデータリポジトリが、例えばデータベースであってもよく、集中型データベース、分散型データベース、NoSQLデータベース、リレーショナルデータベース等であり得る。これらのデータベースの一又は複数は、SQLフォーマットコマンドに応答して、データベースとの間でデータの保存、更新、及び取得を可能にするように適合され得る。ある実施形態では、データベースの一又は複数が、アプリケーションデータを保存するためにアプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、例えば、キーバリューストアリポジトリ、オブジェクトストアリポジトリ、又はファイルシステムによってサポートされる一般的なストレージリポジトリなどの様々なタイプであり得る。
[0045]コンポーネント145はコンピューティングノードも含み、コンピューティングノードは、本開示で説明する機能を提供するサービス又はソフトウェアアプリケーション(例えば、ウェブベース又はクラウドサービスとして提供されるサービス又はソフトウェアアプリケーション、又はCI/CDシステムを実装するためのアプリケーション)等の一又は複数のプログラムを実行するように適合されている。各ノードは、ノードのクラスタ内で任意選択的に実装される単一マシンの表現である。単一マシンは、物理マシン(例えば、データセンター内のサーバ)、又は利用可能なCPU及びRAMリソースのセットを有するAmazon Web Services(商標)(AWS)などのクラウドプロバイダ上でホストされる仮想マシンであり得る。クラスタでは、ノードがリソースをプールしてより強力なマシンを形成する。一又は複数のプログラムがクラスタにデプロイされると、クラスタは個々のノードへの作業分配をインテリジェントに処理する。任意のノードが追加又は削除される場合、クラスタは必要に応じて作業を振り分けることができる。一又は複数のプログラムプログラム又はインフラストラクチャ110にとって、個々のマシンのどれが実際にコードを実行しているかは重要ではない。
[0046]一又は複数のクラスタ上にデプロイされる一又は複数のプログラムは、コンテナとしてパッケージ化される。コンテナは広く受け入れられている標準であり、一又は複数のプログラムをインフラストラクチャ110上にデプロイするために様々なイメージを定義することができる。コンテナ化によって、インフラストラクチャ110は自己完結型の実行環境を作成することができる。任意のプログラムとその依存関係をすべて単一のファイルに束ね、インフラストラクチャ110上で共有することができる。コンテナの作成はプログラム的に行うことができ、インフラストラクチャ110上でのコードの検証やデプロイに用いる強力な完全自動化CI/CDパイプラインを可能にする。コンテナは、ポッド130として知られるより上位の構造にラップされる。同じポッド130内のコンテナは、同じリソース及びローカルネットワークを共有することができる。ある場合では、コンテナが、同じポッド130内の他のコンテナと、他からある程度隔離された状態を維持しながらもあたかも同じマシン上にあるかのように通信することができる。ポッド130は、インフラストラクチャ110におけるレプリケーションの単位として使用される。プログラム又はリソースが処理過多となって単一のポッド130インスタンスでは負荷を担えない場合、インフラストラクチャ110は、必要に応じてクラスタにポッド130の新しいレプリカをデプロイするように構成され得る。高負荷でないときでも、負荷分散と耐障害性を可能にするために、プロダクションシステムでいつでも実行中のポッド130の複数のコピーを持つことが有益である場合がある。ポッド130の一又は複数のインスタンスは、一又は複数のクラウドサービスプロバイダ140によって提供されるクラウドインフラシステム上でプロビジョニングされる。
[0047]一又は複数のクラウドサービスプロバイダ140によって提供されるクラウドインフラシステムは、インフラストラクチャ110によって提供される様々なクラウドサービスをサポートするポッド130の一又は複数のインスタンスの提供を促進するために利用されるインフラリソースを含む。ポッド130の一又は複数のインスタンスをプロビジョニングするためのこれらのリソースの効率的な利用を促進するため、リソースは、リソースのセット又はリソースモジュール(「配置リング135」とも呼ばれる)にバンドルされ得る。各リソースモジュール又は配置リング135は、一又は複数のタイプのリソースが予め統合され最適化された組合せを含み得る。特定の例では、様々な配置リング135が様々なタイプのクラウドサービスに対して予めプロビジョニングされ得る。例えば、配置リング135の第1のセットが、SAMDサービスのためにプロビジョニングされてもよく、配置リング135の第1のセットにおける配置リング135とは異なるリソースの組み合わせを含み得る配置リング135の第2のセットが、データ解析サービスのためにプロビジョニングされてもよい。いくつかのクラウドサービスでは、サービスをプロビジョニングするために割り当てられたリソースが、サービス間で共有され得る。
[0048]デジタルヘルスプラットフォーム100は、一又は複数のカーネル150をさらに含む。カーネル150は、一又は複数のクラウドサービスプロバイダ140によって提供される各クラウドインフラシステム上で実行されるように適合される。カーネル150は、デジタルヘルスプラットフォーム100全体にわたる分散アプリケーション又はフレームワークにわたってリソース割り当てと分離を提供するクラスタマネージャである。カーネル150は、リソース管理及びスケジューリングを含むサービス及びソフトウェアのオーケストレーションのためのアプリケーションプログラミングインターフェース(API)を、一又は複数のプログラムに提供する。カーネル150のアーキテクチャは、タスクを実行するためのエージェントノード、エージェントノードにタスクを送信するためのマスタノード、マスタノードの選定及びアドレス検索のためのzookeeper、及びエージェントノードにタスクをスケジュールするためにマスタノードと協調するフレームワークを含む。
[0049]デジタルヘルスプラットフォーム100は、CI/CDシステム155をさらに含む。CI/CDシステム155は、クラウドインフラシステム内に実装され、デジタルヘルスプラットフォーム100が、ソフトウェア製品、サービス、又はシステムのソースコード内の変更を頻繁に更新、試験、及び送達することを可能にする。本書で詳細に説明するように、ヘルスケアにおいては、ソフトウェアが遵守しなければならないデータセキュリティ(例えば、データインテグリティ及びデータプライバシー)に関する政府規制が存在する。CI/CDシステム155では、これらの政策規制をコードに含めることができ、コンプライアンスを自動的に追跡し、検証し、再設定することができる。SAMDの一例では、データの保存場所、サーバアクセス制御、及びアクティビティロギングをソースコードに含めることができることで、ソフトウェアの使用全体においてユーザデータを保護及び管理できるようにすることができる。加えて、暗号化及びパスワード保護された操作も継続的インテグレーション中に含めることができる。継続デリバリーでは、セキュリティとモニタリングのツールを使用して、ユーザの活動を追跡し、セキュリティの脅威につながる可能性のあるエラーを検出することができる。
[0050]CI/CDシステム155は、機械学習モデルのプロビジョニングにも使用され得る。機械学習モデルは、最初はデータセットを使用して訓練されるが、時間の経過とともにモデルがドリフトしたり、データが変化したりして、機械学習モデルを更新する必要性が生じることがある。機械学習モデルがソフトウェアアプリケーション内で実行される場合、該ソフトウェアアプリケーションに関連するコードには、機械学習モデルを再学習させるべき時期のトリガを含めることができる。例えば、コードには、所定の時間間隔で、新しい学習データが利用可能になったときに、又は機械学習モデルの性能が閾値を下回ると決定されたときに、機械学習モデルを再学習させる命令を含めることができる。さらに、ソフトウェア開発者は、製品環境における機械学習モデルの性能の監視に基づいて、又はモデル最適化のための推定改善に基づいて、テスト環境においてモデルアーキテクチャ及びハイパーパラメータのバリエーションを探索することができる。CI/CDシステム155は、機械学習モデルが性能要件を満たすと決定された際、構築、テスト、及び製品環境へのデプロイを容易にする。
III.CI/CDシステム
[0051]図2は、様々な実施形態による、様々なクラスのコードを検証しデプロイするためのCI/CDシステム200(例えば、図1について記載したCI/CDシステム155)の概略図を示す。図示の実施形態で、CI/CDシステム200は、アクター205、CIコンポーネント210、及びCDコンポーネント215を含む。アクター205は、ソフトウェア開発者、コードレビューア、品質エンジニア、リリースマネージャ、及び/又は政府規制対象事業者などのサービスプロバイダを含み得る。アクター205は、一又は複数のクライアントデバイス(例えば、図1について記載したクライアントデバイス105)を通じて、妥当性確認、検証、及びデプロイのためにソースコードをCI/CDシステム200にアップロードする。図示のように、アクター205及びSDLCのうちアクター205に関連する部分は、SDLCのうち規制対象事業者の部分(CIコンポーネント210及びCDコンポーネント215)から、物理的に分離されている。これにより、アクター205は、SDLCのうち自身の部分の反復をn回行ってから最終的にソースコードの単一バージョンをリリースすることができ、このソースコードの単一バージョンが、CIコンポーネント210及びCDコンポーネント215に入力され、データインテグリティやデータプライバシーなど規制対象事業者のデジタルヘルスプラットフォームに固有の課題を扱うようカスタマイズされる。CIコンポーネント210及びCDコンポーネント215内でソースコードが検証に失敗した場合は、アクター205に通知がなされ、アクター205は検証失敗のもととなった問題を修正するために戻って、SDLCの自身の部分の追加の反復を任意の数だけ繰り返すことができ、最終目標はソフトウェアプラットフォーム(例えば、図1について記載した政府規制対象事業者のデジタルヘルスプラットフォーム100)にソースコードをデプロイすることである。
[0052]CIコンポーネント210は、様々なQMS、コードプロファイル、及びコードレビュー記録を維持するためのドキュメントシステム220、ソースコードのプロファイリング及びコードレビュータスクのオーケストレーションのためのタスク管理システム225、バージョン管理及びコラボレーションのためのコードホスティングプラットフォーム230、及びソースコードの静的解析を行うためのコードレビューシステム235を含む。ソースコードを提出するとき、アクター205はソースコードをコード変更の固有のセットとして構築し、次にそのコード変更の固有のセットをCIコンポーネント210にプッシュする。本開示の様々な態様によれば、CIコンポーネント210にアップロードされたソースコードは典型的に、ソフトウェア開発システム(例えば、サードパーティ開発者のソフトウェア開発システム)に関連するQMSに従って既に検証されている。タスク管理システム225は、CIコンポーネント210がソースコードを効率的かつ正確に妥当性確認及び検証できるように、CIコンポーネント210にアップロードされているソースコードのクラスを自動的に識別するように適合される。具体的には、タスク管理システム225は、ソースコードのクラスを識別するためにソースコードのプロファイルを生成し、ソースコードの識別されたクラスのために特に構成されたQMSを識別し、ソースコードを妥当性確認及び妥当性確認するための識別されたQMSによって定義された要求のセットに従って、コードレビュータスクの最適セットを構成するように適合される。
[0053]アクター205からソフトウェアプラットフォームのCIコンポーネント210及びCDコンポーネント215にリリースされ得る、ソースコード及びソフトウェアの多くの異なるタイプ又はクラスが存在することを理解されたい。したがって、タスク管理システム225は、CI/CDシステム200にリリースされたソースコード及びソフトウェアの異なるタイプ又はクラスのすべてを妥当性確認及び検証するように設計されている。さらに、アクター205の意図は、ソフトウェアプラットフォームに常に知られているか又はソフトウェアプラットフォームの意図と一致するとも限らない。例えば、アクター205のいくつかは、セキュアなセッションのハイジャック、データの窃盗、機密性の高い個人データの搾取、ユーザのセキュリティ認証の取得、ネットワーク又はソフトウェアプラットフォームのクラッシュなどのために、悪意のあるコードをアップロードすることによってソフトウェアプラットフォームを攻撃しようとしているかもしれない。例えば、アクター205のいくつかはソースコードのアイデンティティに関する偽のステートメントを作成して、ソースコードの真のアイデンティティを直接的に隠蔽し、適切なコードスキャンを回避するかもしれない。あるいは、アクター205のいくつかはファイルの拡張子を変更して、ソースコードの真のアイデンティティを間接的に隠蔽し、適切なコードスキャンを回避するかもしれない。したがって、タスク管理システム225は、受け取ったソースコードをアクターの意図に関係なく分類し、該ソースコードのクラスに特有の、ソースコードを検証するための要件のセットを定義するQMSを特定するように適合される。要件のセットは、ソースコードが:使用意図を実施するため意図したように動作する;セキュリティの拡張されたレベルを満たすかどうか;国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか;データプライバシーへの配慮を満たすかどうか;及びコンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定するために、定義することができる。特定されたQMSは、CI/CDシステム200が、効率的、効果的、かつ安全な方法でソースコードを妥当性確認、検証、及びデプロイすることを可能にする。
[0054]タスク管理システム225は、特定されたQMSをドキュメントシステム220から取得し、特定されたQMS、コードレビュータスクの最適セット、及びソースコードを、コードホスティングプラットフォーム230に転送する。コードレビューシステム235は次いで、コードレビュータスクの最適セットに従ってコード妥当性確認を実施する。コードレビュータスクの最適セットは、ソースコードに対して実行される一連のテストを定義する。コードレビューシステム235は、一連のテストを実施してソースコードを解析する静的解析ツールを含む。コードレビューシステム235は、ソースコードに対して実行される一連のテストの結果に基づいて、ソースコードの要件のセットに対する準拠又は非準拠を決定する。その後、コードレビューシステム235は、要件のセットに対する準拠又は非準拠に基づいて、ソースコードの妥当性を決定する。ソースコードの準拠性及び/又は妥当性が確認されると、コードホスティングプラットフォーム230は、コード構築及びさらなるテスト(例えば、静的解析、動的解析、及び/又はホワイトソーシング)のためにソースコードをCDコンポーネント215にリリースする。リリースは、ソースコードと、任意選択的に、特定されたQMS及びコードレビュータスクの最適セットとを、コード構築ツール又はエンジン240に転送することを含む。
[0055]CDコンポーネント210は、コードビルドを管理するためのコードビルドツール又はエンジン240、コードを構築するためのコードビルドシステム245、ソースコードの静的及び動的解析を行うためのコードレビューシステム250、ビルドアーティファクトを保存するためのアーティファクトリ255、実行可能プログラム/アーティファクトをコンテナにカプセル化して、コンテナの実行可能プログラム/アーティファクトをソフトウェアプラットフォーム上に展開するためのデプロイマネージャ260を含む。コードビルドツール又はエンジン240は、ソフトウェアビルドの作成と関連プロセスを自動化するように適合されている。関連プロセスは、コンピュータソースコードのバイナリコードへのコンパイル、バイナリコードのパッケージング、及び自動テストの実行を含む。コードビルドシステム245は、ゼロからビルドを実行するフルビルド、又はインクリメンタルビルドを実行するように適合されている。インクリメンタルビルドでは、コードビルドエンジン240によって内部的に維持されている最後のビルド状態を使用して、最後のビルド状態以降のプロジェクトにおける変更に基づき、ビルドを実行する。フルビルド又はインクリメンタルビルドは、コードビルドエンジン240又はコードリポジトリからのコードのフェッチ、コードのコンパイル(依存関係のチェックを含む)、コードレビューシステム250による自動テストの実行、ライブラリ、コード、ファイル等の適宜のリンク、そして妥当性確認後、アーティファクトの構築及び保存(ビルドログの保存も)を含む。
[0056]コードレビューシステム250は、コードレビュータスクの最適セットに従ってコード妥当性確認を実施する。コードレビュータスクの最適セットは、ソースコードに対して実行される一連のテストを定義する(一連のテストは、ビルドの前にソースコードに対して実行されるものと同じ又は類似のテスト、異なるテスト、又はそれらの組み合わせであり得る)。コードレビューシステム250は、一連のテストを実施してソースコードを解析する静的及び動的解析ツールを含む。コードレビューシステム250は、ソースコードに対して実行される一連のテストの結果に基づいて、ソースコードの要件のセットに対する準拠又は非準拠を決定する。ある場合では、コードレビューシステム250は、要件のセットに対する準拠又は非準拠に基づいて、ソースコードの有効性を決定する。ソースコードの準拠性及び/又は検証が行われると、コードビルドシステム245は、開発されたソフトウェアとともにアーティファクトを構築してアーティファクトリ255に保存する。アーティファクトは、ソフトウェアの開発中に生成される多くの種類の有形副産物のうちの1つである。いくつかのアーティファクト(例えば、ユースケース、クラス図、及び他の統一モデリング言語(UML)モデル、要求及び設計文書)は、ソフトウェアの機能、アーキテクチャ、及び設計を記述するのに役立つ。特定の場合では、実行ファイルがテスト計画の遂行に必要であるため、テスト用にコンパイルされたソースコードもアーティファクトに含まれる。
[0057]デプロイマネージャ260は、一又は複数のカスタマイズされた事前構築イメージを使用して、一又は複数のコンテナにソフトウェアをカプセル化又はパッケージ化し、一又は複数の複数のコンテナをポッドにラップする。デプロイマネージャ260はまた、一又は複数の分散コンピューティング環境265(例えば、クラウドコンピューティング)内に、リソース又はリソースモジュールのセット(たとえば、図1について記載した配置リング135)でサポートされるノード又はノードのクラスタを作成します。デプロイ層260は、直接又は間接的に(一又は複数のデプロイ抽象化層を介して)、ノード又はノードのクラスタ上でポッドを起動する。デプロイ層は、ポッドを監視し、ノード又はノードのクラスタ上で実行されるポッドのレプリカ数を決定し、必要に応じてポッドを追加/交換するように適合される。デプロイマネージャ260は、当該ソフトウェアによってサポートされるソフトウェア又はサービスを登録し(例えば、ソフトウェア又はサービスを公開し)、ユーザがソフトウェア又はサービスにアクセスするためのセキュアな通信チャネルを開設する。
IV.デジタルヘルスプラットフォーム上のソースコードのCI/CDのための技術
[0058]図3~4は、ソースコードの検証とデプロイのためのプロセス及び動作を示す。個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、又はブロック図として示されるプロセスとして説明されることができることに留意されたい。フローチャートは、シーケンシャルなプロセスとして動作を説明しているが、動作の多くは並行して又は同時に実行されてもよい。さらに、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれていない追加のステップを有することができる。プロセスは、方法、関数、プロシージャ、サブルーティン、サブプログラム等に対応し得る。プロセスが関数に対応する場合、その終了は、関数が呼び出し関数又はメイン関数に戻されることに対応することができる。
[0059]図3~4に示すプロセスは、ハードウェア、又はそれらの組み合わせの一又は複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)において実装されることができる。ソフトウェアはメモリ(例えば、メモリデバイス、非一時的コンピュータ可読記憶媒体)に保存され得る。図3~4の具体的な処理ステップは限定を意図していない。ステップの他のシーケンスが、代替実施形態に従って実施されてもよい。例えば、代替的実施形態では上記で概説したステップが異なる順序で実施され得る。さらに、図3~4中に図示されている個々のステップは、個々のステップに対して適宜に様々なシーケンスにおいて実施され得る、複数のサブステップを含み得る。その上、特定の適用例に応じて、追加のステップが付加又は削除され得る。当業者は、多くの変形、修正、及び代替を認識するであろう。
[0060]図3は、CI/CDシステムを用いてソフトウェアプラットフォーム上でソースコードを検証しデプロイするプロセス300を示す。フロー図300に示すプロセスは、図1及び2に示すアーキテクチャ、システム、及び技術によって実装される。ステップ305で、ソフトウェア開発システムのリリースマネージャが、ソースコードのリリースを作成する。リリースは、リリースマネージャがソフトウェアプラットフォーム上で構築及び展開することを意図するソースコード又はソフトウェアの一部又は全機能バージョンを構成する。図示のように、一又は複数のソフトウェア開発システム(すなわち、アクター)に関連する複数のリリースマネージャが存在し得る。各リリースマネージャは、構築とデプロイのためにソースコードの一又は複数のリリースを作成し得る。ソフトウェア開発システムは、ソフトウェアプラットフォーム(例えば、図1にについて記載したような政府規制対象事業者のデジタルヘルスプラットフォーム100)のCI/CDシステムに、妥当性確認、検証、及びデプロイのため、ソースコードをリリースする。
[0061]ステップ310において、所与のリリースマネージャに関連するソフトウェア開発システムのCIは、デプロイのためのソースコードを取得し、ビルドプロセスを実行して実行可能プログラムを構築する。ビルドプロセスは、ソースコードを、コンピューティングデバイス上で実行可能なスタンドアロン形態又はアーティファクト(例えば、効率的な実行可能プログラム)に変換するために実行される。ビルドプロセスは、プログラミング言語やオペレーティングシステムによって異なるいくつかの活動の組み合わせであるが、基本的なコンセプトは同じであろう。ソースコード及びそのアーティファクトがリポジトリからフェッチされ、依存関係をチェックしながらコンパイルし、自動テストを実行して操作性を確認し、ファイル、ライブラリ、コードをそれぞれリンクし、テストに成功したら、実行可能プログラムを表すアーティファクト確定して保存し、ビルドログが記録される。
[0062]ステップ315で、ソフトウェア開発システムのCIは、ソフトウェア開発システムのQMSに従って、ソースコードと実行可能プログラムのテストと検証を行う。例えば、各ソフトウェア開発システムは、リリースマネージャの製品及び組織に適したQMSの枠組みの中で開発されたソフトウェアを検証するためのソフトウェアライフサイクルモデルを確立し得る。QMSは、ソースコードを検証するための要件のセットを定義する。要件のセットは、例えば、ソースコードが、使用意図に適合するか、使用意図を実施するため意図したように動作するか、セキュリティの基本レベルを満たすかを決定するために定義され得る。ソフトウェアのライフサイクル活動のそれぞれについて、ソフトウェアが検証されているという結論を支持する実施可能なタスクがある。しかし、実施されるタスク、実施順序、及び実施の反復とタイミングは、選択された特定のソフトウェアライフサイクルモデルと、ソフトウェア開発システムで個別に認識されるソフトウェアアプリケーションに関連する安全リスクによって決まる。ソフトウェアを検証するための各タスクは通常、要件から始まり、例えば、ソフトウェアの各機能について、アクターは、その機能を説明する要件を示すことができるべきである。アクターはさらに、各要件について、その機能が要求通りに機能することを確認するためのテスト計画と、その計画が実行された証拠とテスト結果を記録するための記録保持システムを有するべきである。
[0063]ステップ320において、ソフトウェア開発システムのCIは、ソースコードの品質をチェックする。コードの品質チェックは、信頼性(例えば、コードが意図したとおりに最小限の欠陥で実行されるかどうかを決定すること)、保守性(例えば、一貫した構造/スタイルに従う、理解しやすい、十分に文書化されている等)、及びテスト性(例えば、ソフトウェアが妥当性確認/妥当性確認のためのテスト努力をどれだけサポートするか)のチェックを含む。ステップ325では、ソースコード及び実行可能プログラムが有効であるかどうか、及び/又は十分な品質であるかどうかについての決定が行われる。ソースコード及び実行可能プログラムが無効である(QMSの要件のすべて又は一部を満たしていない)、及び/又はソースコード及び実行可能プログラムが(ソフトウェア開発システムによりQMSに従って定義及び測定される)品質が低い場合には、ソフトウェア開発システムのCIが、ソースコードを開発チームに転送してソースコードの障害及び/又は品質を修正させる。これに対して、ソースコード及び実行可能プログラムが有効である(QMSの要件のすべて又は一部を満たす)、及び/又はソースコード及び実行可能プログラムが(ソフトウェア開発システムによりQMSに従って定義及び測定される)品質が良い場合には、ソフトウェア開発システムのCIが、ソフトウェアプラットフォームへのソースコードのリリースを切り出す。
[0064]ステップ330で、ソフトウェアプラットフォームのCI/CDシステムは、ソースコードを受け取り、ソースコードの妥当性確認、検証、及びデプロイに使用されるQMSを自動的に特定する。例えば、ソフトウェア開発システムを制御するエンティティ及びSDLCのうちそれらに関連する部分は、CI/CDシステム及びSDLCのうちそれらに関連する部分を制御するエンティティから、分離されている。その結果、ソフトウェア開発システムを制御するエンティティは、SDLCのうち彼らの部分のn回の反復(例えば、ステップ305~320)を実施して、最終的にソースコードの単一バージョンをリリースすることができ、ソースコードのこの単一バージョンがステップ330で受け取られる。ソフトウェア開発システムとCI/CDシステムとの間のこの物理的な分離によって、CI/CDシステムが、データインテグリティやデータプライバシーなどのソフトウェアプラットフォームに固有の課題を扱うためにカスタマイズされることが可能となる一方で、ソフトウェア開発システムとCI/CDシステムとの間にプライバシーとセキュリティの追加の層を提供することができる。
[0065]ある場合では、CI/CDシステムを制御するエンティティがソフトウェア開発システムを制御するエンティティのものと同じであるか異なる。いずれの場合も、ソースコードは、ソフトウェア開発システムのQMSに従って既に検証されている。しかし、様々なソフトウェア開発システムからソフトウェアプラットフォームにリリースされ得るソースコード及びソフトウェアには、多くの異なるタイプ又はクラスが存在することを理解されたい。例えば、あるソフトウェア開発システムがSAMDを開発しており、別のソフトウェア開発システムが画像処理のための機械学習モデルを開発しており、別のソフトウェア開発システムが医療機器内に実装するソフトウェアを開発しており、別のソフトウェア開発システムが医療デバイス又はSAMD等の検証に使用するソフトウェアを開発していることがある。したがって、ソフトウェアプラットフォームのQMSは、CI/CDシステムにリリースされたソースコード及びソフトウェアの異なるタイプ又はクラスのすべてを妥当性確認及び検証するように設計されている。
[0066]さらに、アクター205の意図は、ソフトウェアプラットフォームに常に知られているか又はソフトウェアプラットフォームの意図と一致するとも限らない。例えば、アクター205のいくつかは、セキュアなセッションのハイジャック、データの窃盗、機密性の高い個人データの搾取、ユーザのセキュリティ認証の取得、ネットワーク又はソフトウェアプラットフォームのクラッシュなどのために、悪意のあるコードをアップロードすることによってソフトウェアプラットフォームを攻撃しようとしているかもしれない。例えば、アクター205のいくつかはソースコードのアイデンティティに関する偽のステートメントを作成して、ソースコードの真のアイデンティティを直接的に隠蔽し、適切なコードスキャンを回避するかもしれない。あるいは、アクター205のいくつかはファイルの拡張子を変更して、ソースコードの真のアイデンティティを間接的に隠蔽し、適切なコードスキャンを回避するかもしれない。したがって、CI/CDシステムは、受け取ったソースコードをアクターの意図に関係なく分類し、該ソースコードのクラスに特有の、ソースコードを検証するための要件のセットを定義するQMSを特定するように適合される。要件のセットは、ソースコードが:使用意図を実施するため意図したように動作する;セキュリティの拡張されたレベルを満たすかどうか;国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか;データプライバシーへの配慮を満たすかどうか;及びコンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定するために、定義することができる。特定されたQMSは、CI/CDシステムが、効率的、効果的、かつ安全な方法でソースコードを妥当性確認、検証、及びデプロイすることを可能にする。
[0067]QMSが特定されると、ソフトウェアプラットフォームのCI/CDシステムは、ソースコードの品質及びコンプライアンスチェックを実施する。品質及びコンプライアンスチェックには、実行可能プログラムを構築するビルドプロセスと、ソースコード及び実行プログラムの妥当性確認及び検証の両方が含まれる。ビルドプロセスは、310について記載したように、ソースコードをコンピューティングデバイス上で実行可能なスタンドアロン形態又はアーティファクト(例えば、効率的な実行可能プログラム)に変換するために実行される。妥当性確認は、ソースコード又は実行可能プログラムが要件に従って構築されていることを保証するために実施される。言い換えれば、ソースコード又は実行可能プログラムがそれらの指定された要件を満たしていることを保証するためである。検証は、ソースコード又は実行可能プログラムが実際にユーザのニーズを満たしていること、そもそも仕様が正しかったことを保証するために実施される。言い換えれば、ソースコード又は実行可能プログラムが、意図した環境に置かれたときに、指定されたニーズを含む追加的な要件を満たすことを実証することである。品質及びコンプライアンスチェックの実施には、テスト計画の策定、テスト計画の実行、及びテスト計画の実行記録など、いくつかのサブプロセスが含まれる。ソースコードのテスト計画は、QMSに従ってCI/CDシステムにより自動的に策定される。例えば、CI/CDシステムは、ソースコードの機能をテストするための静的解析及び動的解析を含む、システムによって実施可能なすべてのタイプの妥当性確認及び検証タスクを認識しており、CI/CDシステムは、特定されたQMSを介してソースコードの検証のために評価する必要がある機能の要件をすべて認識している。したがって、CI/CDシステムは、実施すべきタスク、タスクの実施順序、タスク実施の反復とタイミング、及びソースコードの機能をテストするためのツールのパイプラインを含むテスト計画を策定するであろう。
[0068]テスト計画は、自動コードレビューツールのパイプラインを使用してCI/CDシステムによって実行される。一般に、ツールは、実施される解析の種類に基づいて、2つのグループの1つに分類され得る:動的解析と静的解析である。動的解析は、コンパイルされたプログラムの実行可能なコードに対して実施され、ユーザ固有の動作のみをチェックする。すなわち、テスト中に実行されるコード(例えば、オブジェクトコード)のみがチェックされる。動的解析器は、メモリリーク、プログラムのパフォーマンス、コールスタック等に関する情報をユーザに提供することができる。静的解析により、テストされたプログラムが実行される前にプログラムコード(例えば、ソースコード)をチェックすることが可能である。コンパイラは通常、コンパイルプロセス中に静的解析を実施する。しかし、大規模な現実のプロジェクトでは、ソースコードが信頼性、保守性、可読性、テスト性、移植性、及び脆弱性を含む追加要件を満たすことを保証するために、開発全体を通じて静的解析を実施する必要があることが多い。抽象構文木(AST)ウォーカー解析、データフロー解析、パスセンシティブデータフロー解析など、動的解析器や静的解析器には多くの様々な解析技術が実装されている。これら様々な解析技術がテスト計画に従って整理され実行されるであろう。
[0069]様々な解析技術が評価されて、QMS内で定義された要求事項に対するソースコードの妥当性確認(品質や準拠又は非準拠)が決定される。言い換えれば、ソースコード又はソフトウェアがそれらの指定された要件を満たしていることが保証される。ある場合では、品質及び準拠又は非準拠の決定は、オール・オア・ナッシングの決定であり、例えば、ソースコードが適切な品質及び準拠性を有するとされるためには、すべての要件を満たさねばならない。他の場合には、準拠又は非準拠の決定は柔軟であり、例えば、ソースコードが適切な品質及び準拠性を有するとされるために、要件のうちある割合又は閾値数を満たさねばならない。様々な解析技術により、ソースコードが適切な品質と準拠性を有することが実証された場合、ソースコードの有効性は、QMS内で定義された要件(例えば、ユーザのニーズや、そもそも仕様が正しかったこと)に従って決定されるであろう。これに対し、様々な解析技術により、ソースコードが十分な品質と準拠性を有していないことが実証された場合、ソフトウェアプラットフォームの アクター及び/又は管理者に通知が送信され得る。この通知では、ソースコードと妥当性確認に失敗した理由が特定される。テスト計画の実行及び妥当性確認結果は、機能要件、機能要件に対するテスト計画、及びテスト計画が実行されたことを裏付ける証拠の間のトレーサビリティを維持する方法で記録される。この記録は、将来、例えば政府規制当局の審査をサポートするのに使用できるよう、リポジトリに保持される。
[0070]様々な解析技術が評価され、QMS内で定義された要件(例えば、ユーザのニーズや、そもそも仕様が正しかったこと)に従って、ソースコードの有効性が決定される。ある場合では、有効性の決定は、オール・オア・ナッシングの決定であり、例えば、ソースコードが有効であるとされるためにはすべての要件を満たさねばならない。他の場合には、準拠又は非準拠の決定は柔軟であり、例えば、ソースコードが有効とされるために、要件のうちある割合又は閾値数を満たさねばならない。ソースコードが有効であることを様々な解析技術が実証する場合、ソースコードはホワイトソーシングの決定のためにブロック320に進められる。これに対し、様々な解析技術により、ソースコードが有効でないことが実証された場合、ソフトウェアプラットフォームのアクター及び/又は管理者に通知が送信され得る。この通知では、ソースコードと検証に失敗した理由が特定される。テスト計画の実行及び検証結果は、機能要件、機能要件に対するテスト計画、及びテスト計画が実行されたことを裏付ける証拠の間のトレーサビリティを維持する方法で記録される。この記録は、将来、例えば政府規制当局の審査をサポートするのに使用できるよう、リポジトリに保持される。
[0071]妥当性確認及び検証の要件のセットは、以下のうち一又は複数を含む:使用意図を実施するため意図したように動作する;国際、国内、及び/又は地域の規制によって課せられる要件を満たす;データインテグリティ及びプライバシーへの配慮を満たす;コンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たす;及びセキュリティの拡張されたレベルを満たす。使用意図要件は、様々な機能の全体的な機能性が意図した通りに、ソースコード又はソフトウェアの全体的な使用意図(例えば、腫瘍検出のための画像処理)を実装するように実施されているかどうかを評価する。国際、国内、及び/又は地域の規制要件は、ソフトウェアプラットフォームに特有の政府規制(国家安全保障、サイバーセキュリティ、ソフトウェア誤動作、データプライバシー等)が満たされているかどうかを評価する。ある場合では、これらの規制要件は、ソースコード及び又はソースコードによって使用されるデータがデプロイされ使用される国際、国内、及び/又は地域に基づいて決まる。データインテグリティ及びプライバシー要件は、不正アクセス及びデータ破損からの保護が満たされているかどうかを評価する。ある場合では、データインテグリティ及びプライバシー要件が、ソースコード及び又はソースコードによって使用されるデータがデプロイされ使用される国際、国内、及び/又は地域に基づいて決まる。コンテナ及びソフトウェアプラットフォームに特有の性能要件は、資産及びデータの分離が満たされているかどうかを評価する。
[0072]拡張されたセキュリティレベル要件は、ソフトウェアプラットフォームに特有の脆弱性の懸念を防止又は最小化するために、セキュリティ機能が機能しているかどうかを評価する。例えば、ソフトウェア開発システムのQMSは、SQLインジェクション、OSコマンドの脆弱性、バッファオーバーフロー、制御不能フォーム文字列、整数オーバーフロー等の共通脆弱性に対処するために、そのソースコード又はソフトウェアのすべてが満たすべきセキュリティのベースラインレベルを定義することができる。しかし、ソフトウェアプラットフォームのQMSは、ソフトウェアプラットフォームに特有の特定の脆弱性に対処するために、ソフトウェアプラットフォーム上にデプロイされたすべてのソースコード又はソフトウェアが満たすべきセキュリティの拡張レベルを定義することができる。例えば、拡張セキュリティレベルには、攻撃者が1つのアプリケーションの資産又はデータから別のアプリケーションの資産又はデータにアクセスすることを避けるため、テナント、アプリケーション、クラスタ等の間の分離を維持する要件、完全かつ妥当性確認可能なデータ削除の要件、APIの公開に関する要件、暗号化キーの損失又は盗難によるデータ復旧の要件、認証アクセスの内部者による乱用に関する制限、未認証クラウドサービスの使用制限などを含み得る。
[0073]ステップ335において、CI/CDシステムは、ソースコードのホワイトソーシングを実施する。ホワイトソーシングは、ソースコード又はソフトウェア内の依存関係を含むオープンソースコンポーネントを特定し、オープンソースコンポーネントをデータ構造へコンパイルする。ある場合では、ホワイトソーシングはさらに以下を行う:(i)オープンソースコンポーネントに関連するパーミッション又はライセンスを特定し、(ii)オープンソースコンポーネントに起因する脆弱性(例えば、オープンソースコンポーネントに関連するパーミッション又はライセンスから生じる脆弱性)を特定し、(iii)SDLCを通じてライセンスポリシーを実施し、(iv)パーミッション又はライセンス、脆弱性及び関連するオープンソースコンポーネントを、データ構造にコンパイルする。ある場合に、ホワイトソーシングは、リスク管理を層別化するために、ソースコードが脆弱性を利用しているかどうかに基づいて脆弱性に優先順位を付ける。
[0074]ステップ340では、ソースコード及び実行可能プログラムが有効であるかどうか、及び/又はオープンソースコンポーネントに起因する脆弱性を含むかどうかについての決定が行われる。ソースコード及び実行可能プログラムが無効である(QMSの要件のすべて又は一部を満たしていない)、及び/又はソースコード及び実行可能プログラムが(ソフトウェアプラットフォームによりQMSに従って定義及び決定される)オープンソースコンポーネントに起因する脆弱性を含む場合には、CI/CDシステムが、ソースコードを開発チームに転送してソースコードの障害及び/又は脆弱性を修正させる。これに対して、ソースコード及び実行可能プログラムが有効である(QMSの要件のすべて又は一部を満たす)、及び/又はソースコード及び実行可能プログラムが(ソフトウェアプラットフォームによりQMSに従って定義及び決定される)オープンソースコンポーネントに起因する脆弱性を含まない場合には、CI/CDシステムが、ソフトウェアのソースコードのデプロイプロセスに進む。
[0075]ステップ345で、CI/CDシステムはバージョン管理を実施し、アーティファクトをアーティファクトリに作成/保存する。バージョン管理は、コードリポジトリ内のソースコードに対するすべての変更を追跡する。例えば、バージョン管理システムは、すべてのファイルの完全な長期変更履歴を維持するであろう。これは、ソースコードやソフトウェアの寿命の間に多くの個人又はアクターによって行われたすべての変更を意味する。変更には、ファイルの作成と削除とともにその内容に対する編集も含まれる。バージョン管理システムはまた、ソースコードやソフトウェアに関する複数の作業の流れを分岐、統合することも可能である。バージョン管理システムはさらに、ソースコードやソフトウェアになされた各変更のトレーサビリティを可能にし、バグやエラー等の変更理由や意図の注釈とともにアクターに接続することができる。アーティファクトは、アーティファクトリ又はユニバーサルリポジトリに作成・保存される。アーティファクトリは、エンドツーエンドのアーティファクトライフサイクルを管理し、様々なソースコード及びソフトウェアパッケージ管理システムをサポートしつつ、CI/CDシステムとワークフローに一貫性を提供する。アーティファクトリポジトリは、ビルドプロセスに必要なアーティファクトのソースであり、ビルドプロセスで生成されたアーティファクトをデプロイするターゲットでもある。
[0076]ステップ350において、実行可能プログラムはコンテナにカプセル化され、ソフトウェアプラットフォームの一又は複数のノードノード上にポッドインスタンスとしてデプロイされる。実行可能プログラムのデプロイの際、実行可能プログラムのポッドインスタンスのデプロイ通知が、CI/CDシステムに提供される。ブロック355において、CI/CDシステムは、ポッドインスタンスのデプロイ通知を受け取り、通知をリリースマネージャに転送する。ステップ360において、開発チームがソースコードの障害及び/又は品質を修正することを可能にするために、リリースマネージャにおけるプロセスはループバックする。
[0077]図4は、CI/CDシステムを用いてソフトウェアプラットフォーム上でソースコードを検証しデプロイするプロセス400を示す。フロー図400に示すプロセスは、図1及び2に示すアーキテクチャ、システム、及び技術によって実装される。ステップ405では、ソフトウェア開発システムから第1のQMSで検証されたソースコードがアクセスされる。ソースコードは、ソフトウェアプラットフォームのCI/CDシステムからアクセスされる。ある場合では、ソフトウェア開発システムは、ネットワーク接続を介してCI/CDシステムから遠隔に位置している。第1のQMSは、ソースコードを検証するための要件のセットを定義する。要件の第1のセットは、以下のうち一又は複数を決定するように適合される:ソースコードが、使用意図に適合するかどうか、使用意図を実施するため意図したように動作するかどうか、及びセキュリティの基本レベルを満たすかどうか。第1のQMSは、良質なソースコードを開発する際にソフトウェア開発者が直面する広範な課題、例えば、ソフトウェア開発者がソフトウェア製品、サービス、又はシステムに関連する消費者や他の利害関係者のニーズを満たすことを確実にするべく、定義された課題を取り扱うためにカスタマイズされる。これは、ソフトウェア製品、サービス、又はシステムが要件の第1のセットを満たすことをチェックするためのコードの妥当性確認と検証を含む。
[0078]ステップ410で、ソースコードのプロファイルが生成される。プロファイルは、以下により生成される:(i)ソースコードの特性及びコードによって動作するデータの特性を特定する。及び(ii)ソースコードの特性及びコードによって動作するデータの特性を使用してプロファイルを構築する。ソースコードの特性は、ソースコード上のソースコードコメントの範囲を解析することによって、及びコードによって使用される技術(例えば、Java又はモバイルプラットフォーム)を解析することによって特定され得る。ソースコードの特性は、ソースコードを書くのに用いられる一又は複数のプログラミング言語、ソースコードの使用意図、ソースコードの実行が意図される環境、ソースコードが開発された環境(例えば、原産国)などを含み得る。ソースコードによって動作するデータの特性は、ソースコードに入力されるデータのタイプ及び形式、ならびにソースコードによって生成されるデータのタイプ及び形式を含み得る。例えば、タイプ及び形式は、データが、ストリーミングデータ、モデルトレーニングデータ、インテグリティ及びプライバシーに関するデータ、SAMDからコンパイルされたデータ、履歴データ又はアーカイブデータ等であるかどうかを含み得る。
[0079]ステップ415で、ソースコードは、プロファイルに基づいてコードのクラスに分類される。分類は、プロファイルを使用して、コードの様々なクラスに関連するプロファイルを保存するデータ構造をクエリすることを含み得る。ソースコードの特性及びソースコードによって動作するデータの特性に一致する所定の数の特性を有するプロファイルから、それらしいプロファイルが特定され得る。例えば、クエリを用いて、ソースコードの特性及びソースコードによって動作するデータの特性に一致する所定の数の特性を有するプロファイルから、それらしいプロファイルのセットを特定してもよい。プロファイルのセットは、いくつかの一致する特性、関連性値、一致の値の強度等の一又は複数のソート特性を使用してソートされ得る。プロファイルのセットのリストの上部又は底部にあるプロファイルが、それらしいプロファイルとして特定され得る。ソースコードは、それらしいプロファイルに関連するコードのクラスとして分類され得る。あるいは、分類が、プロファイルを入力とする分類器を用いて、ソースコードの特性及びソースコードによって動作するデータの特性に基づいてコードのクラスの推定を生成してもよい。有利なことに、ステップ410及び415の分類プロセスにより、多くの異なるタイプ又はクラスのソースコード及びソフトウェアを検証及びデプロイすることができる。さらに、ソースコードは、ソフトウェア開発者/ソフトウェア開発システムによって割り当てられたクラスに関係なく分類されるため、ステップ415で分類されたコードのクラスに対する第2のQMSが取得され、CI/CDシステムが効率的、効果的、かつ安全な方法でソースコードを妥当性確認、検証、及びデプロイすることが可能となる。
[0080]ステップ420で、ステップ515で決定されたコードのクラスについて第2のQMSが取得される。第2のQMSは、コードのクラスを検証するための要件の第2のセットを定義する。ある場合では、要件の第1のセットは要件の第2のセットと異なる。要件の第2のセットは、ソースコードが:使用意図(例えば、医療デバイス内での又は医療デバイスとしての)を実施するため意図したように動作するかどうか;セキュリティの増強されたレベルを満たすかどうか;国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか;データプライバシーへの配慮を満たすかどうか;ならびに、コンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定することを含み得る。特定の場合では、要件の第2のセットが、ソースコードの使用意図が医療デバイス内であるか又は医療デバイスとしてのものであることを考慮して定義される。第2のQMSは、政府規制対象事業者などのソフトウェアプロバイダが良質なソースコードを提供する際に直面する、より特定の課題を扱うためにカスタマイズされており、例えば、ソフトウェアプロバイダがソフトウェア製品、サービス又はシステムに関連する法令及び規制要件内で消費者及び他の利害関係者のニーズを満たすことを保証するように定義される。これは、ソフトウェア製品、サービス、又はシステムが要件の第2のセットを満たすことをチェックするためのコードの妥当性確認と検証を含む。ソフトウェア開発システムとCI/CDシステムの間のこの物理的な分離により、このようなソフトウェアプラットフォームに特有の具体的な課題を扱うようCI/CDシステム及び第2のQMSをカスタマイズすることが可能となる。
[0081]ステップ425で、ツールの第1のパイプラインが、第2のQMSに従ってコード解析を実施するように構成される。コード解析は、静的解析を含む。ツールの第1のパイプラインを構成することは、以下を含む:(i)要件の第2のセットを満たすためにソースコードを解析できる静的解析ツールのセットを特定すること、(ii)要件の第2のセットを満たすために静的解析ツールのセットを実行する静的テストプロトコルを決定すること、及び(iii)静的テストプロトコルに従って第1のパイプラインのツール内に静的解析ツールのセットをプロビジョニングすること。図5は、特定されたツールのパイプラインと、ツールを実行するための静的テストプロトコルの例を示す。静的テストプロトコルは、パラメータ、静的解析ツールのセットの実行順序、及びソースコードの、要件の第2のセットへの準拠又は非準拠を決定するための基準を定義する。静的テストプロトコルは、最初にソースコードのプログラミング言語を解析及び検出することと、検出されたプログラミング言語に基づいて、以下のうち一又は複数を実施することを含む:コード及びコメントの発見、空行の発見、未使用コードの発見、重複コードの発見、及び差分についてのコードの比較。その後、静的テストは、以下のうち一又は複数を実施することを含む:コード内のエラー検出、コードのコーディング標準への適合性の決定、意味及び構文エラーの検出、ドメイン関連コーディングエラーの検出。その後、静的テストプロトコルは、以下のうち一又は複数を実施することを含む:セキュリティ脆弱性の特定、オープンソースコンポーネントの検出、及びコードが様々なサードパーティ規制(例えば、HIPAAなどの政府規制)に準拠しているかどうかの決定。最後に、静的テストプロトコルは、様々なツールの出力をコンパイルし、ソースコードが第2のQMSに従って検証されているかどうかを最終的に決定するためのメトリクスとレポートを生成する。図5に示したツール及び静的テストプロトコルは単なる例示であり、任意の数及びタイプの静的解析ツールが使用されてもよく、第2のQMSに従ってツールを実行しコード解析を実施する様々な静的テストプロトコルが構成され得ることを理解されたい。
[0082]ステップ430で、ツールの第2のパイプラインが、第2のQMSに従ってコード解析を実施するように構成される。コード解析は、動的解析を含む。ツールの第2のパイプラインを構成することは、以下を含む:(i)要件の第2のセットを満たすためにソースコードを解析できる動的解析ツールのセットを特定すること、(ii)要件の第2のセットを満たすために動的解析ツールのセットを実行する動的テストプロトコルを決定すること、及び(iii)動的テストプロトコルに従って第2のパイプラインのツール内に動的解析ツールのセットをプロビジョニングすること。図6は、特定されたツールのパイプラインと、ツールを実行するための動的テストプロトコルの例を示す。動的テストプロトコルは、パラメータ、動的解析ツールのセットの実行順序、及びソースコードの、要件の第2のセットへの準拠又は非準拠を決定するための基準を定義し得る。動的テストプロトコルは、最初にコード又は実行可能プログラムをランタイムで実行し、実行に基づいて、以下のうち一又は複数を実施することを含む:関数テスト、重要関数のテスト、特定機能の関数のテスト、他のシステムとの互換性及びインテグレーションのテスト及び/又はローカライズ、及び回帰分析。その後、動的テストは以下のうち一又は複数を実施することを含む:性能テスト、負荷及びストレステスト、及びボリューム及び耐久性テスト。その後、動的テストプロトコルは、セキュリティ脆弱性を特定し、コード又は実行可能プログラムのユーザビリティを決定することを含む。最後に、動的テストプロトコルは、様々なツールの出力をコンパイルし、ソースコードが第2のQMSに従って検証されているかどうかを最終的に決定するためのメトリクスとレポートを生成する。図6に示したツール及び動的テストプロトコルは単なる例示であり、任意の数及びタイプの動的解析ツールが使用されてもよく、第2のQMSに従ってツールを実行しコード解析を実施する様々な動的テストプロトコルが構成され得ることを理解されたい。
[0083]ステップ435で、ソースコードが第2のQMSに従って検証される。検証は、ソースコードの、要件の第2のセットへの準拠又は非準拠を決定するためにコード解析を実施することを含む。コード解析が評価されて、第2のQMS内で定義された要件の第2のセットに対するソースコードの妥当性確認(品質や準拠又は非準拠)が決定される。ソースコードが適切な品質と準拠性を有することが様々な解析技術によって実証された場合、ソースコードの有効性が決定されることとなる。コード解析が評価され、第2のQMS内で定義された要件の第2のセット(例えば、ユーザのニーズや、そもそも仕様が正しかったこと)に従って、ソースコードの有効性が決定される。
[0084]コード解析は、ステップ425及び430でそれぞれ構成されたツールの第1のパイプライン及び/又はツールの第2のパイプラインに従って実行される静的解析及び/又は動的解析を含み得る。静的解析は、ソースコードにおけるエラー、ハイリスクコンポーネント、予期しない機能、オープンソース機能、セキュリティ脆弱性、及びバージョンからバージョンへの変更点を決定し得る。動的解析は、基本機能、ローカライズ機能、性能メトリクス、及びセキュリティ脆弱性を決定し得る。ある場合では、静的解析が、ソースコードにおけるエラー、ハイリスクコンポーネント、予期しない機能、オープンソース機能、セキュリティ脆弱性、及びバージョンからバージョンへの変更点を決定する。ある場合では、動的解析が、基本機能、ローカライズ機能、性能メトリクス、及びセキュリティ脆弱性を決定する。ある場合では、オープンソース機能を決定することが、ホワイトソーシングプロセスを実行することを含む。ホワイトソーシングプロセスは、以下を含む:(i)ソースコードのオープンソース機能を特定すること、(ii)オープンソース機能に関連する許可又はライセンスを決定すること、及び(iii)許可又はライセンス、及び関連づけられたオープンソース機能を、データ構造にコンパイルすること。
[0085]ステップ440で、ソースコードが無効とされると、無効の通知がソフトウェア開発システムに提供される。通知は、無効化の一又は複数の理由に関する情報を含み得る。
[0086]ステップ445で、ソースコードが検証されると、ビルドプロセスが実行され、ソースコードから実行可能プログラムを生成して、実行可能プログラムのバージョン管理を実行する。バージョン管理は、静的解析に基づいてソースコードのバージョンを特定することと、特定されたバージョンのソースコードに基づいて、ソースコードを含む実行可能プログラムのバージョンを生成することを含み得る。バージョン管理は、新しい実行可能プログラムバージョンの起動及び可視化、及び/又は該ソースコードを含む旧い実行可能プログラムバージョンを管理することをさらに含み得る。
[0087]ステップ450で、実行可能プログラムがソフトウェアプラットフォーム上にデプロイされる。デプロイは以下を含む:(i)実行可能プログラムをコンテナにカプセル化すること、及び(ii)コンテナをソフトウェアプラットフォームの一又は複数のノードにデプロイすること。ある場合では、デプロイが、ソフトウェアプラットフォーム上に一又は複数のノードを作成して、コンテナ内の実行可能プログラムをホストすることをさらに含む。ある場合では、デプロイが、コンテナをラップするポッドインスタンスを生成することをさらに含む。ポッドインスタンスは、ソフトウェアプラットフォームの一又は複数のノード上にデプロイされる。
V.追加の考慮事項
[0088]本開示のいくつかの実施形態は、一又は複数のデータプロセッサを含むシステムを含む。いくつかの実施形態では、システムは、命令を含む非一時的コンピュータ可読記憶媒体であって、命令が、一又は複数のデータプロセッサ上で実行されると、一又は複数のデータプロセッサに、本明細書に開示された一又は複数の方法の一部又は全部及び/又は一又は複数のプロセスの一部又は全部を実行させる、非一時的コンピュータ可読記憶媒体を含む。本開示のいくつかの実施形態は、一又は複数のデータプロセッサに、本書に開示された一又は複数の方法の一部又は全部及び/又は一又は複数のプロセスの一部又は全部を実行させるように構成された命令を含む非一時的機械可読記憶媒体において、有形に具現化されたコンピュータプログラム製品を含む。
[0089]使用された用語及び表現は、限定ではなく説明の用語として使用され、そのような用語及び表現の使用において、示されて説明された特徴のいかなる均等物又はその一部も除外する意図はないが、特許請求の範囲に記載された発明の範囲内で様々な変更が可能であることが認識される。したがって、特許請求の範囲に記載された本発明は、実施形態及び任意の特徴によって具体的に開示されているが、本書に開示された概念の変更及び変形は、当業者によってあてにされてもよく、そのような変更及び変形は、添付の特許請求の範囲によって定義される本発明の範囲内にあると見なされることを理解されたい。
[0090]その後の説明は、好ましい例示的な実施形態のみを提供し、本開示の範囲、適用可能性又は構成を限定することを意図しない。むしろ、好ましい例示的な実施形態のその後の説明は、様々な実施形態を実装するための可能な説明を当業者に提供する。添付の特許請求の範囲に記載の趣旨及び範囲から逸脱することなく、要素の機能及び配置に様々な変更が加えられることができることが理解される。
[0091]実施形態の完全な理解を提供するために、以下の説明において具体的な詳細が与えられる。しかし、これらの具体的な詳細なしで実施形態が実施されることができることが理解されよう。例えば、回路、システム、ネットワーク、プロセス、及び他のコンポーネントは、実施形態を不必要に詳細に不明瞭にしないために、ブロック図形式のコンポーネントとして示されてもよい。他の例では、実施形態を不明瞭にすることを避けるために、周知の回路、プロセス、アルゴリズム、構造、及び技術が不必要な詳細なしに示されてもよい。

Claims (45)

  1. コンピュータ実装方法であって、
    継続的インテグレーション・継続的デプロイ(CI/CD)システムにおいて、ソフトウェア開発システムからソースコードを受け取ることであって、ソースコードが、ソフトウェア開発システムに関連する第1の品質管理システム(QMS)に従って既に検証されており、第1のQMSが、ソースコードを検証するための要件の第1のセットを定義する、ソースコードを受け取ること、
    CI/CDシステムによって、ソースコードのプロファイルを生成することであって、
    ソースコードの特性、及び前記コードによって動作するデータの特性を特定することと、
    ソースコードの特性及び前記ソースコードによって動作するデータの特性を用いて、プロファイルを構築することと
    を含む、ソースコードのプロファイルを生成すること、
    CI/CDシステムによって、プロファイルに基づいて、ソースコードをコードのクラスに分類すること、
    CI/CDシステムによって、コードのクラスに関連する第2のQMSを取得することであって、第2のQMSが、コードのクラスを検証するための要件の第2のセットを定義する、第2のQMSを取得すること、
    CI/CDシステムによって、第2のQMSに従ってソースコードを検証することであって、コード解析を実施して、ソースコードの、要件の第2のセットへの準拠又は非準拠を決定することを含む、ソースコードを検証すること、
    ソースコードが検証されると、CI/CDシステムによって、ビルドプロセスを実行してソースコードから実行可能プログラムを生成すること、
    CI/CDシステムによって、実行可能プログラムをコンテナにカプセル化すること、ならびに
    CI/CDシステムによって、ソフトウェアプラットフォームの一又は複数のノード上にコンテナをデプロイすること
    を含む、方法。
  2. ソフトウェア開発システムが、ネットワーク接続を介してCI/CDシステムから遠隔に位置しており、
    要件の第1のセットは要件の第2のセットと異なる、請求項1に記載のコンピュータ実装方法。
  3. 要件の第1のセットは、ソースコードが、使用意図に適合するかどうか、使用意図を実施するため意図したように動作するかどうか、セキュリティの基本レベルを満たすかどうかを決定するように定義される、請求項1に記載のコンピュータ実装方法。
  4. ソースコードの特性が、ソースコードコメント及びソースコードの範囲を解析することによって特定され、
    ソースコードの特性が、ソースコードを書くのに用いられる一又は複数のプログラミング言語、ソースコードの使用意図、及びソースコードの実行が意図される環境を含み、
    ソースコードによって動作するデータの特性が、ソースコードに入力されるデータのタイプ及び形式、ならびにソースコードによって生成されるデータのタイプ及び形式を含む、請求項1~3のいずれか一項に記載のコンピュータ実装方法。
  5. 分類することが、
    プロファイルを用いて、様々なクラスのコードに関連づけられた複数のプロファイルを保存するデータ構造をクエリすること、
    複数のプロファイルから、ソースコードの特性及びソースコードによって動作するデータの特性に一致する所定の数の特性を有するそれらしいプロファイルを特定すること、ならびに
    前記ソースコードを、それらしいプロファイルに関連するコードのクラスとして分類すること
    を含む、請求項1~4のいずれか一項に記載のコンピュータ実装方法。
  6. 分類することが、プロファイルを入力とする分類器を用いて、ソースコードの特性及びソースコードによって動作するデータの特性に基づいて、コードのクラスの推定を生成することを含む、請求項1~4のいずれか一項に記載のコンピュータ実装方法。
  7. 要件の第2のセットは、ソースコードが、使用意図を実施するため意図したように動作するかどうか、セキュリティの拡張レベルを満たすかどうか、国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか、データプライバシーへの配慮を満たすかどうか、ならびにコンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定するように定義される、請求項1~6のいずれか一項に記載のコンピュータ実装方法。
  8. 前記方法が、CI/CDシステムによって、ツールの第1のパイプラインを構成し、第2のQMSに従ってコード解析を実施することをさらに含み、コード解析が静的解析を含み、ツールの第1のパイプラインを構成することが、
    要件のセットを満たすためにソースコードを解析できる静的解析ツールのセットを特定すること、
    要件の第2のセットを満たすために静的解析ツールのセットを実行する静的テストプロトコルを決定すること、及び
    静的テストプロトコルに従って、ツールの第1のパイプライン内に静的解析ツールのセットをプロビジョニングすること、を含む、請求項1~7のいずれか一項に記載のコンピュータ実装方法。
  9. 前記方法が、CI/CDシステムによって、ツールの第2のパイプラインを構成し、第2のQMSに従ってコード解析を実施することをさらに含み、コード解析が動的解析を含み、ツールの第2のパイプラインを構成することが、
    要件の第2のセットを満たすためにソースコードを解析できる動的解析ツールのセットを特定すること、
    要件の第2のセットを満たすために静的解析ツールのセットを実行する動的テストプロトコルを決定すること、及び
    動的テストプロトコルに従って、ツールの第2のパイプライン内に動的解析ツールのセットをプロビジョニングすること、を含む、請求項8に記載のコンピュータ実装方法。
  10. 静的解析が、エラー、ハイリスクコンポーネント、予期しない機能、オープンソース機能、セキュリティ脆弱性、及びソースコードにおけるバージョンからバージョンへの変更点を決定し、動的解析が、基本機能、ローカライズ機能、性能メトリクス、及びセキュリティ脆弱性を決定する、請求項8又は9に記載のコンピュータ実装方法。
  11. オープンソース機能を決定することが、
    CI/CDシステムによって、ソースコードのオープンソース機能を特定すること、
    CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスを決定すること、及び
    CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスをデータ構造にコンパイルすること
    を含む、請求項10に記載のコンピュータ実装方法。
  12. CI/CDシステムによって、静的解析に基づいて、ソースコードのバージョンを特定すること、
    CI/CDシステムによって、特定されたソースコードのバージョンに基づいて、前記ソースコードを含む新しい実行可能プログラムバージョンを生成すること、ならびに
    CI/CDシステムによって、新しい実行可能プログラムバージョンの起動及び可視化、及び/又は前記ソースコードを含む旧い実行可能プログラムバージョンを管理すること
    をさらに含む、請求項1~11のいずれか一項に記載のコンピュータ実装方法。
  13. CI/CDシステムによって、ソフトウェアプラットフォーム上に一又は複数のノードを作成して、実行可能プログラムをコンテナ内にホストすることをさらに含む、請求項1~11のいずれか一項に記載のコンピュータ実装方法。
  14. ソースコードが無効とされると、CI/CDシステムによって、ソースコードが無効であるとの通知をソフトウェア開発システムに提供することを含み、通知が、ソースコード無効の一又は複数の理由に関する情報を含む、請求項1~13のいずれか一項に記載のコンピュータ実装方法。
  15. 要件の第2のセットが、ソースコードの使用意図が医療デバイス内であるか又は医療デバイスとしてのものであることを考慮して定義される、請求項1~14のいずれか一項に記載のコンピュータ実装方法。
  16. 継続的インテグレーション・継続的デプロイ(CI/CD)システムの一又は複数のデータプロセッサ、及び
    命令を含む非一時的コンピュータ可読記憶媒体
    を含むシステムであって、前記命令が、前記一又は複数のデータプロセッサ上で実行されると、前記一又は複数のデータプロセッサに、
    ソフトウェア開発システムからソースコードを受け取ることであって、ソースコードが、ソフトウェア開発システムに関連する第1の品質管理システム(QMS)に従って既に検証されており、第1のQMSが、ソースコードを検証するための要件の第1のセットを定義する、ソースコードを受け取ること、
    ソースコードのプロファイルを生成することであって、
    ソースコードの特性、及び前記コードによって動作するデータの特性を特定することと、
    ソースコードの特性及び前記ソースコードによって動作するデータの特性を用いて、プロファイルを構築することと
    を含む、ソースコードのプロファイルを生成すること、
    プロファイルに基づいて、ソースコードをコードのクラスに分類すること、
    コードのクラスに関連する第2のQMSを取得することであって、第2のQMSが、コードのクラスを検証するための要件の第2のセットを定義する、第2のQMSを取得すること、
    第2のQMSに従ってソースコードを検証することであって、コード解析を実施して、ソースコードの、要件の第2のセットへの準拠又は非準拠を決定することを含む、ソースコードを検証すること、
    ソースコードが検証されると、ビルドプロセスを実行してソースコードから実行可能プログラムを生成すること、
    実行可能プログラムをコンテナにカプセル化すること、ならびに
    ソフトウェアプラットフォームの一又は複数のノード上にコンテナをデプロイすること
    を含む動作を実施させる、システム。
  17. ソフトウェア開発システムが、ネットワーク接続を介してCI/CDシステムから遠隔に位置しており、
    要件の第1のセットは要件の第2のセットと異なる、請求項16に記載のシステム。
  18. 要件の第1のセットは、ソースコードが、使用意図に適合するかどうか、使用意図を実施するため意図したように動作するかどうか、セキュリティの基本レベルを満たすかどうかを決定するように定義される、請求項16に記載のシステム。
  19. ソースコードの特性が、ソースコードコメント及びソースコードの範囲を解析することによって特定され、
    ソースコードの特性が、ソースコードを書くのに用いられる一又は複数のプログラミング言語、ソースコードの使用意図、及びソースコードの実行が意図される環境を含み、
    ソースコードによって動作するデータの特性が、ソースコードに入力されるデータのタイプ及び形式、ならびにソースコードによって生成されるデータのタイプ及び形式を含む、請求項16~18のいずれか一項に記載のシステム。
  20. 分類することが、
    プロファイルを用いて、様々なクラスのコードに関連づけられた複数のプロファイルを保存するデータ構造をクエリすること、
    複数のプロファイルから、ソースコードの特性及びソースコードによって動作するデータの特性に一致する所定の数の特性を有するそれらしいプロファイルを特定すること、ならびに
    前記ソースコードを、それらしいプロファイルに関連するコードのクラスとして分類すること
    を含む、請求項16~19のいずれか一項に記載のシステム。
  21. 分類することが、プロファイルを入力とする分類器を用いて、ソースコードの特性及びソースコードによって動作するデータの特性に基づいて、コードのクラスの推定を生成することを含む、請求項16~19のいずれか一項に記載のシステム。
  22. 要件の第2のセットは、ソースコードが、使用意図を実施するため意図したように動作するかどうか、セキュリティの拡張レベルを満たすかどうか、国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか、データプライバシーへの配慮を満たすかどうか、ならびにコンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定するように定義される、請求項16~21のいずれか一項に記載のシステム。
  23. 動作が、
    CI/CDシステムによって、ツールの第1のパイプラインを構成し、第2のQMSに従ってコード解析を実施することをさらに含み、コード解析が静的解析を含み、ツールの第1のパイプラインを構成することが、
    要件のセットを満たすためにソースコードを解析できる静的解析ツールのセットを特定すること、
    要件の第2のセットを満たすために静的解析ツールのセットを実行する静的テストプロトコルを決定すること、及び
    静的テストプロトコルに従って、ツールの第1のパイプライン内に静的解析ツールのセットをプロビジョニングすること
    を含む、請求項16~22のいずれか一項に記載のシステム。
  24. 動作が、
    CI/CDシステムによって、ツールの第2のパイプラインを構成し、第2のQMSに従ってコード解析を実施することをさらに含み、コード解析が動的解析を含み、ツールの第2のパイプラインを構成することが、
    要件の第2のセットを満たすためにソースコードを解析できる動的解析ツールのセットを特定すること、
    要件の第2のセットを満たすために静的解析ツールのセットを実行する動的テストプロトコルを決定すること、及び
    動的テストプロトコルに従って、ツールの第2のパイプライン内に動的解析ツールのセットをプロビジョニングすること
    を含む、請求項23に記載のシステム。
  25. 静的解析が、エラー、ハイリスクコンポーネント、予期しない機能、オープンソース機能、セキュリティ脆弱性、及びソースコードにおけるバージョンからバージョンへの変更点を決定し、動的解析が、基本機能、ローカライズ機能、性能メトリクス、及びセキュリティ脆弱性を決定する、請求項23又は24に記載のシステム。
  26. オープンソース機能を決定することが、
    CI/CDシステムによって、ソースコードのオープンソース機能を特定すること、
    CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスを決定すること、及び
    CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスをデータ構造にコンパイルすること
    を含む、請求項25に記載のシステム。
  27. 動作が、
    CI/CDシステムによって、静的解析に基づいて、ソースコードのバージョンを特定すること、
    CI/CDシステムによって、特定されたソースコードのバージョンに基づいて、前記ソースコードを含む新しい実行可能プログラムバージョンを生成すること、ならびに
    CI/CDシステムによって、新しい実行可能プログラムバージョンの起動及び可視化、及び/又は前記ソースコードを含む旧い実行可能プログラムバージョンを管理すること
    をさらに含む、請求項16~26のいずれか一項に記載のシステム。
  28. 動作が、CI/CDシステムによって、ソフトウェアプラットフォーム上に一又は複数のノードを作成して、実行可能プログラムをコンテナ内にホストすることをさらに含む、請求項16~26のいずれか一項に記載のシステム。
  29. 動作が、ソースコードが無効とされると、CI/CDシステムによって、ソースコードが無効であるとの通知をソフトウェア開発システムに提供することをさらに含み、通知が、ソースコード無効の一又は複数の理由に関する情報を含む、請求項16~28のいずれか一項に記載のシステム。
  30. 要件の第2のセットが、ソースコードの使用意図が医療デバイス内であるか又は医療デバイスとしてのものであることを考慮して定義される、請求項16~29のいずれか一項に記載のシステム。
  31. 継続的インテグレーション・継続的デプロイ(CI/CD)システムの一又は複数のデータプロセッサに、動作を実施させるように構成された命令を含む、非一時的機械可読記憶媒体に有形に具現化されたコンピュータプログラム製品であって、前記動作が、
    ソフトウェア開発システムからソースコードを受け取ることであって、ソースコードが、ソフトウェア開発システムに関連する第1の品質管理システム(QMS)に従って既に検証されており、第1のQMSが、ソースコードを検証するための要件の第1のセットを定義する、ソースコードを受け取ること、
    ソースコードのプロファイルを生成することであって、
    ソースコードの特性、及び前記コードによって動作するデータの特性を特定することと、
    ソースコードの特性及び前記ソースコードによって動作するデータの特性を用いて、プロファイルを構築することと
    を含む、ソースコードのプロファイルを生成すること、
    プロファイルに基づいて、ソースコードをコードのクラスに分類すること、
    コードのクラスに関連する第2のQMSを取得することであって、第2のQMSが、コードのクラスを検証するための要件の第2のセットを定義する、第2のQMSを取得すること、
    第2のQMSに従ってソースコードを検証することであって、コード解析を実施して、ソースコードの、要件の第2のセットへの準拠又は非準拠を決定することを含む、ソースコードを検証すること、
    ソースコードが検証されると、ビルドプロセスを実行してソースコードから実行可能プログラムを生成すること、
    実行可能プログラムをコンテナにカプセル化すること、ならびに
    ソフトウェアプラットフォームの一又は複数のノード上にコンテナをデプロイすること
    を含む、コンピュータプログラム製品。
  32. ソフトウェア開発システムが、ネットワーク接続を介してCI/CDシステムから遠隔に位置しており、
    要件の第1のセットは要件の第2のセットと異なる、請求項31に記載のコンピュータプログラム製品。
  33. 要件の第1のセットは、ソースコードが、使用意図に適合するかどうか、使用意図を実施するため意図したように動作するかどうか、セキュリティの基本レベルを満たすかどうかを決定するように定義される、請求項31に記載のコンピュータプログラム製品。
  34. ソースコードの特性が、ソースコードコメント及びソースコードの範囲を解析することによって特定され、
    ソースコードの特性が、ソースコードを書くのに用いられる一又は複数のプログラミング言語、ソースコードの使用意図、及びソースコードの実行が意図される環境を含み、
    ソースコードによって動作するデータの特性が、ソースコードに入力されるデータのタイプ及び形式、ならびにソースコードによって生成されるデータのタイプ及び形式を含む、請求項31~33のいずれか一項に記載のコンピュータプログラム製品。
  35. 分類することが、
    プロファイルを用いて、様々なクラスのコードに関連づけられた複数のプロファイルを保存するデータ構造をクエリすること、
    複数のプロファイルから、ソースコードの特性及びソースコードによって動作するデータの特性に一致する所定の数の特性を有するそれらしいプロファイルを特定すること、ならびに
    前記ソースコードを、それらしいプロファイルに関連するコードのクラスとして分類すること
    を含む、請求項31~34のいずれか一項に記載のコンピュータプログラム製品。
  36. 分類することが、プロファイルを入力とする分類器を用いて、ソースコードの特性及びソースコードによって動作するデータの特性に基づいて、コードのクラスの推定を生成することを含む、請求項31~34のいずれか一項に記載のコンピュータプログラム製品。
  37. 要件の第2のセットは、ソースコードが、使用意図を実施するため意図したように動作するかどうか、セキュリティの拡張レベルを満たすかどうか、国際、国内、及び/又は地域の規制によって課せられる要件を満たすかどうか、データプライバシーへの配慮を満たすかどうか、ならびにコンテナやソフトウェアプラットフォーム環境に特有の性能要件を満たすかどうかを決定するように定義される、請求項31~36のいずれか一項に記載のコンピュータプログラム製品。
  38. 動作が、
    CI/CDシステムによって、ツールの第1のパイプラインを構成し、第2のQMSに従ってコード解析を実施することをさらに含み、コード解析が静的解析を含み、ツールの第1のパイプラインを構成することが、
    要件のセットを満たすためにソースコードを解析できる静的解析ツールのセットを特定すること、
    要件の第2のセットを満たすために静的解析ツールのセットを実行する静的テストプロトコルを決定すること、及び
    静的テストプロトコルに従って、ツールの第1のパイプライン内に静的解析ツールのセットをプロビジョニングすること
    を含む、請求項31~37のいずれか一項に記載のコンピュータプログラム製品。
  39. 動作が、
    CI/CDシステムによって、ツールの第2のパイプラインを構成し、第2のQMSに従ってコード解析を実施することをさらに含み、コード解析が動的解析を含み、ツールの第2のパイプラインを構成することが、
    要件の第2のセットを満たすためにソースコードを解析できる動的解析ツールのセットを特定すること、
    要件の第2のセットを満たすために静的解析ツールのセットを実行する動的テストプロトコルを決定すること、及び
    動的テストプロトコルに従って、ツールの第2のパイプライン内に動的解析ツールのセットをプロビジョニングすること
    を含む、請求項38に記載のコンピュータプログラム製品。
  40. 静的解析が、エラー、ハイリスクコンポーネント、予期しない機能、オープンソース機能、セキュリティ脆弱性、及びソースコードにおけるバージョンからバージョンへの変更点を決定し、動的解析が、基本機能、ローカライズ機能、性能メトリクス、及びセキュリティ脆弱性を決定する、請求項38又は39に記載のコンピュータプログラム製品。
  41. オープンソース機能を決定することが、
    CI/CDシステムによって、ソースコードのオープンソース機能を特定すること、
    CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスを決定すること、及び
    CI/CDシステムによって、オープンソース機能に関連する許可又はライセンスをデータ構造にコンパイルすること
    を含む、請求項40に記載のコンピュータプログラム製品。
  42. 動作が、
    CI/CDシステムによって、静的解析に基づいて、ソースコードのバージョンを特定すること、
    CI/CDシステムによって、特定されたソースコードのバージョンに基づいて、前記ソースコードを含む新しい実行可能プログラムバージョンを生成すること、ならびに
    CI/CDシステムによって、新しい実行可能プログラムバージョンの起動及び可視化、及び/又は前記ソースコードを含む旧い実行可能プログラムバージョンを管理すること
    をさらに含む、請求項31~41のいずれか一項に記載のコンピュータプログラム製品。
  43. 動作が、CI/CDシステムによって、ソフトウェアプラットフォーム上に一又は複数のノードを作成して、実行可能プログラムをコンテナ内にホストすることをさらに含む、請求項31~41のいずれか一項に記載のコンピュータプログラム製品。
  44. 動作が、ソースコードが無効とされると、CI/CDシステムによって、ソースコードが無効であるとの通知をソフトウェア開発システムに提供することをさらに含み、通知が、ソースコード無効の一又は複数の理由に関する情報を含む、請求項31~43のいずれか一項に記載のコンピュータプログラム製品。
  45. 要件の第2のセットが、ソースコードの使用意図が医療デバイス内であるか又は医療デバイスとしてのものであることを考慮して定義される、請求項31~44のいずれか一項に記載のコンピュータプログラム製品。
JP2023526939A 2020-11-10 2021-11-08 セキュアな環境におけるコードの継続的なインテグレーション及び開発 Pending JP2023550607A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063111991P 2020-11-10 2020-11-10
US63/111,991 2020-11-10
PCT/US2021/058409 WO2022103685A1 (en) 2020-11-10 2021-11-08 Continuous integration and development of code in a secure environment

Publications (1)

Publication Number Publication Date
JP2023550607A true JP2023550607A (ja) 2023-12-04

Family

ID=78709564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023526939A Pending JP2023550607A (ja) 2020-11-10 2021-11-08 セキュアな環境におけるコードの継続的なインテグレーション及び開発

Country Status (6)

Country Link
US (1) US20230305813A1 (ja)
EP (1) EP4244716A1 (ja)
JP (1) JP2023550607A (ja)
KR (1) KR20230098597A (ja)
CN (1) CN116420135A (ja)
WO (1) WO2022103685A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11849000B2 (en) * 2017-11-27 2023-12-19 Lacework, Inc. Using real-time monitoring to inform static analysis
US20230067222A1 (en) * 2021-08-25 2023-03-02 Security Compass Technologies Ltd. Automated management of security requirements and software supply chain during a software development lifecycle
US20230236802A1 (en) * 2022-01-27 2023-07-27 Accenture Global Solutions Limited Intelligent industry compliance reviewer
CN118069200B (zh) * 2024-04-19 2024-06-25 深圳市华磊迅拓科技有限公司 多语言编程方法以及系统

Also Published As

Publication number Publication date
KR20230098597A (ko) 2023-07-04
WO2022103685A1 (en) 2022-05-19
CN116420135A (zh) 2023-07-11
US20230305813A1 (en) 2023-09-28
EP4244716A1 (en) 2023-09-20

Similar Documents

Publication Publication Date Title
US11762656B2 (en) Service fabrication tool
US12014174B2 (en) Testing and remediating endpoint device compliance controls
US10402301B2 (en) Cloud validation as a service
US10572226B2 (en) Methods, systems, and portal using software containers for accelerating aspects of data analytics application development and deployment
US11663110B2 (en) Analysis to check web API code usage and specification
US10795709B2 (en) Systems and method for deploying, securing, and maintaining computer-based analytic environments
US20230305813A1 (en) Continuous integration and development of code in a secure environment
US9600244B1 (en) Cognitive editor
US11609985B1 (en) Analyzing scripts to create and enforce security policies in dynamic development pipelines
US20230359455A1 (en) Service orchestration within a distributed pod based system
US9513948B2 (en) Automated virtual machine provisioning based on defect state
Tran et al. A framework for automating deployment and evaluation of blockchain networks
US11748238B2 (en) Model-based biased random system test through rest API
Jensen Beginning Azure IoT Edge computing: extending the cloud to the intelligent edge
TWI626538B (zh) 基礎架構規則產生技術
EP4276665A1 (en) Analyzing scripts to create and enforce security policies in dynamic development pipelines
Jensen Beginning Azure IoT Edge Computing
US20240095337A1 (en) Security compliance for modular code
US20240095029A1 (en) Catalog for managing modular code
US20230035522A1 (en) Certification of computer pipeline results
US11500980B2 (en) Automated and auditable framework to control software component changes in an application build process
Kourtis et al. Towards Continuous Development for Quantum Programming in Decentralized IoT environments
Machado Assurance and Compliance of Security Policies in Cloud-Native Environments
Iyieke et al. An Adaptable Security-by-Design Approach for Ensuring a Secure Over the Air (Ota) Update in Modern Vehicles