JP5868246B2 - ソフトウェア開発支援方法、プログラム及び装置 - Google Patents

ソフトウェア開発支援方法、プログラム及び装置 Download PDF

Info

Publication number
JP5868246B2
JP5868246B2 JP2012086548A JP2012086548A JP5868246B2 JP 5868246 B2 JP5868246 B2 JP 5868246B2 JP 2012086548 A JP2012086548 A JP 2012086548A JP 2012086548 A JP2012086548 A JP 2012086548A JP 5868246 B2 JP5868246 B2 JP 5868246B2
Authority
JP
Japan
Prior art keywords
task
annotation
source code
code
checked
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012086548A
Other languages
English (en)
Other versions
JP2013218413A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2012086548A priority Critical patent/JP5868246B2/ja
Priority to US13/854,345 priority patent/US9021433B2/en
Publication of JP2013218413A publication Critical patent/JP2013218413A/ja
Priority to US14/672,556 priority patent/US10114635B2/en
Application granted granted Critical
Publication of JP5868246B2 publication Critical patent/JP5868246B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/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
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • 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

Landscapes

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

Description

本発明は、ソフトウェア開発支援技術に関し、より詳細には、開発者間のコミュニケーションを支援する技術に関する。
ソフトウェア開発プロジェクトの進行を管理するためのシステムが提供されている(例えば、特開2007−272655号公報)。ここで、複数の作業者による並行開発においては、一つの要求を実現する上で、ある開発者が担当するコンポーネントDが別の開発者が担当するコンポーネントPに依存するといったことが生じる。
従来では、このような場合、コンポーネントDの開発者は、電話、電子メール、FAXなどの人間系のコミュニケーションを使ってコンポーネントPの開発者にコンタクトを取り、作業を早く終わらせるように催促していた。
しかし、依存先の進捗状況を常に気にかけながら、その担当者に対して何度も催促を繰り返すといった作業は、コンポーネントDの開発者にとって大きな心理的負担となる。さらに、コンポーネントDの開発者が複数の作業を抱えて忙殺されているような場合には、コンポーネントPの開発者に対して催促すること自体を忘れるといったことが起こり、最悪の場合、コンポーネントDの開発が締め切りに間に合わなくなるといった事態を招く。
特開2007−272655号公報
本発明は、上記従来技術における課題に鑑みてなされたものであり、本発明は、ソフトウェアの並行開発において、依存関係にあるタスクの担当者間のコミュニケーションを支援する新規な方法を提供することを目的とする。
本発明者は、依存関係にあるタスクの担当者間のコミュニケーションを支援する方法につき鋭意検討した結果、依存元の作業コードに挿入したアノテーションをキーとして開発者間のコミュニケーションをシステマティックに実行する構成に想到し、本発明に至ったのである。
すなわち、本発明によれば、ソフトウェア並行開発のタスクを管理するタスク管理装置と作業中のソースコードを一元管理する共通レポジトリとに接続されるソフトウェア開発支援装置であって、前記共通レポジトリにチェックインするソースコードを検出するチェックイン検出部と、チェックインしたソースコードに所定のアノテーションが挿入されているか否かを判断するアノテーション解析部と、前記所定のアノテーションが挿入されているソースコードに記述された一時インターフェースに対応するスタブコードを生成し、前記共通レポジトリにチェックインするスタブコード生成部と、前記一時インターフェースを実装するタスクを生成して前記タスク管理装置に登録するともに、該タスク管理装置から該タスクのタスクIDを取得するタスク生成部と、前記タスク管理装置から取得した前記タスクIDを記述した所定のアノテーションを前記スタブコードに挿入するとともに、前記チェックインしたソースコードに挿入された前記アノテーションに該タスクIDを記述するアノテーション生成部と、前記チェックインしたソースコードの前記アノテーションに記述されたタスクIDを持つタスクに対して、該ソースコードに関するコメントを付加するコメント付加部とを含む装置が提供される。
上述したように、本発明によれば、依存関係にあるタスクの担当者間のコミュニケーションを支援する新規な方法が提供される。本発明によれば、依存元の開発者は、依存先の進捗状況に煩わされることなく、自分のペースで作業を進めることが可能になる。
本実施形態のソフトウェア開発支援装置を含むソフトウェア開発システムを示す図。 本実施形態のソフトウェア開発支援装置の機能ブロック図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 アノテーションが挿入された作業コードを示す図。 スタブコード生成部が生成したスタブコードを示す図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 アノテーションが挿入されたスタブコードおよび作業コードを示す図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 アノテーションが挿入された作業コードを示す図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 本実施形態のソフトウェア開発支援装置の機能を説明するための概念図。 一時インターフェースが実装された作業コードを示す図。 本実施形態のソフトウェア開発支援装置が実行する処理を示すフローチャート。
以下、本発明を図面に示した実施の形態をもって説明するが、本発明は、図面に示した実施の形態に限定されるものではない。なお、以下に参照する各図においては、共通する要素について同じ符号を用い、適宜、その説明を省略するものとする。
図1は、本発明の実施形態であるソフトウェア開発支援装置100が導入されたソフトウェア開発システム1000を示す。ソフトウェア開発システム1000は、タスク管理装置200と、ソースコード管理装置300と、ソフトウェア開発支援装置100と、複数の作業用クライアント端末400とを含み、各装置は、LAN、VPN、インターネットなどとして参照されるネットワーク500を介して接続されている。
図2は、本実施形態のソフトウェア開発支援装置100の機能ブロックをソフトウェア開発システム1000を構成する他の装置とともに示している。本実施形態のソフトウェア開発支援装置100の説明に入る前に、ソフトウェア開発支援装置100の導入先である、従来のソフトウェア開発システム1000の機能について、図2に基づいて概説する。
タスク管理装置200は、開発の要求仕様、各要求仕様に関する作業タスク、障害報告などを管理し、プロジェクトの進行をコントロールする装置であり、タスクを登録するタスクレポジトリ202と通知部204を含んで構成されている。通知部204は、タスクレポジトリ202を常に監視し、タスクに発生したイベントに応答して、必要な情報を当該タスクの関係者に通知する。
一方、ソースコード管理装置300は、ソフトウェア開発における各工程のコード情報を一元管理する装置であり、共通レポジトリ302を含んで構成されている。共通レポジトリ302は、開発環境およびテストビルドから参照可能に構成される開発チーム共通のレポジトリ領域であり、各開発者は、各自の作業内容について、その差分情報(作業コード)を、逐次、共通レポジトリ302にアップデートする(以下、この行為をチェックインという)。
通常、開発者は、作業コードのチェックインと同時に、タスク管理装置200に対して作業の進捗状況を報告することが義務づけられる。図2に示す例の場合、開発者Aは、共通レポジトリ302にチェックインした後(S1)、チェックインした作業コードに対応するタスクに進捗状況などに関するコメントを付加する(S2)。このとき、通知部204は、タスクにコメントが付加されたことを検知し、その内容を当該タスクの関係者である開発者Bに通知する(S3)。なお、タスク管理装置200およびソースコード管理装置300が有するその他の機能については、本発明の要旨と直接関係がないので、これ以上の説明は省略する。
続いて、本実施形態のソフトウェア開発支援装置100の構成について説明する。ソフトウェア開発支援装置100は、チェックイン検出部101、アノテーション解析部102、スタブコード生成部103、タスク生成部104、アノテーション生成部105、およびコメント付加部106を含んで構成されている。
チェックイン検出部101は、ソースコード管理装置300の共通レポジトリ302を常に監視し、共通レポジトリ302にチェックインするソースコードを検出して取得する機能部である。アノテーション解析部102は、チェックイン検出部101が取得したソースコードに挿入されたアノテーションを解析する機能部である。
スタブコード生成部103は、依存元のソースコードに含まれる一時インターフェース(後述する)に対応するスタブコードを生成する機能部である。タスク生成部104は、一時インターフェースを実装するタスクを生成してタスク管理装置200に登録する機能部である。
アノテーション生成部105は、スタブコード生成部103が生成したスタブコードおよび依存元のソースコードに対して、所定のアノテーションを挿入する機能部である。コメント付加部106は、共通レポジトリ302にチェックインしたソースコードに挿入されたアノテーションが提供する情報に基づいて、当該ソースコードに関するコメントを生成し、アノテーションによって指定されるタスクに生成したコメントを付加する機能部である。
以上、本実施形態のソフトウェア開発支援装置100の構成について概説してきたが、次に、本実施形態のソフトウェア開発支援装置100が実現する開発者間のシステマティックなコミュニケーションの機構について、具体例に基づいて説明する。
最初に、図3を参照されたい。図3に示す例においては、計画時の要求(Requirement)において、コンポーネントDがコンポーネントPに依存することが定義されている。コンポーネントDの開発者である「andy」は、タスク管理装置200が管理する要求仕様を参照し、コンポーネントDが使用する関数「getResult」が未だ作成されていないことを知る。
続いて、図4を参照して説明を続ける。関数「getResult」が未だ作成されていないことを知った「andy」は、コンポーネントDの中の該当する作業コード(すなわち、関数「getResult」を使用するコード)の中に一時インターフェースを記述し、一時インターフェースに対して所定のアノテーションを挿入する(S1)。
図5(a)は、一時インターフェース12が記述されたコンポーネントDの作業コード600(作業コードD’)を示す。ここで、一時インターフェースとは、依存元のソースコードの開発者が想定する依存先のソースコードを呼び出すため仮のコード(クラス生成、関数呼び出しなど)であり、図5(a)に示す例においては、コンポーネントPが提供すべき関数「getResult」を呼び出すためのAPI「クラスFoo int result = foo.getResult (in1, in2 );」が一時インターフェース12として記述されている。
続いて、「andy」は、記述した一時インターフェース12に対してアノテーションを挿入する。本実施形態において、アノテーションとは、一時インターフェース12に対する注釈として付与されるメタデータを意味し、予め決められたフォーマットの文字列等を識別子として含む。図5(b)は、一時インターフェース12に対してアノテーション14が挿入されたコンポーネントDの作業コード602(作業コードD’)を示す。図5(b)に例示するアノテーション14においては、「@request to implement」等の文字列が識別子として記述される他、属性として、一時インターフェースを実装するタスクの担当者(owner)およびステータス(status)が用意され、各属性に初期値「owner:空白(作業者未定)/status:open(未着手)」がセットされている。なお、本実施形態においては、ユーザにアノテーションを予め決められた正しいフォーマットで挿入させるために適切なUIを提供するようにしてもよい。
図4に戻って説明を続ける。「andy」は、アノテーションを挿入した作業コード602(作業コードD’)を共通レポジトリ302にチェックインする(S2)。以上の手順を踏んだ後は、タスク管理装置200に対してコンポーネントPの進捗状況を頻繁に問い合わせる必要はなく、「andy」は、自分のペースで作業を続けることできる。
一方で、ソフトウェア開発支援装置100のチェックイン検出部101は、先に説明したように、共通レポジトリ302を常に監視しており、「andy」のチェックインを検出して、その作業コード602(作業コードD’)を取得(コピー)する(S3)。
アノテーション解析部102は、チェックイン検出部101が取得した作業コード602を解析し、挿入されたアノテーション14にタスクIDが記述されているか否かを判断する。この場合、図5(b)に示す作業コード602のアノテーション14にはタスクIDが記述されていないので、スタブコード生成部103に対してスタブコードの生成を依頼する。
スタブコード生成部103は、上記依頼に応答して、アノテーション14が付与された一時インターフェース12「int result = foo.getResult (in1, in2 );」を抽出し、一時インターフェース12の実装クラスとしてスタブコードを生成する。図6は、スタブコード生成部103が生成したスタブコード700を示す。スタブコード生成部103は、生成したスタブコード700(作業コードP’)を共通レポジトリ302にチェックインする(S4)。
タスク生成部104は、スタブコード700をチェックインしたことに応答して、一時インターフェース12を実装するタスク(以下、P’の実装タスクという)を生成し、タスク管理装置200に登録する(S5)。このとき、タスク管理装置200は、ソフトウェア開発支援装置100をP’の実装タスクの関係者として登録する。さらに、タスク生成部104は、登録したP’の実装タスクのタスクID「1234」をタスク管理装置200から取得する(S6)。
タスク管理装置200は、P’の実装タスクが登録されたことに応答して、P’の実装タスクをコンポーネントオーナー(例えば、開発リーダなど)にアサインする。コンポーネントオーナーは、「bob」に作業コードP’をアサインし、P’の実装タスクのオーナーを「bob」に変更する。タスク管理装置200の通知部204は、オーナーが「bob」に変更されたことに応答して、P’の実装タスクとスタブコードの格納場所を作業コードP’の実装担当者である「bob」に通知する(S7)。
続いて、図7を参照して説明を続ける。アノテーション生成部105は、スタブコード生成部103が生成したスタブコード700に対して、「@requested」等の文字列が識別子として記述された所定のアノテーションを挿入する。このとき、アノテーション生成部105は、当該アノテーションに対して、タスク生成部104が取得したタスクID「1234」および一時インターフェースの実装を要求した担当者(creator)を属性として記述する。
加えて、アノテーション生成部105は、先にチェックイン検出部101が取得した「andy」の作業コード602(作業コードD’)に挿入されたアノテーション14に対して、タスク生成部104が取得したタスクID「1234」を記述する。
アノテーション生成部105は、タスクID「1234」を記述した作業コードP’(スタブコード)および作業コードD’を共通レポジトリ302にチェックインする(S4)。その結果、差分情報がアップデートされる。
図8(a)は、差分情報がアップデートされたスタブコード702を示す。図8(a)に示すように、スタブコード702には、アノテーション24が挿入されている。アノテーション24には、「@requested」等の文字列が識別子として記述される他、属性として、一時インターフェースの実装を要求した担当者(creator)およびタスクID(work item)が表示され、それぞれの値として、「andy」および「1234」がセットされている。
一方、図8(b)は、差分情報がアップデートされた作業コード604(作業コードD’)を示す。図8(b)に示すように、作業コード604のアノテーション14には、新たに属性としてタスクID(work item)が表示され、その値として「1234」がセットされている。
図7に戻って説明を続ける。この時点で、「andy」が共通レポジトリ302との同期処理を実行する(S9)。その結果、作業コード604(作業コードD’)が「andy」のローカルにコピーされる(以下、共通レポジトリ302との同期処理をチェックアウトという)。「andy」は、作業ウィンドウに表示された作業コード604(作業コードD’)のアノテーション14にタスクID「1234」が指定されたことを確認し、関数「getResult」の実装タスクが登録されたことを知る。
続いて、図9を参照して説明を続ける。作業コードP’の実装担当者「bob」は、タスク管理装置200からの通知を受けて、スタブコード702をチェックアウトし(S1)、作業コードP’の実装を開始する(S2)。このとき、「bob」は、タスク管理装置200が管理するP’の実装タスクのステータスを「open」から「in progress(作業中)」に更新する(S3)。
タスク管理装置200の通知部204は、P’の実装タスクのステータスが更新されたことに応答して、P’の実装タスクの関係者として登録されたソフトウェア開発支援装置100に対してP’の実装タスクのステータスが更新されたことを通知する(S4)。通知を受け取ったソフトウェア開発支援装置100のアノテーション生成部105は、公開API等の適切な手段を使用して、タスク管理装置200からP’の実装タスクの担当者情報(owner)およびステータス情報(status)を取得し(S5)、取得した当該情報に基づいてアノテーション14の属性「owner」および属性「status」を更新する。
具体的には、アノテーション生成部105は、タスク管理装置200から取得した情報に基づいて「andy」の作業コード604(作業コードD’)のアノテーション14の属性「owner」に「bob」をセットし、属性「status」を「open」から「in progress」に書き換えた後、アノテーション14を修正した作業コード606(作業コードD’)を共通レポジトリ302にチェックインする(S6)。その結果、差分情報がアップデートされる。
図10は、差分情報がアップデートされた作業コード606を示す。図11に示すように、作業コード606のアノテーション14においては、属性「owner」に「bob」が、属性「status」には「in progress」がそれぞれセットされている。
図9に戻って説明を続ける。この時点で、「andy」がチェックアウトすると(S7)、作業ウィンドウには、作業コード606(作業コードD’)が表示される。「andy」は、作業コードD’のアノテーション14に「owner:bob/status:in progress」と記述されていることを確認し、関数「getResult」の実装タスクが「bob」によって着手されたことを知る。
以上、アノテーションの属性(担当者・ステータス)を更新する処理について説明したが、次に、図11に基づいて、アノテーションの属性を更新する処理の別法を説明する。
図11に示す実施形態においては、「andy」は、ソフトウェア開発支援装置100から提供される所定のUIを介して、作業コードD’に対して所定のアノテーションを挿入する(S1)。
このとき、アノテーション内の属性を記述する領域には、下記に例示するように属性値を参照するためのURLが自動的に記述される。
owner:${taskurl}/owner
status:${taskurl}/status
「andy」は、アノテーションを挿入した作業コードD’をチェックインする(S2)。その後、共通レポジトリ302にスタブコードを生成し、タスク管理装置200にP’の実装タスクを登録する手順は上述したのと同様であるので説明を省略する。
ここで、本実施形態においては、アノテーション生成部105は、タスク管理装置200に登録したタスクを継続的に監視し(S3)、当該タスクの担当者およびステータスの更新内容を、当該タスクのタスクIDが埋め込まれたアノテーションに記述された参照用URLにリンクさせて属性データベース107で管理する。そして、「andy」が作業コードD’をローカルで開く度に、「andy」のクライアントは、作業コードD’内に記述された参照用URLに属性(担当者・ステータス)の更新内容を属性データベース107に読みにいき、クライアント側で読み出した属性情報をアノテーションに合成して、ユーザに表示する。
続いて、図12を参照して説明を続ける。コンポーネントDの開発者「andy」は、作業コードD’に関係するコードを変更する(S1)。ここで、作業コードD’に関係するコードの変更とは、作業コードD’が記述されているメソッドの変更等を意味し、「foo.getResult()」の呼び出しに続く処理の追加などがこれに該当する。
「andy」は、作業コードD’ に関係するコードを変更したファイルを共通レポジトリ302にチェックインする(S2)。ソフトウェア開発支援装置100のチェックイン検出部101は、「andy」のチェックインを検出して、そのファイルを取得(コピー)する(S3)。
アノテーション解析部102は、チェックイン検出部101が取得したファイルに含まれる作業コードD’を解析し、挿入されたアノテーション14にタスクIDが記述されているか否かを判断する。この場合、作業コードD’にはタスクID「1234」が記述されているので、アノテーション解析部102は、タスクID「1234」をコメント付加部106に通知して、コメントの生成を依頼する。
コメント付加部106は、アノテーション解析部102からの依頼に応答して、チェックイン検出部101が取得した作業コードD’を解析し、ファイルの変更内容(コードの差分など)を含むコメントを生成する。その後、コメント付加部106は、通知されたタスクID「1234」を持つタスクに生成したコメントを付加する(S4)。この場合、タスク管理装置200で管理されるP’の実装タスクにコメントが付加される。
タスク管理装置200の通知部204は、P’の実装タスクにコメントが付加されたことに応答して、P’の実装タスクの担当者である「bob」にコメントを通知する(S5)。「bob」は、このコメントが示すコンポーネントDの進捗状況から、自分の作業ペースを上げなければならないことを知る。
続いて、図13を参照して説明を続ける。「bob」は、作業コードP’の実装を完了すると(S1)、共通レポジトリ302に実装した作業コードP’をチェックインする(S2)。図14は、一時インターフェース12が実装された作業コード703を示す。ソフトウェア開発支援装置100のチェックイン検出部101は、「bob」のチェックインを検出して、その作業コード703を取得(コピー)する(S3)。
アノテーション解析部102は、チェックイン検出部101が取得した作業コード703を解析し、挿入されたアノテーション24にタスクIDが記述されているか否かを判断する。この場合、作業コード703にはタスクID「1234」が記述されているので、アノテーション解析部102は、タスクID「1234」をコメント付加部106に通知して、コメントの生成を依頼する。
コメント付加部106は、アノテーション解析部102からの依頼に応答して、チェックイン検出部101が取得した作業コード703を解析し、作業コード703の変更内容(コードの差分など)を含むコメントを生成する。を含むコメントを生成する。その後、コメント付加部106は、アノテーション解析部102から通知されたタスクID「1234」を持つタスクに生成したコメントを付加する(S4)。この場合、タスク管理装置200で管理されるP’の実装タスクにコメントが付加される。
タスク管理装置200の通知部204は、P’の実装タスクにコメントが付加されたことに応答して、P’の実装タスクの関係者である「andy」にコメントの内容を通知する(S5)。このコメントの内容から関数「getResult」の実装が完了したことを知った「andy」は、共通レポジトリ302から実装済みの作業コードP’をチェックアウトする(S6)。「andy」は、チェックアウトした作業コードP’の内容を自分の作業コードD’に反映させる変更を行い、コンポーネントDを完成させる(S7)。
以上、本実施形態のソフトウェア開発支援装置100を含むソフトウェア開発システム1000において実行される手順について説明してきたが、次に、本実施形態のソフトウェア開発支援装置100が実行する処理を図15に示すフローチャートに基づいて説明する。
ソフトウェア開発支援装置100が起動すると、共通レポジトリ302の監視が開始される(ステップ101)。共通レポジトリ302へのチェックインを検出すると(ステップ102、Yes)、チェックインした作業コードが解析され、所定のアノテーションが挿入されているか否かが判断される(ステップ103)。
ステップ103において、所定のアノテーションが挿入されていないと判断された場合は(ステップ103、No)、再び、ステップ101に戻って、共通レポジトリ302を監視する。一方、所定のアノテーションが挿入されていると判断された場合は(ステップ103、Yes)、ステップ104に進む。
ステップ104においては、アノテーションにタスクIDが記述されているか否かが判断される。タスクIDが記述されていないと判断された場合は(ステップ104、No)、作業コード内から一時インターフェースを抽出し、その実装クラスであるスタブコードを生成し(ステップ105)、ステップ106に進む。
ステップ106においては、一時インターフェースを実装する作業タスクを生成する。その後、生成した作業タスクをタスク管理装置200に登録し、当該作業タスクのタスクIDを取得して(ステップ107)、ステップ108に進む。
ステップ108においては、取得したタスクIDを埋め込んだアノテーションをステップ105で生成したスタブコードに挿入するとともに、ステップ102で検出した作業コードのアノテーションに取得したタスクIDを埋め込んで、ステップ109に進む。
ステップ109においては、同じタスクIDが埋め込まれたスタブコードおよび作業コードを共通レポジトリ302にチェックインする。その後、処理は、ステップ101に戻り、再び、共通レポジトリ302の監視を開始する。
一方、ステップ104において、アノテーションにタスクIDが記述されていると判断された場合は(ステップ104、Yes)、チェックインした作業コードに関するコメントを生成し、記述されたタスクIDを持つタスク管理装置200内の作業タスクに生成したコメントを付加する(S110)。その後、処理は、ステップ101に戻り、再び、共通レポジトリ302の監視を開始する。
以上、説明したように、本発明によれば、依存関係にある開発者間のコミュニケーションが依存元の作業コードに挿入したアノテーションをキーとしてシステマティックに実行される。一般的に、依存関係にある開発者同士は、作業開始当初はお互いを意識しているが、時間の経過とともに徐々になおざりになる傾向があり、必要な連絡・通知等を失念しがちである。この点につき、本発明によれば、依存関係にある開発者は、作業コードの中で互いの状況を自動的に知ることができるので、自分の作業に集中することができる。
以上、本発明について実施形態をもって説明してきたが、本発明は上述した実施形態に限定されるものではなく、その他、当業者が推考しうる実施態様の範囲内において、本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
なお、上述したタスク管理装置200、ソースコード管理装置300およびソフトウェア開発支援装置100の各装置の間は、TCP/IPなどのトランザクション・プロトコルを使用し、RMI(Remote Method Invocation)、RPC(Remote Procedure Call)、EJB(Enterprise Java(登録商標) Beans)、CORBA(Common Object Broker Architecture)などの分散コンピューティング環境やHTTPプロトコルを使用して相互接続することができる。また、各装置は、データベースなどに接続するためのJDBC(Java(登録商標)Database Component)およびその他のインターフェースを実装し、MySQL、DB2、ORACLE(商標)、PostageSQL、SQLserver、ACESSなどのデータベースにアクセスすることが可能とされていてもよい。この他、各装置は、ウェブ・ブラウザを実装し、CGI、JAVA(登録商標)、PERL、RUBYなどの言語を使用して実装されるサーバ・プログラムを介して処理を共有させてもよい。また、各装置は、パーソナル・コンピュータ、ワークステーション、サーバなどとして実装することができ、各装置は、いかなる実装形式のシングルコア・プロセッサまたはマルチコア・プロセッサを搭載していてもよく、WINDOWS(登録商標)、UNIX(登録商標)、LINUX(登録商標)などの適切なオペレーティング・システムを実行することができる環境とされている。
また、上述した実施形態の各機能は、C、C++、C#、Java(登録商標)などのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、CD−ROM、MO、DVD、フレキシブルディスク、EEPROM、EPROMなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
12…一時インターフェース
14,24…アノテーション
30…共通レポジトリ
100…ソフトウェア開発支援装置
101…チェックイン検出部
102…アノテーション解析部
103…スタブコード生成部
104…タスク生成部
105…アノテーション生成部
106…コメント付加部
107…属性データベース
200…タスク管理装置
202…タスクレポジトリ
204…通知部
300…ソースコード管理装置
302…共通レポジトリ
400…作業用クライアント端末
500…ネットワーク
600,602,604,606,703…作業コード
700,702…スタブコード
1000…ソフトウェア開発システム

Claims (10)

  1. ソフトウェア並行開発のタスクを管理するタスク管理装置と作業中のソースコードを一元管理する共通レポジトリとに接続されるソフトウェア開発支援装置であって、
    前記共通レポジトリにチェックインするソースコードを検出するチェックイン検出部と、
    チェックインしたソースコードに所定のアノテーションが挿入されているか否かを判断するアノテーション解析部と、
    前記所定のアノテーションが挿入されているソースコードに記述された一時インターフェースに対応するスタブコードを生成し、前記共通レポジトリにチェックインするスタブコード生成部と、
    前記一時インターフェースを実装するタスクを生成して前記タスク管理装置に登録するともに、該タスク管理装置から該タスクのタスクIDを取得するタスク生成部と、
    前記タスク管理装置から取得した前記タスクIDを記述した所定のアノテーションを前記スタブコードに挿入するとともに、前記チェックインしたソースコードに挿入された前記アノテーションに該タスクIDを記述するアノテーション生成部と、
    前記チェックインしたソースコードの前記アノテーションに記述されたタスクIDを持つタスクに対して、該ソースコードに関するコメントを付加するコメント付加部と
    を含む、装置。
  2. 前記チェックインしたソースコードに含まれる前記一時インターフェースは、該ソースコードと依存関係にある他のソースコードを呼び出すための仮コードである、請求項1に記載の装置。
  3. 前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、
    前記アノテーション生成部は、前記アノテーションに記述されたタスクIDを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報に基づいて該アノテーションに記述された前記属性を更新する、請求項1または2に記載の装置。
  4. 前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、各属性について属性値を参照するためのURLが記述され、
    前記アノテーション生成部は、前記アノテーションに記述されたタスクIDを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報を前記属性値として前記URLにリンクさせる、請求項1または2に記載の装置。
  5. コンピュータにソフトウェア並行開発において依存関係にあるタスクの担当者間のコミュニケーションを支援させる方法であって、前記コンピュータが、
    作業中のソースコードを一元管理する共通レポジトリにチェックインするソースコードを検出するステップと、
    チェックインしたソースコードに所定のアノテーションが挿入されているか否かを判断するステップと、
    前記所定のアノテーションが挿入されているソースコードに記述された一時インターフェースに対応するスタブコードを生成し、前記共通レポジトリにチェックインするステップと、
    前記一時インターフェースを実装するタスクを生成して並行開発のタスクを管理するタスク管理装置に登録するともに、該タスク管理装置から該タスクのタスクIDを取得するステップと、
    前記タスク管理装置から取得した前記タスクIDを記述した所定のアノテーションを前記スタブコードに挿入するとともに、前記チェックインしたソースコードに挿入された前記アノテーションに該タスクIDを記述するステップと、
    前記チェックインしたソースコードの前記アノテーションに記述されたタスクIDを持つタスクに対して、該ソースコードに関するコメントを付加するステップと
    実行する方法。
  6. 前記チェックインしたソースコードに含まれる前記一時インターフェースは、該ソースコードと依存関係にある他のソースコードを呼び出すための仮コードである、請求項5に記載の方法。
  7. 前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、
    前記アノテーションに記述されたタスクIDを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報に基づいて該アノテーションに記述された前記属性を更新するステップをさらに含む、請求項5または6に記載の方法。
  8. 前記チェックインしたソースコードに挿入された前記アノテーションには、前記一時インターフェースを実装するタスクの担当者およびステータスが属性として記述され、各属性について属性値を参照するためのURLが記述され、
    前記アノテーションに記述されたタスクIDを持つタスクの担当者およびステータスに係る情報を前記タスク管理装置から取得し、該情報を前記属性値として前記URLにリンクさせるステップをさらに含む、請求項5または6に記載の方法。
  9. コンピュータに、請求項5〜8のいずれか一項に記載の方法の各ステップを実行させるためのコンピュータ実行可能なプログラム。
  10. ソフトウェア並行開発において依存関係にあるタスクの担当者間のコミュニケーションをコンピュータが支援する方法であって、前記コンピュータが、
    第1の担当者が第1のソースコードを作成する際に、該第1のソースコードが依存する依存コードの存在を表すメタデータを該第1のソースコードに挿入するステップと、
    前記メタデータの検出に応答して、前記依存コードを作成するタスクを生成するステップと、
    前記依存コードを作成するタスクを担当する第2の担当者と該タスクのステータスを表すメタデータを前記第1のソースコードに挿入するステップと
    実行する方法。
JP2012086548A 2012-04-05 2012-04-05 ソフトウェア開発支援方法、プログラム及び装置 Active JP5868246B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012086548A JP5868246B2 (ja) 2012-04-05 2012-04-05 ソフトウェア開発支援方法、プログラム及び装置
US13/854,345 US9021433B2 (en) 2012-04-05 2013-04-01 Software development support method, program and device
US14/672,556 US10114635B2 (en) 2012-04-05 2015-03-30 Software development support

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012086548A JP5868246B2 (ja) 2012-04-05 2012-04-05 ソフトウェア開発支援方法、プログラム及び装置

Publications (2)

Publication Number Publication Date
JP2013218413A JP2013218413A (ja) 2013-10-24
JP5868246B2 true JP5868246B2 (ja) 2016-02-24

Family

ID=49293333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012086548A Active JP5868246B2 (ja) 2012-04-05 2012-04-05 ソフトウェア開発支援方法、プログラム及び装置

Country Status (2)

Country Link
US (2) US9021433B2 (ja)
JP (1) JP5868246B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5868246B2 (ja) 2012-04-05 2016-02-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア開発支援方法、プログラム及び装置
US9104995B1 (en) * 2012-09-28 2015-08-11 Emc Corporation Subject and audience oriented instant collaborative development
CN103914300B (zh) * 2014-03-24 2017-04-05 深圳天珑无线科技有限公司 一种软件开发事务的实现方法及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895775A (ja) * 1994-09-22 1996-04-12 Hitachi Software Eng Co Ltd プログラム作成編集装置
US6298391B1 (en) * 1998-03-13 2001-10-02 Microsoft Corporation Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes
JP2000047891A (ja) 1998-05-29 2000-02-18 Toshiba Corp 計算機システムにおける入出力制御装置及び同システムにおける入出力制御方法並びに同方法がプログラムされ記憶された記憶媒体
JP2000047861A (ja) * 1998-07-30 2000-02-18 Nec Corp 影響範囲検出装置および影響範囲の検出方法
JP3611178B2 (ja) * 1998-09-01 2005-01-19 日立ソフトウエアエンジニアリング株式会社 プログラム開発管理支援装置
US6381737B1 (en) * 1999-04-23 2002-04-30 Sun Microsystems, Inc. Automatic adapter/stub generator
JP3928338B2 (ja) * 2000-07-21 2007-06-13 富士ゼロックス株式会社 協調作業支援装置
US7155702B2 (en) * 2001-09-13 2006-12-26 Axalto Sa Interface and stub generation for code distribution and synthesis
JP2005266976A (ja) * 2004-03-16 2005-09-29 Sharp Corp プログラム保存装置、プログラム保存方法、プログラムおよび記録媒体
JP2007272655A (ja) 2006-03-31 2007-10-18 Nec Corp プロジェクト管理システムおよびプロジェクト管理方法
US8234289B2 (en) * 2007-12-17 2012-07-31 International Business Machines Corporation Restoration of conversation stub for recognized experts
JP4845153B2 (ja) * 2009-03-30 2011-12-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のクライアントを用いた分散環境で更新作業のコンフリクトを回避するシステム、方法、サーバ及びコンピュータプログラム
JP5868246B2 (ja) 2012-04-05 2016-02-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア開発支援方法、プログラム及び装置

Also Published As

Publication number Publication date
US20130268910A1 (en) 2013-10-10
US20150277902A1 (en) 2015-10-01
US9021433B2 (en) 2015-04-28
US10114635B2 (en) 2018-10-30
JP2013218413A (ja) 2013-10-24

Similar Documents

Publication Publication Date Title
US11467879B2 (en) Techniques for implementing rollback of infrastructure changes in a cloud infrastructure orchestration service
US10324742B2 (en) Instantiation of JavaScript object
US10095499B2 (en) Optimization for multi-project package manager
US20020059472A1 (en) Method and apparatus for transporting behavior in an event-based distributed system
JP2011070707A (ja) 分散コンピューティングシステムと、分散アプリケーションの自動化された設計、展開、および管理とのためのアーキテクチャ
WO2020015191A1 (zh) 业务规则的发布管理方法、电子装置及可读存储介质
Grundy et al. A decentralized architecture for software process modeling and enactment
JP6723692B2 (ja) ソースにおけるデータ収集およびクリーニング
US9277028B2 (en) Synchronizing user relationship across computer systems implementing workspaces
AU2017214759B2 (en) Graph-based operations on an entity-relationship database
JP5868246B2 (ja) ソフトウェア開発支援方法、プログラム及び装置
JP2019071044A (ja) クラウドからローカル、ローカルからクラウドへの切り替えと、医用画像及びデータの同期
Zimmermann et al. Interface responsibility patterns: processing resources and operation responsibilities
WO2003105443A1 (en) System and method for supporting concurrent applications interoperability
US7954085B2 (en) Support for multiple interface versions
CN108496157A (zh) 用于使用扩展接口为访问事务中间件平台的基于web的客户端提供运行时跟踪的系统和方法
JP2004272909A (ja) システムの設計時検証
US20210150448A1 (en) Method and system for program management
US10805182B2 (en) Provisioner disaster-recovery framework for platform-as-a-service offering
JP2004110362A (ja) アプリケーション開発支援システム及びアプリケーション開発支援方法ならびにコンピュータプログラム
KR101945993B1 (ko) 대상체의 의료 정보를 생성하는 방법 및 장치.
Soni et al. Deploy a Spring Boot Application Talking to MySQL in AWS
US20240020156A1 (en) Independent agent synchronization using domain name system
JP4628551B2 (ja) 動的インストールの方法及びコンピュータシステム
Soni Efficient Travel Decision Making Using Web Application Based on MVC Architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140903

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151118

TRDD Decision of grant or rejection written
RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20151208

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160105

R150 Certificate of patent or registration of utility model

Ref document number: 5868246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150