一种基于神经网络的软件架构选择的方法及装置与流程

文档序号:16665677发布日期:2019-01-18 23:15阅读:170来源:国知局
一种基于神经网络的软件架构选择的方法及装置与流程

本发明涉及机器学习技术领域,尤指一种基于神经网络的软件架构选择的方法及装置。



背景技术:

机器学习研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习需要经过数据选择,分析,特征选择,算法设计,训练,验证,测试,发布线上推理应用一系列过程。深度学习是机器学习中的一个分支。

软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

在现有的技术中,软件架构的选择全部是依据软件架构师及一些较为资深的软件设计者自己的经验和主观判断来人为的选择。现有的选择方式的缺陷在于每个架构师的项目背景、知识结构以及个人喜好不同,从而在选择架构时,带有极强的主观性,有时选择的架构并不是最优架构,且不同的架构师的知识和之前积累的项目的组织过程资产并不能共享和充分利用。



技术实现要素:

为了解决上述技术问题,本发明提供了一种基于神经网络的软件架构选择的方法及装置,以实现自动选择软件架构。

为了达到本发明目的,本发明提供了一种基于神经网络的软件架构选择的方法,包括:

根据多种待选的选择软件架构的方法建立选择软件架构的神经网络模型;

将指定时间段内执行过的项目数据输入所述神经网络模型进行训练;

将新项目的特征参数输入训练好的神经网络模型,由所述神经网络模型选择出满足预置指标的软件架构。

进一步地,所述将指定时间段内执行过的项目数据输入所述神经网络模型进行训练后,还包括:

保存训练好的神经网络模型及相关参数。

进一步地,所述项目数据包括以下的一项或多项:

项目类型、项目需求特点、项目研发周期、项目采用的软件架构。

进一步地,如待选的选择软件架构的方法有n种,则所述神经网络模型包括:三个全连接隐藏层,以sigmoid为激活函数,n个节点输出层、若干个节点的输入层。

一种基于神经网络的软件架构选择的装置,其中,包括:

建立模块,用于根据多种待选的选择软件架构的方法建立选择软件架构的神经网络模型;

训练模块,用于将指定时间段内执行过的项目数据输入所述神经网络模型进行训练;

选择模块,用于将新项目的特征参数输入训练好的神经网络模型,由所述神经网络模型选择出满足预置指标的软件架构。

进一步地,所述装置还包括:

存储模块,用于保存训练好的神经网络模型及相关参数。

进一步地,所述项目数据包括以下的一项或多项:

项目类型、项目需求特点、项目研发周期、项目采用的软件架构。

进一步地,如待选的选择软件架构的方法有n种,则所述神经网络模型包括:三个全连接隐藏层,以sigmoid为激活函数,n个节点输出层、若干个节点的输入层。

一种基于神经网络的软件架构选择的装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,其中,当所述指令被所述处理器执行时,实现上述基于神经网络的软件架构选择的方法。

本发明实施例的方案可以根据项目的特点和需求,利用神经网络模型帮助软件架构师推荐和选择较为合适软件框架,可以容易的从已往的项目中汲取信息,从而进一步优化模型,从而使模型可以更好的选择架构。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例的一种基于神经网络的软件架构选择的方法的流程图;

图2为本发明应用示例的一种基于神经网络的软件架构选择的方法的流程图;

图3为神经网络的全连接层的示意图;

图4为本发明实施例的一种基于神经网络的软件架构选择的装置的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本发明实施例的一种基于神经网络的软件架构选择的方法的流程图,如图1所示,本实施例的方法包括:

步骤101、根据多种待选的选择软件架构的方法建立选择软件架构的神经网络模型;

步骤102、将指定时间段内执行过的项目数据输入所述神经网络模型进行训练;

步骤103、将新项目的特征参数输入训练好的神经网络模型,由所述神经网络模型选择出满足预置指标的软件架构。

正如软件本身有其要达成的目标一样,软件架构设计也要达到一定的目标。一般来说,软件架构设计要达到如下目标:1.可靠性,2.安全性,3.可伸缩行,4.可定制化,5.可拓展性,6.可维护性,7.可测试性,8.用户体验等。同时目前业界有很多的开源软件架构框架,例如dubbo,servicecomb,tars等。每种框架主要的特征与面向的场景各不相同。

而深度学习的过程一般需要经历数据的准备,数据分析,特征选择,数据集拆分,模型的设计,模型训练(其中,又涉及到训练环境的准备,训练任务的提交和监控),模型的评估,模型上线的过程。

本发明实施例提出了这种基于神经网络的软件架构选择的方法,可以根据项目的特点和需求,利用神经网络模型帮助软件架构师推荐和选择较为合适软件框架。可以容易的从已往的项目中汲取信息,从而进一步优化模型,从而使模型可以更好的选择架构。

图2为本发明一应用示例的一种基于神经网络的软件架构选择的方法的流程图,如图2所示,本示例的方法包括以下步骤:

步骤201、将公司已经进行过的项目数据进行分析整理;

所述项目数据中包含以下的一项或多项:项目类型、项目需求特点、项目研发周期、以及项目采用的软件架构等信息。

步骤202、根据多种待选的选择软件架构的方法建立选择软件架构的神经网络模型;

假设待选的软件架构方法为n种,那么建立一个具有三个全连接隐藏层,以sigmoid为激活函数,n个节点输出层、若干个节点的输入层的神经网络模型。

如图3所示,是一个神经网络的全连接层。在全连接层之后,会再连接到一个softmax层。softmax对应连接到输出层。其中输出层神经元的个数为待选的网络架构的个数。例如有10个待选网络架构。那么最终输出一个包含10个值且10个值的总和为1的向量,表示对应的概率。其中最大的概率则代表为自动选取的网络架构。

其中,神经网络模型的指标可以包括:1.可靠性的要求(例如99.5%的可靠性),2.项目的开发时间要求(例如3个月内或10个月内),3.可拓展的最大规模(如可拓展至1000节点)。以上仅是示例,实际应用中,可以根据需要,设置其它的指标要求。

步骤203、使用步骤201中准备的项目数据对步骤202中的神经网络模型进行训练。

步骤204、当训练完成后,自动保存训练好的神经网络模型及参数等。

神经网络的隐藏层的每一个神经元都一个参数值。初始情况下,参数值为随机值。随着训练过程的进行,参数值放生变化,最终会生成可以拟合问题的一组参数值。

步骤205、提交新项目的相关特征参数给神经网络模型,由神经网络模型自动选择推荐出适合的软件架构。

新项目的相关特征参数例如:要求项目的工作量是20个人月,要求服务响应时间小于10ms等。

图4为本发明实施例的一种基于神经网络的软件架构选择的装置的示意图,如图4所示,本实施例的装置300包括:

建立模块301,用于根据多种待选的选择软件架构的方法建立选择软件架构的神经网络模型;

训练模块302,用于将指定时间段内执行过的项目数据输入所述神经网络模型进行训练;

选择模块303,用于将新项目的特征参数输入训练好的神经网络模型,由所述神经网络模型选择出满足预置指标的软件架构。

本发明实施例提出了这种基于神经网络的软件架构选择的装置,可以根据项目的特点和需求,利用神经网络模型帮助软件架构师推荐和选择较为合适软件框架。

在一实施例中,所述装置300还可以包括:

存储模块304,用于保存训练好的神经网络模型及相关参数。

其中,所述项目数据可以包括以下的一项或多项:

项目类型、项目需求特点、项目研发周期、项目采用的软件架构。

如待选的选择软件架构的方法有n种,则所述神经网络模型包括:三个全连接隐藏层,以sigmoid为激活函数,n个节点输出层、若干个节点的输入层。

使用本实施例的方案可以从积累组织过程资产中提取特征,用积累的经验协助软件架构师进行软件架构的选择,方便软件架构师开展工作。

本发明实施例还提供一种基于神经网络的软件架构选择的装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,其中,当所述指令被所述处理器执行时,实现上述基于神经网络的软件架构选择的的方法。

本发明实施例还提供了一种计算机可读存储介质,其存储有计算机可执行指令,所述计算机可执行指令被执行时实现所述基于神经网络的软件架构选择的方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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