JPWO2005029323A1 - ソフトウェア生成方法 - Google Patents

ソフトウェア生成方法 Download PDF

Info

Publication number
JPWO2005029323A1
JPWO2005029323A1 JP2005514111A JP2005514111A JPWO2005029323A1 JP WO2005029323 A1 JPWO2005029323 A1 JP WO2005029323A1 JP 2005514111 A JP2005514111 A JP 2005514111A JP 2005514111 A JP2005514111 A JP 2005514111A JP WO2005029323 A1 JPWO2005029323 A1 JP WO2005029323A1
Authority
JP
Japan
Prior art keywords
lyee
software
value
program
word
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
JP2005514111A
Other languages
English (en)
Inventor
モハメド メジリ
モハメド メジリ
ベシール クタリ
ベシール クタリ
ハミド 藤田
ハミド 藤田
Original Assignee
カテナ株式会社
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 カテナ株式会社 filed Critical カテナ株式会社
Publication of JPWO2005029323A1 publication Critical patent/JPWO2005029323A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional or applicative languages; Rewrite languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Abstract

プロセス代数を用いて、ソフトウェアの自動生成プロセス及びLyeeにより生成したソフトウェアの意味論を形式化する。 本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとに、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性によって宣言(規定)する第1のステップと、単語単位の宣言から、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L2、L3、L4)および、作用要素(I2、O4、S4)を作成する第2のステップと、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合に集合化する第3のステップと、前記集合ごとに、1つの制御関数モジュールΦを配置する第4のステップと、前記プログラムに1つの制御関数モジュールΨを配置する第5のステップとを具備する。

Description

本発明は、ソフトウェア生成方法に係り、特に、Lyee方法論におけるプロセス代数による形式化を用いたソフトウェア生成方法に関する。
ここ数年の間に、ソフトウェアの開発ライフサイクルに関連する1つまたは多くの局面を改善するために種々の方法論および技術が考案され提案されてきた。しかし、この研究分野における熱心な努力にもかかわらず、明快に理解でき、修正可能なシステムの製造は、いまだに野心的目標であり達成するにはほど遠い。その理由の1つは、ソフトウェア自身が複雑なものであり、捕らえにくいものであるからであり、もう1つの理由は、現在の方法論に限界があるからである。最近、Lyee(商標)と呼ばれる新しく、非常に有望な方法論が提案された。異なる分野に関連する広い範囲のソフトウェアの問題を効率的に処理することを目的としたLyeeにより、その要件を定義するだけでソフトウェアを開発することができるようになった。
しかし、Lyeeにより生成されたソフトウェアの意味論も、要件からのソフトウェア自動生成プロセスも、形式的でない言語で説明されるので、この方法論を理解し研究しようとすると、難しく、混乱が生じる恐れがある。
ジェイ・エイ・ベルグストゥラ、ジェイ・ダブリュ・クロップ(J.A.Bergstra and J.W.Klop)著、「抽象化を用いたコミュニケーション・プロセスの代数」、1985年,理論コンピュータ科学、37(1)、p.77−121 ジー・ベリー、ジー・バウドル(G.Berry and G.Boudol)著、「化学抽象機械」、1992年,理論コンピュータ科学、96(1)、p.217−248 シー・エー・アール・ホーア(C.A.R.Hoare)著、「コミュニケーティング順次プロセス」、プレンティス・ホールコンピュータ科学国際シリーズ、プレンティス・ホール出版、1985年 エム・メジリ、ビー・クタリ、エム・アーヒオウイ(M.Mejri,B.Ktari,and M.Erhioui)著、「Lyee指向ソフトウェアについての静的分析」、パリにおけるLyee方法論に関する第1回国際ワークショップ予稿集、ハミド・藤田、ポウル・ジョナネッセン編「ソフトウェア方法論、ツール及び技術における新潮流」p.375−394、アイオーエス出版、2002年 アール・ミルナー(R.Milner)著、「コミュニケーション・システムの計算法」、コンピュータ科学92講義録、ベルリン、1980年、スプリンガー・フェアラーク出版 根来文生著、「Lyeeソフトウェアの原理」、21世紀の情報科学についての国際会議2000(IS2000)、p.121−189、2000年11月 根来文生著、「Lyee入門」、ソフトウェア生産技術研究所、東京、日本、2001年 根来文生、アイ・ハミド(I.Hamid)著、「意思工学の提案」、データベースと情報システムに関する第5回東ヨーロッパ会議研究(ADBIS’2001)、2000年9月 根来文生、アイ・ハミド(I.Hamid)著、「意思工学の提案」、インターネット上の電子商取引、科学及び教育の基盤における進歩に関する国際会議(SSGRR2001)、2001年
本発明の主な目的は、第1に、プロセス代数を用いて、Lyeeにより生成したソフトウェアの意味論とソフトウェアの自動生成プロセスを形式化することである。実際、プロセス代数は、本質的にLyee方法論の多くの概念を裏付けるので、従ってLyee方法論を簡潔かつ巧みに形式化する。そして、第2の目的は、プロセス代数は、フォン・ノイマンのものより、より適した抽象機械をLyee方法論に提供することである。実際、この新しい抽象機械は、プログラムを化学溶液と見なし、そこでは、分子(Lyee方法論の異なるベクトル)が共通の目的を達成するために相互に作用しあっている。
かかる課題を解決するために本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとに、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性によって宣言(規定)する第1のステップと、単語単位の宣言から、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)を作成する第2のステップと、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合に集合化する第3のステップと、前記集合ごとに、1つの制御関数モジュールΦを配置する第4のステップと、前記プログラムに1つの制御関数モジュールΨを配置する第5のステップとを具備する。
本発明の異なる実施体としての「開発対象のソフトウェア」を生産するためのプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置は、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型の未定義部分に、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する、宣言情報挿入手段と、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦを、前記単位を制御するように関連づける、制御関数Φ配置手段と、1つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づける、制御関数Ψ配置手段とを具備するように構成することもできる。
本発明はさらに、上述の「開発対象のソフトウェアを生産する方法」によって生産されたソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置(ハードウェア)としても実現されるが、この場合の本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型の未定義部分に挿入したモジュール群と、前記モジュール群を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦで制御するように関連づけている1つまたは複数の制御関数モジュールΦと、前記制御関数Φを、1つの制御関数モジュールΨで制御するように関連づけている制御関数モジュールΨで構成されることもできる。
またさらに本発明は、上述の「開発対象のソフトウェアを生産する方法」によってソフトウェアを生産するために用いられるソフトウェアコードの雛型としてのソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置(ハードウェア)としても実現されるが、この場合の本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、埋め込むべき未定義部分を有した、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦで制御するための機能を有した制御関数モジュールΦのひな型と、前記制御関数Φを1つの制御関数モジュールΨで制御するための機能を有した制御関数モジュールΨのひな型とを備えるソフトウェアとしてコード化可能なひな型として実現してもよい。
さらに、本発明は、上述の「開発対象のソフトウェアを生産する方法」による、要件から抽出した情報(ドキュメント(紙、データ))の抽出方法として、またかかる抽出方法によって抽出された情報(ドキュメント(紙、データ))として、さらには当該抽出された情報の使用方法として、或いは、これらの情報が搭載された情報記録媒体として、または情報の抽出方法/使用方法がコード化されたソフトウェア、当該ソフトウェアが搭載された記録媒体/装置(ハードウェア)として、いずれも実現することができるが、この場合の本発明は、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型の未定義部分に挿入すべき、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦで制御するように関連づけるための情報と、前記制御関数Φを1つの制御関数モジュールΨで制御するように関連づける情報とを備えるソフトウェア開発要件から抽出した情報として実現してもよい。
なお、論理体については、同一出願人による特願2004−272400を参照し、これを引用し、開示の一部とする。
異なる分野に関連する広範囲のソフトウェアの問題を効率的に処理し、従来の方法論と比較した場合には、Lyeeを使用すると開発時間、保守時間およびドキュメント量はかなり少なくなる(70〜80%程度)。
Lyee方法論:プロセス代数による形式化
概要:ここ数年の間に、ソフトウェアの開発ライフサイクルに関連する1つまたは多くの局面を改善するために種々の方法論および技術が考案され提案されてきた。しかし、この研究分野における熱心な努力にもかかわらず、明快に理解でき、修正可能なシステムの製造は、いまだに野心的目標であり達成するにはほど遠い。その理由の1つは、ソフトウェア自身が複雑なものであり、捕らえにくいものであるからであり、もう1つの理由は、現在の方法論に限界があるからである。最近、Lyeeと呼ばれる新しく、非常に有望な方法論が提案された。異なる分野に関連する広い範囲のソフトウェアの問題を効率的に処理することを目的としたLyeeにより、その要件を定義するだけでソフトウェアを開発することができるようになった。
しかし、Lyeeにより生成されたソフトウェアの意味論も、要件からのソフトウェア自動生成プロセスも、形式的でない言語で説明されるので、この方法論を理解し研究しようとすると、難しく、混乱が生じる恐れがある。
本発明の主な目的は、第1に、プロセス代数を用いて、Lyeeにより生成したソフトウェアの意味論とソフトウェアの自動生成プロセスを形式化することである。実際、プロセス代数は、本質的にLyee方法論の多くの概念を裏付けるので、従ってLyee方法論を簡潔かつ巧みに形式化する。そして、第2の目的は、プロセス代数は、フォン・ノイマンのものより、より適した抽象機械をLyee方法論に提供することである。実際、この新しい抽象機械は、プログラムを化学溶液と見なし、そこでは、分子(Lyee方法論の異なるベクトル)が共通の目的を達成するために相互に作用しあっている。
1.始めに
高い品質を持つソフトウェアを容易に迅速に製造することは、ソフトウェア開発研究分野の基本的な関心事である。ここ数年にわたって、ソフトウェアの開発ライフサイクルに関連する1つまたは多くの局面を改善するために、種々の方法論および技術が考案され提案されてきた。しかし、この研究分野における熱心な努力にもかかわらず、明快に理解でき、修正可能なシステムの製造は、いまだに野心的目標であり達成するにはほど遠い。その理由の1つは、ソフトウェア自身が複雑なものであり、捕らえにくいものであるからであり、もう1つの理由は、現在の方法論に限界があるからである。実際、提案されたほとんどすべての方法論は、明快に理解でき、修正可能なシステムの製造に失敗しており、その使用は、いまだに非常に広範囲の能力、技術および知識を持つ専門家だけが可能なことだと見なされている。そのため、人件費や維持費が高いものになり、ソフトウェアに対して広範なチェックが必要になる。これらの理由で、企業は、ソフトウェア開発サイクルにおける実証可能な改善を約束するすべての新しい方法論を歓迎する傾向にある。
最近、Lyee(「リー」と読む。「governementaL methodologY for softwarE providencE」の尾文字語)(非特許文献6、7、8、9参照)と呼ばれる新しく、非常に有望な方法論が提案された。異なる分野に関連する広範囲のソフトウェアの問題を効率的に処理することを目的としたLyeeにより、その要件を定義するだけでソフトウェアを開発することができる。もっと正確に言えば、開発者は、単語、計算式、計算条件(前提条件)および画面と帳票のレイアウトを与えさえすれば、後は、コンピュータが、以降のすべての面倒なプログラミング・プロセス(例えば、制御ロジックに関する局面など)をすべて行ってくれる。その新しさにもかかわらず、Lyeeの使用結果は、Lyeeには非常に多くの潜在的可能性があることを示している。実際、従来の方法論と比較した場合には、Lyeeを使用すると開発時間、保守時間およびドキュメント量はかなり少なくなる(70〜80%程度)(非特許文献7参照)。非特許文献4において、この方法論の多くの、特にLyee要件の、局面を改善するために、我々は、いくつかの古典的静的分析技術を提案した。
しかし、Lyeeにより生成したソフトウェアの意味論も、要件からのソフトウェア自動生成プロセスも、形式的でない言語で説明されているので、この方法論を理解し研究しようとすると、難しく、混乱が生じる恐れがある。さらに、この方法論の背後にあるアイデアは、このようなアイデアをサポートするのに適当でない、逐次処理言語(sequential language)によって記述されている。実際、Lyeeにより生成したソフトウェアは、基本的には、小さなコンポーネント(Lyee用語でベクトル(vector)と呼ばれる)群からできている。ここでは、各コンポーネントはそれぞれのアトミック・ゴール(atomic goal:要素の目的)を持って相互作用によって互いに協力し合い、要求される結果(グローバル・ゴール(global goal:全体の目的))を生成する。一方、平行性(concurrency:複数の計算主体が互いに情報のやりとりを行いながら動作すること)および通信(communication)をサポートするプロセス代数は、共同作用しあう(concurrent)コンポーネントを記述するのに本質的に適した言語であることはよく知られている。それ故、プロセス代数は、Lyee方法論の概念をサポートするための、形式的で価値ある基礎を提供する。Lyee方法論にプロセス代数を使用することによる数ある利点のなかには、Lyeeの現実のバージョンにおける多くのコンポーネント(ベクトル全体またはベクトルの一部)は、もはや必要でなくなる、ということがある。これらのコンポーネントは、逐次処理言語によって記述されているがために、ある処理のまとまりの実行順序を制御するためにどうしても必要であったが、これらの役割は、プロセスの平行処理と通信をサポートするプロセス代数により、必然的にサポートされるからである。実際、経路作用要素(routing vector)は、もはや必要ではなくなる。より小さく、処理時間がより短く、必要メモリがより少ないプログラムを生成する、シンプルなLyeeの形式的記述を手にすることができる。その上、この形式的記述は、この方法論のいろいろな局面の多くの興味ある分析に不可欠なスタート点になる。例えば、Lyeeで生成したソフトウェア、またはソフトウェア生成プロセスを最適化するために、最適化されたプログラムが元のバージョンと同じものであるという形式的証拠を必要とする。プロセス代数を使用すれば、形式的に同じものであることのチェック、またはもっと一般的にモデル・チェックをうまく行うことができる。
本稿においては、最初に、Lyee方法論の基本的なコンセプトを容易かつ本質的(naturally)にサポートする、Lyee計算法(Lyee−Calculus)と呼ぶ形式的プロセス代数(formal process algebra)を定義する。実際に、この計算法は、フォン・ノイマン型(逐次処理型)の計算機より、Lyee方法論の概念をサポートするのにより適した抽象機械(abstract machine:計算機の概念を抽象化したもの)と見なすことができる。この機械は、プログラムを、最終結果を生成するために共に相互作用を行う分子の集合と見なす。第二に、この計算法が、どのようにして、Lyeeコンポーネント(Lyeeではベクトルと呼ぶ)とLyee方法論の全ソフトウェア生成プロセスの両方を形式化し、簡単にすることができるのかを示す。実際に、Lyeeソフトウェア生成の自動生成全プロセスを形式化した。
本稿の残りの部分は、下記のような構成になっている。セクション2において、Lyee計算法の構文論(syntax)および意味論(semantics)を定義する。セクション3においては、Lyee方法論の技術的紹介を行い、Lyee計算法によるその形式化の全体像を紹介する。セクション4においては、Lyee計算法によるLyee方法論の詳細かつ完全な形式化を提案する。セクション5においては、生成したプログラムの、実行段階毎の記述と一緒に、どのようにして簡単な要件からプログラムが自動的に生成されるのか、の両方を具体的に示す1つのケーススタディについて説明する。最後に、セクション6においては、この研究の結論を述べ、将来の研究のいくつかについて説明する。
2.Lyee計算法
プロセス代数は、複雑なコンピュータ・システム、特に、通信し、平行に実行するコンポーネントを含むコンピュータ・システムのための形式的記述技術である(非特許文献1、3、5参照)。プロセス代数は、通常、文献で計算法(calculus)と呼ばれる。何故なら、プロセス代数は、プロセス代数の分野を超えて、種々の数学的および論理的概念(平行性理論(concurrency theory)、動作意味論(operational semantics)、複雑性理論(complexity theory)、ロジック等)を含んでいるからである。
このセクションにおいては、Lyee方法論を形式化するために特に定義したLyee計算法と呼ぶ新しい計算法の構文法および意味論について説明する。
2.1 構文法(Syntax)
Lyee計算法プログラムは、指定されたチャネル上でハンドシェイク技術(hand−shake technique:2つのプロセスの一方を受信可能状態に、他方を送信可能状態におくことによって通信させる技術)により通信(communicate)する独立した並行プロセスからなるシステムである。チャネルは、その上では特定のプロセスだけが通信することができるように制限できる。あるプロセスは、作用[?!e]を行うことにより、チャネル?を通して値?を送ることができる(?は、式eの計算結果(valuation))。同様に、あるプロセスは、作用[??e]を行うことにより、チャネル?から式eにの値?を受信することができる(?は、式eの計算に使用する値)。
あるプロセスは、また、不作用作用(silent action)τを行うこともできる。この特別な作用は、プロセス間の同期(synchronization:プロセス間通信において、あるプロセスが値などを送信したと同時に、他のプロセスがそれを受信すること)のような、システム内部のふるまい(internal behavior)を表わすことを意図している。また、プロセスの進展における予見不能性(indeterminism)、すなわち、複数のプロセスの選択肢があってどのプロセスが実行させれるか予測できないような場合(後述のプロセス構文法定義1の「選択」の説明を参照)、を捉えるために有益である。
プロセスの構文法(syntax)を以下に定義する。
<定義<構文法1>
Figure 2005029323
<定義<構文法2>
K,K,K::={κ}|K ∪ K
<定義<構文法3>
Figure 2005029323
<定義<構文法4>
κ::=??!e|??e|τ|
上記の定義構文法に使われる記号の意味と、その直感的構文法の意味は下記のとおりである。
<定義<構文法1>
Figure 2005029323
定義構文法1の直感的意味は次のとおりである。すなわち、プロセスPとQがあったとき、その関係や内容は、以下のいずれかとして定義される。すなわち、シーケンス([K].P)、並行構成(P|Q)、選択(P+Q)、条件付き選択(P>Q)、制限(P/L)、定義、無プロセス(nil)、のいずれかである。ここで、「定義」とは、
Figure 2005029323
のことで、記号の左辺は、右辺によって定義される。
各構文の解釈については後述する。
<定義<構文法2>
Figure 2005029323
定義構文法2の直感的意味は次のとおりである。すなわち、作用の集合K、K、Kがあるとき、その作用の集合は、1つの作用を要素とする集合({κ})、作用集合が結合した集合(K ∪ K)、のいずれかである。
<定義<構文法3>
Figure 2005029323
定義構文法3の直感的意味は、次のとおりである。すなわち、チャネルの集合L,L,Lがあるとき、そのチャネルの集合は、要素を持たない空集合(0)、1つのチャネルだけを要素とする集合({?})、チャネルの集合が結合した集合(L∪L)、のいずれかである。
<定義<構文法4>
Figure 2005029323
定義構文法4の直感的意味は、次のとおりである。すなわち、作用κがあるとき、その作用は、チャネル?上で式eの計算結果の値を送信する送信作用(?!e)、チャネル?上で式eの値を受信する受信作用(??e)、不作用作用(τ)、のいずれかである。
定義構文法1に定義した、構文法の意味を詳しく説明する。
1)[K].P:シーケンス(Sequence)
プロセス[K].Pは、作用の集合であるKに属す全ての作用(action)、すなわち{κ,...,κ}、を実行した後にPとしてふるまうプロセスである。Kに属する作用を実行する順序は重要ではない。ここでは、説明を簡単にするために、[{κ,...,κ}]と書く代わりに[κ,...,κ]と書く。
2)P|Q:並行構成(Parallel composition)
プロセスP|Qは、並行に実行されるプロセスPおよびQとしてふるまう。各プロセスは、両方が知っているチャネル上で互いに相互作用することができるし、または各プロセスが他方から独立して外部世界(システムの環境またはエンドユーザ)と相互作用(interact)することもできる。同じチャネル上で2つのプロセスが同期する(synchronize:プロセス間通信において、あるプロセスが値などを送信したと同時に、他のプロセスがそれを受信する)と、プロセス全体は、作用τ(不作用作用)を実行し、その後、残りのプロセスとしてふるまう。具体的に、下記のプロセスの例で考えてみる。
P=P1|P2
P1およびP2を下記のように定義する。
Figure 2005029323
上記式の直感的意味は、
P1は、値4をチャネル?上に送信し、その後は、プロセスP1’としてふるまうプロセスである。P2は、チャネル?上に式xの値が与えられるのを待って、値が与えられたら受信し、その後は、プロセスP2’としてふるまうプロセスである。
従って、プロセスPは、プロセスP1とP2が同期したとき(それは実際にはP1からの値4の送信と同時にP2による受信が行われることによる)、不作用作用τを実行し、その後は、残りのプロセスP1’|P2’としてふるまう。意味論上、この遷移を下記のように表わす。
Figure 2005029323
この式の直感的意味は、プロセスPにおける相互作用の結果、不作用作用τが実行され、プロセス全体が、並行プロセスP1’|P2’に移行する、ということである。
関係
Figure 2005029323
の形式的定義はこのセクションの後の方で示す。
3)P+Q:選択(Choice)
プロセスP+Qは、プロセスPまたはQとしてふるまうプロセスである。PおよびQのどちらもが、始まりが不作用作用であるような場合を除いて、どちらのプロセスが実行されるかの選択は、環境によって決定論的に決まる。一方、両方のプロセスが不作用作用で開始する場合には、選択は決定されない。
4)P>
Q:条件付き選択(Guarded choice):
プロセスP>
Qは、プロセスQが活性化(activated)されるまで、Pとしてふるまうプロセスである。後者Qが活性化されたときはいつでも、Pは停止し、メモリからクリアされる。
5)P/L:制限(Restriction)
プロセスP/Lは、チャネルの集合Lに与えられたチャネルだけを使って環境と通信することができるプロセスP、としてふるまうプロセスである。
6)数3の記号:定義(Definition)
たとえば、数3の記号によって、下式のような定義ができる。
Figure 2005029323
数7の式において、Aはプロセスの識別名、
Figure 2005029323
はプロセスAの変数(パラメータ)で、左辺のプロセスは、右辺のプロセスPに等しいと定義されている。プロセスPは再起的にAを含むことができる。
7)nil:無プロセス(nil process):
どんな作用も実行できないプロセス、いいかえると終了しているプロセス(dead process)である。あるプロセスが終了すると、通常nilプロセスになる。終了してnilプロセスになったとき、そのプロセスはもはや起動して(activated)いないので、作用を実行する条件が整ったとしても、何の作用も実行できない。
2.2 例値を保持するプロセスのモデル化
このセクションにおいては、メモリという、値を保持するセル(cell)を、その通信チャネルを通して、その環境と相互作用を行うプロセスとしてモデル化する方法について説明する。図1に示すように、メモリ・セルは通信のための2つのポート(チャネル)inおよびoutを持つものと見なす。このメモリ・セルの基本的なタスクは、チャネルin上で値を無制限に待つことであり、チャネルout上でその値を利用可能にすることである。メモリ・セルは、新しい値がチャネルinに入力されるまで、同じ値を必要な回数だけチャネルoutに出力することができる。チャネル自体は値を保持しない。
メモリ・セルxが値?を保持しているプロセス・セルC(?)は、下記のように表わす。
Figure 2005029323
この形式的記述の直感的意味は、値?を保持しているプロセスC(?)は、チャネルin上で式yの値を受信したときは、プロセスC(y)としてふるまい(すなわち保持する値が?から式yの値に変更される)、保持している値?をチャネルout上に送信したときには、送信作用の後も値?を保持したままプロセスC(?)としてふるまうプロセスである。
値を保持するメモリ・セルをプロセスとして捉えることにより、メモリ・セルにさらに知能を付加することができる。例えば、初期化される(初期値を受信する)までその内容にアクセスさせないセルを書くことができる。情報処理能力のあるこのスマート・セル(smart cell)は、下記のように定義することができる。
Figure 2005029323
プロセスCell(x)は、チャネルin上で式yの値を受信した後、式yの値を保持するプロセスC(y)としてふるまうプロセスである(式yに値を受信し、式yの値を保持するプロセスで、送信は行わない)。
ここで、下記のように定義した2つのプロセスについて考えてみる。
Figure 2005029323
プロセスP1は、チャネルin上に値5を送信し、nilになる(終了する)プロセスである(値5を送信するプロセス)。プロセスP2は、チャネルout上で式yの値を受信した後にnilになる(終了する)プロセスである(数式yに値を受信するプロセス)
これらの2つのプロセスが、セルx(C)を通して通信するようなプログラムを書くことが容易にできる。
P1|Cell(x)|P2
このプログラムは、プロセスP1、プロセスCell(x)、プロセスP2が並行に実行されるプログラムである。
図2は、上記に含まれる全てのプロセス間の相互作用を示したものである。
このプログラムの実行における、個々のステップの詳細は以下のようになる。
Figure 2005029323
上記の式の意味を直感的に表わせば、プロセスP1|Cell(x)|P2は、以下の第1ステップと第二ステップを経て実行される。(等号記号で記載される右辺が1つのステップである)下線は相互作用(同期)を起こす送受信作用を示している。
<第1ステップ>
(1)[in!5].nil(チャネルinに値5送信)、(2)[in!5].C(y)(チャネルinで式yに与える値を受信し、受信後はセルxに式yの値を保持)、(3)[out?y].nil(チャネルoutで式yの値を受信)、の3つのプロセスが並行に行われた結果、
(1)がチャネルinに値5を送信完了し、同時に(2)がチャネルinで値5を受信する、というプロセス間の相互作用(同期)が起こって、
不作用作用τが実行され、
(4)C(5)(セルxに値5を保持)、と(3)[out?y].nil(チャネルoutで式yの値を受信)、の2つのプロセスの並行プロセスに移行する。
<第2ステップ>
前述の数1−19の定義から、(4)C(5)は選択プロセス(4)−1([in?y].C(y)+[out??].C(?))に置き換えることができる。
すなわち、
プロセス(4)−1と、(3)が並行に行われた結果、
(4)−1の[out??].C(?)(チャネルoutに値5を送信)と同時に(3)の(チャネルoutで式yの値5を受信)が起こる、という相互作用(同期)が起こって、
不作用作用τが実行され、
その結果、残りのプロセスはC(5)(セルxに値5を保持)としてふるまわれる。
2.3 意味論
以下に、Lyee計算法の形式的意味論について説明する。この意味論は、相互作用関係
Figure 2005029323
により定義される。この時、演算子→は「関係」(relation)を表わし、κは作用を表わす。「関係」は複数の「関係」の集合であり、その集合要素である1つ1つの「関係」は次の3つの要素で構成されている。第1の要素は「変化前のプロセス」、第2の要素は「変化の後のプロセス」、第3の要素は「変化の間に実行された作用」である。
Figure 2005029323
と書くとき、関係→の3要素は(P,Q,K)である。
上記のように定義するとき、数14の意味は、サブプロセスPの中の相互作用(reaction)によって、全体プロセスがアトミック・アクション(atomic action;割込みを許さない一連の不可分な作用で、次の別の作用を開始させるために、必ず完了されなければならない)κを実行してサブプロセスQとなる、ことを意味する。相互作用関係(interaction relation)とういう着想は、ベリー(Berry)およびバウドル(Boudol)(非特許文献2参照)の化学抽象機械(Chemical Abstract Machine)によって触発されたものである。このモデルでは、プロセスは、相互作用を起こすことを待っている分子の化学溶液であると見なしている。
数式13の関係を形式的に表わすために、下記の概念を定義する必要がある。
Figure 2005029323
は、プロセスを簡単にするために用いる記号で、左辺が、簡素化されたプロセスである右辺と等しいことを表わす。下記に示すように、無プロセスを除去することによりプロセスを簡単にすることができる。
Figure 2005029323
式eの計算結果である値の集合を
Figure 2005029323
で示す。eが変数である場合には、その計算結果の値の変域も、その変数の変域(domain)(整数、実数等)と同じである。説明を簡単にするために、すべての変数は実数の集合に属するものと見なす。
Figure 2005029323
は、作用κが使用するチャネルの名前である。たとえば、
Figure 2005029323
の意味は次の通り:
不作用作用τが使用するチャネルは存在しないので、空集合(0)である。
送信作用(?!e)と受信作用(??e)が使用するチャネルは、?である。
「関係」の集合(→)は、要素として、表5に示す15個の規則を満足させるような「関係」を最小数持つ「関係」である。
かっこ内ないに示した各種のR記号は、規則名を示す記号である。規則は、前提条件と結果からなっており、各規則は、横線の上段に示される条件のとき、下段に示した結果になるような規則である。
Figure 2005029323
たとえば、第2番目の規則(R)の意味は以下のとおりである:
値?が式eの値の集合に属すとき(上段の前提条件が成立するとき)、チャネル?上に式eの値を送信後、プロセスPとなる[?!e].Pは、チャネル?上への値?送信作用が起こった後、プロセスPに移行する(下段の結果)。
3.Lyee要件の非形式的形式化
このセクションにおいては、Lyee方法論が、どのようにして基本的なユーザ要件からソフトウェアを生成するのか、その全体像について説明する。加えて、この全体像から、Lyee計算法によってこの方法論をどのようにして簡単かつ効率的に形式化することができるのかを順次紹介する。Lyee方法論のソフトウェア生成プロセスの完全な形式化については、次のセクションで説明する。
3.1 Lyee要件
Lyee方法論において、要件は、宣言的な方法で、単語名、その定義式、その計算条件、およびその属性(入出力、タイプ、セキュリティタイプ等)という要素を含む宣言の集合として与えられる。表6は、Lyee要件の一例である。
「Word」は単語名、「Definition」は単語の値を生成するための定義式、Conditionは定義式を実行する計算条件、「IO」は単語の値の入出力の属性を示す。OFはファイルへの出力、OSは画面への出力、ISは画面からの入力、IFはファイルからの入力(表にはない)、を表わす。「Type」は、値の属性で、intは整数(integer)、floatは不動小数点数を表わす。「Security」は、値のセキュリティに関する属性を表わす。secretは非公開、publicは公開、を表わす。
Figure 2005029323
表6の要件は、感覚的にとらえれば、従来のプログラミング言語の表7のコードに対応する。Sは、単語aの宣言を意味する。
Figure 2005029323
たとえば、単語aの宣言Sのコードは、
「もし、b*e>2が真ならば、単語aにb+cの計算結果を代入し、単語aの値を出力」、を意味している。
宣言Sのコードは、「単語cに値を入力」、を意味している。
Lyee方法論においては、ユーザは、これらの定義が実行される順序(制御ロジック)を指定する必要はない。表7に示すように、単語aの定義は、単語bを使用しているにもかかわらず、宣言Sは、宣言Sの後に位置している。以下に説明するように、これらの要件から、また、宣言の順序とは無関係に、Lyeeはすべての定義した単語を計算するコードを生成することができる。このシンプルなアイデアは、非特許文献6、7、8、9に示されるように、ソフトウェア開発上の異なるステップにおいて、数々の有利な結果を生む。実際、このアイデアを使用することにより、要件が不完全であってもソフトウェアの開発をスタートすることができる。さらに、ユーザは、もっと古典的な方法論の場合のように、単語の実行順序の制御ロジックの問題を扱う必要がない。ソフトウェアの制御ロジック部分は、Lyee方法論においては、自動的に生成され、その結果、プログラミング・エラーが低減し、プログラミング時間が短縮される。柔軟性も、Lyee方法論の主要な利点である。何故なら、保守業務を、要件の簡単な修正(単語の定義の追加、削除および/または修正)作業にまで軽減できるからである。
従って、Lyeeシステムは、求められる結果を生成するために共に相互作用を行う独立したコンポーネント(宣言)の集合体と見なすことができる。本論のプロセス代数の概念は、この見方と非常によく一致する。何故なら、Lyee計算法は、プログラムを、最終目的に到達するために、共に相互作用しあう分子(プロセス)の化学溶液と見なすからである。それ故、一見して、宣言の集合{s,...,s}からなるLyee要件LRを、Lyee計算法の並行プロセス(concurrent process)として見ることができる。すなわち、次に表わすとおりである。
LR=s|...|s
直感的説明によれば、要件LRは、プロセスs、...、sが並行に実行されるプロセスである。
3.2 パレット(Pallet)および基本構造(Scenario Function)
表6の要件から、aおよびbの値を計算し、それらを出力するプログラムを、自動的に生成することができる。このプログラムは、不動点(fixed point)に達するまで、すなわち、図3に示されるように、繰り返し処理がいかなる単語の値も変えなくなるまで、これらの命令の実行を単純に反復する。
プロセス代数の観点からいうと、「不動点に達する」という概念は、当然意味規則に組み込まれる。実際に、プロセス(分子)は、いかなる進展も可能でなくなる状態(不動点)に達するまで、共に相互作用する。
要件からLyeeにより自動的に生成されるプログラムの構造および内容についてさらに正確に説明する。Lyee方法論においては、表6に示すような宣言の集合の実行は特定の方法により行われる。実際は、Lyeeは、図4に示すように、Lyee用語で、パレット(W02,W03およびW04)と呼ばれる3つの領域上に宣言に関連するコードを分配する。
パレットW02
入力単語を処理する。
パレットW03
単語の計算条件を計算し、結果をブール型(真偽値を値としてもつ)の変数で保存する。例えば、単語aの定義の中で使用されている計算条件「be>2」はW03で計算され、真/偽の結果は、別の変数「a_cond」に保存される。
パレットW04
要件に含まれるその定義式によって単語の計算を行う。パレットW04は、また、計算した単語の値を出力する。
Lyeeプログラムは、パレットW04からスタートして、不動点に達するまで、すべての定義した単語の値を計算しようとする。単語の値の計算に係わるW04内に進展が見られなくなると、経路作用要素R4によりパレットW02に制御が与えられる。今度は、この第2のパレットが、単語の値の入力を繰り返し、不動点に達した(他に新たな入力対象がなくなった)とき、次に、経路作用要素R2が制御をパレットW03に渡す。最後に、そしてパレットW04と同じように、パレットW03が、不動点に達するまで、要件に従って単語の計算条件を計算しようとする。図5に示すように、この全プロセス(W04→W02→W03)は、全体が安定状態に達するまで繰り返され、連結されている3つのパレットは基本構造(Scenario Function)と呼ばれる。
Lyee要件を組み込むために逐次処理言語を使用することによって、Lyee方法論の作者は、パレットが実行される順序、同じパレット内のベクトル(モジュール)が実行されるべき順序、およびあるベクトルから他のベクトルに制御を渡す方法を明確に指定せざるをえなかった。言い換えれば、この逐次処理言語がゆえに、Lyee方法論の基本概念に属さない、また、この方法論をかなり複雑にしてきたいくつかの局面がもたらされることになった。すなわち、各パレット内のベクトルが実行される繰り返しの制御、パレットから他のパレットに実行を移す(異なる基本構造間を含め)方法および時期等を指定するという必要があった。これらのために、パレット関数(パレット内の実行制御)、経路作用要素(次に実行するパレットの決定)、パレット連鎖関数(パレット間の実行制御)が設置されていた。
しかし、Lyee計算法を使用することにより、パレットが実行される順序、各パレットのベクトルが実行される順序、パレットから他のパレットに制御を渡す方法および時期等を指定する必要がもはやなくなる。このような詳細は、当然ながら本論の抽象機械Lyee計算法により本質的に管理される。それ故、基本構造は、下式のように形式化することができる。
SF=W04|W03|W02
すなわち、基本構造SFのプロセスは、W04、W03、W02の3つのパレットのプロセスの並行プロセスである。
04、W03およびW02を実行する順序はもはや重要ではなくなり、これらパレットを接続している経路作用要素も除去されていることに留意されたい。
Lyeeは、固定構造を持つ簡潔なプログラム(Lyee用語で述語ベクトル(predicate vector)と呼ばれる)を確立した。この構造により、生成されたコードの構造は不変かつ要件の内容に依存しないものになっている。ベクトルの実行を制御する統括プログラム(global program)であるパレット関数の役割は、単に述語ベクトルを呼び出すだけである。図6は、述語ベクトルの構造を示す。
述語ベクトルの目的は、各パレットにより異なる。
<パレットW04
パレットW04の第1の目的は、定義式により単語に値を与えることである。この役割を行う述語ベクトルをL4と呼ぶ。図4の例における単語aおよび単語bのL4は、図7に示すようになる。
単語の計算に進展がなくなり、かつ、単語の値が全て成立すると、Lyeeの生成コードは、次の目的となる単語の出力を実行しようとする。値を出力するという目的を持つ述語ベクトルは、出力作用要素(Output Vector:O4と呼ぶ)と呼ばれる。他に、領域のクリアを行う構造作用要素(S4と呼ぶ)がある。
<パレットW02
値を入力単語に関連付けるという目的を持つ2つの述語ベクトルがある。メインメモリ上(Lyeeプログラム領域の外)への入力を行う入力作用要素(Input Vector:I2と呼ぶ)と、属性チェックとLyeeプログラム領域内への入力を行うL2である。
<パレットW03
パレットW03の述語ベクトルL3の目的は、図8に示すように、要件内に指定されている、単語の定義式(すなわちL4)を実行するための条件を判定することである。
最後に、表8は、表6の要件を実装したLyeeプログラムを示す。
各パレットに1つおかれたパレット関数が、パレット内の述語ベクトルをコール(起動)する。パレット関数は、プログラムに1つおかれたパレット連鎖関数によってコールされる。パレット連鎖関数は、各パレットのR4、R2、R3の指定に従って、該当するパレット関数をコールする。その他のプログラムの意味は、表8のコメントのとおりである。述語ベクトルL4、L2、L3(総称して論理要素と呼ぶ)の処理対象は単語単位であり、入出力作用要素(I2およびO4)、構造作用要素(S4)の処理対象は単語の集合である。
Figure 2005029323
ここでLyee計算法を使用すると、W04、W03およびW02のプロセスは、それぞれ下記のように定義することができる。
Figure 2005029323
04プロセスは、S4、L4_a、L4_b、O4の各プロセスの並行プロセスである。
03プロセスは、L3_a、L3_bの各プロセスの並行プロセスである。
02プロセスは、L2_e、L2_c、I2の各プロセスの並行プロセスである。
異なる述語ベクトル(L2、L3、L4、I2、O4、S4)の形式的定義については、次のセクションで説明する。
3.3 処理経路図(Process Route Diagram)
前のセクションで示した基本構造は、任意の、要件が簡単なケースのプログラム全体だと見なしてもよい。特に、すべての入力単語および出力単語が、同じ画面に属していて、データベースが全く使用されていない場合のプログラムである。入力単語および出力単語が、いくつかのデータベースまたは、相互に接続された異なる画面に属する場合には、状況はもっと複雑になる。説明を簡単にするために、以下の説明においては、画面の数が複数あるだけの場合について説明する。図9に示すように、相互に接続している画面が3つあり、ユーザは画面から別の画面に移動することができる場合について考える。各画面において、ユーザは単語の入力、計算、また出力ができる。従って、仕様書では、ユーザは、これらの画面がどのように相互接続しているのかを指定しなければならない。
さらに言えば、1つの基本構造だけを定義して、そこで全画面中の定義された単語全てを計算するのは都合がよくない。なぜなら、実際、プログラムの任意の実行において、ある画面は訪問されないかもしれず、その場合、訪問されなかった画面の単語の値の計算が無駄になるからである。そのため、Lyeeは、各画面に、その画面が訪問された場合だけ実行されるような担当基本構造を関連づける。画面に係わる基本構造は、1つの画面から他の画面への移動を示すように、接続されている。Lyee用語において、複数の基本構造が接続されたものが、図10に示すような、処理経路図(Process Route Diagram)である。
Lyee計算法を使用して、ある画面sを、プロセスSF(s)の実行を制御するプロセスΦ(s)、として下式のように形式化できる。
Figure 2005029323
すなわち、プロセスΦ(s)は、プロセスSF(s)(画面sに係わる処理の基本構造のプロセス)としてふるまい、チャネル?sk上で真の値を受信したとき、SF(s)を停止してプロセスΦ(s)としてふるまう。実際の動きとしては、制御プロセスΦ(s)は、プロセスSF(s)を活性化し、画面sに関連するチャネル?sk上で信号を受信したとき(すなわち画面sが再活性化されたとき)、Φ(s)自身が再活性化される。従って、制御プロセスΦ(s)が再活性化されることによって、SF(s)は一度終了して再活性化され、初期状態(fresh instance)に戻る。
関数Φ(s)がどのように機能するかを示す具体例は、本明細書の後の方に記す。
3.4 Lyeeプログラム
まとめると、Lyee方法論によるLyeeプログラムの構造は次のとおりである。Lyeeプログラムはいくつかの処理経路図(PRD)で構成される。各PRDは、相互に接続された基本構造(SF)の集合である。各基本構造は、3つの相互に接続されたパレットW02、W03、W04で構成される。最後に、パレットは、述語ベクトルによって構成される。述語ベクトルには、Lyeeプログラムの最小単位のモジュールであるので、アトミック・ベクトル(atomic vector)とも呼ぶ。述語ベクトルには、論理要素(signification vector:L2、L3、L4の総称)および作用要素(action vector:I2、O4、S4、R2、R3、R4の総称)がある。これらの述語ベクトルの実行を制御する制御モジュールとして、パレットごとにパレット関数がおかれ、そのパレット関数の実行を制御するモジュールとして、プログラムに1つのパレット連鎖関数がおかれる。
Lyee計算法を使用することにより、画面s,...,sを含むLyeeプログラムPは、下式のように形式化される。
Figure 2005029323
ここで、L(s,...,s)は、入力チャネルおよび出力チャネルの集合である。この式は、Ψ(s,...,s)が、L(s,...,s)に属すチャネルだけを通して環境とコミュニケートするように制限する。
関数Ψは、下式のように定義される。
Figure 2005029323
この関数Ψは、画面s(sは画面s,...,sのいずれか)に対応するチャネル?上で真の値を受信するたびに、画面sに対応するSF(s)を起動するために、プロセスΦ(s)を起動。上記チャネル?は、対応する画面を起動するためにユーザが使用するボタンやメニューを形式化したものである。また、この関数Ψは、チャネル?s0上で真の値を受信した時ときに、すべての他のプロセスを終了させて、関数Ψ自身も終了(nilになる)する。チャネル?s0は終了ボタン(または、対応するメニュー項目)を形式化したものである。
従って、Lyeeシステムは、求める出力単語を計算するために相互にコミュニケートする、独立した並行プロセス(concurrent process)の集合体と見なすことができる。Lyee方法論の従来の逐次処理的(sequential)見方とは対照的に、すべての経路作用要素は必要なく、制御機能の役割は大幅に簡易化され、作業メモリ領域(working memory)等も必要ない。Ψ(s,...,s)については、具体例と一緒に以下にさらに詳細に説明する。
次のセクションにおいては、Lyee方法論のより詳細かつ完全な形式化について説明する。
4.Lyee方法論の形式化
Lyee計算法を使用して、簡単なユーザ要件からどのようにしてソフトウェアを自動的に生成するかを見る。
ユーザ要件は、k個の画面{s,...,s}を含んでいるとする。また、各画面は宣言の集合を含んでいるとする。この場合、各宣言は、次の形式、すなわち、(w,e,c,InOut,type)を持つ。ここで、wは単語名、eはその定義式、cは定義式の実行条件、InOutは単語が入力か出力か、あるいは両方か、または入力でも出力でもないのかの指定(値iは入力単語に、値oは出力単語に、ioは入力および出力両方である場合に、空のフィールドは入力でも出力でもない場合に使用される)、typeは値の属性(タイプ)を示す(たとえばタイプBは、ボタンを示す記号として割り当てられる)。
この要件に関するプログラムP(s,...,s)を定義するために、下記の表に示したように論理要素および作用要素のベクトル(プロセス)を形式化する。
まず、形式化に用いられている未定儀定義の記号を説明する。
Use(e)は、式eで使用する単語の集合を示すものとする。例えば、Use(ab+1)={a,b}である。
また、F(S)は、変数Sとして入力値の集合をとり、その入力を行う受信作用の集合をかえす関数である。
Figure 2005029323
上記の意味は次のようになる。
入力値がないとき(F(0))、受信作用はない(0は空集合)。
入力値xと入力値Aの受信作用(F({x}∪A))は、チャネル
Figure 2005029323
上でxの値を受信する受信作用と、入力Aの受信作用F(A)の和集合である。
論理要素(Signification Vectors)は表9に示す。
Figure 2005029323
作用要素(Action Vector)は表10に示す。
Figure 2005029323
ベクトルのうち、Sは、2.2で述べた値を保持するメモリ・セルで、かつ、「初期化される(初期値を受信する)までその内容にアクセスさせない」能力をもったスマート・セルである。
経路作用要素は、Lyee計算法においては本質的には不要なプロセスであるが、Lyee計算法でどのように形式化できるかを示すために記載している。
パレット
任意の画面sの3つのパレットW02、W03およびW04は、下式のように形式化される。
Figure 2005029323
ここで、
Figure 2005029323
は、B(ボタンを示す)を除く任意のタイプ(Bの補集合)を示し、*は何であってもよいことを示す。
基本構造:
画面sの基本構造SF(s)は、下式のように形式化される。
Figure 2005029323
制御機能:
画面sに付随する制御機能は、下式のように形式化される。
Figure 2005029323
画面の集合に付随する制御機能は、下式のように形式化される。
Figure 2005029323
は、プログラムを終了したときの画面(プログラム自身の画面群には属さない終了画面)であるとする。
ここで制御機能の役割についてまとめると、下記のようになる。
Figure 2005029323
本論では、Lyee計算法の実現方法の1つとして、SFは、画面に対して1つもうけ、1つのSFが、対応する画面に係わる入出力および計算の全てのプロセスを含むように形式化した。従ってSFの制御関数Φも、画面に1つである。しかし、画面に対して複数のSFおよび制御関数Φを設けるように形式化することも選択しとして可能である。実装方法は、プログラムとしての効率性によって決定すればよい。
Lyeeプログラム:
最後に、画面s,...,sを含む要件に関するLyeeプログラムP(s,...,s)は下式で表される。
Figure 2005029323
ここで、L(s,...,s)の集合は、環境との間のすべての入力チャネルおよび出力チャネルを含み、下式により定義される。
Figure 2005029323
i/oの意味は、この項目は値i、oまたはioを含んでいなければならないことをさす。また、sは、ユーザがこのプログラムを実行した場合に最初に現れる画面である。
5.ケーススタディ1
このセクションにおいては、Lyee計算法で単語を計算するために、Lyeeプログラムがどのように進行するかを、具体例を上げて段階的に説明する。
ここに示す例は、画面を1つしか持たない(2つの画面を持つ他の例は付録に記載した)。表12の要件に示すように、ユーザは、単語aを入力し、単語bの値を待ち、次に、ボタンBを押して画面を終了する。図11はこのような画面を示す。
Figure 2005029323
この画面sは3つの宣言からなる。
Figure 2005029323
前のセクションで説明した一般的なLyeeプログラムの定義によれば、表12の要件に関するLyeeプログラムは、下式により表される。
Figure 2005029323
ここで、W02(s)、W03(s)およびW04(s)は、下記の通りである。前述したように、RのプロセスはLyee計算法では必須ではないので、省くことも可能である。
Figure 2005029323
ここで、このプログラムP(S)のエンドユーザ(環境)が、下記の一連の行動を行いたいと考えていると仮定しよう。プログラムを実行し(画面sを起動し)、単語aに値「7」を与え、単語bの値を得るのを待ち、ボタンBを押してプログラムを終了する。このエンドユーザの行動は、下記のプロセスεにより捉えることができる。
Figure 2005029323
上記に示した、Lyee計算法によるプログラムP(S)のプロセスとエンドユーザのプロセスを図12に示した。
次に、求められる目的に到達するために、プログラムP(S)がこの環境とどのように相互作用を行うかを見る。言い換えると、エンドユーザの行動を取り込むプログラムεと並行に実行されるプログラムP(S)の進行プロセスを追うのである。これは、すなわち、P(s)|εのふるまいを探すことである。このプロセスのステップは下記の通りである。定義式には、等号記号の左辺が右辺に置き換えられる根拠となる定義をコメントとして付した。また、プロセス間の相互作用によって、同期(synchronization)(同一チャネル上で値の送信と受信が同時に成立した)が起こった部分にもコメントを付した。下線部分が同期した送信および受信作用である。
Figure 2005029323
Figure 2005029323
まとめると、プログラムの進行の主要なステップは下記の通りである。
エンドユーザが、プログラム起動のコマンドを送ることによって、制御関数Ψ(s)が起動されて、制御関数Ψ(s)が制御関数Φ(s)を起動し、制御関数(s)が初期画面sとSF(s)を起動することによって、プログラムが起動する。
Figure 2005029323
エンドユーザが単語aに値「7」を与える(送信する)と、SF(s)の中のI(a)が値7を受信する。
Figure 2005029323
(a)は、aの値7をL(a)に送信する。
Figure 2005029323
(a)が送信したaの値7が、メモリ、すなわち、S(a)に記憶される(S4(a)に初期値が記憶されることによって初期化された)。
Figure 2005029323
bの計算条件を計算するために、aの値7が、初期化されたaのメモリSからL(b,a>0)に送られる。
Figure 2005029323
bの計算条件が判定され(a>0は真(1)と判定)、L(b,2*a)に値1が送られる。
Figure 2005029323
aの値7が、値7を保持しているaのメモリSからL(b,2*a)に送られる。
Figure 2005029323
bの定義式「2*a」が計算され、bの値14が、メモリ、すなわち、S(b)に記憶される(S(b)が初期化された)。
Figure 2005029323
bの値14が、bのメモリSから、出力プロセスO(b)に送られる。
Figure 2005029323
10.Oによってbの値が環境に送られ、エンドユーザはbの値を受信する。この時点で起動中のSF(s)に属するプロセスは、値を保持しているaおよびbのSと、R3(B,click,s)である。
Figure 2005029323
11.エンドユーザが、プログラム終了のためにボタンBを押し、R3(B,click,s)は値clickを受信、自身の計算条件を判定して真の値1を制御関数Ψ(s)に送信する。真の値1を受信したΨ(s)は、自身が終了する前にΦ(s)を終了させ、Φ(s)は自身が終了する前にSF(s)を終了させる。
Figure 2005029323
図13は、これらの各ステップを示す。
かっこ付き番号は、上記のステップの説明に対応する。かっこなしの数字は、送受信される値を示している。
さらに、各プロセスの遷移は証明によって確認することができる。例えば、下記のプロセスの遷移がある(上記ステップ1に対応)。P(s)とεの間に同期が起こり(プログラム起動コマンドの送受信)、P(s)とεの並行プロセスに移行するプロセス遷移を表わしている。
Figure 2005029323
このとき、
Figure 2005029323
である。
上記は、表5の規則を用いて、次の証明で正しいことが確認できる。
Figure 2005029323
6.結論
本稿は、最初に、Lyee方法論の基本概念を容易かつ本質的にサポートするLyee計算法と呼ぶ形式的プロセス代数を定義した。実際に、この計算法は、フォン・ノイマンのものより、Lyee方法論の概念をサポートするのにより適した抽象機械と見なすことができる。この機械は、プログラムを最終結果を生成するために共に相互作用し合う分子の集合と見なす。二番目に、この計算法がどのようにして、全ソフトウェア生成プロセスとLyeeベクトルの両方を形式化し、簡易化することができるのかを示した。実際、経路作用要素(routing vector)、はもはや必要としない。また、パレット関数も不要となり、制御機能の役割は大幅に簡易化される。Lyeeソフトウェア生成の自動生成の全プロセスを形式化した。この形式化によって、この方法論の意味論を、この方法論の背後にある概念を明快に理解することができるように形式化することができる。その上、この形式的記述は、いろいろな局面におけるこの方法論の多くの興味ある分析を始めるためには不可避である。例えば、Lyeeで生成したソフトウェアまたはソフトウェア生成プロセスを最適化するためには、最適化されたプログラムがその元のバージョンと同じものである、という形式的証明を必要とする。プロセス代数を使用すれば、形式的に同じものであることのチェック、またはもっと一般的にモデル・チェックをうまく行うことができる。
将来の研究として、我々はLyee方法論の意味論をさらに研究し、Lyee方法論をより簡素化し、要件からより信頼性の高い最適化されたコードの生成が行えるようにしたい。最適化するために、Lyee計算法のプロセス間の適合(congruence)関係を定義し、それによってすべてのそこから帰結する最適化が正しいことを証明したいと考えている。
<付録>
ケーススタディ2−画面が2つの場合
複数画面間の相互作用を示すために、2つの画面からなるプログラムのケースについて述べる。図14がそのプログラムの画面を示した図である。このプログラムを起動すると画面Sが表示される。画面Sで、ユーザは、単語aを入力し、単語bの値が出力されるのを待つ。ボタンBを押すと、画面Sが表示され、単語bの値が出力されるのを待つ。画面SでボタンBをおすと、プログラムを終了する。
図14のプログラムの要件の宣言をまとめると、画面Sの要件は表17、画面Sの要件は表18のようになる。
Figure 2005029323
Figure 2005029323
前のセクションで説明した一般的なLyeeプログラムの定義によれば、表17および表18の要件に関するLyeeプログラムは、下式により表される。
Figure 2005029323
画面sに対するW02が存在しないことに留意されたい。何故なら、W02は、ボタン以外に入力単語を含んでいないからである。
Figure 2005029323
ここにおいては、W02(s)、W03(s)、W04(s)および、W03(s)、W04(s)は、以下のように定義される。ケーススタディ1と同様に、RのプロセスはLyee計算法では必須ではないので、省くことも可能である。
Figure 2005029323
Figure 2005029323
Figure 2005029323
ここで、このプログラムのエンドユーザ(環境)が、下記の一連の行動を行いたいと考えているとする。プログラムを実行し(画面sを起動し)、単語aに値「7」を与え、単語bの値を得るために待機し、画面sに行くためにボタンBを押し、値eを得るために待機し、ボタンBを押すことによりプログラムを終了する。この行動は、下記のプロセスεにより捉えることができる。
Figure 2005029323
上記に示した、Lyee計算法によるプログラムP(S)のプロセスとエンドユーザのプロセスを図15に示した。
プログラムの進行の主要なステップは下記の通りである。
エンドユーザが、プログラム起動のコマンドを送ることによって、制御関数Ψ(s,s)が起動されて、制御関数Ψ(s,s)が制御関数Φ(s)を起動し、制御関数(s)が初期画面sとSF(s)を起動することによって、プログラムが起動する。
P(s,s)とεの間に同期が起こり(プログラム起動コマンドの送受信)、P(s,s)とεの並行プロセスに移行。
Figure 2005029323
ここで、
Figure 2005029323
エンドユーザが単語aに値「7」を与える(送信する)と、SF(s)の中のI(a)が値7を受信する。
(s,s)とεの間に同期が起こり(単語aの値の送受信)、P(s,s)とεの並行プロセスに移行。
Figure 2005029323
ここで、
Figure 2005029323
aの値7がメモリS(a)に記憶される。この記憶は、2つのステップにより行うことができる。第1のステップにおいて、aの値7がL(a)に送られる。第2のステップにおいて、L(a)は、この値をメモリS(a)に送る。
第1のステップは下記の通りである。P(s,s)の中で同期が起こり(I(a)とL(a)間の単語aの値7の送受信)、P(s,s)とεの並行プロセスに移行。
Figure 2005029323
ここで、
Figure 2005029323
第2のステップにおいて、aの値7はW04のメモリS(a)に記憶される(S(a)に初期値が記憶されることによって初期化された)。P(s,s)の中で同期が起こり(L(a)とS(a)間の単語aの値7の送受信)、P(s,s)とεの並行プロセスに移行。
Figure 2005029323
ここで、
Figure 2005029323
bの計算条件を計算するために、aの値7が、初期化されたaのメモリSからL(b,a>0)に送られる。P(s,s)の中で同期が起こり(S(a)とL(b,a>0)の間の送受信)、P(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
bの計算条件が判定され(a>0は真(1)と判定)、L(b,2*a)に値1が送られる。P(s,s)の中で同期が起こり(L(b,a>0)とL(b,2*a)の間の真偽値1の送受信)、P(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
aの値7がaのメモリSからL(b,2*a)に送られ、bの定義式「2*a」が計算され、bの値14が、メモリS(b)に記憶される(S(b)が初期化された)。P(s,s)の中で同期が起こり(aのメモリSとL(b,2*a)との間、L(b,2*a)とbのメモリSの間の送受信)、P(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
bの値14が、bのメモリSから、出力プロセスO(b)に送られる。O(b)によってbの値が環境に送られ、エンドユーザはbの値を受信する。P(s,s)の中の同期(L(b,2*a)とO(b)の間の送受信)と、P(s,s)とε間の同期(単語bの値の送受信)が起こり、P(s,s)とεの並行プロセスに移行。
この時点で起動中のSF(s)に属するプロセスは、値を保持しているaおよびbのSと、R3(B,click,s)である。:
Figure 2005029323
ここで、
Figure 2005029323
画面2に行くために、エンドユーザは画面s上のボタンBを押す。εから送信されたボタンBのClick値をR3(B,click,s)が受信、R3(B,click,s)は自身の計算条件を判定して真の値1を制御関数Ψ(s,s)に送信する。値1を受信した制御関数Ψ(s,s)は制御関数Φ(s)を起動。値1を受信した制御関数Φ(s)は、SF(s)を起動し、画面sを起動する。
(s,s)とεの間の同期(ボタンBのclick値の送受信と)、P(s,s)の中の同期(R3(B,click,s)と、Ψ(s,s)および制御関数Φ(s)間の送受信)が起こり、P(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
eの条件を計算するために、bのメモリSから値14をL(e,b>0)に送信する。P(s,s)の中で同期が起こり(aのメモリSとL(e,b>0)との間の送受信)、P10(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
eの計算条件b>0が真(1)と判定され、L(e,b>0)から真の値1がL(e,1+b)に送信され、eの値が計算される。P10(s,s)の中で同期が起こり(L(e,b>0)とL(e,1+b)の間の送受信)、P11(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
eの値を、L(e,1+b)から、eのメモリS(b)に記憶する(S(b)が初期化された)。P11(s,s)の中で同期が起こり(L(e)とeのメモリSの間の送受信)、P11(s,s)とεの並行プロセスに移行。:。:
Figure 2005029323
ここで、
Figure 2005029323
eのメモリS(b)からeの値15を、O(e)に送信、O(e)からエンドユーザεにeの値を出力する。P11(s,s)とεの間で同期が起こり(単語eの値14の送受信)、P12(s,s)とεの並行プロセスに移行。:
Figure 2005029323
ここで、
Figure 2005029323
エンドユーザが、プログラムを終了するためにボタンBを押す。R3(B,click,s)は、エンドユーザεらボタンBの値clickを受信し、制御関数Ψ(s,s)に送信する。Ψ(s,s)は、自身が終了する前にΦ(s)およびΦ(s)を終了させ、Φ(s)およびΦ(s)は自身が終了する前に、それぞれSF(s)およびSF(s)を終了させる。P12(s,s)とεの間で同期が起こり(CClick値の送受信)、次にP12(s,s)の中で同期(R3(B,click,s)と、Ψ(s,s)、制御関数Φ(s)およびΦ(s)間の送受信)が起こり、すべてのプロセスがnilに移行する。:
Figure 2005029323
なお、本発明は、上述した実施形態および実施例には限定されず、本発明の技術思想の範囲内で様々な変形が可能である。たとえば、ビジネス・メソッド、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置、あるいはこれらの機能をコンピュータに実現するためのソフトウェア並びに該ソフトウェアを搭載した記録媒体・専用機、などとしてもそれぞれ実現することが可能である。さらに、上記で説明したように本発明は、方法としても、或いはかかる機能を備えるソフトウェアとしても、該ソフトウェアが搭載される装置・ツール(ソフトウェア自体の場合も含む)としても、さらにはシステムとしても、実現され得るのはもとよりである。
例えば図16は、本発明の異なる一実施形態として、「開発対象のソフトウェア」を生産するためのプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして本発明を実施する場合に機能として備える構成を示した機能ブロック図である。同図に示すように、本発明に係るプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置は、全体制御部1601、宣言情報挿入部1602、制御関数Φ配置部1603、制御関数Ψ配置部1604及び情報記憶部1605を備えて構成される。
全体制御部1601は、本プログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置の全体の動作制御、タイミング制御、入出力制御等を行う機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア(ツールとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。
宣言情報挿入部1602は、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L2、L3、L4)および、作用要素(I2、O4、S4)のひな型の未定義部分に、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入するための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア(ツールとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。
制御関数Φ配置部1603は、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦが、制御するように関連づけるための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア(ツールとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。
制御関数Ψ配置部1604は、1つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づけるための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア(ツールとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。
情報記憶部1605は、プログラム情報のほか、各種制御情報、プロセス・セルとしてモジュール化された論理要素(L2、L3、L4)および、作用要素(I2、O4、S4)の前記ひな型、前記制御関数モジュールΦのひな型、前記制御関数モジュールΨのひな型、目的プログラム等の格納のほか、一時記憶のためのメモリとしても用いられる。
図17は、上記の構成を備えるプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして実施される本発明の動作を示したフローチャートである。
同図に示すように、まず、宣言情報挿入部1602は、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L2、L3、L4)および、作用要素(I2、O4、S4)のひな型の未定義部分に、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する。(ステップ1701)。
すると、制御関数Φ配置部1603は、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦが、制御するように関連づける。(ステップ1702)。
次に、制御関数Ψ配置部1604は、1つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づける。(ステップ1703)。
よって、上記のような構成を備える本発明によれば、本発明の独自の体系に基づいて要求定義をとらえ、それを本発明独自の構造を備えるプロセス・セルとしてモジュール化され論理要素(L2、L3、L4)および、作用要素(I2、O4、S4)のひな型の未定義部分に代入するので、所望のソフトウェアが、属人性なく得られる。
本発明の異なる実施体としての「開発対象のソフトウェア」を生産するためのプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置は、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型の未定義部分に、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する、宣言情報挿入手段と、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦを、前記単位を制御するように関連づける、制御関数Φ配置手段と、1つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づける、制御関数Ψ配置手段とを具備するように構成することもできる。
本発明はさらに、上述の「開発対象のソフトウェアを生産する方法」によって生産されたソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置(ハードウェア)としても実現されるが、この場合の本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型の未定義部分に挿入したモジュール群と、前記モジュール群を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦで制御するように関連づけている1つまたは複数の制御関数モジュールΦと、前記制御関数Φを、1つの制御関数モジュールΨで制御するように関連づけている制御関数モジュールΨで構成されることもできる。
またさらに本発明は、上述の「開発対象のソフトウェアを生産する方法」によってソフトウェアを生産するために用いられるソフトウェアコードの雛型としてのソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置(ハードウェア)としても実現されるが、この場合の本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、埋め込むべき未定義部分を有した、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦで制御するための機能を有した制御関数モジュールΦのひな型と、前記制御関数Φを1つの制御関数モジュールΨで制御するための機能を有した制御関数モジュールΨのひな型とを備えるソフトウェアとしてコード化可能なひな型として実現してもよい。
さらに、本発明は、上述の「開発対象のソフトウェアを生産する方法」による、要件から抽出した情報(ドキュメント(紙、データ))の抽出方法として、またかかる抽出方法によって抽出された情報(ドキュメント(紙、データ))として、さらには当該抽出された情報の使用方法として、或いは、これらの情報が搭載された情報記録媒体として、または情報の抽出方法/使用方法がコード化されたソフトウェア、当該ソフトウェアが搭載された記録媒体/装置(ハードウェア)として、いずれも実現することができるが、この場合の本発明は、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)のひな型の未定義部分に挿入すべき、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、1つの制御関数モジュールΦで制御するように関連づけるための情報と、前記制御関数Φを1つの制御関数モジュールΨで制御するように関連づける情報とを備えるソフトウェア開発要件から抽出した情報として実現してもよい。
さらに本願発明は、その技術思想の同一及び等価に及ぶ範囲において様々な変形、追加、置換、拡大、縮小等を許容するものである。また、本願発明を用いて生産される装置、方法、ソフトウェア、システムが、その2次的生産品に登載されて商品化された場合であっても、本願発明の価値は何ら減ずるものではない。
異なる分野に関連する広範囲のソフトウェアの問題を効率的に処理し、従来の方法論と比較した場合には、Lyeeを使用すると開発時間、保守時間およびドキュメント量はかなり少なくなる(70〜80%程度)。
本発明の一実施形態に係るセルの概念を説明するための概念図である。 本発明の一実施形態に係る相互に作用するプロセスの例を示す図である。 本発明の一実施形態に係る要件の実行の概念を説明するための概念図である。 本発明の一実施形態に係るLyeeパレットの概念を説明するための概念図である。 本発明の一実施形態に係る基本構造の概念を説明するための概念図である。 本発明の一実施形態に係る述語ベクトルの概念を説明するための概念図である。 本発明の一実施形態に係るL4_aおよびL4_bの述語ベクトルの概念を説明するための概念図である。 本発明の一実施形態に係るL3_aおよびL3_bの述語ベクトルの概念を説明するための概念図である。 本発明の一実施形態に係る画面相互作用の概念を説明するための概念図である。 本発明の一実施形態に係る処理経路図を説明するための概念図である。 本発明の一実施形態に係る画面が一つの場合を示す概念図である(実施例1)。 本発明の一実施形態に係るLyee計算法によるプログラムP(S)のプロセスとエンドユーザのプロセスを示すための説明図である。 本発明の一実施形態に係るプロセス間の相互作用を説明するための概念図である。 本発明の一実施形態に係る画面が二つの場合を示す概念図である(実施例2)。 本発明の一実施形態に係るLyee計算法によるプログラムP(S)のプロセスとエンドユーザのプロセスを示すための説明図である。 本発明の異なる一実施形態として、「開発対象のソフトウェア」を生産するためのプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして本発明を実施する場合に機能として備える構成を示した機能ブロック図である。 本発明の一実施形態に係る上記の構成を備えるプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール(装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして実施される本発明の動作を示したフローチャートである。
符号の説明
W04 W04パレット
W02 W02パレット
W03 W03パレット
1601 全体制御部
1602 宣言情報挿入部
1603 制御関数Φ配置部
1604 制御関数Ψ配置部
1605 情報記憶部

Claims (1)

  1. 1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとに、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性によって宣言(規定)する第1のステップと、
    単語単位の宣言から、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L、L、L)および、作用要素(I、O、S)を作成する第2のステップと、
    前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合に集合化する第3のステップと、
    前記集合ごとに、1つの制御関数モジュールΦを配置する第4のステップと、
    前記プログラムに1つの制御関数モジュールΨを配置する第5のステップと
    を具備することを特徴とするソフトウェア生成方法。
JP2005514111A 2003-09-22 2004-09-22 ソフトウェア生成方法 Pending JPWO2005029323A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003330772 2003-09-22
JP2003330772 2003-09-22
PCT/JP2004/013855 WO2005029323A1 (ja) 2003-09-22 2004-09-22 ソフトウェア生成方法

Publications (1)

Publication Number Publication Date
JPWO2005029323A1 true JPWO2005029323A1 (ja) 2007-11-15

Family

ID=34373029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005514111A Pending JPWO2005029323A1 (ja) 2003-09-22 2004-09-22 ソフトウェア生成方法

Country Status (7)

Country Link
US (1) US20070250806A1 (ja)
EP (1) EP1693745A4 (ja)
JP (1) JPWO2005029323A1 (ja)
KR (1) KR20060121880A (ja)
CN (1) CN1856769A (ja)
CA (1) CA2539794A1 (ja)
WO (1) WO2005029323A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171023A (ja) * 2005-04-21 2008-07-24 Catena Corp ソフトウェア生成方法
WO2007018295A1 (ja) * 2005-08-05 2007-02-15 Catena Corporation プログラム実行順序決定装置および方法
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis
US8407728B2 (en) * 2008-06-02 2013-03-26 Microsoft Corporation Data flow network
CN102736921B (zh) * 2012-06-18 2014-10-29 阿坝师范高等专科学校 一种面向云的软件自动生成方法
CN111930350B (zh) * 2020-08-05 2024-04-09 深轻(上海)科技有限公司 一种基于计算模板的精算模型建立方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001005651A (ja) * 1999-06-21 2001-01-12 Institute Of Computer Based Software Methodology & Technology ソフトウェアの決定方法、ソフトウェアの使用方法、記録媒体、処理装置、ソフトウェアの保守方法、ソフトウェアの移植方法、ソフトウェアの管理方法、処理経路図の作成方法、パレット関数の作成方法、パレットの領域の決定方法、パレット連鎖関数の作成方法、位相要素の作成方法、論理要素の作成方法、作用要素の作成方法、ソフトウェアの実装方法、ソフトウェア開発方法、データ構造の置換方法、データ値の置換方法、従来型プログラムの分析方法、ソフトウェア開発管理方法、ソフトウェアの運用管理方法、並列コンピュータ及び判断補助装置
WO2001035213A1 (fr) * 1999-11-11 2001-05-17 Information System Development Institute Procede et dispositif de reproduction de programme, et support de programme pour enregistrement de reproduction de programme

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532586B1 (en) * 1995-10-30 2003-03-11 Information System Development Institute Software producing method, processor, processing method and recording medium
WO1997016784A1 (fr) * 1995-10-30 1997-05-09 Fumio Negoro Procede de production de logiciels, processeur et support d'enregistrement
US6792594B1 (en) * 1998-03-20 2004-09-14 Information System Development Institute Apparatus for producing software and method for producing software
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
US7100164B1 (en) * 2000-01-06 2006-08-29 Synopsys, Inc. Method and apparatus for converting a concurrent control flow graph into a sequential control flow graph
JP2002312167A (ja) * 2001-04-13 2002-10-25 Fujitsu Ltd 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
JPWO2004068342A1 (ja) * 2003-01-28 2006-05-25 カテナ株式会社 ソフトウェア開発前処理方法、ソフトウェア制御方法、ソフトウェア開発方法並びにソフトウェア開発装置
AU2003272890A1 (en) * 2003-03-10 2004-09-30 Catena Corporation Static analysis method for lyee-oriented software

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001005651A (ja) * 1999-06-21 2001-01-12 Institute Of Computer Based Software Methodology & Technology ソフトウェアの決定方法、ソフトウェアの使用方法、記録媒体、処理装置、ソフトウェアの保守方法、ソフトウェアの移植方法、ソフトウェアの管理方法、処理経路図の作成方法、パレット関数の作成方法、パレットの領域の決定方法、パレット連鎖関数の作成方法、位相要素の作成方法、論理要素の作成方法、作用要素の作成方法、ソフトウェアの実装方法、ソフトウェア開発方法、データ構造の置換方法、データ値の置換方法、従来型プログラムの分析方法、ソフトウェア開発管理方法、ソフトウェアの運用管理方法、並列コンピュータ及び判断補助装置
WO2001035213A1 (fr) * 1999-11-11 2001-05-17 Information System Development Institute Procede et dispositif de reproduction de programme, et support de programme pour enregistrement de reproduction de programme

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6009049965, Lyee Update <<2003.1月>>, 200301, p1−10, ソフトウエア生産技術研究所 *

Also Published As

Publication number Publication date
CA2539794A1 (en) 2005-03-31
KR20060121880A (ko) 2006-11-29
EP1693745A1 (en) 2006-08-23
CN1856769A (zh) 2006-11-01
US20070250806A1 (en) 2007-10-25
WO2005029323A1 (ja) 2005-03-31
EP1693745A4 (en) 2007-03-07

Similar Documents

Publication Publication Date Title
Smith The Object-Z specification language
Gulwani Automating string processing in spreadsheets using input-output examples
Hostettler et al. High-level petri net model checking with alpina
Ozik et al. The ReLogo agent-based modeling language
Slepak et al. An array-oriented language with static rank polymorphism
Gutiérrez-Naranjo et al. Available membrane computing software
Voelter Fusing Modeling and Programming into Language-Oriented Programming: Our Experiences with MPS
Frappier et al. Extending statecharts with process algebra operators
Ribeiro et al. Learning any memory-less discrete semantics for dynamical systems represented by logic programs
Vasic et al. CRNs exposed: Systematic exploration of chemical reaction networks
JPWO2005029323A1 (ja) ソフトウェア生成方法
Prähofer et al. Monaco—a domain-specific language solution for reactive process control programming with hierarchical components
Cuong et al. Model transformation in web engineering and automated model driven development
Wieringa LCM and MCM: Specification of a control system using dynamic logic and process algebra
Schöne et al. Incremental causal connection for self-adaptive systems based on relational reference attribute grammars
Nagl An Integrative Approach for Software Architectures
Nagl An Integrative Architecture Language Approach
Gawron et al. Semi-automated synthesis of control system software through graph search
Memon Specification language design concepts: Aggregation and extensibility in coreasm
Rath et al. Declarative specification of domain specific visual languages
Lafontant Gentleman: a lightweight web-based projectional editor
Falkman Specification of Resource Allocation Systems; a STEP towards a unified framework
Ráth Event-driven model transformations in domain-specific modeling languages
Nagl Architecture Styles: Do they Need Different Notations?
Kollar et al. Data-driven executable language model

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100323