一种软件生成方法和装置与流程

文档序号:11917775阅读:205来源:国知局
一种软件生成方法和装置与流程

本发明涉及计算机技术领域,具体而言,涉及一种软件生成方法和装置。



背景技术:

当开发人员在进行软件开发时,需要编写代码,但是一个软件是由多个功能模块组成的,每个功能模块都需要编写对应的代码,并将各个功能模块对应的代码以项目为单位存储在解决方案文件中,当需要生成软件时,将该软件对应的解决方案文件导入软件生成工具即可,在现有技术中,大都是通过Visual Studio工具生成软件。

有的软件在进行开发时,可能是由一个团队中的多人合作开发的,每人负责开发其中一部分,在进行开发时,每人将其负责的项目的代码写入一个解决方案文件,这样,该软件会对应多个解决方案文件,并且每个解决方案文件中的项目之间可能会存在引用关系,而在生成软件时,需要先生成被引用的项目。

在采用现有技术中的方法生成软件时,大都是以解决方案文件为单位生成,即一次生成一个解决方案文件中的项目,如果,需要生成的软件对应多个解决方案文件,这样,需要进行多次生成才能生成完整的软件,但是,当多个解决方案文件中的项目之间存在互相引用关系时,如果某个解决方案文件中有引用关系的项目存在改动,再采用上述方式生成软件时,在生成该解决方案文件中的项目时,可能会仍然采用改动之前的项目进行生成,这样会导致整个软件生成失败或者生成报错。



技术实现要素:

有鉴于此,本发明实施方式的目的在于提供一种软件生成方法和装置,以解决当多个解决方案文件中的项目之间存在互相引用关系时,如果某个解决方案文件中有引用关系的项目存在改动,再采用现有技术中的方式生成软件时,在生成该解决方案文件中的项目时,可能会仍然采用改动之前的项目进行生成,这样会导致整个软件生成失败或者生成报错的问题。

第一方面,本发明实施方式提供了一种软件生成方法,其中,该方法包括:

获取待生成软件对应的至少一个解决方案文件,所述解决方案文件包括多个项目;

确定所述解决方案文件中各个所述项目之间的引用关系;

根据所述项目之间的引用关系及所述解决方案文件的预设顺序对所述项目进行排序,得到项目生成顺序列表;

按照所述项目生成顺序列表生成所述待生成软件。

结合第一方面,本发明实施方式提供了上述第一方面的第一种可能的实现方式,其中,所述确定所述解决方案文件中各个所述项目之间的引用关系,包括:

根据所述项目的标识从所述解决方案文件中获取各个所述项目对应的项目文件,所述项目文件包括所述项目在所述解决方案文件中的存储路径及所述项目引用的其他项目;

根据各个所述项目引用的其他项目,确定各个所述项目之间的引用关系。

结合第一方面,本发明实施方式提供了上述第一方面的第二种可能的实现方式,其中,所述根据所述项目之间的引用关系及所述解决方案文件的预设顺序对所述项目进行排序,包括:

将所述解决方案文件包括的项目组成项目列表;

根据所述项目之间的引用关系,将所述项目列表中没有引用关系的项目组成第一子项目列表,将所述项目列表中被其他项目引用且没有引用其他项目的项目组成第二子项目列表,将所述项目列表中引用其他项目的项目组成第三子项目列表;

按照所述解决方案文件的预设顺序对所述第一子项目列表中的项目进行排序,及按照所述解决方案文件的预设顺序对所述第二子项目列表中的项目进行排序;

按照被引用优先的原则及所述解决方案文件的预设顺序对所述第三子项目列表中的项目进行排序;

将所述第三子项目列表排在所述第二子项目列表的后面。

结合第一方面的第二种可能的实现方式,本发明实施方式提供了上述第一方面的第三种可能的实现方式,其中,将所述第一子项目列表置于所述第二子项目列表的前面;

或者,将所述第一子项目列表置于所述第三子项目列表的后面。

结合第一方面的第二种可能的实现方式,本发明实施方式提供了上述第一方面的第四种可能的实现方式,其中,所述按照所述解决方案文件的预设顺序对所述第一子项目列表中的项目进行排序,包括:

确定所述第一子项目列表中的项目所在的解决方案文件;

将所述解决方案文件的预设顺序确定为所述第一子项目列表中的项目的排列顺序。

结合第一方面至第一方面的第四种可能的实现方式中任一种可能的实现方式,本发明实施方式提供了上述第一方面的第五种可能的实现方式,其中,所述解决方案文件的预设顺序根据所述解决方案文件的名称确定;

所述解决方案文件的名称为字母,根据所述字母的顺序确定所述解决方案文件的预设顺序。

结合第一方面,本发明实施方式提供了上述第一方面的第六种可能的实现方式,其中,通过将所述项目生成顺序列表写入批处理文件生成所述待生成软件。

结合第一方面的第一种可能的实现方式,本发明实施方式提供了上述第一方面的第七种可能的实现方式,其中,所述根据所述项目的标识通过正则匹配从所述解决方案文件中获取各个所述项目对应的项目文件。

第二方面,本发明实施方式提供了一种软件生成装置,其中,所述装置包括:

获取模块,用于获取待生成软件对应的至少一个解决方案文件,所述解决方案文件包括多个项目;

确定模块,用于确定所述解决方案文件中各个所述项目之间的引用关系;

排序模块,用于根据所述项目之间的引用关系及所述解决方案文件的预设顺序对所述项目进行排序,得到项目生成顺序列表;

生成模块,用于按照所述项目生成顺序列表生成所述待生成软件。

结合第二方面,本发明实施方式提供了上述第二方面的第一种可能的实现方式,其中,所述确定模块包括:

获取单元,用于根据所述项目的标识从所述解决方案文件中获取各个所述项目对应的项目文件,所述项目文件包括所述项目在所述解决方案文件中的存储路径及所述项目引用的其他项目;

第一确定单元,用于根据各个所述项目引用的其他项目,确定各个所述项目之间的引用关系。

结合第二方面,本发明实施方式提供了上述第二方面的第二种可能的实现方式,其中,所述排序模块包括:

第一组成单元,用于将所述解决方案文件包括的项目组成项目列表;

第二组成单元,用于根据所述项目之间的引用关系,将所述项目列表中没有引用关系的项目组成第一子项目列表,将所述项目列表中被其他项目引用且没有引用其他项目的项目组成第二子项目列表,将所述项目列表中引用其他项目的项目组成第三子项目列表;

第一排序单元,用于按照所述解决方案文件的预设顺序对所述第一子项目列表中的项目进行排序,及按照所述解决方案文件的预设顺序对所述第二子项目列表中的项目进行排序;

第二排序单元,用于按照被引用优先的原则及所述解决方案文件的预设顺序对所述第三子项目列表进行排序;

第三排序单元,用于将所述第三子项目列表排在所述第二子项目列表的后面。

结合第二方面的第二种可能的实现方式,本发明实施方式提供了上述第二方面的第三种可能的实现方式,其中,所述第一排序单元还用于,

确定所述第一子项目列表中的项目所在的解决方案文件;将所述解决方案文件的预设顺序确定为所述第一子项目列表中的项目的排列顺序。

本发明实施方式提供了一种软件生成方法和装置,获取待生成软件对应的至少一个解决方案文件,将所有解决方案文件中的项目进行排序,得到项目生成顺序列表,按照该项目生成顺利列表的顺序生成软件,这样将所有解决方案文件中的项目作为整体生成待生成软件,避免了当解决方案文件中的项目存在互相引用关系时,容易出现软件生成失败或者软件生成报错的情况的发生。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施方式,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施方式1所提供的软件生成方法的流程图;

图2示出了本发明实施方式1所提供的软件生成方法中确定解决方案文件中各个项目之间的引用关系的流程图;

图3示出了本发明实施方式1所提供的软件生成方法中对解决方案文件对应的项目进行排序的流程图;

图4示出了本发明实施方式2所提供的软件生成装置的结构示意图。

具体实施方式

为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。通常在此处附图中描述和示出的本发明实施方式的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明的实施方式,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施方式,都属于本发明保护的范围。

考虑到现有技术中,大都是以解决方案文件为单位生成,即一次生成一个解决方案文件中的项目,如果,需要生成的软件对应多个解决方案文件,这样,需要进行多次生成才能生成完整的软件,但是,当多个解决方案文件中的项目之间存在互相引用关系时,如果某个解决方案文件中有引用关系的项目存在改动,再采用上述方式生成软件时,在生成该解决方案文件中的项目时,可能会仍然采用改动之前的项目进行生成,这样会导致整个软件生成失败或者生成报错。基于此,本发明实施方式提供了一种软件生成方法和装置,下面通过实施方式进行描述。

实施方式1

本发明实施方式提供了一种软件生成方法,如图1所示,该方法包括步骤S110-S140,具体如下。

S110,获取待生成软件对应的至少一个解决方案文件,该解决方案文件包括多个项目。

上述待生成软件对应的解决方案文件可以是一个,也可以是多个,该解决方案文件可以是XML(Extensible Markup Language,可扩展标记语言)格式的文件。

当开发人员在进行软件开发时,可以由多人共同开发,每人负责其中几个项目的开发,这样,每个人都会将其开发的项目对应的代码程序写入一个解决方案文件,这样,一个软件就会对应多个解决方案文件。

上述各个项目指的是一个软件中的各个功能模块。

在本发明实施方式中,在获取待生成软件对应的解决方案文件时,可以根据解决方案文件的后缀批量获取待生成软件对应的解决方案文件。

S120,确定上述解决方案文件中各个项目之间的引用关系。

由于每个解决方案文件中会存在多个项目,这些项目之间会有引用关系,甚至不同解决方案文件之间的项目也会存在引用关系。比如说,A解决方案文件中存在a1、a2和a3三个项目,则a1、a2和a3这三个项目之间可能存在引用关系,如果B解决方案文件中存在b1、b2和b3三个项目,则A解决方案文件和B解决方案文件中的项目之间也可能会存在引用关系,比如项目b1引用项目a1

上述项目的引用指的是该项目里的代码程序使用了别的项目里的代码程序,这时,这两个项目存在引用关系,比如说,项目a1中的代码程序使用了项目b1中的代码程序,则项目a1引用项目b1,即项目b1就是被引用的项目。

在本发明实施方式中,如图2所示,确定该软件对应的所有项目之间的引用关系,包括步骤S210-S220,具体如下:

S210,根据项目的标识从解决方案文件中获取各个项目对应的项目文件,该项目文件包括项目在解决方案文件中的存储路径及项目引用的其他项目;

S220,根据各个项目引用的其他项目,确定各个项目之间的引用关系。

上述项目的标识可以是项目的名称。

开发人员在开发软件时,将项目对应的代码程序、该项目在解决方案文件中的存储路径以及该项目引用的其它项目生成该项目对应的项目文件,存储在解决方案文件中,在一个解决方案文件中可能存储有多个项目对应的项目文件。

当然,在上述项目文件中还可以存储有该项目生成的输出配置与路径。

在本发明实施方式中,可以根据项目的标识通过正则匹配从解决方案文件中获取各个项目对应的项目文件。

上述项目文件可是XML格式的文件。

当从解决方案文件中获取到各个项目对应的项目文件后,根据各个项目文件中存储的每个项目引用的其他的项目,可以确定出各个项目之间的引用关系。

S130,根据上述项目之间的引用关系及上述解决方案文件的预设顺序对上述项目进行排序,得到项目生成顺序列表。

作为一个实施方式,如图3所示,对上述项目进行排序,包括步骤S310-S350,具体如下:

S310,将上述解决方案文件包括的项目组成项目列表。

S320,根据上述项目之间的引用关系,将上述项目列表中没有引用关系的项目组成第一子项目列表,将上述项目列表中被其他项目引用且没有引用其他项目的项目组成第二子项目列表,将上述项目列表中引用其他项目的项目组成第三子项目列表;

S330,按照上述解决方案文件的预设顺序对上述第一子项目列表中的项目进行排序,及按照上述解决方案文件的预设顺序对上述第二子项目列表中的项目进行排序;

S340,按照被引用优先的原则及上述的解决方案文件的预设顺序对上述第三子项目列表中的项目进行排序;

S350,将上述第三子项目列表排在上述第二子项目列表的后面。

将待生成软件对应的解决方案文件中的所有项目组成一个项目列表,该列表中的项目,有的项目可能没有引用其他项目,同时也没有被其他的项目引用,有的项目可能只是被其他项目引用,而没有引用其他项目,因此,可以将上述所有的项目列表分成三个子项目列表,即第一子项目列表、第二子项目列表和第三子项目列表。

在本发明实施方式中,将既没有引用其他项目也没有被其他项目引用的项目组成第一子项目列表,将只被其他项目引用而没有引用其他项目的项目组成第二子项目列表,将有引用其他项目的项目组成第三子项目列表。

在进行排序时,将第三子项目列表排在第二子项目列表的后面。

而将第一子项目列表置于第二子项目列表的前面,或者,将第一子项目列表置于第二子项目列表的后面。

上述第一子项目列表的具体位置可以根据实际应用进行设置,本发明实施方式并不对上述第一子项目列表的具体位置进行限定。

上述解决方案的预设顺序可以根据解决方案文件的名称确定;

如果上述解决方案文件的名称为字母,可以根据字母的顺序确定解决方案文件的预设顺序。

比如说,上述待生成软件对应三个解决方案文件,三个解决方案文件的文件名称分别为A、B、C,因此,按照字母顺序表可以确定出上述解决方案文件的预设顺序为A解决方案文件、B解决方案文件、C解决方案文件。

当然,除此之外,还可以用数字命令上述解决方案文件,按照数字的大小顺序确定出各个解决方案文件的预设顺序,当然,上述解决方案文件的名称并不局限于此。

上述被引用优先的原则,指的是被引用的项目排在引用该项目的项目的前面。

上述按照解决方案文件的预设顺序对上述第一子项目列表进行排序,具体包括:确定第一子项目列表中的项目所在的解决方案文件;将上述解决方案文件的预设顺序确定为第一子项目列表中的项目的排列顺序。

比如说,上述第一子项目列表中包括b1和c1两个项目,项目b1属于B解决方案文件,项目c1属于C解决方案文件,而解决方案文件的顺序为B解决方案文件排在C解决方案文件的前面,因此,项目b1排在项目c1的前面。

为了详细介绍上述项目的排序过程,下面将举例进行说明。

假设现在有三个解决方案文件,且三个解决方案文件的文件名分别为A、B和C,A解决方案文件中包括三个项目,分别为a1、a2和a3,B解决方案文件中包括三个项目,分别为b1、b2和b3,C解决方案文件中包括三个项目,分别为c1、c2和c3,假设上述项目a1引用项目b1,项目b2引用项目a2,项目a3引用项目c3,以及在每个解决方案文件内部还存在如下引用关系,项目a3引用项目a2,项目a2引用项目a1,项目b3引用项目b2,项目b2引用项目b1,项目c3引用项目c2,项目c2引用项目c1,现在对上述三个解决方案文件中的所有项目进行排序。

首先,将上述三个解决方案文件中的所有项目组成一个项目列表,得到的项目列表为{a1,a2,a3,b1,b2,b3,c1,c2,c3},该项目列表中只是被引用的项目有b1和c1,因此,上述第二子项目列表包括{b1,c1},上述项目集合中不存在没有引用关系的项目,因此,第一子项目列表为空,第三子项目列表包括{a1,a2,a3,b2,b3,c2,c3},由于上述第二子项目列表中的项目只是被引用,因此,按照该项目所在解决方案文件的预设顺序进行排序即可,b1在B解决方案文件中,c1在C解决方案文件中,由于解决方案文件的文件名称为字母,因此按照字母顺序对上述解决方案文件进行排序即可,可以确定出B解决方案排在C解决方案的前面,因此,项目b1排在项目c1的前面,所以,第二子项目列表的顺序为{b1,c1}。按照被引用优先以及字母的顺序对第三子项目列表中的项目进行排序,可以得到第三子项目列表的顺序为{a1,a2,b2,b3,c2,c3,a3},最后,将排序后的第二子项目列表排在第三子项目列表的前面,确定出上述项目列表的排序为{b1,c1,a1,a2,b2,b3,c2,c3,a3},即为项目生成顺序列表。

S140,按照上述项目生成顺序列表生成待生成软件。

当确定出待生成软件对应的项目生成顺序列表后,将上述项目生成顺序列表写入批处理文件生成待生成软件。

当将项目生成顺序列表写入批处理文件后,项目生成顺序列表中的项目按顺序运行生成软件。

如果再次生成上述待生成软件时,如果解决方案文件中的项目之间的引用关系没有发生变化,但是,项目的配置或者编码有修改,这时不需要将修改后的项目再次写入批处理文件,直接使用上次生成的批处理文件生成软件即可。

本发明实施方式提供了一种软件生成方法,获取待生成软件对应的至少一个解决方案文件,将所有解决方案文件中的项目进行排序,得到项目生成顺序列表,按照该项目生成顺利列表的顺序生成软件,这样将所有解决方案文件中的项目作为整体生成待生成软件,避免了当解决方案文件中的项目存在互相引用关系时,容易出现软件生成失败或者软件生成报错的情况的发生。

实施方式2

本发明实施方式提供了一种软件生成装置,如图4所示,该装置包括获取模块410、确定模块420、排序模块430和生成模块440;

上述获取模块410,用于获取待生成软件对应的至少一个解决方案文件,该解决方案文件包括多个项目;

上述确定模块420,用于确定上述解决方案文件中各个项目之间的引用关系;

上述排序模块430,用于根据上述项目之间的引用关系及解决方案文件的预设顺序对上述项目进行排序,得到项目生成顺序列表;

上述生成模块440,用于按照上述项目生成顺序列表生成上述待生成软件。

上述确定模块420确定上述解决方案文件中各个项目之间的引用关系是通过获取单元和第一确定单元实现的,具体包括:

上述获取单元,用于根据项目的标识从上述解决方案文件中获取各个项目对应的项目文件,该项目文件包括上述项目在解决方案文件中的存储路径及上述项目引用的其他项目;上述第一确定单元,用于根据各个项目引用的其他项目,确定各个上述项目之间的引用关系。

上述排序模块430对上述项目进行排序是通过第一组成单元、第二组成单元、第一排序单元、第二排序单元和第三排序单元实现的,具体包括:

上述第一组成单元,用于将解决上述解决方案文件包括的项目组成项目列表;上述第二组成单元,用于根据上述项目之间的引用关系,将上述项目列表中没有引用关系的项目组成第一子项目列表,将上述项目列表中被其他项目引用且没有引用其他项目的项目组成第二子项目列表,将上述项目列表中引用其他项目的项目组成第三子项目列表;上述第一排序单元,用于按照上述解决方案文件的预设顺序对上述第一子项目列表中的项目进行排序,及按照上述解决方案文件的预设顺序对上述第二子项目列表中的项目进行排序;上述第二排序单元,用于按照被引用优先的原则及上述解决方案文件的预设顺序对上述第三子项目列表进行排序;上述第三排序单元,用于将上述第三子项目列表排在上述第二子项目列表的后面。

上述第一排序单元,还用于确定第一子项目列表中的项目所在的解决方案文件;将上述解决方案文件的预设顺序确定为第一子项目列表中的项目的排列顺序。

本发明实施方式提供的软件生成装置,获取待生成软件对应的至少一个解决方案文件,将所有解决方案文件中的项目进行排序,得到项目生成顺序列表,按照该项目生成顺利列表的顺序生成软件,这样将所有解决方案文件中的项目作为整体生成待生成软件,避免了当解决方案文件中的项目存在互相引用关系时,容易出现软件生成失败或者软件生成报错的情况的发生。

本发明实施方式所提供的软件生成装置可以为安装于设备上的软件等。本发明实施方式所提供的装置,其实现原理及产生的技术效果和前述方法实施方式相同,为简要描述,装置实施方式部分未提及之处,可参考前述方法实施方式中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的装置、模块和单元的具体工作过程,均可以参考上述方法实施方式中的对应过程,在此不再赘述。

在本发明所提供的实施方式中,应该理解到,所揭露装置和方法,可以通过其他的方式实现。以上所描述的装置实施方式仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或单元可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本发明提供的实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施方式,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施方式所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施方式技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1