JP2021105866A - プログラム開発支援システム及びプログラム開発支援方法 - Google Patents

プログラム開発支援システム及びプログラム開発支援方法 Download PDF

Info

Publication number
JP2021105866A
JP2021105866A JP2019237180A JP2019237180A JP2021105866A JP 2021105866 A JP2021105866 A JP 2021105866A JP 2019237180 A JP2019237180 A JP 2019237180A JP 2019237180 A JP2019237180 A JP 2019237180A JP 2021105866 A JP2021105866 A JP 2021105866A
Authority
JP
Japan
Prior art keywords
automatic execution
ticket
information
attribute
commit
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.)
Granted
Application number
JP2019237180A
Other languages
English (en)
Other versions
JP7246301B2 (ja
Inventor
若林 昇
Noboru Wakabayashi
昇 若林
真澄 川上
Masumi Kawakami
真澄 川上
浩資 大島
Kosuke Oshima
浩資 大島
旭宏 堀
Akihiro Hori
旭宏 堀
亮輔 安岡
Ryosuke Yasuoka
亮輔 安岡
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019237180A priority Critical patent/JP7246301B2/ja
Priority to PCT/JP2020/043165 priority patent/WO2021131435A1/ja
Priority to CN202080058404.XA priority patent/CN114258524A/zh
Priority to US17/640,491 priority patent/US11853198B2/en
Priority to EP20908115.7A priority patent/EP4083783A4/en
Publication of JP2021105866A publication Critical patent/JP2021105866A/ja
Application granted granted Critical
Publication of JP7246301B2 publication Critical patent/JP7246301B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project 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/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time 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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Software Systems (AREA)
  • Strategic Management (AREA)
  • Quality & Reliability (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】チケットの属性によって、自動実行処理を自動で変更することで自動実行処理を効率的に実施する。【解決手段】自動実行処理サーバを有するプログラム開発支援システムは、自動実行処理サーバが、ソースコードが登録されたことを示すコミット完了通知を受け付けると、ソースコードの情報とチケットの情報を含むコミット情報を取得し、コミット情報からチケット識別子を抽出し、抽出したチケット識別子に基づいてチケットの属性情報を取得し、自動実行処理を行うソースコードに対応する実行対象情報を所定の順序を自動実行キューへ格納し、前記取得したチケットの属性情報に基づいて前記自動実行キューの実行対象情報の順序を変更し、自動実行処理の対象となるソースコード及びテストケースを取得し、自動実行処理変更部で変更された実行対象情報の順序に基づいてソースコード及びテストケースを用いて自動実行処理を行う。【選択図】図1B

Description

本発明は、プログラム開発支援システム及びプログラム開発支援方法に関する。
プログラムの開発手法として、アジャイル開発のベストプラクティスの一つである継続的インテグレーションと呼ばれる手法が知られている。継続的インテグレーションを用いたプログラム開発では、ソースコードを管理するバージョン管理システムへ作成したソースコードを登録(コミット)した際に、ソースコードのビルドやテストといった作業を自動で実行する。これにより、早い段階での不具合検出を可能にすることで、開発の効率化や高品質化を実現することができる。このような継続的インテグレーションを実現するツールとしては、例えば、Jenkins(非特許文献1)などが知られている。
また、プログラム開発において、作業をタスクに分割してBTS(Bug Tracking System:バグ管理システム)のチケット(帳票)に割り当てて管理を行う開発手法が、チケット駆動開発として知られている。このようなチケットを管理するツールとしては、例えば、Redmine(非特許文献2)が知られている。非特許文献2の手法は、アジャイル開発との親和性が高いことから、上記の継続的インテグレーションと組み合わせて実践されることが多い。
上述の技術に関連する本技術分野の背景技術として、特許文献1が知られている。特許文献1には、継続的インテグレーションにおけるテストを効率的に実施することができるようにテストケースの選択を行うテストケースの選択方法及び選択システムが記載されており、継続的インテグレーションツールから渡された実施重要度及び実施時間閾値と、リポジトリに格納されたテストケースの重要度及び実行実績時間とから実行すべきテストケースを選択する手段が記載されている。
特開2010−134643号公報
Smart, John Ferguson(著)玉川 竜司(訳)、"Jenkins"、オライリー・ジャパン発行、2012年2月22日 Andriy Lesyuk 著、"Mastering Redmine"、Packt publishing発行、January 25, 2013
上記非特許文献1等に記載された継続的インテグレーションツール及び非特許文献2等に記載されたチケット管理ツールは組み合わせて実践されることがあり、連携するための仕組みが提供されている。
しかし、チケット管理ツールのチケット表示画面から、継続的インテグレーションツールで自動実行された結果の画面に遷移できるといった簡易的な連携のみのため、チケットに記載された内容に応じて自動実行を行いたい場合、事前に手動で設定する必要がある。
例えば、コミットが多くなると、自動実行処理の待ち行列が発生するため、優先順位が高いチケットに関する処理が後回しにならないような設定を、事前に手動で設定する必要がある。また、作業の内容によっては、自動実行の範囲や頻度を変えることで効率化を図ることができるが、あらゆる場合の状況を考慮した、範囲や頻度の設定を複数用意する必要がある。
また、特許文献1では、継続的インテグレーションツールから渡された実施の重要度及び実施時間の閾値と、リポジトリに格納されたテストケースの重要度及び実行実績時間とから実行すべきテストケースを選択する手段が記載されている。
これにより、継続的インテグレーションにおけるテストを効率的に実施することができるようにテストケースの選択を行うことができる。しかし、テストケースの重要度を基に判断しているため、テスト以外のビルドや静的解析(コーディングチェック)、レビューなどについては考慮されていない。
また、特許文献1では、判定している属性がテストケースの重要度のみのため、同じ重要度の場合の優先付けはできない。更に、チケットの属性となる期日や担当者、ステータスなどの属性は考慮されていない。そのため、テスト以外の処理についての優先度付けや、同じ重要度の場合の優先付けについて、チケットの属性情報に応じて、あらゆる場合の状況を考慮した設定を複数用意する必要がある。
そこで、本発明は、チケットの属性によって、自動実行処理の内容を自動的に変更することで自動実行処理を効率的に実施することができるプログラム開発支援システム及びプログラム開発支援方法を提供する。
本発明は、プロセッサとメモリと通信インターフェースを有する自動実行処理サーバを有するプログラム開発支援システムであって、前記自動実行処理サーバは、ソースコードが登録されたことを示すコミット完了通知を受け付けると、前記ソースコードの情報と前記ソースコードに対応するチケットの情報を含むコミット情報を取得するコミット情報取得部と、前記コミット情報から前記コミット完了通知に対応するチケット識別子を抽出する連携部と、前記抽出したチケット識別子に基づいて前記チケットの属性情報を取得する属性情報取得部と、自動実行処理を行う前記ソースコードに対応する実行対象情報を所定の順序で格納する自動実行キューと、前記取得したコミット情報からソースコードを指定する情報を実行対象情報として生成して前記自動実行キューへ投入し、前記取得したチケットの属性情報に基づいて前記自動実行キューの実行対象情報の順序を変更する自動実行処理変更部と、前記自動実行処理の対象となるソースコード及びテストケースを取得する対象成果物取得部と、前記自動実行処理変更部で変更された実行対象情報の順序に基づいて前記対象成果物取得部で取得した前記ソースコード及びテストケースを用いて自動実行処理を行う自動実行処理部と、前記自動実行処理部で実行した結果を通知する通知部と、を有する。
本発明によれば、チケットの属性情報によって、自動実行処理を自動的に変更することが可能となり、継続的インテグレーションにおける自動実行処理を効率的に実施することができる。
上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本発明の実施例1を示し、プログラム開発支援システムの構成の一例を示すブロック図である。 本発明の実施例1を示し、自動実行処理サーバの構成の一例を示すブロック図である。 本発明の実施例1を示し、チケットの一例を示す図である。 本発明の実施例1を示し、プログラム開発支援システムで行われる処理の一例を示すフローチャートである。 本発明の実施例1を示し、プログラム開発支援システムで行われる処理の一例を示すフローチャートである。 本発明の実施例1を示し、プログラム開発支援システムで行われる処理の一例を示すフローチャートである。 本発明の実施例1を示し、ユースケースの一例を説明する図である。 本発明の実施例2を示し、ユースケースの一例を説明する図である。
以下、本発明の実施形態を添付図面に基づいて説明する。
本実施例は、本発明のプログラム開発支援システム及びプログラム開発支援方法の1実施例である。以下、本実施例を図1Aから図6を用いて説明する。
図1Aは本実施例におけるプログラム開発支援システムの構成を示すブロック図である。図1Bは、自動実行処理サーバの構成の一例を示すブロック図である。図2は本実施例におけるチケットの記載内容を示す図である。図3は本実施例における自動実行処理システムにおける処理手順の概要を示すフローチャートである。図4は本実施例におけるキュー順序変更処理の詳細手順を示すフローチャートである。図5は本実施例における自動実行設定の詳細手順を示すフローチャートである。図6は本実施例における一つのチケットに対して複数の担当者がソースコードを修正していくユースケースを説明する図の例である。
図1Aにおいて、100はソースコードやソースコードに対応するテストケース(実行環境など)をバージョン単位で管理するバージョン管理サーバであり、110はプログラム作成に係る作業や不具合に係る内容をチケット(帳票)として管理するチケット管理サーバであり、120は前記バージョン管理サーバ100にソースコードが登録(コミット)された際に、ソースコードのビルドやテスト等のプログラム作成に係る作業を自動で実行する自動実行処理サーバであり、300はソースコードの生成を行う開発クライアントである。
本実施例におけるプログラム開発支援システムは、これらのバージョン管理サーバ100、チケット管理サーバ110、自動実行処理サーバ120、開発クライアント300から構成される。
101は前記バージョン管理サーバ100で管理するソースコードやテストケースを格納する成果物データベースである。102は前記成果物データベース101のソースコードやテストケースを登録し、検索などの管理をする管理部である。本実施例におけるバージョン管理サーバ100は、これら成果物データベース101及び管理部102で構成される。
また、111は前記チケット管理サーバ110で管理するチケットを格納するチケットデータベースである。112は前記チケットデータベース111のチケットを登録、検索などの管理をする管理部である。本実施例におけるチケット管理サーバ110は、これらチケットデータベース111及び管理部112で構成される。なお、バージョン管理サーバ100及びチケット管理サーバ110は、市販又はOSS(Open Source Software)の既存ツールを用いてもよい。
また、121は前記バージョン管理サーバ100からコミットされた情報を取得するコミット情報取得部である。122はコミット情報取得部121で取得したコミット情報から該コミットに対応するチケットのID(又は番号)を抽出して前記バージョン管理サーバ100と前記チケット管理サーバ110とを連携する連携部である。123は抽出したチケットIDのチケットについて前記チケット管理サーバ110からチケットの属性情報を取得する属性情報取得部である。
124は取得したチケットの属性情報に基づいて、自動実行キュー127に格納された実行対象情報の順序を変更する自動実行処理変更部である。125は自動実行の対象となるソースコード及びテストケースを前記バージョン管理サーバ100から取得する対象成果物取得部である。
本実施例では、自動実行を行う一つの処理を実行対象情報とし、自動実行キュー127には1以上の実行対象情報が格納される。実行対象情報には、自動実行処理を行うソースコードとテストケースを指定する情報が含まれる。自動実行処理変更部124は、自動実行キュー127に格納された実行対象情報の実行順序を制御する。なお、実行対象情報は、ソースコードとテストケースを指定する情報に限定されるものではなく、ソースコードとテストケースの実体であってもよい。
126は自動実行処理変更部124で決定された実行対象情報の処理順序に基づいて対象成果物取得部125で取得した対象のソースコード及びテストケースを用いて自動実行処理を行う自動実行処理部である。なお、自動実行処理部126は、前記従来例と同様に、ソースコードのビルドとテストケースによるテストと、静的解析及びレビューを実施する。127は1以上の実行対象情報を所定の順序でキュー内を管理する自動実行キューである。128は自動実行処理部で実行した結果をメール等で関係者に通知する通知部である。
本実施例における自動実行処理サーバ120は、これらコミット情報取得部121、連携部122、属性情報取得部123、自動実行処理変更部124、対象成果物取得部125、自動実行処理部126、自動実行キュー127、通知部128で構成される。
310は開発担当者が操作する入力デバイス(図示省略)から受け付けた情報からソースコードの生成等を行う開発ツールである。320は、生成されたソースコードやソースコードに付随する情報(テストケース等)を格納するソース格納部である。
本実施例における開発クライアント300は、これら開発ツール310とソース格納部320から構成される。
図1Bは、自動実行処理サーバ120の構成の一例を示すブロック図である。自動実行処理サーバ120は、プロセッサ11と、メモリ12と、通信インターフェース13と、入出力装置14と、ストレージ装置15を含む計算機である。
入出力装置14は、マウスやキーボードあるいはタッチパネルなどの入力装置と、ディスプレイなどの出力装置を含む。通信インターフェース13は、ネットワーク80を介して、バージョン管理サーバ100やチケット管理サーバ110や開発クライアント300と通信を行う。
メモリ12には、コミット情報取得部121、連携部122、属性情報取得部123、自動実行処理変更部124、対象成果物取得部125、自動実行処理部126及び通知部128がロードされてプロセッサ11によって実行される。また、メモリ12には自動実行処理部126が管理する自動実行キュー127が設定される。
プロセッサ11は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ11は、自動実行処理プログラムに従って処理を実行することで自動実行処理部126として機能する。他のプログラムについても同様である。更に、プロセッサ11は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
図2は、前記チケット管理サーバ110で管理するチケットの画面表示例であり、チケットの属性を示す。
図2において、201は「作業」や「不具合」などチケットの種類を示す種類属性である。202はチケットのタイトルを示すタイトル属性である。203はチケットの「作業詳細」や「不具合詳細」を示す内容説明属性である。
204はチケットの担当者を示す担当者属性である。205は「新規」や「作業中」「作業完了」といったチケットの状況、状態を示すステータス属性である。206は作業や不具合等のチケットで対応する処理の優先度を示す優先度属性である。
207は作業や不具合対応の期日を示す期日属性である。208はチケットの一段上の階層チケットである親チケットの情報を示す親チケット属性である。209は別のチケットのステータス属性が「終了」となっていないと着手できないといった作業順序としての関連や、内容が重複するといった関連するチケットがあることを示すチケット属性である。
210は工程管理上、全工程が終了するまでの作業の連なりのうち、並行して作業してもこれ以上作業時間を短くすることができない作業の連なり(クリティカルパス)のチケットかどうかを示すクリティカルパス属性である。211はチケットに示す作業内容の状況の報告やチケットの属性の変更履歴を示す変更履歴属性である。
なお、図2では、これらの属性がチケット画面上に明記されているが、チケット画面上に明記されていなくてもよい。例えばクリティカルパス属性210は、チケットの属性データとして表示されてもよい。
ここで本実施例の処理概略について図1及び図3のフローチャートを用いて説明する。まずチケット管理サーバ110にて発行されたチケットに対し、開発クライアント300を使用する担当者は発行されたチケットの内容に従って、プログラム作成(ソースコード作成又は修正)を行う。
その後、担当者はバージョン管理サーバ100を用いて該ソースコードを登録(コミット)する。その際、コミットログなどに対応するチケットのチケット番号(ID)などを記載し、該ソースコードがどのチケットに対するものかを明記する。バージョン管理サーバ100は、ソースコードのコミットが完了すると、自動実行処理サーバ120にコミットが完了したことを示す通知(コミット完了通知)を送信する。
自動実行処理サーバ120は、コミット完了通知を受信したことを契機として、コミット情報取得部121にて、該コミットの情報(コミット情報)をバージョン管理サーバ100から取得する(ステップS301)。ここで本実施例におけるコミットの情報とは、コミットされたソースコードのファイル名(又は識別子)やコミットログ(チャートの識別子)やテストケースを含むコミット時の情報である。
連携部122にて、前記コミット情報取得部121で取得したコミット情報に含まれる対応チケット番号(又はチケットID)などのチケットの情報を取得し、該コミットと対応するチケットをチケット管理サーバ110に選定させる(ステップS302)。
その後、属性情報取得部123にて、対応するチケットのチケット属性の情報をチケット管理サーバ110から取得する(ステップS303)。ここで本実施例におけるチケット属性は、図2で示したチケット属性(201〜210)である。
自動実行処理変更部124にて、取得したチケット属性情報に基づいて、自動実行キュー127のキュー順序を変更する(ステップS304)。
自動実行処理変更部124は、まず、取得したコミット情報からソースコードとテストケースを指定する情報を実行対象情報として生成して自動実行キュー127へ投入する。そして、自動実行処理変更部124は、取得したチケット属性情報に基づいて、実行対象情報の順序を変更又は設定する(ステップS305)。
自動実行処理部126にて、上記ステップS303で取得したチケット属性情報のうち期日属性207を用いて、過去の自動実行処理の実績時間から期日内に実行対象情報の自動実行が完了するか否かを判定し(ステップS306)、期日内に自動実行が完了する場合は、前記ステップS305で設定した順序に従い自動実行キュー127内の実行対象情報の自動処理を実行する(ステップS307)。
なお、自動実行処理部126は、ソースコードとテストケースの組み合わせ(実行対象情報)毎に、実行時間の実績をストレージ装置15へ格納しておき、当該実行対象情報の自動実行が過去の実行時間の実績から期日属性207までに完了可能か否かを判定する。なお、過去の実行時間の実績は、実行時間の最大値や平均値など予め設定した統計情報を用いることができる。
一方、自動実行処理部126が期日内に完了しないと判定した実行対象情報については、期日までに完了しない旨のメッセージを含めたアラート情報を設定し(ステップS308)、自動処理は実行しない。その後、通知部128にて、ステップS307で実行した結果又はステップS308で設定したアラートをメールやメッセージ等の通知手段を用いて予め設定された宛先(例えば、開発クライアント300)に通知し(ステップS309)、一連の処理を終了する。
次に図3で示したフローチャートのうち、キュー順序変更処理(ステップS304)の詳細手順について、図4のフローチャートを用いて説明する。キュー順序変更処理は、自動実行処理変更部124で実行する。この処理は、コミット完了通知に対応するソースコードに対応するチケットの情報について実施される。
自動実行処理変更部124は、チケット属性情報取得(ステップS303)で取得したチケット属性情報のうち優先度属性206が「大(又は高)」など高い優先度か否かを判定する(ステップS401)。自動実行処理変更部124は、優先度属性206の値が所定の閾値Thp以上であれば優先度が高いと判定してステップS404へ進む。
一方、優先度属性206の優先度が高くない場合、自動実行処理変更部124は、当該チケット属性情報の期日属性207に対して、期日までの日数が所定の閾値Thd以内か否かを判定する(ステップS402)。ここで閾値Thdは予め決めた設定値とする。
自動実行処理変更部124は、ステップS402にて、期日属性207までの日数が閾値Thdを超える場合、期日までに余裕があると判断し、ステップS403に移行する。ステップS403では、自動実行処理変更部124が、クリティカルパス属性210に対してフラグが設定されているか否かを判定する。
自動実行処理変更部124は、フラグが設定されていない場合は、クリティカルパスのチケットではないと判定し、最終的にキューの順序を変更する必要がないチケットだと判定して一連の処理を終了する。
自動実行処理変更部124は、ステップS401において、優先度属性206が閾値Thp以上の高い優先度であった場合、又は、ステップS402において、期日までの残日数が閾値Thd以内であった場合、すなわち期日までに時間がないと判断した場合、又は、ステップS403において、クリティカルパスのチケットだと判定した場合、自動実行キュー127内の実行対象情報の順序を変更する必要があると判定してステップS404へ進む。
自動実行処理変更部124は、第1ソートキーを「優先度」の高い順に設定し(ステップS404)、第2ソートキーを「期日」までの残日程が短い順に設定し(ステップS405)、第3ソートキーを「クリティカルパス」かどうかに設定(ステップS406)する。そして、自動実行処理変更部124は、第1から第3ソートキーにより自動実行キュー127内の実行対象情報をソートし、自動実行キュー127の実行対象情報の順序を変更し(ステップS407)、一連の処理を終了する。
すなわち、自動実行処理変更部124は、コミット完了通知のソースコードに対応するチケットの属性情報に応じて、実行対象情報の実行順序を変更するか否かを決定して、変更する場合には、チケット属性情報に応じて実行対象情報を所定の順序でソートする。なお、上記実施例では優先度と、期日と、クリティカルパスで実行対象情報の実行順序を変更する例を示したが、これに限定されるものではない。実行対象情報をソートする要素は、チケット属性情報から少なくともひとつを選択しておけばよい。
次に図3で示したフローチャートのうち、自動実行設定(ステップS305)の詳細手順について、図5のフローチャートを用いて説明する。
自動実行設定は、自動実行処理変更部124で実行する。自動実行処理変更部124は、チケット属性情報取得(ステップS303)で取得したチケット属性情報のうち親チケット属性208を用いて、親チケットへのコミットであったか否かを判定する(ステップS501)。
親チケットへのコミットでなかった場合、自動実行処理変更部124は、担当者属性204からチケットの担当者を抽出する。次に、自動実行処理変更部124は、チケット管理サーバ110から該担当者属性204に対応するチケットを抽出させて、未完了の担当チケット数と、過去の担当不具合チケット数の情報を取得する。また、自動実行処理変更部124は、バージョン管理サーバ100から該担当者のコミット件数の情報を取得し、いずれかの数値が予め定めた閾値Thcより大きいか、又は、履歴属性211から担当者の変更情報を取得し、担当者の変更日時と現在日時の差分が予め定めた閾値Thcより小さいかを判定する(ステップS502)。
自動実行処理変更部124は、上記チケット数又はコミット件数が閾値Thcより小さい場合、かつ、担当者が変わったばかりではない場合、ステータス属性205の情報からステータスが「作業中」か「作業完」を判定する(ステップS503)。
ステータスが「作業中」であった場合、自動実行処理変更部124は、自動実行処理の内容が効率的に行われる設定にし(ステップS504)、一連の処理を終了する。ここで自動実行処理が効率的に行われる設定とは、例えば、ビルドやテスト実行の対象ソースコードをコミットしたファイルのみに限定し、レビュー実施は不要とし、また、同件不具合の横展開の修正内容が含まれるかのチェックをしない、開発責任者へ自動実行結果のメール通知をしない、といった設定にすることである。
上記ステップS501にて親チケットへのコミットと判断した場合、自動実行処理変更部124は、子チケットの内容を親チケットへ統合(マージ)する作業プロセス上で重要なコミットだったと判定できるため、自動実行処理の内容が重点的に行われる設定にし(ステップS505)、一連の処理を終了する。
同様に、ステップS502にて、チケット数又はコミット件数が閾値Thcより大きい場合、又は、担当者が変わったばかりの場合、自動実行処理変更部124は、重点的にテスト等が必要であると判定し、自動実行処理が重点的に行われる設定にし(ステップS505)、一連の処理を終了する。
更に、ステップS503にて、ステータスが「作業完」であった場合、自動実行処理変更部124は、自動実行処理が重点的に行われる設定にし(ステップS505)、一連の処理を終了する。
ここで自動実行処理が重点的に行われる設定とは、例えば、ビルドやテスト実行対象を対象製品の全ソースコードにし、レビュー実施は必須とし、同件不具合の横展開修正内容が含まれるかもチェックし、開発責任者へ自動実行結果のメール通知を行う、といった設定にすることである。
図4及び図5で示した処理により、自動実行処理変更部124は、コミット完了通知に対応するチケットの属性によって、自動実行処理を自動的に変更することで、必要性に応じて自動実行処理を効率的に実施することができる。
なお、上記では自動実行処理変更部124が、親チケット属性208と、担当者属性204と、履歴属性211に基づいて自動実行処理の内容を決定する例を示したが、これに限定されるものではない。自動実行処理変更部124は、チケット属性情報の少なくともひとつの属性に基づいて自動実行処理の内容を決定してもよい。
次に図6を用いて、本発明の一実施例を示す。本実施例では、一つのチケットに対して複数の担当者がソースコードを修正していく場合の例である。図6はそのユースケースを示す図である。
図6に示すユースケースでは、種類属性201が「不具合」であるチケット601に対して、不具合の修正を担当者Aと担当者Bの二人が開発クライアント300で修正する場合を示す。なお担当者Aは、担当しているチケットで未完了のチケット数は少なく、過去に担当した不具合チケット数も少なく、コミット件数も少ない担当者である。担当者Bも担当者Aと同様に、担当しているチケットで未完了のチケット数は少なく、過去に担当した不具合チケット数も少なく、コミット件数も少ない担当者の場合である。
不具合の発見者によりチケット管理サーバ110に不具合のチケット601が入力される。不具合の対応者として最初に担当者Aが割り当てられる。担当者Aは、チケット601の記載内容を元に原因究明を行い、開発クライアント300で不具合の修正を行う。
その際、チケット601のステータス属性は、チケット管理サーバ110によって「作業中」(又は「修正中」)に切り替えられる。なお、図6ではチケット601の属性として種類属性201と担当者属性204とステータス属性205のみ記載しているが、図2で示したその他の属性も含まれている。
図6で示すユースケースでは、不具合の修正箇所が広範囲にわたる場合であり、担当者Aの担当する範囲でも複数回に分けて修正を実施する場合である。そのため、修正したソースコードのコミットも複数回(602〜604)に分かれている。
担当者Aは、開発クライアント300を用いて、まず初めの修正を行って修正したソースコードをバージョン管理サーバ100にコミットする(コミット602)。自動実行処理サーバ120は、該コミット602がコミット(コミット完了通知の受信、以下同様)されたことを契機に、図3から図5で示した処理を実施する。以下では、図6に記載のユースケースに係る処理部分のみ説明する。
コミット602のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットではないので、ステップS501の判定で、NOとなる。
ステップS502の担当者及び履歴情報の判定ステップでは、本ユースケースでは担当者Aの未完了の担当チケット数と、過去の担当不具合チケット数及びコミット件数は少なく、閾値Thc以内となるため、NOの判定となる。
次に、自動実行処理サーバ120は、ステップS503の判定でステータス属性205が「作業中」のため、ステップS504に移行し、効率実行の設定となる。この後の処理により、コミット602では、自動実行処理が効率的な設定で実行されることになる。
図3におけるステップS309では、開発責任者へのメール通知は行われない。次に、図6において、担当者Aは開発クライアント300で、次の修正を行い修正したソースコードをバージョン管理サーバ100にコミットする(コミット603)。該コミット603がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施するが、前記コミット602と同様の処理になる。
次に、担当者Aは開発クライアント300を使用して、担当している部分としては最後の修正を行い修正したソースコードをバージョン管理サーバ100にコミットする(コミット604)。
該コミット604がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施するが、前記コミット602と同様のフローになる。担当者Aとしては最後の修正が終わったため、開発クライアント300からチケット601の担当者を担当者Bに設定する(チケット601a)。
担当者Bは、チケット601aの記載内容を元に原因究明を行い、開発クライアント300で不具合の修正を行う。図6で示すユースケースでは、不具合の修正箇所が広範囲にわたる場合であり、担当者Bの担当する範囲でも複数回に分けて修正を実施する場合である。
そのため、修正したソースコードのコミットも担当者Aと同様に複数回に分かれている。担当者Bは、まず初めの修正を行い開発クライアント300で修正したソースコードをバージョン管理サーバ100にコミットする(コミット605)。
該コミット605がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図6に記載のユースケースに係る処理部分のみ説明する。
コミット605のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットではないので、ステップS501の判定で、NOとなる。
ステップS502の担当者及び履歴情報の判定ステップでは、本ユースケースでは担当者Bの未完了の担当チケット数、過去の担当不具合チケット数及びコミット件数は少なく、閾値Thc以内となるため、自動実行処理サーバ120の判定はNOとなる。
ステップS503の判定でステータス属性が「作業中」のため、自動実行処理サーバ120はステップS504に移行し、効率実行の設定となる。この後の処理により、コミット602では、自動実行処理が効率的な設定で実行することになる。図3におけるステップS309では、開発責任者へのメール通知は行われない。
次に、担当者Bは次の修正を行い、開発クライアント300で修正したソースコードをバージョン管理サーバ100にコミットする(コミット606)。該コミット606がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施するが、前記コミット605と同様のフローになる。
次に、担当者Bは開発クライアント300で最後の修正を行う。この際、コミットする前に、担当者Bは開発クライアント300でチケットのステータスを「作業完」に変更する(チケット601b)。
担当者Bは開発クライアント300を用いてチケット601bに対して、修正したソースコードをバージョン管理サーバ100にコミットする(コミット607)。該コミット607がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図6に記載のユースケースに係る処理部分のみ説明する。
コミット605のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットではないので、自動実行処理サーバ120は、ステップS501の判定をNOとする。ステップS502の担当者及び履歴情報の判定ステップでは、本ユースケースでは担当者Bの未完了の担当チケット数、過去の担当不具合チケット数及びコミット件数は少なく、閾値Thc以内となるため、自動実行処理サーバ120の判定はNOとなる。
ステップS503の判定でステータス属性が「作業完」のため、自動実行処理サーバ120は、ステップS505に移行し、重点実行の設定となる。この後の処理により、コミット607では、自動実行処理が重点的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール等の通知が行われる。
これにより、作業中であるコミットでは、チケットの属性情報を基に効率的な自動実行が行われ、作業完であるコミットでは、最終的な作業として、重点的な自動実行が行われることとなり、全体として効率的な自動実行処理を行うことができる。
上記により、自動実行処理サーバ120では、チケットの属性によって、自動実行処理の内容を自動的に変更することが可能となり、継続的インテグレーションにおける自動実行処理を効率的に実施することができる。
なお、上記実施例1では、バージョン管理サーバ100と、チケット管理サーバ110が独立した構成を示したが、これに限定されるものではなく、バージョン管理サーバ100とチケット管理サーバ110が一つの計算機で構成されてもよい。
実施例2は、前記実施例1で示したプログラム開発支援システム及びプログラム開発支援方法において、1つの機能に対して、複数のサブ機能に分けて、複数の担当者でソースコードを作成していく場合の1実施例である。
なお、実施例1で示したブロック図、チケットの説明や、フローチャートは、図1及び図2から図5で示したものと同じであるので、それぞれの説明は省略する。以下、図7を用いて、本実施例におけるユースケースについて説明する。図7は、実施例2のユースケースの一例を説明する図である。
図7に示すユースケースでは、親チケット700が1つの機能を表しており、親チケット700の複数の子チケット710、720、730がそれぞれサブ機能A、サブ機能B,サブ機能Cを作成するためのチケットとなっている。そして、子チケット710、子チケット720、子チケット730のそれぞれについて担当者A、担当者B、担当者Cが割り当てられている場合である。
なお、親チケット700か子チケット710、720、730であるかは親チケット属性208により判定される。また、本実施例では、親チケットのステータスが「作業完」になるまでは、全ての子チケットは「作業中」のままであるとする。
ここで、前記実施例1と同様に、担当者A、担当者B、担当者Cは、担当しているチケットで未完了のチケット数は少なく、過去に担当した不具合チケット数も少なく、コミット件数も少ない担当者である場合である。
親チケット700及び子チケット710、子チケット720、子チケット730がそれぞれチケット管理サーバ110に入力される。その際、子チケット710の担当者属性204に担当者Aが設定され、子チケット720の担当者属性204に担当者Bが設定され、子チケット730の担当者属性204に担当者Cが設定される。
担当者Aは、チケット710の記載内容を元にサブ機能Aのプログラム作成を行う。図7で示すユースケースでは、サブ機能の作成が広範囲にわたる場合であり、担当者Aの担当する範囲でも複数回に分けてプログラム作成を実施する場合である。
そのため、作成したソースコードのコミットも複数回に分かれている。担当者Aはまず初めのソースコードの作成を開発クライアント300で行って作成したソースコードをバージョン管理サーバ100にコミットする(コミット711)。
該コミット711がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図7に記載のユースケースに係る処理部分のみ説明する。
コミット711のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットではないので、自動実行処理サーバ120は、ステップS501の判定をNOとする。
ステップS502の担当者及び履歴情報の判定ステップでは、本ユースケースでは担当者Aの未完了の担当チケット数、過去の担当不具合チケット数及びコミット件数は少なく、閾値Thc以内となるため、自動実行処理サーバ120の判定はNOとなる。
ステップS503の判定でステータス属性が「作業中」のため、自動実行処理サーバ120は、ステップS504に移行し、効率実行の設定となる。この後の処理により、コミット711では、自動実行処理が効率的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール通知は行われない。
次に、担当者Aは次の機能作成を行って、開発クライアント300で作成したソースコードをバージョン管理サーバ100にコミットする(コミット712)。該コミット712がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施するが、前記コミット711と同様の処理になる。本実施例では、コミット712でサブ機能Aの作成は完了したものとする。
次に、担当者Aはサブ機能Aが作成できたため、開発クライアント300を用いて親チケット700に対して、作成した全ソースコードをバージョン管理サーバ100にコミットする(コミット713)。
該コミット713がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図7に記載のユースケースに係る処理部分のみ説明する。
コミット713のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットとなるため、自動実行処理サーバ120は、ステップS501の判定をYESとして、ステップS505に移行し、重点実行の設定となる。この後の処理により、コミット713では、自動実行処理が重点的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール通知が行われる。
担当者Bは、チケット720の記載内容を元にサブ機能Bのプログラム作成を行う。図7で示すユースケースでは、サブ機能の作成が広範囲にわたる場合であり、担当者Bの担当する範囲でも複数回に分けてプログラム作成を実施する場合である。そのため、作成したソースコードのコミットも複数回に分かれている。
担当者Bはまず初めのソースコード作成を行い、開発クライアント300で作成したソースコードをバージョン管理サーバ100にコミットする(コミット721)。該コミット721がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図7に記載のユースケースに係る処理部分のみ説明する。
コミット721のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットではないので、自動実行処理サーバ120は、ステップS501の判定をNOとする。ステップS502の担当者及び履歴情報の判定ステップでは、本ユースケースでは担当者Bの未完了の担当チケット数、過去の担当不具合チケット数及びコミット件数は少なく、閾値Thc以内となるため、自動実行処理サーバ120の判定はNOとなる。
ステップS503の判定でステータス属性が「作業中」のため、自動実行処理サーバ120は、ステップS504に移行し、効率実行の設定となる。この後の処理により、コミット721では、自動実行処理が効率的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール通知は行われない。
次に、担当者Bは次の機能作成を行い、開発クライアント300で作成したソースコードをバージョン管理サーバ100にコミットする(コミット722)。該コミット722がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施するが、前記コミット711と同様の処理になる。本実施例では、コミット722でサブ機能Bの作成は完了したものとする。
次に、担当者Bはサブ機能Bが作成できたため、開発クライアント300を用いて親チケット700に対して、作成した全ソースコードをバージョン管理サーバ100にコミットする(コミット723)。
該コミット723がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図7に記載のユースケースに係る処理部分のみ説明する。
コミット723のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットとなるため、自動実行処理サーバ120はステップS501の判定をYESとして、ステップS505に移行し、重点実行の設定となる。この後の処理により、コミット723では、自動実行処理が重点的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール通知が行われる。
担当者Cは、チケット730の記載内容を元にサブ機能Cのプログラム作成を行う。図7で示すユースケースでは、サブ機能の作成が広範囲にわたる場合であり、担当者Cの担当する範囲でも複数回に分けてプログラム作成を実施する場合である。そのため、作成したソースコードのコミットも複数回に分かれている。
担当者Cはまず初めのソースコード作成を行い、開発クライアント300で作成したソースコードをバージョン管理サーバ100にコミットする(コミット731)。該コミット731がコミットされたことを契機に、自動実行処理サーバ120は、図3から図5で示した処理を実施する。以下では図7に記載のユースケースに係る処理部分のみ説明する。
コミット731のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットではないので、自動実行処理サーバ120は、ステップS501の判定をNOとする。
ステップS502の担当者及び履歴情報の判定ステップでは、本ユースケースでは担当者Bの未完了の担当チケット数、過去の担当不具合チケット数及びコミット件数は少なく、閾値Thc以内となるため、自動実行処理サーバ120の判定はNOとなる。
ステップS503の判定でステータス属性が「作業中」のため、自動実行処理サーバ120はステップS504に移行し、効率実行の設定となる。この後の処理により、コミット731では、自動実行処理が効率的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール通知は行われない。
次に、担当者Cは次の機能作成を行い、開発クライアント300で作成したソースコードをバージョン管理サーバ100にコミットする(コミット732)。該コミット732がコミットされたことを契機に、自動実行処理サーバ120は図3から図5で示した処理を実施するが、前記コミット731と同様の処理になる。本実施例では、コミット732でサブ機能Cの作成は完了したものとする。
次に、担当者Cはサブ機能Cが作成できたため、開発クライアント300を用いて親チケット700に対して、作成した全ソースコードをバージョン管理サーバ100にコミットする(コミット733)。該コミット733がコミットされたことを契機に、自動実行処理サーバ120は図3から図5で示した処理を実施する。以下では図7に記載のユースケースに係る処理部分のみ説明する。
コミット733のコミットを契機にした処理では、自動実行設定(ステップS305)である図5の処理において、親コミットへのコミットとなるため、自動実行処理サーバ120はステップS501の判定をYESとして、ステップS505に移行し、重点実行の設定となる。この後の処理により、コミット723では、自動実行処理が重点的な設定で実行されることになる。図3におけるステップS309では、開発責任者へのメール通知が行われる。
これにより、サブ機能作成のコミットでは、チケットの属性情報を基に効率的な自動実行が行われ、サブ機能を統合する親チケットへのコミットでは、最終的な作業として、重点的な自動実行が行われることとなり、全体として効率的な自動実行処理を行うことができる。
なお、図7に記載のユースケースに対して、本実施例のようにチケット属性に基づいてではなく、バージョン管理サーバ100におけるブランチ機能を用いて、作業中ブランチと作業完ブランチを設けて、ブランチ毎に自動実行処理を変えることも可能である。しかし、担当者の数だけブランチが必要になり、大規模なプログラム開発では担当者も多数になるため、多数のブランチが必要になりブランチの管理が難しくなる。一方、本実施例のようにチケット属性を用いれば、1つのブランチでも実施できるため、ブランチの管理は容易となる。
上記により、自動実行処理サーバ120ではチケットの属性によって、自動実行処理の内容を自動的に変更することが可能となり、継続的インテグレーションにおける自動実行処理を効率的に実施することができる。
<結び>
以上のように、上記実施例のプログラム開発支援システムは、以下のような構成とすることができる。
(1)プロセッサ(11)とメモリ(12)と通信インターフェース(13)を有する自動実行処理サーバ(120)を有するプログラム開発支援システムであって、前記自動実行処理サーバ(120)は、ソースコードが登録されたことを示すコミット完了通知を受け付けると、前記ソースコードの情報と前記ソースコードに対応するチケットの情報を含むコミット情報を取得するコミット情報取得部(121)と、前記コミット情報から前記コミット完了通知に対応するチケット識別子を抽出する連携部(122)と、前記抽出したチケット識別子に基づいて前記チケットの属性情報を取得する属性情報取得部(123)と、自動実行処理を行う前記ソースコードに対応する実行対象情報を所定の順序で格納する自動実行キュー(127)と、前記取得したコミット情報からソースコードを指定する情報を実行対象情報として生成して前記自動実行キュー(127)へ投入し、前記取得したチケットの属性情報に基づいて前記自動実行キュー(127)の実行対象情報の順序を変更する自動実行処理変更部(124)と、前記自動実行処理の対象となるソースコード及びテストケースを取得する対象成果物取得部(125)と、前記自動実行処理変更部(124)で変更された実行対象情報の順序に基づいて前記対象成果物取得部(125)で取得した前記ソースコード及びテストケースを用いて自動実行処理を行う自動実行処理部(126)と、前記自動実行処理部(126)で実行した結果を通知する通知部(128)と、を有することを特徴とするプログラム開発支援システム。
上記構成により、自動実行処理サーバ120は、チケットの属性情報によって、自動実行処理の内容を自動的に変更することが可能となり、継続的インテグレーションにおける自動実行処理を効率的に実施することができる。
(2)上記(1)に記載のプログラム開発支援システムであって、前記ソースコード又は前記ソースコードに対応するテストケースをバージョン単位で管理するバージョン管理サーバ(100)と、プログラムの開発に係る作業又は不具合に係る内容をチケットとして管理するチケット管理サーバ(110)と、前記自動実行処理サーバ(120)と、前記バージョン管理サーバ(100)と、前記チケット管理サーバ(110)とを接続するネットワーク(80)を、更に有し、前記コミット情報取得部(121)は、前記バージョン管理サーバ(100)からコミット完了通知を受け付けて、当該コミット完了通知に対応する前記コミット情報を前記バージョン管理サーバ(100)から取得し、前記属性情報取得部(123)は、前記抽出したチケット識別子に基づく前記チケットの属性情報を前記チケット管理サーバ(110)から取得することを特徴とするプログラム開発支援システム。
上記構成により、ソースコードとテストケースのバージョンをバージョン管理サーバ100で管理し、プログラムの開発に係る作業又は不具合に係る内容をチケットとしてチケット管理サーバ110で管理することで、処理分散して自動実行処理サーバ120と連携処理を行いことができる。
(3)上記(1)に記載のプログラム開発支援システムであって、前記属性情報取得部(123)は、前記チケットの属性情報に含まれる、優先度属性(206)、期日属性(207)又はクリティカルパス属性(210)の少なくとも一つを取得し、前記取得した属性情報に基づいて前記自動実行キュー(127)の前記実行対象情報の順序を変更することを特徴とするプログラム開発支援システム。
上記構成により、自動実行処理サーバ120は、優先度属性206、期日属性207又はクリティカルパス属性210の少なくとも一つに基づいて自動実行キュー127の実行対象情報の順序を変更することができる。
(4)上記(1)に記載のプログラム開発支援システムであって、前記自動実行処理部(126)は、前記チケットの属性情報に含まれる、前記親チケット属性(206)、担当者属性(204)、履歴属性(211)又はステータス属性(206)の少なくとも一つの属性情報を取得して、前記取得した属性情報に基づいて自動実行処理の内容を設定することを特徴とするプログラム開発支援システム。
上記構成により、自動実行処理サーバ120は、親チケット属性208と、担当者属性204と、履歴属性211に基づいて自動実行処理の内容を決定することが可能となる。
(5)上記(3)に記載のプログラム開発支援システムであって、前記自動実行処理部(126)は、前記属性情報取得部(123)が取得した担当者属性(204)の情報を用いて、当該担当者の、未完了の担当チケット数、過去の担当不具合チケット数又はコミット件数の少なくとも一つの数値を取得して、前記取得した数値に基づいて自動実行処理の内容を設定することを特徴とするプログラム開発支援システム。
上記構成により、自動実行処理サーバ120では、チケットの属性によって、自動実行処理の内容を自動的に変更することが可能となり、継続的インテグレーションにおける自動実行処理を効率的に実施することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
<補足>
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
<11>
請求項3に記載のプログラム開発支援システムであって、
前記属性情報取得部で取得した履歴属性の情報を用いて、担当者が変更されてからの時間情報を取得し、取得した時間情報を基に、自動実行処理を設定することを特徴とするプログラム開発システム。
<12>
請求項1に記載のプログラム開発支援システムであって、
前記自動実行処理変更部で設定する自動実行処理の内容として、ビルドやテスト実行の対象となるソースコード、レビュー実施の要否、同件不具合の修正確認の要否又は開発責任者への通知の要否の少なくとも一つの設定を行うことを特徴とするプログラム開発システム。
<13>
請求項8に記載のプログラム開発支援方法であって、
前記属性情報取得手順で取得した履歴属性の情報を用いて、担当者が変更されてからの時間情報を取得し、取得した時間情報を基に、自動実行処理を設定することを特徴とするプログラム開発方法。
<14>
請求項6に記載のプログラム開発支援方法であって、
前記自動実行処理変更手順で設定する自動実行処理の内容として、ビルドやテスト実行の対象となるソースコード、レビュー実施の要否、同件不具合の修正確認の要否又は開発責任者への通知の要否の少なくとも一つの設定を行うことを特徴とするプログラム開発方法。
100 バージョン管理システム
110 チケット管理システム
120 自動実行処理システム
121 コミット情報取得部
122 連携部
123 属性情報取得部
124 自動実行処理変更部
125 対象成果物取得部
126 自動実行処理部
127 自動実行キュー
128 通知部

Claims (10)

  1. プロセッサとメモリと通信インターフェースを有する自動実行処理サーバを有するプログラム開発支援システムであって、
    前記自動実行処理サーバは、
    ソースコードが登録されたことを示すコミット完了通知を受け付けると、前記ソースコードの情報と前記ソースコードに対応するチケットの情報を含むコミット情報を取得するコミット情報取得部と、
    前記コミット情報から前記コミット完了通知に対応するチケット識別子を抽出する連携部と、
    前記抽出したチケット識別子に基づいて前記チケットの属性情報を取得する属性情報取得部と、
    自動実行処理を行う前記ソースコードに対応する実行対象情報を所定の順序で格納する自動実行キューと、
    前記取得したコミット情報からソースコードを指定する情報を実行対象情報として生成して前記自動実行キューへ投入し、前記取得したチケットの属性情報に基づいて前記自動実行キューの実行対象情報の順序を変更する自動実行処理変更部と、
    前記自動実行処理の対象となるソースコード及びテストケースを取得する対象成果物取得部と、
    前記自動実行処理変更部で変更された実行対象情報の順序に基づいて前記対象成果物取得部で取得した前記ソースコード及びテストケースを用いて自動実行処理を行う自動実行処理部と、
    前記自動実行処理部で実行した結果を通知する通知部と、
    を有することを特徴とするプログラム開発支援システム。
  2. 請求項1に記載のプログラム開発支援システムであって、
    前記ソースコード又は前記ソースコードに対応するテストケースをバージョン単位で管理するバージョン管理サーバと、
    プログラムの開発に係る作業又は不具合に係る内容をチケットとして管理するチケット管理サーバと、
    前記自動実行処理サーバと、前記バージョン管理サーバと、前記チケット管理サーバとを接続するネットワークを、更に有し、
    前記コミット情報取得部は、
    前記バージョン管理サーバからコミット完了通知を受け付けて、当該コミット完了通知に対応する前記コミット情報を前記バージョン管理サーバから取得し、
    前記属性情報取得部は、
    前記抽出したチケット識別子に基づく前記チケットの属性情報を前記チケット管理サーバから取得することを特徴とするプログラム開発支援システム。
  3. 請求項1に記載のプログラム開発支援システムであって、
    前記属性情報取得部は、
    前記チケットの属性情報に含まれる、優先度属性、期日属性又はクリティカルパス属性の少なくとも一つを取得し、前記取得した属性情報に基づいて前記自動実行キューの前記実行対象情報の順序を変更することを特徴とするプログラム開発支援システム。
  4. 請求項1に記載のプログラム開発支援システムであって、
    前記自動実行処理部は、
    前記チケットの属性情報に含まれる、親チケット属性、担当者属性、履歴属性又はステータス属性の少なくとも一つの属性情報を取得して、前記取得した属性情報に基づいて自動実行処理の内容を設定することを特徴とするプログラム開発支援システム。
  5. 請求項3に記載のプログラム開発支援システムであって、
    前記自動実行処理部は、
    前記属性情報取得部が取得した担当者属性の情報を用いて、当該担当者属性の、未完了の担当チケット数、過去の担当不具合チケット数又はコミット件数の少なくとも一つの数値を取得して、前記取得した数値に基づいて自動実行処理の内容を設定することを特徴とするプログラム開発支援システム。
  6. プロセッサとメモリと通信インターフェースを有する自動実行処理サーバでプログラムの開発を支援するプログラム開発支援方法であって、
    前記自動実行処理サーバが、ソースコードが登録されたことを示すコミット完了通知を受け付けると、前記ソースコードの情報と前記ソースコードに対応するチケットの情報を含むコミット情報を取得するコミット情報取得手順と、
    前記自動実行処理サーバが、前記コミット情報から前記コミット完了通知に対応するチケット識別子を抽出する連携手順と、
    前記自動実行処理サーバが、前記抽出したチケット識別子に基づいて前記チケットの属性情報を取得する属性情報取得手順と、
    前記自動実行処理サーバが、自動実行処理を行う前記ソースコードに対応する実行対象情報を所定の順序で自動実行キューに格納するキューイング手順と、
    前記自動実行処理サーバが、前記取得したコミット情報からソースコードを指定する情報を実行対象情報として生成して前記自動実行キューへ投入し、前記取得したチケットの属性情報に基づいて前記自動実行キューの実行対象情報の順序を変更する自動実行処理変更手順と、
    前記自動実行処理サーバが、前記自動実行処理の対象となるソースコード及びテストケースを取得する対象成果物取得手順と、
    前記自動実行処理サーバが、前記自動実行処理変更手順で変更された実行対象情報の順序に基づいて前記対象成果物取得手順で取得した前記ソースコード及びテストケースを用いて自動実行処理を行う自動実行処理手順と、
    前記自動実行処理サーバが、前記自動実行処理手順で実行した結果を通知する通知手順と、
    を含むことを特徴とするプログラム開発支援方法。
  7. 請求項6に記載のプログラム開発支援方法であって、
    前記コミット情報取得手順は、
    前記ソースコード又は前記ソースコードに対応するテストケースをバージョン単位で管理するバージョン管理サーバからネットワークを介してコミット完了通知を受け付けて、当該コミット完了通知に対応する前記コミット情報を前記バージョン管理サーバから取得し、
    前記属性情報取得手順は、
    プログラムの開発に係る作業又は不具合に係る内容をチケットとして管理するチケット管理サーバから前記ネットワークを介して、前記抽出したチケット識別子に基づく前記チケットの属性情報を取得することを特徴とするプログラム開発支援方法。
  8. 請求項6に記載のプログラム開発支援方法であって、
    前記属性情報取得手順は、
    前記チケットの属性情報に含まれる、優先度属性、期日属性又はクリティカルパス属性の少なくとも一つを取得し、前記取得した属性情報に基づいて前記自動実行キューの前記実行対象情報の順序を変更することを特徴とするプログラム開発支援方法。
  9. 請求項6に記載のプログラム開発支援方法であって、
    前記自動実行処理手順は、
    前記チケットの属性情報に含まれる、親チケット属性、担当者属性、履歴属性又はステータス属性の少なくとも一つの属性情報を取得して、前記取得した属性情報に基づいて自動実行処理の内容を設定することを特徴とするプログラム開発支援方法。
  10. 請求項8に記載のプログラム開発支援方法であって、
    前記自動実行処理手順は、
    前記属性情報取得手順で取得した担当者属性の情報を用いて、当該担当者属性の、未完了の担当チケット数、過去の担当不具合チケット数又はコミット件数の少なくとも一つの数値を取得して、前記取得した数値に基づいて自動実行処理の内容を設定することを特徴とするプログラム開発支援方法。
JP2019237180A 2019-12-26 2019-12-26 プログラム開発支援システム及びプログラム開発支援方法 Active JP7246301B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2019237180A JP7246301B2 (ja) 2019-12-26 2019-12-26 プログラム開発支援システム及びプログラム開発支援方法
PCT/JP2020/043165 WO2021131435A1 (ja) 2019-12-26 2020-11-19 プログラム開発支援システム及びプログラム開発支援方法
CN202080058404.XA CN114258524A (zh) 2019-12-26 2020-11-19 程序开发支援系统以及程序开发支援方法
US17/640,491 US11853198B2 (en) 2019-12-26 2020-11-19 Program development assistance system and program development assistance method
EP20908115.7A EP4083783A4 (en) 2019-12-26 2020-11-19 PROGRAM DEVELOPMENT SUPPORT SYSTEM AND METHOD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019237180A JP7246301B2 (ja) 2019-12-26 2019-12-26 プログラム開発支援システム及びプログラム開発支援方法

Publications (2)

Publication Number Publication Date
JP2021105866A true JP2021105866A (ja) 2021-07-26
JP7246301B2 JP7246301B2 (ja) 2023-03-27

Family

ID=76575387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019237180A Active JP7246301B2 (ja) 2019-12-26 2019-12-26 プログラム開発支援システム及びプログラム開発支援方法

Country Status (5)

Country Link
US (1) US11853198B2 (ja)
EP (1) EP4083783A4 (ja)
JP (1) JP7246301B2 (ja)
CN (1) CN114258524A (ja)
WO (1) WO2021131435A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024038951A1 (ko) * 2022-08-17 2024-02-22 쿠팡 주식회사 코드 정보를 제공하는 방법 및 이를 지원하는 전자 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134643A (ja) * 2008-12-03 2010-06-17 Hitachi Software Eng Co Ltd テストケースの選択方法及び選択システム
JP2014085951A (ja) * 2012-10-25 2014-05-12 Ubic:Kk ソースコード管理システム及びソースコード管理方法並びにソースコード管理プログラム
JP2017215714A (ja) * 2016-05-31 2017-12-07 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
JP2018036792A (ja) * 2016-08-30 2018-03-08 日本電信電話株式会社 データ処理プログラム及びデータ処理方法
US20190294531A1 (en) * 2018-03-26 2019-09-26 Ca, Inc. Automated software deployment and testing based on code modification and test failure correlation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061460A1 (fr) * 2000-02-21 2001-08-23 Seiko Epson Corporation Systeme de mediation pour impression en reseau
GB2529178A (en) * 2014-08-12 2016-02-17 Ibm Test selection
US10725816B2 (en) * 2017-01-13 2020-07-28 International Business Machines Corporation Optimizing pipeline execution scheduling based on commit activity trends, priority information, and attributes
JP6678813B2 (ja) * 2017-03-28 2020-04-08 株式会社日立製作所 クラウド管理システム、及びクラウド管理方法
US10365994B2 (en) * 2017-04-24 2019-07-30 Facebook, Inc. Dynamic scheduling of test cases
US10528458B2 (en) * 2017-08-31 2020-01-07 Micro Focus Llc Continuous integration and continuous deployment system failure analysis and resolution
US10430319B1 (en) * 2018-05-04 2019-10-01 Fmr Llc Systems and methods for automatic software testing
US20210089297A1 (en) * 2019-09-20 2021-03-25 Sungard Availability Services, Lp Automated check for ticket status of merged code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134643A (ja) * 2008-12-03 2010-06-17 Hitachi Software Eng Co Ltd テストケースの選択方法及び選択システム
JP2014085951A (ja) * 2012-10-25 2014-05-12 Ubic:Kk ソースコード管理システム及びソースコード管理方法並びにソースコード管理プログラム
JP2017215714A (ja) * 2016-05-31 2017-12-07 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
JP2018036792A (ja) * 2016-08-30 2018-03-08 日本電信電話株式会社 データ処理プログラム及びデータ処理方法
US20190294531A1 (en) * 2018-03-26 2019-09-26 Ca, Inc. Automated software deployment and testing based on code modification and test failure correlation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024038951A1 (ko) * 2022-08-17 2024-02-22 쿠팡 주식회사 코드 정보를 제공하는 방법 및 이를 지원하는 전자 장치

Also Published As

Publication number Publication date
WO2021131435A1 (ja) 2021-07-01
US11853198B2 (en) 2023-12-26
CN114258524A (zh) 2022-03-29
US20220327047A1 (en) 2022-10-13
JP7246301B2 (ja) 2023-03-27
EP4083783A4 (en) 2024-01-24
EP4083783A1 (en) 2022-11-02

Similar Documents

Publication Publication Date Title
US10402518B2 (en) Parallel workflow finite element pre-processing method
EP2482192B1 (en) Testing lifecycle
US9703692B2 (en) Development supporting system
US8214508B2 (en) Support apparatus, program, information processing system and support method
JP2000200300A (ja) プロジェクト管理統合システムおよび方法
JP2017531855A (ja) データ駆動型検査用フレームワーク
CN113127347B (zh) 一种接口测试方法、装置、设备及可读存储介质
CN112199355B (zh) 数据迁移方法、装置、电子设备及存储介质
EP1881447A1 (en) Software release management
WO2021131435A1 (ja) プログラム開発支援システム及びプログラム開発支援方法
US11086696B2 (en) Parallel cloned workflow execution
US20180365341A1 (en) Three-Dimensional Cad System Device, and Knowledge Management Method Used in Three-Dimensional Cad
US9177277B2 (en) Workflow modeling with worklets and transitions
CN115309558A (zh) 一种资源调度管理系统、方法、计算机设备及存储介质
JP2003256205A (ja) ソフトウェア設計要件抽出支援方法、ソフトウェア設計要件決定支援方法、ソフトウェア設計支援方法、およびプログラム
JP6665637B2 (ja) プログラム作成支援システム
US20220382236A1 (en) Shared automated execution platform in cloud
CN110990475B (zh) 批量任务插入方法、装置、计算机设备及存储介质
JP2006243996A (ja) ジョブネット管理システム
US20150286652A1 (en) Method and system for filtering and actioning of energy management events
JP2010002977A (ja) 業務システムプログラムの作成システム
Dzikri Work Instruction Monitoring at Company of Flextronics Technology Indonesia
WO2021084763A1 (ja) 管理装置、管理方法及び管理プログラム
WO2016164599A1 (en) System and method for modular customization of intermediate business documentation generation
CN116303341A (zh) 一种数据迁移方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220208

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230314

R150 Certificate of patent or registration of utility model

Ref document number: 7246301

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150