CN106020788A - 一种智能化的软件编程方法 - Google Patents
一种智能化的软件编程方法 Download PDFInfo
- Publication number
- CN106020788A CN106020788A CN201610270556.1A CN201610270556A CN106020788A CN 106020788 A CN106020788 A CN 106020788A CN 201610270556 A CN201610270556 A CN 201610270556A CN 106020788 A CN106020788 A CN 106020788A
- Authority
- CN
- China
- Prior art keywords
- class
- model
- code
- transformational rule
- uml
- 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
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
- G06F8/33—Intelligent editors
-
- 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
- G06F8/31—Programming languages or programming paradigms
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)
Abstract
本发明公开了一种智能化的软件编程方法,包括如下步骤,第一步:根据软件设计要求绘制UML模型;第二步:建立符合软件设计要求的UML元模型;第三步:代码转换规则的建立;第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现;本发明将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
Description
技术领域
本发明涉及软件编程技术领域,尤其涉及一种智能化的软件编程方法。
背景技术
在软件开发的过程中,开发人员总是重复编写一些简单的代码,而且每当新技术来临,又不得不一再地重复过去的工作同时,需求的变化也从来没有停止过,为了解决这些问题,人们提出了代码自动生成技术,代码自动生成技术根据模型驱动架构MDA(ModelDrivenArchitecture)的思想,将由开发人员描述的软件系统模型转换为代码,使得模型成为软件开发的核心制品,提升了软件开发的抽象层次,从而提高软件开发效率和软件的可维护性,统一建模语言UML是一种以图形方式对系统进行分析设计的标准建模语言,使用UML建模可以清晰地表示系统的结构和行为信息UML模型中的类图显示了系统中各个类的静态结构,顺序图描述了对象之间消息传递的时间顺序因此,软件开发人员通常将二者结合描述软件系统的详细设计模型代码自动生成就以类图和顺序图为输入,依据一定的转换规则生成具有静态和动态信息的代码。
但是现有软件自动编程过程中生成的代码大多以Java为主,很少有能够在编程完成后生成C++代码的智能化的编程方法。
发明内容
本发明所要解决的技术问题是提供一种智能化的软件编程方法,其先将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
为解决上述技术问题,本发明所采取的技术方案是:一种一种智能化的软件编程方法,包括如下步骤:
第一步:根据软件设计要求绘制UML模型,UML模型包括语法正确的类图和顺序图,用来描述软件系统的静态结构和业务逻辑信息;
第二步:建立符合软件设计要求的UML元模型,UML元模型包括类图元模型和顺序图元模型,用来定义类图和顺序图的绘制规则;
第三步:代码转换规则的建立,转换规则是根据UML模型元素的特点和C++语言的代码结构建立的;
第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现。
所述类图元模型定义了使用UML描述对象模型的完整语法规则,UML类图中的类与元模型中的Class对应,属性和操作与Attribute和Operation对应,操作的参数对应Parameter,其中Kind表示该参数的类型,属性和参数的类型用Classfier表示。
所述顺序图用来描述类中的一个方法,对应原模型中的Interaction、Collaboration和Operation,其中的Operation用来记录该顺序图所描述的方法的名称和可见性,顺序图中的对象对应元模型中的ClassifierRole,不同对象间通信的消息对应Message,消息中要执行的动作对应Action,该动作执行的条件用recurrence表示,动作的内容用Request表示。
所述第三步中的转换规则包括类图的转换规则和顺序图的转换规则,所述类图的转换规则包括类的转换规则与属性和操作的转换规则,UML中的类、属性和操作分别对应C++中的类、成员变量和成员函数,所述顺序图的转换规则包括关联关系的转换规则、顺序图的转换规则、条件的转换规则、变量赋值的转换规则、对象创建的转换规则、方法调用的转换规则和消息发送的转换规则。
采用上述技术方案所产生的有益效果在于:本发明将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
具体实施方式
下面对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
本发明公开了一种智能化的软件编程方法,包括如下步骤:
第一步:根据软件设计要求绘制UML模型,UML模型包括语法正确的类图和顺序图,用来描述软件系统的静态结构和业务逻辑信息;
第二步:建立符合软件设计要求的UML元模型,UML元模型包括类图元模型和顺序图元模型,用来定义类图和顺序图的绘制规则;
第三步:代码转换规则的建立,转换规则是根据UML模型元素的特点和C++语言的代码结构建立的;
第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现。
所述类图元模型定义了使用UML描述对象模型的完整语法规则,UML类图中的类与元模型中的Class对应,属性和操作与Attribute和Operation对应,操作的参数对应Parameter,其中Kind表示该参数的类型,属性和参数的类型用Classfier表示。
所述顺序图用来描述类中的一个方法,对应原模型中的Interaction、Collaboration和Operation,其中的Operation用来记录该顺序图所描述的方法的名称和可见性,顺序图中的对象对应元模型中的ClassifierRole,不同对象间通信的消息对应Message,消息中要执行的动作对应Action,该动作执行的条件用recurrence表示,动作的内容用Request表示。
所述第三步中的转换规则包括类图的转换规则和顺序图的转换规则,所述类图的转换规则包括类的转换规则与属性和操作的转换规则,UML中的类、属性和操作分别对应C++中的类、成员变量和成员函数,所述顺序图的转换规则包括关联关系的转换规则、顺序图的转换规则、条件的转换规则、变量赋值的转换规则、对象创建的转换规则、方法调用的转换规则和消息发送的转换规则。
其中,类的转换规则建立过程如下,待转换的模型元素是一个有名称的类,元模型中对象c的属性name记录了该类的名称,转换的第一步是.h文件(HFILE)和cpp文件(CFILE)的生成,.h文件包括头文件的引用IN-CLUDE、成员变量ATTRIBUTE和成员函数OPERATIONH的声明,被规则2中的内容替换,非终结符号c.name表示本规则所描述类的类名,被类名所替换,语句#ifndef和#define后的c.name全部大写在C++中,通常成员变量是私有的,成员函数是公有的,分别使用终结符号private:和public:描述,.cpp文件包括对应头文件的引用和成员函数OPERATIONC的具体实现。
属性和操作的转换规则的建立,待转换的是一个包含属性和操作的类,元模型中对象o和a分别记录操作和属性的名称,plp2分别为操作的参数和返回值,c1,c2,c3对应属性参数返回值的类型,转换规则定义了AT-TRIBUTE的转换过程,c1.name和a.name表示属性的类型和名称,二者组合完成了C++中成员变量的声明该转换规则中的符号“_”是带下划线的空格,表示直接生成代码中的空格,OP-ERATIONH的转换过程与此相同。OPERATIONC的具体实现被顺序图生成的代码所替换,用非终结符号SEQUENCE表示。
关联关系的转换规则的建立,元模型中c1,c2表示两个相互关联的类,它们之间的关联关系用a记录,转换规则中定义了在ClassA中添加对ClassB的引用,用符号IN-CLUDE表示。
顺序图的转换规则的建立,对象o表示该顺序图是方法oper( )的具体实现,非终结符号SEQUENCE被LOCALDATA和MESSAGE替换,说明一个方法的实现细节中包括局部变量的定义以及各对象之间相互传递消息的过程。
条件的转换规则建立,对象a向对象b发送了一个包含条件的消息,元模型中对象m的属性recurrence记录了条件的内容,当该条件满足时,执行这个消息上的操作C++中使用if语句表示条件。
变量赋值的转换规则建立,将ClassB的方法oper( )的返回值赋给变量x,元模型中对象rv表示变量的名称,r记录了方法的名称,c表示函数的返回值类型即变量的类型转换规则的第一行显示了变量x的定义,第二行中非终结符号ASIGNMENT表示该变量会被赋值,它可以被函数的返回值赋值,也可以被常量或表达式赋值。
对象创建的转换规则建立,“《create》”表示该消息是一个创建对象的操作,元模型中r表示待创建的对象的名称,p和c2表示参数的名称和类型C++中有两种创建对象的方式,分别为ClassNameobject(param)和Class-Name*object=newClassName(param)。
方法调用的转换规则建立,消息的内容为调用对象objectB中的方法oper( ),元模型中cr记录对象的名称,r表示方法的名称,p和c2表示参数的名称及类型,方法调用包括其他对象方法的调用和对象自身方法的调用C++中使用符号“.”访问成员函数,转换规则显示了调用其他对象的方法并将结果赋值给一个变量的规则,当调用自身方法时,去掉cr.name.即可。
消息发送的转换规则建立,消息中不包含任何方法调用或者对象创建的内容,元模型中r记录了消息的内容,消息发送包括发送到其他对象的消息和发送给自身的反身消息,二者都只需直接将消息中的内容直接生成代码。
总之,本发明将UML模型中的各个元素映射到相应的元模型,然后根据元模型的转换规则逐步生成C++代码,与多数文献中提出的只能生成C++代码框架的方法相比,本发明提出的方法可以生成内容更加完整的代码,减少了编程人员手动添加代码的工作,从而提高了软件的开发效率和软件产品的质量。
Claims (4)
1.一种智能化的软件编程方法,其特征在于:包括如下步骤:
第一步:根据软件设计要求绘制UML模型,UML模型包括语法正确的类图和顺序图,用来描述软件系统的静态结构和业务逻辑信息;
第二步:建立符合软件设计要求的UML元模型,UML元模型包括类图元模型和顺序图元模型,用来定义类图和顺序图的绘制规则;
第三步:代码转换规则的建立,转换规则是根据UML模型元素的特点和C++语言的代码结构建立的;
第四步:代码生成,根据第三步所建立的代码转换规则,利用计算机将输入的UML模型转换为C++代码,其中类图生成C++中的类,顺序图生成方法内部的具体实现。
2.根据权利要求1所述的智能化的软件编程方法,其特征在于:所述类图元模型定义了使用UML描述对象模型的完整语法规则,UML类图中的类与元模型中的Class对应,属性和操作与Attribute和Operation对应,操作的参数对应Parameter,其中Kind表示该参数的类型,属性和参数的类型用Classfier表示。
3.根据权利要求1所述的智能化的软件编程方法,其特征在于:所述顺序图用来描述类中的一个方法,对应原模型中的Interaction、Collaboration和Operation,其中的Operation用来记录该顺序图所描述的方法的名称和可见性,顺序图中的对象对应元模型中的ClassifierRole,不同对象间通信的消息对应Message,消息中要执行的动作对应Action,该动作执行的条件用recurrence表示,动作的内容用Request表示。
4.根据权利要求1所述的智能化的软件编程方法,其特征在于:所述第三步中的转换规则包括类图的转换规则和顺序图的转换规则,所述类图的转换规则包括类的转换规则与属性和操作的转换规则,UML中的类、属性和操作分别对应C++中的类、成员变量和成员函数,所述顺序图的转换规则包括关联关系的转换规则、顺序图的转换规则、条件的转换规则、变量赋值的转换规则、对象创建的转换规则、方法调用的转换规则和消息发送的转换规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610270556.1A CN106020788A (zh) | 2016-04-28 | 2016-04-28 | 一种智能化的软件编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610270556.1A CN106020788A (zh) | 2016-04-28 | 2016-04-28 | 一种智能化的软件编程方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106020788A true CN106020788A (zh) | 2016-10-12 |
Family
ID=57082009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610270556.1A Pending CN106020788A (zh) | 2016-04-28 | 2016-04-28 | 一种智能化的软件编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106020788A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908429A (zh) * | 2017-08-10 | 2018-04-13 | 广州真诺电子科技有限公司 | 应用于机器人软件工程师的人机交互与编程系统 |
CN109614091A (zh) * | 2018-10-09 | 2019-04-12 | 中国平安人寿保险股份有限公司 | 代码自动生成方法、装置、电子设备及存储介质 |
CN113535151A (zh) * | 2020-04-14 | 2021-10-22 | 北京京东振世信息技术有限公司 | 代码生成方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928816A (zh) * | 2006-09-26 | 2007-03-14 | 武汉大学 | 嵌入式系统软件的模型驱动与构件化开发方法 |
CN103885816A (zh) * | 2014-03-28 | 2014-06-25 | 南京大学 | 一种实时嵌入式系统的仿真方法 |
-
2016
- 2016-04-28 CN CN201610270556.1A patent/CN106020788A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1928816A (zh) * | 2006-09-26 | 2007-03-14 | 武汉大学 | 嵌入式系统软件的模型驱动与构件化开发方法 |
CN103885816A (zh) * | 2014-03-28 | 2014-06-25 | 南京大学 | 一种实时嵌入式系统的仿真方法 |
Non-Patent Citations (1)
Title |
---|
王晓宇 等: "基于UML类图和顺序图的C_代码自动生成方法", 《计算机应用与软件》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908429A (zh) * | 2017-08-10 | 2018-04-13 | 广州真诺电子科技有限公司 | 应用于机器人软件工程师的人机交互与编程系统 |
CN107908429B (zh) * | 2017-08-10 | 2021-07-23 | 广州真诺电子科技有限公司 | 应用于机器人软件工程师的人机交互与编程系统 |
CN109614091A (zh) * | 2018-10-09 | 2019-04-12 | 中国平安人寿保险股份有限公司 | 代码自动生成方法、装置、电子设备及存储介质 |
CN113535151A (zh) * | 2020-04-14 | 2021-10-22 | 北京京东振世信息技术有限公司 | 代码生成方法和装置 |
CN113535151B (zh) * | 2020-04-14 | 2024-05-17 | 北京京东振世信息技术有限公司 | 代码生成方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102034151B (zh) | 基于soa的企业协同管理系统业务流程设计方法及系统 | |
CN103107895B (zh) | 一种基于配置解析应用规则的计费业务规则引擎组合系统及其方法 | |
CN102054224A (zh) | 基于soa的服装企业协同管理系统开发方法及系统 | |
CN102236709B (zh) | 一种基于Flex的监控页面显示方法及系统 | |
CN102034173A (zh) | 基于soa的模具信息协同管理系统开发方法及系统 | |
CN106020788A (zh) | 一种智能化的软件编程方法 | |
CN105786517A (zh) | 基于“互联网+”税务行业信息化架构设计方法 | |
He et al. | ISA-95 tool for enterprise modeling | |
CN115480810A (zh) | 一种基于云原生的低代码平台 | |
Mannion et al. | oriented variability modeling | |
Kurpjuweit et al. | Concern-oriented business architecture engineering | |
CN102087595A (zh) | 基于soa的专利代理协同管理系统开发方法及系统 | |
CN102486731B (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
CN103971225A (zh) | 一种工作流动态扩展方法及系统 | |
CN102109993A (zh) | 基于soa的专利代理协同管理系统开发方法及系统 | |
CN111309378A (zh) | 一种机器学习模型生命周期管理系统及方法 | |
D'Ambrogio et al. | A Model Transformation Approach for the Development of HLA-based Distributed Simulation Systems. | |
CN111552459B (zh) | 业务编排流程化管理系统及方法 | |
CN114862334A (zh) | 一种智能合同审查规则配置平台的设计方法 | |
CN102136097A (zh) | 基于soa的服装企业协同管理系统开发方法及系统 | |
CN111291444B (zh) | 飞机装配的建模方法、装置、设备及存储介质 | |
CN108062219B (zh) | 一种分布式软件开发过程管理方法 | |
CN101702217A (zh) | 遵循xpdl规范工作流中间件流程定义管理方法 | |
CN112884455A (zh) | 任务计划处理系统、方法和装置 | |
CN112817571B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161012 |
|
RJ01 | Rejection of invention patent application after publication |