SWEBOK的軟體工程知識分類模型及演算法

才智咖 人氣:3.22W
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)將每一新的軟體專案生成為此模板的一個例項。