CN1249474A - 程序开发系统、程序开发方法和为开发程序而存储程序的存储介质 - Google Patents
程序开发系统、程序开发方法和为开发程序而存储程序的存储介质 Download PDFInfo
- Publication number
- CN1249474A CN1249474A CN99111476A CN99111476A CN1249474A CN 1249474 A CN1249474 A CN 1249474A CN 99111476 A CN99111476 A CN 99111476A CN 99111476 A CN99111476 A CN 99111476A CN 1249474 A CN1249474 A CN 1249474A
- Authority
- CN
- China
- Prior art keywords
- state
- time
- temporal information
- incident
- program
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 239000011159 matrix material Substances 0.000 claims abstract description 485
- 238000003860 storage Methods 0.000 claims abstract description 370
- 238000012545 processing Methods 0.000 claims abstract description 194
- 230000007704 transition Effects 0.000 claims abstract description 140
- 238000004088 simulation Methods 0.000 claims abstract description 111
- 230000009471 action Effects 0.000 claims abstract description 108
- 238000011161 development Methods 0.000 claims abstract description 18
- 230000002123 temporal effect Effects 0.000 claims description 125
- 238000012360 testing method Methods 0.000 claims description 104
- 238000012546 transfer Methods 0.000 claims description 71
- 230000002093 peripheral effect Effects 0.000 claims description 34
- 230000008859 change Effects 0.000 claims description 31
- 238000010586 diagram Methods 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 24
- 238000009825 accumulation Methods 0.000 claims description 17
- 230000008676 import Effects 0.000 claims description 12
- 238000012163 sequencing technique Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000008901 benefit Effects 0.000 claims description 5
- 230000005284 excitation Effects 0.000 claims description 4
- 230000006872 improvement Effects 0.000 abstract description 2
- 230000014509 gene expression Effects 0.000 description 103
- 230000018109 developmental process Effects 0.000 description 65
- 238000001514 detection method Methods 0.000 description 15
- 238000013461 design Methods 0.000 description 14
- 230000004044 response Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 230000010354 integration Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000033228 biological regulation Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000009434 installation Methods 0.000 description 2
- 238000005304 joining Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000033772 system development Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 206010021703 Indifference Diseases 0.000 description 1
- 101100202463 Schizophyllum commune SC14 gene Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000009885 systemic effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Abstract
公开了一种程序开发系统、程序开发方法和为开发程序而存储程序的存储介质,以此实现缩短开发要结合到一个实时控制系统中的程序的周期和改善质量。程序开发系统包括:状态转移矩阵存储部分,用于存储状态转移矩阵;处理时间存储部分,用于存储在状态转移矩阵的每一矩阵元中说明的动作需要的处理时间;和模拟器,它通过积累顺序输入的事件和相应于由作为初始状态输入的状态或在每一矩阵元中说明的转移后状态顺序指定的一个矩阵元的时间信息,获得为模拟系统操作所需要的处理时间。
Description
本发明涉及一种程序开发系统、程序开发方法和为开发程序而存储程序的存储介质,特别说,本发明涉及这样的程序开发系统、程序开发方法和为开发程序而存储程序的存储介质,这些程序开发系统、方法和存储介质适用于开发可以结合到实时控制系统中的程序,例如各种电子装置,包括传真机、复印机以及必须被实时控制的包括电力设备的监视/控制系统。
需要实时控制系统来处理一个事件,这种事件是从系统外部和内部的一个激励,包括接收各种信号、接收由系统保持的条件的状态,包括接收信号的备用状态、接收上述事件和状态的组合,以及接收当在一个特定状态下一个特定事件发生时由系统执行的许多动作。作为为开发用于结合到这种实时控制系统中的程序的一种方法,公知使用状态转移矩阵的方法。状态转移矩阵是一个二维矩阵,其中把一个事件或者状态分配给一串或者一行,无论是相应于事件和状态相交点的矩阵元的动作还是在该动作后发生的转移后状态都被排列。尽管现在的实时控制系统规模很大,而且很复杂,但是这一开发程序的方法允许由甚至较少经验的人进行系统的基本设计,结果节省劳力和加速开发周期。
图22是表示常规程序开发系统电气配置例子的方框图,它在日本公开专利申请平9-325952中公开。
该例中的程序开发系统大体由定义矩阵输入部分1、存储部分2、状态层次抽取部分3、预测处理时间计算部分4和警告显示部分5组成,定义矩阵输入部分1用于输入关于抽象机械定义的信息,它通过使用一个层次相关状态转移矩阵定义一个系统操作,包括在为每一状态和一个当前状态下的处理所需要的时间期间内连续执行的处理的活动,存储部分2存储关于输入的抽象机械定义的信息作为一个抽象机械定义矩阵,状态层次抽取部分3用于从由存储部分2读取的抽象机械定义矩阵抽取一个状态的层次结构,预测处理时间计算部分4用于计算分配给在抽象机械定义矩阵的所有状态中较低状态的预测处理时间,并判断计算结果是否超过当前要处理的状态的该预测处理时间,警告显示部分5用于检查计算结果,并在较低状态需要的总处理时间超过上面状态需要的总处理时间时发布一个警告。
这种结构允许在实际操作系统之前,通过使用关于处理时间的片断信息的组合来鉴别一种操作未被延迟执行。
在常规程序开发系统中,使用预测处理时间计算部分4来计算分配给在抽象机械定义矩阵的所有状态中较低状态的预测处理时间,使用警告显示部分5在较低状态中处理所需要的总时间超过当前正被处理的上一状态所需要的总时间时发布一个警告。
然而处理时间是基于实时控制系统性能要求的理想时间,并未对各种实际发生的事件加以考虑。
因此,当在把根据这种抽象机械定义矩阵开发的程序结合到一个系统中时,如果出现故障,系统不能按照性能要求被驱动,则必须跟踪步骤,甚至到修改基本设计,导致开发周期较长。这是常规系统的一个缺点。
常规系统的另一个缺点是开发时间通常限制在一个限度内,如果上述这种故障出现在开发的最后阶段,跟踪到修改基本设计的程度是不允许的,这样没有其它方法,只能采取粗略和临时的修改,这样降低了系统质量。
鉴于上述,本发明的一个目的是提供一种程序开发系统、程序开发方法和为开发程序而存储程序的存储介质,通过这一系统、方法和存储介质,实现缩短要结合到实时控制系统中的程序的开发周期并改善质量。
根据本发明的第一方面,提供一个程序开发系统,包括:
状态转移矩阵存储部分,具有两个或多个矩阵元,这些矩阵元由一个要为之开发一个程序的系统所取的状态和由作为该系统外部和内部激励的事件指定,以及存储说明由该系统要执行的处理的内容或者一个随后要转移到的状态的状态转移矩阵;
时间信息存储部分,用以存储相应于状态转移矩阵中每一矩阵元的时间信息;
模拟器,它通过积累顺序输入的事件和相应于由作为一个初始状态输入的状态和一个转移后状态顺序指定的一个矩阵元的时间信息,用以获取模拟操作该系统需要的处理时间。
在前面的叙述中,一个优选方式是在其中给该程序开发系统提供一个输入部分,用以检测任何指示位置的指定,这些位置中的各个相应于两个或者多个组成在显示部分显示的所述状态转移矩阵的事件或状态,以及输入关于指示位置的位置信息到模拟器,其中模拟器包括:一个分析部分,用以把由输入部分输入的位置信息转变为相应于显示部分的一个事件代码或者状态代码;一个状态存储部分,用以存储相应于该状态代码的一个状态或者在每一矩阵元中说明的转移后的一个状态;一个时间积累部分,用以积累时间信息;和一个状态转移判断部分,用以存储相应于该状态代码的一个状态(作为初始状态)到状态存储部分,以及根据相应于事件代码的一个事件和存储在状态存储部分的状态、参考从状态转移矩阵存储部分读出的状态转移矩阵,确定一个相应的矩阵元,在读取相应于所确定的矩阵元的时间信息后,存储它到时间积累部分,以及进一步在读取在所确定的矩阵元中说明的转移后的状态后,将其存储到状态存储部分。
另外,一个优选方式是在其中给该程序开发系统提供一个事件输入部分,用以输入初始状态和一个测试脚本文件,该测试脚本文件说明在状态转移矩阵中描述的每一事件发生的定时或者在系统中的组成单元按照对模拟器的规范要执行的操作的定时,其中模拟器包括:一个事件分析部分,用以产生一个事件输入序列,它是通过按照出现时间顺序重新排列在由事件输入部分输入的一个测试脚本文件中的两个或者多个事件而获得的;一个状态存储部分,用以存储在每一矩阵元说明的初始状态或者一个转移后状态;一个时间积累部分,用以积累时间信息;和一个状态转移判断部分,用以存储初始状态到状态存储部分和按照较早时间顺序从事件输入序列捕获的事件和在状态存储部分存储的状态、通过参考从状态转移矩阵存储部分读取的状态转移矩阵判断一个矩阵元,以及在从时间信息存储部分读取相应于所确定的矩阵元的时间信息之后将其累积到时间积累部分,在从状态转移矩阵存储部分读取在所确定的矩阵元中说明的转移后的状态后,将其存储到状态存储部分。
另外,一个优选方式是在其中程序开发系统有一个测试脚本文件产生部分,用以从由所述模拟器执行的模拟执行的历史数据、根据通过操纵一个操作部分而输入的所述初始状态和两个或多个事件,产生一个测试脚本文件。
另外,一个优选方式是在其中给模拟器提供一个时间比较部分,用以从事件发生时间减去在时间积累部分当前存储的累积时间,以及如果相减结果为正,则把相减结果作为一个差分时间加到在时间积累部分当前存储的累积时间上,该差分时间为组成所述系统的控制部分指示处理外设操作需要的处理时间和根据处理指令要执行的外设操作需要的处理时间之间的差。
另外,一个优选方式是在其中的状态转移矩阵存储部分存储组成系统的控制部分的操作的一个状态转移矩阵,和由该控制部分控制的外设操作的一个状态转移矩阵,其中,时间信息存储部分存储关于控制部分操作的时间信息和关于外设操作的时间信息,以及其中,模拟器由第一模拟器和第二模拟器组成,第一模拟器积累关于控制部分操作的时间信息,第二模拟器独立于第一模拟器积累关于外设操作的时间信息。
另外,一个优选方式是在其中给该程序开发系统提供:一个生成器,它根据状态转移矩阵产生一个以一种编程语言写的、要结合到所述系统中的一个源程序;一个编译器,它把该源程序变换为一个以机器语言写的目标程序;一个第一计算部分,它通过使组成该系统的控制部分的运算速度乘以组成目标程序的机器语言的代码数目来计算相应于每一矩阵元的时间信息,其中目标程序相应于在状态转移矩阵的每一矩阵元说明的处理或相应于其前和其后的转移。
另外,一个优选方式是在其中给程序开发系统提供:一个生成器,它根据状态转移矩阵产生一个以一种编程语言写的、要结合到所述系统中的一个源程序;一个编译器,它把该源程序变换为一个以机器语言写的目标程序;一个电路内部仿真器或代码模拟器,用以执行目标程序以允许几乎和系统的实际操作一样的处理;和一个第二计算部分,它通过由电路内部仿真器或代码模拟器执行目标程序获得的执行时间计算相应于状态转移矩阵中每一矩阵元的时间信息。
另外,一个优选方式是在其中的时间信息存储部分至少包括下面三个时间信息存储部分中的两个:第一时间信息存储部分,用以存储相应于状态转移矩阵中的每一矩阵元操纵控制部分而输入的时间信息,第二时间信息存储部分,用以存储由第一计算部分相应于状态转移矩阵中的每一矩阵元计算的时间信息,第三时间信息存储部分,用以存储由第二计算部分相应于状态转移矩阵中的每一矩阵元计算的时间信息,还包括一个比较部分,用以使模拟器根据在时间信息存储部分1-3中至少两个中存储的时间信息比较通过积累在模拟时刻的相应时间信息而获得的累积结果。
此外,一个优选方式是在其中时间信息存储部分或者第一时间信息存储部分存储作为具有一定范围的值或者按照在系统性规范中一个允许范围的变量的时间信息,其中当从时间信息存储部分或者从第一时间信息存储部分读取相应于一个特定的矩阵元的时间信息时,模拟器适应于读取最大值、最小值、均值或者从具有一定范围的数值中随机选取的值,或者根据所述变量改变要积累的时间信息。
在上面的叙述中,优选地测试脚本文件取定时图格式、文本格式或者消息序列图格式。
另外,优选地时间信息为在相应矩阵元中说明的处理所需要的处理时间。
另外,一个优选方式是其中的时间信息包括处理时间和为从一个状态或一种处理向另一状态或另一处理转移所需要的额外开销时间。
此外,一个优选方式是其中的额外开销时间是一致的或者根据每一矩阵元或每一转移而变化。
根据本发明的第二方面,提供一种程序开发方法,包括:
使用一个状态转移矩阵存储部分的步骤,该部分具有两个或者多个矩阵元,其由为之开发一个程序的系统所取的状态以及一个作为该系统的外部或者内部的激励的事件指定,以及存储说明要由该系统执行的处理的内容或者转移后状态的一个状态转移矩阵;
使用时间信息存储部分的步骤,用以存储相应于状态转移矩阵中每一矩阵元的时间信息;
获取模拟系统操作所需要的处理时间的步骤,这是通过积累顺序输入的事件和相应于由一个作为初始状态输入的状态和一个转移后状态顺序指定的一个矩阵元的时间信息而实现的。
一个优选方式是在其中包括使用一个输入部分的步骤,用以检测任何指示位置的指定,这些位置中的每一个相应于构成在显示部分显示的状态转移矩阵的两个或者多个事件或状态,以及用以输入关于这些指示位置的位置信息到模拟器,
转换由输入部分输入的位置信息为相应于该显示位置的一个事件代码或者状态代码的步骤;
存储相应于该状态代码的一个状态作为初始状态到状态存储部分的步骤;
根据相应于该事件代码的事件和存储在状态存储部分中的一个状态、参考从状态转移存储部分读取的状态转移矩阵确定一个矩阵元的步骤;
从时间信息存储部分读相应于所确定的矩阵元的时间信息并将其积累在时间积累部分的步骤;
从状态转移矩阵存储部分读在所确定的矩阵元中说明的转移后状态并将其存储在状态存储部分的步骤。
另外,一个优选方式是在其中包括使用一个事件输入部分的步骤,用以输入初始状态和一个测试脚本文件,该测试脚本文件说明在状态转移矩阵中说明的每一事件出现的定时或者组成系统的单元按照规范要执行的操作的定时;
通过以出现时间顺序重新排列由事件输入部分输入的测试脚本文件中的两个或者多个事件,产生一个事件输入序列的步骤;
存储初始状态到状态存储部分的步骤;
根据从事件输入序列中按照较早时间顺序捕获的一个事件和在状态存储部分存储的一个状态、参考从状态转移矩阵存储部分读取的状态转移矩阵,确定一个相应矩阵元的步骤;
从时间信息存储部分读相应于所确定的矩阵元的时间信息并将其积累在时间积累部分的步骤;
从状态转移矩阵存储部分读在所确定的矩阵元中说明的转移后状态并将其存储在状态存储部分的步骤。
另外,一个优选方式是在其中包括产生测试脚本文件的步骤,其为从由模拟器执行的模拟执行的历史数据、根据由操纵一个操作部分而输入的初始状态和两个或者多个事件得出。
另外,一个优选方式是在其中包括从事件的发生时间减去在时间积累部分当前存储的积累时间的步骤,以及如果相减结果为正,则把相减结果作为差分时间加到在时间积累部分当前存储的累积时间上的步骤,该差分时间为组成所述系统的一个控制部分指示处理外设操作需要的时间和根据该处理指令要执行外设操作需要的处理时间之间的差。
另外,一个优选方式是在其中包括存储组成系统的控制部分的操作的一个状态转移矩阵和由该控制部分控制的外设的操作的一个状态转移矩阵到状态转移矩阵存储部分的步骤,存储关于该控制部分操作的时间信息和关于这些外设操作的时间信息到时间信息存储部分的步骤,独立于这些步骤积累关于该控制部分的操作的时间信息和积累关于外设操作的时间信息的步骤。
另外,一个优选方式是在其中包括根据状态转移矩阵产生一个要结合到系统中的、以某种编程语言写的源程序的步骤,把所述源程序转变为以机器语言写的目标程序的步骤,以及计算相应于每一矩阵元的时间信息的步骤,这是通过把组成该系统的控制部分的运算速度乘以组成所述目标程序的机器语言的代码数目实现的,其中目标程序相应于在状态转移矩阵的每一矩阵元中说明的处理或相应于其前和其后的转移。
另外,一个优选方式是在其中包括根据状态转移矩阵产生一个要结合到系统中的、以某种编程语言写的源程序的步骤,把所述源程序转变为以机器语言写的目标程序的步骤,执行该目标程序以及根据由执行该目标程序获得的执行时间计算相应于状态转移矩阵中每一矩阵元的时间信息的步骤。
另外,一个优选方式是在其中包括使用时间信息存储部分的步骤,该时间信息存储部分至少包括下面三个时间信息存储部分中的两个部分:第一时间信息存储部分,用以存储相应于状态转移矩阵中的每一矩阵元操纵控制部分而输入的时间信息,第二时间信息存储部分,用以存储由第一计算部分相应于状态转移矩阵中的每一矩阵元计算的时间信息,第三时间信息存储部分,用以存储由第二计算部分相应于状态转移矩阵中的每一矩阵元计算的时间信息,还包括比较积累结果的步骤,该积累结果是根据存储在时间信息存储部分1-3中至少两个之中的时间信息通过积累模拟时的相应时间信息而获得的。
此外,一个优选方式是在其中包括使用时间信息存储部分或者第一时间信息存储部分的步骤,该存储部分存储作为具有一定范围的值或者按照在系统规范中一个允许范围内的变量的时间信息,当从时间信息存储部分或者从第一时间信息存储部分读取相应于一个指定的矩阵元的时间信息时,读取最大值、最小值、均值或者从具有一定范围的数值中随机选取的值的步骤,或者根据所述变量改变要积累的时间信息的步骤。
另外,一个优选方式是在其中包括使用采取定时图格式、文本文件格式或者消息序列图格式的测试脚本文件的步骤。
另外,一个优选方式是在其中包括使用时间信息的步骤,该时间信息是为执行在一个相应矩阵元中说明的处理所需要的处理时间。
另外,一个优选方式是在其中包括使用时间信息的步骤,该时间信息是从一个状态或一种处理向另一状态或另一处理转移所需要的额外开销时间。
另外,一个优选方式是在其中包括使用额外开销时间的步骤,该额外开销时间是一致的或者根据每一矩阵元或每一转移而变化。
根据本发明的第三方面,提供一种为开发程序而存储程序的存储介质,以便使一个计算机实现在第一方面和第二方面说明的功能。
本发明上面叙述的以及其它的目的、优点和特征从下面的说明并结合附图将更为明显,附图中:
图1是一个方框图,表示在本发明的第一实施例中所示程序开发系统的电气配置;
图2是一个原理图,表示程序为之开发的一个预付卡销售机的粗略结构;
图3是操作组成上述预付卡销售机的CPU的一个状态转移矩阵的例子;
图4表示在组成第一实施例的人-机接口的显示部分显示的一个模拟方式屏幕的例子;
图5是一个流程图,表示第一实施例的模拟器的操作;
图6是一个方框图,表示在本发明的第二实施例中所示程序开发系统的电气配置;
图7是用于本发明第二实施例中模拟的、以文本文件形式的一个测试脚本文件的例子;
图8是一个流程图,表示本发明第二实施例中的模拟操作;
图9是从图7所示测试脚本文件产生的一个事件输入序列的例子;
图10表示本发明第二实施例中模拟结果一例的定时图;
图11表示操作组成预付卡销售机的一个磁头的状态转移矩阵的一个例子,在本发明的第三实施例中为该预付卡销售机开发一个程序;
图12表示用于第三实施例中模拟的、以定时图格式的一个测试脚本文件的例子;
图13表示用于第三实施例中模拟的、以定时图格式的一个测试脚本文件的例子;
图14表示第三实施例的额外开销存储部分结构一例;
图15是表示同一实施例的模拟器操作的流程图;
图16是表示同一实施例的模拟结果一例的定时图;
图17是一个方框图,表示本发明第四实施例的程序开发系统的电气配置;
图18是一个方框图,表示本发明第五实施例的程序开发系统的电气配置;
图19是一个方框图,表示本发明第六实施例的程序开发系统的电气配置;
图20是一个方框图,表示本发明第七实施例的程序开发系统的电气配置;
图21表示用于本发明第二实施例中模拟的、以消息序列图格式的一个测试脚本文件的例子;
图22是一个方框图,表示常规程序开发系统电气配置的一个例子。
下面参考附图、使用各种实施例详细说明实施本发明的最佳方式。
第一实施例
图1是一个方框图,表示本发明第一实施例中所示程序开发系统的电气配置。
如图1所示,在该实施例中的程序开发系统大体由人-机接口11、编辑器12、状态转移矩阵存储部分13、处理时间存储部分14、生成器15、程序存储部分16、输入部分17和模拟器18组成。
人-机接口11由显示部分11a、鼠标11b和键盘11c组成。其用于输入为操作员通过参考显示部分11a的显示内容、通过操作鼠标11b或键盘11c和/或直接输入一个事件产生一个状态转移矩阵所需要的数据(状态、事件、动作、转移后状态),以便使模拟器18根据由一个状态转移矩阵设计的实时控制系统的状态转移矩阵,通过使用鼠标11b的光标键或键盘11c移动光标到在显示部分11a显示的状态转移矩阵的一个事件的显示区域点击或按下回车键,为每一事件执行一个模拟。由模拟器18供给的模拟结果(转移后状态、积累时间等)显示在显示部分11a。处理时间表示为在每一矩阵元说明的动作所需要的时间。
编辑器12用于根据使用人-机接口11输入的状态、事件、动作、转移后状态、累积时间等产生和编辑状态转移矩阵,以及存储该状态转移矩阵上的数据和处理时间到相应的状态转移矩阵存储部分13和处理时间存储部分14中。状态转移矩阵存储部分13和处理时间存储部分14两者都由具有大规模存储容量的存储介质组成,诸如包括RAM的半导体存储器、FD(软盘)、HD(硬盘)等。状态转移矩阵上的数据存储在状态转移矩阵存储部分13,处理时间存储在处理时间存储部分14中。
生成器15用于根据从状态转移矩阵存储部分13读出的一个状态转移矩阵自动生成要结合到实时控制系统中以某种编程语言例如C语言(商标名)描述的程序(源程序),程序存储部分16存储生成的程序。程序存储部分16由具有大规模存储容量的存储介质,诸如包括RAM的半导体存储器、FD或HD组成,并在其中存储该源程序。
输入部分17用于在操作员使用鼠标11b的光标键或者键盘11c移动光标到在显示部分11a显示的状态转移矩阵中某一事件或状态的显示区域后、点击鼠标左键或按下回车键时检测光标位置,并将该位置信息供给分析部分18a。也就是说,在该实施例中的输入部分17用作为某一事件或状态的位置检测部分。
模拟器18大体由分析部分18a、状态转移判断部分18b、时间积累部分18c和状态存储部分18d组成。分析部分18a用于转换由输入部分17供给的位置信息为相应于该位置的事件或状态代码并把结果代码供给状态存储部分18d。也就是说,分析部分18a作为转换位置信息为事件/状态代码的部分。状态转移判断部分18b用于控制模拟器18中的每一构造因子并给状态存储部分18d设定一个相应于由分析部分18a供给的状态代码的状态,作为初始状态,以及根据相应于由分析部分18a供给的事件代码的一个事件和根据存储在状态存储部分18d中的一个状态、通过参考从状态转移矩阵存储部分13读取的状态转移矩阵来判定一个相应的矩阵元。此外,状态转移判断部分18b用于通过将相应于由被确定的矩阵元处理的动作的处理时间从处理时间存储部分14读出,积累该处理时间到时间积累部分18c中。另外,状态转移判断部分18b用于读取由其自身确定的矩阵元中说明的转移后状态,并将其存储在状态存储部分18d,并在每完成一次模拟时把存储在时间积累部分18c中的累积时间和在状态存储部分18d中存储的转移后状态供给人-机接口11。时间积累部分18c和状态存储部分18d由诸如RAM的半导体存储器组成,分别存储累积时间和转移后状态。
下面进一步详细说明具有上述配置的程序开发设备的操作。由该程序开发设备开发的程序假定是一个要结合到如图2所示的预付卡销售机中的程序。这里的预付卡代表一张近似为名片大小的塑料卡,它可以以预定价格购买,并可以用于购物、购买车票等,代替现金。
预付卡销售机大体包括控制机械部分22和操作和显示部分23的控制部分21、发出预付卡的机械部分22、操作和显示部分23,后者由预付卡的购买者参考其显示部分操作。控制部分21大体包括CPU(中央处理单元)24、存储上述程序的ROM25、由CPU24使用执行程序的RAM26、供给由组成机械部分22和操作和显示部分23的每一部件提供的检测信号或中断信号给CPU24的输入端口27、和由机械部分22使用把控制信号供给组成机械部分22的电动机35和37的输出端口28。
机械部分22包括堆卡箱29、卡取出机构30、卡传输机构31、传感器32和33、写磁数据的磁头34a和读磁数据的磁头34b。机械部分22的操作如下。
当购买者把现金塞入操作和显示部分23的现金供给端口(未示出)并按下卡类型指示按钮(未示出)和卡发出指示按钮(未示出)时,驱动与一个滚子和一根皮带一起组成卡取出机构30的电动机,从存储两张或者多张预付卡36的堆卡箱取出一张空白卡36并向下方传输,如图2所示。预付卡36具有一个无磁数据的带形磁条(称为“空白卡”)。然后,当由一个光耦合器或类似物组成的传感器32检测到空白卡36时,电动机35停止,与滚子和皮带一起组成卡传送机构31的电动机37被驱动,把空白卡36在传送路径上向右传送,并把包含购买金额或卡发出日期的数据由安装在传输路径上的磁头34a写在空白卡36的磁条上。为检验当前写的磁数据是否正确,把刚刚写有磁数据的预付卡在图2所示传送路径上向右传送,而磁头34b从该预付卡上读取磁数据。如果读取的数据被判断为正确,则在该预付卡在图2所示传送路径上进一步向右传送且由一个由光耦合器组成的传感器33检测到后,该卡从卡发出端口(未示出)弹出,而且电动机37同时停止。上述机械部分22的操作由CPU24根据存储在ROM25中的一个程序、通过输入端口和输出端口28控制。
假定预付卡销售机的性能说明规定需要15ms发出一张预付卡,操作卡取出机构30需要的处理时间是5ms,操作卡传输机构31需要的处理时间是10ms。另外,假定在一次操作中发出一张预付卡。
为产生图3所示状态转移矩阵,操作员根据上述预付卡销售机的性能要求,通过操作鼠标11b和键盘11c,同时参考组成人-机接口11的显示部分11a的显示,输入必需的数据(状态、事件、动作、转移后状态、处理时间等)。编辑器12使用上述数据建立如图3所示状态转移矩阵,将其在组成人-机接口11的显示部分11a上显示,并将该状态转移矩阵上的数据和处理时间存储在状态转移矩阵存储部分13和处理时间存储部分14的各自指定区域。
参考图3,电动机A和电动机B分别相应于图2所示电动机35和电动机37,标记S1和标记S2分别代表图2中的传感器32和传感器33。在图3中的最上面一行,“电动机A”表示电动机35停止,处于备用状态,等待接收发出预付卡的指令,或者电动机35在驱动状态(以下称为“状态1”);“电动机B:在写”表示电动机37在驱动状态,并且处于磁头34a往空白卡36上正在写磁数据的状态(以下称为“状态2”);“电动机B:在读”表示电动机37在驱动状态,并且处于磁头34b正在读预付卡上的磁数据的状态(以下称为“状态3”);“电动机B:S2备用”表示电动机37在驱动状态,并且处于备用状态,等待预付卡从发出端口被弹出时接收来自传感器33的一个检测信号(以下称为“状态4”)。此外,“电动机B”表示,该状态处于状态2到状态4中上面。
在图3所示矩阵的最左列,“发卡请求”表示,通过买卡人塞入现金或按下一个指定按钮请求发出预付卡(以下称“事件1”);“S1:OFF->ON”表示从传感器32来的检测信号由于空白卡36通过传感器32而从“OFF(关)”变为“ON(开)”(以下称“事件2”);“写:OK”表示接收到一个通知,说明由磁头34a往空白卡36的磁条上写包含购买金额、卡的发行日期等的磁数据的操作正常完成(以下称“事件3”);“写:NG”表示接收到一个通知,说明由磁头34a往空白卡36上写磁数据非正常结束(以下称“事件4”);“读:OK”表示接收到一个通知,说明由磁头34b读预付卡的磁数据正常完成(以下称“事件5”);“读:NG”表示接收到一个通知,说明磁头34b读预付卡的磁数据的操作非正常结束(“以下称“事件6”);“S2:OFF->ON”表示,由于预付卡通过传感器33到达卡发出端口,传感器33的检测信号从OFF(关)改变为ON(开)(以下称“事件7”)。
事件1称为消息型事件,它表示从其它任务或设备接收到一个驱动消息,而事件2和事件7称为标志型事件,它表示读取一个变量或者改变输入/输出。此外,事件3到事件6称为中断事件,它表示从外部接收到一个中断。
在图3所示状态转移矩阵中,如果一个事件和一个状态,例如状态1和事件2,的相交点由一个矩阵元(1,2)表示的话,则由每一矩阵元说明的内容具有下述意义。也就是说在图3的矩阵中所示矩阵元(1,1)中,“电动机A:ON”表示在接收发出一张预付卡的指令的备用状态1,响应通过买卡者供给现金或按下一个指定按钮引发的请求发出一张预付卡的事件1的出现,驱动电动机35以便从堆卡箱29中取出空白卡36的动作。数值(0.5)表示处理上述动作需要的时间为0.5ms。未说明转移后状态的原因是该操作停留在当前状态,亦即在状态1。
在矩阵元(1,2)“电动机A:OFF,电动机B:ON,写”表示下述动作:响应事件2的出现,切换空白卡36的传输从使用卡取出机构30的传输为使用卡传输机构31的传输,事件2表示来自传感器32的一个检测信号由于空白卡36通过传感器32而从“OFF”改变为“ON”;停止电动机35的驱动,以便在空白卡上写磁数据;同时驱动电动机37并进一步请求磁头34a在该卡上写特定磁数据。此外,在矩阵元(1,2)中“=>在写”表示转移后状态是状态2以及数值(4)表示处理上述一系列动作需要的总时间是4ms。
在图3矩阵的矩阵元(1,3)中,标记“/”表示其中无动作要执行以及不发生状态转移。标记“/”的意义和在该表中其它地方的意义相同,因此在其它地方省略其说明。
在矩阵元(2,1)中,“错误消息”表示在磁头34a正往空白卡36上写磁数据的状态2下,如果请求再发出一张预付卡的事件1出现,则因为在规范中规定一次操作只能发出一张预付卡而不可能发出所请求的卡,于是在组成该预付卡销售机的操作和显示部分的显示设备上显示一个消息。在同一矩阵元(2,1)中,符号“=>-”表示该操作停留在当前状态,亦即状态2。数值(1)表示处理上述动作需要的时间为1ms。
在矩阵元(2,3),“读”表示在磁头34a正往空白卡36上写磁数据的状态2,响应磁头34a给出通知(该通知说明磁数据写操作正常)的事件3的出现,请求磁头34b读预付卡刚刚写的磁数据以检查刚才写到预付卡上的磁数据是否正确的动作。在矩阵元(2,3)“=>在读”表示转移后状态是状态3,而数值(1)表示处理上述动作需要的时间为1ms。
在矩阵元(2,4),“写”表示在磁头34a正往空白卡36上写磁数据的状态2,响应由磁头34a给出通知,说明磁数据写操作非正常结束的事件4的出现,请求磁头34a在预付卡上再次写同样磁数据的动作,这些数据曾在对该卡写时出现错误。在同一矩阵元(2,4),符号“=>-”表示该操作停留在当前状态,亦即在状态2。数值(3)表示处理上述动作需要的时间为3ms。
在矩阵元(2,5),“错误复位,写”表示在磁头34a正往空白卡36上写磁数据的状态2,也就是说,正处在请求磁头34a写磁数据的状态,和在磁头34a给出一个通知,说明写磁数据的操作非正常结束的事件5出现的场合,根据对磁头34a和34b出现异常的判断,请求磁头34a和34b执行初始化和再次在预付卡上写同样磁数据的动作。在同一矩阵元(2,5),符号“=>-”表示该操作停留在当前状态,亦即状态2。数值(4)表示处理上述动作需要的时间为4ms。
在矩阵元(2,6),“错误复位,写”表示在磁头34a正往空白卡36上写磁数据的状态2,也就是说,正处在请求磁头34a写磁数据的状态,和在磁头34b给出通知,说明读预付卡磁数据出错的事件6出现的场合,根据对磁头34a和34b出现异常的判断,请求磁头34a和34b执行初始化和再次在预付卡上写同样磁数据的动作。在同一矩阵元(2,6),符号“=>-”表示该操作停留在当前状态,亦即状态2。数值(4)表示处理上述动作需要的时间为4ms。
在矩阵元(3,1),“错误消息”表示在组成该预付卡销售机的操作和显示部分23的一个显示设备上显示一个消息的动作,指出在正从预付卡读磁数据的状态3,如果请求进一步发出一张预付卡的事件1出现,则由于性能说明规定一次操作只能发出一张预付卡,不可能发出所请求的预付卡。在同一矩阵元(3,1),符号“=>-”表示该操作停留在当前状态,亦即状态3。数值(1)表示处理上述动作需要的时间为1ms。
在矩阵元(3,3),“错误复位,读”表示在正从预付卡读磁数据的状态3,也就是说,正处在请求磁头34a读磁数据的状态,和在磁头34a给出通知,说明写预付卡磁数据操作正常的事件3出现的场合,根据对磁头34a和34b出现异常的判断,请求磁头34a和34b执行初始化和再次读预付卡上的磁数据的动作。在同一矩阵元(3,3),符号“=>-”表示该操作停留在当前状态,亦即状态3。数值(2)表示处理上述动作需要的时间为2ms。
在矩阵元(3,4),“错误复位,读”表示在从预付卡读磁数据的状态3,也就是说,正处在请求磁头34a读磁数据的状态,和在磁头34a给出通知,说明写预付卡磁数据出错的事件4出现的场合,根据对磁头34a和34b出现异常的判断,请求磁头34a和34b执行初始化和再次读预付卡上的磁数据的动作。在同一矩阵元(3,4),符号“=>-”表示该操作停留在当前状态,亦即状态3。数值(2)表示处理上述动作需要的时间为2ms。
在矩阵元(3,5),未提供动作和处理时间的说明。这是因为在状态3,此时正在从一张预付卡读磁数据,如果事件5出现,此时磁头34b给出通知,说明从该预付卡读磁数据正常,则可以判断磁数据正常写在要发出的预付卡上,在该矩阵元不需执行任何动作,也不需考虑处理时间。此外,在矩阵元(3,5),“=>S2”表示转移后状态是状态4。
在矩阵元(3,6),“读”表示在正从某预付卡读磁数据的状态3,响应磁头34b给出通知,说明读磁数据出错的事件6的出现,请求磁头34b从该预付卡读磁数据的动作,其曾在读磁数据时出错。在同一矩阵元(3,6),符号“=>-”表示该操作停留在当前状态,亦即状态3。数值(1)表示处理上述动作需要的时间为1ms。
在矩阵元(4,7),“电动机B:OFF”表示在电动机37被驱动期间准备接收由传感器33供给检测信号的备用状态4,响应由于预付卡通过传感器33到达发卡端口,传感器33供给的检测信号从OFF改变为ON状态的事件7的出现,停止驱动电动机37以准备请求发出下一预付卡的动作。“=>电动机A”表示转移后状态是状态1。数值(0.5)表示处理上述动作需要的时间为0.5ms。
然后,当操作员根据上述预付卡销售机的性能说明操作组成人-机接口11的鼠标11b或键盘11c,并根据上述状态转移矩阵使用模拟器18把该程序开发系统置于模拟方式以便为每一事件执行模拟时,在显示部分11a上出现一个模拟方式屏幕,如图4所示。
下面参考示于图5的流程图叙述在获得为空白卡36通过传感器32之后通过传感器33CPU24需要的处理时间时输入部分17和模拟器18的操作以及操作员采取的步骤。
操作员使用鼠标11b的光标键或者键盘11c移动光标到显示在图4所示模拟方式屏幕上部的一个模拟开始区域,点击鼠标左按钮或者按下回车键,从而给模拟器18提供一条开始模拟指令。响应这一指令,状态转移判断部分18b前进到步骤SA1准备处理,在清除时间积累部分18c存储的内容为0ms后,进一步前进到步骤SA2。
此外,操作员使用鼠标11b的光标键或者键盘11c移动光标到一个状态的显示区域,该状态作为要执行的模拟的一个初始状态,其从示于图4的模拟方式屏幕左侧的状态转移矩阵中提供的两个或者多个状态中选择(在该例中为状态1,此时电动机35被驱动,亦即图4中的“电动机A”),并点击鼠标的左按钮或者按下回车键。
然后输入部分17检测位于由操作员选择的状态显示区域中的光标位置,并将其位置信息供给分析部分18a,分析部分18a变换输入部分17提供的位置信息为相应于上述位置(在该例中为状态1)的一个状态代码,并将其供给状态转移判断部分18b。在步骤SA2,状态转移判断部分18b设定相应于由分析部分18a供给的状态代码的状态(在该例中为状态1)作为初始状态到状态存储部分18d,并在使其在显示部分11a显示后,前进到步骤SA3。
此外,操作员使用鼠标11b的光标键或者键盘11c移动光标到一个希望发生的事件的显示区域,该希望事件是从显示在图4的模拟方式屏幕左侧的状态转移矩阵中提供的两个或者多个状态中选择的,点击鼠标的左按钮或者按下回车键。
然后输入部分17检测位于由操作员选择的事件区域中的光标位置,并将其位置信息供给分析部分18a,分析部分18a变换输入部分17提供的位置信息为相应于上述位置的一个事件代码,并将其供给状态转移判断部分18b。在操作员使用鼠标11b的光标键或者键盘11c移动光标到事件2的显示区域时,输入部分17检测位于事件2的显示区域的光标位置,并将其位置信息供给分析部分18a,然后分析部分18a变换由输入部分17提供的位置信息为相应于该位置的事件2的事件代码,将其供给状态转移判断部分18b。事件2为传感器32的检测信号由于空白卡36通过传感器32而由OFF改变为ON状态(图4中的S1:OFF->ON)。
在步骤SA3,当操作员使用鼠标11b的光标键或者键盘11c移动光标到“结束”区域并当点击或按下鼠标左按钮时,状态转移判断部分18b判断是否提供结束模拟的指令。“结束”区域提供结束模拟的指令,其显示在模拟方式屏幕的上部。如果判断结果是“是”,则状态转移判断部分18b结束模拟处理。
否则,如果判断结果为“否”,亦即如果操作员未提供结束模拟的指令,则状态转移判断部分18b前进到步骤SA4。在该例中,因为事件2的事件代码已供给状态转移判断部分18b,因此在步骤SA3的判断结果为“否”,状态转移判断部分18b前进到步骤SA4。
在步骤SA4,状态转移判断部分18b判断分析部分18a供给的代码是否是一个事件代码。如果判断结果为“否”,则返回步骤SA3,然而,如果在步骤SA4的判断结果是“是”,亦即由分析部分18a提供的代码是一个事件代码,则状态转移判断部分18b前进到步骤SA5。在该例中,因为给状态转移判断部分18b提供了事件2的事件代码,因此在步骤SA4的判断结果为“是”,状态转移判断部分18b前进到步骤SA5。
在步骤SA5,状态转移判断部分18b通过参考从状态转移矩阵存储部分13读出的状态转移矩阵,根据相应于由分析部分18a提供的事件代码的事件和存储在状态存储部分18d中的状态,在确定一个相应的矩阵元之后,前进到步骤SA6。在这一点,因为分析部分18a提供了事件2的事件代码,而在状态存储部分18d中存储了状态1,因此状态转移判断部分18b通过参考状态转移矩阵,确定一个矩阵元(1,2)。此外,如果操作员希望事件3出现,亦即由磁头34a给出通知,说明写磁数据正常结束的事件发生,虽然在步骤SA5确定矩阵元(1,3),但是因为矩阵元(1,3)的说明符为“/”,表示不采取动作,也不发生状态转移,因此状态转移判断部分18b不执行步骤SA6到SA8的处理,通过步骤SA3返回到步骤SA4,处于接收下一事件的备用状态。
在步骤SA6,状态转移判断部分18b在检验于步骤SA5确定的矩阵元处理的动作的功能,从处理时间存储部分14读相应于该动作的处理时间,使该时间积累在时间积累部分18c之后,前进到步骤SA7。在该例中,状态转移判断部分18b检验由矩阵元(1,2)处理的停止驱动电动机35、驱动电动机37以及请求磁头34a写磁数据的动作的功能,并在从处理时间存储部分14读相应于该动作的处理时间(4ms)和将读取的处理时间加到累积时间(0ms)后,把加起来的时间积累到时间积累部分18c。在步骤SA7,状态转移判断部分18b在从状态转移矩阵存储部分13读取由在步骤SA5确定的一个矩阵元说明的转移后状态并将其存储在状态存储部分18d之后,前进到步骤SA8。在该例中,因为矩阵元(1,2)具有说明符“=>在写”,表示转移后状态是状态2且状态2的信息存储在状态转移矩阵存储部分13中,因此状态转移判断部分18b从状态转移矩阵存储部分13读出状态2并将其存储在状态存储部分18d。
在步骤SA8,状态转移判断部分18b把在时间积累部分18c中积累的时间和在状态存储部分18d中存储的转移后状态供给人-机接口11,并在使其在显示部分11a显示后,返回到步骤SA3。在该例中,因为作为累积时间的4ms存储在时间积累部分18c中,而作为转移后状态的状态2存储在状态存储部分18d中,因此它们被显示在图4所示人-机接口11的显示部分11a。
状态转移判断部分18b重复步骤SA4到SA8的处理,直到在步骤SA3的判断结果为“否”。
如果选择“写:OK”即事件3作为操作员下一希望出现的事件,因为从前次模拟得出的转移后状态是状态2,因此确定矩阵元(2,3)并加上“1ms”的时间,相加得到的“5ms”的累积时间存储到时间积累部分18c,而转移后状态亦即状态3存储到状态存储部分18d中。以同样的方式,如果选择“读:OK”即事件5作为操作员下一希望出现的事件,因为从前次模拟得出的转移后状态是状态3,因此确定矩阵元(3,5),然而由于在矩阵元(3,5)未说明处理时间,因此先前的累积时间“5ms”保留在时间积累部分18c中,后继转移的位置处的状态“S2备用”,亦即状态4存储在状态存储部分18d中。此外,如果选择“S2:OFF->ON”,亦即事件7作为操作员下一希望出现的事件,因为从前次模拟得出的转移后状态是状态4,因此确定矩阵元(4,7),加上“0.5ms”后得到的累积时间“5.5ms”存储在时间积累部分18c,而转移后状态的“电动机A”,亦即状态1存储在状态存储部分18d中。
上述操作模拟器18获得的“5.5ms”的累积时间是CPU24在从矩阵元(1,2)->矩阵元(2,3)->矩阵元(3,5)->矩阵元(4,7)的状态转移期间需要的处理时间。另一方面,预付卡通过传感器32之后通过传感器33需要的时间根据物理因素和按照设计说明确定,这些物理因素有电动机37的转速或转矩或者预付卡的移动距离,而设计说明例如为“10±1ms”。作为结果,这表示CPU的处理在10ms内完成,在此期间预付卡通过卡传送机构31。
从图3还可以理解,为了在模拟中看到由于在往预付卡上写磁数据或从其上读磁数据出错而执行重写和重读处理,把矩阵元(2,4)(重写动作)和矩阵元(3,6)(重读动作)加到上述矩阵元(1,2)->矩阵元(2,3)->矩阵元(3,5)->矩阵元(4,7)的状态转移上。这得出累积时间为“9.5ms”。
这一结果与性能要求确定的低限需求“9ms”不符,引起操作员复查为CPU用的程序或者卡传送机构31的设计。
因此,如果在模拟中不能看到符合性能要求执行处理,则操作员通过参考组成人-机接口11的显示部分11a和操作鼠标11b或者键盘11c改变在图3所示状态转移矩阵每一矩阵元说明的处理时间为由性能要求规定的一个允许范围内的水平,并通过使用模拟器18再次观察模拟的执行,检验处理的执行是否符合性能要求。
在上面的叙述中,提供了由操作员使用鼠标11b或者键盘11c为每一事件选择一个事件而执行模拟的一个例子,然而,通过提供以一个选择的事件的顺序(以下称“输入事件日志”)存储数据到输入部分17的设备,可以通过使用输入的事件日志执行后继模拟。
这样,根据本实施例的配置,由于能够根据为在状态转移矩阵中每一矩阵元中说明的每一动作设定的处理时间执行模拟,因此允许该模拟在基本设计阶段符合性能要求,缩短开发时间和改进质量。
第二实施例
图6是一个方框图,表示本发明第二实施例中所示的一个程序开发系统的电气配置。
本实施例的程序开发系统大体包括人-机接口41,编辑器42,状态转移矩阵存储部分43,处理时间存储部分44,额外开销时间存储部分45,测试脚本存储部分46,生成器47,程序存储部分48,事件输入部分49,模拟器50和模拟结果存储部分51。人-机接口41包括显示部分41a、鼠标41b和键盘41c,用于让操作员参考显示部分41a的指示和驱动鼠标41b或者键盘41c输入建立一个状态转移矩阵所需要的数据(状态,事件,动作,转移后状态,处理时间等),根据由该状态转移矩阵设计的一个实时控制系统的状态转移矩阵执行模拟需要的额外开销时间和事件给模拟器50,以及用于使从模拟结果存储部分51读出的结果(转移后状态,累积时间等)显示在显示部分41a。额外开销时间表示为完成从一个状态或者动作向另一状态或动作转移所需要的时间。例如,当CPU检测到一个中断请求,需要时间存储CPU内一个寄存器的内容到堆栈、设定一个中断地址到程序计数器和取要中断的程序,亦即需要时间来完成不是在每一矩阵元说明的那些动作的时间。这一时间称为“额外开销时间”。在从被中断处理恢复操作时也需要额外开销时间。由于在第一实施例中的模拟是粗略的,因此未考虑额外开销时间,然而,在第二实施例中,由于执行更实际的模拟,仿佛实际操作系统,因此在处理中考虑这一额外开销时间。在该实施例中,额外开销时间统一设定为0.5ms。
编辑器42用于根据使用人-机接口41输入的一个状态、动作、转移后状态、处理时间等产生和编辑状态转移矩阵,以及分别存储该状态转移矩阵上的数据和处理时间以及额外开销时间到状态转移矩阵存储部分43、处理时间存储部分44、额外开销时间存储部分45中。
此外,编辑器42还用于建立和编辑测试脚本文件,其用于指示模拟器50根据通过使用人-机接口41输入的事件等执行模拟和存储该文件到测试脚本存储部分46。测试脚本文件表示一个以定时图、文本文件或者消息序列图形式的文件,它说明每一事件发生的定时或者实时控制系统的构造因子操作的定时,用以指示模拟器50根据按照该状态转移矩阵设计的一个实时控制系统的状态转移矩阵执行模拟。在这一实施例中,使用文本文件形式的测试脚本文件作为测试脚本文件,其示于图7。
状态转移矩阵存储部分43、处理时间存储部分44、额外开销时间存储部分45和测试脚本存储部分46中的每一个都是由诸如RAM的半导体存储器和具有大规模容量诸如FD、HD等的存储器介质组成,分别存储状态转移矩阵中的数据、处理时间、额外开销时间和测试脚本文件。
生成器47用于根据从状态转移矩阵存储部分43读出的状态转移矩阵中的数据自动生成一个要结合到实时控制系统中以一种编程语言描述的程序(源程序),生成的程序存储在程序存储部分48。程序存储部分48由诸如RAM等的半导体存储器,和具有大规模存储容量的存储介质,诸如FD、HD等组成,用于在其中存储源程序。
事件输入部分49从测试脚本存储部分46读测试脚本文件并将其供给模拟器50。
模拟器50大体包括事件分析部分50a、状态转移判断部分50b、时间积累部分50c、状态存储部分50d和时间比较部分50e成。事件分析部分50a用于以出现时间顺序重新排列由事件输入部分49供给的测试脚本文件的两个或者多个事件,并产生一个在后面将要叙述的事件输入序列(参考图9),以及将其供给状态转移判断部分50b。
状态转移判断部分50b控制模拟器50中的每一构造因子并且根据从事件分析部分50a供给的一个事件输入序列和存储在状态存储部分50d中的状态、参考从状态转移矩阵存储部分43读出的状态转移矩阵确定一个相应的矩阵元。状态转移判断部分50b用于从处理时间存储部分44读取相应于由所确定的矩阵元处理的动作的处理时间并将其积累到时间积累部分50c,还从额外开销时间存储部分45读取从在矩阵元中当前存在的状态转移到作为转移后状态指定的状态需要的额外开销时间并将其积累到时间积累部分50c中。状态转移判断部分50b用于从状态转移矩阵存储部分43读取转移后状态,并将其存储在状态存储部分50d中,并在完成该次模拟时把存储在时间积累部分50c中的累积时间和在状态存储部分50d中存储的转移后状态作为模拟结果存储在模拟结果存储部分51中。时间积累部分50c和状态存储部分50d都是由诸如RAM等的半导体存储器组成,分别存储累积时间和转移后状态。
时间比较部分50e用于从具有由事件分析部分50a产生的事件输入序列的一个事件发生时的时间减去当前存储在时间积累部分50c中的累积时间,以及如果计算结果为正,则将计算结果作为差分时间加到当前存储在时间积累部分50c中的累积时间上。
当CPU发布指令,请求一个外设执行处理,该外设响应该指令执行处理需要的时间通常要比CPU给该外设指令需要的时间长。它们之间的时间差称为“差分时间”。例如,CPU为完成图1所示状态转移矩阵的一个矩阵元(1,1)中的动作“电动机A:ON”需要的时间为1ms,包括额外开销时间;而由卡取出机构30从堆卡箱29取出的空白卡到达传感器32需要的时间为5ms。由于所需要的5ms由卡取出机构30的结构限制物理决定,因此它不可能改变,除非电动机35的驱动容量或者卡通过的距离改变。CPU需要的1ms的处理时间和卡取出机构需要的5ms之间的时间差是差分时间。
在第一实施例中执行的模拟中,只考虑了CPU需要的处理时间。然而,在安装待开发程序的实时控制系统中,因为不仅必须考虑由CPU需要的处理时间,而且要考虑外设需要的操作时间,因此上述实施例不能提供系统更实际操作的模拟。因此,在本实施例中,执行考虑差分时间的模拟。
模拟结果存储部分51由诸如RAM的半导体存储器和具有大规模存储容量的存储器介质诸如FD、HD等组成,其中存储包括累积时间和转移后状态的模拟结果。
以下叙述本实施例中的程序开发系统的操作。由该程序开发系统要开发的程序是一个要结合到图2所示预付卡销售机中的一个程序,和在第一实施例一样,因此,预付卡销售机的性能说明与第一实施例中的一样。
操作员参考在组成人-机接口41的显示部分41a的指示和驱动鼠标41b或者键盘41c输入数据(状态,事件,动作,转移后状态,处理时间等),用以根据上述预付卡销售机的操作和性能要求产生状态转移矩阵。这将允许编辑器42产生状态转移矩阵并将其显示在组成人-机接口41的显示部分41a,以及然后把该状态转移矩阵和处理时间存储在状态转移矩阵存储部分43和处理时间存储部分44的指定存储器区域。状态转移矩阵和第一实施例中的状态转移矩阵相同(图3),因此省略其说明。
操作员通过参考组成人-机接口41的显示部分41a的指示和驱动鼠标41b和键盘41c输入下面将要叙述的事件、发生时间和其它数据(以下称模拟数据),以便指示模拟器50根据上述状态转移矩阵按照上面的预付卡销售机的性能要求执行模拟。
假定在接收发出一张预付卡的指令的备用状态1,在请求发出该预付卡的事件1出现后5ms、检测信号从ON改变为OFF的事件2发生后1ms,检测信号从OFF改变为ON状态。此外,假定在接收到写磁数据的请求后1ms,磁头34a通知该动作正常完成,在接收到读磁数据的请求后1ms,磁头34b通知该动作正常完成;亦即,事件3和事件5发生。再假定,在从传感器33接收一个检测信号的备用状态4,在事件1发生后15ms,传感器33的检测信号从OFF改变为ON状态,以及1ms后,检测信号再次转变为OFF状态的事件7发生。
操作员参考在组成人-机接口41的显示部分41a的指示和驱动鼠标41b和键盘41c输入一种操作状态的数据(以下称检验数据)按照性能要求显示,以便与模拟结果比较。
按照性能说明,电动机35被驱动,直到事件1发生后过去5ms,而电动机37在事件1发生后仅在从5ms到14-16ms期间被驱动。
上述模拟数据和检验数据在编辑器42被编辑为诸如图7所示测试脚本文件的一个文本文件,并存储在测试脚本存储部分46。参考图7,“初态:ST1”表示在模拟开始时间的初始状态是状态1。“事件:”表示一事件的出现并不伴随一状态的改变;例如“C_RQ”是发出一张预付卡的请求。“对象:”表示在“:”后写的部件、设备等是该段中一个要模拟或验证的对象。例如,“S1”表示传感器32的一个状态改变的说明。“特性:”表示,该段中的数据是模拟数据(TEST)还是检验数据(VERIFY)。“时间:”表示,在该行下说明的一个状态改变时的时间是绝对时间(ABS)还是相对时间(REL)。在“事件:C_RQ”的段落中的“ABS(0)”表示,请求发出一张预付卡的事件发生在绝对时间0ms。“从:”和“到:”分别表示一个事件的源和该事件的发生被传送到的地方。“状态改变:”表示该对象的状态怎样按照在标记“:”后说明的一个陈述随通过时间改变。例如,“0(OFF)->5(ON)->6(OFF)”表示,在0ms时状态为OFF,5ms后ON,而在6ms时又为OFF。此外,测试脚本文件在考虑上述差分时间下产生。
当操作员为根据上面的预付卡销售机的性能说明操作组成人-机接口41的鼠标41b或者键盘41c使模拟器50执行模拟,将该程序开发系统置于一种模拟方式时,提供有“开始”区域以指示显示部分41a开始模拟的模拟方式窗口被显示。
参考图8所示流程图,叙述在购买者按下操作和显示部分23的发卡指令按钮(未示出)后,为获得为发出一张预付卡CPU所需要的处理时间时模拟器50的操作和操作员要做的动作。
操作员使用鼠标11b的光标键或者键盘11c移动光标到提供开始在模拟方式窗口显示的模拟的指令的“开始区域”,并通过点击鼠标11b的左按钮或按下回车键,指示模拟器50开始模拟。这将允许状态转移判断部分50b前进到步骤SB1,清除时间积累部分50c的内容为0ms,然后前进到步骤SB2。状态转移判断部分50b在步骤SB2读由事件输入部分49供给的测试脚本文件的标题行语句,设定一个相应状态作为初始状态给状态存储部分18d,并前进到步骤SB3。在该例中,“初态:ST1”作为图7所示测试脚本文件中的标题行语句说明,把状态1作为初始状态设定到状态存储部分50d。
在步骤SB3,状态转移判断部分50b判断是否存在要从事件输入部分49输入到事件分析部分50a的一个测试脚本文件。如果在步骤SB3所做的判断是“是”,亦即存在一个测试脚本文件要从事件输入部分49输入到事件分析部分50a,则状态转移判断部分50b在把该测试脚本文件从事件输入部分49输入到事件分析部分50a之后,前进到步骤SB4。在该例中,因为图7所示测试脚本文件存储在测试脚本存储部分46中,所以在步骤SB3形成的判断为“是”,状态转移判断部分50b把该测试脚本文件从事件输入部分49输入到事件分析部分50a。在步骤SB4,事件分析部分50a产生一个事件输入序列(参见图9),它是通过以发生时间顺序重新排列从事件输入部分49输入的测试脚本文件中的两个或者多个事件而得到的,并在将其供给状态转移判断部分50b之后,前进到步骤SB5。在该例中,图9所示事件输入序列从图7所示测试脚本文件产生。
在步骤SB5,状态转移判断部分50b以较早时间顺序从事件分析部分50a读该事件输入序列,并判断是否要产生一个事件。如果判断结果是“是”,则状态转移判断部分50b从要产生的事件获取时间上最早的一个事件和发生时间后,前进到步骤SB6。
反之,如果在步骤SB5的判断结果为“否”,则以较早时间顺序扫描事件输入序列,如果不存在要产生的事件,则可判定基于测试脚本文件的模拟完成,操作返回步骤SB3,判断是否存在测试脚本文件要被测试。在该例中,该模拟是根据图7所示测试脚本文件第一要被执行的模拟,以及因为在从事件分析部分50a读取的事件输入序列中存在一个要产生的事件,因此在步骤SB5的判断结果是“是”,状态转移判断部分50b在从图9所示事件输入序列中获取最早事件“C_RQ”及其发生时间(0ms)之后,前进到步骤SB6。
在步骤SB6,状态转移判断部分50b通过参考从状态转移矩阵存储部分13读取的状态转移矩阵判断被捕获的事件是否是一个要模拟的对象。如果判断结果为“否”,则状态转移判断部分50b返回步骤SB5。反之,如果在步骤SB6的判断结果为“是”,亦即被捕获的事件是在状态转移矩阵说明的某一事件且是一个将要被模拟的对象,则状态转移判断部分50b前进到步骤SB7。在该例中,事件“C_RQ”作为事件1说明,以及由于它是一个要被模拟的对象,因此它在步骤SB6被判断为“是”。
在步骤SB7,时间比较部分50e从状态转移判断部分50b捕获的事件出现的时间减去在时间积累部分中当前存储的累积时间,并判断相减结果是否为正,亦即是否存在差分时间。如果结果判断为“否”,则时间比较部分50e前进到SB9。如果结果判断为“是”,亦即存在差分时间,则时间比较部分50e前进到步骤SB8。在该例中,事件1是请求发出一张预付卡的事件,且与CPU24指示外设执行处理的指令无关,因此无差分时间,在步骤SB7的判断结果为“否”,时间比较部分50e前进到步骤SB9。
在步骤SB8,时间比较部分50e把该差分时间加到在时间积累部分50c中当前存储的累积时间上,并在存储相加结果到时间积累部分50c之后,前进到步骤SB9。
在步骤SB9,状态转移判断部分50b在根据从事件分析部分50a捕获的一个事件和存储在状态存储部分18d中的一个状态、参考从状态转移矩阵存储部分13读取的状态转移矩阵,确定一个矩阵元之后,前进到步骤SB10。在该例中,状态转移判断部分50b由于事件1从事件分析部分50a中被捕获,而且状态1被存储在状态存储部分50d,通过参考状态转移矩阵,确定矩阵元(1,1)。
在步骤SB10,状态转移判断部分50b把从额外开销时间存储部分45读取的额外开销时间加到在时间积累部分50c中积累的累积时间上,存储相加结果到时间积累部分50c,并前进到步骤SB11。在该例中,状态转移判断部分50b把从额外开销时间存储部分45中读取的额外开销时间(0.5ms)加到现在在时间积累部分50c中存储的累积时间(0ms)上,存储相加结果(0.5ms)到时间积累部分50c中。
在步骤SB11,状态转移判断部分50b在检验由在步骤SB9确定的一个矩阵元要处理的动作的功能和从处理时间存储部分44读取相应于该动作的处理时间并将其加到在时间积累部分50c中存储的累积时间上,以及然后存储该相加结果到时间积累部分50c之后,前进到步骤SB12。在该例中,状态转移判断部分50b检验由矩阵元(1,1)处理的驱动电动机35的动作的功能、从处理时间存储部分44读相应于该动作的处理时间(0.5ms)、累加到至今存储在时间积累部分50c中的累积时间上,然后将相加结果(1ms)存储到时间积累部分50c中。
在步骤SB12,状态转移判断部分50b从状态转移存储部分43读在步骤SB9确定的矩阵元中说明的转移后状态,将其存储在状态存储部分50d中。在该例中,由于转移后状态在矩阵元(1,1)中未说明,因此转移后状态不改变,状态1依然存储在状态存储部分18d中。
在步骤SB13,状态转移判断部分50b存储在时间积累部分积累的时间和在状态存储部分50d存储的转移后状态作为模拟结果到模拟结果存储部分51,然后返回步骤SB5。在该例中,累积时间(1ms)和转移后状态(状态1)作为模拟结果存储到模拟结果存储部分51中。
另一方面,如果在步骤SB3的判断结果为“否”,亦即测试脚本文件不继续从事件输入部分49输入到事件分析部分50a,则状态转移判断部分50b判定基于在测试脚本存储部分46存储的全部测试脚本文件的模拟结束,并前进到步骤SB14。
在步骤SB14,状态转移判断部分50b读存储在模拟结果存储部分51中的模拟结果,将其供给人-机接口41,然后结束该模拟处理。在这样做时,在人-机接口41的显示部分41a显示当前获得的模拟结果。
参考图9,下面叙述事件输入序列中事件“C_RQ”后较早时间发生的事件和之后发生的事件以及相应于这些事件的模拟。此外,在下面的叙述中,虽然省略图8所示流程图中每一步骤的处理的详细说明,但是在重复步骤SB3到SB13的处理后,不需说,最终要执行步骤SB14的处理。
首先,状态转移判断部分50b通过参考图9中的事件输入序列,捕获事件“S1:OFF->ON”和出现时间(5ms)。由于事件“S1:OFF->ON”作为图3所示状态转移矩阵中的事件2说明且是一个要模拟的对象,因此,时间比较部分50e从事件2的发生时间(5ms)减去当前存储在时间积累部分50c中的累积时间(1ms)。因为相减结果为正(4ms),因此,时间比较部分50e在把该差分时间(4ms)加到当前存储在时间积累部分50c中的累积时间(1ms)之后,把相加结果(5ms)存储到时间积累部分50c中。
状态转移判断部分50b在根据从事件分析部分50a捕获的事件2和在状态存储部分18d中存储的状态1、参考状态转移矩阵确定矩阵元(1,2)之后,从额外开销时间存储部分45读额外开销时间(0.5ms),将其加在存储在时间积累部分50c中的累积时间(5ms)上,然后将该相加结果(5.5ms)存储到时间积累部分50c中。状态转移判断部分50b在检验在矩阵元(1,2)中要被处理的停止驱动电动机35和开始驱动电动机37以及请求磁头34a写磁数据的动作的功能后,从处理时间存储部分44读累积时间(4ms)并将其加到现在存储在时间积累部分50c中的累积时间(5.5ms)上,然后将该相加结果(9.5ms)存储到时间积累部分50c。
状态转移判断部分50b在从状态转移矩阵存储部分43读取在矩阵元(1,2)中说明的转移后状态并将其存储在状态存储部分50d之后,存储在时间积累部分50c中积累的时间(9.5ms)和在状态存储部分50d中存储的转移后状态(状态2)作为模拟结果到模拟结果存储部分51。
状态转移判断部分50b参考图9所示事件输入序列捕获状态“S1:ON->OFF”及其发生时间(6ms),然而,事件“S1:ON->OFF”未在图3所示状态转移矩阵中说明且不是一个要模拟的对象,所以再次参考事件输入序列,捕获事件“写OK”和发生时间(*)。虽然事件“写OK”在图3所示状态转移矩阵中作为事件3说明,且是一个要被模拟的对象,但是出现时间(*)表示事件“写OK”的处理后继先前的处理执行,不产生差分时间。
然后,状态转移判断部分50b在根据从事件分析部分50a捕获的事件3和存储在状态存储部分18d中的状态(状态2)、参考图3所示状态转移矩阵确定矩阵元(2,3)之后,从额外开销时间存储部分45读取额外开销时间(0.5ms),将其加到存储在时间积累部分50c中的累积时间(9.5ms)上,以及把该相加结果(10ms)存储到时间积累部分50c中。状态转移判断部分50b检验由矩阵元(2,3)处理的、请求磁头34b读取一张预付卡的磁数据的动作的功能,从处理时间存储部分44读取处理时间(1ms),将其加到当前存储在时间积累部分50c中的累积时间(10ms)上,并把该相加结果(11ms)存储到时间积累部分50c。
状态转移判断部分50b在从状态转移矩阵存储部分43读取在矩阵元(2,3)中说明的转移后状态(状态3)并将其存储到状态存储部分50d之后,存储在时间积累部分50c中累积的时间(11ms)和转移后状态(状态3)作为模拟结果到模拟结果存储部分51。
状态转移判断部分50b通过参考事件输入序列,捕获事件“读OK”和发生时间(*)。
虽然事件“读OK”在图3所示状态转移矩阵中作为事件5说明且是一个要被模拟的对象,但是发生时间(*)表示事件“读OK”的处理后继先前的处理执行,不产生差分时间。
然后,状态转移判断部分50b在根据从事件分析部分50a捕获的事件5和存储在状态存储部分18d中的状态(状态3)、参考图3所示状态转移矩阵确定矩阵元(3,5)之后,从额外开销时间存储部分45读取额外开销时间(0.5ms),将其加到存储在时间积累部分50c中的累积时间(11ms)上,以及然后把相加结果(11.5ms)存储到时间积累部分50c中。状态转移判断部分50b虽然由于在矩阵元(3,5)不存在任何动作要被处理而不检验某一动作的功能,但是它从处理时间存储部分44读取处理时间(0ms),将其加到时间积累部分50c中当前存储的累积时间(11.5ms)上,并把该相加结果(11.5ms)存储到时间积累部分50c中。
状态转移判断部分50b在从状态转移矩阵存储部分43读取在矩阵元(3,5)中说明的转移后状态(状态4)并将其存储到状态存储部分50d之后,存储在时间积累部分50c中累积的时间(11.5ms)和在状态存储部分50d中存储的转移后状态作为模拟结果到模拟结果存储部分51中。
状态转移判断部分50b参考图9所示事件输入序列捕获状态“S2:OFF->ON”及其发生时间(15ms)。事件“S2:OFF->ON”在图3中的状态转移矩阵中作为事件7说明且是一个要模拟的对象,时间比较部分50e从事件7的发生时间(15ms)减去当前存储在时间积累部分50c中的累积时间(11.5ms)。因为相减结果为正(3.5ms),因此,时间比较部分50e在把该差分时间(3.5ms)加到当前存储在时间积累部分50c中的累积时间(11.5ms)之后,把相加结果(15ms)存储到时间积累部分50c中。
然后,状态转移判断部分50b在根据从事件分析部分50a捕获的事件7和存储在状态存储部分18d中的状态(状态4)、参考图3所示状态转移矩阵确定矩阵元(4,7)之后,从额外开销时间存储部分45读取额外开销时间(0.5ms),将其加到存储在时间积累部分50c中的累积时间(15ms)上,以及然后把相加结果(15.5ms)存储到时间积累部分50c中。
状态转移判断部分50b检验矩阵元(4,7)处理的停止电动机37的动作的功能,从处理时间存储部分44读处理时间(0.5ms)并将其加到积累在时间积累部分50c中的时间(15.5ms)上,然后将该相加结果(16ms)存储到时间积累部分50c。
然后,状态转移判断部分50b在读取在矩阵元(4,7)中说明的转移后状态(状态1)并将其存储到状态存储部分50d之后,存储在时间积累部分50c中累积的时间(16ms)和在状态存储部分50d中存储的转移后状态(状态1)作为模拟结果到模拟结果存储部分51中。
虽然状态转移判断部分50b参考图9所示事件输入序列捕获事件“S2:ON->OFF”及其发生时间(16ms),然而,事件“S2:ON->OFF”未在图3所示状态转移矩阵中说明且不是一个要模拟的对象,所以再次参考示于图9的事件输入序列。然而由于图9所示所有事件输入序列已发生,所以状态转移判断部分50b判断,基于一个测试脚本文件的模拟完成。
上述模拟是一个往预付卡上写磁数据和从其读磁数据以一次操作完成的例子,其状态转换如下:矩阵元(1,1)->矩阵元(1,2)->矩阵元(2,3)->矩阵元(3,5)->矩阵元(4,7)。这在后面称为“模拟结果1”。
如果执行一次模拟,其中在往预付卡上写磁数据和从其读磁数据时均出现一次错误,则状态转换如下:矩阵元(1,1)->矩阵元(1,2)->矩阵元(2,4)->矩阵元(2,3)->矩阵元(3,6)->矩阵元(3,5)->矩阵元(4,7)。这里未提供基于这些的测试脚本文件、事件输入序列和模拟器50的操作,然而累积时间(16.5ms)以和上述同样方式获得。这在后面称为“模拟结果2”。
事先在测试脚本存储部分46中存储两次模拟的两个测试脚本文件。当基于这两个文件的一次模拟完成时,状态转移判断部分50b读取存储在模拟结果存储部分51中的模拟结果,在其被供给人-机接口41之后,模拟结束。如图10所示,这将允许在人-机接口41的显示部分41a上以定时图显示模拟结果。
图10(a)到(e)表示在图3所示状态转移矩阵中的事件1、事件2、事件3、事件4、事件5和事件7发生定时的模拟数据的波形,图10(f)到(g)表示驱动电动机35(电动机A)和电动机37(电动机B)的一个信号发生定时的检验数据的波形。这些从图7所示测试脚本文件产生。图10(h)和(i)分别表示模拟结果1和模拟结果2,图10(j)是表示驱动电动机37(电动机B)的一个信号的发生定时的波形。图10(g)和图10(j)之间的比较表示,驱动电动机37(电动机B)的信号的ON/OFF切换定时的公差范围在图10的场合在15±1ms之间,而在图10(j)的场合甚至在过去16ms后驱动信号仍保持为ON,亦即模拟结果2不符合性能要求。
这样,允许操作员重复模拟,直到根据模拟结果2和参考在组成人-机接口41的显示部分41a上显示的状态转移矩阵(图3),通过操作鼠标41b或者键盘41c,以便通过改变在组成状态转移矩阵的每一矩阵元中说明的动作、处理时间等减少CPU的处理时间,使它们处于公差范围之内,或者用具有更高运算速度的CPU替换,或者改进磁头34a或34b的响应性能,而满足性能要求为止。
此外,在上述例子中,提供步骤SB6,以及如果输入一个未在状态转移矩阵中指定的事件的话,则模拟返回步骤SB5,然而,在这种场合下,也可以这样配置流程图,即不提供步骤SB6,该模拟器通过步骤SB7到SB13,不做任何处理。
这样,根据第二实施例的配置,因为一个系统的模拟可以根据状态转移矩阵通过适当设定在该状态转移矩阵中每一矩阵元说明的每一动作的处理时间并考虑额外开销时间和差分时间,与上述第一实施例相比,可以在基本设计阶段执行更为实际的模拟,仿佛系统实际操作,从而减少开发需要的时间和改进质量。
第三实施例
根据该实施例,程序开发系统的电气配置大体和图6所示第二实施例的程序开发系统的电气配置相同。然而,每一构造因子的功能不同,下面将会叙述。由该程序开发系统开发的程序和在第一实施例中的一样,是一个要结合到图2所示预付卡销售机中的一个程序,该预付卡销售机的性能要求也和第一实施例的一样。
在第一和第二实施例的操作中,只考虑了CPU24需要的处理时间,然而,只有考虑了诸如磁头34a和34b这样的外设需要的处理时间,模拟才更实际而重现更真实的安装状态。
在该实施例中,建立一个如图11所示的磁头34a和34b操作的状态转移矩阵并相对于基于图3所示状态转移矩阵的模拟执行模拟。建立图11所示状态转移矩阵的方法和建立图3所示状态转移矩阵的方法相同,其说明省略。
在图11最上面一行所示“请求备用状态”表示,磁头34a和34b在备用状态(以下称状态1),准备接收CPU24的请求写和读磁数据;“在写”表示磁头34a处于写磁数据到空白卡36上的状态(以下称状态2),而“在读”表示磁头34b处于从该预付卡读磁数据的状态(以下称状态3)。
在图11最左一行所示的“写”表示存在CPU24要求往空白卡36上写磁数据的请求的状态(以下称事件1);“读”表示存在CPU要求读预付卡磁数据的请求的状态(以下称事件2);“写完成”表示接收到一个告知磁头34a完成往空白卡36上写磁数据的消息的状态(以下称事件3);而“读完成”表示接收到一个告知磁头34b完成从该预付卡读磁数据的消息的状态(以下称事件4)。
在图11所示状态转移矩阵中,当作为一个事件和一个状态交点的矩阵元,例如状态1和事件1的交点表示为矩阵元(1,1)时,每一矩阵元说明的内容具有下述意义,亦即,在矩阵元(1,1)中的“写开始”表示一个备用状态(状态1),其为CPU24写磁数据的请求,表示响应CPU24写磁数据的请求的事件1的出现,磁头34a开始往空白卡36上写磁数据的一个动作。此外,在矩阵元(1,1)中的“=>在写”表示转移后状态是状态2,而数值(1)表示上述动作需要的处理时间为1ms。
在矩阵元(1,1)中的“写完成置位”表示,当磁头34a完成往空白卡36上写磁数据时,发送一个消息,告知写动作完成。
在矩阵元(1,2)中的“读开始”表示一个备用状态(状态1),其为CPU24读磁数据的请求,表示响应CPU24读磁数据的请求的事件1的出现,磁头34b开始读空白卡36上的磁数据的一个动作。在矩阵元(1,2)中的“=>在读”表示转移后状态是状态3,而数值(1)表示上述动作需要的处理时间为1ms。在矩阵元(1,2)中的“读完成置位”表示,当磁头34b完成从空白卡36上读磁数据时,发送一个消息,告知读动作完成。
符号(X)表示,在矩阵元(1,3)和(1,4)不存在事件和状态的组合状态。
在矩阵元(2,1)中的“出错返回”表示一个状态(状态2),此时磁头34a正在往空白卡36上写磁数据而CPU24请求写磁数据,表示通知CPU的一个动作,说明根据性能要求,一次操作只能往一张空白卡上写。在矩阵元(2,1)中的“=>-”表示该操作保持当前状态,亦即状态2,而数值(0.5)表示上述动作需要的处理时间为0.5ms。
在矩阵元(2,2)中的“出错返回”表示一个动作,它在磁头34a正在往空白卡36上写磁数据的状态2下,CPU24请求读磁数据时判定非正常事件发生并通知CPU这一点。在矩阵元(2,2)中的“=>-”表示该操作保持当前状态,亦即状态2,而数值(0.5)表示上述动作需要的处理时间为0.5ms。
在矩阵元(2,3)中的“数据标志置位:写完成”表示一个状态(状态2),此时磁头34a正在往空白卡36上写磁数据以及响应接收到告知磁头34a已经完成往空白卡36上写磁数据的消息,表示设定说明写动作完成的数据标志。此外,矩阵元(2,3)中的请求备用状态”表示转移后状态是状态1,而数值(1)表示上述动作需要的处理时间为1ms。
在矩阵元(2,4)中,标记“/”表示其中不执行动作,也不发生状态转换。标记“/”的意义与在矩阵元(3,3)中的一样,因此省略其说明。
在矩阵元(3,1)中的“出错返回”表示一个动作,它在磁头34b正在从预付卡上读磁数据的状态3下,CPU24请求写磁数据(事件1)时判定非正常事件发生并通知CPU这一点。在矩阵元(3,1)中的“=>-”表示该操作保持当前状态,亦即状态3,而数值(0.5)表示上述动作需要的处理时间为0.5ms。
在矩阵元(3,2)中的“出错返回”表示一个状态,其为磁头34b正从预付卡上读磁数据(状态3)下,CPU24请求读磁数据(事件2),表示通知CPU的一个动作,说明根据性能说明一次操作只能写一张预付卡。在矩阵元(3,2)中的“=>-”表示该操作保持当前状态,亦即状态3,而数值(0.5)表示上述动作需要的处理时间为0.5ms。
在矩阵元(3,4)中的“数据标志置位:读完成”表示一个状态(状态3),此时磁头34b正在从预付卡上读磁数据以及响应接收到告知磁头34b已经完成从预付卡上读磁数据的消息的事件(事件4),表示设定说明读动作完成的数据标志。此外,矩阵元(3,4)中的“请求备用状态”表示转移后状态是状态1,而数值(1)表示上述动作需要的处理时间为1ms。
然后,操作员通过参考在组成人-机接口41的显示部分41a上的指示和操作鼠标41b或者键盘41c输入模拟数据和检验数据,以便使模拟器50根据上述两个状态转移矩阵(图3和11)按照所述预付卡销售机的性能说明执行一次模拟。模拟数据和检验数据的内容和上面第二实施例中的一样,因此省略其说明。
编辑器42根据模拟数据和检验数据产生和编辑示于图12和13、以定时图格式表示的一个测试脚本文件,并将其存储在测试脚本存储部分46中。在图12中,表中号码1(No.1)和2(No.2)表示模拟数据,而号码3(No.3)和4(No.4)表示检验数据。图12中作为No.4表示的检验数据,由一个矩形框起来的数值“±1”表示,电动机B亦即电动机37从ON状态到OFF状态控制切换的定时必须在公差范围±1ms之内完成。在图13的表的No.1列,由一个矩形框起来的“写”表示CPU提供一个写磁数据的指令给写磁头,亦即磁头34a,而由一个矩形框起来的“读”表示CPU提供一个读磁数据的指令给读磁头,亦即磁头34b。此外,在图13的No.2列的内容表示,在从CPU接收到一条写指令之后2ms,给CPU提供一则“写OK”的通知,表示写磁数据正常完成,使CPU产生一个中断。类似地,在图13的No.3列的内容表示,在从CPU接收到一条读指令之后2ms,给CPU提供一则“读OK”的通知,表示写磁数据正常完成,使CPU产生一个中断。在两种场合下,上述时间“2ms”都不是绝对时间,而是相对时间。
此外,以定时图格式的测试脚本文件可以通过使用例如一个结合在编辑器42中的定时图编辑程序产生,或者它可以在示于图7的文本格式的测试脚本文件建立后通过使用结合到编辑器42中的定时图编辑程序变换或产生。本实施例使用后一方法。因此,产生文本格式的测试脚本文件和以定时图格式的测试脚本文件,并存储在测试脚本存储部分46中。
在第二实施例的操作中,虽然统一设定额外开销时间为0.5ms,但是,准确地说,额外开销时间根据在状态转移矩阵中的每一矩阵元而不同,或者在一个动作完成前后而变化。因此,在本发明的操作中,为执行更实际的模拟,如图14所示,在额外开销时间存储部分45中提供相应于图3所示状态转移矩阵的一个存储区域来存储额外开销时间。例如,在图14中的数值“0.2/0.3”中,符号“/”前的数值“0.2”表示在该矩阵元中说明的动作执行前需要的额外开销时间(前额外开销时间),而符号“/”后的数值“0.3”表示在该矩阵元中说明的动作执行后需要的额外开销时间(后额外开销时间)。此外,由于磁头34a和34b是由一个特殊的、为从CPU24接收一个控制信号的LSI驱动,为准确起见,必须考虑其额外开销时间。然而,在该例中,对于驱动磁头34a和34b来说,无论前额外开销时间还是后额外开销时间都当作不存在处理。
然后,当操作员通过操作组成人-机接口41的鼠标41b或者键盘41c使该程序开发系统处于模拟方式时,为使模拟器50根据上述两个状态转移矩阵(图3和11)按照所述预付卡销售机的性能说明执行模拟,出现带有“开始”区域的模拟方式窗口,其中开始区域用于提供开始模拟的指令。
下面参考图15所示流程图说明当获得空白卡36在穿过传感器32后到通过传感器33之间CPU24需要的处理时间时模拟器50的操作和操作员执行的操作。
操作员使用鼠标11b的光标键或者键盘11c移动光标到在模拟方式窗口显示的指示开始模拟的“开始”区域,点击鼠标左按钮或者按下回车键,提供开始模拟的指令。这将允许状态转移判断部分50b前进到步骤SC1,并在清除时间积累部分50c存储的内容为0ms后,它前进到步骤SC2。在步骤SC2,状态转移判断部分50b在读取从事件输入部分49提供的文本格式的测试脚本文件的标题行语句并将其作为初始状态设定到状态存储部分18d之后,前进到步骤SC3。在该例中,由于“初态:ST1”在图7所示测试脚本文件中作为标题行语句说明,因此状态1作为初始状态设定在状态存储部分50d。在步骤SC3,状态转移判断部分50b判断是否存在要从事件输入部分49输入到事件分析部分50a的以定时图形式的测试脚本文件。如果在步骤SC3的判断结果为“是”,亦即存在要从事件输入部分49输入到分析部分50a的定时图格式的测试脚本文件,则状态转移判断部分50b在从事件输入部分49输入测试脚本文件到事件分析部分50a之后,前进到步骤SC4。在该例中,由于示于图12和13中的测试脚本文件存储在测试脚本存储部分46,因此在步骤SC3的判断结果为“是”,状态转移判断部分50b把测试脚本文件从事件输入部分49输入到事件分析部分50a中。
在步骤SC4,事件分析部分50a在检测到从事件输入部分49输入的以定时图格式的测试脚本文件中每一事件的波形改变点,产生以发生时间顺序重排事件的事件输入序列并将其供给状态转移判断部分50b之后,前进到步骤SC5。在本例中,定时图格式的事件输入序列(未示出)从在图12和13所示以定时图格式的测试脚本文件中产生。
在步骤SC5,状态转移判断部分50b从事件分析部分50a以较早时间顺序读事件输入序列,并判断要产生的事件是否存在。如果判断结果为“是”,则状态转移判断部分50b从要产生的事件中捕获最早要产生的事件,并前进到步骤SC6。
反之,如果在步骤SC5的判断结果为“否”,亦即如果以较早时间顺序扫描事件输入序列表明,尚未发生的事件不存在的话,则状态转移判断部分50b判定,基于一个测试脚本文件的模拟结束,返回到步骤SC3,判断要测试的测试脚本文件是否存在。在该例中,由于基于示于图12和13的测试脚本文件的模拟是第一个,且并未完成,在从事件分析部分50a读取的事件输入序列中还有事件要发生,因此判断结果为“是”,状态转移判断部分50b捕获“S1:OFF->ON”,前进到步骤SC6。
在步骤SC6,状态转移判断部分50b通过参考从状态转移矩阵存储部分13读取的状态转移矩阵,判断被捕获的事件是否是一个要模拟的对象。如果判断结果为“否”,则状态转移判断部分50b返回步骤SC5。另一方面,如果在步骤SC6的判断结果为“是”,亦即如果所捕获的事件是状态转移矩阵中说明的一个事件,且是一个要模拟的对象,则操作前进到步骤SC7。在该例中,事件“S1:OFF->ON”在图3所示状态转移矩阵中作为状态2说明,且是一个要模拟的对象,因此在步骤SC6的判断结果为“是”。
在步骤SC7,时间比较部分50e比较由状态转移判断部分50b捕获的事件的波形改变点的时间和存储在事件积累部分50c中的累积时间,并判断其间是否存在时间差,亦即是否存在差分时间。如果判断结果为“否”,则时间比较部分50e前进到步骤SC9。如果在步骤SC7的判断结果为“是”,亦即存在一个差分时间,则操作前进到步骤SC8。在该例中,由于事件2是传感器32的检测信号从OFF改变为ON状态的事件且与由CPU用以使外设执行处理的指令无关,不存在差分时间,因此在步骤SC7的判断结果为“否”,时间比较部分50e前进到步骤SC9。
在步骤SC8,时间比较部分50e把该差分时间加到当前存储在时间积累部分50c中的累积时间上或者将其从累积时间中减去,以及在把计算结果存储到时间积累部分50c之后,操作前进到步骤SC9。
在步骤SC9,状态转移判断部分50b根据从事件分析部分50a捕获的事件和在状态存储部分18d中存储的状态、参考从状态转移矩阵存储部分13读取的状态转移矩阵,确定一个相应矩阵元,前进到步骤SC10。在该例中,由于事件2已经从事件分析部分50a中捕获,而状态1存储在状态存储部分50d中,状态转移判断部分50b通过参考状态转移矩阵确定一个矩阵元(1,2)。
在步骤SC10,状态转移判断部分50b在从额外开销时间存储部分45的存储区域读取相应于在步骤SC9确定的矩阵元的前额外开销时间,将其加到存储在时间积累部分50c中的累积时间上,将计算结果存储到时间积累部分50c之后,前进到步骤11。然而,如果由在步骤SC9的处理确定的矩阵元是一个在图11所示的状态转移矩阵中的矩阵元的话,则状态转移判断部分50b不做任何处理,前进到步骤SC11。在该例中,状态转移判断部分50b在从额外开销时间存储部分45的存储区域读取相应于矩阵元(1,2)的前额外开销时间(0.2ms),将其加到目前存储在时间积累部分50c中的累积时间(0ms)上,将相加结果(0.2ms)存储到时间积累部分50c中。
在步骤SC11,状态转移判断部分50b检验在步骤SC9确定的矩阵元要处理的动作的功能,从处理时间存储部分44读取相应于该动作的处理时间,将其加到目前存储在时间积累部分50c中的累积时间上,存储计算结果到时间积累部分50c,前进到步骤SC12。在该例中,状态转移判断部分50b检验请求停止驱动电动机35、驱动电动机37和磁头写磁数据的动作的功能,从处理时间存储部分44读取相应于该动作的处理时间(4ms),将其加到目前存储在时间积累部分50c中的累积时间(0.2ms)上,存储计算结果(4.2ms)到时间积累部分50c。
在步骤SC12,状态转移判断部分50b从状态转移矩阵存储部分43读取在步骤SC9确定的矩阵元中说明的转移后状态,将其存储到状态存储部分50d,并且如果该矩阵元的动作是对外设的控制,则在把相应于该动作的外设操作的状态转移矩阵中的状态也存储到状态存储部分50d之后,前进到步骤SC13。在该例中,状态转移判断部分50b从状态转移矩阵存储部分43读取在矩阵元(1,2)说明的状态2,将其存储在状态存储部分50d,以及因为该矩阵元的动作是请求磁头34a写磁数据,而使事件1,亦即写请求发生后,存储该状态到状态存储部分50d。
在步骤SC13,状态转移判断部分50b从相应于在步骤SC9确定的矩阵元的额外开销时间存储部分45中的存储区域读取后额外开销时间,将其加到存储在时间积累部分50c中的累积时间上,将计算结果存储到时间积累部分50c中,前进到步骤SC14。然而,如果在步骤SC9确定的矩阵元是在图11所示状态转移矩阵中的一个矩阵元,不存在额外开销时间,相应地,状态转移判断部分50b前进到步骤SC14,不做任何处理。
在该例中,状态转移判断部分50b在从相应于矩阵元(1,2)的额外开销时间存储部分45中的存储区域读取后额外开销时间(0.3ms),将其加到目前存储在时间积累部分50c中的累积时间(4.2ms)上之后,将相加结果(5.4ms)存储到时间积累部分50c中。
在步骤SC14,状态转移判断部分50b在把在时间积累部分50c中积累的时间和在状态存储部分50d中存储的转移后状态作为模拟结果存储到模拟结果存储部分51之后,返回步骤SC5。
在该例中,累积时间(4.5ms)和转移后状态(状态2和状态1)作为模拟结果存储在模拟结果存储部分51中。
另一方面,如果在步骤SC3的判断结果为“否”,亦即如果要继续的测试脚本文件未从事件输入部分49输入到事件分析部分50a,则状态转移判断部分50b判定,基于存储在测试脚本存储部分46中的所有测试脚本文件的模拟完成,并前进到步骤SC15。
在步骤SC15,状态转移判断部分50b在读取存储在模拟结果存储部分51中的模拟结果并将其供给人-机接口41之后,结束模拟处理。这将使模拟结果显示在人-机接口41的显示部分41a上。
下面叙述紧接事件“S1:OFF->ON”后较在早时间产生的事件,其后要产生的事件,以及相应模拟。
虽然未叙述在图15所示流程图中每一步骤的处理,但是没有必要在重复步骤SC3-SC14的处理后最后执行在步骤SC15的处理。
状态转移判断部分50b参考事件输入序列捕获“写”事件。
由于事件“写”在图11所示状态转移矩阵中说明,且是一个要被模拟的对象,因此时间比较部分50e比较事件1中波形改变点的时间和存储在时间积累部分50c中的累积时间(4.5ms),并判断是否其间存在时间差,亦即差分时间。在该例中,由于累积时间(4.5ms)是当在矩阵元(1,2)中说明的所有动作完成时纪录的时间,以及如图13所示,图11中的事件1是一个紧接CPU24请求磁头34a写磁数据后发生的事件,因此,事件1中的波形改变点的时间要比执行在矩阵元(1,2)中说明的动作早一个后额外开销时间(0.3ms)。因此,0.3ms是一个差分时间。然后,时间比较部分50e在从累积时间(4.5ms)中减去该差分时间(0.3ms)之后,把结果(4.2ms)存储到时间积累部分50c中。
事件分析部分50a在根据从事件分析部分50a捕获的“事件1”和存储在状态存储部分18d中存储的“状态1”、参考图11所示状态转移矩阵确定一个矩阵元(1,1)之后,检验在矩阵元(1,1)处理的使磁头34a开始写磁数据到空白卡36的动作的功能,从处理时间存储部分44读取处理时间(1ms),将其加到目前存储在时间积累部分50c中的累积时间(4.2ms)上,并将相加结果(5.2ms)存储到时间积累部分50c中。
状态转移判断部分50b在从状态转移矩阵存储部分43读取在矩阵元(1,1)说明的转移后状态(状态2)并将其存储在状态存储部分50d之后,把存储在时间积累部分50c中的累积时间(5.2ms)和存储在状态存储部分50d中的转移后状态(状态2)作为模拟结果存储到模拟结果存储部分51中。
状态转移判断部分50b通过参考事件输入序列捕获事件“写完成”。
因为事件“写完成”在状态转移矩阵中作为事件3说明,且是一个要被模拟的对象,因此时间比较部分50e通过比较事件3中波形改变点的时间和存储在时间积累部分50c中的累积时间(5.2ms),判断是否存在一个差分时间,然而在该例中,由于执行磁头34a和34b的模拟,因此不存在差分时间。
状态转移判断部分50b在根据从事件分析部分50a捕获的事件3和存储在状态存储部分18d中的状态(状态2)、参考图11所示状态转移矩阵确定一个矩阵元(2,3)之后,检验在矩阵元(2,3)要处理的设定告知写完成的数据标志的动作的功能,从处理时间存储部分44读取处理时间(1ms),将其加到存储在时间积累部分50c中的累积时间(5.2ms)上,并将相加结果(6.2ms)存储到时间积累部分50c中。
状态转移判断部分50b从状态转移矩阵存储部分43读取在矩阵元(2,3)中说明的转移后状态并将其存储在状态存储部分50d中,以及由于该矩阵元的动作是一个告知写完成的数据标志置位,因此在产生为事件3的中断请求“写OK”后,把积累在时间积累部分50c中的累积时间(6.2ms)和存储在状态存储部分50d中的转移后状态(状态1)作为模拟结果存储到模拟结果存储部分51中。
然后,状态转移判断部分50b参考事件输入序列捕获事件“写OK”。虽然事件“写OK”在图3中的状态转移矩阵中作为事件3说明,且是一个要被模拟的对象,但是由于它是一个后继前次处理发生的事件,因此不存在差分时间。状态转移判断部分50b根据从事件分析部分50a捕获的事件3和存储在状态存储部分18d中的转移后状态(状态2)、参考图3所示状态转移矩阵确定一个矩阵元(2,3),并在从相应于矩阵元(2,3)的额外开销时间存储部分45的存储区域读取前额外开销时间并将其加到目前存储在时间积累部分50c中的累积时间(6.2ms)之后,把相加结果(6.4ms)存储到时间积累部分50c中。
此外,状态转移判断部分50b检验在矩阵元(2,3)处理的请求磁头34b读预付卡磁数据的动作的功能,从处理时间存储部分44读取处理时间(1ms),将其加到目前存储在时间积累部分50c中的累积时间(6.4ms)上,并将相加结果存储到时间积累部分50c中。然后,状态转移判断部分50b在从状态转移矩阵存储部分43读取在矩阵元(2,3)中说明的状态3并将其存储在状态存储部分50d中后,由于该矩阵元的动作是在事件2发生后请求磁头34b读磁数据,亦即是一个读请求,因此从相应于矩阵元(2,3)的额外开销时间存储部分45的存储区域读后额外开销时间(0.2ms),将其加到目前存储在时间积累部分50c中的累积时间(7.4ms)上,并把相加结果(7.6ms)存储到时间积累部分50c中。
状态转移判断部分50b通过参考事件输入序列捕获事件“读”。因为该事件“读”在图11所示状态转移矩阵中作为事件2说明,且是一个要被模拟的对象,因此时间比较部分50e比较事件2中波形改变点的时间和存储在时间积累部分50c中的累积时间(7.6ms),并判断是否存在差分时间。在该例中,累积时间(7.6ms)是当在图3中的矩阵元(2,3)中说明的所有动作完成时纪录的时间,以及尽管如图13所示,图11中的事件2是一个紧接CPU24请求磁头34b读磁数据后发生的事件,但是,事件2中的波形改变点的时间要比执行在矩阵元(2,3)中说明的动作早一个后额外开销时间(0.2ms)。因此,0.2ms是一个差分时间。然后,时间比较部分50e在从当前存储在时间积累部分50c中的累积时间(7.6ms)中减去该差分时间(0.2ms),把相减结果(7.4ms)存储到时间积累部分50c中。
状态转移判断部分50b在根据从事件分析部分50a捕获的事件2和存储在状态存储部分18d中的状态(状态1)、参考图11所示状态转移矩阵确定一个矩阵元(1,2)之后,检验在矩阵元(1,2)要处理的使磁头34b开始从预付卡读磁数据的动作的功能,从处理时间存储部分44读取处理时间(1ms),将其加到存储在时间积累部分50c中的累积时间(7.4ms)上,并将相加结果(8.4ms)存储到时间积累部分50c中。
状态转移判断部分50b在从状态转移矩阵存储部分43读取在矩阵元(1,2)中说明的转移后状态(状态3)并将其存储在状态存储部分50d中后,把存储在时间积累部分50c中的累积时间(8.4ms)和转移后状态(状态3)作为模拟结果存储到模拟结果存储部分51中。
状态转移判断部分50b参考事件输入序列捕获事件“读完成”。
因为事件“读完成”在图11所示状态转移矩阵中说明,且是一个要被模拟的对象,因此时间比较部分50e比较事件4中波形改变点的时间和存储在时间积累部分50c中的累积时间(8.4ms),并判断其间是否存在时间差,亦即差分时间。在该例中,由于执行磁头34a和34b的模拟,因此不存在差分时间。
状态转移判断部分50b在根据从事件分析部分50a捕获的事件4和存储在状态存储部分18d中的状态(状态3)、参考图11所示状态转移矩阵确定一个矩阵元(3,4)之后,检验在矩阵元(3,4)要处理的设定告知读完成的数据标志的动作的功能,从处理时间存储部分44读取处理时间(1ms),将其加到存储在时间积累部分50c中的累积时间(8.4ms)上,并将相加结果(9.4ms)存储到时间积累部分50c中。
状态转移判断部分50b从状态转移矩阵存储部分43读取在矩阵元(3,4)中说明的转移后状态并将其存储在状态存储部分50d中,并在为事件5亦即读OK产生一个请求后,因为该矩阵元的动作是一个告知读完成的数据标志置位,因此把存储在时间积累部分50c中的累积时间(9.4ms)和存储在状态存储部分50d中的转移后状态(状态1)作为模拟结果存储到模拟结果存储部分51中。
状态转移判断部分50b参考事件输入序列捕获事件“读OK”。虽然事件“读OK”在图3所示状态转移矩阵中作为事件5说明,且是一个要被模拟的对象,但是由于该事件是一个后继前次处理发生的事件,因此不存在差分时间。
状态转移判断部分50b在根据从事件分析部分50a捕获的事件5和存储在状态存储部分18d中的状态(状态3)、参考图11所示状态转移矩阵确定一个矩阵元(3,5)之后,并在从相应于矩阵元(3,5)的额外开销时间存储部分45的存储区域读取前额外开销时间(0.2ms)并将其加到目前存储在时间积累部分50c中的累积时间(8.4ms)之后,把相加结果(9.6ms)存储到时间积累部分50c中。
然后,状态转移判断部分50b从状态转移矩阵存储部分43读取在矩阵元(3,5)中说明的状态并将其存储在状态存储部分50d中,并在从相应于矩阵元(3,5)的额外开销时间存储部分45的存储区域读取后额外开销时间(0.3ms)并将其加到目前存储在时间积累部分50c中的累积时间(9.6ms)之后,把相加结果(9.9ms)存储到时间积累部分50c中。
在上述模拟完成后,状态转移判断部分50b读取存储在模拟结果存储部分51中的模拟结果,将其供给人-机接口41,然后结束模拟处理。如图16所示,这将使迄今为止得到的模拟结果显示在人-机接口41的显示部分41a上。
图16(a)表示图3中的状态转移矩阵中所示事件2发生定时的模拟数据的波形,图16(b)表示驱动电动机37(电动机B)的驱动信号发生定时的检验数据的波形。此外,图16(c)和(d)分别表示每一CPU的操作和磁头操作的模拟结果。如图16b)所示,电动机37(电动机B)的驱动信号从ON到OFF状态的改变定时的允许范围为10±1ms;然而与磁头关联的CPU操作的模拟结果表明,所有处理在9.9ms之内完成,这样满足了性能要求。
另一方面,如果模拟未按照规范执行,则操作员通过参考显示在组成人-机接口41的显示部分41a上的状态转移矩阵(图3和图11)以及通过操作鼠标41b和键盘41c,进一步通过在性能说明允许范围之内改变在组成状态转移矩阵的每一矩阵元中说明的动作或者处理时间等,力图找出一种方式以减少CPU24的处理时间,用具有高速运算能力的新CPU替换旧CPU,改善磁头34a或34b的响应性能,并重复模拟,直到满足性能要求。
在上述实施例的操作中,提供步骤SC6,以及如果输入一个未在状态转移矩阵中指定的事件的话,则操作返回到步骤SC5;然而,可以这样配置流程图,使得省略在步骤SC7到SC14处的处理,不提供步骤SC6。
在该实施例的操作中,由于可以通过不仅为CPU的操作,而且可以为外设操作建立状态转移矩阵和结合这些因素在一起执行模拟,因此有可能在基本设计步骤阶段执行更实际的模拟,从而减少开发所需要的时间期间,同时改善质量。
第四实施例
图17是一个方框图,表示本发明的一个第四实施例的程序开发系统的电气配置。在图17中,同样的参考标号分配给相应于图6中那些部件,其说明省略。在该图中示出的程序开发系统新提供一个处理时间输入部分61,编译器62,机器代码存储部分63和代码时间计算部分64。处理时间输入部分61用于暂存由组成程序为之开发的一个实时控制系统的CPU需要的运算速度,其由操作员通过操作组成人-机接口41的鼠标41b和键盘41c输入。编译器62读取存储在程序存储部分48内的一个程序(源程序),把该程序转变为能由CPU处理的以机器码写的目标程序,并将其存储在机器代码存储部分63中。机器代码存储部分63由诸如RAM的半导体存储器和/或具有大规模存储容量诸如FD、HD等的存储介质组成。代码时间计算部分64用于以机器代码的代码数乘存储在处理时间输入部分61中存储的CPU的运算速度,并将乘积存储在相应于处理时间存储部分44的存储区域中,这些机器代码组成相应于在状态转移矩阵的每一矩阵元中说明的动作的目标程序,其乘积为该动作所需要的处理时间。此外,代码时间计算部分64用于以机器代码的代码数乘存储在处理时间输入部分61中的CPU的运算速度,并将存储在相应于额外开销时间存储部分45的存储区域中,这些机器代码组成相应于在状态转移矩阵中的每一矩阵元中说明的动作的处理前或后状态转移的目标程序,其乘积为状态转移中的额外开销时间。
根据本实施例的模拟要比第二到第三实施例中根据从经验得到的处理时间值或额外开销时间值进行的模拟更为准确,甚至较少经验的操作员也可以执行由有经验的操作员达到的同样准确的模拟。
第五实施例
图18是一个方框图,表示本发明的第五实施例的程序开发系统的电气配置。在图18中,同样的参考标号分配给相应于图17中的那些部件,其说明省略。在该图中的程序开发系统新提供ICE(电路内部模拟器)65和代码时间计算部分66,代替处理时间输入部分61和代码时间计算部分64。使用一个模拟芯片提供给该ICE,该模拟芯片具有和组成程序为之开发的实时控制系统的CPU同样的功能,在该实时控制系统上连接有组成该实时控制系统的各种外设(在图2所示预付卡销售机的场合为磁头34a和34b)。电路内部模拟器65通过事先把存储在机器代码存储部分63中的目标程序存储到RAM(其可用ROM代替)中和通过使模拟芯片读取该目标程序,可以执行几乎和实时控制系统实际操作同样的处理。
根据该实施例,代码时间计算部分66根据由电路内部模拟器65执行目标程序得到的执行时间计算状态转移矩阵中每一矩阵元中说明的处理时间和额外开销时间,并将结果存储到相应于处理时间存储部分44和额外开销时间存储部分45的存储区域中。此外,可以使用代码模拟器代替电路内部模拟器65。
在第五实施例的操作中,可以获得考虑中断处理、超高速缓冲存储器位和失中(miss-hit)处理、流水线处理的计算时间,从而使被执行的模拟的时间接近实际处理时间。
第六实施例
图19是表示本发明第六实施例的程序开发系统电气配置的方框图。在图19中,同样的参考标号分配给相应于图18中那些部件,其说明省略。图中所示程序开发系统提供在图17中表示的处理时间计算部分61和代码时间计算部分64,和新提供处理时间存储部分44a和44b、模拟结果存储部分51a和51b以及积累时间比较部分67。
根据本发明,图6、17和18所示程序开发系统的部件结合在一起。也就是说,操作员根据经验假定的处理时间和额外开销时间存储到处理时间存储部分44和额外开销时间45,在其基础上模拟结果存储到模拟结果存储部分51,以及存储对通过使用编译器62编译源程序得到的目标程序所计算出的处理时间和额外开销时间,在其基础上模拟结果存储到模拟结果存储部分51a,使用电路内部模拟器65执行目标程序得到的处理时间和额外开销时间存储到处理时间存储部分44b和额外开销时间45b,在其基础上模拟结果存储到模拟结果存储部分51b。累积时间比较部分67比较和审查由这三种方法得到的三种模拟结果。可以使用代码模拟器代替电路内部模拟器65。此外,不必获得上述所有三种模拟结果;亦即也允许累积时间比较部分67只比较和审查两种模拟结果。这样,在该实施例中的操作中,可以检验和验证操作员假定的时间的适宜性,操作员假定的准确度可以在下次为该实时控制系统开发程序时改进。
此外,在第六实施例中,如果由于模拟中的故障而重复模拟并因此必须改变状态转移矩阵中的矩阵元需要的处理时间的话,通过使用操作员只为正在操作的矩阵元需要的操作时间而假定的时间和通过使用基于目标程序或者基于电路内部模拟器65为其它矩阵元需要的处理时间,可以减少模拟中时间方面的错误。
第七实施例
图20是表示本发明第七实施例的程序开发系统的电气配置的方框图。在图20中,同样的参考标号分配给相应于图6中那些部件,其说明省略。图中所示程序开发系统提供一个测试脚本存储部分71和一个测试脚本产生部分72来代替测试脚本存储部分46。在该实施例的操作中,以和第一实施例同样方式,通过使用以操作员输入每一事件的顺序排列的输入事件日志和表示基于同样事实的模拟的执行历史(执行日志)自动产生一个测试脚本文件。也就是说,在第一次模拟中,以和第一实施例同样方式,操作员通过使用鼠标41b等输入每一事件,使模拟器50执行模拟,然后测试脚本产生部分72自动产生一个测试脚本文件,而测试脚本存储部分71将其存储。在第二次模拟及以后,该测试脚本文件从测试脚本存储部分71读出,从而由模拟器执行模拟。在该例中,改造事件输入部分49使具有图1所示输入部分17的功能,改造事件分析部分50a使具有分析部分18a的功能。
这样,根据本实施例的配置,因为测试脚本文件的产生和模拟可以同时执行,因此可以减少建立和修改测试脚本文件以及程序开发期间所需要的时间。另外,与产生文本文件的测试脚本文件的情形相比,输入较为简单,从而减少输入错误。
在上述每一实施例的操作中,例如,使用单一数值“4”表示状态转移矩阵中的处理时间;然而,可以设定对性能说明某一允许范围内的数值范围例如“1到5”,并可以存储在处理时间存储部分中。根据这样的设计,在执行第一次模拟时,例如在模拟器从具有某一允许数值范围读一个平均值并执行一次模拟后,如果其结果不满足性能要求,在执行第二次模拟时,通过读最小值或者最大值,或者从具有某一允许数值范围内随机选择的一个值,可以自动执行模拟。这样,允许自动模拟,直到其结果满足性能要求,而不必麻烦操作员。另外,可以通过在各种条件下执行模拟来获得累积时间,例如只选择最小值或只选择最大值作为处理时间,或者随机选择这些数值。
在状态转移矩阵的每一矩阵元中说明处理时间的场合,不用数值说明,而用变量说明,使得处理时间可以在模拟器内动态改变,也可以得到同样的结果。
另外,在第三实施例的操作中,表示了顺序执行CPU和作为外设的磁头的操作模拟,然而,也可以并行执行它们的模拟。这是可能的,因为CPU和磁头(准确地说,驱动磁头的LSI)是独立操作的,并且CPU在给磁头提供写、读请求后,执行另外的处理,直到接收到磁头的中断信号。在上述操作中,分别提供执行CPU操作的模拟器和执行外设操作的模拟器,这些模拟器彼此同步地通过积累为在相应状态转移矩阵中说明的每一矩阵元所需要的处理时间而执行模拟。这样的配置允许准确估计处理时间,甚至在并行处理并发的多个任务的场合。
此外,在上述实施例中,使用如图7的文本格式的测试脚本文件或者如图13的定时图格式的测试脚本文件;然而,文件格式不限制为这些,如图21所示,可以使用消息序列图格式的测试脚本文件。在图21中,细垂线是一个对象条,在最上部由矩形括起来的部件或设备名表示要模拟或检验的对象,而粗垂线是一个时间条,表示连续时间。
在上述实施例中,在所有场合都从外部供给事件,然而,通过事先定义状态转移矩阵中的事件,可以在模拟器内产生一个事件。
在每一实施例中说明的各种功能也可以应用在其它实施例的程序开发系统,只要其结构允许。
在上述每一实施例中,虽然每种设备都用硬件表示,但是这些设备不限于此。
也就是说,上述程序开发系统可以这样配置,使其包括CPU、诸如ROM或RAM等的内部存储器设备、诸如FDD(软磁盘驱动器)、HDD(硬磁盘驱动器)和CD-ROM驱动器的外部存储器设备,而上述编辑器12或42、产生器15或47、输入部分17、模拟器18或50、事件输入部分49等由CPU组成,或这些功能作为程序开发系统存储在诸如ROM的半导体存储器和诸如FD、HD、或CD-ROM等的存储器介质中。在上面的操作中,内部或者外部存储器设备用作状态转移矩阵存储部分13或43、处理时间存储部分14或44、额外开销时间存储部分45、或测试脚本存储部分46,而程序开发系统从存储器介质读取到CPU来控制这些设备。当驱动该程序开发系统时,CPU用作编辑器12或42、产生器15或47、输入部分17或事件输入部分49、由程序开发系统控制执行上述处理的模拟器18或50。
如上所述,根据本发明的配置,由于可以存储相应于在状态转移矩阵中每一矩阵元的时间信息,在其基础上可以积累执行系统模拟需要的处理时间,因此可以在基本设计阶段实现满足性能要求的模拟。
此外,根据本发明的另一配置,由于根据状态转移矩阵和通过设定在该状态转移矩阵的每一矩阵元中说明的每一处理所需要的处理时间和通过考虑额外开销时间和差分时间来执行系统模拟,因此可以在基本设计阶段实现更实际的模拟。
此外,根据本发明的另一配置,因为状态转移矩阵不只为控制部分,而且为外设操作而建立,并且执行与在该状态转移矩阵中说明的内容相关的模拟,因此可以在基本设计阶段实现更实际的模拟。
另外,根据本发明的另一配置,模拟的实现比根据从经验得到的处理时间值或额外开销时间值所做的模拟更准确,甚至一个较少经验的操作员也可以执行和有经验的操作员所能达到的同样准确的模拟。
此外,根据本发明的另一配置,可以获得考虑中断处理、超高速缓冲存储器位和失中位处理、管道处理计算的时间,这样允许被执行模拟以接近实际处理时间的时间执行。
另外,根据本发明的另一配置,可以检验或验证由操作员假定的时间的适宜性,操作员假定的准确度可以在下次为该实时控制系统开发程序时改善。
另外,根据本发明的另一配置,由于测试脚本文件和模拟可以同时执行,因此可以减少建立和修改测试脚本文件所需要的时间和程序开发周期。此外,与建立文本格式的测试脚本文件的场合相比,输入较为简单,从而减少输入错误。
另外,根据本发明的另一配置,可以执行自动模拟,直到其结果满足性能要求,而不需麻烦操作员。
另外,根据本发明的另一配置,可以准确估计处理时间,甚至在并行处理多个并发任务的场合。
这实现了减少开发一个要结合到实时控制系统中的程序的开发周期的目的同时改善了质量。
十分明显,本发明不限于上述实施例,而可以修改和改变而不离开本发明的范围和精神。
最后,本申请要求在1998年7月3日申请的日本专利申请平10-189513的优先权,它作为参考文献在这里引用。
Claims (30)
1.一个程序开发系统,包括:
一个状态转移矩阵存储部分,具有两个或者多个矩阵元,其由为之开发一个程序的系统所取的一个状态和作为从所述系统外部或内部的一个激励的事件所指定,以及存储说明由所述系统要执行的处理内容或一个转移后状态的状态转移矩阵;
一个时间信息存储部分,用以存储相应于在所述状态转移矩阵中的每一矩阵元的时间信息;
一个模拟器,用以通过积累顺序输入的事件和相应于由作为初始状态输入的状态和转移后状态顺序指定的一个矩阵元的时间信息,获得为模拟所述系统操作所需要的处理时间。
2.根据权利要求1的程序开发系统,其中,提供一个输入部分,以检测相应于组成在显示部份显示的所述状态转移矩阵的两个或者多个事件或状态的任何一个指示位置的指定,以及输入关于所述指示位置的所述位置信息到所述模拟器,以及其中,所述模拟器包括:一个分析部分,用以把由所述输入部分输入的位置信息变换为一个相应于所述显示部分的事件代码或者状态代码;一个状态存储部分,用以存储相应于在每一矩阵元中说明的所述状态代码的状态或者转移后状态;一个时间积累部分,用以积累所述时间信息;一个状态转移判断部分,用以作为初始状态存储相应于所述状态代码的一个状态到所述状态存储部分,和根据相应于所述事件代码的一个事件和存储在所述状态存储部分中的一个状态、参考从所述状态转移矩阵存储部分读取的状态转移矩阵确定一个相应的矩阵元,并在读取相应于所确定的矩阵元的时间信息之后,将其存储在所述时间积累部分,和进一步在读取在所述确定的矩阵元内说明的转移后状态后,将其存储在所述状态存储部分中。
3.根据权利要求1的程序开发系统,其中,提供一个事件输入部分,用于输入所述初始状态和输入测试脚本文件,该测试脚本文件相对于所述模拟器的规范描述在所述状态转移矩阵中说明的每一事件出现的定时和组成所述系统的单元要执行的操作定时,以及其中,所述模拟器包括:一个事件分析部分,用于通过以发生时间顺序重新排列由所述事件输入部分输入的测试脚本文件中的两个或者多个事件产生一个事件输入序列;一个状态存储部分,用以存储在每一矩阵元中说明的所述初始状态或者转移后状态;一个时间积累部分,用于积累所述时间信息;一个状态转移判断部分,用于存储所述初始状态到某一状态存储部分和根据以较早的时间顺序要从所述事件输入序列中捕获的一个事件和存储在所述状态存储部分中的状态、参考从所述状态转移矩阵存储部分读取的状态转移矩阵确定一个矩阵元,并在从所述时间信息存储部分读取相应于所确定的矩阵元的时间信息之后,将其累积到所述时间积累部分,和在从所述状态转移矩阵存储部分读取在所确定的矩阵元内说明的转移后状态后,将其存储在所述状态存储部分。
4.根据权利要求3的程序开发系统,其中,具有一个测试脚本文件产生部分,用于从由所述模拟器执行的模拟执行的历史数据根据通过操纵一个操作部分和所述两个或者多个事件而输入的所述初始状态产生所述测试脚本文件。
5.根据权利要求1的程序开发系统,其中,所述模拟器配备有时间比较部分,用于从所述事件的发生时间减去当前存储在所述时间积累部分中的累积时间,如果相减所得结果为正,则把相减结果作为一个差分时间加到在所述时间积累部分当前存储的累积时间上,差分时间是从组成所述系统的控制部分指示处理外设操作需要的处理时间和按照所述处理指令执行外设操作所需要的处理时间之间的差。
6.根据权利要求1的程序开发系统,其中,所述状态转移矩阵存储部分存储组成所述系统的一个控制部分操作的一个状态转移矩阵和由所述控制部分控制的外设操作的一个状态转移矩阵,以及其中,所述时间信息存储部分存储关于所述控制部分操作的时间信息和关于所述外设操作的时间信息,以及其中,所述模拟器包括:第一模拟器,用于积累关于所述控制部分操作的时间信息;第二模拟器,用于独立于所述第一模拟器积累关于所述外设操作的时间信息。
7.根据权利要求1的程序开发系统,其中提供:一个生成器,用于根据所述状态转移矩阵产生一个要结合到所述系统中的以某种编程语言写的源程序;一个编译器,用于转换所述源程序为以机器语言写的目标程序;第一计算部分,通过用组成所述目标程序的机器语言的代码数乘组成所述系统的所述控制部分的运算速度,计算相应于每一矩阵元的时间信息,所述目标程序相应于在所述状态转移矩阵的每一矩阵元中说明的处理,或者相应于其前或其后的转移。
8.根据权利要求1的程序开发系统,其中提供,一个生成器,用于根据所述状态转移矩阵产生一个要结合到所述系统中的以某种编程语言写的源程序;一个编译器,用于转换所述源程序为以机器语言写的目标程序;一个电路内部模拟器或者一个代码模拟器,用于执行所述目标程序以允许几乎和所述系统的实际操作完全一样的处理;一个第二计算部分,用于根据由所述电路内部模拟器或者所述代码模拟器执行所述目标程序获得的执行时间计算相应于所述状态转移矩阵的每一矩阵元的时间信息。
9.根据权利要求8的程序开发系统,其中,所述时间信息存储部分包括下述三个时间信息存储部分中的至少两个:第一时间信息存储部分,用于存储相应于所述状态转移矩阵中的每一矩阵元由操作所述控制部分而输入的时间信息;第二时间信息存储部分,用于存储由所述第一计算部分相应于所述状态转移矩阵中的每一矩阵元计算的时间信息;第三时间信息存储部分,用于存储由所述第二计算部分相应于所述状态转移矩阵中的每一矩阵元计算的时间信息;还包括一个比较部分,用于使所述模拟器根据所述时间信息存储部分1到3中至少两个中存储的时间信息、比较通过在模拟时间积累相应的时间信息得到的累积结果。
10.根据权利要求1的程序开发系统,其中,所述时间信息存储部分或所述第一时间信息存储部分存储作为具有某一范围的数值或者按照所述系统规范中某一允许范围的变量的时间信息,以及其中,当从所述时间信息存储部分或从所述第一时间信息存储部分读取相应于一个特定矩阵元的时间信息时,所述模拟器适于读取最大值、最小值、平均值或者从所述具有某一范围的数值中随机选择的数值,或者按照所述变量改变被积累的时间信息。
11.根据权利要求3的程序开发系统,其中,所述测试脚本文件来取定时图格式、文本格式或者消息序列图格式。
12.根据权利要求1的程序开发系统,其中,所述时间信息是在一个相应矩阵元中说明的处理所需要的处理时间。
13.根据权利要求12的程序开发系统,其中,所述时间信息包括所述处理时间和为从一个状态或者处理转移到另一状态或者另一处理所需要的额外开销时间。
14.根据权利要求13的程序开发系统,其中,所述额外开销时间是统一的或者根据每一矩阵元或每一转移而改变。
15.一种程序开发方法,包括步骤:
使用一个状态转移矩阵存储部分,它具有两个或者多个矩阵元,其由为之开发一个程序的系统所取的一个状态和作为所述系统外部或内部的一个激励的事件所指定,以及存储说明由所述系统要执行的处理内容或一个转移后状态的状态转移矩阵;
使用一个时间信息存储部分,用以存储相应于在所述状态转移矩阵中的每一矩阵元的时间信息;
通过积累顺序输入的事件和相应于由作为初始状态输入的状态和转移后状态顺序指定的一个矩阵元的时间信息,获得为模拟所述系统操作所需要的处理时间。
16.根据权利要求15的程序开发方法,包括步骤:
使用一个输入部分,以检测相应于组成在显示部份显示的所述状态转移矩阵的两个或者多个事件或状态的任何一个指示位置的指定,以及输入关于所述指示位置的所述位置信息到所述模拟器,
变换由所述输入部分输入的位置信息为一个相应于该显示位置的事件代码或者状态代码;
存储相应于所述状态代码的状态作为所述初始状态到状态存储部分;
根据相应于所述事件代码的一个事件和存储在所述状态存储部分中的一个状态、参考从所述状态转移矩阵存储部分读取的状态转移矩阵确定一个矩阵元;
从所述时间信息存储部分读取相应于所述确定的矩阵元的时间信息,并将其累积在时间积累部分;
从所述状态转移矩阵存储部分读取在所述确定的矩阵元内说明的转移后状态,并将其存储在所述状态存储部分。
17.根据权利要求15的程序开发方法,包括步骤:
使用一个事件输入部分,用于输入所述初始状态和输入描述在所述状态转移矩阵中说明的每一事件出现的定时或组成所述系统的单元按照规范要执行的操作的定时的测试脚本文件;
通过以发生时间顺序重新排列由所述事件输入部分输入的测试脚本文件中的两个或者多个事件,产生一个事件输入序列;
存储所述初始状态到状态存储部分;
根据以较早时间顺序从所述事件输入序列中捕获的一个事件和存储在所述状态存储部分中的一个状态、参考从所述状态转移矩阵存储部分读取的状态转移矩阵确定一个相应的矩阵元;
从所述时间信息存储部分读取相应于所述确定的矩阵元的时间信息,将其积累到时间积累部分;
从所述状态转移矩阵存储部分读取在所述确定的矩阵元内说明的转移后状态,并将其存储在所述状态存储部分。
18.根据权利要求17的程序开发方法,包括从由所述模拟器执行的模拟执行的历史数据根据通过操纵操作部分和所述两个或者多个事件而输入的所述初始状态产生所述测试脚本文件的步骤。
19.根据权利要求15的程序开发方法,包括步骤:从所述事件的发生时间减去当前存储在所述时间积累部分中的累积时间,以及如果相减所得结果为正,则把相减结果作为一个差分时间加到在所述时间积累部分中当前存储的累积时间上,差分时间是从组成所述系统的一个控制部分指示处理外设操作需要的处理时间和按照所述处理指令执行外设操作所需要的处理时间之间的差。
20.根据权利要求15的程序开发方法,包括步骤:存储组成所述系统的一个控制部分的操作的一个状态转移矩阵和由所述控制部分控制的外设操作的一个状态转移矩阵到所述状态转移矩阵存储部分,存储关于所述控制部分操作的时间信息和关于所述外设操作的时间信息到所述时间信息存储部分,独立于所述步骤积累关于所述控制部分的操作的时间信息和积累关于所述外设操作的时间信息。
21.根据权利要求15的程序开发方法,包括步骤:根据所述状态转移矩阵产生一个要结合到所述系统中的以某种编程语言写的源程序,转换所述源程序为以机器语言写的目标程序,通过用组成所述目标程序的机器语言的代码数乘组成所述系统的所述控制部分的运算速度,计算相应于每一矩阵元的时间信息,所述目标程序相应于在所述状态转移矩阵的每一矩阵元中说明的处理,或者相应于其前或其后的转移。
22.根据权利要求15的程序开发方法,包括步骤:根据所述状态转移矩阵产生一个要结合到所述系统中的以某种编程语言写的源程序,转换所述源程序为以机器语言写的目标程序,执行所述目标程序和根据通过执行所述目标程序获得的执行时间计算相应于所述状态转移矩阵的每一矩阵元的时间信息。
23.根据权利要求22的程序开发方法,包括步骤:使用所述时间信息存储部分,该时间信息存储部分包括下述三个时间信息存储部分中的至少两个:第一时间信息存储部分,用于存储相应于所述状态转移矩阵中的每一矩阵元由操作所述控制部分而输入的时间信息;第二时间信息存储部分,用于存储由所述第一计算部分相应于所述状态转移矩阵中的每一矩阵元计算的时间信息;第三时间信息存储部分,用于存储由所述第二计算部分相应于所述状态转移矩阵中的每一矩阵元计算的时间信息;和根据所述时间信息存储部分1到3中至少两个中存储的时间信息、比较通过在模拟时间积累相应的时间信息得到的累积结果。
24.根据权利要求15的程序开发方法,包括步骤:使用所述时间信息存储部分或所述第一时间信息存储部分,其存储作为具有某一范围的数值或者按照所述系统规范某一允许范围的变量的时间信息,当从所述时间信息存储部分或从所述第一时间信息存储部分读取相应于一个特定矩阵元的时间信息时,读取最大值、最小值、平均值或者从所述具有某一范围的数值中随机选择的数值,或者按照所述变量改变被积累的时间信息。
25.根据权利要求17的程序开发方法,包括使用以定时图格式、文本文件格式或者消息序列图格式的所述测试脚本文件的步骤。
26.根据权利要求15的程序开发方法,包括使用所述时间信息的步骤,所述时间信息为执行在一个相应矩阵元中说明的处理所需要的处理时间。
27.根据权利要求26的程序开发方法,包括使用所述时间信息的步骤,所述时间信息为从一个状态或者处理转移到另一状态或者另一处理所需要的额外开销时间。
28.根据权利要求27的程序开发方法,包括使用所述额外开销时间的步骤,所述额外开销时间是统一的或者根据每一矩阵元或每一转移而改变。
29.一种存储介质,用于存储开发程序的程序,以使计算机实现在权利要求1中说明的功能。
30.一种存储介质,用于存储开发程序的程序,以使计算机实现在权利要求15中说明的功能。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP189513/98 | 1998-07-03 | ||
JP18951398A JP3169896B2 (ja) | 1998-07-03 | 1998-07-03 | プログラム開発装置、プログラム開発方法及びプログラム開発プログラムを記憶した記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1249474A true CN1249474A (zh) | 2000-04-05 |
Family
ID=16242539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99111476A Pending CN1249474A (zh) | 1998-07-03 | 1999-07-03 | 程序开发系统、程序开发方法和为开发程序而存储程序的存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6467078B1 (zh) |
JP (1) | JP3169896B2 (zh) |
KR (1) | KR100316416B1 (zh) |
CN (1) | CN1249474A (zh) |
DE (1) | DE19930130B4 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100384159C (zh) * | 2005-04-02 | 2008-04-23 | 华为技术有限公司 | 评估系统处理能力的仿真方法 |
CN105074668A (zh) * | 2013-03-15 | 2015-11-18 | 富士施乐株式会社 | 测试设计辅助装置、测试设计辅助方法、程序和计算机可读介质 |
CN103312552B (zh) * | 2012-03-12 | 2017-02-08 | 北京泰乐德信息技术有限公司 | 一种数据仿真方法、仿真机和通信系统 |
CN111491773A (zh) * | 2017-11-29 | 2020-08-04 | 英格拉斯股份公司 | 用于注射压机的成型参数处理方法 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973639B2 (en) * | 2000-01-25 | 2005-12-06 | Fujitsu Limited | Automatic program generation technology using data structure resolution unit |
JP2003076543A (ja) * | 2001-08-31 | 2003-03-14 | Cats Kk | プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム |
US7107198B2 (en) * | 2001-11-02 | 2006-09-12 | Sun Microsystems, Inc. | Automatic generation of reduced-size circuit models including inductive interaction |
US6925405B2 (en) * | 2002-01-09 | 2005-08-02 | International Business Machines Corporation | Adaptive test program generation |
US7231630B2 (en) * | 2002-07-12 | 2007-06-12 | Ensequence Inc. | Method and system automatic control of graphical computer application appearance and execution |
US20040243379A1 (en) * | 2003-05-29 | 2004-12-02 | Dominic Paulraj | Ideal machine simulator with infinite resources to predict processor design performance |
JP2005038253A (ja) * | 2003-07-16 | 2005-02-10 | Nec Electronics Corp | テスト方法、テストシステム、及び、プログラム |
US7421546B2 (en) * | 2004-02-12 | 2008-09-02 | Relaystar Sa/Nv | Intelligent state engine system |
JP4874440B2 (ja) * | 2004-06-29 | 2012-02-15 | 株式会社デンソー | 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム |
US8291387B2 (en) | 2005-11-22 | 2012-10-16 | International Business Machines Corporation | Method and system for testing a software application interfacing with multiple external software applications in a simulated test environment |
JP5036595B2 (ja) * | 2008-02-28 | 2012-09-26 | 三菱電機株式会社 | 性能評価装置、性能評価プログラム及び性能評価方法 |
JP5327099B2 (ja) * | 2010-03-02 | 2013-10-30 | 新日鐵住金株式会社 | プログラム診断装置およびプログラム診断方法 |
US8543981B2 (en) * | 2010-08-23 | 2013-09-24 | Micro Focus (Us), Inc. | State driven test editor |
US8543980B2 (en) | 2010-08-23 | 2013-09-24 | Micro Focus (Us), Inc. | State driven testing |
WO2013179439A1 (ja) * | 2012-05-31 | 2013-12-05 | 三菱電機株式会社 | データ処理装置及びデータ処理システム及びシミュレーション方法及びプログラム |
US9400495B2 (en) * | 2012-10-16 | 2016-07-26 | Rockwell Automation Technologies, Inc. | Industrial automation equipment and machine procedure simulation |
WO2014155892A1 (ja) * | 2013-03-29 | 2014-10-02 | 日本電産サンキョー株式会社 | カード状媒体処理装置およびカード状媒体処理方法 |
JP6287650B2 (ja) * | 2014-07-10 | 2018-03-07 | 富士通株式会社 | シミュレーション方法、シミュレーションプログラム |
CN105068813B (zh) * | 2015-08-19 | 2019-05-31 | 北京奇虎科技有限公司 | 一种提供安卓包apk修改服务的方法和装置 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63182752A (ja) | 1987-01-23 | 1988-07-28 | Nec Corp | 結果保存可能な単体テスト支援システム |
JPH02250123A (ja) | 1989-03-23 | 1990-10-05 | Hokuriku Nippon Denki Software Kk | ソフトウェアシミュレータにおけるタイマ動作のシミュレーション方式 |
JP2887515B2 (ja) | 1990-09-13 | 1999-04-26 | 富士ゼロックス株式会社 | 記録装置のシミュレータ |
JPH04184545A (ja) | 1990-11-20 | 1992-07-01 | Mitsubishi Electric Corp | イベントシユミレーシヨンテストツールシステム |
US6324495B1 (en) * | 1992-01-21 | 2001-11-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Synchronous parallel system for emulation and discrete event simulation |
US5469553A (en) * | 1992-04-16 | 1995-11-21 | Quantum Corporation | Event driven power reducing software state machine |
JPH05307511A (ja) | 1992-04-30 | 1993-11-19 | Toshiba Corp | プロトコル・シミュレーション装置 |
JPH07160537A (ja) | 1993-12-03 | 1995-06-23 | Matsushita Electric Ind Co Ltd | シミュレータ |
US5544305A (en) * | 1994-01-25 | 1996-08-06 | Apple Computer, Inc. | System and method for creating and executing interactive interpersonal computer simulations |
JP3271682B2 (ja) | 1994-02-22 | 2002-04-02 | 新日鉄ソリューションズ株式会社 | 入力イベント記録/再生装置 |
US5500941A (en) * | 1994-07-06 | 1996-03-19 | Ericsson, S.A. | Optimum functional test method to determine the quality of a software system embedded in a large electronic system |
JPH08115107A (ja) | 1994-10-17 | 1996-05-07 | Hitachi Ltd | 機器制御プログラム生成方式 |
JP2771951B2 (ja) * | 1994-11-10 | 1998-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | リアクティブ・システムのためのプログラム作成装置 |
US6205575B1 (en) * | 1995-04-18 | 2001-03-20 | Siemens Corporate Research, Inc. | Scenario presentation tool |
US6226789B1 (en) * | 1996-01-29 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for data flow analysis |
JPH09325952A (ja) | 1996-06-05 | 1997-12-16 | Mitsubishi Electric Corp | オブジェクト指向仕様の実行検証装置 |
JP3214356B2 (ja) | 1996-06-14 | 2001-10-02 | 三菱電機株式会社 | テスト支援装置 |
JP2861962B2 (ja) | 1996-09-12 | 1999-02-24 | 日本電気株式会社 | コンピュータプログラムのシミュレーション装置および方法 |
JPH1091476A (ja) * | 1996-09-17 | 1998-04-10 | Toshiba Corp | プログラム実行装置及び機能仕様とコードアドレスとの対応付け方法 |
US5933633A (en) * | 1996-11-19 | 1999-08-03 | Good; Sebastian Erich | State table generating system |
DE19651334A1 (de) * | 1996-12-10 | 1998-06-25 | Ericsson Telefon Ab L M | Betriebstestvorrichtung und Verfahren zur Ausführung eines Betriebstests für ein zu testendes System |
US6145121A (en) * | 1997-04-17 | 2000-11-07 | University Of Washington | Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications |
US6031987A (en) * | 1997-05-06 | 2000-02-29 | At&T | Optimistic distributed simulation based on transitive dependency tracking |
US6192512B1 (en) * | 1998-09-24 | 2001-02-20 | International Business Machines Corporation | Interpreter with virtualized interface |
US6324600B1 (en) * | 1999-02-19 | 2001-11-27 | International Business Machines Corporation | System for controlling movement of data in virtual environment using queued direct input/output device and utilizing finite state machine in main memory with two disjoint sets of states representing host and adapter states |
US6263459B1 (en) * | 1999-04-29 | 2001-07-17 | Western Digital Corporation | On the fly write reallocation |
US6230114B1 (en) * | 1999-10-29 | 2001-05-08 | Vast Systems Technology Corporation | Hardware and software co-simulation including executing an analyzed user program |
-
1998
- 1998-07-03 JP JP18951398A patent/JP3169896B2/ja not_active Expired - Lifetime
-
1999
- 1999-06-30 DE DE19930130A patent/DE19930130B4/de not_active Expired - Lifetime
- 1999-07-01 US US09/346,233 patent/US6467078B1/en not_active Expired - Lifetime
- 1999-07-03 KR KR1019990026777A patent/KR100316416B1/ko not_active IP Right Cessation
- 1999-07-03 CN CN99111476A patent/CN1249474A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100384159C (zh) * | 2005-04-02 | 2008-04-23 | 华为技术有限公司 | 评估系统处理能力的仿真方法 |
CN103312552B (zh) * | 2012-03-12 | 2017-02-08 | 北京泰乐德信息技术有限公司 | 一种数据仿真方法、仿真机和通信系统 |
CN105074668A (zh) * | 2013-03-15 | 2015-11-18 | 富士施乐株式会社 | 测试设计辅助装置、测试设计辅助方法、程序和计算机可读介质 |
CN105074668B (zh) * | 2013-03-15 | 2017-11-03 | 富士施乐株式会社 | 测试设计辅助装置和测试设计辅助方法 |
CN111491773A (zh) * | 2017-11-29 | 2020-08-04 | 英格拉斯股份公司 | 用于注射压机的成型参数处理方法 |
CN111491773B (zh) * | 2017-11-29 | 2022-11-11 | 英格拉斯股份公司 | 用于注射压机的成型参数处理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR100316416B1 (ko) | 2001-12-12 |
JP3169896B2 (ja) | 2001-05-28 |
DE19930130B4 (de) | 2010-08-26 |
KR20000011469A (ko) | 2000-02-25 |
US6467078B1 (en) | 2002-10-15 |
JP2000020347A (ja) | 2000-01-21 |
DE19930130A1 (de) | 2000-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1249474A (zh) | 程序开发系统、程序开发方法和为开发程序而存储程序的存储介质 | |
CN1024954C (zh) | 具有调试能力的可编程序控制器 | |
CN1130626C (zh) | 支援并行程序的装置以及支持程序编制的方法 | |
CN1110745C (zh) | 具有面向目标的打印接口的操作系统 | |
CN1293465C (zh) | Gui显示装置及光标或gui组件动画显示处理方法 | |
CN1273888C (zh) | 成像装置、信息处理装置、程序执行方法及程序生成方法 | |
CN1285997C (zh) | 链接内容浏览支持装置及其方法 | |
CN100338568C (zh) | 开发片上系统用的开发环境的生成方法 | |
CN100351770C (zh) | 布局调整方法和装置 | |
CN100337187C (zh) | 布局调整方法、布局调整装置及程序 | |
CN1815435A (zh) | 文档处理装置和文档处理方法 | |
CN1474979A (zh) | 用于专家系统的定制规则系统和方法 | |
CN1821956A (zh) | 用现有内容生成用于执行任务的活动内容向导可执行文件 | |
CN1828517A (zh) | 文档处理装置和文档处理方法 | |
CN100337188C (zh) | 布局处理方法和信息处理装置 | |
CN1297882C (zh) | 数据处理装置、印刷控制方法 | |
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1885295A (zh) | 使用逻辑单元建置集成电路 | |
CN1648846A (zh) | 文件处理装置和文件处理方法 | |
CN1910601A (zh) | 限制条件解决方法、限制条件解决装置、以及限制条件解决系统 | |
CN1568458A (zh) | 无需修改现有代码即可增加新软件特征的方法 | |
CN1839401A (zh) | 信息处理装置及信息处理方法 | |
CN1319210A (zh) | 可配置的硬件块的配置方法 | |
CN1633638A (zh) | 在外貌特征模式中带有总功能特性的连接实体 | |
CN1438121A (zh) | 打印控制装置、打印控制方法以及打印控制程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
ASS | Succession or assignment of patent right |
Owner name: NEC ELECTRONICS TAIWAN LTD. Free format text: FORMER OWNER: NIPPON ELECTRIC CO., LTD. |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20030604 Address after: Kanagawa, Japan Applicant after: NEC Corp. Co-applicant after: Katz. Address before: Tokyo, Japan Applicant before: NEC Corp. Co-applicant before: Katz. |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |