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

广博吧 人气:3.15W
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)将每一新的软件项目生成为此模板的一个实例。