SWEBOK的软件工程知识分类模型及算法

时间:2023-03-03 18:35:41 硕士毕业论文 我要投稿
  • 相关推荐

SWEBOK的软件工程知识分类模型及算法

  摘要:软件组织内部智慧资产的有效组织和管理一直是一个悬而未决的问题。将文本分类技术引入到软件工程知识分类领域,首先综合分析了软件工程领域知识的基本类型和特性:之后依据这些特性结合软件工程知识体系(SWEBOK:Software Engineering Body of Knowledge),提出了一个软件工程知识的分类模型和算法;最后通过实验验证了提出的模型和算法的有效性。实验结果表明,该模型和算法具有良好的分类性能,为软件工程知识的有效分类提供了一种途径。
  关键词:软件工程知识体系;知识分类;软件工程;文本分类;分类算法
  引言
  软件的开发是人类有史以来最为复杂的知识高密集活动之一,其最终的输出产品只是IT知识和应用领域知识的高度凝聚,更多的个人技能、应用解决方案、最佳实践、经验和教训、设计模式等相关知识都灭于软件开发过程中,或者隐藏和散落在冗长、杂乱的(电子)文档和数据库中。如何促使这些隐藏着的知识显性化?如何合理地组织和有效地管理这些智慧资产来形成一个企业内部的智慧资产库以供将来重用?这些一直是软件工程中的知识管理所关注的重点12J。
  就软件工程领域来说,与之相关的研究已经持续了10多年,已有的工作可以总结为以下几个方面(1)基于人工智能的专家系统;(2)基于过程经验的软件工程知识库,如CBR、BORE和经验工厂(Experience Factory)等:(3)与单项软件开发活动相结合的知识获取工具等。这些研究从不同层面、不同程度上解决了上述问题。然而仍有以下几点需要深入探讨:(1)缺乏有效的手段来对软件组织相关智慧资产进行有效地、合理地组织和分类;(2)完整性问题:未能对软件工程知识进行全面地分析和覆盖:(3)相关自动化支持工具的缺乏。
  要实现软件工程领域知识的有效组织和管理,其核心点之一就是要有一个骨干分类体系(Backbone Taxonomy)以作为相关知识组织和分类的基本依据,而事实上这个骨干分类体系目前已经存在,这就是软件工程知识体系(SWEBOK-Software Engineering Body of Knowledge)。它由IEEE.CS和ACM发起并联合全球软件工程专家而制定,目前已成为国际标准(ISO/IEC TR 19759)。SWEBOK将软件工程分为11个知识域,每个知识域再细分为若干知识子域,以此类推共形成四级的骨干分类树。它共涵盖178个分类标识,数万条软件工程领域术语。但迄今为止,却鲜见将其应用到知识分类的相关报导。
  本文旨在利用SwEBOK作为骨干分类体系,结合文本分类技术,研究软件工程相关智慧资产的有效组织和分类问题。首先概括了软件工程的领域知识的基本类型,并对其特性进行了分析;之后结合SWEBOK和文本分类技术,提出了一个软件工程知识的分类模型;最后给出了分类算法并对其分类性能的验证。
  1软件工程领域知识的基本类型及其特性理论上,~切在软件开发过程中用到和产生的知识都可以被归结为软件工程知识。尽管其表现形式多种多样,但基本上可以归结为三类:(1)过程经验(Process Experiences),软件开发的整体过程即是~种实践案例知识(Practice Case):
  (2)个人技能(Personal Skills),留存在软件组织成员的头脑之中;(3)软件工程的知识$,]品(Knowledge Artifacts),表现形式是一些显性化的文档。
  1.1过程经验记录软件开发的过程经验是必要的,一个不能吸取过去失败教训的团队势必要犯同样的错误;一个不能重用过去成功经验的组织则会重复地发明轮子。考察软件过程经验,其主要特性包括:(1)依赖性:高度依赖于特定的软件项目;(2)不规范性:很难找到一个共用的模型适用于所有的软件项目;(3)重用性:相似的软件项目,其过程经验可以高度的重用?。
  依据上述特性,可以使用下述方法捕获之:(1)综合参照CMMI、RUP等软件过程模型制定一个通用模板;(2)将每一新的软件项目生成为此模板的一个实例。
  1.2个人技能软件组织成员的个人技能是软件组织最为宝贵的财富,软件的开发归根结底就是相关人员个人技能的综合应用。它的主要特性包括:(1)隐性:所有的个人技能都隐藏在组织成员的头脑中,不易捕获;(2)高价值性:组织成员的知识水平直接决定了软件产品的质量;(3)不稳定性:随着组织成员的离开,此智慧资产也会随之流失。正是这些特性使得个人技能显性化和有效捕获成为最为棘手的问题之一。
  对个人技能的捕获方式等同于过程经验:(1)制定一个人技能描述模板;(2)将每一组织成员的个人技能生成为此模板的一个实例。
  1.3知识制品软件开发过程中产生的各种以电子方式存在的模型、图表、文档、代码、方案以及组织内部的图书等等各种文本文档皆可被视作知识制品。它们是组织中最为直接、最易管理的智慧资产,因为它们已经被显性化了。对其处理方式,我们直接以文本形式进行表示。
  2基于SwEBoK的软件工程知识分类模型
  2.1 SWEBOK作为骨干树的分类体系知识分类的一个重要检验标准就是其分类体系中类别标识的共识性和共享性,因为如果分出一个大家都不认同的类还不如不分类。由于SWEBOK的概念体系经过了全球软件工程专家lO多年的反复校验和核准,以其作为骨干分类体系具有广泛的共享性和共识性。其前两级的分类体系如图l所示。
  2.2软件工程知识分类模型知识分类是知识管理领域最为重要的研究内容之一,它可以被看作是分类技术在知识管理研究领域的应用和深化。可以看到针对不同类型的软件工程知识,它们遵循不同的分类过程。对于过程经验和个人技能,经过知识表示之后,它们直接被归入SWEBOK骨干分类体系的某一类别下。而知识制品则遵循着预处理、特征选择和分类器分类的一般过程。首先要将待分类的知识制品进行预处理,从而生成特征向量的集合;特征选择算法则对特征向量的全集进行降维处理,从而得到较小规模的特征向量子集;最后,分类器根据降维后的特征子集,将知识制品归入到SWEBOK骨干分类体系的某一类别下。此分类模型可被分解为以下四个部分:
  SWEBOK骨干分类树:依据SWEBOK 2004(Iron)版所提供的178个具有分类继承关系(Hierarchical)的软件工程概念术语,组织形成一个骨干分类树,作为领域知识最终归属类别的基本框架。此外,软件组织还可以根据自身的具体情况对此骨干分类树进行灵活的定制。
  待分类知识源:如第1节所述,软件工程领域知识总体上可被分为三个基本类型,不同类型的知识会有不同的处理模式(见2.3节)。
  训练集:用以对分类器进行训练以提高其学习能力,训练集的选择对分类器的分类效果有着重要的影响(具体训练集的选择见第4节)。
  知识分类过程:包括训练过程(图2中虚线所示)和应用过程(图2中实线所示),详见2.3节。
  2.3三种类型知识的分类方式就过程经验和个人技能来说,由于其在知识表示的过程中已经以结构化的方式得以组织,因而它们的分类方式较为简单。定义E={月,...,P}为过程经验的全集,其中刀=捣,磊?..量)∈E为一具体的项目实例,5为一项目实例中的具体信息,如:项目名称、项目经理、活动名称、流程信息和体系结构等。
  那么过程经验的分类算法(1)为:
  f:E-'巳(1)其中c叠为SWEBOK骨干分类体系中一固定的类别一过程经验类,亦即:将过程经验直接映射到分类体系中。
  个人技能的处理方式与过程经验等同。
  最为复杂也是最为核心的是知识制品的分类,其处理方法我们采用文本分类技术,总体上分为训练过程和应用过程。在训练过程中,训练集经过预处理被表示成特征向量,特征向量经过降维(本文采用特征选择的方式)后被分类器处理,完成一个训练的周期。而在应用过程中,文本经过预处理生成的特征向量直接被分类器处理。分类器将其与训练过程得到的类别模式逐一比较,依据分类算法计算出文本最终所属的类别。
  3知识分类算法3.1预处理计算机能够自动分类的前提是待分类文本已经被表示成可被计算的数据。向量空间模型(VSM)是使用较多且效果较好的表示方法之--[51,在该模型中,一个文本d被看作是由一组正交向量组成的向量空间:
  y(田={(^,Ⅵ),...,(,%)},其中(巧,M)表示一个特征^的二元组,w表示此特征在文本d中的权重。特征tl可以是字、词或者其组合,但目前普遍认为词作为特征项要优于字和词组。由于一个特征向量对应着高维空间中的一个点,因而上式又可以简化为:y(d)={wj,...,%)对于知识制品的表示,我们也采用VSM方法,但在其被表示成空间向量之前,还要进行一些预处理,如去掉一些低频词、去掉停llZii-](Stop word)、去掉一些标记信息(如网页标签)等。由于中文文本的特殊性,还要进行分词,我们采用北航软件所开发的中文分词系统BUAASEISEGt61,它在稳定性和新词识别能力上具有一定的优势。
  特征的权重Ⅵ计算方法主要运用TF*IDF公式,目前存在多种TF*IDF公式,本文采用了一种比较普遍的TF*DF[71算法(2): 即力=砖蒜器。
  3.2基于互信息的特征选择经过预处理后的知识制品,其特征向量的维数依然很高(动辄数十万),需要在尽量不损失分类信息的情况下生成一个新的低维向量,这个过程称作降维。常用的降维方法有特征选择和特征抽取,由于特征选择的计算复杂性较低,因而被大量的采用。
  常用的特征选择方法有:文档频率(DocumentFrequency)、互信息(Mutual Information)、Chi平方(f),信息增益(1G:Information Gain)等。Yang等人对各种特征选择算法进行了广泛的研究,结果发现f和信息增益方法相较于其他方法,其特择效果最优用。在本文的研究中,我们采用信息增益方法来进行降维,它实际上反映的是特征在文本中出现与否能为确定当前文档所属类别做出的贡献值。其算法(3)具体描述如下:
  输入:文本的特征向量r(d);分类体系c:
  输出:降维后的特征向量r(d);步骤:
  1)按如下公式计算每个特征向量的信息增益值:
  G(f)=一Σ:,P(c。)Ioge(cJ)+P(f)Σ:.£(c,It)logP,(c,I,)+只(了)Σ:.P[T)logP,(c,li) (3)其中:只Q)表示一篇文本属于类别cj概率;eat)标识特征项t在一篇文本中出现的概率;e∽标识特征项t不在一篇文本中出现的概率;P(c。If)表示特征项t在属于类别白的文本中出现的概率;只(q I丁)表示特征项t在属于类别岛的文本中出现的概率。
  2)将文本特征按照式(3)计算出的信息增益值由大到小排列,取其前K个特征向量构成最终的特征空间,这样就达到了降维的目的,其维数为K。
  3.3基于k-NN的分类算法基于机器学习的分类算法目前已有数十种,而以Rocchio、KNN和SVM性能最为突出I习。Yang等人对这些算法进行了全面的比较,结果表明KNN和SVM算法无论是分类性能还是算法的健牡性、可扩展性都较其他算法有显着的优j判51。我们采用KNN算法来构建软件工程领域知识的分类器。
  rA7N(K Nearest Neighbor)算法的基本思路是:在给定新的文本后,考虑在训练集中与该新文本距离最近(最相似)的K篇文本,根据这K篇文本所属的类别判定新文本所属的类别,具体的算法(4)描述如下:
  输入:训练集出分类体系C;待分类的文本集d;输出:待分类文本的类别;步骤:
  1)对待分类的文本进行预处理,并使用式(2)计算其权重,得到待分类文本的向量表示V(d7);2)在训练文本集中选出与新文本最相似的K个文本,计算公式为:
  Sim(d.,d』)=Σ既x%其中,K值的确定目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整K值,一般初始值定为几百到几千之问。3)在新文本的K个邻居中,依次计算每类的权重,计算公式如下:
  p(j,G)2艺Sim(i,4)y(4,c:) (5)af扣州其中,i为新文本的特征向量,Sire(,2,i)为相似度计算公式,与(4)式相同。而y窿,£)为类别属性函数,即。如果属于类G,那么函数值为l,否则为0。
  4)比较类的权重,将文本分到权重最大的那个类别中。
  4实验结果我们对本文提出的知识分类算法进行了实验验证,选用的数据集包括:(1)用手工方式创建的数10项过程经验和个人技能;(2)SWEBOK中所给出的169篇参考文献、NASAC2004(全国软件与应用学术会议)的197篇论文以及从美国CMU大学提供了935篇计算机科研论文数据,算法性能的评价则采用精确度和召回率以及结合两者的FlMeasure。
  对于训练集和测试集的选择,其方法如下:将这些数据集按照所属类别进行手工分类,然后平均分成十份,选择其中九份作为训练集,选择其中一份作为测试集。运行分类算法,共执行10次分类操作,计算其平均值,实验结果如表1所示。
  知识类型准确率召剧率FI度量过程经验100% 100% 100%个人技能100% 100% 100%知识制品879%8208%84.38%观察表1的结果数据,我们可以发现过程经验和个人技能的分类准确率、召回率和F1度量值都很高(皆为100%)。
  通过定性分析我们可以得知产生这种现象的原因:这两种类型的软件工程知识皆采用了直接映射的分类算法。输出很好的分类效果是必然的。对于知识制品来说,它的F1度量值也超过了84%.这表明以SWEBOK为骨干分类树来进行软件工程知识的组织和分类是可行,旦采用文本分类算法进行知识制品的分类也是行之有效的。
  5结论
  软件组织内部智慧资产的有效组织和管理仍旧是一个开放的课题,就目前来看尚未有一个银弹(Silver Bullet)以解决这个问题。本文的创新之处就在于将文本分类技术引入到软件工程领域。以SWEBOK作为骨干分类体系,为软件工程知识的自动分类提供了一种新的解决途径,并通过实验验证了所提出的模型和算法的有效性。
  事实上,文本分类的技术和方法是通用的,本文提出的模型和算法也是通用的,如果我们将SWEBOK骨干分类体系换作其他领域的分类体系,将过程经验模板和个人经验模板换作其他模板,则可以构造一个面向其他领域的知识分类器。
  就软件组织来说,其内部智慧资产的规模远没有Web上的资源那样巨大。但是它对分类的准确率和召回率的要求却非常高。就目前来说,改进算法仍然是提高分类准确率和召回率的最为有效的途径。因此,我们下一步的工作就是通过引入更为综合的特征赋权函数、改进特征选择算法和通过对领域知识的运用以改进分类算法等,来迸~步提高其分类的性能。此外,在更大规模知识集上的训练和测试也是我们努力的方向。

SWEBOK的软件工程知识分类模型及算法

【SWEBOK的软件工程知识分类模型及算法】相关文章:

审计风险模型的演进及应用08-26

食油采购加工模型05-11

Home.Net模型/架构研究06-01

压缩递增年资的数量模型与分析06-07

数据关联算法综述及其性能评估05-05

数学模型方面的论文(精选6篇)05-16

公交车调度问题的数学模型05-11

企业绩效管理综合模型及应用分析05-02

公路交通事故MIMR救援模型05-11

“智猪博弈”模型对员工激励机制的启示论文04-13