JP2000089966A - 既存プログラムのオブジェクト指向への移行方法 - Google Patents

既存プログラムのオブジェクト指向への移行方法

Info

Publication number
JP2000089966A
JP2000089966A JP10253966A JP25396698A JP2000089966A JP 2000089966 A JP2000089966 A JP 2000089966A JP 10253966 A JP10253966 A JP 10253966A JP 25396698 A JP25396698 A JP 25396698A JP 2000089966 A JP2000089966 A JP 2000089966A
Authority
JP
Japan
Prior art keywords
procedure
variables
program
variable
global
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
JP10253966A
Other languages
English (en)
Inventor
Toshiaki Suenobe
寿朗 末延
Masaki Honma
正喜 本間
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 Building Systems Co Ltd
Original Assignee
Hitachi Building Systems Co 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 Building Systems Co Ltd filed Critical Hitachi Building Systems Co Ltd
Priority to JP10253966A priority Critical patent/JP2000089966A/ja
Publication of JP2000089966A publication Critical patent/JP2000089966A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 開発済みのプログラムに対してオブジェクト
化への移行を円滑に行えるとともに、プログラムの保守
作業を効率良く行える既存プログラムのオブジェクト指
向への移行方法の提供。 【解決手段】 既存プログラム10に対して大域変数を
隠蔽してアクセス関数経由にデータアクセス方法の統一
処理を行い、大域変数をグループ化し、これらのグルー
プ毎にアクセス関数を定義するデータアクセスの局所化
を行い、グループ化された大域変数を使用する手続きを
できるだけ分割する実装手続きの分割処理を行い、最後
に前記の分割した手続きと大域変数のグループに対し
て、大域変数からオブジェクト内部の変数に自らのデー
タを用いてセットするとともに、大域変数に書き戻し可
能とするオブジェクト化の処理を行う。これにより、既
存プログラム10に対してオブジェクト指向技術の適用
を4の段階に分けてある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータに用
いられる既存プログラムのオブジェクト指向への移行方
法に関する。
【0002】
【従来の技術】一般にコンピュータに用いられるプログ
ラムは、コンピュータユーザからの要求を反映して仕様
変更を繰り返すことでより使いやすくなっていく。ま
た、コンピュータユーザの業務や社会環境の変化に伴
い、プログラムの変更が必要となることも多い。このよ
うなソフトウエアライフサイクルの保守フェーズに、多
くの費用と工数が費やされており、これを低減すること
は大きな課題となっている。
【0003】しかしながら、必要な機能を中心にコンピ
ュータプログラムを構築していくいわゆる手続き型の従
来の方法では、変更の影響範囲が限定できないことや、
機能追加によって既存プログラムを変更しなければなら
ないため、プログラム保守作業の工数低減を阻害すると
いう問題がある。このような問題を解決し、プログラム
保守の工数を低減するため、プログラム変更による影響
範囲の限定が可能であり、機能追加による既存プログラ
ムの変更が不必要で、かつ作成したプログラムが再利用
可能なオブジェクト指向プログラム開発技術(以下、オ
ブジェクト指向技術と称する)が有効であると言われて
いる。
【0004】そこで従来、例えば、特開平6−6786
6号公報に記載されているように、C言語のようにカプ
セル化の機能がないプログラミング言語において、オブ
ジェクト指向技術の一つである抽象データ型を用いて設
計を行うことで生産効率の良いプログラミング作業を行
うための方式が提案されている。
【0005】図9はこの種の従来の方法で開発されたプ
ログラム構造の一例を示す図、図10は従来の手法で開
発されたプログラム実行の手順を示すフローチャートで
ある。
【0006】図9に示す従来の方法では、大域変数1内
にプログラム全体で使用する3種類の変数A、B、Cが
手続き2から直接参照されている。例えば、変数A、
B、Cに関して(C=A×A+B)という演算を行う場
合、このプログラム実行を図10に示す処理手順にした
がって行うようになっている。すなわち、まず手順SA
1として、手続き2が大域変数1内の変数Aを取得した
後、手順SA2として変数Aに関する演算(A×A)を
行い、更に手順SA3として、手続き1が大域変数1内
の変数Bを取得してから、手順SA4として、前記の手
順SA2で演算した変数Aに関する演算結果(A×A)
と前記の手順SA3で取得した変数Bの{(A×A)+
B}なる演算を行い、手順SA5として、この演算結果
を大域変数1内の変数Cに格納して終了する。以上説明
したように、この従来の方法ではプログラム全体で使用
する変数A、B、Cが手続き2から直接参照できる構成
である。
【0007】
【発明が解決しようとする課題】ところで、上述した従
来技術にあっては、プログラムの新規開発時に適用する
ことにより、その後のプログラム開発および保守を容易
にするようになっているが、開発済みのプログラムへの
適用は考慮されていないという問題がある。
【0008】また、従来のプログラム開発手法で開発さ
れたプログラムに対してオブジェクト指向技術を適用す
ることは、かなり高度の知識や能力が要求されるため、
特定のプログラム開発担当者に大きな作業負担と精神的
重圧が掛ったり、多くの開発担当者への教育が必要であ
るとともに、既存プログラムの書き替えなどが発生する
ことにより、完成までに時間と費用が掛かることから、
その適用が難かしいという問題がある。
【0009】本発明はこのような従来技術における実情
に鑑みてなされたもので、開発済みのプログラムに対し
てオブジェクト化への移行を円滑に行えるとともに、プ
ログラムの保守作業を効率良く行うことのできる既存プ
ログラムのオブジェクト指向への移行方法を提供するこ
とにある。
【0010】
【課題を解決するための手段】上記目的を達成するため
に本発明は、既存プログラムに対して、大域変数を隠蔽
してデータアクセス方法をアクセス関数経由に統一する
とともに、データの使用に必要とする初期化や終了に関
する処理を予めアクセス関数に記述しておくデータアク
セス方法の統一である第1の段階と、前記大域変数をグ
ループ化し、これらのグループ毎にアクセス関数を定義
するとともに、データへのアクセスを前記アクセス関数
経由で行うようにしたデータアクセスの局所化である第
2の段階と、グループ化された前記大域変数を使用する
手続きをできるだけ分割するとともに、これらの手続き
がアクセスする前記大域変数のグループ数を極力少なく
するようにした実装手続きの分割である第3の段階と、
これらの第1の段階から第3の段階に行った分割した手
続きと前記大域変数のグループに対して、前記大域変数
からオブジェクト内部の変数に自らのデータを用いてセ
ットするとともに、大域変数に書き戻し可能とするオブ
ジェクト化である第4の段階とから構成した。
【0011】このように構成した本発明では、開発した
既存プログラムに対してオブジェクト指向技術の適用を
4つの段階に分けたので、必要に応じて、最終段階であ
る第4の段階に至る途中の段階でオブジェクト化への移
行を中断することにより、プログラムの保守作業を効率
良く行える。また、プログラム開発担当者への教育も4
つの段階を踏んで徐々に行えるので、複数の作業者の知
識や能力が向上しつつ平準化するため少数の作業者に掛
かる作業負担と精神的重圧が軽減でき、これにより、開
発済みのプログラムに対してオブジェクト化への移行を
円滑に行える。
【0012】
【発明の実施の形態】以下、本発明の実施の形態の既存
プログラムのオブジェクト指向への移行方法を図に基づ
いて説明する。図1は本発明の一実施形態に係る既存プ
ログラムのオブジェクト指向への移行方法を説明する
図、図2は本実施形態の第1の段階であるデータアクセ
ス方法の統一処理を説明する図、図3は本実施形態の処
理手順の一部を示すフローチャート、図4は本実施形態
の第2の段階であるデータアクセスの局所化を説明する
図、図5は本実施形態の第3の段階である実装手続きの
分割処理を説明する図、図6は本実施形態の第4の段階
であるオブジェクト化への処理を説明する図、図7は本
実施形態の第4の段階であるオブジェクト化への処理手
順を示すフローチャート、図8は本実施形態のオブジェ
クト指向技術を用いて開発したプログラムの構造を示す
図である。なお、図2、図4、図5において前述した図
9に示すものと同等のものには同一符号を付してある。
すなわち、1は大域変数、2は手続き、A、B、Cは変
数である。
【0013】本実施形態の移行方法は、図1の既存プロ
グラム10に対してオブジェクト指向技術を適用するた
め、同図1に示す処理手順にしたがって既存プログラム
10のオブジェクト化への移行を行うようになってい
る。すなわち、まず手順S1(第1の段階)としてデー
タアクセス方法の統一を行い、手順S2(第2の段階)
としてデータアクセスの局所化を行い、手順S3(第3
の段階)として実装手続きの分割を行い、最後に手順S
4(第4の段階)としてオブジェクト化への処理を行う
ようになっている。
【0014】次に、上述した手順S1(データアクセス
方法の統一である第1の段階)を図2、図3を用いて詳
しく説明する。手順S1では、図2に示すように、手続
き2と大域変数1間にアクセス関数3を設け、手続き1
から大域変数1を参照する場合、必ずアクセス関数3を
利用するような構成である。
【0015】例えば、図2の大域関数1内の変数A、
B、Cに関して(C=A×A+B)という演算を行う場
合、図3に示す処理手順にしたがって、データアクセス
方法の統一処理を行うようになっている。すなわち、手
順SB1として、大域変数1内の変数Aをアクセス関数
3経由で取得した後、手順SB2として、変数Aに関す
る演算(A×A)を行い、手順SB3として、大域変数
1内の変数Bをアクセス関数3経由で取得し、手順SB
4として、変数Aに関する演算結果(A×A)と変数B
に関する演算{(A×A)+B}を行い、手順SB5と
して、この演算結果を大域変数1内の変数Cにアクセス
関数3経由で格納して終了する。
【0016】このような手順S1(データアクセス方法
の統一である第1の段階)では、必要なデータを使用す
る際に初期化処理や終了処理が必要な場合、アクセス関
数3に必要な処理を記述しておけば良く、具体的には、
プログラム内で使用する変数A、B、Cおよびそれらを
使用する手続き2とは別のファイルに分離した後にst
atic宣言し、手続き2からの直接参照を禁止すると
ともに、大域変数1を分類したファイル内でこれらの大
域変数1にアクセスするための関数を作成し、手続き2
をこれらのアクセス関数3を介在するように書き換える
ようになっている。
【0017】次に、上述した手順S2(データアクセス
の局所化である第2の段階)を図3、図4を用いて詳し
く説明する。手順S2では、図4に示すように、第1の
段階のデータアクセス方法の統一での大域変数1を変数
A、B、C毎に大域変数1A、1B、1Cのように分割
するとともに、これに合わせてアクセス関数3も分割し
て大域変数1A、1B、1Cに対してそれぞれにアクセ
ス関数3A、3B、3Cを設定している。
【0018】ここで、例えば図4に示す大域変数1A、
1B、1C内の変数A、B、Cに関して(C=A×A+
B)という演算を行う場合、図3に示す処理手順にした
がってデータアクセスの局所化を行うようになってい
る。すなわち、手順SB1として、手続き2は大域変数
1A内の変数Aをアクセス関数3A経由で取得するとと
もに、手順SB2として、変数Aに関する演算(A×
A)を行う。また、手順SB3として、手続き2は大域
変数1B内の変数Bをアクセス関数3B経由で取得し、
手順SB4として、手続き2が行った変数Aに関する演
算結果(A×A)と変数Bに関する演算{(A×A)+
B}を行い、手順SB5として、この演算結果を大域変
数1C内の変数Cにアクセス関数3C経由で格納して終
了する。
【0019】このような手順S2(データアクセスの局
所化である第2の段階)は、大域変数1を変数A、B、
C毎にグループ化し、大域変数1A、1B、1Cにそれ
ぞれ分割し、このグループ化した大域変数1A、1B、
1C毎にアクセス関数を定義し、アクセス関数3A、3
B、3C経由でデータにアクセスする。具体的には、大
域変数をstatic宣言するファイルを分割し、それ
ぞれのファイル毎に作成したアクセス関数3A、3B、
3C経由で大域変数1A、1B、1Cへのアクセスを行
うようになっている。
【0020】次に、上述した手順S3(実装手続きの分
割である第3の段階)を図3、図5を用いて詳しく説明
する。手順S3では、図5に示すように、手続き2を手
続き2Aと手続き2Bに分割し、手続き2Aは大域変数
1A内の変数Aをアクセス関数3Aを介して取り出し、
手続き2Bはアクセス関数3Bを介して大域変数1B内
の変数Bを取り出すとともに、手続き2Aで取得した変
数Aや手続き2Aの演算結果を取得し、これらの取得し
たデータを例えば演算しその結果を、大域変数1C内の
変数Cにアクセス関数3Cを介して格納するような構成
である。
【0021】ここで、例えば、図5の大域変数1A、1
B、1C内の変数A、B、Cに関して(C=A×A+
B)という演算を行う場合、図3に示す処理手順にした
がって実装手続きの分割を行うようになっている。すな
わち、手順SB1として、手続き2Aは大域変数1A内
の変数Aをアクセス関数3A経由で取得するとともに、
手順SB2として、変数Aに関する演算(A×A)を行
う。また、手順SB3として、手続き2Bは大域変数1
B内の変数Bをアクセス関数3B経由で取得し、手順S
B4として、手続き2Aが行った変数Aに関する演算結
果(A×A)と変数Bに関する演算{(A×A)+B}
を行い、手順SB5として、この演算結果を大域変数1
C内の変数Cにアクセス関数3C経由で格納して終了す
る。ここで、図5の破線で示す手続き2は、手続き2A
および手続き2Bの統合した働きを示しており、図4に
示す手続き2と等価な働きを行う。
【0022】このような手順S3(実装手続きの分割で
ある第3の段階)では、手続きをできるだけ分割し、個
々の手続きがアクセスする大域変数のグループの数を極
力少なくすることである。
【0023】次に、上述した手順S4(オブジェクト化
である第4の段階)を図6、図7を用いて詳しく説明す
る。手順S4では、図6に示すように、第3の段階の実
装手続きの分割までの手順で分割した手続き2A、2B
と大域変数の組をオブジェクト4に実装し、オブジェク
ト生成時に大域変数1A、1B、1Cと等価で変数A、
B、Cを有する外部変数5A、5B、5Cからオブジェ
クト内に設けられる内部変数4A、4B、4Cに変数
a、b、cをセットし、活動は自らのデータである変数
a、b、cを用いるとともに、消滅時には外部変数5
A、5B、5C内の変数A、B、Cに書き戻す構成にし
ている。これにより、オブジェクトの生成、活動、消滅
を実現できる。この過程では、オブジェクトの名称、内
部変数、実装手続き等の構造を決定するだけで良く、実
装手続きは全段階までに分割したものをほぼそのまま使
用できる。
【0024】すなわち、図7の手順SC1に示すよう
に、まずオブジェクトの初期化として使用する内部デー
タの初期化および外部変数5A、5Bの変数A、Bから
内部変数4A、4Bに変数a、bのデータの読み込みを
行う。次に、手順SC2として、内部変数4Aの変数a
に対する演算(A×A)を行うとともに、手順SC3と
して、演算{(A×A)+B}を行い、手順SC4とし
て、内部変数4Cの変数cへのデータの登録を行う。最
後に手順SC5として、内部変数4A、4B、4Cの変
数a、b、cから外部変数5A、5B、5Cの変数A、
B、Cへそれぞれ登録を行い、オブジェクト終了処理を
行う。
【0025】このような段階的なオブジェクト化への移
行処理により、図8に示すようなプログラムを開発でき
る。すなわち、図8の内部変数6および手続き7を有す
るオブジェクト8は、図示しない他のオブジェクトやユ
ーザからの要求をメッセージ9として受け取り、手続き
7が内部変数6に対する参照や更新を行うように構成さ
れている。
【0026】このように構成した実施形態では、図1に
示すように、既存ソフトウエア10からデータアクセス
方法の統一、データアクセスの局所化、実装手続きの分
割、およびオブジェクト化への処理と段階的にオブジェ
クト指向技術を適用することが可能となるので、既存の
プログラムの機能を失うことなくオブジェクト化への移
行が行えるとともに、プログラム開発担当者への教育も
4つの段階を踏んで徐々に行えるので、複数の作業者の
知識や能力が向上しつつ平準化でき、少数の作業者に掛
かる作業負担と精神的重圧が軽減できる。したがって、
開発済みのプログラムに対してオブジェクト化への移行
を円滑に行える。
【0027】また、本実施形態では、最終段階(手順S
4)であるオブジェクト化に至る前のいずれかの段階
(手順S1〜S3)でも移行作業を中断することができ
るので、既存プログラムのオブジェクト化の移行計画を
少ない人員で長期に行うことができるとともに、プログ
ラムの保守作業を効率良く行える。
【0028】また、本実施形態では、図8の開発したプ
ログラムの内部変数6を参照するのは、オブジェクト8
内部の手続き7のみに特定できるので、オブジェクト8
の外部で行われた変更の影響はオブジェクト8の内部ま
で波及し難いという効果もある。
【0029】
【発明の効果】以上のように構成したので、本発明によ
れば、開発した既存プログラムに対してオブジェクト指
向技術の適用を段階的に行うことによって、開発済みの
プログラムに対してオブジェクト化への移行を円滑に行
えるとともに、プログラムの保守作業を効率良く行え
る。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る既存プログラムのオ
ブジェクト指向への移行方法を説明する図である。
【図2】本実施形態の第1の段階であるデータアクセス
方法の統一処理を説明する図である。
【図3】本実施形態の処理手順の一部を示すフローチャ
ートである。
【図4】本実施形態の第2の段階であるデータアクセス
の局所化を説明する図である。
【図5】本実施形態の第3の段階である実装手続きの分
割処理を説明する図である。
【図6】本実施形態の第4の段階であるオブジェクト化
への処理を説明する図である。
【図7】本実施形態の第4の段階であるオブジェクト化
への処理手順を示すフローチャートである。
【図8】本実施形態のオブジェクト指向技術を用いて開
発したプログラムの構造を示す図である。
【図9】従来の方法で開発されたプログラム構造の一例
を示す図である。
【図10】従来の方法で開発されたプログラム実行の手
順を示すフローチャートである。
【符号の説明】
1、1A、1B、1C 大域変数 2、2A、2B 手続き 3、3A、3B、3C アクセス関数 4 オブジェクト 4A、4B、4C 内部変数 5A、5B、5C 外部関数 6 内部変数 7 手続き 8 オブジェクト 9 メッセージ 10 既存ソフトウエア

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 既存プログラムに対して、大域変数を隠
    蔽してデータアクセス方法をアクセス関数経由に統一す
    るとともに、データの使用に必要とする初期化や終了に
    関する処理を予めアクセス関数に記述しておくデータア
    クセス方法の統一である第1の段階と、 前記大域変数をグループ化し、これらのグループ毎にア
    クセス関数を定義するとともに、データへのアクセスを
    前記アクセス関数経由で行うようにしたデータアクセス
    の局所化である第2の段階と、 グループ化された前記大域変数を使用する手続きをでき
    るだけ分割するとともに、これらの手続きがアクセスす
    る前記大域変数のグループ数を極力少なくするようにし
    た実装手続きの分割である第3の段階と、 これらの第1の段階から第3の段階に行った分割した手
    続きと前記大域変数のグループに対して、前記大域変数
    からオブジェクト内部の変数に自らのデータを用いてセ
    ットするとともに、大域変数に書き戻し可能とするオブ
    ジェクト化である第4の段階とから構成したことを特徴
    とする既存プログラムのオブジェクト指向への移行方
    法。
  2. 【請求項2】 前記既存プログラムに対するオブジェク
    ト化への移行は、前記第1の段階から前記第4の段階ま
    でを段階的に行うようにしたことを特徴とする請求項1
    記載の既存プログラムのオブジェクト指向への移行方
    法。
JP10253966A 1998-09-08 1998-09-08 既存プログラムのオブジェクト指向への移行方法 Pending JP2000089966A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10253966A JP2000089966A (ja) 1998-09-08 1998-09-08 既存プログラムのオブジェクト指向への移行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10253966A JP2000089966A (ja) 1998-09-08 1998-09-08 既存プログラムのオブジェクト指向への移行方法

Publications (1)

Publication Number Publication Date
JP2000089966A true JP2000089966A (ja) 2000-03-31

Family

ID=17258426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10253966A Pending JP2000089966A (ja) 1998-09-08 1998-09-08 既存プログラムのオブジェクト指向への移行方法

Country Status (1)

Country Link
JP (1) JP2000089966A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350624A (ja) * 2000-06-07 2001-12-21 Nec Corp モジュール再分割提案装置およびモジュール再分割提案方法、並びに記録媒体
JP2012203777A (ja) * 2011-03-28 2012-10-22 Hitachi Ltd ソフトウェア部品作成支援装置および方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350624A (ja) * 2000-06-07 2001-12-21 Nec Corp モジュール再分割提案装置およびモジュール再分割提案方法、並びに記録媒体
JP2012203777A (ja) * 2011-03-28 2012-10-22 Hitachi Ltd ソフトウェア部品作成支援装置および方法

Similar Documents

Publication Publication Date Title
JP2666847B2 (ja) 異種言語間連絡方式
US6957228B1 (en) Object oriented apparatus and method for providing context-based class replacement in an object oriented system
US7493606B2 (en) Method for compiling and executing a parallel program
US8271622B2 (en) Method and apparatus for a system management tool to adapt command interface and behavior based on installed features
JPH01154267A (ja) 入出力機器制御プログラムのアドレス解決方法
US7490316B2 (en) Method and apparatus to implement adaptive scripting tool
Tilevich et al. Aspectizing server-side distribution
JP2000089966A (ja) 既存プログラムのオブジェクト指向への移行方法
JPH03126133A (ja) コンパイラ処理方法
JPH03257624A (ja) 画面言語方式
US20020173943A1 (en) Method for parallel simulation on a single microprocessor using meta-models
JP4754021B1 (ja) データベース変換システム
US20020104073A1 (en) Component oriented programming (cop) language
JP2659264B2 (ja) コマンドオプション指定処理装置
JPH01310437A (ja) ロードモジュール生成方式
JP2002132502A (ja) 言語機能解釈による分散オブジェクト自動生成システム及び方法
Elizabeth et al. Contextually communicating sequential processes—a software engineering environment
JP2852402B2 (ja) プログラム開発装置
JP2000231494A (ja) ソフトウェア実行システム及びソフトウェア実行方法
JPH01302413A (ja) 構成定義情報作成方式
JPH03282935A (ja) コンパイル処理装置及びコンパイル処理方式
JPH0250730A (ja) 共通機械語による言語変換方式
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JPH04205039A (ja) 複数osにおける共有ファイル排他制御方式
JPS63285647A (ja) 出力フアイル名の作成方式