CN101826017B - 一种面向粒的编程集成开发系统 - Google Patents
一种面向粒的编程集成开发系统 Download PDFInfo
- Publication number
- CN101826017B CN101826017B CN2010101727975A CN201010172797A CN101826017B CN 101826017 B CN101826017 B CN 101826017B CN 2010101727975 A CN2010101727975 A CN 2010101727975A CN 201010172797 A CN201010172797 A CN 201010172797A CN 101826017 B CN101826017 B CN 101826017B
- Authority
- CN
- China
- Prior art keywords
- module
- grain
- class
- information
- editor
- 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.)
- Expired - Fee Related
Links
- 239000002245 particle Substances 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 50
- 230000010365 information processing Effects 0.000 claims description 47
- 238000012545 processing Methods 0.000 claims description 28
- 238000011161 development Methods 0.000 claims description 15
- 239000000284 extract Substances 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 10
- 230000003068 static effect Effects 0.000 claims description 10
- 230000006399 behavior Effects 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000006872 improvement Effects 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 14
- 239000008187 granular material Substances 0.000 abstract 7
- 230000009977 dual effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 235000007926 Craterellus fallax Nutrition 0.000 description 1
- 240000007175 Datura inoxia Species 0.000 description 1
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010429 evolutionary process Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种面向粒的编程集成开发平台,该平台分为编辑器、编译器、虚拟机、调试器和类-粒层次结构构造器;所述编辑器、编译器和调试器分别与类-粒层次结构构造器相互通信,所述调试器还分别与编辑器和虚拟机连接。该平台提供了对面向粒的编程(Granule-Oriented Programming)语言的编码、编译、调试功能;将程序的信息由独立的类-粒层次结构构造器进行管理,依靠面向粒的编程集成开发平台我们可以很容易定义粒,并将类代码与粒代码透明的融合,同时类-粒之间的自动定位功能和丰富的信息显示功能也使得代码编辑、故障确定和新粒的编写更为方便。
Description
技术领域
本发明属于计算机应用领域,涉及一种编程集成开发系统,尤其是一种面向粒的编程集成开发系统。
背景技术
过程语言如Fortran、Pascal和C等可以用来定义直线执行的程序,程序开始于某一点,一步一步执行至终点。这种模式中,设计理念体现在相继执行的程序单元中。直线的模块划分体现在函数调用中,函数调用允许程序执行从主程序跳转到子程序,又跳回主程序。子程序的使用使程序更有效的实现一般的程序。但是,随着程序规模的不断增大,程序越来越复杂,过程式语言也变得很复杂并且很难维护。
面向对象方法的出现把系统状态变成一些单独的对象,在这些对象中可以私有化系统状态,并且通过公有的函数控制这些状态,程序的功能分解为各个功能模块。高级语言通过结构化抽象等方法模块化程序,面向对象语言通过对象和类等概念,这又进一步通过集合一个实体的行为和隐藏其内部实现提高模块的内聚、降低模块间的藕合。
面向对象相对于传统设计语言和软件设计方法有以下优越性:
1)符合人类认识和分析事物的思维习惯;
2)代码是可高度重用的,可维护的;
3)实现了功能模块的组件化;
4)代码是共享、可继承的,减少了软件设计中的代码量等。
但是,面向对象编程(OOP)也不可能是完美无缺的,近些年出现了很多针对OOP的不足提出新的编程思想和相应的实现。
在面向对象中,当一些因素的考虑可能会影响了一些系统的模块(如功能模块)的实现,极易出现不适合现象。这种不适合现象不是系统设计的不足导致的,而是复杂系统中的一个自然地和不可避免的现象。例如,程序的运行与其支撑环境是密不可分的。计算机程序是给计算机提供的指令,程序产生动作,计算机负责指令执行。因此,一个有意义的程序除了代码之外还默认隐含在什么计算机上运行。程序一旦运行在其他机器上,也许会产生预料不到的结果甚至不能够正常运行下去,由此引出了程序与机器之间适合性问题,这些考虑的因素就是“上下文变量”。程序所面临的上下文常常改变,比如程序所面临的输入、系统可用内存、并行系统中的处理机个数等。从某种意义上讲,传统编程机制隐式地蕴含了程序与上下文之间的关系,不过其潜在地假定程序与上下文之间的关系是固定不变的。然而,易变的上下文使得编程时假定的程序与上下文之间的匹配关系常常被破坏。假设一个类拥有无返回类型方法m。对于不同的情况,方法m可能需要进行不同的行为演化来适应新环境。传统的编程模型可能试图使用继承关系,通过定义该类的子类来对行为的多个候选实现进行分组,解决这个问题。然而,虽然继承关系可通过在子类中重载基类方法的方式,实现该方法的行为版本,但它不足以用来为某一个对象的某个方法编写多个候选行为实现,换句话说,静态继承关系不能支持对象行为的动态变化。当然也可考虑通过使用不同的方法名称来代表每个实现,或者通过方法的不同参数来指示哪个实现被执行。但是这要求客户端,也就是将要调用这个方法的对象,对实现的细节了如指掌。这样就破坏了类的封装性。
GOP(Granule-Oriented Programming)思想就是在观察程序不适合性现象的基础上提出的。GOP是使用粒和上下文扩展了面向对象编程语言。这样的构造是独立于编程模块的,可以将对上下文的考虑外部化和限定化,而不是将它们展开在重要的编程模块中。当系统动态变化,上下文也是在运行中随机的变化。现阶段的监控系统不能处理好对适合当前上下文需要实行功能模块的替换。而粒和上下文的结合,很好解决了适合性的问题。
目前的各种编程语言都没有关注程序适合性问题,GOP面向粒的程序设计中,用粒来指代那些适合性可度量的、可以被动态替换的构成程序的单位。如果程序出现了不适合性,这些不适合性被局部化到不适合的粒上面,从而用更适合的粒进行替换,以达到改善程序适合性的目标。
面向粒的编程集成开发平台提供了对GOP语言的编码、编译、调试功能;将程序的信息由独立的类-粒层次结构构造器进行管理,依靠面向粒的编程集成开发平台我们可以很容易定义粒,并将类代码与粒代码透明的融合,同时类-粒之间的自动定位功能和丰富的信息显示功能也使得代码编辑、故障确定和新粒的编写更为方便。
发明内容
本发明的目的在于克服上述现有技术中的缺点,提供一种面向粒的编程集成开发系统,该集成开发系统提供了对GOP语言的编码、编译、调试功能;将程序的信息由独立的类-粒层次结构构造器进行管理,依靠面向粒的编程集成开发平台我们可以很容易定义粒,并将类代码与粒代码透明地融合,同时类-粒之间的自动定位功能和丰富的信息显示功能也使得代码编辑、故障确定和新粒的编写更为方便。
本发明的目的是通过以下技术方案来解决的:
这种面向粒的编程集成开发系统分为编辑器、编译器、虚拟机、调试器和类-粒层次结构构造器;所述编辑器、编译器和调试器分别与类-粒层次结构构造器相互通信,所述调试器还分别与编辑器和虚拟机连接;
(1)编辑器
所述的编辑器由类编辑模块、粒编辑模块、类信息模块、粒信息模块、关系信息模块和窗口切换模块组成;类编辑模块包括一个类编辑窗口,粒编辑模块包括一个粒编辑窗口,类信息模块包括一个类信息窗口,粒信息模块包括一个粒信息窗口;所述类编辑模块用于修改编辑对象类代码;所述粒编辑模块用于修改编辑对象粒代码;类信息模块显示类信息,所述类信息包括类名和类所在的文件;粒信息模块显示粒信息,所述粒信息包括粒名和粒所在的文件;所述关系信息模块包括树型显示模块、代码显示模块和图形显示模块;树型显示模块包括一个关系信息树型显示窗口;代码显示模块包括一个关系信息代码显示窗口;图形显示模块包括一个关系信息图形显示窗口;树型显示模块显示类粒关系信息和层次结构构成的树型结构图;代码显示模块显示所有类和粒的具体的代码;图形显示模块用图形直观显示粒和它所依附的类之间的关系;所述窗口切换模块分别与类编辑模块、粒编辑模块、类信息模块、粒信息模块、关系信息模块连接,实现类编辑窗口、粒编辑窗口、粒信息窗口、粒信息窗口、关系信息树型显示窗口、关系信息代码显示窗口和关系信息图形显示窗口的切换;
所述类是OOP标准类;所述粒是GOP领域的基本模块,粒由粒名、类名、粒体和影子类构成,其中类名用来表明该粒所依附的类,将该类称为粒的根类,粒体用来指定粒的期望环境,粒体可以定义自身的成员并且粒体中必须包含一个适合性判断方法,适合性判断方法返回真或假;所述影子类是对种子程序中与该影子类相同名字的类的改进,是在不同上下文下类行为的不同体现,并且只是在相应粒体适合性判断方法为真后才有效;
(2)编译器
GOP的编译器分为前端模块和后端模块,前端模块又包括词法分析器、语法分析器和静态语义分析器,静态语义分析器又具体包括名字分析模块、类型检查模块、访问控制模块、确定赋值模块;词法分析器根据GOP的构词规则识别程序中的单词;语法分析器对满足GOP语法规则的程序构造一棵抽象语法树AST;静态语义分析器对抽象语法树上的节点以面向对象层次结构建模,在建模的结果之上,通过属性文法的计算过程按照GOP的语义规则完成语义的分析过程;后端模块生成程序的类字节码文件、粒体字节码文件、影子类字节码文件、种子程序-个体程序配置文件以及该个体程序对应的粒树;
(3)虚拟机
GOP的虚拟机系统包括装载子系统、运行数据区和执行引擎;装载子系统包含类装载器、粒装载器、影子类装载器和种子程序-个体程序配置文件装载器;运行数据区包括方法区、堆、栈、PC寄存器、本地方法栈、上下文变量存储区和种子程序-个体程序存储区;执行引擎分为粒跨度判断模块、适合性监测模块、粒替换模块、上下文管理模块和粒库管理模块;
(4)调试器
所述调试器包括跟踪模块、粒指示模块、调试器窗口显示模块和个体程序演化模块;跟踪模块用于跟踪虚拟机运行的源代码;粒指示模块用于显示跟踪模块所跟踪的方法所属的粒;调试器窗口显示模块显示虚拟机当前运行的数据域和方法信息;个体程序演化模块可以显示运行出错前的个体程序和这个个体程序的上下文信息;同时可以显示相似粒替换前后的个体程序和这个个体程序的上下文信息;
(5)类-粒层次结构构造器
所述的类-粒层次结构构造器包括类信息处理模块、粒信息处理模块和关系信息处理模块;所述类信息处理模块抽取GOP源代码中所有类信息及其层次结构,并将类信息及其层次结构提供给其他模块;所述粒信息处理模块抽取GOP源代码中所有粒信息及其层次结构,并将粒信息及其层次结构提供给其他模块;所述关系信息处理模块抽取GOP源代码中类和粒之间的关系信息,并将类和粒之间的关系信息提供给其他模块。
上述编辑器的类编辑模块和粒编辑模块分别与类-粒层次结构构造器的类信息处理模块、粒信息处理模块和关系信息处理模块连接,类-粒层次结构构造器从类编辑模块和粒编辑模块获取GOP源代码,所述类信息处理模块抽取GOP源代码中所有类信息及其层次结构;所述粒信息处理模块抽取GOP源代码中所有粒信息及其层次结构;所述关系信息处理模块抽取GOP源代码中类和粒之间的关系信息。
上述的编辑器的类信息模块与类-粒层次结构构造器的类信息处理模块连接,编辑器的类信息模块从类-粒层次结构构造器的类信息处理模块获取所有类信息及其层次结构。
上述的编辑器的粒信息模块与类-粒层次结构构造器的粒信息处理模块连接,编辑器的粒信息模块从类-粒层次结构构造器的粒信息处理模块获取所有粒信息及其层次结构。
上述的编辑器的关系信息模块与类-粒层次结构构造器的关系信息处理模块连接,编辑器的关系信息显示模块从类-粒层次结构构造器的关系信息处理模块获取类和粒之间的关系信息。
上述的编辑器的窗口切换模块与类-粒层次结构构造器的类信息处理模块、粒信息处理模块和关系信息处理模块连接,实现窗口切换时被切换前后窗口内容的信息同步。
上述的调试器的跟踪模块、粒指示模块和调试器窗口显示模块分别与类-粒层次结构构造器的类信息处理模块、粒信息处理模块连接;从粒层次结构构造器的类信息处理模块获取所有类信息及其层次结构,从粒层次结构构造器的粒信息处理模块获取所有粒信息及其层次结构,为调试工作提供指示信息。
上述的调试器的跟踪模块、粒指示模块、调试器窗口显示模块和个体程序演化模块分别与编辑器和虚拟机连接;调试器启动编辑器实现对代码的修改,调试器从虚拟机获取当前运行的状态信息。
本发明具有以下有益效果:
1、面向粒的编程集成开发系统提供了对GOP语言的编码、编译、调试功能。由于GOP引入了粒这种新的程序构成基本单元,同时粒中又引入了上下文这个新元素,定义了粒体和影子类这些新结构,因而GOP程序的结构更为复杂,相互关系信息更多。面向粒的编程集成开发系统将程序的信息由独立的类-粒层次结构构造器进行管理,使得程序信息的管理和使用更为容易,为编辑和调试阶段提供更为丰富的辅助信息。
2、面向粒的编程集成开发系统对类和粒的编辑和调试独立并相互透明,使得类代码和粒代码的编辑和调试更为方便,同时它又提供了自动定位和关联信息显示功能,自动定位当前粒依附的根类,和当前类包括的粒,并且提供当前程序的类-粒层次结构图,使得对代码的修改非常容易。
3、面向粒的编程集成开发系统的调试器除了获取传统集成开发平台需要获取的当前程序运行信息,还获取当前程序的上下文信息和当前程序的类-粒层次结构图,帮助用户迅速定位故障位置。或者辅助编辑器进行新的粒的编写。
附图说明
图1为本发明的面向粒的编程集成开发系统各个部件要素图;
图2为本发明创建GOP软件项目的流程图;
图3为本发明的类编辑窗口和粒信息窗口双重显示模式图;
图4为本发明的关系信息树型显示窗口图;
图5为本发明的关系信息代码显示窗口图;
图6为本发明的粒编辑窗口和类信息窗口双重显示模式图;
图7为本发明的关系信息图形显示窗口图;
图8为本发明的调试器窗口显示模块图;
图9为本发明的个体程序演化模块图;
图10为本发明的程序调试流程图。
具体实施方式
本发明是帮助开发基于面向粒编程技术的软件程序的开发平台,提供的集成开发平台能使用户快速、方便的创建和调试面向粒程序。该项发明的集成开发平台具体实现是通过计算机软件来完成的,可以通过非破坏性的存储介质上装载,或从一个或多个远程站点上下载安装,或从远程计算机上进行本地安装。
下面结合附图对本发明做进一步详细描述:
参见图1:面向粒的编程集成开发平台200由编辑器210、编译器220、虚拟机230、调试器240和类-粒层次结构构造器250组成;所述编辑器210、编译器220和调试器240分别与类-粒层次结构构造器250相互通信,所述调试器240还分别与编辑器220和虚拟机230连接;
参见图2:它描述了在面向粒的编程集成开发平台下创建GOP软件项目的流程图;在步骤310通过编辑器210创建或修改类源代码201和粒源代码202;在步骤320通过类-粒层次结构构造器250,利用编辑后的类源代码201和粒源代码202抽取程序的类信息,粒信息和类-粒关系信息;类-粒层次结构构造器250随着类信息和粒信息的创建更新而随之创建和更新。在步骤330通过编译器220对编辑后的类源代码201和粒源代码202进行编译,生成字节码文件,确保所有的粒信息都能被正确的处理;在步骤340通过虚拟机230将编译后的程序字节码文件加载运行;在步骤350监测程序在虚拟机中的运行,如果没有在步骤350发现错误,开发过程在步骤370完成。如果发现错误,在步骤360使用调试器240来定位错误,编辑器210再次启用修正编辑类源代码201和粒源代码202。这个循环一直持续到程序无误,然后在步370结束。
1编辑器
所述的编辑器210由类编辑模块211、粒编辑模块212、类信息模块213、粒信息模块214、关系信息模块215和窗口切换模块216组成;类编辑模块211包括一个类编辑窗口,粒编辑模块212包括一个粒编辑窗口,类信息模块213包括一个类信息窗口,粒信息模块214包括一个粒信息窗口;所述类编辑模块211用于修改编辑对象类代码;粒编辑模块212用于修改编辑对象粒代码;类信息模块213显示类信息,类信息包括类名和类所在的文件;粒信息模块214显示粒信息,粒信息包括粒名和粒所在的文件;关系信息模块215包括树型显示模块、代码显示模块和图形显示模块;树型显示模块包括一个关系信息树型显示窗口;代码显示模块包括一个关系信息代码显示窗口;图形显示模块包括一个关系信息图形显示窗口;树型显示模块显示类粒关系信息和层次结构构成的树型结构图;代码显示模块显示所有类和粒的具体的代码;图形显示模块用图形直观显示粒和它所依附的类之间的关系;窗口切换模块216分别与类编辑模块211、粒编辑模块212、类信息模块213、粒信息模块214、关系信息模块215连接,实现类编辑窗口、粒编辑窗口、粒信息窗口、粒信息窗口、关系信息树型显示窗口、关系信息代码显示窗口和关系信息图形显示窗口的切换。
所述类是OOP标准类;所述粒是GOP领域的基本模块,粒由粒名、类名、粒体和影子类构成,其中类名用来表明该粒所依附的类,将该类称为粒的根类,粒体用来指定粒的期望环境,粒体可以定义自身的成员并且粒体中必须包含一个适合性判断方法,适合性判断方法返回真或假;所述影子类是对种子程序中与该影子类相同名字的类的改进,是在不同上下文下类行为的不同体现,并且只是在相应粒体适合性判断方法为真后才有效。
在本发明面向粒的集成开发系统中支持单一显示模式和双重显示模式,单一显示模式提供单一窗口显示,用户可以在类编辑模块211的类编辑窗口和粒信息模块214的粒信息窗口之间,或粒编辑模块212的粒编辑窗口和类信息模块213的类信息窗口之间通过窗口切换模块216来切换窗口;在双重显示模式中,用户可以使在类编辑模块211的类编辑窗口和粒信息模块214的粒信息窗口,或粒编辑模块212的粒编辑窗口和类信息模块213的类信息窗口同时显示。在本发明中说明书附图中的各图都以双重显示模式为例来显示该项发明的特性。
参见图3:类编辑窗口和粒信息窗口同时显示,粒列表在粒信息模块214的粒信息窗口显示,粒列表用来显示有关粒的信息;类编辑模块211的类编辑窗口中的代码是粒依附的根类代码。在类编辑窗口中,用户可以修改编辑类源代码。一个光标312指向下一个输入位置。粒信息窗口是一个粒列表,列表中的每一行包括粒名称323和粒所在的文件名称324。用户能够选择Jump按钮313,Jump按钮313能够启动关系信息模块215的代码显示模块,将所有的粒代码和它们所依附的根类代码显示在关系信息代码显示窗口中,关系信息代码显示窗口如图5所示;用户能够选择类-粒信息按钮314,类-粒信息按钮314能够启动关系信息模块215的树形显示模块,将类粒关系信息和层次结构构成的树型结构图显示在关系信息树形显示窗口中,关系信息树形显示窗口如图4所示。
根据本发明,类-粒的层次结构以图形的方式显示在图4中的窗口410中,这使得用户能够更加快速了解类与粒之间的关系。参见图4:在窗口410中,类用椭圆315表示而粒用矩形316表示。如果一个粒依附于某一类,那么就有一个箭头从矩形316出发指向椭圆315。当用户从窗口410点选其中的一个粒名称,相应的粒名称以及粒的文件地址将会在粒信息窗口420中显示。在窗口420中,粒的信息的被显示,显示的内容包括粒名和粒所在的文件。用户能够选择Jump按钮313,Jump按钮313能够启动关系信息模块215的代码显示模块,将所有的粒代码和它们所依附的根类代码显示在关系信息代码显示窗口中,关系信息代码显示窗口如图5所示。
根据本发明,用户通过在图5中的窗口510看到在图3或者图4中所显示的类和粒的具体代码。参见图5:在窗口510的最左边显示的是当前程序的类的源代码,而右边依次显示的与这个程序的类相关联的粒的源代码。
参见图6:粒编辑窗口和类信息窗口同时显示,用户可以在粒编辑窗口模块212的粒编辑窗口中编写新粒的代码和修改已有的粒的代码,类信息窗口模块213的类信息窗口是一个类列表窗口,它显示粒编辑窗口模块212的粒编辑窗口中的粒所依附的类的信息。为了选择粒编辑窗口模块212的粒编辑窗口中的一个粒,用户可以通过移动光标312到粒编辑窗口模块212的粒编辑窗口中某一粒的位置上然后反键点击它。一旦一个粒被选择,类信息窗口模块213的类信息窗口的显示内容将被更新,这时它将仅仅显示这个被选中的粒所依附的类的信息。
参见图7:它是一个关系信息图形显示窗口图,在窗口710中,粒和类之间的关系以图形的方式被显示,用户通过显示的图形能够快速地了解粒和它所依附的类之间的关系。一个例子显示在图7中,类720用椭圆形表示,粒730用矩形表示。表示类的图形与其它三个表示粒的图形的重叠显示这三个粒是依附于这个类。此外,粒和类还可以用其他方式表示,如用其它不同的图形,或者具有不同颜色的同一图形,或者另一些能够区别二者的方式。另一方面,粒和类之间的关系除了用叠加的方式表示外,还可以用连接不同图形的连接符表示。
2 编译器
粒对类的作用通过面向粒的编译器220实现。GOP编译器220以编辑后的类源代码201和粒源代码201作为输入,对类和粒分别产生二进制字节码文件作为输出,提供给虚拟机230的运行,编译器220同时还与调试器连接。
GOP的编译器220分为前端模块和后端模块,前端模块又包括词法分析器、语法分析器和静态语义分析器,静态语义分析器又具体包括名字分析模块、类型检查模块、访问控制模块、确定赋值模块;词法分析器根据GOP的构词规则识别程序中的单词;语法分析器对满足GOP语法规则的程序构造一棵抽象语法树AST;静态语义分析器对抽象语法树上的节点以面向对象层次结构建模,在建模的结果之上,通过属性文法的计算过程按照GOP的语义规则完成语义的分析过程;后端模块生成程序的类字节码文件、粒体字节码文件、影子类字节码文件、种子程序-个体程序配置文件以及该个体程序对应的粒树。
所述种子程序是一个不与任何上下文相关联且不包含任何粒的程序,所述个体程序是一个与已有上下文相关联的程序,个体程序由种子程序和依附于种子程序的粒组成;所述的上下文是指支持程序的所有非功能性因素的综合;种子程序-个体程序配置文件记录种子程序和个体程序的类层次结构以及各类依附的粒的XML文件。所述的粒树反映个体程序所包含的粒和粒的层次的XML文件。
3 虚拟机
GOP的虚拟机230系统包括装载子系统、运行数据区和执行引擎;装载子系统包含类装载器、粒体装载器、影子类装载器和种子-个体配置文件装载器;本发明的类装载器与普通虚拟机中类装载器一致,粒体装载器和影子类装载器的设计与类装载器类似,只是其实现将粒体和影子类装载进虚拟机;种子程序-个体程序配置文件装载器是用来加载GOP编译器生成的描述程序粒层次结构的XML配置文件。
运行数据区包括方法区、堆、栈、PC寄存器、本地方法栈、上下文变量存储区和种子程序-个体程序存储区;上下文变量存储区用于存储影响程序的上下文信息;种子程序-个体程序存储区用于存储加载进来的种子程序-个体程序配置文件。
执行引擎分为粒跨度判断模块、适合性监测模块、粒替换模块、上下文管理模块和粒库管理模块;粒跨度判断模块负责判断粒调用的粒范围跨度判断,适合性监测模块用于监测程序的适合性,粒替换模块用于查找相似粒,对程序做出替换及程序的演化过程,上下文管理模块提供了程序中粒所关心的上下文变量的取值及更新通知,上下文的变化,及时反馈到程序中去,促使程序及时做出适合性判断,粒库管理模块负责相似粒的查找,及程序演化之后产生的新的个体的存储到数据库中去,扩充粒库,对于程序的更好运行,增添了更好的保障。
4 调试器
所述调试器240包括跟踪模块241、粒指示模块242、调试器窗口显示模块243和个体程序演化模块244;跟踪模块241用于跟踪虚拟机运行的源代码;粒指示模块242用于显示跟踪模块所跟踪的方法所属的粒;调试器窗口显示模块243显示虚拟机当前运行的数据域和方法信息;个体程序演化模块244可以显示运行出错前的个体程序和这个个体程序的上下文信息,同时可以显示相似粒替换前后的个体程序和这个个体程序的上下文信息。
参见图8:跟踪模块241可以跟踪一个方法执行,主窗口810显示类的源代码,在类-粒层次结构构造器250中,调试器240首先接受类信息处理模块251的类信息和粒信息处理模块252的粒信息,然后在源代码相应的位置显示粒指示器820,指示器820表示被跟踪方法的代码来源的粒。
当用户使用鼠标或其他指针设备反键点击主窗口810时,调试器240将弹出一个粒列表窗口830,该窗口显示的粒都和主窗口810中的代码相关联,这个粒列表窗口包含一个粒名831,一个粒方法或者粒变量832和一个粒所在的文件名833;此外,当用户可以通过鼠标或者其他指针设备点击在粒窗口830中的某一粒名时,此粒的源代码将显示在被弹出的粒代码窗口840中。
根据本发明,一个粒指示器仅仅与一个粒相关联,调试器240只是直接地弹出粒代码窗口而不是显示一个只包含单个粒的粒列表窗口。
如果用户想要看到调试前的个体程序和这个个体程序的上下文信息,或想要看到相似粒替换前后的个体程序和这个个体程序的上下文信息,用户只需要点击图8中的Jump按钮313即可,Jump按钮313启动个体程序演化模块图,能够显示调试前的个体程序和新编写的个体程序结构示意图,或者当前运行个体程序和它上一次替换时的个体程序结构示意图。
参见图9:在窗口910和窗口920中的椭圆形表示类,矩形表示粒,圆角矩形表示不适合当前环境的粒;在窗口910中,显示的是当前个体程序上一次发生替换时的结构,窗口920是当前运行个体程序的结构图,在窗口930和窗口940分别显示窗口910和窗口920中的个体程序的代码和上下文信息。
参见图10:用户可以步骤1010使用调试器240调试一个GOP程序。在调试之前,这个面向粒子的程序必须载入编译器220。程序被装载之后,在步骤1020通过来源于类-粒层次结构构造器250的信息判断是否有多个粒存在。如果有多个粒存在,在步骤1030将显示一个粒列表窗口830。这个窗口列出所有的与这个载入的程序相关的粒。一旦用户可以在步骤1040选择粒列表窗口830中的一个粒,那么粒代码窗口840将被弹出显示此粒的源代码202。如果在步骤1020只有一个粒存在,那么调试器240直接跳到步骤1050显示粒代码窗口840。
所述的调试器240的跟踪模块241、粒指示模块242、调试器窗口显示模块243和个体程序演化模块244分别与编辑器220和虚拟机230连接;调试器240启动编辑器220实现对代码的修改,调试器240从虚拟机230获取当前运行的状态信息。
5类-粒层次结构构造器
所述的类-粒层次结构构造器250包括类信息处理模块251、粒信息处理模块252和关系信息处理模块253;所述类信息处理模块251抽取GOP源代码中所有类信息及其层次结构,并将类信息及其层次结构提供给其他模块;所述粒信息处理模块252抽取GOP源代码中所有粒信息及其层次结构,并将粒信息及其层次结构提供给其他模块;所述关系信息处理模块253抽取GOP源代码中类和粒之间的关系信息,并将类和粒之间的关系信息提供给其他模块。
所述编辑器210的类编辑模块211和粒编辑模块212分别与类-粒层次结构构造器250的类信息处理模块251、粒信息处理模块252和关系信息处理模块253连接,类-粒层次结构构造器250从类编辑模块211和粒编辑模块212获取GOP源代码。
所述的编辑器210的类信息模块213与类-粒层次结构构造器250的类信息处理模块251连接,编辑器210的类信息模块213从类-粒层次结构构造器250的类信息处理模块251获取所有类信息及其层次结构。
所述的编辑器210的粒信息模块214与类-粒层次结构构造器250的粒信息处理模块252连接,编辑器210的粒信息模块214从类-粒层次结构构造器250的粒信息处理模块252获取所有粒信息及其层次结构。
所述的编辑器210的关系信息模块215与类-粒层次结构构造器250的关系信息处理模块253连接,编辑器210的关系信息模块215从类-粒层次结构构造器250的关系信息处理模块253获取类和粒之间的关系信息。
所述的编辑器210的窗口切换模块216与类-粒层次结构构造器250的类信息处理模块251、粒信息处理模块252和关系信息处理模块253连接,实现窗口切换时被切换前后窗口内容的信息同步。
所述的调试器240的跟踪模块241、粒指示模块242和调试器窗口显示模块243分别与类-粒层次结构构造器250的类信息处理模块251、粒信息处理模块252连接;从粒层次结构构造器250的类信息处理模块251获取所有类信息及其层次结构,从粒层次结构构造器250的粒信息处理模块252获取所有粒信息及其层次结构,为调试工作提供指示信息。
Claims (1)
1.一种面向粒的编程集成开发系统,其特征在于:所述面向粒的编程集成开发系统包括编辑器、编译器、虚拟机、调试器和类-粒层次结构构造器;所述编辑器、编译器和调试器分别与类-粒层次结构构造器相互通信,所述调试器还分别与编辑器和虚拟机连接;
(1)编辑器
所述的编辑器由类编辑模块、粒编辑模块、类信息模块、粒信息模块、关系信息模块和窗口切换模块组成;类编辑模块包括一个类编辑窗口,粒编辑模块包括一个粒编辑窗口,类信息模块包括一个类信息窗口,粒信息模块包括一个粒信息窗口;所述类编辑模块用于修改编辑对象类代码;所述粒编辑模块用于修改编辑对象粒代码;类信息模块显示类信息,所述类信息包括类名和类所在的文件;粒信息模块显示粒信息,所述粒信息包括粒名和粒所在的文件;所述关系信息模块包括树型显示模块、代码显示模块和图形显示模块;树型显示模块包括一个关系信息树型显示窗口;代码显示模块包括一个关系信息代码显示窗口;图形显示模块包括一个关系信息图形显示窗口;树型显示模块显示类粒关系信息和层次结构构成的树型结构图;代码显示模块显示所有类和粒的具体的代码;图形显示模块用图形直观显示粒和它所依附的类之间的关系;所述窗口切换模块分别与类编辑模块、粒编辑模块、类信息模块、粒信息模块、关系信息模块连接,实现类编辑窗口、粒编辑窗口、类信息窗口、粒信息窗口、关系信息树型显示窗口、关系信息代码显示窗口和关系信息图形显示窗口的切换;
所述编辑器的类编辑模块和粒编辑模块分别与类-粒层次结构构造器的类信息处理模块、粒信息处理模块和关系信息处理模块连接,类-粒层次结构构造器从类编辑模块和粒编辑模块获取GOP源代码,所述类信息处理模块抽取GOP源代码中所有类信息及其层次结构;所述粒信息处理模块抽取GOP源代码中所有粒信息及其层次结构;所述关系信息处理模块抽取GOP源代码中类和粒之间的关系信息;
所述的编辑器的类信息模块与类-粒层次结构构造器的类信息处理模块连接,编辑器的类信息模块从类-粒层次结构构造器的类信息处理模块获取所有类信息及其层次结构;
所述的编辑器的粒信息模块与类-粒层次结构构造器的粒信息处理模块连接,编辑器的粒信息模块从类-粒层次结构构造器的粒信息处理模块获取所有粒信息及其层次结构;
所述的编辑器的关系信息模块与类-粒层次结构构造器的关系信息处理模块连接,编辑器的关系信息模块从类-粒层次结构构造器的关系信息处理模块获取类和粒之间的关系信息;
所述的编辑器的窗口切换模块与类-粒层次结构构造器的类信息处理模块、粒信息处理模块和关系信息处理模块连接,实现窗口切换时被切换前后窗口内容的信息同步;
所述类是OOP标准类;所述粒是GOP领域的基本模块,粒由粒名、类名、粒体和影子类构成,其中类名用来表明该粒所依附的类,将该类称为粒的根类,粒体用来指定粒的期望环境,粒体可以定义自身的成员并且粒体中必须包含一个适合性判断方法,适合性判断方法返回真或假;所述影子类是对种子程序中与该影子类相同名字的类的改进,是在不同上下文下类行为的不同体现,并且只是在相应粒体适合性判断方法为真后才有效;
(2)编译器
GOP的编译器分为前端模块和后端模块,前端模块又包括词法分析器、语法分析器和静态语义分析器,静态语义分析器又具体包括名字分析模块、类型检查模块、访问控制模块、确定赋值模块;词法分析器根据GOP的构词规则识别程序中的单词;语法分析器对满足GOP语法规则的程序构造一棵抽象语法树AST;静态语义分析器对抽象语法树上的节点以面向对象层次结构建模,在建模的结果之上,通过属性文法的计算过程按照GOP的语义规则完成语义的分析过程;后端模块生成程序的类字节码文件、粒体字节码文件、影子类字节码文件、种子程序-个体程序配置文件以及该个体程序对应的粒树;
(3)虚拟机
GOP的虚拟机系统包括装载子系统、运行数据区和执行引擎;装载子系统包含类装载器、粒装载器、影子类装载器和种子程序-个体程序配置文件装载器;运行数据区包括方法区、堆、栈、PC寄存器、本地方法栈、上下文变量存储区和种子程序-个体程序存储区;执行引擎分为粒跨度判断模块、适合性监测模块、粒替换模块、上下文管理模块和粒库管理模块;
(4)调试器
所述调试器包括跟踪模块、粒指示模块、调试器窗口显示模块和个体程序演化模块;跟踪模块用于跟踪虚拟机运行的源代码;粒指示模块用于显示跟踪模块所跟踪的方法所属的粒;调试器窗口显示模块显示虚拟机当前运行的数据域和方法信息;个体程序演化模块可以显示运行出错前的个体程序和这个个体程序的上下文信息;同时可以显示相似粒替换前后的个体程序和这个个体程序的上下文信息;
所述的调试器的跟踪模块、粒指示模块和调试器窗口显示模块分别与类-粒层次结构构造器的类信息处理模块、粒信息处理模块连接;从类-粒层次结构构造器的类信息处理模块获取所有类信息及其层次结构,从类-粒层次结构构造器的粒信息处理模块获取所有粒信息及其层次结构,为调试工作提供指示信息;
所述的调试器的跟踪模块、粒指示模块、调试器窗口显示模块和个体程序演化模块分别与编辑器和虚拟机连接;调试器启动编辑器实现对代码的修改,调试器从虚拟机获取当前运行的状态信息;
(5)类-粒层次结构构造器
所述的类-粒层次结构构造器包括类信息处理模块、粒信息处理模块和关系信息处理模块;所述类信息处理模块抽取GOP源代码中所有类信息及其层次结构,并将类信息及其层次结构提供给其他模块;所述粒信息处理模块抽取GOP源代码中所有粒信息及其层次结构,并将粒信息及其层次结构提供给其他模块;所述关系信息处理模块抽取GOP源代码中类和粒之间的关系信息,并将类和粒之间的关系信息提供给其他模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101727975A CN101826017B (zh) | 2010-05-14 | 2010-05-14 | 一种面向粒的编程集成开发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101727975A CN101826017B (zh) | 2010-05-14 | 2010-05-14 | 一种面向粒的编程集成开发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101826017A CN101826017A (zh) | 2010-09-08 |
CN101826017B true CN101826017B (zh) | 2012-11-28 |
Family
ID=42689949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101727975A Expired - Fee Related CN101826017B (zh) | 2010-05-14 | 2010-05-14 | 一种面向粒的编程集成开发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101826017B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591661A (zh) * | 2011-12-30 | 2012-07-18 | 苏州汉清投资管理有限公司 | 一种实现软件集成的系统 |
CN105302623A (zh) * | 2014-07-28 | 2016-02-03 | 中兴通讯股份有限公司 | 一种编译方法、控制方法、运行方法及设备 |
US10719303B2 (en) * | 2015-06-07 | 2020-07-21 | Apple Inc. | Graphics engine and environment for encapsulating graphics libraries and hardware |
CN106933643A (zh) * | 2015-12-30 | 2017-07-07 | 迈普通信技术股份有限公司 | 一种代码编译方法、设备及系统 |
CN107992295B (zh) * | 2017-12-29 | 2021-01-19 | 西安交通大学 | 一种面向粒的动态算法选择方法 |
CN114489682B (zh) * | 2022-04-14 | 2022-08-02 | 北京宝兰德软件股份有限公司 | nginx配置文件的操作方法、装置和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5509116A (en) * | 1990-03-30 | 1996-04-16 | International Business Machines Corporation | Graphical user interface management system |
CN101071378A (zh) * | 2006-05-12 | 2007-11-14 | 日立软件工程株式会社 | 源代码生成方法、设备和程序 |
CN101645010A (zh) * | 2009-08-20 | 2010-02-10 | 深圳市珍爱网信息技术有限公司 | 代码自动生成系统及方法 |
-
2010
- 2010-05-14 CN CN2010101727975A patent/CN101826017B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5509116A (en) * | 1990-03-30 | 1996-04-16 | International Business Machines Corporation | Graphical user interface management system |
CN101071378A (zh) * | 2006-05-12 | 2007-11-14 | 日立软件工程株式会社 | 源代码生成方法、设备和程序 |
CN101645010A (zh) * | 2009-08-20 | 2010-02-10 | 深圳市珍爱网信息技术有限公司 | 代码自动生成系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101826017A (zh) | 2010-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6067641A (en) | Demand-based generation of symbolic information | |
CA2144874C (en) | Incremental build system | |
US5325533A (en) | Engineering system for modeling computer programs | |
EP3377968B1 (en) | Dynamic update of an application in compilation and deployment | |
CN101826017B (zh) | 一种面向粒的编程集成开发系统 | |
CN102541521B (zh) | 基于结构化查询语言的操作指令自动生成装置及方法 | |
US5519866A (en) | Method and apparatus of incrementally linking components of a modeled computer program | |
EP1942411B1 (en) | Producer graph oriented programming and execution | |
US20040261065A1 (en) | Method and system for compiling multiple languages | |
CN104662514A (zh) | 基于模型关联关系的遗产软件系统的现代化 | |
EP1958062A2 (en) | Producer graph oriented programming framework with scenario support | |
JPH01166141A (ja) | デバッグ情報提供方法 | |
CN102696012A (zh) | 从代码使用中创建所推断的符号 | |
CN105117210A (zh) | 一种面向wscn的图形化编程系统 | |
CN100462920C (zh) | 为优化的程序生成展开信息 | |
CN103019787A (zh) | 函数调用关系确定方法、热补丁升级方法及装置 | |
CN113296786B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN102696026A (zh) | 带有增量改变的高效不可变句法表示 | |
Anderson | A computer for direct execution of algorithmic languages | |
CN100504761C (zh) | 在不同种类的体系结构中映射调试信息的方法 | |
CN1894674A (zh) | 存储器访问指令向量化 | |
CN113342389B (zh) | 一种服务的更新方法、装置及计算机可读存储介质 | |
KR20190060561A (ko) | 이종 디바이스의 선택적 추상화를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 및 시스템 | |
CN102750167A (zh) | 应用程序启动方法、装置和计算机系统 | |
CN107562430B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121128 |
|
CF01 | Termination of patent right due to non-payment of annual fee |