JP2009059351A - コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品 - Google Patents

コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品 Download PDF

Info

Publication number
JP2009059351A
JP2009059351A JP2008198212A JP2008198212A JP2009059351A JP 2009059351 A JP2009059351 A JP 2009059351A JP 2008198212 A JP2008198212 A JP 2008198212A JP 2008198212 A JP2008198212 A JP 2008198212A JP 2009059351 A JP2009059351 A JP 2009059351A
Authority
JP
Japan
Prior art keywords
file
code
files
computer
record
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
JP2008198212A
Other languages
English (en)
Inventor
Jan Schiefer
ジャン・シーファー
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.)
Agilent Technologies Inc
Original Assignee
Agilent Technologies 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 Agilent Technologies Inc filed Critical Agilent Technologies Inc
Publication of JP2009059351A publication Critical patent/JP2009059351A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】
ソフトウエア・コンフィギュレーション・マネージメント(SCM)のファイルに影響を与えるイベント(たとえば、リファクタリング)に関する情報を記憶するように動作できるシステム、方法、及びコンピュータプログラム製品を提供すること。
【解決手段】
一例では、SCMは、リファクタリング操作等、ファイルを修正する操作を個別のイベントとしてそれぞれ記録するように構成される。イベントが、他のファイル及びバージョンに対して影響を与える効果を有する場合、イベントは、操作によって影響を受けるファイル及びファイルバージョンにリンクされ、多くの関係したファイル内で変更を引き起こしたものの知識が保存されるようにする。この例では、SCMは、1つ又は2つ以上のソースファイルの変換の原因についてのメタ情報を記録する。このメタ情報は、たとえばファイル改訂版をマージする時に適用することができる。
【選択図】 図1

Description

本発明は、一般的には、コード開発システムに関し、より詳細には、ファイルに対する操作に関する情報の記憶に関する。
オブジェクト指向プログラミング(OOP)は、コンピューティング産業で広く採用されている技術となっている。プログラムの機能は、クラスに分解される。クラスは、プログラムの振る舞いの一部をカプセル化したものである。これらのクラスのインスタンス(多くの場合、オブジェクトと呼ばれる)は、互いのメソッドを呼び出して動作を起動することによって通信する。これらのオブジェクトに対する外部インターフェース及び内部インターフェースを設計することは、プログラム設計者にとって重要な設計作業である。
プログラムソースコードは、通常、ソフトウェア構成管理(Software Configuration Management)(SCM)システムに記録される。ソースコードは、ファイルに記憶される。ここで、1つのファイルは、1つ又は2つ以上のクラス定義を含む。個々のファイルの改訂版は、通常、全てそろったテキストとして記憶されるか、又は、前のバージョンに対する差分(すなわち、デルタ)として記憶される。
時に、コードをより読みやすく又はより保守しやすくするために、クラスの外部インターフェースを変更することが望ましい場合がある。しかしながら、クラスの外部インターフェースを変更することは、ソフトウェアシステム全体にわたって影響を与える効果(ripple-on effect)を有する可能性がある。たとえば、クラスAにおいて、メソッドfoo()の名称がbar()に変更された場合、システム全体にわたるすべてのクラスにおいて、A::foo()の参照子が、A::bar()に変更されるべきである。
コンピュータコードを(通例、プログラムの外部から見た振る舞いを変えることなく)修正するために一般に使用される用語は、「リファクタリング」である。上述したようなシステム全体にわたって参照子を変更するプロセスは、一種のリファクタリングである。近年、リファクタリングは、さまざまなプログラミング言語の統合開発環境(IDE)によってサポートされる操作になっている。このようなIDEの一例は、Eclipse Foundationから入手可能なEclipse Frameworkである。
リファクタリング操作をサポートできるIDEであっても、リファクタリング操作とSCMとの間の相互作用には問題がある(もっと正確に言えば、通信が欠如している)。単一のリファクタリング操作は、複数のクラス及びそれらのクラスを記憶するファイルの変更を生み出す可能性がある。一般的なSCMシステムは、ファイルのバージョンのみを記憶するので、行われたさまざまな変更間の関係(たとえば、複数の変更が同じリファクタリング操作によって生み出されたという事実)及び行われたさまざまな変更の理由は失われる。これは、特に、ファイルの或るバージョンから次のバージョンへの変更を「マージ」する時に問題となる。その理由は、多数の変更がリファクタリングに起因する場合があるが、この知識がSCMシステムに保持されないからである。
本発明のさまざまな実施の形態は、SCMのファイルに影響を与えるイベント(たとえば、リファクタリング)に関する情報を記憶するように動作できるシステム、方法、及びコンピュータプログラム製品を対象とする。一例では、SCMは、リファクタリング操作等、ファイルを修正する操作を個別のイベントとしてそれぞれ記録するように構成される。イベントが、他のファイル及びバージョンに対して影響を与える効果を有する場合、イベントは、操作によって影響を受けるファイル及びファイルバージョンにリンクされ、多くの関係したファイル内で変更を引き起こしたものの知識が保存されるようにする。この例では、SCMは、1つ又は2つ以上のソースファイルの変換の原因についてのメタ情報を記録する。このメタ情報は、たとえばファイル改訂版をマージする時に適用することができる。
たとえば、1つの特定の方法例は、クラス及びそれらのクラスの参照子に対する変更を記録する。この方法例は、複数のファイルに対して操作を行い、それによって、クラス及びそのクラスの参照子を変更することを含む。次に、操作の発生の記録が作成される。いくつかの例では、記録は、操作のタイプ、操作中に行われた変更、及び操作によって影響を受けるファイルバージョンを示す情報を含む。記録の作成に続いて、イベント(たとえば、第2の操作)が発生すると、たとえば、第1の操作及び/又は第2の操作に起因する起こり得る不一致を求めるために、記録が調べられる。さらに、この例では、ファイル及び/又はバージョン間で一致を生み出すために、1つ又は2つ以上のファイルに対して操作を行う選択肢がユーザに提示される。
本発明のさまざまな実施の形態は、開発者が、多数のファイルを使用する複雑なコードを管理するのを容易にする。従来技術のシステムについては、多くの場合、SCM機能がテキスト処理及びファイル記憶に限定されるべきである一方、コードのパースはIDEにのみ存在すべきであると信じられていた。本発明のさまざまな実施の形態は、コードパース機能をSCMに含み、このようなSCMを、ファイルに対する変更を記録するように適合させることによって、この慣習を無視する。さまざまな実施の形態は、従来技術のシステムを上回る1つ又は2つ以上の利点を提供することができる。
上記は、以下の本発明の詳細な説明をより良く理解できるように、本発明の機能及び技術的利点をいくぶん広く概説している。本発明の特許請求の範囲の主題を形成する本発明の別の機能及び利点は、以下で説明される。開示される概念及び特定の実施の形態を、本発明の同じ目的を実現するために他の構造を修正又は設計するための基礎として容易に利用できることが、当業者には十分認識されるべきである。また、このような均等な構成が、添付の特許請求の範囲に述べられた本発明の趣旨及び範囲から逸脱しないことも当業者にはっきり理解されるべきである。本発明の、特徴的であると考えられる新規な機能は、さらに別の目的及び利点と共に、その編成及び操作の方法の双方について、以下の説明を添付図と共に検討した時に、以下の説明からより良く理解される。しかしながら、図のそれぞれは、例示及び説明の目的でのみ提供されており、本発明の境界の定義として意図されていないことが、明らかに理解されるべきである。
次に、本発明のより完全な理解のため、添付図面を参照しながら、以下のとおり説明する。
図1は、本発明の一実施形態に従って適合されている例示的なシステム100の説明図である。システム100は、コード記述/開発モジュール101を含む。いくつかの実施形態では、モジュール101は、プログラマの入力を受け取ってプログラマに情報を表示するユーザインターフェースを有するIDEである。プログラマは、リファクタリング操作及び他の操作を行うことを含む、コンピュータ実行可能コードの記述及び編集を行うのに、モジュール101を使用することができる。
モジュール101は、SCMシステム102と通信する。SCMシステム102は、ファイルのバージョンを記憶する。一般的な操作では、モジュール101を使用してプログラマによって開発され編集されたコードは、SCM102のデータベース104にさまざまなファイルで記憶される。SCM102は、さらに、イベント記録モジュール103も含み、イベント記録モジュール103は、SCM102のファイルに影響を与えるイベントについてのメタ情報を保存するように動作することができる。プログラマは、システム101の使用を通じて、特に、マージの期間中、及び、コードの複雑さの管理を要する他のタスクの期間中に、このメタ情報を利用することができる。SCM102は、リファクタリング操作を含む、さまざまな操作によって変更されたファイル及びファイルバージョンを管理するのに使用することができる。本発明のさまざまな実施形態によって適合可能なリファクタリング操作には、たとえば、
「if」条件文のポリモフィズムへの置換、
フィールドのカプセル化、
メソッド抽出(1つの大きなメソッドから2つ以上のメソッドの作成)、
タイプ生成、
プルアップ及びプッシュダウン、並びに、
メソッドのリネーム、
が含まれる。
図1では、モジュール101及び102は、説明図の便宜上、別々に示されている。いくつかの実施形態では、モジュール101及び102は、互いに相互作用する別個のコンピュータプログラムであり、同じプロセッサ上で実行することもできるし、異なるプロセッサ上で実行することもできる。実際には、モジュール101及び102は、ローカルエリアネットワーク(LAN)、インターネット、有線又は無線による他のネットワーク等のネットワークによって接続された異なるコンピュータ上で存在することができる。他の実施形態では、モジュール101及び102は、IDE及びSCMを含む製品スイート等、同じコンピュータプログラムの一部である。
次の例は、システム100が、クラスの外部インターフェースを一致した状態に保ちながら、リファクタリング操作を行い、次いで、別のファイルをマージするのに使用される可能なシナリオを示すために提供されている。
クラスAはソースファイルA.javaにおいて定義され、現在の改訂版は34である。
クラスBはソースファイルB.javaにおいて定義され、現在の改訂版は11である。
クラスCはソースファイルC.javaにおいて定義され、現在の改訂版は19である。
クラスDはソースファイルD.javaにおいて定義され、現在の改訂版は42である。
さらにこの例では、クラスB及びDは、クラスAの参照子を含む。プログラマ1は、クラスAのメソッドfoo()の名称をbar()に変更することを決定する。プログラマ1は、モジュール101を通じてリファクタリング操作を起動する。モジュール101は、このメソッド名の変更がクラスB及びDにも影響があることを依存関係解析(dependency analysis)を通じて見分ける。したがって、モジュール101は、モジュール102をトリガして、この変更を記録する。モジュール102は、リファクタリング操作Rの表現(たとえば、「クラスAにおいて、foo()をbar()に変更し、A::foo()を参照する他のすべてのクラスも修正する」)を記憶する。また、モジュール102は、クラスAの新しい改訂版35、クラスBの新しい改訂版12、及びクラスDの新しい改訂版43も作成する。次に、モジュール102は、これらの新しい改訂版及び古い改訂版を操作Rにリンクさせて、変更の理由を記録する。
図2は、本発明の一実施形態によるSCM(たとえば、モジュール102)のファイルの例示的なエントリー200の説明図である。エントリー200は、上述したプログラマ1のメソッド名変更に応答して作成されるデータベースエントリーの一例である。エントリー200は、この変更が行われたことを示す情報を含むことに加えて、変更の原因の性質(この例では、メソッド名変更リファクタリング)を示す情報も含む。エントリー200の上のエントリー及び下のエントリーは、省略記号に置き換えられて、特に、開発中のプログラムがかなり複雑である場合に、所与のデータベースのエントリーがデータベースの多くのエントリーのうちの1つであり得ることを示している。エントリー200の記憶の仕方は、さまざまな実施形態間で異なる可能性がある。たとえば、このエントリーは、当該エントリーが参照するソースファイルと共にデータベース(たとえば、データベース104)に記憶されているファイル内の多くのエントリーのうちの1つである可能性がある。これに加えて又はこれに代えて、エントリー200は、ソースファイルとは別個に記憶されているファイル内に存在する場合もある。さらに、さまざまな実施形態は、他の操作に関係付けられたデータとは別個のそれ自身のファイル内の操作に関係付けられたデータを記憶する場合がある。また、本発明のさまざまな実施形態は、ファイルに対する操作に関するメタ情報を記憶する時に、エントリー200に示された情報のタイプの追加、省略、又は並べ替えが可能であることにも留意すべきである。
後に、プログラマ1の同僚であるプログラマ2が、プログラマ1の変更のいくつかを組み込むことを決定する。プログラマ2は、ファイルB.javaの改訂版8を使用してきており、最新改訂版12に追いつきたい。彼がファイルB.javaをマージしている時、モジュール102は、改訂版12の変更のうちの1つがリファクタリング操作によって引き起こされたものであることを彼にアラートする。モジュール102は、プログラマ2がマージの一部としてリファクタリング操作を適用したいか否かを尋ねる。図3は、本発明の一実施形態に従って適合されている例示的なダイアログ300の説明図である。ダイアログ300は、この例では、マージ操作に応答してプログラマ2に表示され、プログラマ2からの入力を受け取るためのボタン301A及び301Bを含む。
この例では、プログラマ2は、インターフェースの参照子をファイル間で一致した状態に依然として維持しつつ、クラスDの旧バージョンを周囲に保持したい。したがって、プログラマ2は、「はい」の選択肢を選択することを(モジュール102のインターフェース又はモジュール101のインターフェースを通じて)モジュール102に示し、それによって、自身のファイルにリネーム操作を適用するようにモジュール102に命令する。これに応答して、モジュール102は、リネーム操作をクラスA、B、及びDに適用する。プログラマ2は、クラスDの最新バージョンを使用したくなくても、リネーム操作を適用した後は、すべてのクラスについて一致した一組のインターフェース及び参照子を有する。
従来技術のシステムでは、マージは、上記例ほど簡単でもなく直観的でもなかったであろう。従来技術のシステムでは、プログラマ2は、ファイルB.javaのみをマージし、存在しない関数A::bar()の未定義の参照子を見つけていたであろう。プログラマ2は、次に、1)メソッド名変更がいつ導入されたかを知るためにA.javaのバージョンを検索し、2)A.javaのそのバージョンをマージし、3)D.javaにおける未定義の参照子を見つけなければならなかったであろう。D.javaはA::foo()を参照するが、A::foo()はもはや存在しない。プログラマ2は、Dの最新バージョンを所望しないので、A::foo()の起動をA::bar()に手作業で変更しなければならないことになる。
図4は、本発明の一実施形態に従って適合されている例示的な方法400の説明図である。方法400は、いくつかの実施形態では、図1のモジュール101及び102と同じ又は類似の1つ又は2つ以上のモジュールを実行するプロセッサベースのデバイス(たとえば、パーソナルコンピュータ、マルチプロセッササーバタイプコンピュータ等)によって実行される。多くの例におけるプロセッサベースのデバイスとユーザとの間の対話は、グラフィカルユーザインターフェース(GUI)を通じたものである。ただし、いくつかの実施形態は、テキストベースのインターフェース及び視覚障害者用のインターフェース等、他の種類のインターフェースを使用することが可能である。
ステップ401において、第1のファイル内の第1のクラスに対して第1の操作が行われ、それによって、第1のファイル内の第1のクラスが修正される。このような操作の一例は、クラスのメソッドの名称を変更するリファクタリング操作である。第1のクラスを修正することによって、第2のクラス内における第1のクラスの参照子に不一致が引き起こされ、第2のクラスは、第2のファイルに記憶される。たとえば、第2のクラスが第1のメソッドを参照する時、第1のクラス内のメソッドの名称の変更によって、そのメソッド名及び参照子は一致しないことになる。
ステップ402において、第2のクラス内の参照子が、修正された第1のクラスと一致するように修正される。たとえば、第2のクラス内の参照子は、メソッドの名称変更を反映するように変更される。
ステップ403において、記録が作成される。この記録は、第1のクラス及び第2のクラスが修正されていることの表示を含む。このような記録の一例は、図2に示されている。この記録は、さらに、第1の操作によって影響を受けるファイルバージョンの表示も含むことができる。
ステップ404において、この記録を使用して、第1のクラス及び第2のクラスの修正が第2の操作に影響を与えることが見分けられる。クラスに対する前の操作によって影響を受ける第2の操作の一例は、第1のクラス又は第2のクラスに対する変更を含むファイルのバージョンをマージするマージ操作である。いくつかの実施形態例では、さまざまな操作の記録が、IDEの操作中に調べられて、所与の操作が前の操作によって影響を受けるか否かが判断される。また、ステップ404は、要求された操作が、1つ又は2つ以上の前のクラス変更操作によって影響を受けることをプログラマに通知すること、及び、第1の操作を(全体的又は部分的に)適用して、その結果のクラスバージョンを全体を通じて一致したものにするために選択を行うプロンプトをユーザに与えることも含むことができる。
ステップ405において、見分けることに応答して、第1のファイルと第2のファイルとの間の一致を生み出すために、第1の操作が行われる。たとえば、第2の操作によって、ファイルバージョンが、メソッド又は参照子に対する変更を含むように更新されると、1つ又は2つ以上のファイルに対して第1の操作を行い、それらのメソッド及び参照子を全体を通じて一致したものとすることができる。
方法400は、一連の別個のステップとして示されているが、さまざまなステップの追加、削除、修正、及び/又は再配置が、実施形態の範囲内にあることに留意すべきである。たとえば、方法400のステップは、たとえ単一のシッティング(single sitting)の期間中であっても、開発中に、プログラマによって1回又は2回以上繰り返すことができる。方法400は、本発明の実施形態がリネーム操作を記録し、マージ操作後にファイル間の一致を生み出すシナリオを示している。ただし、リファクタリング操作を含む他の操作が、いくつかの実施形態によって適合可能であるので、リネームは、本発明の一実施形態によって記録できるさまざまな操作のうちの1つにすぎないことに留意すべきである。たとえば、別の実施形態例では、SCMは、メソッド抽出操作が、1つのメソッドから3つのメソッドを作成したことを示すメタ情報を作成する。SCMは、自身のコードパース機能を使用して、変更が行われたことを見分け、ファイルにメタ情報を記録する。後に、マージ操作等の別の操作が行われると、SCMは、マージされたさまざまなファイルが抽出メソッドによって影響を受けると判断し、それらの他のファイル内で抽出を行う。さらに、本発明のさまざまな実施形態は、たとえば、このようなコードをパースし、変更がそのコードに対していつ行われるかを見分けるようにシステムを構成することによって、非オブジェクト指向型システムでの使用に適合することができる。
SCMシステムを通じて大きなコードベースを維持するとき、従来技術のシステムを使用している場合に特定の変更又は一組の変更を引き起こしたものを思い出す(又は推測する)ことは、多くの場合、難しい。このような問題は、リファクタリングの場合に多くあるように、変更が複数のソースファイルに適用される場合に特に深刻となる可能性がある。本発明のさまざまな実施形態は、コード変更の結果のみを記憶するのではなく、コード変更の表示を記憶することによって、多くの場合、複雑なソースコードの管理を簡単にすることができる。
たとえば、ファイルをマージするとき、ファイル変更操作をマージの一部として適用することができる。換言すれば、ソースファイルAがマージされるとき、変更(すなわち、リファクタリング操作又は他の操作の発生)は、ソースファイルB及びDに適用され、これらのソースファイルB及びDも変更による影響を受ける。このようなコンセプトは、SCMシステムが個々のファイルのバージョンしか記録しない既存のパラダイムを上回っている。換言すれば、本発明のさまざまな実施形態によって、SCMシステムは、ファイル自体を記憶することに加えて、ファイル(又はファイル群)に対して行われる操作に関する情報も記憶することが可能になる。
要約すれば、本発明のさまざまな実施形態は、2つ以上のファイルを伴う複雑なソフトウェアシステムにおける変更を管理する作業を大幅に簡単化することができる。管理する複雑さが、今日のソフトウェア開発の主な課題のうちの1つであるので、さまざまな実施形態は、生産性に大きな影響を与えることができる。
本発明の実施形態のさまざまな要素は、コンピュータ実行可能命令を介して実施されるときは、本質的には、このようなさまざまな要素の操作を定義するソフトウェアコードとなる。これらの実行可能命令又はソフトウェアコードは、可読媒体(たとえば、ハードドライブ媒体、光媒体、EPROM、EEPROM、テープ媒体、カートリッジ媒体、フラッシュメモリ、ROM、メモリスティック等)から得ることができる。実際には、可読媒体は、情報を記憶できる任意の媒体を含むことができる。
図5は、本発明の実施形態に従って適合されている一例のコンピュータシステム500を示している。すなわち、コンピュータシステム500は、本発明の実施形態を実施できる一例のシステム(図1の実施態様例のモジュール101、102、及び103を実行するコンピュータ等)を備える。中央処理装置(CPU)501は、システムバス502に結合されている。CPU501は、任意の汎用CPUとすることができる。しかしながら、本発明は、CPU501が、本明細書で説明したような発明の操作をサポートする限り、CPU501のアーキテクチャによって制限されるものではない。CPU501は、本発明の実施形態によるさまざまな論理命令を実行することができる。たとえば、CPU501は、図4と共に上述した例示的な操作フローに従ってマシンレベルの命令を実行することができる。
コンピュータシステム500は、好ましくは、ランダムアクセスメモリ(RAM)503を備える。RAM503は、SRAM、DRAM、SDRAM等とすることができる。コンピュータシステム500は、好ましくは、読み出し専用メモリ(ROM)504を含む。ROM504は、PROM、EPROM、EEPROM等とすることができる。RAM503及びROM504は、当該技術分野で既知のように、ユーザデータ及びシステムデータ並びにプログラムを保持する。
また、コンピュータシステム500は、好ましくは、入出力(I/O)アダプタ505、通信アダプタ511、ユーザインターフェースアダプタ508、及びディスプレイアダプタ509も含む。I/Oアダプタ505、ユーザインターフェースアダプタ508、及び/又は通信アダプタ511は、一定の実施形態では、ユーザが、コードに対する編集、コードに対する操作、新しいコードのドラフト等の情報を入力するために、コンピュータシステム500と対話することを可能にすることができる。
I/Oアダプタ505は、好ましくは、ハードドライブ、コンパクトディスク(CD)ドライブ、フレキシブルディスクドライブ、テープドライブ等の1つ又は2つ以上のようなストレージデバイス(複数可)506をコンピュータシステム500に接続している。これらのストレージデバイスは、たとえば、RAM503が、データを記憶することに関連したメモリ所要量について十分でない時に利用することができる。通信アダプタ511は、好ましくは、コンピュータシステム500をネットワーク512(たとえば、インターネット、LAN、無線ネットワーク等)に結合するようになっている。ユーザインターフェースアダプタ508は、キーボード513、ポインティングデバイス507、マイク514等のユーザ入力デバイス、及び/又は、スピーカ(複数可)515等の出力デバイスをコンピュータシステム500に結合する。ディスプレイアダプタ509は、ディスプレイデバイス510上の表示を制御して、たとえば、本発明の実施形態のユーザインターフェース(図3のユーザインターフェース等)を表示するようにCPU501によって駆動される。
本発明は、システム500のアーキテクチャに限定されるものではないことが十分認識されよう。たとえば、任意の適したプロセッサベースのデバイスを利用することができる。このプロセッサベースのデバイスには、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピューティングデバイス、コンピュータワークステーション、及びマルチプロセッササーバが含まれるが、これらに限定されるものではない。その上、本発明の実施形態は、特定用途向け集積回路(ASIC)又は大規模集積(VLSI)回路上に実施することもできる。実際には、当業者は、本発明の実施形態による論理操作を実行できる任意の個数の適した構造を利用することができる。
本発明及びその利点を詳細に説明してきたが、添付の特許請求の範囲によって画定される本発明の趣旨及び範囲から逸脱することなく、さまざまな変更、代用、及び改変を本明細書で行えることが理解されるべきである。その上、本願の範囲は、この明細書で説明されるプロセス、マシン、製品、組成物、手段、方法、及びステップの特定の実施形態に限定されるように意図されていない。当業者が本発明の開示から容易に認識するように、本明細書で説明した対応する実施形態と実質的に同じ機能を実行するか又は実質的に同じ結果を達成する、現在存在するか又は後に開発されるプロセス、マシン、製品、組成物、手段、方法、又はステップが、本発明に従って利用されてもよい。したがって、添付の特許請求の範囲は、このようなプロセス、マシン、製品、組成物、手段、方法、又はステップをその範囲内に含むように意図されている。
本発明の一実施形態に従って適合されている1つの例示的なシステムの説明図である。 本発明の一実施形態によるSCMのファイルの1つの例示的なエントリーの説明図である。 本発明の一実施形態に従って適合されている1つの例示的なダイアログの説明図である。 本発明の一実施形態に従って適合されている1つの例示的な方法の説明図である。 本発明の一実施形態に従って適合されている一例のコンピュータシステムを示す図である。

Claims (10)

  1. コンピュータコードに対して行われる操作を記録する方法(400)であって、
    第1のファイル内のコードに対して第1の操作を行うこと(401)であって、それによって、前記第1のファイル内の前記コードを修正し、該第1のファイル内の前記コードを修正することは、第2のファイルに記憶されているコードとの不一致を引き起こす、第1の操作を行うこと(401)、
    前記第1のファイル内の前記修正されたコードと一致するように前記第2のファイル内の前記コードを修正すること(402)、及び
    前記第1のファイル内の前記コード及び前記第2のファイル内の前記コードが修正されたことの表示を含む記録(200)を作成すること(403)、
    を含む、方法。
  2. 前記第1のファイル内の前記コード及び前記第2のファイル内の前記コードの前記修正を第2の操作と比較すること(404)、
    前記第1のファイル内の前記コード及び前記第2のファイル内の前記コードの前記修正が前記第2の操作に影響を与えることを、前記記録を使用して見分けること(404)、及び
    前記見分けることに応答して前記第1の操作を行うこと(405)であって、前記第1のファイルと前記第2のファイルとの間の一致を生み出す、前記第1の操作を行うこと(405)、
    をさらに含む、請求項1に記載の方法。
  3. 前記第1の操作は、前記第1のファイル内の第1のクラスのメソッドの名称と、前記第2のファイル内の前記メソッドの参照子とを変更するリファクタリング操作であり、前記第2の操作は、前記第2のファイルのバージョンを変更するマージ操作である、請求項2に記載の方法。
  4. 前記作成された記録は、前記第1の操作による影響を受けるファイルのバージョンに関する情報を含む、請求項1に記載の方法。
  5. 前記作成された記録は、前記第1の操作の性質を示す情報を含む、請求項1に記載の方法。
  6. コンピュータプログラムロジックが記録されたコンピュータ可読媒体(503、504、506)を有するコンピュータプログラム製品であって、
    (a)コンピュータ(500)によって実行されると、複数のファイルに対して第1の修正操作を行うコード(401)と、
    (b)前記コンピュータによって実行されると、前記第1の修正操作の記録(200)を作成するコード(403)と、
    (c)前記コンピュータによって実行されると、第2の修正操作が前記ファイルの1つ又は2つ以上に対して行われる時に、前記作成された記録を調べるコード(404)と、
    を含む、コンピュータプログラム製品。
  7. 前記コンピュータによって実行されると、前記第1の修正操作による影響を受ける前記ファイルのバージョンの表示を前記記録に記憶するコードをさらに含む、請求項6に記載のコンピュータプログラム製品。
  8. 前記第1の修正操作は、クラスと該クラスの参照子とを変更するリファクタリング操作である、請求項6に記載のコンピュータプログラム製品。
  9. 前記コンピュータによって実行されると、記録を調べることに基づいて、前記リファクタリングをもう一度行うための選択肢(300)を提示するコードをさらに含む、請求項8に記載のコンピュータプログラム製品。
  10. 複数のファイル内のコードの作成及び編集を行う開発モジュール(101)であって、前記コードの一部を変更し、前記複数のファイル全体にわたって前記コードの一部の参照子を前記変更と一致したものにする操作を行う、開発モジュール(101)と、
    前記開発モジュールと通信し、前記複数のファイルを記憶する管理モジュール(102)であって、前記操作の記録(200)を作成して記憶する、管理モジュール(102)と、
    を備える、システム(100)。
JP2008198212A 2007-08-31 2008-07-31 コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品 Pending JP2009059351A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/848,890 US20090064100A1 (en) 2007-08-31 2007-08-31 System, method, and computer program product for recording operations performed on computer source code

Publications (1)

Publication Number Publication Date
JP2009059351A true JP2009059351A (ja) 2009-03-19

Family

ID=40409525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008198212A Pending JP2009059351A (ja) 2007-08-31 2008-07-31 コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品

Country Status (2)

Country Link
US (1) US20090064100A1 (ja)
JP (1) JP2009059351A (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266589B2 (en) * 2008-05-08 2012-09-11 International Business Machines Corporation Optimizing the handling of source code requests between a software configuration management (SCM) system and a software integrated development environment (IDE) using projected ancillary data
US8473902B2 (en) * 2009-08-07 2013-06-25 International Business Machines Corporation Identifying source code elements for refactoring
US8316224B2 (en) * 2009-08-31 2012-11-20 Red Hat, Inc. Systems and methods for tracking a history of changes associated with software packages and configuration management in a computing system
US8443361B2 (en) * 2009-08-31 2013-05-14 Red Hat, Inc. Systems and methods for tracking a history of changes associated with software packages in a computing system
US9727352B2 (en) * 2009-11-02 2017-08-08 Red Hat, Inc. Utilizing history of changes associated with software packages to manage computing systems
US10489150B2 (en) * 2015-05-05 2019-11-26 Netflix, Inc. Software dependency shading

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804682B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
US7237236B2 (en) * 2002-08-22 2007-06-26 International Business Machines Corporation Method and apparatus for automatically determining optimum placement of privileged code locations in existing code
US7076764B2 (en) * 2002-09-05 2006-07-11 Bea Systems, Inc. System and method for software module architecture language and compliance checking
US20050065937A1 (en) * 2003-09-22 2005-03-24 International Business Machines Corporation Virtual resources method, system, and service
US7669188B2 (en) * 2004-12-03 2010-02-23 Palo Alto Research Center Incorporated System and method for identifying viable refactorings of program code using a comprehensive test suite
US7451439B2 (en) * 2004-12-03 2008-11-11 Palo Alto Research Center Incorporated System and method for automatically identifying compound refactorings of program code through quantitative metric analysis
US20060241961A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Methods of optimizing legacy application layer control structure using refactoring
US20070094637A1 (en) * 2005-10-24 2007-04-26 International Business Machines Corporation System, method, and computer program product for enabling coexistence of related software
US7856626B2 (en) * 2006-01-26 2010-12-21 International Business Machines Corporation Method of refactoring methods within an application

Also Published As

Publication number Publication date
US20090064100A1 (en) 2009-03-05

Similar Documents

Publication Publication Date Title
US10565095B2 (en) Hybrid testing automation engine
WO2015078343A1 (zh) 用于web开发系统的开发方法和web开发系统
US9465590B2 (en) Code generation framework for application program interface for model
US7984424B2 (en) Isolating declarative code to preserve customizations
US10296305B2 (en) Method and device for the automated production and provision of at least one software application
US11836477B1 (en) Automated backward-compatible function updates
US8375351B2 (en) Extensible rapid application development for disparate data sources
US7810069B2 (en) Methods and systems for relating data structures and object-oriented elements for distributed computing
US8392880B2 (en) Rapid application development for database-aware applications
US8312113B2 (en) Managing shell configurations to dynamically control user computing environments
JP2005078649A (ja) ブランド化のフレームワーク
WO2010118416A2 (en) Software database system and process of building and operating the same
JP2009059351A (ja) コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品
JP2013518321A (ja) パターンベースのユーザインターフェース
US7730495B2 (en) Declaratively defined control actions
US10540151B1 (en) Graphical customization of a firmware-provided user interface (UI)
KR20060120670A (ko) 소프트웨어 스위트를 구축하기 위한 시스템 및 방법
US9244706B2 (en) Command line shell command generation based on schema
US11693652B2 (en) Automated authoring of software solutions from a data model
KR100985192B1 (ko) 소프트웨어 개발 시스템
US8490068B1 (en) Method and system for feature migration
Kousen Gradle Recipes for Android: Master the New Build System for Android
US10311392B2 (en) Just in time compilation (JIT) for business process execution
Schwichtenberg et al. Commercial Tools
EP4323863A1 (en) Automated authoring of software solutions from a data model