JPH103383A - パッチ作成システム - Google Patents

パッチ作成システム

Info

Publication number
JPH103383A
JPH103383A JP17573796A JP17573796A JPH103383A JP H103383 A JPH103383 A JP H103383A JP 17573796 A JP17573796 A JP 17573796A JP 17573796 A JP17573796 A JP 17573796A JP H103383 A JPH103383 A JP H103383A
Authority
JP
Japan
Prior art keywords
source file
patch
file
correction
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.)
Granted
Application number
JP17573796A
Other languages
English (en)
Other versions
JP2907129B2 (ja
Inventor
Shoichi Nakamura
省一 中村
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP8175737A priority Critical patent/JP2907129B2/ja
Publication of JPH103383A publication Critical patent/JPH103383A/ja
Application granted granted Critical
Publication of JP2907129B2 publication Critical patent/JP2907129B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】変数(データ)単位のパッチや、コンパイラに
より最適化されたコードに対しても正確でかつ効率的に
パッチを作成するとともに、パッチの維持管理を容易に
する。 【解決手段】ソースファイル中のソースプログラムを修
正するソースファイル修正手段1と、修正前のソースフ
ァイルと修正後のソースファイルの間で差分が検出され
た部分を変数単位及び関数単位に分割するソースファイ
ル分割手段2と、変数単位及び関数単位に分割された前
記差分が検出された部分についての修正前のソースファ
イルと修正後のソースファイルをコンパイルするコンパ
イル手段3と、コンパイルにより生成されたオブジェク
トファイルを比較しその差分情報からパッチを生成する
パッチ生成手段4と、を備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、交換機等のシステ
ムソフトウェアに代表される大規模ソフトウェアの部分
的修正に関し、特にこのような修正に広く利用されるパ
ッチの作成システムに関する。
【0002】
【従来の技術】交換機等の大規模システムソフトウェア
を修正する際には、システムソフトウェア全体を取り替
えるのではなく、修正したい部分のみを部分的に更新す
る方式がとられてきている。なお、このような方式は
「パッチ」と呼ばれている。このようにしてシステムソ
フトウェアを部分的に更新するのは、全体を取り換える
場合には大規模システムソフトウェア全体が問題なく動
作するか否かを再検証する必要があり、これには多大な
労力が必要とされるためであり、検証時間が最小となる
ように必要最低限の変更にとどめられている。
【0003】従来、このようなパッチは、人手によりア
センブラ言語もしくは機械語イメージで作成されていた
が、最近では、RISC(reduced instruction set co
mputer)プロセッサの出現やコンパイラの最適化技術の
発達によりソフトウェア開発者が意図したCPUの命令
の実行順序がコンパイラの最適化技術により並び替えら
れるため、コンパイラにより最適化された後にアセンブ
ラ言語または機械語イメージでソフトウェアの動作を解
析することが難しくなってきた。このため、誤りのない
パッチを人手により作成することが難しくなってきてい
る。
【0004】このような状況は、コンパイラの最適化技
術により性能を引き出そうとしているRISCプロセッ
サにおいて特に顕著となっている。
【0005】そこで、アセンブラ言語や機械語イメージ
でソフトウェアを変更するのではなく、ソースファイル
のレベルでソースプログラムを修正した後にソースファ
イルからパッチを自動的に作成する方式が提案されるよ
うになってきた。
【0006】例えば、特開平3−121532号公報に
おいては、修正前のソースファイルと修正後のソースフ
ァイルをコンパイラでコンパイルしてオブジェクトファ
イルを生成し、両方のオブジェクトファイルを比較して
両者の差分からパッチを作成する方式が提案されてい
る。
【0007】また、特開昭63−211432号公報に
おいては、修正前のソースファイルと修正後のソースフ
ァイルをコンパイラでコンパイルしてオブジェクトファ
イルを生成し、両方のオブジェクトファイルを比較する
が、このときにコンパイラがオブジェクトファイルに対
してソースファイルの行番号情報を付し、この行番号情
報をもとに両方のオブジェクトファイルをソースファイ
ルの行番号単位に比較して両者の差分からパッチを作成
する方式が提案されている。
【0008】
【発明が解決しようとする課題】しかしながら、前記特
開平3−121532号公報に記載された従来の方式の
ように、修正前のソースファイルと修正後のソースファ
イルをコンパイラでコンパイルしてオブジェクトファイ
ルを生成し、両方のオブジェクトファイルを比較して両
者の差分からパッチを作成する方式では、機械語命令に
ついては差分が明白となるが、データについては差分が
明確にならないという問題がある。
【0009】その理由は、ソースファイル中に定義され
た変数(データ)のオブジェクトファイル中での出現順
序が他のデータ定義の状況により異なったり、変数(デ
ータ)の属性やサイズに関する詳細情報がオブジェクト
ファイル中にはないためである。
【0010】また、前記特開昭63−211432号公
報に記載された従来の方式のように、修正前のソースフ
ァイルと修正後のソースファイルをコンパイラでコンパ
イルしてオブジェクトファイルを生成し、両方のオブジ
ェクトファイルを比較する際に、コンパイラが付した行
番号情報をもとに両方のオブジェクトファイルをソース
ファイルの行番号単位に比較して両者の差分からパッチ
を作成する方式では、同じ行番号に対して生成されたオ
ブジェクトファイル中の機械語の差分をとるのが難しく
なっている。
【0011】その理由は、コンパイラの最適化技術の発
達により、ソフトウェアが効率よく実行されるようにコ
ンパイラが機械語命令を並び替えてしまい、同じ行番号
のソースファイルから生成された機械語命令が分散され
て連続しないためである。
【0012】従って、本発明は前述した事情に鑑みてな
されたものであり、修正前のソースファイルと修正後の
ソースファイルを変数(データ)単位及び関数単位に分
割し、分割されたソースファイルをコンパイルしてオブ
ジェクトファイルを生成し、両者の差分を比較すること
により、変数(データ)単位のパッチや、コンパイラに
より最適化されたコードに対しても正確でかつ効率的に
パッチを作成するとともに、パッチの維持管理を容易に
するパッチ作成システムを提供することを目的とする。
【0013】
【課題を解決するための手段】前述した目的を達成する
ため、本発明は、第1に、ソースファイル中のソースプ
ログラムを修正する手段(図1の1:ソースファイル修
正手段)と、修正前のソースファイルと修正後のソース
ファイルを変数単位及び関数単位に分割する手段(図1
の2:ソースファイル分割手段)と、変数単位及び関数
単位に分割された修正前のソースファイルと修正後のソ
ースファイルをコンパイルする手段(図1の3:コンパ
イル手段)と、コンパイルにより生成されたオブジェク
トファイルを比較しその差分情報からパッチを生成する
手段(図1の4:パッチ生成手段)と、を備えたことを
特徴とするパッチ作成システムを提供する。
【0014】また、本発明の第1のパッチ作成システム
は、前記分割する手段(図1の2:ソースファイル分割
手段)が、前記修正前のソースファイルと前記修正後の
ソースファイルの間で差分が検出された部分を変数単位
及び関数単位に分割し、前記コンパイルする手段(図1
の3:コンパイル手段)が、変数単位及び関数単位に分
割された前記差分が検出された部分についての前記修正
前のソースファイルと前記修正後のソースファイルをコ
ンパイルするようにするとよい。
【0015】さらに、本発明は、第2に、ソースファイ
ル中のソースプログラムを修正する手段(図6の1:ソ
ースファイル修正手段)と、修正前のソースファイルと
修正後のソースファイルの間で差分が検出された部分を
変数単位及び関数単位に分割する手段(図6の2:ソー
スファイル分割手段)と、変数単位及び関数単位に分割
された前記差分が検出された部分についての修正後のソ
ースファイルをコンパイルする手段(図6の3:コンパ
イル手段)と、コンパイルにより生成されたオブジェク
トファイルからパッチを生成する手段(図6の4:パッ
チ生成手段)と、を備えたことを特徴とするパッチ作成
システムを提供する。
【0016】前述した構成のもとで、本発明の第1のパ
ッチ作成システムによれば、修正前のソースファイルと
ソースファイル修正手段1により修正された修正後のソ
ースファイルとに対して、ソースファイル分割手段2が
変数単位及び関数単位にそれぞれのソースファイルを分
割し、それぞれ分割されたソースファイルをコンパイル
手段3によりコンパイルして変数単位及び関数単位のオ
ブジェクトファイルを生成し、さらにパッチ生成手段4
が修正前と修正後で同じ名前(変数名または関数名)の
オブジェクトファイルを比較し、その差分情報をもとに
パッチファイルを生成する。
【0017】また、本発明の第2のパッチ作成システム
によれば、修正前のソースファイルとソースファイル修
正手段1により修正された修正後のソースファイルとの
間で差分が検出された部分に対して、ソースファイル分
割手段2が変数単位及び関数単位に修正後のソースファ
イルを分割し、その分割された修正後のソースファイル
をコンパイル手段3によりコンパイルして変数単位及び
関数単位の修正後のオブジェクトファイルを生成し、さ
らにパッチ生成手段4がそのオブジェクトファイルから
パッチファイルを生成する。
【0018】
【発明の実施の形態】次に、本発明の実施の形態につい
て図面を参照して詳細に説明する。
【0019】
【実施の形態1】まず、本発明の第1の実施の形態につ
いて説明する。
【0020】図1は、本発明の第1の実施の形態の構成
を示すブロック図である。また、図2は、本発明の第1
の実施の形態及び後述する第2の実施の形態が前提とす
るハードウェア環境を示すブロック図である。
【0021】図2を参照すると、本発明の第1の実施の
形態は、キーボード等の入力装置6と、プログラム制御
により動作するデータ処理装置7と、情報を記憶する記
憶装置8と、ディスプレイ装置や印刷装置等の出力装置
9と、から構成される計算機システム5により実現され
る。
【0022】図1及び図2を参照すると、記憶装置8に
は、ソースファイル修正手段1、ソースファイル分割手
段2、コンパイル手段3及びパッチ生成手段4が格納さ
れており、またパッチ生成の対象であるシステムソフト
ウェアのソースファイルも格納されている。さらに、ソ
ースファイル修正手段1により出力される修正後ソース
ファイル21と、ソースファイル分割手段2により生成
される修正前変数単位ソースファイル12、修正前関数
単位ソースファイル13、修正後変数単位ソースファイ
ル22及び修正後関数単位ソースファイル23と、コン
パイル手段3により生成される修正前変数単位オブジェ
クトファイル14、修正前関数単位オブジェクトファイ
ル15、修正後変数単位オブジェクトファイル24及び
修正後関数単位オブジェクトファイル25と、パッチ生
成手段4により生成されるパッチファイル31と、パッ
チ管理情報ファイル30と、が格納される。
【0023】ソースファイル修正手段1、ソースファイ
ル分割手段2、コンパイル手段3及びパッチ生成手段4
はデータ処理装置7上で動作する。
【0024】ソースファイル修正手段1は、人手により
ソースファイルに修正を施すためのものであり、テキス
トエディタが用いられる。
【0025】図3は、図1に示したソースファイル分割
手段2の構成を示すブロック図である。図1及び図3を
参照すると、ソースファイル分割手段2は、修正前ソー
スファイル11と修正後ソースファイル21中のプログ
ラミング言語の構文を解析し構文解析木を作成するソー
スファイル解析手段32と、構文解析木から同じ変数名
の情報及び同じ関数名の情報を比較する変数情報・関数
情報比較手段33と、比較の結果差分のあった変数及び
関数に対してソースファイルを生成するソースファイル
生成手段34と、を備える。
【0026】コンパイル手段3は、分割された変数単位
のソースファイル及び関数単位のソースファイルをコン
パイルし、オブジェクトファイルを生成するものであ
り、ソースファイル中のプログラミング言語用のコンパ
イラが用いられる。
【0027】図4は、図1に示したパッチ生成手段4の
構成を示すブロック図である。図1及び図4を参照する
と、パッチ生成手段4は、同じ名前の修正前変数単位オ
ブジェクトファイル14と修正後変数単位オブジェクト
ファイル24との差分、及び同じ名前の修正前関数単位
オブジェクトファイル15と修正後関数単位オブジェク
トファイル25との差分を検出するオブジェクトファイ
ル比較手段35と、パッチを投入するアドレス等の情報
を管理しているパッチ管理情報ファイル30を入出力す
るパッチ管理情報入出力手段36と、パッチファイル3
1を生成するパッチファイル生成手段37と、を備え
る。
【0028】次に、図1、図3、図4及び図5を参照し
て、本発明の第1の実施の形態の動作を説明する。図5
は、本発明の第1の実施の形態の動作を説明するための
フローチャートである。
【0029】まず、ソースファイル修正手段1により修
正前ソースファイル11が人手により修正され、修正後
ソースファイル21が作成される(ステップA1)。
【0030】修正前ソースファイル11と修正後ソース
ファイル21がソースファイル分割手段2に入力され、
ソースファイル分割手段2のソースファイル解析手段3
2により修正前ソースファイル11中のプログラミング
言語が解析され、変数単位と関数単位に分けて構文解析
木が作成される(ステップA2)。同様に、修正後ソー
スファイル21中のプログラミング言語が解析され、変
数単位と関数単位に分けて構文解析木が作成される(ス
テップA3)。
【0031】その後、ソースファイル分割手段2の変数
情報・関数情報比較手段33により、修正前ソースファ
イル11と修正後ソースファイル21から作成された構
文解析木について修正前と修正後で同じ名前の変数名同
士の情報及び同じ名前の関数名同士の情報が比較され、
両者に差分がないかが確認される(ステップA4)。
【0032】差分が検出された変数名に対しては、ソー
スファイル分割手段2のソースファイル生成手段34に
より修正前変数単位ソースファイル12と修正後変数単
位ソースファイル22が生成され、同様に、差分が検出
された関数名に対しては、修正前関数単位ソースファイ
ル13と修正後関数単位ソースファイル23が生成され
る(ステップA5)。
【0033】生成された修正前と修正後の変数単位ソー
スファイルと関数単位ソースファイルがコンパイル手段
3によりコンパイルされ、修正前変数単位オブジェクト
ファイル14、修正後変数単位オブジェクトファイル2
4、修正前関数単位オブジェクトファイル15及び修正
後関数単位オブジェクトファイル25が生成される(ス
テップA6)。
【0034】生成されたオブジェクトファイルはパッチ
生成手段4に渡される。パッチ生成手段4のオブジェク
トファイル比較手段35により、同じ変数名同士の修正
前と修正後のオブジェクトファイル及び同じ関数名同士
の修正前と修正後のオブジェクトファイルがワード単位
に比較され差分が検出される(ステップA7)。
【0035】その後、パッチ生成手段4のパッチ管理情
報入出力手段36により、パッチ投入可能エリアの情報
並びに変数名及び関数名の現状のアドレス情報が管理さ
れているパッチ管理情報ファイル30が入力され、パッ
チを投入するアドレスが求められる。この求められたア
ドレス情報とオブジェクトファイルの差分情報からパッ
チ生成手段4のパッチファイル生成手段37がパッチフ
ァイル31を生成する。また、パッチによりパッチエリ
ア管理情報が更新されるので、更新された内容をパッチ
生成手段4のパッチ管理情報入出力手段36によりパッ
チ管理情報ファイル30に出力する(ステップA8)。
【0036】このように、本発明の第1の実施の形態に
よれば、変数単位及び関数単位にソースファイルを分割
して変数及び関数のパッチを作成することにより、変数
(データ)に対しても正確なパッチを作成することがで
きるとともに、コンパイラにより最適化されたコードに
対しても正確でかつ効率的にパッチを作成することがで
きる。
【0037】
【実施の形態2】次に、本発明の第2の実施の形態につ
いて説明する。
【0038】図6は、本発明の第2の実施の形態の構成
を示すブロック図である。
【0039】図6を参照すると、本発明の第2の実施の
形態は、基本的に前述した第1の実施の形態と同様の構
成を備えるが、パッチ生成手段4のオブジェクトファイ
ル比較手段35において、修正前変数単位オブジェクト
ファイルと修正後変数単位オブジェクトファイルとの差
分、及び修正前関数単位オブジェクトファイルと修正後
関数単位オブジェクトファイルとの差分を検出すること
なく、修正後の変数単位オブジェクトファイル124と
修正後関数単位オブジェクトファイル125の全体をパ
ッチする点で異なる。すなわち、オブジェクトファイル
比較手段35が不要であるという点で異なる。
【0040】次に、図3、図4、図6及び図7を参照し
て、本発明の第2の実施の形態の動作を説明する。図7
は、本発明の第2の実施の形態の動作を説明するための
フローチャートである。
【0041】図7に示したステップB1ないしステップ
B4の処理は、図5に示したステップA1ないしステッ
プA4の処理と同一であるため、ここでの説明は省略す
る。
【0042】ソースファイル分割手段2の変数情報・関
数情報比較手段33により差分が検出された変数名に対
しては、ソースファイル分割手段2のソースファイル生
成手段34により修正後変数単位ソースファイル122
が生成され、同様に、差分が検出された関数名に対して
は、修正後関数単位ソースファイル123が生成される
(ステップB5)。
【0043】生成された修正後の変数単位ソースファイ
ルと関数単位ソースファイルがコンパイル手段3により
コンパイルされ、修正後変数単位オブジェクトファイル
124と修正後関数単位オブジェクトファイル125が
生成される(ステップB6)。
【0044】生成されたオブジェクトファイルはパッチ
生成手段4に渡される。パッチ生成手段4のパッチ管理
情報入出力手段36により、パッチ投入可能エリアの情
報並びに変数名及び関数名の現状のアドレス情報が管理
されているパッチ管理情報ファイル30が入力され、パ
ッチを投入するアドレスが求められる。この求められた
アドレス情報とオブジェクトファイルの全体からパッチ
生成手段4のパッチファイル生成手段37がパッチファ
イル31を生成する。また、パッチによりパッチエリア
管理情報が更新されるので、更新された内容をパッチ生
成手段4のパッチ管理情報入出力手段36によりパッチ
管理情報ファイル30に出力する(ステップB7)。
【0045】このように、本発明の第2の実施の形態に
よれば、コンパイラにより最適化されたコードに対して
差分を求めてパッチを生成する場合には通常、パッチが
散在し複雑なパッチとなりソフトウェアの維持管理が難
しくなるが、同一変数名同士及び関数名同士のオブジェ
クトの差分を検出せずに関数全体をパッチとすることに
より、パッチが1つになりソフトウェアの維持管理が容
易になる。
【0046】
【実施例】次に、前述した本発明の実施の形態をより具
体的に説明するために、本発明の実施例について図面を
参照して詳細に説明する。
【0047】
【実施例1】まず、前述した本発明の第1の実施の形態
の一実施例(第1の実施例)について説明する。
【0048】図8は、本発明の第1の実施例及び後述す
る第2の実施例における修正前ソースファイルの一例を
示す図である。また、図9は、本発明の第1の実施例及
び後述する第2の実施例における修正後ソースファイル
の一例を示す図である。なお、ソースファイル中のソー
スプログラムを記述するプログラミング言語にはC言語
を用いている。
【0049】図5を参照すると、ソースファイル修正手
段により図8に示した修正前ソースファイルが人手によ
り修正され、図9に示した修正後ソースファイルが作成
されたとする(ステップA1)。
【0050】ソースファイル分割手段のソースファイル
解析手段は、図8に示した修正前ソースファイルを入力
とし、変数data1、data2、data3に対して構文解析木を
作成するとともに、関数funcA、funcBに対しても構文解
析木を作成する(ステップA2)。同様に、図9に示し
た修正後ソースファイルを入力とし、変数data1、data
2、data3に対する構文解析木及び関数funcA、funcBに対
する構文解析木を作成する(ステップA3)。
【0051】その後、ソースファイル分割手段の変数情
報・関数情報比較手段により、図8に示した修正前ソー
スファイルから作成された変数data1、data2、data3に
対する構文解析木と図9に示した修正後ソースファイル
から作成された変数data1、data2、data3に対する構文
解析木について同じ名前のもの同士が比較され、data
1、data2に修正前と修正後に差分があることが検出され
る。同様に、図8に示した修正前ソースファイルから作
成された関数funcA、funcBに対する構文解析木と図9に
示した修正後ソースファイルから作成された関数func
A、funcBに対する構文解析木について同じ名前のもの同
士が比較され、funcBに差分があることが検出される
(ステップA4)。
【0052】差分が検出された変数data1、data2に対し
ては、ソースファイル分割手段のソースファイル生成手
段により、図10に示した修正前変数単位ソースファイ
ル41、42と図11に示した修正後変数単位ソースフ
ァイル51、52が生成され、同様に、差分が検出され
た関数funcBに対しては、図10に示した修正前関数単
位ソースファイル43と図11に示した修正後関数単位
ソースファイル53が生成される(ステップA5)。な
お、これらの生成されたソースファイルはコンパイルさ
れるので、コンパイルエラーが発生しないように、また
不要なデータが生成されないように、関数に対するソー
スファイルには関数内で使用されている変数data1に対
して外部参照宣言を付加する。具体的には、図10に示
した修正前関数単位ソースファイル43と図11に示し
た修正後関数単位ソースファイル53の第1行目がこれ
にあたる。
【0053】生成された修正前変数単位ソースファイル
41、42、修正後変数単位ソースファイル51、5
2、修正前関数単位ソースファイル43及び修正後関数
単位ソースファイル53がコンパイル手段によりコンパ
イルされ、修正前変数単位オブジェクトファイル、修正
後変数単位オブジェクトファイル、修正前関数単位オブ
ジェクトファイル及び修正後関数単位オブジェクトファ
イルが生成される(ステップA6)。
【0054】生成されたオブジェクトファイルはパッチ
生成手段に渡される。パッチ生成手段のオブジェクトフ
ァイル比較手段により、同じ変数名data1、data2同士の
修正前と修正後のオブジェクトファイル及び同じ関数名
funcB同士の修正前と修正後のオブジェクトファイルが
ワード単位に比較され差分が検出される(ステップA
7)。
【0055】その後、パッチ生成手段のパッチ管理情報
入出力手段により、パッチ投入可能エリアの情報並びに
変数名及び関数名の現状のアドレス情報が管理されてい
るパッチ管理情報ファイルが入力され、変数data1、dat
a2及び関数funcBに対するパッチを投入するアドレスが
求められる。ただし、変数data1は初期値をもってない
データでありデータの内容を修正する必要はないので、
パッチを生成する必要はない。この求められたアドレス
情報とオブジェクトファイルの差分情報からパッチ生成
手段のパッチファイル生成手段が変数data2及び関数fun
cBに対するパッチファイルを生成する。また、パッチに
よりパッチエリア管理情報が更新されるので、更新され
た内容をパッチ生成手段のパッチ管理情報入出力手段に
よりパッチ管理情報ファイルに出力する(ステップA
8)。
【0056】
【実施例2】次に、前述した本発明の第2の実施の形態
の一実施例(第2の実施例)について説明する。
【0057】図7を参照すると、ソースファイル修正手
段により図8に示した修正前ソースファイルが人手によ
り修正され、図9に示した修正後ソースファイルが作成
されたとする(ステップB1)。
【0058】ソースファイル分割手段のソースファイル
解析手段は、図8に示した修正前ソースファイルを入力
とし、変数data1、data2、data3に対して構文解析木を
作成するとともに、関数funcA、funcBに対しても構文解
析木を作成する(ステップB2)。同様に、図9に示し
た修正後ソースファイルを入力とし、変数data1、data
2、data3に対する構文解析木及び関数funcA、funcBに対
する構文解析木を作成する(ステップB3)。
【0059】その後、ソースファイル分割手段の変数情
報・関数情報比較手段により、図8に示した修正前ソー
スファイルから作成された変数data1、data2、data3に
対する構文解析木と図9に示した修正後ソースファイル
から作成された変数data1、data2、data3に対する構文
解析木について同じ名前のもの同士が比較され、data
1、data2に修正前と修正後に差分があることが検出され
る。同様に、図8に示した修正前ソースファイルから作
成された関数funcA、funcBに対する構文解析木と図9に
示した修正後ソースファイルから作成された関数func
A、funcBに対する構文解析木について同じ名前のもの同
士が比較され、funcBに差分があることが検出される
(ステップB4)。
【0060】差分が検出された変数data1、data2に対し
ては、ソースファイル分割手段のソースファイル生成手
段により、図11に示した修正後変数単位ソースファイ
ル51、52が生成され、同様に、差分が検出された関
数funcBに対しては、図11に示した修正後関数単位ソ
ースファイル53が生成される(ステップB5)。な
お、これらの生成されたソースファイルはコンパイルさ
れるので、コンパイルエラーが発生しないように、また
不要なデータが生成されないように、関数に対するソー
スファイルには関数内で使用されている変数data1に対
して外部参照宣言を付加する。具体的には、図11に示
した修正後関数単位ソースファイル53の第1行目がこ
れにあたる。
【0061】生成された修正後変数単位ソースファイル
51、52及び修正後関数単位ソースファイル53がコ
ンパイル手段によりコンパイルされ、修正後変数単位オ
ブジェクトファイル及び修正後関数単位オブジェクトフ
ァイルが生成される(ステップB6)。
【0062】生成されたオブジェクトファイルはパッチ
生成手段に渡される。パッチ生成手段のパッチ管理情報
入出力手段により、パッチ投入可能エリアの情報並びに
変数名及び関数名の現状のアドレス情報が管理されてい
るパッチ管理情報ファイルが入力され、変数data1、dat
a2及び関数funcBに対するパッチを投入するアドレスが
求められる。ただし、変数data1は初期値をもってない
データでありデータの内容を修正する必要はないので、
パッチを生成する必要はない。この求められたアドレス
情報とオブジェクトファイルの全体からパッチ生成手段
のパッチファイル生成手段が変数data2及び関数funcBに
対するパッチファイルを生成する。また、パッチにより
パッチエリア管理情報が更新されるので、更新された内
容をパッチ生成手段のパッチ管理情報入出力手段により
パッチ管理情報ファイルに出力する(ステップB7)。
【0063】
【発明の効果】以上説明したように、本発明によれば、
修正前のソースファイルと修正後のソースファイルから
パッチファイルを自動生成するため、正確でかつ効率的
にソフトウェアの変更時のパッチを作成することがで
き、パッチ作成における生産性の向上と品質の向上を図
ることができる。
【0064】その理由は、従来人手により行っていたパ
ッチ作成を自動化するものであり、またパッチ作成には
CPUの機械語を理解できるほどの技術が要求されてい
たが、ソースファイルの修正から自動的にパッチが生成
されるためである。さらに、コンパイラの最適化技術の
発達により、機械語命令の並び替えが行われたオブジェ
クトファイルに対して人手によりパッチを作成する場合
には、並び替えられた機械語命令を理解するのが難しく
誤ったパッチが作成される可能性があるが、パッチの自
動生成によりこのような誤ったパッチが作成されること
がなくなるためである。
【0065】また、本発明によれば、ソフトウェア中で
使用されている変数(データ)に対しても正確なパッチ
を作成することができる。
【0066】その理由は、修正前のソースファイルと修
正後のソースファイルを変数(データ)単位に構文解析
を行い、構文解析結果に差分があることを認識した上
で、変数単位にソースファイルを分割し、コンパイル後
のオブジェクトファイルの差分を検出するためである。
なお、変数単位に分割しないと、修正前のソースファイ
ルから作成されたオブジェクトファイル中の変数(デー
タ)の出現順序と修正後のソースファイルから作成され
たオブジェクトファイル中の変数(データ)の出現順序
が必ずしも一致せず、同じ変数(データ)同士の比較が
できない場合がある。
【0067】さらに、本発明によれば、修正後の変数単
位または関数単位にパッチを作成することにより、パッ
チを投入したソフトウェアの維持管理が容易になること
である。
【0068】その理由は、コンパイラの最適化技術によ
りCPUの機械語命令が並び替えられてしまうため、修
正前のソースファイルから作成されたオブジェクトファ
イルと修正後のソースファイルから作成されたオブジェ
クトファイルとの差分をパッチした場合に差分が散在
し、例えば1つの関数に対するパッチが数十箇所にバラ
バラに散在することになり、作成したパッチに関して維
持管理する情報が増えてしまうが、修正後のソースファ
イルから生成されたオブジェクトファイルの全体を1つ
のパッチとすることで維持管理すべき情報が少なくなる
ためである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態の構成を示すブロッ
ク図である。
【図2】本発明の第1及び第2の実施の形態が前提とす
るハードウェア環境を示すブロック図である。
【図3】図1及び図6に示したソースファイル分割手段
2の構成を示すブロック図である。
【図4】図1及び図6に示したパッチ生成手段4の構成
を示すブロック図である。
【図5】本発明の第1の実施の形態の動作を説明するた
めのフローチャートである。
【図6】本発明の第2の実施の形態の構成を示すブロッ
ク図である。
【図7】本発明の第2の実施の形態の動作を説明するた
めのフローチャートである。
【図8】本発明の第1及び第2の実施例における修正前
ソースファイルの一例を示す図である。
【図9】本発明の第1及び第2の実施例における修正後
ソースファイルの一例を示す図である。
【図10】図8に示した修正前ソースファイルを本発明
の第1の実施例におけるソースファイル分割手段により
分割した後のソースファイルを示す図である。
【図11】図9に示した修正後ソースファイルを本発明
の第1及び第2の実施例におけるソースファイル分割手
段により分割した後のソースファイルを示す図である。
【符号の説明】
1 ソースファイル修正手段 2 ソースファイル分割手段 3 コンパイル手段 4 パッチ生成手段 5 計算機システム 6 入力装置 7 データ処理装置 8 記憶装置 9 出力装置 10 パッチ作成システム 11 修正前ソースファイル 12 修正前変数単位ソースファイル 13 修正前関数単位ソースファイル 14 修正前変数単位オブジェクトファイル 15 修正前関数単位オブジェクトファイル 21 修正後ソースファイル 22 修正後変数単位ソースファイル 23 修正後関数単位ソースファイル 24 修正後変数単位オブジェクトファイル 25 修正後関数単位オブジェクトファイル 30 パッチ管理情報ファイル 31 パッチファイル 32 ソースファイル解析手段 33 変数情報・関数情報比較手段 34 ソースファイル生成手段 35 オブジェクトファイル比較手段 36 パッチ管理情報入出力手段 37 パッチファイル生成手段 41 修正前変数単位ソースファイル 42 修正前変数単位ソースファイル 43 修正前関数単位ソースファイル 51 修正後変数単位ソースファイル 52 修正後変数単位ソースファイル 53 修正後関数単位ソースファイル 111 修正前ソースファイル 121 修正後ソースファイル 122 修正後変数単位ソースファイル 123 修正後関数単位ソースファイル 124 修正後変数単位オブジェクトファイル 125 修正後関数単位オブジェクトファイル

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】ソースファイル中のソースプログラムを修
    正する手段と、 修正前のソースファイルと修正後のソースファイルを変
    数単位及び関数単位に分割する手段と、 変数単位及び関数単位に分割された修正前のソースファ
    イルと修正後のソースファイルをコンパイルする手段
    と、 コンパイルにより生成されたオブジェクトファイルを比
    較しその差分情報からパッチを生成する手段と、 を備えたことを特徴とするパッチ作成システム。
  2. 【請求項2】前記分割する手段が、前記修正前のソース
    ファイルと前記修正後のソースファイルの間で差分が検
    出された部分を変数単位及び関数単位に分割し、 前記コンパイルする手段が、変数単位及び関数単位に分
    割された前記差分が検出された部分についての前記修正
    前のソースファイルと前記修正後のソースファイルをコ
    ンパイルすることを特徴とする請求項1記載のパッチ作
    成システム。
  3. 【請求項3】ソースファイル中のソースプログラムを修
    正する手段と、 修正前のソースファイルと修正後のソースファイルの間
    で差分が検出された部分を変数単位及び関数単位に分割
    する手段と、 変数単位及び関数単位に分割された前記差分が検出され
    た部分についての修正後のソースファイルをコンパイル
    する手段と、 コンパイルにより生成されたオブジェクトファイルから
    パッチを生成する手段と、 を備えたことを特徴とするパッチ作成システム。
JP8175737A 1996-06-14 1996-06-14 パッチ作成システム Expired - Lifetime JP2907129B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8175737A JP2907129B2 (ja) 1996-06-14 1996-06-14 パッチ作成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8175737A JP2907129B2 (ja) 1996-06-14 1996-06-14 パッチ作成システム

Publications (2)

Publication Number Publication Date
JPH103383A true JPH103383A (ja) 1998-01-06
JP2907129B2 JP2907129B2 (ja) 1999-06-21

Family

ID=16001374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8175737A Expired - Lifetime JP2907129B2 (ja) 1996-06-14 1996-06-14 パッチ作成システム

Country Status (1)

Country Link
JP (1) JP2907129B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681830B1 (en) 2000-11-28 2004-01-27 Henkel Consumer Adhesives, Inc. Hand-held adhesive tape dispenser
KR100455566B1 (ko) * 2000-06-30 2004-11-09 인터내셔널 비지네스 머신즈 코포레이션 코드 갱신을 위한 장치 및 방법
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100455566B1 (ko) * 2000-06-30 2004-11-09 인터내셔널 비지네스 머신즈 코포레이션 코드 갱신을 위한 장치 및 방법
US6681830B1 (en) 2000-11-28 2004-01-27 Henkel Consumer Adhesives, Inc. Hand-held adhesive tape dispenser
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data

Also Published As

Publication number Publication date
JP2907129B2 (ja) 1999-06-21

Similar Documents

Publication Publication Date Title
US9268539B2 (en) User interface component
US7788640B2 (en) Using code analysis to generate documentation
US9710243B2 (en) Parser that uses a reflection technique to build a program semantic tree
JP4057938B2 (ja) コンパイラ、コンパイル方法、及びプログラム開発ツール
US20050065953A1 (en) System and method for changing defined elements in a previously compiled program using a description file
US20060041873A1 (en) Computer system and method for verifying functional equivalence
JPH0869380A (ja) ソースプログラムチェック装置
JP2009176064A (ja) ソフトウェアリファクタリング支援装置および方法
Zhang et al. Automated extraction of grammar optimization rule configurations for metamodel-grammar co-evolution
JP2907129B2 (ja) パッチ作成システム
JP5369565B2 (ja) プログラムのエラー情報出力装置、エラー情報出力方法およびエラー情報出力プログラム
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
CN116028061A (zh) 字节码文件生成方法、页面跳转方法、装置及计算机设备
JP3196675B2 (ja) 言語処理方式
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
JP2004070561A (ja) デバッグ装置
JPS5922140A (ja) 対話型コンパイル方式
JPH0728827A (ja) 図面説明文生成装置
Fraser Integrating VDM-SL into the continuous delivery pipelines of cloud-based software
CN118426825B (zh) 一种基于大语言模型双向智能问答代码补充方法和系统
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JP3368795B2 (ja) コンパイル制御方法、コンパイル装置及び記録媒体
JP2002082811A (ja) コンパイル方法および記録媒体
JPH06337780A (ja) ロードモジュールのパッチ修正装置および方法
CN117931157A (zh) Otx语言引擎构建和编辑方法、装置及计算机设备

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990302