一种智能化的软件编程方法

文档序号:10654151阅读:317来源:国知局
一种智能化的软件编程方法
【专利摘要】本发明公开了一种智能化的软件编程方法,包括如下步骤,第一步:根据软件设计要求绘制UML模型;第二步:建立符合软件设计要求的UML元模型;第三步:代码转换规则的建立;第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现;本发明将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
【专利说明】
一种智能化的软件编程方法
技术领域
[0001 ]本发明涉及软件编程技术领域,尤其涉及一种智能化的软件编程方法。
【背景技术】
[0002]在软件开发的过程中,开发人员总是重复编写一些简单的代码,而且每当新技术来临,又不得不一再地重复过去的工作同时,需求的变化也从来没有停止过,为了解决这些问题,人们提出了代码自动生成技术,代码自动生成技术根据模型驱动架构MDA(ModelDrivenArchitecture)的思想,将由开发人员描述的软件系统模型转换为代码,使得模型成为软件开发的核心制品,提升了软件开发的抽象层次,从而提高软件开发效率和软件的可维护性,统一建模语言UML是一种以图形方式对系统进行分析设计的标准建模语言,使用UML建模可以清晰地表示系统的结构和行为信息UML模型中的类图显示了系统中各个类的静态结构,顺序图描述了对象之间消息传递的时间顺序因此,软件开发人员通常将二者结合描述软件系统的详细设计模型代码自动生成就以类图和顺序图为输入,依据一定的转换规则生成具有静态和动态信息的代码。
[0003]但是现有软件自动编程过程中生成的代码大多以Java为主,很少有能够在编程完成后生成C++代码的智能化的编程方法。

【发明内容】

[0004]本发明所要解决的技术问题是提供一种智能化的软件编程方法,其先将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
[0005]为解决上述技术问题,本发明所采取的技术方案是:一种一种智能化的软件编程方法,包括如下步骤:
[0006]第一步:根据软件设计要求绘制UML模型,UML模型包括语法正确的类图和顺序图,用来描述软件系统的静态结构和业务逻辑信息;
[0007]第二步:建立符合软件设计要求的UML元模型,UML元模型包括类图元模型和顺序图元模型,用来定义类图和顺序图的绘制规则;
[0008]第三步:代码转换规则的建立,转换规则是根据UML模型元素的特点和C++语言的代码结构建立的;
[0009]第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现。
[0010]所述类图元模型定义了使用UML描述对象模型的完整语法规则,UML类图中的类与元模型中的Class对应,属性和操作与Attribute和Operat1n对应,操作的参数对应Parameter,其中Kind表示该参数的类型,属性和参数的类型用Classf ier表示。
[0011]所述顺序图用来描述类中的一个方法,对应原模型中的Interact1n、Co llaborat 1n和Operat 1n,其中的Operat 1n用来记录该顺序图所描述的方法的名称和可见性,顺序图中的对象对应元模型中的Classifi erRo I e,不同对象间通信的消息对应Message,消息中要执行的动作对应Act1n,该动作执行的条件用recurrence表示,动作的内容用Request表示。
[0012]所述第三步中的转换规则包括类图的转换规则和顺序图的转换规则,所述类图的转换规则包括类的转换规则与属性和操作的转换规则,UML中的类、属性和操作分别对应C++中的类、成员变量和成员函数,所述顺序图的转换规则包括关联关系的转换规则、顺序图的转换规则、条件的转换规则、变量赋值的转换规则、对象创建的转换规则、方法调用的转换规则和消息发送的转换规则。
[0013]采用上述技术方案所产生的有益效果在于:本发明将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
【具体实施方式】
[0014]下面对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0015]在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
[0016]本发明公开了一种智能化的软件编程方法,包括如下步骤:
[0017]第一步:根据软件设计要求绘制UML模型,UML模型包括语法正确的类图和顺序图,用来描述软件系统的静态结构和业务逻辑信息;
[0018]第二步:建立符合软件设计要求的UML元模型,UML元模型包括类图元模型和顺序图元模型,用来定义类图和顺序图的绘制规则;
[0019]第三步:代码转换规则的建立,转换规则是根据UML模型元素的特点和C++语言的代码结构建立的;
[0020]第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现。
[0021]所述类图元模型定义了使用UML描述对象模型的完整语法规则,UML类图中的类与元模型中的Class对应,属性和操作与Attribute和Operat1n对应,操作的参数对应Parameter,其中Kind表示该参数的类型,属性和参数的类型用Classf ier表示。
[0022]所述顺序图用来描述类中的一个方法,对应原模型中的Interact1n、Co llaborat 1n和Operat 1n,其中的Operat 1n用来记录该顺序图所描述的方法的名称和可见性,顺序图中的对象对应元模型中的Classifi erRo I e,不同对象间通信的消息对应Message,消息中要执行的动作对应Act1n,该动作执行的条件用recurrence表示,动作的内容用Request表示。
[0023]所述第三步中的转换规则包括类图的转换规则和顺序图的转换规则,所述类图的转换规则包括类的转换规则与属性和操作的转换规则,UML中的类、属性和操作分别对应C++中的类、成员变量和成员函数,所述顺序图的转换规则包括关联关系的转换规则、顺序图的转换规则、条件的转换规则、变量赋值的转换规则、对象创建的转换规则、方法调用的转换规则和消息发送的转换规则。
[0024]其中,类的转换规则建立过程如下,待转换的模型元素是一个有名称的类,元模型中对象c的属性name记录了该类的名称,转换的第一步是.h文件(HFILE)和cpp文件(CFILE)的生成,.h文件包括头文件的引用IN-CLUDE、成员变量ATTRIBUTE和成员函数OPERAT1N!^声明,被规则2中的内容替换,非终结符号c.name表示本规则所描述类的类名,被类名所替换,语句#ifndef和#define后的c.name全部大写在C++中,通常成员变量是私有的,成员函数是公有的,分别使用终结符号private:和public:描述,.cpp文件包括对应头文件的引用和成员函数0PERAT10NC的具体实现。
[0025]属性和操作的转换规则的建立,待转换的是一个包含属性和操作的类,元模型中对象0和3分别记录操作和属性的名称,plp2分别为操作的参数和返回值,cl,c2,c3对应属性参数返回值的类型,转换规则定义了 AT-TRIBUTE的转换过程,cl.name和a.name表示属性的类型和名称,二者组合完成了 C++中成员变量的声明该转换规则中的符号“_”是带下划线的空格,表示直接生成代码中的空格,0P-ERAT10NH的转换过程与此相同。0PERAT10NC的具体实现被顺序图生成的代码所替换,用非终结符号SEQUENCE表示。
[0026]关联关系的转换规则的建立,元模型中cl,c2表示两个相互关联的类,它们之间的关联关系用a记录,转换规则中定义了在ClassA中添加对ClassB的引用,用符号IN-CLUDE表不O
[0027]顺序图的转换规则的建立,对象ο表示该顺序图是方法opeH)的具体实现,非终结符号SEQUENCE被L0CALDATA和MESSAGE替换,说明一个方法的实现细节中包括局部变量的定义以及各对象之间相互传递消息的过程。
[0028]条件的转换规则建立,对象a向对象b发送了一个包含条件的消息,元模型中对象m的属性recurrence记录了条件的内容,当该条件满足时,执行这个消息上的操作C++中使用if语句表示条件。
[0029]变量赋值的转换规则建立,将ClassB的方法oper()的返回值赋给变量x,元模型中对象rv表示变量的名称,r记录了方法的名称,c表示函数的返回值类型即变量的类型转换规则的第一行显示了变量X的定义,第二行中非终结符号ASIG匪ENT表示该变量会被赋值,它可以被函数的返回值赋值,也可以被常量或表达式赋值。
[0030]对象创建的转换规则建立,“《create》”表示该消息是一个创建对象的操作,元模型中r表示待创建的对象的名称,P和c2表示参数的名称和类型C++中有两种创建对象的方式,分别为ClassNameob ject(param)和Class_Name*object = newClassName(param)。
[0031]方法调用的转换规则建立,消息的内容为调用对象objectB中的方法oper(),元模型中cr记录对象的名称,r表示方法的名称,J^pc2表示参数的名称及类型,方法调用包括其他对象方法的调用和对象自身方法的调用C++中使用符号V’访问成员函数,转换规则显示了调用其他对象的方法并将结果赋值给一个变量的规则,当调用自身方法时,去掉cr.name.即可。
[0032]消息发送的转换规则建立,消息中不包含任何方法调用或者对象创建的内容,元模型中r记录了消息的内容,消息发送包括发送到其他对象的消息和发送给自身的反身消息,二者都只需直接将消息中的内容直接生成代码。
[0033]总之,本发明将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
【主权项】
1.一种智能化的软件编程方法,其特征在于:包括如下步骤: 第一步:根据软件设计要求绘制UML模型,UML模型包括语法正确的类图和顺序图,用来描述软件系统的静态结构和业务逻辑信息; 第二步:建立符合软件设计要求的UML元模型,UML元模型包括类图元模型和顺序图元模型,用来定义类图和顺序图的绘制规则; 第三步:代码转换规则的建立,转换规则是根据UML模型元素的特点和C++语言的代码结构建立的; 第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现。2.根据权利要求1所述的智能化的软件编程方法,其特征在于:所述类图元模型定义了使用UML描述对象模型的完整语法规则,UML类图中的类与元模型中的Class对应,属性和操作与Attribute和Operat 1n对应,操作的参数对应Parameter,其中Kind表示该参数的类型,属性和参数的类型用Classfier表示。3.根据权利要求1所述的智能化的软件编程方法,其特征在于:所述顺序图用来描述类中的一个方法,对应原模型中的Intera ct1n、Collabo rat1n和Ope rat1n,其中的Operat1n用来记录该顺序图所描述的方法的名称和可见性,顺序图中的对象对应元模型中的Classif ierRole,不同对象间通信的消息对应Message,消息中要执行的动作对应Act1n,该动作执行的条件用recurrence表示,动作的内容用Request表示。4.根据权利要求1所述的智能化的软件编程方法,其特征在于:所述第三步中的转换规则包括类图的转换规则和顺序图的转换规则,所述类图的转换规则包括类的转换规则与属性和操作的转换规则,UML中的类、属性和操作分别对应C++中的类、成员变量和成员函数,所述顺序图的转换规则包括关联关系的转换规则、顺序图的转换规则、条件的转换规则、变量赋值的转换规则、对象创建的转换规则、方法调用的转换规则和消息发送的转换规则。
【文档编号】G06F9/44GK106020788SQ201610270556
【公开日】2016年10月12日
【申请日】2016年4月28日
【发明人】贾瑞祥
【申请人】齐鲁工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1