JPWO2005029321A1 - プログラムの変換方法及び変換ツール - Google Patents
プログラムの変換方法及び変換ツール Download PDFInfo
- Publication number
- JPWO2005029321A1 JPWO2005029321A1 JP2005514070A JP2005514070A JPWO2005029321A1 JP WO2005029321 A1 JPWO2005029321 A1 JP WO2005029321A1 JP 2005514070 A JP2005514070 A JP 2005514070A JP 2005514070 A JP2005514070 A JP 2005514070A JP WO2005029321 A1 JPWO2005029321 A1 JP WO2005029321A1
- Authority
- JP
- Japan
- Prior art keywords
- program
- word
- lyeebelt
- lyee
- information
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
手続き型言語で書かれている従来のプログラムをLyee構造プログラムへ機械的に変換することを可能とする。 本発明は、所定の整形規則に基づきソース・プログラムを正規化して解析テーブルを生成するステップと、前記解析テーブルから端点単語に着目して該単語に係る生成論理情報を抽出するステップと、前記抽出された生成論理情報に基づき第1のLyeeBELT情報を決定するステップと、前記決定された第1のLyeeBELT情報を言語変換して第2のLyeeBELT情報を生成するステップと、 前記生成された第2のLyeeBELT情報をLyeeALLツール(テンプレート)の所望の位置に代入してコードを得るステップとを具備することを最も主要な特徴とする。LyeeBELT上の正規化されたビジネスロジックにより、後のプログラム保守は、「スパゲッティ」問題がなくなり劇的に平易化され、その結果、ソフトウェアの進化が可能になる。
Description
本発明は、プログラムの変換方法及び変換ツールに関するものである。
過去に開発され長い間保守されてきたソフトウェア・プログラムを新しい実行環境で動作するように書き換えたり、またはある時点までで古くなってしまったアプリケーション言語を新しいアプリケーション言語に変換しなければならないということがよくある。しかし、プログラムを機械的に変換するための方法論はまだ確立されていない。レガシー・ソフトウェア資産の機械的変換は不可能であると考えられているので、プログラムを書き直すか、構成し直す以外には方法がないことになり、新しく生成したソフトウェア・プログラムは、結局は前のものと同じ経路をたどるしかないことになる。
ソフトウェアの実行環境および動作基盤が種々様々である現在の状況においては、ソフトウェア資産の継承および維持の観点から見て、レガシー・システム変換のニーズは非常に高い。しかし、現在使用できる「スクラップ・アンド・ビルド」アプローチは、移行期間およびコストの点でユーザが満足できるものではない。レガシー・プログラムを再生するための種々の試みが行われたが、そのどれも満足できるものではなかった。
本発明は、手続き型言語で書かれている従来のプログラムをLyee(商標)構造プログラムへ機械的に変換することを可能とする、Lyee方法論によるレガシー・システム・プログラムの変換方法及び変換システム、変換ツールを提供することを目的とする。
かかる課題を解決するために本発明は、所定の整形規則に基づきソース・プログラムを正規化して解析テーブルを生成するステップと、前記解析テーブルから端点単語に着目して該単語に係る生成論理情報を抽出するステップと、前記抽出された生成論理情報に基づき第1のLyeeBELT情報を決定するステップと、前記決定された第1のLyeeBELT情報を言語変換して第2のLyeeBELT情報を生成するステップと、前記生成された第2のLyeeBELT情報をLyeeALLツール(テンプレート)の所望の位置に代入してコードを得るステップとを具備することを最も主要な特徴とする。
また本発明は、ソース・プログラムの正規化して解析テーブルを生成するリフォーム部と、前記解析テーブルから端点単語に着目して該単語に係る生成論理情報を抽出する抽出部と、前記抽出された生成論理情報に基づき処理経路図およびLyeeBELTを生成するためのLyeeBELT作成部と、Lyee構造のベクトル生成を行う要素生成部と、前記要素生成部により生成されたLyee構造のベクトルを組み立てることでLyeeプログラムを生成する要素組立部(テンプレート)と、を具備することを最も主要な特徴とする。
レガシー・プログラム変換の全体の作業の流れは次に示すとおりである。その実現における非常に重要な部分は、必要な情報が保証されるはずである実行可能性調査(事前分析)段階であり、新しいシステム環境で再生させるシステムに関する適切な企画と方針を明確にし、それに従ってツールをカスタマイズする。最初のプロセスが完了すれば、ツールにパラメータを登録することにより機械的レガシー・システム変換が実現でき、(レガシープログラムの)ビジネス知識をLyeeBELT(商標)として再構築できる。LyeeBELT上の正規化されたビジネスロジックにより、後のプログラム保守は、「スパゲッティ」問題(つまり、プログラムの論理構造が錯綜し、非整然としているため、後に保守等する際に、膨大な労力を消費することを余儀なくされるという問題。以下同。)がなくなり劇的に平易化され、その結果、ソフトウェアの進化が可能になる。
上記の構成要素を持つ本発明は、方法としても、或いはかかる機能を備えるソフトウェアとしても、該ソフトウェアが搭載される装置・ツール(ソフトウェア自体の場合も含む)としても、さらにはシステムとしても、実現され得る。
本発明によれば、ほぼ機械的なレガシー・システム変換が可能で、またLyeeBELTおよび処理経路図で従来法で編集したプログラムを生成することができる。
それ故、ソフトウェアの再生産サイクルは、従来プログラムをLyeeBELTにし、このLyeeBELTを従来プログラムに戻すという方法で実現できる。これにより、レガシー・システムが抱えている問題が大幅に解決される。
[本発明の概要]
レガシー・システムの再生のいくつかのアプローチの比較再検討に基づいて、この問題に対するLyee方法論の適用について提示し、そのアイデア、関連する手順、および実現したツールについて明らかにする。ソフトウェア生産技術研究所が開発したツールおよびマニュアルにより、プログラムが手続き型言語で書かれている限り、従来のプログラムをLyee構造プログラムへ機械的変換が可能となった。Lyee方法論を使用すれば、プログラムの構造変換に加えて、変換されたプログラムは任意のアプリケーション言語を選択して記述することができる。同時に、システム変換に関連する全く新しいアプローチを導入し、旧プログラムから抽出された大量のデータを編集して、Lyeeタイプの宣言型プログラムの代わりに、論理シーケンスを持つ新しい従来型プログラムを作ることができる。論理シーケンスを持つ新しい従来型プログラムを作るこれらの機能は、独立データ項目の属性、生成式および実行条件に関する情報の集合であるLyeeBELTのコンセプトにより実現することができる。
レガシー・システムの再生のいくつかのアプローチの比較再検討に基づいて、この問題に対するLyee方法論の適用について提示し、そのアイデア、関連する手順、および実現したツールについて明らかにする。ソフトウェア生産技術研究所が開発したツールおよびマニュアルにより、プログラムが手続き型言語で書かれている限り、従来のプログラムをLyee構造プログラムへ機械的変換が可能となった。Lyee方法論を使用すれば、プログラムの構造変換に加えて、変換されたプログラムは任意のアプリケーション言語を選択して記述することができる。同時に、システム変換に関連する全く新しいアプローチを導入し、旧プログラムから抽出された大量のデータを編集して、Lyeeタイプの宣言型プログラムの代わりに、論理シーケンスを持つ新しい従来型プログラムを作ることができる。論理シーケンスを持つ新しい従来型プログラムを作るこれらの機能は、独立データ項目の属性、生成式および実行条件に関する情報の集合であるLyeeBELTのコンセプトにより実現することができる。
レガシー・プログラム変換の全体の作業の流れは次に示すとおりである。その実現における非常に重要な部分は、必要な情報が保証されるはずである実行可能性調査(事前分析)段階であり、新しいシステム環境で再生させるシステムに関する適切な企画と方針を明確にし、それに従ってツールをカスタマイズする。最初のプロセスが完了すれば、ツールにパラメータを登録することにより機械的レガシー・システム変換が実現でき、(レガシープログラムの)ビジネス知識をLyeeBELTとして再構築できる。LyeeBELT上の正規化されたビジネスロジックにより、後のプログラム保守は、「スパゲッティ」問題がなくなり劇的に平易化され、その結果、ソフトウェアの進化が可能になる。
1.事前の実行可能性の調査
2.従来のプログラムのリフォーム処理(プログラムの正規化)
3.抽出データの解析用テーブル(データ解析)
4.処理経路図の生成
5.旧LyeeBELTの生成
6.旧LyeeBELTから新LyeeBELTへの言語変換
7−1.Lyee構造プログラムの組み立て(テンプレート)
7−2.従来型構造のプログラムへの編集(機能編集)
[本稿の構成]
1.目的
2.他のレガシー・システム変換に関する比較研究
3.Lyeeのレガシー変換の独創性
4.Lyeeのレガシー変換の方針および手順
5.Lyeeのレガシー・システム変換ツール
6.種々のシステム変更要求に対する対処手段
7.Lyeeのレガシー・システム変換の残された問題
8.結論
1.Lyee理論によるレガシー変換の目的
過去に開発され長い間保守されてきたソフトウェア・プログラムを新しい実行環境で動作するように書き換えたり、またはある時点までで古くなってしまったアプリケーション言語を新しいアプリケーション言語に変換しなければならないということがよくある。しかし、プログラムを機械的に変換するための方法論はまだ確立されていない。レガシー・ソフトウェア資産の機械的変換は不可能であると考えられているので、プログラムを書き直すか、構成し直す以外には方法がないので、新しく生成したソフトウェア・プログラムは、結局は前のものと同じ経路をたどるしかないことになる。
1.事前の実行可能性の調査
2.従来のプログラムのリフォーム処理(プログラムの正規化)
3.抽出データの解析用テーブル(データ解析)
4.処理経路図の生成
5.旧LyeeBELTの生成
6.旧LyeeBELTから新LyeeBELTへの言語変換
7−1.Lyee構造プログラムの組み立て(テンプレート)
7−2.従来型構造のプログラムへの編集(機能編集)
[本稿の構成]
1.目的
2.他のレガシー・システム変換に関する比較研究
3.Lyeeのレガシー変換の独創性
4.Lyeeのレガシー変換の方針および手順
5.Lyeeのレガシー・システム変換ツール
6.種々のシステム変更要求に対する対処手段
7.Lyeeのレガシー・システム変換の残された問題
8.結論
1.Lyee理論によるレガシー変換の目的
過去に開発され長い間保守されてきたソフトウェア・プログラムを新しい実行環境で動作するように書き換えたり、またはある時点までで古くなってしまったアプリケーション言語を新しいアプリケーション言語に変換しなければならないということがよくある。しかし、プログラムを機械的に変換するための方法論はまだ確立されていない。レガシー・ソフトウェア資産の機械的変換は不可能であると考えられているので、プログラムを書き直すか、構成し直す以外には方法がないので、新しく生成したソフトウェア・プログラムは、結局は前のものと同じ経路をたどるしかないことになる。
ソフトウェアの実行環境および動作基盤が種々様々である現在の状況においては、ソフトウェア資産の継承および維持の観点から見て、レガシー・システム変換のニーズは非常に高い。しかし、現在使用できる「スクラップ・アンド・ビルド」アプローチは、移行期間およびコストの点でユーザが満足できるものではない。次の章で考察するように、レガシー・プログラムを再生するための種々の試みが行われたが、そのどれも満足できるものではなかった。
この問題に適用されたLyee方法論は、全く独自のものであると言える。レガシー変換のLyeeの方法は、最初に、現在のプログラムを単語の単位(データ項目)に分割し、その後で各単語の情報を分析し、情報の必要な部分だけを抽出して新しいプログラムにそれらを使用する。この抽出した情報があれば、新しいプログラムは、提案された新しい環境および/または新しいアプリケーション言語で機械的に再構成される。
Lyeeアプローチの場合でも、例えば、関数またはサブルーチンのようなプログラムの独立した塊に関しては、自動変換を行うことができないか、行うべきでないいくつかの部分がある。しかし、少なくとも、この種のプログラム単位に対しても、機械的処理は行うことができる。Lyeeのレガシー変換方法論とツールが、実際のビジネス環境でうまく実現されるなら、現在のソフトウェアの再生期間およびコストは最小限になる。同時に、再生したプログラムの保守性は劇的に改善され、ソフトウェアのライフサイクルの概念が変ることになる。
2.他のレガシー・システム変換に関する比較研究
(1)従来型(構造化設計)アプローチ
過去から現在までのソフトウェア資産は膨大なものである。このソフトウェア資産の大部分は、いわゆる手続き型言語で書かれた構造化設計プログラムである。作者の実務的知識から様々な工夫がなされ、これらの従来型プログラムは、機能の順に組み立てられ、この順序は作者が独自に考え出すものである。この方法による処理順序は非常に合理的なものであるが、一方では、この処理順序は当然非常に恣意的なものである。それ故、個々に作られた処理機能は、分解するのが難しく、機能間のつながりも解くのが難しい。
2.他のレガシー・システム変換に関する比較研究
(1)従来型(構造化設計)アプローチ
過去から現在までのソフトウェア資産は膨大なものである。このソフトウェア資産の大部分は、いわゆる手続き型言語で書かれた構造化設計プログラムである。作者の実務的知識から様々な工夫がなされ、これらの従来型プログラムは、機能の順に組み立てられ、この順序は作者が独自に考え出すものである。この方法による処理順序は非常に合理的なものであるが、一方では、この処理順序は当然非常に恣意的なものである。それ故、個々に作られた処理機能は、分解するのが難しく、機能間のつながりも解くのが難しい。
ソフトウェアの価値を維持するために種々の方法が取られてきたが、継続する保守の結果、ソフトウェアの機能的結合がより深くなる。その結果、プログラムは、非常に複雑なものになり、内部がもつれた状態になり、保守が困難でリスクを伴うレベルにまでになる。最終的には、ソフトウェア自身の存在意義が失われ、保守さえほとんど不可能になる。また非常に困ったことに、過去においてプログラムに内蔵させた機能、すなわちビジネス・ロジックまたはビジネス要件または究極的にはユーザの意図、が無効になり、制御不能の状態になる。
今迄、種々のレガシー・システム変換方法が研究され、試みられてきたが、そのどれもが、ビジネスにおいて何らの合理的な成功を収めていない。このようなさえない結果になった主な理由は、非常に高密度の内部結合を含むソフトウェアを、その主要な性質が同じである他のタイプのフォーマットに単に変換しようとするアプローチによるものである。このアプローチは、新たに再度他の非常に密度が高い結合状態を作り出すだけで、状況は全く改善されない。
(2)オブジェクト指向(Obiect Oriented)アプローチ
現在、オブジェクト指向アプローチの開発は、ソフトウェア開発設計の代表的な技術の1つになっている。しかし、実際のプログラム作成で要求される仕様を、100%オブジェクト指向アプローチで行うのは非常に困難である。オブジェクトは、実体に対する機能および属性であると定義されるものであるが、実体に対応する機能および属性の決定(またはクラスの設定)は、作成者の自由な判断により行われる。さらに、構成要素をどのように組み立てるかについては厳格な規則はなく、また、構造化設計アプローチのような実行順序についての規制もない。実際の開発の場においては、オブジェクト間の関係が完全に一貫性を持って適用されず、多くの場合、開発成果物に大量のオブジェクトが生成されていても、作成者自身を除けば誰もそれを理解してないということになる。すなわち、完成したソフトウェアは規則性のない機能のかたまりとなり、最終的に解体したり、再使用したりするのが困難になる傾向が強い。オブジェクト指向アプローチによるレガシー変換では、従来型プログラムから内在するオブジェクトが抽出され、それらを少数のものに再構成する。しかし、オブジェクトから抽出される単位が1つの機能である限りは、レガシー変換の実現を成功させることはできない。
(3)アスペクト指向(Aspect Oriented)アプローチ
アスペクトとは、プログラムを直接リンクしていない機能要求の視点のことである。また、視点である機能要求の組み合わせ構造が、データ処理構造とねじれのない関係を形成するための実体になる。アスペクト指向アプローチを使用する開発技術では、視点となる機能要求を定義することが求められる。そうすれば、プログラムの必要な部分だけが、弾力的にまたは非線形的に影響を受ける。言い換えれば、アスペクトが定義されると、プログラミングが自動化され、上流工程によって開発が完了する。アスペクトが従来のプログラムから完全に取り出された場合には、レガシー・システムの変換は間違いなく十分実行可能になり、アスペクトの定義を修正するだけで以降の保守が可能になる。
(2)オブジェクト指向(Obiect Oriented)アプローチ
現在、オブジェクト指向アプローチの開発は、ソフトウェア開発設計の代表的な技術の1つになっている。しかし、実際のプログラム作成で要求される仕様を、100%オブジェクト指向アプローチで行うのは非常に困難である。オブジェクトは、実体に対する機能および属性であると定義されるものであるが、実体に対応する機能および属性の決定(またはクラスの設定)は、作成者の自由な判断により行われる。さらに、構成要素をどのように組み立てるかについては厳格な規則はなく、また、構造化設計アプローチのような実行順序についての規制もない。実際の開発の場においては、オブジェクト間の関係が完全に一貫性を持って適用されず、多くの場合、開発成果物に大量のオブジェクトが生成されていても、作成者自身を除けば誰もそれを理解してないということになる。すなわち、完成したソフトウェアは規則性のない機能のかたまりとなり、最終的に解体したり、再使用したりするのが困難になる傾向が強い。オブジェクト指向アプローチによるレガシー変換では、従来型プログラムから内在するオブジェクトが抽出され、それらを少数のものに再構成する。しかし、オブジェクトから抽出される単位が1つの機能である限りは、レガシー変換の実現を成功させることはできない。
(3)アスペクト指向(Aspect Oriented)アプローチ
アスペクトとは、プログラムを直接リンクしていない機能要求の視点のことである。また、視点である機能要求の組み合わせ構造が、データ処理構造とねじれのない関係を形成するための実体になる。アスペクト指向アプローチを使用する開発技術では、視点となる機能要求を定義することが求められる。そうすれば、プログラムの必要な部分だけが、弾力的にまたは非線形的に影響を受ける。言い換えれば、アスペクトが定義されると、プログラミングが自動化され、上流工程によって開発が完了する。アスペクトが従来のプログラムから完全に取り出された場合には、レガシー・システムの変換は間違いなく十分実行可能になり、アスペクトの定義を修正するだけで以降の保守が可能になる。
すでに説明したオブジェクト指向アプローチおよび構造化設計アプローチは、システムの機能やふるまいあるいはデータフローと見なされる別々の特性を、プログラミング言語だけで組み立てなければならない。一方、アスペクト指向アプローチは、要求に対する機能やデータフローの特性を、矛盾なくふるまう「同期した」状態で捉えようとしているので、このアプローチは、新しい方法論として発展する優れた潜在能力を持つ。
現在、アスペクトは、依然として試験段階にあり、アスペクトの定義および実現技術の双方ともに試験的なものでエラーを含んでいる。アスペクトを従来のプログラムから機械的に取り出すことができるようにするのは今後の課題である。
3.Lyeeのレガシー変換の独創性
Lyeeアプローチでは、プログラムを分割し、分析するために、従来型プログラムの最小構成要素として単語に焦点を当てる。そして、次にLyee規則により、変換する従来型プログラムと同じ価値を持つ新しいプログラムを再構成するために、すべての抽出した単語に対してリフォーム処理を行う。
3.Lyeeのレガシー変換の独創性
Lyeeアプローチでは、プログラムを分割し、分析するために、従来型プログラムの最小構成要素として単語に焦点を当てる。そして、次にLyee規則により、変換する従来型プログラムと同じ価値を持つ新しいプログラムを再構成するために、すべての抽出した単語に対してリフォーム処理を行う。
このようにして、Lyeeのレガシー・システム変換が実現される。すなわち、単語という最小オブジェクトに注目し、始点単語(Given−word)および端点単語(Self−word)の関係が全て個別に抽出され、それらをLyeeプロセス制御構造に再割り当てし、それらを矛盾のないような実行可能フォーマットに再配置する。それ故、単語の分析は、レガシー変換の重要な作業であり、そのため、プログラム内の隠れた単語を含むすべての単語を取り出すことが必要である。何故なら、単語のうちのあるものはプログラムに明示的に現われていないからである。Lyeeのレガシー変換の最重要テーマは、すべての必要な単語を適切に取り出すことができるかどうかである。それ故、Lyee方法論の基本的原理が、この難問を解決し、プログラムを分析するために適用されることが期待されている。
Lyee方法論構造のコンポーネントの1つであるベクトル(Lyeeプログラム)は、データ解析処理が行われた後で、従来型プログラムの最小構成要素である単語の受け皿としての役割を果たす。知識により人間が作った処理機能であるプログラムは、ロジックを使用しないデータ領域の受け渡し(データ結合)を通して、新しいプログラムに自律的に置き換えられる。すなわち、単語の論理要素(L4,L3)は、その決まった生成式および実行条件を吸収し、従来のフロー制御条件を、単語生成の実行条件に置き換える役割を果たす。従来のプログラムの制御論理内のLOOPおよびGO−TO処理は、Lyee方法論の連鎖で置き換えられるものなので、すべてのLOOPおよびGO−TO処理は消去されることになる。Lyee方法論のレガシー変換は、種々の技術で今迄試みられたすべてのレガシー変換アプローチとは全然異なり、プログラムと上流設計を区別しない要件定義内容を含むすべての開発成果物が再生されるということが際立って異なる点である。変換の手順について以下に詳細に説明するように、本稿は、従来の構造からLyee構造への変換ばかりでなく、Lyee構造から従来の構造への変換についても記述する。現在では、LyeeBELTが完成される限りは、Lyee構造化プログラムはツールにより生成される。しかし、従来の構造の新しいプログラムが、LyeeBELTから作成された場合には、Lyee方法論を知らないシステム・エンジニアでも習熟しているようにプログラムの保守を行うことができる。Lyee方法論に依存しなくても、プログラムの取り扱いを確実に行うことができる。
4.Lyeeのレガシー変換の方針および手順
(1)概要
図1は、Lyeeのレガシー変換の方針および手順を示す。同図に示すように、Lyeeのレガシー変換は以下の手順を具備して構成される。
1.事前の実行可能性の調査
2.従来のプログラムのリフォーム処理(プログラムの正規化)
3.抽出データの解析用テーブル(データ解析)
4.処理経路図の生成
5.旧LyeeBELTの生成
6.旧LyeeBELTから新LyeeBELTへの言語変換
7−1.Lyee構造プログラムの組み立て(テンプレート)
7−2.従来型構造のプログラムへの編集(機能編集)
図1の[1]から[3]においては、すべての必要な情報を、Lyee構造として抽出することができ、[4]から[5]において、これらの情報を編集して組み立て、Lyeeプログラムの中心のソースである処理経路図およびLyeeBELTを生成する。[6」においては、LyeeBELTの旧言語を新言語へ変換する処理が行われ、[7]においては、その新LyeeBELTからLyee構造プログラムまたは従来構造プログラムへの編集が行われる。
(2)個々のプロセスの流れ
[1]事前の実行可能性の調査
事前の作業として、下記の情報を調査し、これらを変換する必要があるかどうか決定する。
1.内部サブルーチン情報(パラメータ情報)
2.外部プログラム情報(パラメータ情報)
3.組み込み関数、システムおよびユーザ・マクロ情報
4.(ミドルソフトウェアに対する)システムのAPIコマンド
5.言語提供ライブラリ
6.定義体内蔵情報
プログラムを構成するすべてのリソースが、調査分析作業の対象となる。あるルーチンがどのソース・プログラムで記述されているか、またはレコード形式または電文形式などの定義体フォーマットがどのソース・プログラムで記述されているのかについての情報(リンク情報)のすべてが必要である。事前に各言語に対してこの情報を抽出する作業サポート・ツールを準備する必要がある。
4.Lyeeのレガシー変換の方針および手順
(1)概要
図1は、Lyeeのレガシー変換の方針および手順を示す。同図に示すように、Lyeeのレガシー変換は以下の手順を具備して構成される。
1.事前の実行可能性の調査
2.従来のプログラムのリフォーム処理(プログラムの正規化)
3.抽出データの解析用テーブル(データ解析)
4.処理経路図の生成
5.旧LyeeBELTの生成
6.旧LyeeBELTから新LyeeBELTへの言語変換
7−1.Lyee構造プログラムの組み立て(テンプレート)
7−2.従来型構造のプログラムへの編集(機能編集)
図1の[1]から[3]においては、すべての必要な情報を、Lyee構造として抽出することができ、[4]から[5]において、これらの情報を編集して組み立て、Lyeeプログラムの中心のソースである処理経路図およびLyeeBELTを生成する。[6」においては、LyeeBELTの旧言語を新言語へ変換する処理が行われ、[7]においては、その新LyeeBELTからLyee構造プログラムまたは従来構造プログラムへの編集が行われる。
(2)個々のプロセスの流れ
[1]事前の実行可能性の調査
事前の作業として、下記の情報を調査し、これらを変換する必要があるかどうか決定する。
1.内部サブルーチン情報(パラメータ情報)
2.外部プログラム情報(パラメータ情報)
3.組み込み関数、システムおよびユーザ・マクロ情報
4.(ミドルソフトウェアに対する)システムのAPIコマンド
5.言語提供ライブラリ
6.定義体内蔵情報
プログラムを構成するすべてのリソースが、調査分析作業の対象となる。あるルーチンがどのソース・プログラムで記述されているか、またはレコード形式または電文形式などの定義体フォーマットがどのソース・プログラムで記述されているのかについての情報(リンク情報)のすべてが必要である。事前に各言語に対してこの情報を抽出する作業サポート・ツールを準備する必要がある。
作業サポート・ツールは、上記に示されたリンク情報および分析言語の字句解析と構文解析を外部パラメータとして指定することにより、様々な言語に対処できるように、作成時に注意を払う。加えて行う調査項目としては、画面の新環境への移植性またはDBMSの情報、または運用制御情報がある。言語変換作業の際には、旧言語と新言語の命令変換対応表を事前に作成し、簡単に変換できない命令については、新言語で同様の処理を行う類似の関数およびサブモジュールを作成する必要がある。さらに、ある場合には、新言語に対処するために、新単語を追加する場合もある。例えば、ビット操作および文字列操作の命令は、処理言語により様々である。それ故、新言語に対するビット操作や文字列操作の関数やサブルーチンを作成しなければならない。旧言語で関数およびコンポーネントが過度に使用されている場合には、新言語でそれらすべてを置き換える方法の方針を決定しなければならない。事前に解体するのか、または新しい関数およびコンポーネントを作成するのかについての結論を出さなければならない。
[2]従来型プログラムのリフォーム(プログラム正規化)
ソース・プログラムは、下記の再フォーマット規則を適用して、いったん解体し、次に後で分析しやすい形に整形される。我々はこのプロセスを正規化と呼ぶ。正規化を行う目的は、プログラムの多様性を排除するために、従来型プログラムの整形を行って言語特性をできるだけ除去することである。正規化により、後のレガシー・システム変換処理のために必要な情報を機械的に取り出し易くなり、Lyee方法論の構成要素も容易にアセンブルすることができるようになる。これは、主として、ルーチン・プロセスのブロック、条件付き判断構造、ループ構造を編集することである。この作業は、レガシー・システム変換の最初に行われるプログラム編集タスクである。その後行う分析プロセスでは、正規化後ソース・コードを分析することによって、単語の生成式と対応する実行条件から最終的にPRD(処理経路図)情報およびLyeeBELT情報を作成する。たとえば、ある端点単語(self−word)は、始点単語1(given−word 1)、始点単語2(given−word 2)から成る、などである。正規化プロセスとして、ソース・プログラムの字句解析や項目解析、定義体分析、構文解析、フロー整形処理が必要となる。
[2]従来型プログラムのリフォーム(プログラム正規化)
ソース・プログラムは、下記の再フォーマット規則を適用して、いったん解体し、次に後で分析しやすい形に整形される。我々はこのプロセスを正規化と呼ぶ。正規化を行う目的は、プログラムの多様性を排除するために、従来型プログラムの整形を行って言語特性をできるだけ除去することである。正規化により、後のレガシー・システム変換処理のために必要な情報を機械的に取り出し易くなり、Lyee方法論の構成要素も容易にアセンブルすることができるようになる。これは、主として、ルーチン・プロセスのブロック、条件付き判断構造、ループ構造を編集することである。この作業は、レガシー・システム変換の最初に行われるプログラム編集タスクである。その後行う分析プロセスでは、正規化後ソース・コードを分析することによって、単語の生成式と対応する実行条件から最終的にPRD(処理経路図)情報およびLyeeBELT情報を作成する。たとえば、ある端点単語(self−word)は、始点単語1(given−word 1)、始点単語2(given−word 2)から成る、などである。正規化プロセスとして、ソース・プログラムの字句解析や項目解析、定義体分析、構文解析、フロー整形処理が必要となる。
上記分析作業の結果の後、下記の6つのタイプの整形規則でプログラムを整形する。
*整形規則1;1行化
*整形規則2;フィルタリング(不要文字の削除)
*整形規則3;演算子変換
*整形規則4;予約(命令)語の共通化
*整形規則5;隠蔽単語の検出およびデータ抽出
*整形規則6;構造整形(逐次処理、分岐処理およびループ処理の3種類の処理形態に整形して分類)
<構造再フォーマット(構造整形)の種々の(整形)パターン>
図2乃至4は、本発明の一実施形態に係る構造再フォーマット(構造整形)の種々の(整形)パターンを説明する図である。
<単階層化整形(一種の構造整形)>
単階層化整形は、プログラム内で呼ばれる(PERFORM、CALLされる)内部サブプログラムや外部サブルーチンを取り込み、それらを全く省略しないソース・プログラムを作ることである。ここで、内部サブプログラムおよび外部サブルーチンを解体するかどうかは、それらの中に端点単語に対する定義処理が含まれているかどうかで決まる。(なぜなら、端点単語はLyee方法論のベクトルであるので、分解してLyee構造の中に再構成することが要求されるからである)。
*整形規則1;1行化
*整形規則2;フィルタリング(不要文字の削除)
*整形規則3;演算子変換
*整形規則4;予約(命令)語の共通化
*整形規則5;隠蔽単語の検出およびデータ抽出
*整形規則6;構造整形(逐次処理、分岐処理およびループ処理の3種類の処理形態に整形して分類)
<構造再フォーマット(構造整形)の種々の(整形)パターン>
図2乃至4は、本発明の一実施形態に係る構造再フォーマット(構造整形)の種々の(整形)パターンを説明する図である。
<単階層化整形(一種の構造整形)>
単階層化整形は、プログラム内で呼ばれる(PERFORM、CALLされる)内部サブプログラムや外部サブルーチンを取り込み、それらを全く省略しないソース・プログラムを作ることである。ここで、内部サブプログラムおよび外部サブルーチンを解体するかどうかは、それらの中に端点単語に対する定義処理が含まれているかどうかで決まる。(なぜなら、端点単語はLyee方法論のベクトルであるので、分解してLyee構造の中に再構成することが要求されるからである)。
プログラム内部で共通化されたブロックや、複数の箇所から引用されているサブルーチンは、呼ばれている箇所に再配置され、その処理の流れが上から下に流れる構造になる。単階層化で組み込まれる外部サブルーチンのパラメータ名がメインプログラムとは異なることを考慮し、変数(パラメータ)の割り当て命令の追加を行う。
図5は、本発明の一実施形態に係る単階層化整形を説明するための図である。
同図に示すように、単階層化を行う前に、プログラム内にループ構造が存在する場合には、ループ処理はそのまま残る。しかし、ループから出る条件とループに入る条件が明確であれば、全体の流れからループ処理を切り離して、1本のストリームとして容易に処理順序をとらえることができる。その結果、ループ処理は、Lyee方法論のパレットや基本構造の中の再起処理に置き換えられ、最終的には削除される。
このようにして、構造整形と単階層化による正規化によって、スパゲッティ状態の従来プログラムを規則性のある1本のストリーム状態に変換し、プログラム内に現われる始点単語と端点単語の成立順序と依存関係を機械的に捉えることが可能となる。
[3]解析用抽出データテーブル(データ解析)
前記に示したリフォーム(プログラム正規化)処理により得られた解析情報を整理し、以下のような形式のテーブルを作成する。解析結果として、ループブロックの範囲とIFブロックの階層が明確にされ、それらのレベルを明確に明細表記する。
このようにして、構造整形と単階層化による正規化によって、スパゲッティ状態の従来プログラムを規則性のある1本のストリーム状態に変換し、プログラム内に現われる始点単語と端点単語の成立順序と依存関係を機械的に捉えることが可能となる。
[3]解析用抽出データテーブル(データ解析)
前記に示したリフォーム(プログラム正規化)処理により得られた解析情報を整理し、以下のような形式のテーブルを作成する。解析結果として、ループブロックの範囲とIFブロックの階層が明確にされ、それらのレベルを明確に明細表記する。
説明のために、図6に実際の解析のためのテーブルの一例を示す。
解析テーブルで表わされるIF文のネスト構造は要件のネスト構造であり、あるネストで使用される命令は、1階層前のネストを前提条件としている。同一ネスト内の命令は、並列関係や順序列で規定された継続関係を持ち、言いかえれば、このことは、上記関係は、同一同期構造内の単語関係が成立している状態であることを意味する。従って、IF文のネストは、同期構造の多重層を捉えたものということができる。上記結果を後の解析処理に利用することになる。解析テーブルが示すすべての情報は下記の通りである。
[4]処理経路図作成
作成した解析テーブルから、処理経路図を作成するのに必要な情報を抽出し、処理経路図を作成する。決定すべき処理経路図情報は、下記のA〜Hの情報であるが、処理の留意点は、正規化された解析テーブルから基本構造の単位を括りだし、それらを単語の関係からの整合性をもってリンクすることである。
A.処理経路図名、ID
B.基本構造名、ID
C.親基本構造名、ID
D.経路作用要素(継続経路、重複経路、多重経路)
E.論理体名、ID
F.定義体名、ID
G.入出力属性
H.定義体種別(画面/ファイル/帳票/メモリ/電文)
図7は、本発明の一実施形態に係る処理経路図の作成手順を説明するための図である。
[4]処理経路図作成
作成した解析テーブルから、処理経路図を作成するのに必要な情報を抽出し、処理経路図を作成する。決定すべき処理経路図情報は、下記のA〜Hの情報であるが、処理の留意点は、正規化された解析テーブルから基本構造の単位を括りだし、それらを単語の関係からの整合性をもってリンクすることである。
A.処理経路図名、ID
B.基本構造名、ID
C.親基本構造名、ID
D.経路作用要素(継続経路、重複経路、多重経路)
E.論理体名、ID
F.定義体名、ID
G.入出力属性
H.定義体種別(画面/ファイル/帳票/メモリ/電文)
図7は、本発明の一実施形態に係る処理経路図の作成手順を説明するための図である。
同図に示すように、処理経路図の作成手順は下記の通りである。
1.最初に、正規化した解析テーブルからI/O命令を探し出し、出力定義体(出力論理体)に着目する。それは、定義体(論理体)の出力によって実行された処理が一旦途切れ、Lyee方法論における同期範囲の帰結点が出現することを意味する。
2.次に、1つの出力定義体(出力論理体)による1つの出力命令毎に、基本構造を解析テーブルの下位から順番に配置(継続配置)していく。(これはLyee方法論の端点ネットワーク主義の規則に基づき、ここでは最終目的となるファイルは先に配置する。)加えて、解析テーブルで順番が同等のレベルで出現する出力命令については、同一レベルの基本構造配置(並列配置)を行う。
3.次に、出力定義体(出力論理体)に含まれる単語(端点単語)を決定し、端点単語を定義している命令を探し出し、その始点単語を決定する。端点単語と始点単語のネットワークが捉えらえる。
4.さらに、始点単語を含む定義体(論理体)を決定し、それが入力定義体(入力論理体)なのか、または出力定義体(出力論理体)なのかを確認する。それが入力定義体(入力論理体)である場合には、始点単語が属する入力定義体(入力論理体)を、出力定義体(出力論理体)が属する基本構造に割り当てる。出力定義体(出力論理体)である場合には、定義体(論理体)が属する基本構造を、端点単語の定義体(論理体)が属する基本構造の下位に配置する。この場合、始点単語には2種類ある。1つは、端点単語の生成式にセットされる元のデータという意味でのデータ依存の始点単語であり、もう1つは、ある値を端点単語にセットしてよいかどうかを判定する実行条件に現われる制御依存の始点単語である。
5.始点単語にワーク単語が存在する場合には、当該ワークを端点単語とする命令を探し出し、命令の始点単語の追跡により定義体を特定する。追跡は、始点単語がリテラル値(定数)の場合は、そこで終了する。いかなる種類のワーク単語も、入力または出力の定義体(論理体)、またはリテラル値に繋がることは明らかである。
6.出力定義体(出力論理体)に画面がある場合には、規則により画面は必ず最上位のレベルに配列する。さらに、複数の画面定義体が現われる場合には、解析テーブルの下位から順番に同様に配列する。基本構造を連鎖状にリンクすることは、Lyee方法論の経路作用要素を決めることと同じである。後で端点単語と始点単語の関係の見直しがなければ、処理経路図は上記によって決定される。
7.処理経路図は以上の処理によって作成されるが、ここで、Lyee方法論の規則を適用する。互いに参照される入力ファイルの作用要素は省略できる。何故なら、継続連鎖で隣接する2つの基本構造は同期しているからである。さらに、非同期状態の基本構造間に参照関係が必要な場合には、参照のために境界単語を設ける。
8.さらに、必須ではないが、処理経路図の縮約規則により複数の基本構造を1つに縮約することができる。
因みに、上記の場合における元プログラムのフローチャート、及び端点単語と始点単語との関係表を図8に示す。
1.最初に、正規化した解析テーブルからI/O命令を探し出し、出力定義体(出力論理体)に着目する。それは、定義体(論理体)の出力によって実行された処理が一旦途切れ、Lyee方法論における同期範囲の帰結点が出現することを意味する。
2.次に、1つの出力定義体(出力論理体)による1つの出力命令毎に、基本構造を解析テーブルの下位から順番に配置(継続配置)していく。(これはLyee方法論の端点ネットワーク主義の規則に基づき、ここでは最終目的となるファイルは先に配置する。)加えて、解析テーブルで順番が同等のレベルで出現する出力命令については、同一レベルの基本構造配置(並列配置)を行う。
3.次に、出力定義体(出力論理体)に含まれる単語(端点単語)を決定し、端点単語を定義している命令を探し出し、その始点単語を決定する。端点単語と始点単語のネットワークが捉えらえる。
4.さらに、始点単語を含む定義体(論理体)を決定し、それが入力定義体(入力論理体)なのか、または出力定義体(出力論理体)なのかを確認する。それが入力定義体(入力論理体)である場合には、始点単語が属する入力定義体(入力論理体)を、出力定義体(出力論理体)が属する基本構造に割り当てる。出力定義体(出力論理体)である場合には、定義体(論理体)が属する基本構造を、端点単語の定義体(論理体)が属する基本構造の下位に配置する。この場合、始点単語には2種類ある。1つは、端点単語の生成式にセットされる元のデータという意味でのデータ依存の始点単語であり、もう1つは、ある値を端点単語にセットしてよいかどうかを判定する実行条件に現われる制御依存の始点単語である。
5.始点単語にワーク単語が存在する場合には、当該ワークを端点単語とする命令を探し出し、命令の始点単語の追跡により定義体を特定する。追跡は、始点単語がリテラル値(定数)の場合は、そこで終了する。いかなる種類のワーク単語も、入力または出力の定義体(論理体)、またはリテラル値に繋がることは明らかである。
6.出力定義体(出力論理体)に画面がある場合には、規則により画面は必ず最上位のレベルに配列する。さらに、複数の画面定義体が現われる場合には、解析テーブルの下位から順番に同様に配列する。基本構造を連鎖状にリンクすることは、Lyee方法論の経路作用要素を決めることと同じである。後で端点単語と始点単語の関係の見直しがなければ、処理経路図は上記によって決定される。
7.処理経路図は以上の処理によって作成されるが、ここで、Lyee方法論の規則を適用する。互いに参照される入力ファイルの作用要素は省略できる。何故なら、継続連鎖で隣接する2つの基本構造は同期しているからである。さらに、非同期状態の基本構造間に参照関係が必要な場合には、参照のために境界単語を設ける。
8.さらに、必須ではないが、処理経路図の縮約規則により複数の基本構造を1つに縮約することができる。
因みに、上記の場合における元プログラムのフローチャート、及び端点単語と始点単語との関係表を図8に示す。
上記説明により、処理経路図を下記のように作成することができる。
図9乃至11は、本発明の一実施形態に係る処理経路図の作成方法を示す図である。
[5]旧LyeeBELTの生成
解析テーブルから端点単語に着目し、下記に示す手順で単語に関する生成論理(論理スライス、すなわち定義式および実行条件)が抽出される。最初に、単語を決定し、解析テーブルを上から探索し、決定した単語を端点単語とする命令文を抽出する。次に、それらの命令実行に影響を持つIF文を、ソートされたIF文の階層に基づいて抽出する。単語が解析テーブルに複数回現われる場合は、それら全てについて同じ作業を行って命令文とIF文を探し出す。
[5]旧LyeeBELTの生成
解析テーブルから端点単語に着目し、下記に示す手順で単語に関する生成論理(論理スライス、すなわち定義式および実行条件)が抽出される。最初に、単語を決定し、解析テーブルを上から探索し、決定した単語を端点単語とする命令文を抽出する。次に、それらの命令実行に影響を持つIF文を、ソートされたIF文の階層に基づいて抽出する。単語が解析テーブルに複数回現われる場合は、それら全てについて同じ作業を行って命令文とIF文を探し出す。
図12は、本発明の一実施形態に係るLyeeBELTの作成の動作・方法・考え方等を説明するための図である。
同図に示すように、このようにして抽出される論理スライスは、下記のケース毎にチェックし、修正する。
ケース1
IF文のない論理スライスの場合、他のIF文と反対の条件を作成、これをIF文とする。この手段により、値がセットされない条件の漏れが防止される。
ケース2
自分自身の単語がIF文に含まれている論理スライスの場合には、Lyee方法論の原理に基づいて、自身の単語を別の単語に置換え、置換えた単語の生成式および実行条件を別に作成する。上記手順により、従来のプログラム中で人が好き勝手に単語の上書きや使いまわしの傾向がある処理を、複数の単語による処理に分解する。最終的には、処理の順序性がなくなり、独立した単語定義が成立する。
ケース3
IF文に使用する始点単語の実行条件が端点単語の実行条件と同じで、消去可能な論理スライスの場合には、ある端点単語のIF文に現われる始点単語が端点単語になるような条件を見つけ出すのがよい。最初の端点単語の条件と比較したときに任意の重複条件が存在する場合、重複条件を縮約することが望ましい。
ケース1
IF文のない論理スライスの場合、他のIF文と反対の条件を作成、これをIF文とする。この手段により、値がセットされない条件の漏れが防止される。
ケース2
自分自身の単語がIF文に含まれている論理スライスの場合には、Lyee方法論の原理に基づいて、自身の単語を別の単語に置換え、置換えた単語の生成式および実行条件を別に作成する。上記手順により、従来のプログラム中で人が好き勝手に単語の上書きや使いまわしの傾向がある処理を、複数の単語による処理に分解する。最終的には、処理の順序性がなくなり、独立した単語定義が成立する。
ケース3
IF文に使用する始点単語の実行条件が端点単語の実行条件と同じで、消去可能な論理スライスの場合には、ある端点単語のIF文に現われる始点単語が端点単語になるような条件を見つけ出すのがよい。最初の端点単語の条件と比較したときに任意の重複条件が存在する場合、重複条件を縮約することが望ましい。
ここで、図13は、本発明の一実施形態に係る「IF」文の数の最小化を説明するための図である。
上記論理スライスを確定させる他に、単語の座標(どの基本構造、どの定義体に属するかの情報)を決めて、LyeeBELTに反映する。単語の座標は、処理経路図から決定される。最初に、各基本構造から、LyeeBELTを生成する。LyeeBELT情報は下記の別表の内容となる。整理された内容から生成したLyeeBELTの有効性のチェックが可能になる。主要なLyeeBELTの妥当性チェック内容は次の表1乃至3に示す通りである。
先に説明したLyeeBELTには、領域をクリアする要素の情報は明確にされていない。ファイルのデータをレコード単位に処理を繰り返すような場合、メモリ領域をリセットするのに構造作用要素(作用要素の1つ)が必要になる。ある種のレガシー・プログラムにもある種のクリア処理があるが、必ず存在するわけではなく、ある場合には、上書きをしながらメモリ領域をクリアする。従って、レガシー・プログラム中にクリア命令を見つけ出すのでは充分でないので、他の観点からクリア命令を必要とする時点を発見する必要がある。Lyee方法論の場合には、同期処理の起点は構造作用要素によって起動され、構造作用要素は、メモリ領域がその任務を完了したことによってクリアされるように働く。
最初に、すべての入力単語は始点単語として使用され、単語に新たな入力データをセットする時点が同期点である。これは、レガシー・プログラムの入力キーのブレークタイミングに等しい。さらに、出力単語の場合には、出力が終了する時点が同期点に等しい。このことは、出力単語のクリアは出力作用要素の中で行われることがわかる。
集計単語のような単語に十分注意を払わなければならない。なぜならこのような単語は、出力後も保持され、他の場所でも使用されるからである。このような場合、集計単語が完全に任務を終了する時点を捉えなければならない。従って、従来プログラムを分析して単語が任務を終えた時点を決定しなければならないが、キーの分析が有効であることが分かっている。
キーの分析
メモリ領域のクリアタイミングに係わるキーの分析の結果、次の4種類のキーが存在する。アクセスキー、入力同期キー、合成キー、および出力同期キーである。
キーの分析
メモリ領域のクリアタイミングに係わるキーの分析の結果、次の4種類のキーが存在する。アクセスキー、入力同期キー、合成キー、および出力同期キーである。
アクセスキーは、ファイルまたはDB(データベース)を参照する場合の主キーの項目であり、通常のファイルには、各ファイルのアクセスキーが存在する。アクセスキーが決まれば、当該キーが空でないという実行条件で、入力作用要素を作成することができる。合成キーは、入力ファイルのすべてのアクセスキーからなるキーである。合成キーは、基本構造毎に複数の入力ファイルの論理レコードを1つの論理体として処理するための補助情報であり、処理単位は、入力ファイルの最小の論理レコード単位に合わせる。
入力同期キーは、2つ以上のファイルが1つの基本構造に入力された場合の、合成キーに対して依存関係(同じ入力タイミング)を持つ項目である。
出力同期キーは、合成キーの構成項目の1つが変化するタイミングで、出力タイミングが発生する場合のその構成項目のことである。これらのキーを分析するためにソース・プログラムを解析し、ループ内の入力/出力命令、そのときのキーのセット内容、またはブレークキー項目を詳細に把握する。
再度入力ファイルを読み始めるためのきっかけとなるキーブレークの項目は、入力同期キーで、一方、出力ファイルを出力するきっかけとなる項目は、出力同期キーである。
上記ですべてのLyeeBELT情報が決定される。
[6]旧LyeeBELTから新LyeeBELTへの言語変換
でき上ったLyeeBELT(旧)を言語変換し新しいLyeeBELTが作成される。この変換時に適用される変換規則は、下記の5つの規則である。すなわち、
変換規則c:I/Oコマンドの変換規則
変換規則d:領域の統合規則
変換規則e:領域の分割規則
変換規則a:属性の例外変換規則
変換規則b:演算式の変換規則
上記変換規則が使用する変換パラメータは、下記の10種類である。
1.共通記述情報定義
2.定義領域名記述定義
3.データ型定義
4.条件文定義
5.設定文指定定義
6.演算子指定定義
7.名称定義指定
8.パラメータ属性指定
9.データ型変換定義
10.演算変換定義
[7−1]Lyee構造プログラムの組み立て(テンプレート)
新L/B(LyeeBELT)ができれば、テンプレートを用いてLyee方法論構造のプログラムを、自動プログラム生成することが可能である。
[7−2]従来構造プログラムの編集(機能編集)
従来構造プログラムへの変換は、新L/Bに対して機能編集パラメータを適用して、行われる。
(1)制御構造の決定および作成
従来構造のプログラムも、LyeeBELT情報から作ることができる。まず、従来プログラムは9種類の構造パターンに分類できることが分かっている。さらに、それらを1つの従来構造に統合することができる。これを「基本フロー」と呼ぶ。この基本フローを制御構造の一般的システムとして利用し、LyeeBELTから従来プログラムへの変換に際して、この基本フローの分析結果を適用する。
(2)従来構造プログラムの編集(機能編集)
上記「基本フロー」を使用することにより、全ての従来構造の処理パターンを、処理経路図に従うことによって実現することができる。
[6]旧LyeeBELTから新LyeeBELTへの言語変換
でき上ったLyeeBELT(旧)を言語変換し新しいLyeeBELTが作成される。この変換時に適用される変換規則は、下記の5つの規則である。すなわち、
変換規則c:I/Oコマンドの変換規則
変換規則d:領域の統合規則
変換規則e:領域の分割規則
変換規則a:属性の例外変換規則
変換規則b:演算式の変換規則
上記変換規則が使用する変換パラメータは、下記の10種類である。
1.共通記述情報定義
2.定義領域名記述定義
3.データ型定義
4.条件文定義
5.設定文指定定義
6.演算子指定定義
7.名称定義指定
8.パラメータ属性指定
9.データ型変換定義
10.演算変換定義
[7−1]Lyee構造プログラムの組み立て(テンプレート)
新L/B(LyeeBELT)ができれば、テンプレートを用いてLyee方法論構造のプログラムを、自動プログラム生成することが可能である。
[7−2]従来構造プログラムの編集(機能編集)
従来構造プログラムへの変換は、新L/Bに対して機能編集パラメータを適用して、行われる。
(1)制御構造の決定および作成
従来構造のプログラムも、LyeeBELT情報から作ることができる。まず、従来プログラムは9種類の構造パターンに分類できることが分かっている。さらに、それらを1つの従来構造に統合することができる。これを「基本フロー」と呼ぶ。この基本フローを制御構造の一般的システムとして利用し、LyeeBELTから従来プログラムへの変換に際して、この基本フローの分析結果を適用する。
(2)従来構造プログラムの編集(機能編集)
上記「基本フロー」を使用することにより、全ての従来構造の処理パターンを、処理経路図に従うことによって実現することができる。
本稿においては、紙面の都合で(1)および(2)の詳細な説明は省略する。
5.Lyeeレガシー・システム変換ツール
図14は、レガシー・システム変換を可能にするツールのグループ関係を示す。
5.Lyeeレガシー・システム変換ツール
図14は、レガシー・システム変換を可能にするツールのグループ関係を示す。
同図に示すように、全ツールの構成(実行の流れ)は下記の通りである。
1.ソース・プログラムの正規化を行うリフォーム・プログラム
2.処理経路図およびLyeeBELTを生成するためのLyeeBELT作成プログラム
3.Lyee構造のベクトル生成を行う要素生成プログラム
4−1.従来プログラムへの変換を、機能編集パラメータを使って行う機能編集プログラム
4−2.Lyeeプログラムを生成する要素組立プログラム(テンプレート)
3の要素生成による言語変換を行う場合には、目的言語に応じた変換用パラメータを組み込み、任意の言語が変換可能となるしくみを構築する。
1.ソース・プログラムの正規化を行うリフォーム・プログラム
2.処理経路図およびLyeeBELTを生成するためのLyeeBELT作成プログラム
3.Lyee構造のベクトル生成を行う要素生成プログラム
4−1.従来プログラムへの変換を、機能編集パラメータを使って行う機能編集プログラム
4−2.Lyeeプログラムを生成する要素組立プログラム(テンプレート)
3の要素生成による言語変換を行う場合には、目的言語に応じた変換用パラメータを組み込み、任意の言語が変換可能となるしくみを構築する。
4−1の従来プログラムへの編集は、従来処理の処理パターンを確認し、これを処理経路図上にマッピングすることにより、従来型と等しい機能を持つ従来型プログラムに変換をする。しかし、これによって生成されるプログラム・コードは、もとのソース・コードと同じにはならない。
上記ツール・グルーブは、新規開発にも部分的に適用され、処理経路図およびLyeeBELTを生成した後で、Lyee構造プログラムか従来型プログラムかを選択することが可能である。
6.種々のシステム変更要求に対する対処手段
(1)システム基盤の変更
システム基盤にはOS(オペレーティング・システム)、DBMS(データベース・マネジメント・システム)および画面通信、ミドルソフトウェア等があるが、レガシー・システム変換ではこれらシステム基盤の更新が要求されることがある。これらのニーズに対して、ミドルソフトウェアとビジネス・アプリケーション・プログラムとの境界、またはOSとビジネス・アプリケーション・プログラムの境界、またはOSとミドルソフトウェアとの境界について十分な調査を行わなければならない。これによって、旧プログラムを、新システム基盤で動作する新プログラムに変換する実現方法を確認する実行可能性を見極める。古いシステム基盤上においては開発を必要としなかった機能に対しても、新しい環境上で新プログラムを動作させるために、機能、マクロおよびサブモジュールの開発が必要になる場合がある。このような目的で新しく作成したプログラムの場合には、LyeeBELT作成前にテストを行う必要があり、I/Fパラメータを単語として登録してL4、L3を記述しなければならない。
6.種々のシステム変更要求に対する対処手段
(1)システム基盤の変更
システム基盤にはOS(オペレーティング・システム)、DBMS(データベース・マネジメント・システム)および画面通信、ミドルソフトウェア等があるが、レガシー・システム変換ではこれらシステム基盤の更新が要求されることがある。これらのニーズに対して、ミドルソフトウェアとビジネス・アプリケーション・プログラムとの境界、またはOSとビジネス・アプリケーション・プログラムの境界、またはOSとミドルソフトウェアとの境界について十分な調査を行わなければならない。これによって、旧プログラムを、新システム基盤で動作する新プログラムに変換する実現方法を確認する実行可能性を見極める。古いシステム基盤上においては開発を必要としなかった機能に対しても、新しい環境上で新プログラムを動作させるために、機能、マクロおよびサブモジュールの開発が必要になる場合がある。このような目的で新しく作成したプログラムの場合には、LyeeBELT作成前にテストを行う必要があり、I/Fパラメータを単語として登録してL4、L3を記述しなければならない。
旧LyeeBELTを完成した後、それを新LyeeBELTに変換する場合には、言語特性を考慮して、新しい環境上で新プログラムが動作するように種々の手段を行うことが好ましい。このようにして、旧LyeeBELTと新LyeeBELTとの間の違いがハッキリし、追跡がやり易くなる。
(2)旧システムの要件の大規模変更
レガシー・システム変換の目的は、最初のものに対する基盤修正であると思われるが、一般的には、この機会に、ビジネス要件の修正も合わせて行われる。この場合、旧システム仕様書を使用することができるが、Lyee方法論の特性を利用して、新LyeeBELT上で修正要件を反映するほうが得策で、高い生産性を保証できる。ここで、新LyeeBELTに同様に反映される旧プログラム上のワーク単語に留意すべきである。何故なら、それらを削除することができるのかどうか判断して、ワーク単語を適切に処理することが重要になるからである。旧プログラムで使用したワーク単語は、ある意図により作成されたものだが、実際には、それを理解するのは難しく、最終的には、その存在は保守を複雑にする傾向がある。新LyeeBELTで保守を行う処理中に、可能な限りワーク単語を削除することが望ましい。また、できれば、新しい要件にはワーク単語が存在しないことが望ましいが、要件に従って個々に判断する必要がある。
(3)旧システムでの運用方針の変更
レガシー・システム変換の要求においては、プログラムの変更と同じように、運用システム資源(JCLまたはCL)を変更しなければならない場合が多い。何故なら、基盤が修正されるからである。ある場合には、運用資源を変更したためにプログラムをどうしても修正しなければならないことがある。運用資源の変更作業の整理やプログラムの修正の考慮が必要な問題点を明らかにするために、事前調査が必要である。運用資源の変換作業は、プログラムの変換ほど面倒ではないので、適当な変換ツールを準備して対処できる。
7.Lyeeレガシー・システム変換の残された問題
(1)カスタマイズ・ツール
現在のツールは、旧プログラムの対応する言語および仕様によってカスタマイズしなければならない。カスタマイズは、分析に基づいてパラメータを指定することにより行われる。それ故、必要な場合には何時でも、システム変換毎に機能および変換ロジックを追加することになっている。また、ほとんどの部分に対して旧プログラムの機械的解析が可能だが、ツールが完全には対処できないいくつかの部分が存在する。言うまでもないことだが、さらなる改善が必要である。
(2)処理言語の拡大
現時点で対応可能な言語は、単語領域が静的で、単語定義が容易な言語である。それ故、メモリ・アドレスを直接操作するアセンブラのような言語で単語を捉えるための規則を明確にするようなさらなる研究が期待される。
(2)旧システムの要件の大規模変更
レガシー・システム変換の目的は、最初のものに対する基盤修正であると思われるが、一般的には、この機会に、ビジネス要件の修正も合わせて行われる。この場合、旧システム仕様書を使用することができるが、Lyee方法論の特性を利用して、新LyeeBELT上で修正要件を反映するほうが得策で、高い生産性を保証できる。ここで、新LyeeBELTに同様に反映される旧プログラム上のワーク単語に留意すべきである。何故なら、それらを削除することができるのかどうか判断して、ワーク単語を適切に処理することが重要になるからである。旧プログラムで使用したワーク単語は、ある意図により作成されたものだが、実際には、それを理解するのは難しく、最終的には、その存在は保守を複雑にする傾向がある。新LyeeBELTで保守を行う処理中に、可能な限りワーク単語を削除することが望ましい。また、できれば、新しい要件にはワーク単語が存在しないことが望ましいが、要件に従って個々に判断する必要がある。
(3)旧システムでの運用方針の変更
レガシー・システム変換の要求においては、プログラムの変更と同じように、運用システム資源(JCLまたはCL)を変更しなければならない場合が多い。何故なら、基盤が修正されるからである。ある場合には、運用資源を変更したためにプログラムをどうしても修正しなければならないことがある。運用資源の変更作業の整理やプログラムの修正の考慮が必要な問題点を明らかにするために、事前調査が必要である。運用資源の変換作業は、プログラムの変換ほど面倒ではないので、適当な変換ツールを準備して対処できる。
7.Lyeeレガシー・システム変換の残された問題
(1)カスタマイズ・ツール
現在のツールは、旧プログラムの対応する言語および仕様によってカスタマイズしなければならない。カスタマイズは、分析に基づいてパラメータを指定することにより行われる。それ故、必要な場合には何時でも、システム変換毎に機能および変換ロジックを追加することになっている。また、ほとんどの部分に対して旧プログラムの機械的解析が可能だが、ツールが完全には対処できないいくつかの部分が存在する。言うまでもないことだが、さらなる改善が必要である。
(2)処理言語の拡大
現時点で対応可能な言語は、単語領域が静的で、単語定義が容易な言語である。それ故、メモリ・アドレスを直接操作するアセンブラのような言語で単語を捉えるための規則を明確にするようなさらなる研究が期待される。
しかし、内容を明確にできる限り、原則的にはメモリ操作言語を分析することができる。それにもかかわらず、命令の使い方によって、メモリ領域が複数の役割をかねている場合があるので、これを複数の単語に分解する方法を研究しなければならない。ツールで単語の複数化の問題が解決されれば、レガシー・システム変換の用途が広がる。
(3)従来プログラムの不正ロジックの検出
多くの場合、保守による残骸として不要なロジックが、変換対象のプログラムに混入する。残骸を検出し、事前に除去すれば、変換後プログラムの保守が容易になる。しかし、不要なロジックを除去するための機械的検出方法はまだ確立されていない。さらに、変換対象のプログラムに含まれている冗長なロジックおよびバグを検出するための方法を開発するのは将来の課題である。この問題を解決する1つの方法が示唆されているが、その方法というのは、変換後にL3ベクトル(プログラム)内に出現するIF文の必要十分性をチェックするという方法である。
(3)従来プログラムの不正ロジックの検出
多くの場合、保守による残骸として不要なロジックが、変換対象のプログラムに混入する。残骸を検出し、事前に除去すれば、変換後プログラムの保守が容易になる。しかし、不要なロジックを除去するための機械的検出方法はまだ確立されていない。さらに、変換対象のプログラムに含まれている冗長なロジックおよびバグを検出するための方法を開発するのは将来の課題である。この問題を解決する1つの方法が示唆されているが、その方法というのは、変換後にL3ベクトル(プログラム)内に出現するIF文の必要十分性をチェックするという方法である。
しかし、この目的のために、L3内に現れる等価のIF文の論理をチェックし、論理の漏れおよび反復があるかどうかを機械的に確認するために、いくつかの仕組みを考案しなければならない。IF文を確認するのは理論的には可能であるが、それを行うことができるツールはまだ開発されていない。
(4)従来プログラムのビジネス要件の整理
すでに説明したように、長期間にわたって何回も保守を受けたプログラムの中には、IF条件が冗長であり、それらを設定する理由がもはや明確でないものが多い。完成した新しいソース・プログラムを人間が解釈した後で、IF文をスリムにすることができる。しかし、始点単語と端点単語との関係およびその対応するIF条件により、解釈が機械的にできる場合には、要件の機械的整理を行うことができる。これは将来の開発のもう1つの課題である。
8.結論
主としてプログラムの機能に焦点を当てている従来のレガシー変換方法と比較すると、Lyeeアプローチは、プログラムのデータ結合に焦点を当てている。Lyeeのデータ結合アプローチによって従来プログラムを捉えるために、最初に単語単位をベースとする分析を行い、分析したデータのセットをテーブル形式に編集し、これによって対応するデータをベクトル(Lyeeの単語単位プログラム)に割り当てるのである。分析結果の表からの処理経路図およびLyeeBELTの作成は、原則的には技術的な困難はないが、構造作用要素(メモリをクリアするための機能要素)を作成するために、種々のタイプのいくつかのキーを探し出さなければならない。このプロセスは従来プログラムを変換するときに最も重要であるが、従来プログラムは各個人の能力による任意のやり方で作られていたのである。構造作用要素を生成することは、Lyee特有の仕様において最も根本的な要素である。Lyee用語でいう同期の概念を成立させるために構造作用要素を完璧に作成することが不可欠であり、そうすることによりデータ結合が達成される。
(4)従来プログラムのビジネス要件の整理
すでに説明したように、長期間にわたって何回も保守を受けたプログラムの中には、IF条件が冗長であり、それらを設定する理由がもはや明確でないものが多い。完成した新しいソース・プログラムを人間が解釈した後で、IF文をスリムにすることができる。しかし、始点単語と端点単語との関係およびその対応するIF条件により、解釈が機械的にできる場合には、要件の機械的整理を行うことができる。これは将来の開発のもう1つの課題である。
8.結論
主としてプログラムの機能に焦点を当てている従来のレガシー変換方法と比較すると、Lyeeアプローチは、プログラムのデータ結合に焦点を当てている。Lyeeのデータ結合アプローチによって従来プログラムを捉えるために、最初に単語単位をベースとする分析を行い、分析したデータのセットをテーブル形式に編集し、これによって対応するデータをベクトル(Lyeeの単語単位プログラム)に割り当てるのである。分析結果の表からの処理経路図およびLyeeBELTの作成は、原則的には技術的な困難はないが、構造作用要素(メモリをクリアするための機能要素)を作成するために、種々のタイプのいくつかのキーを探し出さなければならない。このプロセスは従来プログラムを変換するときに最も重要であるが、従来プログラムは各個人の能力による任意のやり方で作られていたのである。構造作用要素を生成することは、Lyee特有の仕様において最も根本的な要素である。Lyee用語でいう同期の概念を成立させるために構造作用要素を完璧に作成することが不可欠であり、そうすることによりデータ結合が達成される。
Lyeeの単語プログラムの7ボックスプログラム構造の第1のボックス(規約)により、プログラムの順序を考えることから解放され、それにより、データ結合処理は、旧プログラムの順序ロジックから影響を受けることがなくなり、新プログラムは順序の制限を受けないことが可能になる。最終的には、Lyeeのレガシー・システム変換で行うべきことは、必要な単語と対応する定義式(旧)とそれに付随する実行条件を取り出すことだけである。しかし、従来プログラムの処理順序は、仮の実行条件でもあるので、論理要素の実行条件を見つけ出すために、単階層化整形によりプログラムを正確に分析し、把握することが非常に重要である。定義式および実行条件(論理スライス)を取り出した後で、処理経路図の規則によりその配置方法が決定される。そこでは、データ結合構造および機能構造(ファイルの入力および出力、単語の計算)が離れないで協力して動作するように同じ基本構造内に置かれる。これにより、機能とデータ結合との間のねじれを軽減するための手段が提供される。まとめると、Lyee構造は、単語により機能の最小化を実現し、同時に単語により最小のデータ結合を定義し、次に両方を構成するようなメカニズム、すなわち、処理経路図を提供する。
この研究を通して、Lyee方法論を使用すれば、ほぼ機械的なレガシー・システム変換が可能で、またLyeeBELTおよび処理経路図で従来法で編集したプログラムを生成することができることが明らかになった。
それ故、ソフトウェアの再生産サイクルは、従来プログラムをLyeeBELTにし、このLyeeBELTを従来プログラムに戻すという方法で実現できる。これにより、レガシー・システムが抱えている問題が大幅に解決される。
Lyee方法論による種々のタイプの変換の試みが、種々のタイプの言語および/またはシステム・インフラストラクチャにより引き続き行われるであろう。そして、そのたびに、ツールおよび手順に適当な改善が追加されれば、近い将来、このレガシー・システムの変換アプローチが、市場にある現在のシステムを再構成するための魅力のある選択になるだろう。
ここで、Lyeeにおいて、特に処理経路図等の考えかたについては、特願2004−272400、特にその「0089」項から「0102」項で開示される事項を引用することとし、またそのほかLyeeの発明については、PCT/JP03/019588、PCT/JP03/12284、特願2003−33072、特願2003−346442及び特願2003−331373で開示される事項を引用することとし、開示を構成させるものとする。また、Lyeeで主に用いられる用語を以下に説明する。
[用語の説明]
<ビジネス知識>
ここでは、単語の値を生成するための定義式および計算条件、すなわちビジネスロジックを指している。たとえば、単語「原価率」の定義式「原価÷販売価格」などである。
<端点単語と始点単語>
単語aの値が、生成式「単語b+単語c」で生成されるという場合、aを端点単語、bおよびcを始点単語と呼ぶ。
<論理体と定義体>
コンピュータの入出力処理は、データ単位ではなく、データの集合単位に行われるが、同時に同一の定義体に対して入力または出力処理される単語の値の集合をLyeeでは論理体と呼んでいる。
[用語の説明]
<ビジネス知識>
ここでは、単語の値を生成するための定義式および計算条件、すなわちビジネスロジックを指している。たとえば、単語「原価率」の定義式「原価÷販売価格」などである。
<端点単語と始点単語>
単語aの値が、生成式「単語b+単語c」で生成されるという場合、aを端点単語、bおよびcを始点単語と呼ぶ。
<論理体と定義体>
コンピュータの入出力処理は、データ単位ではなく、データの集合単位に行われるが、同時に同一の定義体に対して入力または出力処理される単語の値の集合をLyeeでは論理体と呼んでいる。
定義体は、画面、ファイル、帳票、メモリテーブル、電文など、単語の値を保持する単位である。
<継続配置>
基本構造を、処理経路図の左から右へと、1つの同期範囲に属するように配置していくこと。
<継続経路、重複経路、多重経路>
経路とは、パレットの実行順序の道筋のこと。それぞれ、W03パレットの経路作用要素R3が、次の実行先パレットとして、他の基本構造のパレットを指定するときの、実行順序を示している。継続経路は、下位の基本構造(子の基本構造)のW04パレットが実行先として指定されることを意味する。重複経路は、上位の基本構造(親の基本構造)のW03パレットが次の実行先として指定されることを意味する。多重経路とは、W03パレットから上位の基本構造のW04パレットが次の実行先として指定されることを意味する。
<ワーク単語>
出力単語であるが、他の出力単語の始点単語として値を用いるためだけに生成される単語で、定義体に出力されることを目的とされない単語
<集計単語>
ファイルから単語Aの値を1レコードづつ読みこみ、単語Aの各レコードの値を集計して合計を計算する、という要件があった場合、従来法ではAの合計値であるKの計算式は下記のように表わされる。
K=K+A
しかし、Lyeeでは、一度値が決定された単語の値を上書きして変えることはできないので、前回の合計を保持しておくために集計単語をもうけて、集計を実現する。
<継続配置>
基本構造を、処理経路図の左から右へと、1つの同期範囲に属するように配置していくこと。
<継続経路、重複経路、多重経路>
経路とは、パレットの実行順序の道筋のこと。それぞれ、W03パレットの経路作用要素R3が、次の実行先パレットとして、他の基本構造のパレットを指定するときの、実行順序を示している。継続経路は、下位の基本構造(子の基本構造)のW04パレットが実行先として指定されることを意味する。重複経路は、上位の基本構造(親の基本構造)のW03パレットが次の実行先として指定されることを意味する。多重経路とは、W03パレットから上位の基本構造のW04パレットが次の実行先として指定されることを意味する。
<ワーク単語>
出力単語であるが、他の出力単語の始点単語として値を用いるためだけに生成される単語で、定義体に出力されることを目的とされない単語
<集計単語>
ファイルから単語Aの値を1レコードづつ読みこみ、単語Aの各レコードの値を集計して合計を計算する、という要件があった場合、従来法ではAの合計値であるKの計算式は下記のように表わされる。
K=K+A
しかし、Lyeeでは、一度値が決定された単語の値を上書きして変えることはできないので、前回の合計を保持しておくために集計単語をもうけて、集計を実現する。
従来法で上記K=K+Aとなるような集計は、Lyeeでは集計単語Xをもうけて、下記のように実現する。
K(合計)=集計単語X+A
X集計単語=K(合計)
集計単語には、集計のための一時的な領域(集計領域と呼ぶ)が確保される。
<等価単語>
出力単語の値を生成する定義式が複数あり、どの定義式を実行して値を生成するかは、定義式ごとに与えられた計算条件の判定によって決定するように要件が与えられている場合がある。この場合、論理要素L4およびL3は、それぞれ定義式と計算条件の数だけ設けられる。1つの出力単語には1つの値だけが決定されるので、論理要素が複数設けられても、計算条件が真となって実行される定義式は、1回のイベントによる同期範囲に1つだけである。このように複数の定義式と計算条件のペアを持つ出力単語を等価単語と呼ぶ。1つの定義式と計算条件のペアを持つ出力単語は正規単語と呼ぶ。
<境界単語>
出力単語Aの定義式または計算条件の始点単語Bの値が、出力単語Aと異なる基本構造内で生成される場合、始点単語Bの値が生成された時点で、出力
単語Aの基本構造内に値を保持しておくためにもうけるもうける単語。
なお、本発明は、上述した実施形態および実施例には限定されず、本発明の技術思想の範囲内で様々な変形が可能である。たとえば、ビジネス・メソッド、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置、あるいはこれらの機能をコンピュータに実現するためのソフトウェア並びに該ソフトウェアを搭載した記録媒体・専用機、などとしてもそれぞれ実現することが可能である。さらに、上記で説明したように本発明は、方法としても、或いはかかる機能を備えるソフトウェアとしても、該ソフトウェアが搭載される装置・ツール(ソフトウェア自体の場合も含む)としても、さらにはシステムとしても、実現され得るのはもとよりである。
K(合計)=集計単語X+A
X集計単語=K(合計)
集計単語には、集計のための一時的な領域(集計領域と呼ぶ)が確保される。
<等価単語>
出力単語の値を生成する定義式が複数あり、どの定義式を実行して値を生成するかは、定義式ごとに与えられた計算条件の判定によって決定するように要件が与えられている場合がある。この場合、論理要素L4およびL3は、それぞれ定義式と計算条件の数だけ設けられる。1つの出力単語には1つの値だけが決定されるので、論理要素が複数設けられても、計算条件が真となって実行される定義式は、1回のイベントによる同期範囲に1つだけである。このように複数の定義式と計算条件のペアを持つ出力単語を等価単語と呼ぶ。1つの定義式と計算条件のペアを持つ出力単語は正規単語と呼ぶ。
<境界単語>
出力単語Aの定義式または計算条件の始点単語Bの値が、出力単語Aと異なる基本構造内で生成される場合、始点単語Bの値が生成された時点で、出力
単語Aの基本構造内に値を保持しておくためにもうけるもうける単語。
なお、本発明は、上述した実施形態および実施例には限定されず、本発明の技術思想の範囲内で様々な変形が可能である。たとえば、ビジネス・メソッド、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置、あるいはこれらの機能をコンピュータに実現するためのソフトウェア並びに該ソフトウェアを搭載した記録媒体・専用機、などとしてもそれぞれ実現することが可能である。さらに、上記で説明したように本発明は、方法としても、或いはかかる機能を備えるソフトウェアとしても、該ソフトウェアが搭載される装置・ツール(ソフトウェア自体の場合も含む)としても、さらにはシステムとしても、実現され得るのはもとよりである。
さらに本願発明は、その技術思想の同一及び等価に及ぶ範囲において様々な変形、追加、置換、拡大、縮小等を許容するものである。また、本願発明を用いて生産される装置、方法、ソフトウェア、システムが、その2次的生産品に登載されて商品化された場合であっても、本願発明の価値は何ら減ずるものではない。
ソフトウェアの再生産サイクルは、従来プログラムをLyeeBELTにし、このLyeeBELTを従来プログラムに戻すという方法で実現できる。これにより、レガシー・システムが抱えている問題が大幅に解決される。
Pi 変換対象のプログラム
Pj 従来型プログラム
1 リフォームプログラム
2 LyeeBELT作成プログラム
3 スケルトン
4−1 機能編集パラメータ
4−2 要素組立
Pj 従来型プログラム
1 リフォームプログラム
2 LyeeBELT作成プログラム
3 スケルトン
4−1 機能編集パラメータ
4−2 要素組立
Claims (2)
- 所定の整形規則に基づきソース・プログラムを正規化して解析テーブルを生成するステップと、
前記解析テーブルから端点単語に着目して該単語に係る生成論理情報を抽出するステップと、
前記抽出された生成論理情報に基づき第1のLyeeBELT情報を決定するステップと、
前記決定された第1のLyeeBELT情報を言語変換して第2のLyeeBELT情報を生成するステップと、
前記生成された第2のLyeeBELT情報をLyeeALLツール(テンプレート)の所望の位置に代入してコードを得るステップと
を具備することを特徴とするプログラムの変換方法。 - ソース・プログラムの正規化して解析テーブルを生成するリフォーム部と、
前記解析テーブルから端点単語に着目して該単語に係る生成論理情報を抽出する抽出部と、
前記抽出された生成論理情報に基づき処理経路図およびLyeeBELTを生成するためのLyeeBELT作成部と、
Lyee構造のベクトル生成を行う要素生成部と、
前記要素生成部により生成されたLyee構造のベクトルを組み立てることでLyeeプログラムを生成する要素組立部(テンプレート)と、
を具備することを特徴とするプログラムの変換ツール。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003328762 | 2003-09-19 | ||
JP2003328762 | 2003-09-19 | ||
PCT/JP2004/013690 WO2005029321A1 (ja) | 2003-09-19 | 2004-09-17 | プログラムの変換方法及び変換ツール |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2005029321A1 true JPWO2005029321A1 (ja) | 2007-11-15 |
Family
ID=34372911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005514070A Pending JPWO2005029321A1 (ja) | 2003-09-19 | 2004-09-17 | プログラムの変換方法及び変換ツール |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2005029321A1 (ja) |
WO (1) | WO2005029321A1 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1235682A (zh) * | 1996-10-30 | 1999-11-17 | 信息系统发展协会 | 软件的生产方法、处理装置、处理方法及记录媒体 |
EP1071009A4 (en) * | 1998-03-20 | 2002-07-17 | Inf System Development Inst | METHOD AND DEVICE FOR PRODUCING SOFTWARE |
AU760395B2 (en) * | 1999-11-11 | 2003-05-15 | Information System Development Institute | Program reproducing method and device, and medium on which program for program reproduction recording |
-
2004
- 2004-09-17 WO PCT/JP2004/013690 patent/WO2005029321A1/ja active Application Filing
- 2004-09-17 JP JP2005514070A patent/JPWO2005029321A1/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2005029321A1 (ja) | 2005-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100558952B1 (ko) | 인터페이스 화면 설계 중심의 소프트웨어 생산 공정 자동화방법 및 이 방법을 프로그램화하여 수록한 컴퓨터로 읽을수 있는 기록매체 | |
Linsbauer et al. | A classification of variation control systems | |
CN108509185B (zh) | 用于任意软件逻辑建模的系统和方法 | |
Seidl et al. | Co-evolution of models and feature mapping in software product lines | |
Bousse et al. | Advanced and efficient execution trace management for executable domain-specific modeling languages | |
AU4098700A (en) | Circuit arrangement for measuring the resistances of a pressure-sensitive resistance mat | |
JPWO2004025463A1 (ja) | 要件定義方法、ソフトウェアの開発方法、及び、要件単語の変更方法並びに新規規定方法 | |
Fowler et al. | Improving the design of existing code | |
Vasconcelos et al. | Skeleton-based agent development for electronic institutions | |
CN101561671A (zh) | 基于构件的梯形图设计方法 | |
JPWO2002097727A1 (ja) | 知識の自動生成方法、知識の自動生成システム、知識の自動生成プログラム、自動設計方法及び自動設計システム | |
JPWO2006095434A1 (ja) | ソフトウェア構築プログラム、該プログラムを記録した記録媒体、ソフトウェア構築方法、およびソフトウェア構築システム | |
Bodeveix et al. | Event-B formalization of a variability-aware component model patterns framework | |
EP1677187A1 (en) | A software development method | |
Smith et al. | An environment for building a system out of its requirements | |
CN112181483B (zh) | 等离子体控制系统软件开发平台及方法 | |
Gall et al. | Capsule oriented reverse engineering for software reuse | |
JPWO2005029321A1 (ja) | プログラムの変換方法及び変換ツール | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
AU760395B2 (en) | Program reproducing method and device, and medium on which program for program reproduction recording | |
KR101085114B1 (ko) | 피엘씨 소프트웨어 개발환경 제공 시스템 | |
JP2007265418A (ja) | 自動詳細化システム | |
Takeda et al. | Legacy system program transformation by Lyee methodology | |
KR102588597B1 (ko) | Uml 시퀀스 다이어그램의 대체 에디터로서 오퍼레이션 로직 디자이너를 이용하여 프로그램을 설계하는 방법 및 그를 이용한 장치 | |
Ziegenhagen et al. | Expanding tracing capabilities using dynamic tracing data |