CN1856769A - 软件生成方法 - Google Patents

软件生成方法 Download PDF

Info

Publication number
CN1856769A
CN1856769A CNA2004800272871A CN200480027287A CN1856769A CN 1856769 A CN1856769 A CN 1856769A CN A2004800272871 A CNA2004800272871 A CN A2004800272871A CN 200480027287 A CN200480027287 A CN 200480027287A CN 1856769 A CN1856769 A CN 1856769A
Authority
CN
China
Prior art keywords
lyee
software
word
value
formula
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
CNA2004800272871A
Other languages
English (en)
Inventor
M·梅杰里
B·克塔里
H·藤田
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.)
Catena Corp
Original Assignee
Catena Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Catena Corp filed Critical Catena Corp
Publication of CN1856769A publication Critical patent/CN1856769A/zh
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个程序而安装的用户要件;第2步骤,根据单词单位的声明,作成模块化的逻辑要素(L2、L3、L4)作为具备Lyee计算法的输入输出通道的进程单元以及作用要素(I2、O4、S4);第3步骤,将上述逻辑要素和作用要素集合化为集合,该集合以利用来自同一画面的命令产生相互作用为集合条件;第4步骤,按每个上述集合分别配置1个控制函数模块Ф;以及第5步骤,为上述程序配置1个控制函数模块Ψ。

Description

软件生成方法
                        技术领域
本发明涉及软件生成方法,特别涉及使用了由Lyee方法论中的进程代数进行的形式化的软件生成方法。
                        背景技术
这几年间,为了改善与软件开发生命周期相关的1个或多个方面,已经设计并提出了各种方法论和技术的方案。但是,尽管该研究领域中不乏热心的努力,然而能够明确清楚地理解并可以修改的系统的制造目前仍然只是奢望,距离目标的达成还相当遥远。其理由之一是由于软件本身是复杂而难以捉摸的;另外一个理由是由于目前的方法论也有其局限性。最近,有人提出了一种称为Lyee(商标)的新的非常有前途的方法论。Lyee的目的在于高效地处理与不同领域相关联的范围广泛的软件问题,借此,只要定义了其要件就能够开发出软件。
但是,借助于Lyee而生成的软件的语义以及从要件开始的软件自动生成过程都是以非形式化的语言说明的,因此,要理解并研究该方法论,恐怕会有困难产生混乱。
非专利文献1:J.A.博格斯特拉、J.W.科洛普(J.A.Bergstra和J.W.Klop)著,《使用抽象化的通信进程的代数》,1985年,理论计算机科学,37(1),p.77-121
非专利文献2:G.贝瑞、C.博多尔(G.Berry和G.Boudol)著,《化学抽象机械》,1992年,理论计算机科学,96(1),p.217-248
非专利文献3:C.A.R.霍尔(C.A.R.Hoare)著,《通信顺序进程》,培生计算机科学国际丛书,培生出版公司(Prentice-Hall)出版,1985年
非专利文献4:M.迈吉瑞,B.卡瑞,M.艾尔霍伊(M.Mejri,B.Ktari,和M.Erhioui)著,《面向Lyee的软件的静态分析》,关于Lyee方法论的第1次巴黎国际讨论会预备稿集,哈米德.藤田,保尔.约翰逊编《软件方法论、工具及技术新潮流》,p.375-394,IOS出版,2002年非专利文献5:R.米勒(R.Milner)著,《通信系统计算法》,计算机科学92讲义记录,柏林,1980年,施普林格出版
非专利文献6:根来文生著,《Lyee软件原理》,关于21世纪的信息科学的国际会议2000(IS2000),p.121-189,2000年11月
非专利文献7:根来文生著,《Lyee入门》,软件生产技术研究所,东京,日本,2001年
非专利文献8:根来文生,I.哈米德(I.Hamid)著,《语义工学的建议》,关于数据库和信息系统的第5次东欧会议研究(ADBIS’2001),2000年9月
非专利文献9:根来文生,I.哈米德(I.Hamid)著,《语义工学的建议》,因特网上的电子商务,与科学和教育基础进步相关的国际会议(SSGRR2001),2001年
                        发明内容
本发明主要的第1目的是:使用进程代数将借助于Lyee生成的软件的语义和软件的自动生成过程形式化。实际上,进程代数从本质上印证了Lyee方法论的很多概念,因此,能够将Lyee方法论简洁而巧妙地形式化。此外,第2目的是:进程代数利用冯.诺曼理论为Lyee方法论提供更适合的抽象机。实际上,这种新的抽象机将程序视为化学溶液,在那里,分子(与Lyee方法论不同的向量)为了达成共同的目的而相互作用。
本发明为了解决这些课题,具备:第1步骤,按每个逻辑体、按该逻辑体上的每个单词,根据单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性来声明,即,规定,作为1个程序而安装的用户要件;第2步骤,根据单词单位的声明,作成模块化的逻辑要素(L2、L3、L4)作为具备Lyee计算法的输入输出通道的进程单元以及作用要素(I2、O4、S4);第3步骤,将上述逻辑要素和作用要素集合化为集合,该集合以利用来自同一画面的命令产生相互作用为集合条件;第4步骤,按每个上述集合分别配置1个控制函数模块Φ;以及第5步骤,为上述程序配置1个控制函数模块Ψ。
作为本发明的不同的实施体,用来生产“开发对象的软件”的程序(软件)、程序生成装置、程序处理装置、工具(包含作为装置或作为软件的两者)、软件开发装置、软件开发支持装置、软件开发管理装置的结构也可以具备:声明信息插入单元,用来在作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形的未定义部分之中插入信息,该信息中,将作为1个程序而安装的用户要件按每个逻辑体、作为该逻辑体上的每个单词的由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明加以信息化;控制函数Φ配置单元,用来将上述逻辑要素和作用要素以利用来自同一画面的命令产生相互作用为集合条件的集合单位,与1个控制函数模块Φ关联起来以便对上述单位进行控制;以及控制函数Ψ配置单元,用来将1个控制函数模块Ψ与上述控制函数Φ关联起来以便对上述控制函数Φ进行控制。
本发明也可以进一步作为利用上述“开发对象的软件的生产方法”而生产的软件、以及搭载了该软件的记录介质或搭载了该软件的装置(硬件)而实现,这种情况下的本发明可由以下部分构成:模块组,在作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形的未定义部分之中插入信息,该信息将作为1个程序而安装的用户要件按每个逻辑体、按该逻辑体上的每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明加以信息化;1个或多个控制函数模块Φ,以利用来自同一画面的命令产生相互作用为集合条件的集合单位,与上述模块组关联起来以便利用1个控制函数模块Φ进行控制;以及控制函数模块Ψ,与上述控制函数Φ关联起来以便利用1个控制函数模块Ψ进行控制。
另外,本发明也可以进一步作为利用上述“开发对象的软件的生产方法”而生产软件时所使用的软件代码的雏形的软件、以及搭载了该软件的记录介质或搭载了该软件的装置(硬件)来实现,这种情况下的本发明可作为将软件作为可代码化的雏形来实现,其具备:具有将信息应嵌入的未定义部分、作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形,该信息将作为1个程序而安装的用户要件按每个逻辑体、按该逻辑体上每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明加以信息化;控制函数模块Φ的雏形,具备将上述声明信息插入到未定义部分后的上述逻辑要素和作用要素以利用来自同一画面的命令产生相互作用为集合条件的集合单位,利用1个控制函数模块Φ进行控制的功能;以及控制函数模块Ψ的雏形,其具备用于利用1个控制函数模块Ψ控制上述控制函数Φ的功能。
进而,本发明也可以实现为利用上述“开发对象的软件的生产方法”从要件中提取的信息(文档(纸、数据))的提取方法、作为利用该提取方法提取的信息(文档(纸、数据))、进而作为所提取的该信息的使用方法、或者作为搭载了这些信息的信息记录介质、或者作为信息的提取方法/使用方法被代码化后的软件、作为搭载了该软件的记录介质/装置(硬件)中的任意一种,这种情况下的本发明可作为从具备以下信息的软件开发要件中提取的信息而实现:应插入到作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形的未定义部分之中的、用来声明作为1个程序而安装的用户要件按每个逻辑体、按该逻辑体上的每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明信息化后的信息;对将未定义部分中插入上述声明信息后的上述逻辑要素和作用要素以利用来自同一画面的命令产生相互作用为集合条件的集合单位关联起来以便利用1个控制函数模块Φ进行控制的信息;以及与上述控制函数Φ关联起来以便利用1个控制函数模块Ψ进行控制的信息。
此外,关于逻辑体,参照同一申请人的专利申请特愿2004-272400,引用其作为本说明的一部分。
本发明高效地处理与不同领域相关联的范围广泛的软件问题,与现有的方法论相比,使用Lyee时开发时间、维护时间和文档量显著减少(70~80%左右)。
                        附图说明
图1是用来说明本发明的一个实施方式中的单元的概念的概念图。
图2是表示本发明的一个实施方式中相互作用的进程的实例的图。
图3是用来说明本发明的一个实施方式中要件的执行的概念的概念图。
图4是用来说明本发明的一个实施方式中Lyee选项板(palette)的概念的概念图。
图5是用来说明本发明的一个实施方式的基本结构的概念的概念图。
图6是用来说明本发明的一个实施方式中谓语向量的概念的概念图。
图7是用来说明本发明的一个实施方式中L4_a及L4_b的谓语向量的概念的概念图。
图8是用来说明本发明的一个实施方式中L3_a及L3_b的谓语向量的概念的概念图。
图9是用来说明本发明的一个实施方式中的画面相互作用的概念的概念图。
图10是用来说明本发明的一个实施方式中的处理路线图的概念图。
图11是用来表示本发明的一个实施方式中有1个画面时的情况的概念图(实施例1)。
图12是用来表示本发明的一个实施方式中Lyee计算法的程序P(S1)的进程和最终用户的进程的说明图。
图13是用来说明本发明的一个实施方式中进程间的相互作用的概念图。
图14是用来表示本发明的一个实施方式中有2个画面时的情况的概念图(实施例2)。
图15是用来表示本发明的一个实施方式中Lyee计算法的程序P(S1)的进程和最终用户的进程的说明图。
图16是功能框图,表示作为本发明的一个不同的实施方式,将本发明作为用来生产“开发对象的软件”的程序(软件)、程序生成装置、程序处理装置、工具(包含作为装置和作为软件的这两者)、软件开发装置、软件开发支持装置、或者软件开发管理装置的任意一个加以实施时作为功能所具备的结构。
图17是流程图,表示本发明的一个实施方式中作为具备上述结构的程序(软件)、程序生成装置、程序处理装置、工具(包含作为装置和作为软件的这两者)、软件开发装置、软件开发支持装置、或软件开发管理装置中的任意一个而实施的本发明的动作。
符号说明
W04   W04选项板
W05   W05选项板
W06   W06选项板
1601  整体控制部
1602  声明信息插入部
1603  控制函数Φ配置部
1604  控制函数Ψ配置部
1605  信息存储部
                        具体实施方式
Lyee方法论:由进程代数进行的形式化
概要:这几年间,为了改善与软件开发生命周期相关的1个或多个方面,已经设计并提出了各种方法论和技术的方案。但是,尽管该研究领域中不乏热心的努力,然而能够明确清楚地理解并可以修改的系统的制造目前仍然只是奢望,距离目标的达成还相当遥远。其理由之一是由于软件本身是复杂而难以捉摸的;另外一个理由是由于目前的方法论也有其局限性。最近,有人提出了一种称为Lyee的新的非常有前途的方法论。Lyee的目的在于高效地处理与不同领域相关联的范围广泛的软件问题,借此,只要定义了其要件就能够开发出软件。
但是,借助于Lyee而生成的软件的语义以及从要件开始的软件自动生成过程都是以非形式化的语言说明的,因此,要理解并研究该方法论,恐怕会有困难产生混乱。
本发明主要的第1目的是:使用进程代数将借助于Lyee生成的软件的语义和软件的自动生成过程形式化。实际上,进程代数从本质上印证了Lyee方法论的很多概念,因此,能够将Lyee方法论简洁而巧妙地形式化。此外,第2目的是:进程代数利用冯.诺曼理论为Lyee方法论提供更适合的抽象机。实际上,这种新的抽象机将程序视为化学溶液,在那里,分子(与Lyee方法论不同的向量)为了实现共同的目的而相互作用。
1.首先
如何简单快速地制造高品质的软件是软件开发研究领域的基本课题。这几年来,为了改善与软件开发生命周期相关的1个或多个方面,已经设计并提出了各种方法论和技术。但是,尽管该研究领域中不乏热心和努力,然而能够明确清楚地理解并可以修改的系统的制造目前仍然只是奢望,距离目标的达成还相当遥远。其理由之一是由于软件本身是复杂而难以捉摸的;另外一个理由是由于目前的方法论也有其局限性。实际上已经提出的几乎全部方法论都没有能够制造出可以明确清楚地理解并修改的系统,到目前为止,其使用也仅限于具有范围非常广泛的能力、技术和知识的专家。为此,人工费用和维护费用很高,必须对软件进行广泛的检查。基于这些理由,企业倾向于欢迎约束在软件开发周期中的可证实的改善的所有新的方法论。
最近提出了一种被称为Lyee(读作“li”,是由“governementaLmethodologY for softwarE providencE”的尾字母组成的词)(参照非专利文献6、7、8、9)的、新的非常有前途的方法论。Lyee的目的在于高效地处理与不同领域相关联的范围广泛的软件问题,借此,只要定义了其要件就能够开发出软件。更准确地说,开发者只要提供单词、计算式、计算条件(前提条件)以及画面和报表的排列布局,然后全部由计算机执行其后全部复杂的编程过程(例如,与控制逻辑有关的方面等)。尽管很新,然而Lyee的使用结果仍然给人们展示出其具有非常多的潜力。实际上,与现有的方法论相比,使用Lyee时开发时间、维护时间以及文档量显著减少(70~80%左右)(参照非专利文献7)。在非专利文献4中,为了改善这种方法论的多个方面,特别是Lyee要件的方面,人们提出了若干个古典式静态分析技术。
但是,借助于Lyee而生成的软件的语义以及从要件开始的软件自动生成过程都是以非形式化的语言说明的,因此,要理解并研究该方法论,恐怕会有困难产生混乱。进而,该方法论所蕴含的构思是由不适宜支持这种构思的顺序处理语言(sequential language:顺序语言)来描述的。实际上,借助于Lyee而生成的软件基本上是由小的构件(在Lyee的术语中称为向量(vector))组构成的。这里,各个构件具有各自的原子目标(atomic goal:元素目的)并通过相互作用而互相协作,产生所要求的结果(全局目标(global goal:整体目的))。另一方面,众所周知,支持并发性(concurrency:多个计算主体相互交流信息并执行动作)和通信(communication)的进程代数是一种在本质上适合于描述存在共同作用(concurrent)的构件的语言。因此,进程代数为支持Lyee方法论的概念提供了形式化的有价值的基础。将进程代数应用于Lyee方法论中所获得的很多优点之一是:Lyee的现实版本中的很多构件(向量整体或向量的一部分)已经变得不再需要。这是因为,这些构件是以顺序处理语言描述的,因此对于控制某个处理的整个执行顺序来说是必要的,但它们的作用必然地得到支持进程的平行处理和通信的进程代数的支持。实际上,路由作用要素(routingvector)也已经不再需要。能够获得用来生成更小、处理时间更短、所需内存更少的程序的、简单的Lyee的形式化描述。而且,这种形式化描述也是这种方法论的各个方面的很多绕有趣味的分析所不可或缺的起点。例如,为了最优化使用Lyee生成的软件或软件生成过程,需要有能够证明最优化后的程序与原版本相同的形式化证据。使用进程代数能够很好地进行在形式上是否相同检查,或进行更一般化的模型检查。
在本说明书中,首先对在本质上(naturally)容易地支持Lyee方法论的基本概念的、称为Lyee计算法(Lyee-Calculus)的形式化进程代数(formal process algebra)加以定义。实际上,这种计算法可以看作是更适合于用来支持Lyee方法论的概念的抽象机(abstract machine:计算机的概念的抽象化),而不是冯.诺曼型(顺序处理型)计算机。这种抽象机把程序看作是为了产生最终结果而共同相互作用的分子的集合。第二,这种计算法表示了如何将Lyee构件(在Lyee中称为向量)和Lyee方法论的整个软件生成过程两者进行形式化而加以简化。实际上,Lyee软件生成的自动生成全过程实现了形式化。
本说明书的其余部分如下构成。在第2部分定义了Lyee计算法的语法(syntax)和语义(semantics)。在第3部分介绍了Lyee方法论的技术,介绍了利用Lyee计算法所做的其形式化的全貌。在第4部分,提出了利用Lyee计算法所做的Lyee方法论的详细而完整的形式化方案。在第5部分,针对所生成的程序在每个执行阶段的描述以及怎样根据简单的要件自动生成程序这两者的一个具体的实例研究进行说明。最后,在第6部分,叙述了该研究的结论,说明了若干个将来的研究。
2.Lyee计算法
进程代数是一种用于复杂的计算机系统、特别是包含相互通信并且并发执行的构件的计算机系统的形式化描述技术(参照非专利文献1、3、5)。进程代数在文献中通常称为计算法(calculus)。其原因在于,进程代数包含超出了进程代数领域的各种数学或逻辑概念(并发理论(concurrency theory)、操作语义(operational semantics)、复杂度理论(complexity theory)、逻辑等)。
在该部分中,说明了为了形式化Lyee方法论而特意定义的称为Lyee计算法的新的计算法的语法和语义。
2.1语法(Syntax)
Lyee计算法程序是由在指定通道上通过握手技术(hand-shaketechnique:通过将2个进程中的一方置为可接收状态、另一方置为可发送状态进行通信的技术)进行通信(communicate)的独立的并发进程构成的系统。通道可以进行限制,只允许特定进程在其上进行通信。某个进程可以执行作用[?!e]而通过通道?发送值?(?是算式e的计算结果(valuation))。同样地,某个进程可以执行作用[??e]而从通道?接收算式e的值?(?是算式e的计算中使用的值)。
某个进程也可以执行无为作用(silent action)τ。这种特别的作用用来表示进程间的同步(synchronization:在进程间通信中,某个进程发送数值等的同时,另一个进程接收该值的行为)这样的系统内部行为(internal behavior)。另外,也有益于捕捉进程进展的不可预测性(indeterminism)——即当存在多个进程作为选择项而无法预测哪个进程会被执行(参照后述的进程语法定义1的“选择”的说明)。
进程的语法(syntax)定义如下。
<定义<语法1>
[算式1]
<定义<语法2>
K,K1,K2∷={κ}|K1 U K2
<定义<语法3>
[算式2]
L,L1,L2∷=0|{ι}|L1 U L2|
<定义<语法4>
κ∷=??!e |??e|τ|
上述定义语法中使用的符号的意义、及其直观式语法的意义表示如下。
<定义<语法1>
[表1]
Figure A20048002728700121
  nil   空进程(nil process)
定义语法1的直观意义如下所示。即,当存在进程P和Q时,其关系和内容定义为以下的某一个。即,是序列([K].P)、并行结构(P|Q)、选择(P+Q)、有条件选择(P>Q)、限制(P/L)、定义、空进程(nil)中的某一个。这里所说的“定义”是指
[算式3]
= def
关于各语法的解释在后文叙述。
<定义<语法2>
[表2]
 符号   意义
 K,K1,K2   作用集(Set of actions)
 κ   作用(Action)
 {κ}   以1个作用(Single action)为要素的集合
 K1 U K2   作用集的合集(Set union)
定义语法2的直观意义如下所示。即,当存在作用集K、K1、K2时,该作用集是以1个作用为元素的集合({κ})或者是作用集结合后的所成的集合(K1 U K2)的任一个。
<定义<语法3>
[表3]
 符号  意义
 L,L1,L2  通道集(Set of channels)
 0  空集合(Empty set)
 ι  通道(Channel)
 {ι}  以1个通道(Single channel)为要素的集合
 L1 U L2  通道集的结合(Set union)
定义语法3的直观意义如下所示。即,当存在通道集L、L1、L2时,该通道集是没有元素的空集合(0)、仅以1个通道为元素的集合({?})、通道集结合后的集合(L1 U L2)中的任一个。
<定义<语法4>
[表4]
  符号   意义
  κ   作用(Action)
  ι!e   发送(Send)作用(经由通道ι发送算式e的计算结果值)
  ι?e   接收(Receive)(经由通道ι接收算式e的值)
  τ   无为作用(Silent action)
  ι,j   通道(Channel)
  e   算式(Arithmetic expression)
定义语法4的直观意义如下所示。即,当存在作用κ时,该作用是在通道?上发送算式e的计算结果值的发送作用(?!e)、在通道?上接收算式e的值的接收作用(??e)、无为作用(τ)中的任一个。
详细说明定义语法1中定义的语法的意义。
1)[K].P:序列(Sequence)
进程[K].P是属于作用集K的全部作用(action)即{κ1,...,κn}执行后作为P执行的进程。属于K的作用的执行顺序无关紧要。这里,为了简化说明,将[{κ1,...,κn}]写成[κ1,...,κn]。
2)P|Q:并行结构(Parallel composition)
进程P|Q作为并发执行的进程P和Q执行。各个进程既可以在双方清楚的通道上进行相互作用,或者各个进程也可以独立于另一方与外部世界(系统的环境或最终用户)相互作用(interact)。如果2个进程在相同通道上取得同步(synchronize:在进程间通信中,某个进程发送数值等的同时,另一个进程接收),则进程整体执行作用τ(无为作用),其后,作为剩下的进程执行。具体地,试以以下进程为例进行考察。
P=P1|P2
P1和P2定义如下。
[算式4]
P 1 = def [ &iota; ! 4 ] &CenterDot; P 1 &prime; P 2 = def [ &iota; ? x ] &CenterDot; P 2 &prime;
上述算式的直观意义为:
P1在通道?上发送值4,其后是作为进程P1’而运行的进程。P2等待通道?上提供的算式x的值,值被提供后加以接收,其后是作为进程P2’而运行的进程。
因此,进程P在进程P1与P2取得同步时(这实际上是在从P1发送值4的同时由P2接收)执行无为作用τ,其后作为剩下的进程P1′|P2′运行。从语义上来看,该迁移表示如下。
[算式5]
P &RightArrow; &tau; P 1 &prime; | P 2 &prime;
该算式的直观意义为:进程P的相互作用的结果是无为作用τ被执行,进程整体变为并发进程P1′|P2′。
关系
[算式6]
&RightArrow; &kappa;
的形式化定义表示该行为之后。
3)P+Q:选择(Choice)
进程P+Q是作为进程P或Q运行的进程。除了P和Q的某一方开始时是无为作用的情况,针对哪个进程被执行的选择是由环境决定的。另一方面,当两个进程是以无为作用开始时,选择并不确定。
4)P>
Q:有条件选择(Guarded choice);
进程P>
Q是作为P运行直至进程Q被激活(activated)的进程。后者Q被激活时,P总是停止并被清除出内存。
5)P/L:限制(Restriction)
进程P/L是作为只使用由通道集L所提供的通道即可与环境进行通信的进程P运行的进程。
6)算式3的符号:定义(Definition)
例如,借助于算式3的符号可以定义如下算式。
[算式7]
A ( X &RightArrow; ) = def P
在算式7中,A是进程的识别名。
[算式8]
X &RightArrow;
是进程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保存了值?的进程单元Cx(?)表示如下。
[算式9]
C x ( v ) = def [ in x ? v ] &CenterDot; C x ( y ) + [ out x ! v ] &CenterDot; C x ( v )
这种形式化描述的直观意义是,当保存了值?的进程Cx(?)在通道inx上接收到算式y的值时,就作为进程Cx(y)而运行(即,所保存的值从?变为算式y的值);当所保存的值?被发送到通道outx上时,发送作用之后仍然保存着值?而作为进程Cx(?)运行。
如果将用来保存值的内存/单元看作进程,则能够进一步为内存/单元赋予智能。例如,能够向直至初始化(接收到初始值)为止不存取其内容的单元写入。这种具备信息处理能力的智能单元(smartcell)可以如下定义。
[算式10]
Cell ( x ) = def [ in x ? y ] &CenterDot; C x ( y )
进程Cell(x)在通道inx上接收到算式y的值之后,成为保存着算式y的值的进程Cx(y)而运行(接收算式y的值,成为保存算式y的值的进程,不执行发送)。
这里,考虑如下定义的2个进程。
[算式11]
P 1 = def [ in x | 5 ] &CenterDot; nil P 2 = def [ out x ? y ] &CenterDot; nil
进程P1在通道inx上发送值5,变为nil(结束)进程(发送值5的进程)。进程P2在通道outx上接收到算式y的值后变为nil(结束)进程(接收算式y的值的进程)。
这2个进程奇以简单地编写成通过单元x(Cx)而通信的程序。
P1|Cell(x)|P2
该程序是使进程P1、进程Cell(x)、进程P2并发执行的程序。
图2表示上述所包含的全部进程之间的相互作用。
该程序执行中的各个详细步骤如下所示。
[算式12]
P 1 | Cell ( x ) | P 2 = [ in x ! 5 ] &OverBar; &CenterDot; nil | [ in x ? y ] &OverBar; &CenterDot; C x ( y ) | [ out x ? y ] &CenterDot; nil &RightArrow; &tau; C x ( 5 ) | [ out x ? y ] &CenterDot; nil = ( | in x ? y | &CenterDot; C x ( y ) + [ out x &UpArrow; 5 ] &OverBar; &CenterDot; C x ( 5 ) ) | [ out x ? y ] &OverBar; &CenterDot; nil &RightArrow; &tau; C x ( 5 )
上述算式的直观意义是:进程P1|Cell(x)|P2经以下的第1步骤和第2步骤而执行。(等号符号所记载的右边是一个步骤)下划线表示产生相互作用(同步)的收发作用。
<第1步骤>
(1)[inx!5].nil(向通道inx发送值5)、2)[inx!5].Cx(y)(在通道inx接收算式y的值,接收后在单元x中保存算式y的值)、(3)[outx?y].nil(在通道outx接收算式y的值)这3个进程并发执行的结果是:
产生进程间的相互作用(同步),即(1)向通道inx发送值5结束,同时由(2)在通道inx接收值5;
无为作用τ被执行,
转移到(4)Cx(5)(在单元x中保存值5)和(3)[outx?y].nil(在通道outx接收算式y的值)这2个进程的并发进程。
<第2步骤>
根据上述算式1-19的定义,可以将(4)Cx(5)置换为选择进程(4)-1([inx?y].Cx(y)+[outx??].Cx(?))。
即,
进程(4)-1与(3)并发执行的结果是:
产生了与(4)-1的[outx??].Cx(?)(向通道outx发送值5)同时产生(3)的(在通道outx接收算式y的值5)这样的相互作用(同步),
无为作用τ被执行,
其结果是,剩下的进程作为Cx(5)(在单元x中保存值5)而运行。
2.3语义
下面,说明Lyee计算法的形式化语义。该语义通过相互作用关系
[算式13]
&RightArrow; &kappa;
定义。此时,运算子→表示“关系”(relation),κ表示作用。“关系”是多个“关系”的集合,作为该集合元素的各个“关系”由以下3个元素构成。第1元素是“变化前的进程”,第2元素是“变化后的进程”,第3元素是“在变化过程中所执行的作用”。
[算式14]
当写作 P &RightArrow; &kappa; Q 时,关系→的3要素是(P,Q,K)。
按照上述定义,算式14的语义是:借助于子进程P之中的相互作用(reaction),整体进程执行原子作用(atomic action:不允许中断的一系列不可分割的作用,要开始下一个不同的作用,该作用必须结束)κ而变为子进程Q。相互作用关系(interaction relation)这样的构思是由贝瑞(Berry)和博多尔(Boudol)(参照非专利文献2)的《化学抽象机》(Chemical Abstract Machine)触发的。在该模型中,进程被看作等待产生相互作用的分子化学溶液。
为了形式化表示算式13的关系,需要定义以下概念。
[算式15]
Figure A20048002728700193
是为了简化进程而使用的符号,表示左边与简化的进程——右边——相等。如下述所示,通过去除空进程,能够简化进程。
[算式16]
算式e的计算结果值的集合以
[算式17]
[e]
表示。当e是变量时,其计算结果值的变化域也与该变量的变化域(domain)(整数、实数等)相同。为了简化说明,假定全部变量都属于实数集。
[算式18]
&kappa; &DownArrow;
是作用κ所使用的通道的名称。例如,
[算式19]
Figure A20048002728700203
的语义为:
无为作用τ所使用的通道不存在,因此,是空集合(0)。
发送作用(?!e)和接收作用(??e)所使用的通道为?。
“关系”的集合(→)是具备作为要素满足表5所示的15个规则的“关系”的最少数量的“关系”。
括号中所示的各种R符号是表示规则名称的符号。规则由前提条件和结果构成,各个规则都是:如果存在横线上面所示的条件则有下面所示的结果。
[表5]
例如,第2个规则(R1)的语义为如下所示。
当值?属于算式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表示公开。
[表6]
  单词名   定义式   计算条件   IO   类型   安全性
  _
  a   b+c   b*e>2   OF   int   secret
  c   IS   float   public
  b   2*c+5   c>0   OS   float   public
  e   IS   float   public
  _
表6的要件从感觉上来看,与现有的编程语言的表7的代码相对应。Sa表示单词a的声明。
[表7]
  声明   代码
sa   ifb*e>2then a:=b+c;output(a);endif
  sc   input(c);
sb   ifc>0then b:=2*c+5;output(b);endif
  se   input(e);
例如,单词a的声明Sa的代码表示,
“如果b*e>2为真,则将b+c的计算结果代入单词a,并输出单词a的值”。
声明Sc的代码表示“向单词c输入值”。
在Lyee方法论中,用户无需指定这些定义的执行顺序(控制逻辑)。如表7所示,虽然单词a的定义使用了单词b,但声明Sb仍然位于声明Sa之后。如下述说明,根据这些要件,Lyee可以与其声明顺序无关地生成用来计算所定义的全部单词的代码。如非专利文献6、7、8、9所示,这种简单的构思在软件开发的不同阶段产生了很多有利的结果。实际上,借助于这种构思,即使要件不完整也能够开始软件的开发。进而,用户也不需要处理在使用更古典的方法论时遇到的单词的执行顺序的控制逻辑问题。在Lyee方法论中,软件的控制逻辑部分被自动生成,其结果是,编程错误减少,编程时间缩短。灵活性也是Lyee方法论的重要优点。其原因在于,能够将维护业务减轻为要件的简单修改(单词定义的增加、删除和/或修改)作业。
因此,可以将Lyee系统看作是为了生成所要的结果而执行共同的相互作用的独立构件(声明)的集合体。本论的进程代数的概念与这种观点非常吻合。原因在于,Lyee计算法将程序看作是为了实现最终目的而一起相互作用的分子(进程)的化学溶液。因此,甚至可以将由声明的集合{s1,...,sn}构成的Lyee要件LR看作是Lyee计算法的并发进程(concurrent process)。即,如下所示。
LR=s1|...|sn
从直观上说明的话,要件LR是进程s1,...,sn并发执行的进程。
3.2选项板(Pallet)和基本结构(Scenario Function)
根据表6的要件能够自动生成计算a和b的值并将其输出的程序。该程序单纯地重复执行这些命令,直到到达不动点(fixed point),即,如图3所示,重复处理直到任何单词的值都不可改变为止。
从进程代数的观点来看,“到达不动点”的概念当然包含在语义规则中。实际上,进程(分子)一起相互作用,直到达到不可能有任何进展的状态(不动点)。
进一步正确地说明借助于Lyee根据要件自动生成的程序的结构和内容。在Lyee方法论中,表6所示的声明集合通过特定的方法执行。实际上,Lyee如图4所示,在以Lyee术语被称为选项板(W02、W03和W04)的3个区域上分配与声明相关的代码。
选项板W02
处理输入单词。
选项板W03
计算单词的计算条件,将结果保存为布尔型(具备真假值)变量。例如,在单词a的定义中使用的计算条件“b*e>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个选项板的进程的并发进程。
请注意,W04、W03和W02的执行顺序已变得不重要,连接这些选项板的路由作用要素也可以去除。
Lyee确立了具有固定结构的简洁的程序(在Lyee术语中称为谓语向量(predicate vector))。借助于这种结构,所生成的代码的结构不变、而且不依赖于要件的内容。控制向量执行的总括程序(globalprogram)即选项板函数的作用只是简单地调用谓语向量。图6表示谓语向量的结构。
谓语向量的目的随各选项板而不同。
<选项板W04>
选项板W04的第1目的是利用定义式为单词赋值。执行该任务的谓语向量称为L4。图4实例中的单词a和单词b的L4如图7所示。
当单词的计算不再有进展并且单词值全部成立,Lyee的生成代码就开始执行作为下一目的的单词的输出。以输出值为目的的谓语向量称为输出作用要素(Output Vector:称为04)。另外,还存在用来执行空间清除的结构作用要素(称为S4)。
<选项板W02>
以将值与输入单词关联起来为目的的谓语向量有2个。即:用来执行主存(Lyee程序区域之外)输入的输入作用要素(Input Vector:称为I2),用来执行属性检查和Lyee程序空间输入的L2。
<选项板W03>
如图8所示,选项板W03的谓语向量L3的目的是判定在要件中指定的、单词的定义式(即L4)的执行条件。
最后,表8表示设置了表6的要件的Lyee程序。
在每个选项板中设置的1个选项板函数调用(启动)选项板内的谓语向量。选项板函数通过程序中设置的1个选项板连锁函数调用。选项板连锁函数按照各个选项板的R4、R2、R3的指定调用相应的选项板函数。其他程序的语义如表8的注释所示。谓语向量L4、L2、L3(通称为逻辑要素)的处理对象以单词为单位,输入输出作用要素(I2和O4)、结构作用要素(S4)的处理对象是单词集合。
[表8]
  选项板   程序   注释
  W04   Call S4DoCall L4aCall L4bwhile a fixed point is not reachedCall O4Call R4   区域的清除计算单词a的定义式计算单词b的定义式重复执行直至到达不动点输出结果指定W02作为下一路径
  W02   Call I2DoCall L2eCall L2cwhile a fixed point is not reachedCall R2   输入(到内存)输入单词e输入单词c重复执行直至到达不动点指定W03作为下一路径
  W03   DoCall L3aCall L3bwhile a fixed point is not reachedCall R3 计算单词a的执行条件a_cond计算单词b的执行条件b_cond重复执行直至到达不动点指定W04作为下一路径
这里使用Lyee计算法的话,W04、W03和W02的进程可以分别定义如下。
[算式20]
W04=S4|L4_a|L4-b|O4
W03=L3_a|L3_b
W02=L2_e|L2_c|I2
W04进程是S4、L4_a、L4_b、04这些进程的并发进程。
W03进程是L3_a、L3_b各进程的并发进程。
W02进程是L2_e、L2_c、I2各进程的并发进程。
不同谓语向量(L2、L3、L4、I2、O4、S4)的形式上的定义在下一部分说明。
3.3处理路线图(Process Route Diagram)
前一部分所示的基本结构也可以看作是任意的、要件简单的情况下的程序整体。特别地,可以看作是全部输入单词和输出单词属于同一画面、完全不使用数据库的情况下的程序。如果输入单词和输出单词属于几个数据库或属于相互连接的不同画面,则情况变得复杂。为了简化说明,在以下说明中,只说明画面存在多个的情况。如图9所示,有3个相互连接的画面,考虑用户可以从一个画面迁移到另一个画面时的情况。在各个画面中,用户能够输入、计算或输出单词。因此,在规格说明书中,用户必须指定这些画面是怎样相互连接的。
进一步说,只定义1个基本结构、由此计算全部画面中所定义的全部单词是不合适的。原因在于,实际上,在程序的任意一次执行中,某个画面可能不被访问,在此情况下,没有被访问到的画面的单词值的计算是无用的。为此,Lyee在各个画面中将该画面被访问时所执行的负责基本结构关联起来。与画面相关的基本结构被连接起来,表示出从1个画面向另一个画面的移动。如图10所示,在Lyee术语中,多个被连接起来的基本结构就是处理路线图(Process RouteDiagram)。
使用Lyee计算法可以将某个画面sk如下式所示形式化为用来控制进程SF(sk)的执行的进程Φ(sk)。
[算式21]
Figure A20048002728700271
即,进程Φ(sk)作为进程SF(sk)(与画面sk相关的处理的基本结构的进程)运行,在通道?sk上接收到真值时,停止SF(sk),作为进程Φ(sk)运行。实际动作是,控制进程Φ(sk)激活进程SF(sk),当在与画面sk关联的通道?sk上接收到信号时(即画面sk重新被激活时),Φ(sk)被重新激活。因此,借助于控制进程Φ(sk)的再次激活,SF(sk)一度停止后再次激活,恢复初始状态(fresh instance)。
表示函数Φ(sk)怎样发挥作用的具体实例在本说明书后面记述。
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计算法将包含画面s1,...,sk的Lyee程序P形式化为如下式所示。
[算式22]
P ( s 1 , . . . , s k ) = &Psi; ( s 1 , . . . , s k ) / L ( s 1 , . . . , s k )
这里,L(s1,...,sk)是输入通道和输出通道的集合。该算式表示,Ψ(s1,...,sk)只通过属于L(s1,...,sk)的通道与环境进行交流。
函数Ψ定义为下式。
[算式23]
Figure A20048002728700282
该函数Ψ在每次从与画面s(s是画面s1,...,sk中的任意一个)相对应的通道?s上接收到真值时,启动进程Φ(s)以便启动与画面s相对应的SF(s)。上述通道?s是为了启动相对应的画面而由用户使用的按钮或菜单的形式化表示。另外,该函数Ψ当从通道?s0上接收到真值时,使全部其他的进程结束,函数Ψ本身也结束(变为nil)。通道?s0是结束按钮(或相应的菜单项目)的形式化表示。
因此,Lyee系统可以看作是为了计算所求的输出单词而相互通信的、独立的并发进程(concurrent process)的集合体。与Lyee方法论现有的顺序处理式(sequential)观点不同的是:全部路由作用要素都不再需要,控制功能的作用大幅度简化,也不再需要工作内存区域(working memory)等。以下针对Ψ(s1,...,sk)与具体实例一起进一步进行详细说明。
在下一部分中,说明利用Lyee方法论所做的更详细而完整的形式化。
4.Lyee方法论的形式化
下面考察怎样使用Lyee计算法根据简单的用户要件自动生成软件。
假定用户要件包含k个画面{s1,...,sk}。另外,各个画面包含声明的集合。这种情况下,各个声明具备以下形式,即(w,e,c,InOut,type)。这里,w表示单词名,e表示其定义式,c表示定义式的执行条件,InOut用来指定单词是输入还是输出、或者是两者、或者既不是输入也不是输出(值i用于输入单词,值o用于输出单词,io用于既可以是输入也可以是输出的场合,空域用于既不是输入也不是输出的场合),type表示值的属性(类型)(例如,类型B分配作表示按钮的符号)。
为了定义与该要件相关的程序P(s1,...,sk),将逻辑要素和作用要素的向量(进程)如下表所示形式化。
首先,说明形式化中使用的未定义定义的符号。
Use(e)表示算式e中使用的单词的集合。例如,Use(a*b+1)={a,b}。
另外,F(S)是取得输入值的集合作为变量S、返回执行该输入的接收作用的集合的函数。
[算式24]
Figure A20048002728700291
上述语义如下。
当没有输入值时(F(0)),没有接收作用(0是空集合)。
输入值x和输入值A的接收作用(F({x}UA))是在通道
[算式25]
&iota; 4 x
上接收x的值的接收作用和接收输入A的接收作用F(A)的集合。
逻辑要素(Signification Vectors)如表9所示。
[表9]
Figure A20048002728700302
作用要素(Action Vector)如表10所示。
[表10]
Figure A20048002728700311
Figure A20048002728700321
向量中的S4是用来保存2.2所述的值的内存单元,并且是具备“到初始化(接收到初始值)为止不允许存取其内容”能力的智能单元。
路由作用要素在Lyee计算法中在本质上是不需要的进程,对其进行记述是为了表示出利用Lyee计算法是怎样进行形式化的。
选项板:
任意画面s的3个选项板W02、W03和W04如下所示形式化。
[算式26]
W 02 ( s ) = | ( w&omega; , * , * , i , B &OverBar; ) &Element; s I 2 ( w ) | ( w , * , * , i , B &OverBar; ) &Element; s L 2 ( w ) W 03 ( s ) = | ( w , * , c , * , B &OverBar; ) &Element; s L 3 ( w , c ) | ( w , c , c , i , * , B ) &Element; s R 3 ( w , c , e ) W 04 ( s ) = | ( w , * , * , * , B &OverBar; ) &Element; s S 4 ( w ) | ( w , e , * , * , B &OverBar; ) &Element; s L 4 ( w , e ) ) | ( w , * , * , o , * , * ) &Element; s O 4 ( w )
这里,
[算式27]
B
表示除B(表示按钮)之外的任意类型(B的补集),*表示任意。
基本结构:
画面s的基本结构SF(s)形式化为下式。
[算式28]
SF(s)=W04(s)|W03(s)|W02(s)
控制功能:
伴随画面s的控制功能形式化为下式。
[算式29]
Figure A20048002728700331
伴随画面集合的控制功能形式化为下式。
[算式30]
Figure A20048002728700332
假定s0为程序结束时的画面(不属于程序自身画面组的结束画面)。
这里,总结控制功能的作用,即为:
[表11]
  控制功能   作用
  Ψ   在程序中设置1个   ●自身由最终用户启动,在接收到结束按钮按下所产生的真值时结束。●在接收到由用户按下按钮等指示所产生的真值时启动对应的Φ。●在接收到结束按钮的真值时,在自身结束前使全部Φ结束。
  Φ   按每个SF设1个   ●自身由Ψ启动和结束。●当在指定通道接收到由用户按下按钮等指示所产生的真值信号时,启动负责的SF。
在本论中,作为Lyee计算法的实现方法之一,针对画面设置1个SF,1个SF形式化为包含与对应画面相关的全部输入输出和计算进程。因此,画面中也有1个SF的控制函数Φ。但是,也可以选择形式化为针对画面设置多个SF和控制函数Φ。实现方法可以根据程序的效率来决定。
Lyee程序:
最后,与包含画面s1,...,sk的要件相关的Lyee程序P(s1,...,sk)表示为下式。
[算式31]
P ( s 1 , . . . , s k ) = &Psi; ( s 1 , . . . , s k ) / L ( s 1 , . . . , s k )
这里,L(s1,...,sk)的集合包含与环境之间的全部输入通道和输出通道,由下式定义。
[算式32]
L ( s 1 , . . . , s k ) = ( &cup; ( w , * , * , i / o , * ) &Element; s k { d w } ) &cup; { &iota; s 1 }
i/o的意思是表示该项目是否必须包含i、o、或io。另外,s1是在用户执行该程序时最初出现的画面。
实施例1
5.实例研究1
本部分中举出具体实例分阶段地说明为了使用Lyee计算法计算单词,Lyee程序是怎样执行的。
这里所示的实例只具有1个画面(附录中记载了具有2个画面的另一实例)。如表12的要件所示,用户输入单词a,等待单词b的值,接着,按下按钮B0结束画面。图11表示这种画面。
[表12]
  单词   定义式   执行条件   IO   类型
  a   i   real
  b   2*a   a>0   O   real
B0 S0 点击 i B
该画面s1由3个声明构成。
[算式33]
s 1 = { ( a , , , i , real ) , ( b , 2 * a , a > 0 , o , real ) , ( B 0 , s 0 , Click , B ) }
借助于前一部分所说明的一般的Lyee程序定义,与表12的要件相关的Lyee程序表示为下式。
[算式34]
Figure A20048002728700352
这里,W02(s1)、W03(s1)和W04(s1)如下所示。如上所述,R3进程在Lyee计算法中不是必需的,因此可以省略。
[表13]
Figure A20048002728700353
这里,假定该程序P(S1)的最终用户(环境)试图执行下述的一系列动作。执行程序(启动画面s1)、为单词a赋值“7”,等待获取单词b的值;按下按钮Bo后结束程序。该最终用户的行动可以通过下述进程ε来描述。
[表14]
Figure A20048002728700361
如上所述,Lyee计算法的程序P(S1)的进程和最终用户的进程表示为图12。
接着考察为了达到所求的目的,程序P(S1)是怎样与这一环境相互作用的。换句话说,来考察与加入了最终用户的行动的程序ε并发执行的程序P(S1)的执行过程。这就是探讨P(s1)|ε的运行。该进程的步骤如下所示。在定义式中,以注释的形式附加了作为等号符号左边可以置换为右边的根据的定义。另外,对于进程间的相互作用而产生的同步(synchronization)(在同一通道上值的发送和接收能够同时进行)部分也附加了注释。下划线部分是同步的发送和接收作用。
[表15]
[表16]
Figure A20048002728700381
总而言之,程序执行的主要步骤如下所示。
最终用户发送程序启动命令,由此,控制函数Ψ(s1)被启动,控制函数Ψ(s1)启动控制函数Φ(s1),控制函数(s1)启动初始画面s1和SF(s1),由此启动程序。
[算式35]
Figure A20048002728700382
最终用户向单词a赋值(发送)值“7”后,SF(s1)中的I2(a)接收到值7。
[算式36]
Figure A20048002728700391
I2(a)将a的值7发送到L2(a)。
[算式37]
L2(a)发送的a的值7被保存到内存即S4(a)中(通过在S4(a)中存储初始值对其进行初始化)。
[算式38]
Figure A20048002728700393
为了计算b的计算条件,a的值7从初始化后的a的内存S4发送到L3(b,a>0)。
[算式39]
( ( ( [ j 4 a ? z ] &CenterDot; S 4 a ( z ) + [ &iota; 4 a ! 7 ] &OverBar; &CenterDot; S 4 a ( 7 ) ) | &CenterDot; &CenterDot; &CenterDot; | ( ( [ &iota; 4 a ? a ] &OverBar; &CenterDot; [ &iota; 3 6 ! ( a > 0 ) ] &CenterDot; nil ) | &CenterDot; &CenterDot; &CenterDot;
判定b的计算条件(a>0判定为真(1)),向L4(b,2*a)发送值1。
[算式40]
( ( S 4 a ( 7 ) | S 4 ( b ) | ( [ &iota; 3 b ? 1 ] &OverBar; &CenterDot; [ &iota; 4 a ? a ] &CenterDot; [ j 4 b ( 2 * a ) ] &CenterDot; nil ) | O 4 ( b ) | ( [ &iota; 3 b ! 1 ] &OverBar; &CenterDot; nil ) | &CenterDot; &CenterDot; &CenterDot;
将a的值7从保存值7的a的内存S4发送到L4(b,2*a)。
[算式41]
( ( ( [ j 4 a ? z ] &CenterDot; S 4 a ( z ) + [ &iota; 4 a ! 7 ] &OverBar; &CenterDot; S 4 a ( 7 ) ) | S 4 ( b ) | ( [ &iota; 4 a ? a ] &OverBar; &CenterDot; [ j 4 b ! ( 2 * a ) ] &CenterDot; nil ) | O 4 ( b ) | &CenterDot; &CenterDot; &CenterDot;
计算b的定义式“2*a”,b的值14被保存到内存即s4(b)(s4(b)被初始化)。
[算式42]
Figure A20048002728700401
b的值14从b的内存S4发送到输出进程O4(b)。
[算式43]
10.由O4将b的值发送到环境,最终用户接收到b的值。此时,属于启动中的SF(s1)的进程是保存了值的a和b的S4、R3(Bo,click,so)。
[算式44]
Figure A20048002728700403
11.最终用户为了结束程序而按下按钮Bo,R3(Bo,click,so)接收值click,判定自身的计算条件,将真值1发送到控制函数Ψ(s1)。接收到真值1的Ψ(s1)在自身结束前使Φ(s1)结束,Φ(s1)在自身结束前使SF(s1)结束。
[算式45]
Figure A20048002728700404
图13表示上述各个步骤。
带有括号的编号与上述步骤的说明相对应。不带括号的数字表示发送和接收的值。
进而,各进程的迁移可以通过证明来确认。例如,存在下述进程的迁移(对应于上述步骤1)。P(s1)和ε之间发生同步(程序启动命令的收发)后迁移至P1(s1)和ε1的并发进程。
[算式46]
( P ( s 1 ) | &epsiv; ) &RightArrow; &tau; ( P 1 ( s 1 ) | &epsiv; 1 )
此时,成为
[算式47]
Figure A20048002728700412
上述可以使用表5的规则通过以下证明确认其正确性。
[算式48]
Figure A20048002728700413
6.结论
本说明书首先定义了称为Lyee计算法的形式化的进程代数,其在本质上容易地支持Lyee方法论的基本概念。实际上,这种计算法可以看作是一种抽象机,其更适合于用来支持Lyee方法论的概念而不是冯.诺曼型计算机。这种抽象机把程序看作是为了产生最终结果而共同相互作用的分子的集合。第二,表示了这种计算法如何将整个软件生成过程和Lyee向量两者进行形式化而加以简化。实际上,路由作用要素(routing vector)也已经不再需要。另外,不再需要选项板函数,控制功能的作用大幅度简化。Lyee软件生成的自动生成的整个过程被形式化。借助于这种形式化,能够将这种方法论的语义形式化,以使该方法论所蕴含的概念可以被清楚明确地理解。而且,这种形式化描述也是这种方法论的各个方面的很多绕有趣味的分析所不可或缺的起点。例如,为了最优化使用Lyee生成的软件或软件生成过程,需要有能够证明最优化后的程序与原版本相同的形式化证明。使用进程代数能够很好地进行在形式上是否相同检查,或进行更一般化的模型检查。
在将来的研究中,我们希望进一步研究Lyee方法论的语义,使Lyee方法论更简单化,能够根据要件生成可靠性更高的最优化的代码。为了实现最优化,正在考虑定义Lyee计算法的进程间的适合(congruence)关系,借此证明由此开始归结出来的最优化的正确性。
实施例2
<附录>
实例研究2-存在2个画面的情况
为了表示出多个画面之间的相互作用,针对由2个画面构成的程序的情况进行描述。图14是表示该程序的画面的图。该程序启动后,显示出画面S1。在画面S1,用户输入单词a,等待输出单词b的值。按下按钮B2后,显示出画面S2,等待输出单词b的值。在画面S2按下按钮B0后,程序结束。
总结图14的程序的要件声明,可得画面S1的要件(表17)和画面S2的要件(表18)。
[表17]
  单词   定义式   执行条件   IO   ...
  a   I   ...
  b   2*a   a>0   O   ...
  B2   S2   点击   I   ...
[表18]
  单词   定义式   执行条件   IO   ...
  e   1+b   b>0   O   ...
  B0   S0   点击   I   ...
借助于前一部分所说明的一般的Lyee程序的定义,与表17及表18的要件相关的Lyee程序表示为下式。
[算式49]
SF(s1)=W04(s1)|W03(s1)|W02(s1)
SF(s2)=W04(s1)|W03(s1)
请注意,不存在与画面S2相对应的W02。原因在于,W02不包含除按钮之外的输入单词。
[算式50]
这里,W02(s1)、W03(s1)、W04(s1)、以及W03(s2)、W04(s2)定义如下。与实例研究1相同,R3进程在Lyee计算法中不是必需的,因此可以省略。
[表19]
Figure A20048002728700432
[表20]
Figure A20048002728700433
[表21]
Figure A20048002728700441
这里,假定该程序的最终用户(环境)试图执行下述的一系列动作。执行程序(启动画面s1)、为单词a赋值“7”,为了获取单词b的值等待;按下按钮B2以便迁移到画面s2,为了获取值e等待,按下按钮B0以结束程序。该动作可以通过下述进程ε来描述。
[表22]
Figure A20048002728700442
如上所述,Lyee计算法的程序P(S1)的进程和最终用户的进程表示为图15。
程序执行的主要步骤如下所示。
最终用户发送程序启动命令,由此,控制函数Ψ(s1,s2)被启动,控制函数Ψ(s1,s2)启动控制函数Φ(s1),控制函数(s1)启动初始画面s1和SF(s1),由此启动程序。
P(s1,s2)和ε之间发生同步(程序启动命令的收发)后迁移至P1(s1,s2)和ε1的并发进程。
[算式51]
P ( s 1 , s 2 ) | &epsiv; &RightArrow; &tau; P 1 ( s 1 , s 2 ) | &epsiv; 1
这里,
[算式52]
最终用户向单词a赋值(发送)值“7”后,SF(s1)中的I2(a)接收到值7。
P(s1,s2)和ε1之间发生同步(收发单词a的值)后迁移至P2(s1,s2)和ε2的并发进程。
[算式53]
P 1 ( s 1 , s 2 ) | &epsiv; 1 &RightArrow; &tau; P 2 ( s 1 , s 2 ) | &epsiv; 2
这里,
[算式54]
a的值7被保存到内存S4(a)。该保存可以通过2个步骤来完成。在第1步骤中,a的值7被发送到L2(a)。在第2步骤中,L2(a)将该值发送到内存S4(a)。
第1步骤如下所示。P2(s1,s2)内部发生同步(在I2(a)和L2(a)之间收发单词a的值7)后迁移至P3(s1,s2)和ε2的并发进程。
[算式55]
P 2 ( s 1 , s 2 ) | &epsiv; 2 &RightArrow; &tau; P 3 ( s 1 , s 2 ) | &epsiv; 2
这里,
[算式56]
在第2步骤中,a的值7被保存到W04内存S4(a)中(通过在S4(a)中存储初始值对其进行初始化)。P3(s1,s2)内部发生同步(在L2(a)和S4(a)之间收发单词a的值7)后迁移至P4(s1,s2)和ε2的并发进程。
[算式57]
P 3 ( s 1 , s 2 ) | &epsiv; 2 &RightArrow; &tau; P 4 ( s 1 , s 2 ) | &epsiv; 2
这里,
[算式58]
Figure A20048002728700463
为了计算b的计算条件,a的值7从初始化后的a的内存S4发送到L3(b,a>0)。P4(s1,s2)内部发生同步(在S4(a)和L3(b,a>0)之间的收发)后迁移至P5(s1,s2)和ε2的并发进程。
[算式59]
P 4 ( s 1 , s 2 ) | &epsiv; 2 &RightArrow; &tau; P 5 ( s 1 , s 2 ) | &epsiv; 2
这里,
[算式60]
Figure A20048002728700465
判定b的计算条件(a>0判定为真(1)),向L4(b,2*a)发送值1。P5(s1,s2)内部发生同步(在L3(b,a>0)和L4(b,2*a)之间收发真假值1)后迁移至P6(s1,s2)和ε2的并发进程。
[算式61]
P 5 ( s 1 , s 2 ) | &epsiv; 2 &RightArrow; &tau; P 6 ( s 1 , s 2 ) | &epsiv; 2
这里,
[算式62]
Figure A20048002728700472
将a的值7从a的内存S4发送到L4(b,2*a),计算出b的定义式“2*a”,将b的值14保存到内存S4(b)(S4(b)被初始化)。P6(s1,s2)内部发生同步(在a的内存S4与L4(b,2*a)之间、L4(b,2*a)与b的内存S4之间的收发)后迁移至P7(s1,s2)和ε2的并发进程。
[算式63]
P 6 ( s 1 , s 2 ) | &epsiv; 2 &RightArrow; &tau; P 7 ( s 1 , s 2 ) | &epsiv; 2
这里,
[算式64]
Figure A20048002728700474
b的值14从b的内存S4发送到输出进程O4(b)。由O4(b)将b的值发送到环境,最终用户接收到b的值。P7(s1,s2)内部的同步(在L4(b,2*a)与O4(b)之间的收发)、P7(s1,s2)与ε2之间的同步(收发单词b的值)发生后迁移至P8(s1,s2)和ε3的并发进程。
此时,属于启动中的SF(s1)的进程是保存了值的a和b的S4、R3(B0,click,s0)。
[算式65]
P 7 ( s 1 , s 2 ) | &epsiv; 2 &RightArrow; &tau; P 8 ( s 1 , s 2 ) | &epsiv; 3
这里,
[算式66]
Figure A20048002728700482
为了迁移至画面2,最终用户按下画面s1上的按钮B2。R3(B2,click,s2)接收到由ε3发送过来的按钮B2的Click值,R3(B2,click,s2)判定自身的计算条件,将真值1发送到控制函数Ψ(s1,s2)。接收到值1的控制函数Ψ(s1,s2)启动控制函数Φ(s2)。接收到值1的控制函数Φ(s2)启动控制函数SF(s2),启动画面s2
P8(s1,s2)与ε3之间的同步(收发按钮B2的click值)、P8(s1,s2)内部的同步(R3(B2,click,s2)与Ψ(s1,s2)以及控制函数Φ(s2)之间的收发)发生后迁移至P9(s1,s2)和ε4的并发进程。
[算式67]
P 8 ( s 1 , s 2 ) | &epsiv; 3 &RightArrow; &tau; P 9 ( s 1 , s 2 ) | &epsiv; 4
这里,
[算式68]
Figure A20048002728700484
为了计算e的条件,从b的内存S4向L3(e,b>0)发送值14。P9(s1,s2)内部发生同步(在a的内存S4和L3(e,b>0)之间的收发)后迁移至P10(s1,s2)和ε4的并发进程。
[算式69]
P 9 ( s 1 , s 2 ) | &epsiv; 4 &RightArrow; &tau; P 10 ( s 1 , s 2 ) | &epsiv; 4
这里,
[算式70]
e的计算条件b>0判定为真(1),从L3(e,b>0)向L4(e,1+b)发送真值1,计算出e的值。P10(s1,s2)内部发生同步(在L3(e,b>0)和L4(e,1+b)之间的收发)后迁移至P11(s1,s2)和ε4的并发进程。
[算式71]
P 10 ( s 1 , s 2 ) | &epsiv; 4 &RightArrow; &tau; P 11 ( s 1 , s 2 ) | &epsiv; 4
这里,
[算式72]
Figure A20048002728700493
将e的值从L4(e,1+b)保存到e的内存S4(b)(S4(b)被初始化)。P11(s1,s2)内部发生同步(在L4(e)和e的内存S4之间的收发)后迁移至P11(s1,s2)和ε4的并发进程。
[算式73]
P 11 ( s 1 , s 2 ) | &epsiv; 4 &RightArrow; &tau; P 12 ( s 1 , s 2 ) | &epsiv; 4
这里,
[算式74]
Figure A20048002728700495
从e的内存S4(b)向O4(e)发送e的值15,从O4(e)向最终用户ε4输出e的值。P11(s1,s2)和ε4之间发生同步(收发单词e的值14)后迁移至P12(s1,s2)和ε5的并发进程。
[算式75]
P 11 ( s 1 , s 2 ) | &epsiv; 4 &RightArrow; &tau; P 12 ( s 1 , s 2 ) | &epsiv; 5
这里,
[算式76]
最终用户按下按钮B0以结束程序。R3(B0,click,s0)从最终用户ε5接收按钮B0的值click,将其发送到控制函数Ψ(s1,s2)。Ψ(s1,s2)在自身结束前使Φ(s1)和Φ(s2)结束,Φ(s1)和Φ(s2)在自身结束前分别使SF(s1)和SF(s2)结束。P12(s1,s2)与ε5之间发生同步(收发CClick值)、接着在P12(s1,s2)内部发生同步(R3(B0,click,s0)与Ψ(s1,s2)、控制函数Φ(s1)及Φ(s2)之间的收发)后全部进程移至nil。
[算式77]
此外,本发明并不限于上述实施方式和实施例,在本发明的技术思想的范围内可作各种改变。例如,也可以分别作为业务方法、软件开发装置、软件开发支持装置、软件开发管理装置或者用来在计算机中实现这些功能的软件以及搭载了该软件的记录介质、专用机等来实现。进而,上述所说明的本发明本来就可以作为方法、或者作为具备相关功能的软件、作为搭载了该软件的装置/工具(也包含软件本身的情况)、进一步作为系统来实现。
例如,图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计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形的未定义部分之中插入信息,该信息将作为1个程序而实现的用户要件按每个逻辑体、按该逻辑体上的每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明加以信息化;控制函数Φ配置单元,将上述逻辑要素和作用要素,以利用来自同一画面的命令产生相互作用为集合条件的集合单位,与1个控制函数模块Φ关联起来以便控制上述单位;以及控制函数Ψ配置单元,用来将1个控制函数模块Ψ与上述控制函数Φ关联起来以便对上述控制函数Φ进行控制。
本发明也可以进一步作为利用上述“开发对象的软件的生产方法”而生产的软件以及搭载了该软件的记录介质或搭载了该软件的装置(硬件)而实现,这种情况下的本发明可由以下模块构成:模块组,在作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形的未定义部分之中插入信息,该信息将作为1个程序而安装的用户要件按每个逻辑体、按该逻辑体上的每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明加以信息化;1个或多个控制函数模块Φ,将上述模块组,以利用来自同一画面的命令产生相互作用为集合条件的集合单位,关联起来以便利用1个控制函数模块Φ进行控制;以及控制函数模块Ψ,将其与上述控制函数Φ关联起来以便利用1个控制函数模块Ψ进行控制。
另外,本发明也可以进一步作为利用上述“开发对象的软件的生产方法”而生产软件时所使用的软件代码的雏形软件、以及搭载了该软件的记录介质或搭载了该软件的装置(硬件)而实现,这种情况下的本发明也可作为软件作为可代码化的雏形而实现,其具备:具有将信息应嵌入的未定义部分、作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形,该信息将作为1个程序而安装的用户要件按每个逻辑体、按该逻辑体上每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明加以信息化;控制函数模块Φ的雏形,具备将上述声明信息插入到未定义部分后的上述逻辑要素和作用要素以利用来自同一画面的命令产生相互作用为集合条件的集合单位,利用1个控制函数模块Φ进行控制的功能;以及控制函数模块Ψ的雏形,其具备用于利用1个控制函数模块Ψ控制上述控制函数Φ的功能。
进而,本发明也可以实现为利用上述“开发对象的软件的生产方法”从要件中提取的信息(文档(纸、数据))的提取方法、作为利用该提取方法提取的信息(文档(纸、数据))、进而作为所提取的该信息的使用方法、或者作为搭载了这些信息的信息记录介质、或者作为信息的提取方法/使用方法被代码化后的软件、作为搭载了该软件的记录介质/装置(硬件)中的任意一种,这种情况下的本发明可作为从具备以下信息的软件开发要件中提取的信息而实现:应插入到作为具备Lyee计算法的输入输出通道的进程单元而模块化的逻辑要素(L2、L3、L4)以及作用要素(I2、O4、S4)的雏形的未定义部分之中的、用来声明作为1个程序而安装的用户要件按每个逻辑体、按该逻辑体上的每个单词的作为由单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性构成的声明信息化后的信息;对将未定义部分中插入上述声明信息后的上述逻辑要素和作用要素以利用来自同一画面的命令产生相互作用为集合条件的集合单位关联起来以便利用1个控制函数模块Φ进行控制的信息;以及与上述控制函数Φ关联起来以便利用1个控制函数模块Ψ进行控制的信息。
进而,本申请的发明在其技术思想相同及等效的范围内允许各种变形、追加、置换、扩大、缩小等。另外,使用本申请的发明生产的装置、方法、软件、系统即使搭载到其二次化的产品中,也丝毫不会降低本申请的发明的价值。
本发明高效地处理与不同领域相关联的范围广泛的软件问题,与现有的方法论相比,使用Lyee时开发时间、维护时间和文档量显著减少(70~80%左右)。

Claims (1)

1.一种软件生成方法,其特征在于,具备:
第1步骤,按每个逻辑体、按该逻辑体上的每个单词,根据单词名、定义式、该定义式的执行条件、输入输出属性、单词值的属性来声明,即,规定,作为1个程序而安装的用户要件;
第2步骤,根据单词单位的声明,作成模块化的逻辑要素(L2、L3、L4)作为具备Lyee计算法的输入输出通道的进程单元以及作用要素(I2、O4、S4);
第3步骤,将上述逻辑要素和作用要素集合化为集合,该集合以利用来自同一画面的命令产生相互作用为集合条件;
第4步骤,按每个上述集合分别配置1个控制函数模块Φ;以及
第5步骤,为上述程序配置1个控制函数模块Ψ。
CNA2004800272871A 2003-09-22 2004-09-22 软件生成方法 Pending CN1856769A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003330772 2003-09-22
JP330772/2003 2003-09-22

Publications (1)

Publication Number Publication Date
CN1856769A true CN1856769A (zh) 2006-11-01

Family

ID=34373029

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004800272871A Pending CN1856769A (zh) 2003-09-22 2004-09-22 软件生成方法

Country Status (7)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930350A (zh) * 2020-08-05 2020-11-13 深轻(上海)科技有限公司 一种基于计算模板的精算模型建立方法

Families Citing this family (5)

* 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 阿坝师范高等专科学校 一种面向云的软件自动生成方法

Family Cites Families (11)

* 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
JP2001005651A (ja) * 1999-06-21 2001-01-12 Institute Of Computer Based Software Methodology & Technology ソフトウェアの決定方法、ソフトウェアの使用方法、記録媒体、処理装置、ソフトウェアの保守方法、ソフトウェアの移植方法、ソフトウェアの管理方法、処理経路図の作成方法、パレット関数の作成方法、パレットの領域の決定方法、パレット連鎖関数の作成方法、位相要素の作成方法、論理要素の作成方法、作用要素の作成方法、ソフトウェアの実装方法、ソフトウェア開発方法、データ構造の置換方法、データ値の置換方法、従来型プログラムの分析方法、ソフトウェア開発管理方法、ソフトウェアの運用管理方法、並列コンピュータ及び判断補助装置
NZ512711A (en) * 1999-11-11 2003-01-31 Inf System Development Inst Program reproducing method and device, and medium on which a program for program reproduction recording
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930350A (zh) * 2020-08-05 2020-11-13 深轻(上海)科技有限公司 一种基于计算模板的精算模型建立方法
CN111930350B (zh) * 2020-08-05 2024-04-09 深轻(上海)科技有限公司 一种基于计算模板的精算模型建立方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1027198C (zh) 计算装置
CN1073540A (zh) 管理类方法名
CN1073276A (zh) 语言的中性对象
CN1910601A (zh) 限制条件解决方法、限制条件解决装置、以及限制条件解决系统
CN1170240C (zh) 结构化文档检索显示方法和装置
CN1875345A (zh) 在编译过程中表示和检查程序组件的一致性的可扩展类型系统
CN101034349A (zh) 基于功能设计的数据库应用系统开发平台
CN1359489A (zh) 用于构筑建模工具的装置和方法
CN1479904A (zh) 利用有向无环图配置产品的方法
CN1866253A (zh) 把Web服务映射到本体
CN1113625A (zh) 面向反应的电信系统接口
CN1689022A (zh) 可扩展标记语言流化转换器
CN1668996A (zh) 解大型连续性或离散性最佳化问题的动态方法
CN1811772A (zh) 企业信息集成平台
CN1359081A (zh) 结构编辑装置、目标内容结构的管理及显示方法和记录媒体
CN1841376A (zh) 对网络表单的数据驱动动作
CN1749958A (zh) 使用形状的公用图表
CN1744036A (zh) 报告软件中支持定制图形表示的系统和方法
CN1669018A (zh) 手持终端框架系统
CN1914594A (zh) 用于创建和提供多层联网服务的方法和系统
CN1167942A (zh) 通过大范围的同值关系的解析来消除传输命令的优化装置
CN1799048A (zh) 通用数据库模式
CN1856769A (zh) 软件生成方法
CN1788254A (zh) 关于Lyee指向软件的静态分析方法
CN1323415A (zh) 基于部件的源代码生成器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication