一种服务化信息系统需求的离散划分方法与流程

文档序号:18141566发布日期:2019-07-10 11:08阅读:216来源:国知局
一种服务化信息系统需求的离散划分方法与流程

本发明涉及软件工程技术领域,具体涉及一种服务化信息系统需求的离散划分方法。



背景技术:

随着云计算和服务计算技术的飞速发展,软件开发模式和软件部署方式都在发生深刻地变革,面向服务的软件架构已经成为构造大型分布式软件系统的主流架构。通过重用和组合各种可用的web服务,面向服务的软件架构能够改善开发质量、大幅缩短软件应用的交付时间和维护成本。在这一趋势下,以服务化方式进行信息系统软件的开发与部署或对其遗留系统进行服务化改造已成为信息系统软件的重要发展趋势。

需求问题是长期困扰着软件工程的一个重要问题,糟糕的需求是造成软件危机的根本原因之一。根据2003年发布的chaos报告,在对项目管理人员的调研中发现不合格的需求是导致软件开发项目失败的主要原因之一。在服务化信息系统软件开发中,其首要任务是对用户需求进行分析和建模,然后基于分析后的用户需求,开发新服务或组合已有的服务资源以满足用户的需要。因此,需求分析和建模对服务化信息系统软件开发的成败具有决定性作用。传统的需求建模方法由于缺乏对服务计算及其实现机理的足够支持,难以满足服务化软件系统需求建模的需要。同时,由于服务化信息系统软件的用户需求更具个性化和多样化的特点,这也增加了进行服务化信息系统软件需求建模和分析的难度。因此,在进行服务化信息系统软件开发时,建立与其特点相适应的用户需求分析方法显得至关重要和迫切。



技术实现要素:

有鉴于此,本发明提供一种服务化信息系统需求的离散划分方法,即帮助软件需求分析人员对用户的服务需求进行建模和分析,实现业务需求与服务的对齐,为后续的服务开发奠定基础。

本发明公开一种服务化信息系统需求的离散划分方法,所述方法包括以下步骤:

s1、通过对服务化信息系统的业务场景的分析,运用自然语言处理方式,从中抽取初始的业务目标;

s2、依据所述业务场景中的核心词集,筛选包含n个核心词的服务文档集,并对服务文档集进行聚类,根据筛选出的候选服务文档,集中抽取各个服务文档集蕴含的功能目标,得到各个类簇的服务功能目标,其中,n为大于等于1的整数;

s3、根据初始业务目标,从步骤s2中获取的服务功能目标集中进行选择、修改或增加,得到可操作服务功能目标,从而建立初始业务目标与可操作服务功能目标之间的关系,构造相应的目标模型,进而根据目标模型中的可操作服务功能目标,定义相应的服务需求接口描述。

在上述技术方法中,所述步骤s1包括以下步骤:

s11、将业务场景描述进行预处理,首先进行分词,利用自然语言处理工具,得到业务场景描述中包含的单词集合,然后利用词干化技术进行词形标准化,以便所有词还原成其基本原形,在所述还原过程中保留在业务场景描述文件中重复出现的词,最后进行去停用词,即删除对表达功能需求无意义的词,包括介词、连词和代词;

s12、从预处理后的业务场景描述中提取基本业务目标;所述基本业务目标表示为动词-名词短语形式。

在上述技术方法中,所述步骤s12中提取的基本业务目标是通过stanfordparser工具中的词汇间的依存关系来抽取通过动词-名词短语形式表达的目标。

在上述技术方法中,,词汇依存关系描述语句中各个单词之间的二元关系,进行目标抽取时利用两类依存关系包括:

s121、dobj(w1,w2):表示在主动语态的句子中的名词w2是动词w1的直接宾语,运用stanfordparser解析后,得到词汇依存关系,即找出w1及w2在句中的位置,并从中识别出目标;

s122、nsubjpass(w3,w4):表示w4是在被动语态的句子中的动词w3的主语,利用stanfordparser解析后,可以得到词汇依存关系,即找出w3及w4在句中的位置,并从中识别出目标。

在上述技术方法中,所述步骤s2中包括以下步骤:

s21、识别业务场景描述中的核心词,采用tf-idf技术度量业务场景描述中所有单词的权重,tf-idfs,w代表单词w在业务场景描述s中的tf-idf权重,计算如下:

其中,|s|代表业务场景描述与已有服务文档集组成的集合s所包含的文档数;代表s包含的所有词的频次之和;代表包含w的文档数,根据业务场景描述中的tf-idf权重对单词进行排序,将权重值的topk作为描述中的核心词;

s22、依据业务场景中的核心词集,选择包含核心词的服务文档集,即对每个核心词而言,搜索包含该核心词的服务文档,将所有得到的服务文档取并集,得到候选服务文档集;

s23、采用步骤s11的方式对选择出的候选服务文档集进行预处理,然后对该服务文档集进行聚类;

s24、按照步骤s12的处理方式从步骤s22选择出的候选服务文档集中抽取各个服务的功能目标,针对候选服务文档集中的每个服务文档,利用stanfordparser工具对每个句子进行解析,利用两类依存关系抽取功能目标;

s25、统计各个类簇中得到的服务功能目标,按照功能目标在该类簇中的出现次数进行排序,得到各个类簇的主要服务功能目标。

在上述技术方法中,所述步骤s23包括以下步骤:

s231、在进行服务文档集聚类时,利用广泛使用的主题模型lda对预处理后的服务集s进行建模,得到两个概率分布,每个服务s的主题概率分布θs以及每个主题z∈{1,2,...,t}的词概率分布φz其中t代表主题数;

s232、利用服务的主题概率分布,为每个隐式主题构建一个服务类簇,其中,共t个服务类簇,将每个服务划分到与之具有较高相关度的主题所对应的类簇中,服务s的主题概率分布θs中每一维的概率值即反映了s与该维所对应的主题的相关度,概率值越大,则相关度越高,将θs中概率值最大的k个维度所对应的k个主题作为s相关的主题集,记为relt(s),然后将s分配到relt(s)中每个主题所对应的服务类簇中。

在上述技术方法中,所述步骤s3包括以下步骤:

s31、根据初始业务目标,结合步骤s25得到的各个类簇的服务功能目标,根据用户需求进行筛选、修改或增加,得到合适的可操作服务目标;

s32、基于s12抽取出的初始业务目标和步骤s31选择的可操作服务目标构造目标模型,定义初始业务目标和可操作服务目标间的分解关系和约束关系,其中,所述初始业务目标为高层目标,所述可操作服务目标为低层目标;

s33、根据目标模型中的低层目标,定义相应的服务需求接口描述,其中,服务需求接口描述包括服务的输入、输出、前置条件和后置条件。

在上述技术方法中,所述步骤s32中的在高层目标和低层目标集之间分解时,定义了四种关系:必选的、可选的、多选一的和多选多的;

其中,必选关系代表当高层目标要实现时,与该目标有必选关联的低层目标集也必须实现;

可选关系代表当高层目标被实现,与该目标有可选关联的低层目标集中的目标是否实现均可;

多选一关系代表当高层目标要实现时,与该目标有多选一关联的低层目标集中,有且只有一个目标被实现;

多选多关系意味着,当高层目标被实现时,与该高层目标有多选多关联的低层目标集里有至少一个被实现即可。

在上述技术方法中,所述步骤s32中的高层目标和低层目标集相互的约束关系包括:依赖、排斥、促进和对等;

其中,依赖关系表示如果高层目标或低层目标被实现,与该目标具有依赖关联的高层目标或低层目标也必须被实现;

排斥关系代表如果某个高层目标或低层目标被实现,与该目标具有排斥关联的高层目标或低层目标必须不能同时被实现;

促进关系表示约束高层目标或低层目标的实现对被约束高层目标或低层目标的实现有促进作用;

对等关系表示被约束高层目标或低层目标和约束高层目标或低层目标在语义上等同,在建立目标间关系时,各个类簇的功能目标首先聚合成更高层次的目标,然后进一步与高层的初始业务目标建立关联。

本发明一种服务化信息系统需求的离散划分方法及系统,具有以下有益效果:本发明帮助软件需求分析人员对用户的服务需求进行建模和分析,实现业务需求与服务的对齐,为后续的服务开发奠定基础。

附图说明

图1为本发明进行服务化信息系统需求的离散划分的总体框架示意图;

图2为本发明进行实施时构造的需求目标模型示意图;

具体实施方式

下面结合附图对本发明作进一步详细描述,本发明提供一种服务化信息系统需求的离散划分方法,如图1所示,所述方法包括以下步骤:

s1、通过对服务化信息系统的业务场景的分析,运用自然语言处理方式,从中抽取初始的业务目标;

其中,步骤s1包括以下步骤:

s11、将业务场景描述进行预处理,首先进行分词,利用自然语言处理工具,如nltk(http://www.nltk.org/),得到业务场景描述中包含的单词集合,然后利用词干化(stemming)技术进行词形标准化,以便所有词还原成其基本原形,在所述还原过程中保留在业务场景描述文件中重复出现的词,最后进行去停用词,即删除对表达功能需求无意义的词,包括介词、连词和代词;

s12、从预处理后的业务场景描述中提取基本业务目标;所述基本业务目标表示为动词-名词短语形式,如“updatefile”。使用stanfordparser工具中的词汇间的依存关系来提取通过动词-名词短语形式表达的目标。

其中,词汇依存关系描述语句中各个单词之间的二元关系,进行目标抽取时利用两类依存关系包括:

s121、dobj(w1,w2):表示在主动语态的句子中的名词w2是动词w1的直接宾语,运用stanfordparser解析后,得到词汇依存关系,即找出w1及w2在句中的位置,并从中识别出目标;在“userscancreateasocialtravelgraphbyrelatingobjectstoeachother”这个句子中,利用stanfordparser解析后,可以得到词汇依存关系dobj(create-3,graph-7),从中可以识别出目标:creategraph;

s122、nsubjpass(w3,w4):表示w4是在被动语态的句子中的动词w3的主语,利用stanfordparser解析后,可以得到词汇依存关系,即找出w3及w4在句中的位置,并从中识别出目标。如在“theavailablehotelinformationcanberetrieved”这个句子中,利用stanfordparser解析后,可以得到词汇依存关系nsubjpass(retrieved-7,information-4),从中可以识别出目标:retrievedinformation。

s2、依据所述业务场景中的核心词集,筛选包含n个核心词的服务文档集,并对服务文档集进行聚类,根据筛选出的候选服务文档,集中抽取各个服务文档集蕴含的功能目标,得到各个类簇的服务功能目标,其中,n为大于等于1的整数;

其中,步骤s2包括以下步骤:

s21、识别业务场景描述中的核心词,采用tf-idf技术度量业务场景描述中所有单词的权重,tf-idfs,w代表单词w在业务场景描述s中的tf-idf权重,计算如下:

其中,|s|代表业务场景描述与已有服务文档集组成的集合s所包含的文档数;代表s包含的所有词的频次之和;代表包含w的文档数,根据业务场景描述中的tf-idf权重对单词进行排序,将权重值的topk作为描述中的核心词;

s22、依据业务场景中的核心词集,选择包含核心词的服务文档集,即对每个核心词而言,搜索包含该核心词的服务文档,将所有得到的服务文档取并集,得到候选服务文档集;

s23、采用步骤s11的方式对选择出的候选服务文档集进行预处理,然后对该服务文档集进行聚类;

所述步骤s23包括以下步骤:

s231、在进行服务文档集聚类时,利用广泛使用的主题模型lda(latentdirichletallocation)对预处理后的服务集s进行建模,得到两个概率分布,每个服务s的主题概率分布θs以及每个主题z∈{1,2,...,t}的词概率分布φz其中t代表主题数;

s232、利用服务的主题概率分布,为每个隐式主题构建一个服务类簇,其中,共t个服务类簇,将每个服务划分到与之具有较高相关度的主题所对应的类簇中,服务s的主题概率分布θs中每一维的概率值即反映了s与该维所对应的主题的相关度,概率值越大,则相关度越高,将θs中概率值最大的k个维度所对应的k个主题作为s相关的主题集,记为relt(s),然后将s分配到relt(s)中每个主题所对应的服务类簇中。

s24、按照步骤s12的处理方式从步骤s22选择出的候选服务文档集中抽取各个服务的功能目标,针对候选服务文档集中的每个服务文档,利用stanfordparser工具对每个句子进行解析,利用两类依存关系抽取功能目标;

s25、统计各个类簇中得到的服务功能目标,按照功能目标在该类簇中的出现次数进行排序,得到各个类簇的主要服务功能目标。

s3、根据初始业务目标,从步骤s2中获取的服务功能目标集中进行选择、修改或增加,得到可操作服务功能目标,从而建立初始业务目标与可操作服务功能目标之间的关系,构造相应的目标模型,进而根据目标模型中的可操作服务功能目标,定义相应的服务需求接口描述。

其中,所述步骤s3包括以下步骤:

s31、根据初始业务目标,结合步骤s25得到的各个类簇的服务功能目标,根据用户需求进行筛选、修改或增加,得到合适的可操作服务目标;

具体的,从服务化信息系统的业务场景描述中识别的初始业务目标通常是相对抽象的或高层次的。这种高层目标需要进行精化或分解,得到具体的可操作的目标,才能指导后续的服务化信息系统的开发。基于这些初始目标找到的相似服务描述中则包含了大量的可操作服务功能目标,在这一步中,针对步骤s25中得到的各个类簇的服务功能目标,根据用户需求加以筛选、修改或增加,从而得到合适的可操作服务目标。

s32、基于s12抽取出的初始业务目标和步骤s31选择的可操作服务目标构造目标模型,定义初始业务目标和可操作服务目标间的分解关系和约束关系,其中,所述初始业务目标为高层目标,所述可操作服务目标为低层目标;

其中,目标的分解到可操作目标结束,即当所有的最低层目标都是可操作目标时,目标分解过程结束。对于每个可操作目标,或者由人(humanactor)来完成(即属于某个涉众个体的责任或职责),或者是由某个软件主体(softwareagent)来实现(即某个服务资源提供的服务,或服务化信息系统软件应该具备的功能)。

其中,所述步骤s32中的在高层目标和低层目标集之间分解时,定义了四种关系:必选的、可选的、多选一的和多选多的;

其中,必选关系代表当高层目标要实现时,与该目标有必选关联的低层目标集也必须实现;

可选关系代表当高层目标被实现,与该目标有可选关联的低层目标集中的目标是否实现均可;

多选一关系代表当高层目标要实现时,与该目标有多选一关联的低层目标集中,有且只有一个目标被实现;

多选多关系意味着,当高层目标被实现时,与该高层目标有多选多关联的低层目标集里有至少一个被实现即可。

其中,所述步骤s32中的高层目标和低层目标集相互的约束关系包括:依赖、排斥、促进和对等;

其中,依赖关系表示如果高层目标或低层目标被实现,与该目标具有依赖关联的高层目标或低层目标也必须被实现;

排斥关系代表如果某个高层目标或低层目标被实现,与该目标具有排斥关联的高层目标或低层目标必须不能同时被实现;

促进关系表示约束高层目标或低层目标的实现对被约束高层目标或低层目标的实现有促进作用;

对等关系表示被约束高层目标或低层目标和约束高层目标或低层目标在语义上等同,在建立目标间关系时,各个类簇的功能目标首先聚合成更高层次的目标,然后进一步与高层的初始业务目标建立关联。

s33、根据目标模型中的低层目标,定义相应的服务需求接口描述,其中,服务需求接口描述包括服务的输入、输出、前置条件和后置条件。

具体的,对于目标分解而言,基本的原则是分解的粒度越细越好,通过对目标进行细粒度的分解,可以帮助明确用户需求。同时,对目标进行细粒度的分解也有助于设计人员在服务封装时做出更好的决策。为了使服务能够灵活的定制和组装以适应需求的变化,对于目标模型中的低层目标尽可能地设计开发相应的服务来完成。例如,一个目标“提交客户订单”可以作为一个粗粒度的服务,而实现提交订单服务的详细功能,比如创建客户资料、记录产品属性、更新帐务关系等也可以作为细粒度的服务加以实现。根据目标模型中的低层目标,定义相应的服务需求接口描述,主要包括服务的输入、输出、前置条件和后置条件等。

应用本发明的方法进行的具体实施例,以旅游出行领域的例子进行服务化信息系统需求的离散划分,如图2所示,描述本发明的实施过程。

在该例子中,假定用户的业务场景描述如下:“thesystemshouldprovidetravelsolutionsfortravelerswhoplantovisittouristattractions.thetravelersmayalsowanttobrowsethetravelexperiencesandevaluationsofothertravelers,whichcanhelpthemmakewisedecisions.”已有的服务集为知名的服务注册中心programmableweb(www.programmableweb.com)网站中爬取的11000多个服务。

针对给定的业务场景描述,首先按照步骤s11对其进行预处理,然后按照步骤s12从预处理后的业务场景描述中抽取出基本业务目标,在本业务场景描述中得到“providetravelsolution”。可以看出,在该业务场景中,需要实现的基本目标是为用户提供相应的出行解决方案。

然后执行步骤s2,利用业务场景描述和programmableweb数据集,计算业务场景描述中所有单词的tf-idf,并根据tf-idf值进行排序,选择排在前3的travel、traveler和tourist作为业务场景描述中的核心词。依据上述业务场景中的核心词集,选择包含至少一个核心词的服务文档构成候选服务文档集并对其进行预处理,然后基于lda主题模型对该服务文档集进行聚类。在这里,将服务文档集聚为4个类簇。然后从候选服务文档集中抽取各个服务的功能目标,并分别统计4个类簇中得到的服务功能目标,按照功能目标在类簇中的出现次数进行排序,得到各个类簇的主要服务功能目标。例如,{providebooking,createtravel,gettripplan,managebooking,providereservation}、{searchhotel,bookhotel,providehotel,offerhotelroom,cancelhotel}、{searchflighttime,getairportdelay,bookflight,searchflightdelay,searchairplane}和{searchtravelexperience,sharetravelexperience,providetraffic,providedeveloper,watchtour}。

最后,执行步骤s3,根据初始业务目标从已有服务的功能目标集中进行选择、修改或增加,建立初始业务目标与已有服务功能目标之间的关系,构造相应的目标模型,如图2所示。进一步,根据目标模型中的低层目标,定义相应的服务需求接口描述,这里主要是定义其输入和输出。例如,bookhotel(输入:checkindate,checkoutdate,roomtype,guestnumber,输出:bookingstatus,confirmationnumber),searchflighttime(输入:airlinename,flightnumber,输出:time),cancelhotel(输入:bookingconfirmationnumber,guestname,输出:bookingstatus,cancelconfirmationnumber)。

说明书中未阐述的部分均为现有技术或公知常识。本实施方式仅用于说明该发明,而不用于限制本发明的范围,本领域技术人员对于本发明所做的等价置换等修改均认为是落入该发明权利要求书所保护范围内。

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