• 沒有找到結果。

以「問題–解法」為基礎的軟體知識分類法

N/A
N/A
Protected

Academic year: 2021

Share "以「問題–解法」為基礎的軟體知識分類法"

Copied!
118
0
0

加載中.... (立即查看全文)

全文

(1)國 立 交 通 大 學 資 訊 工 程 學 系 碩 士 論 文. 以「問題–解法」為基礎的軟體知識分類法 A Problem-Approach-based Software Knowledge Classification System. 研 究 生: 謝 祖 望 指導教授:鍾乾癸 中 華 民 國 九 十 三 年 六 月.

(2) 以「問題–解法」為基礎的軟體知識分類法 A Problem-Approach-based Software Knowledge Classification System 研 究 生 :謝祖望. Student : Tzu-Wang, Hsieh. 指導教授:鍾乾癸. Advisor : Chyan-Goei, Chung. 國 立 交 通 大 學 資 訊 工 程 學 系 碩 士 論 文. A Thesis Submitted to Department of Computer Science and Information Engineering College of Electrical Engineering and Computer Science National Chiao Tung University in Partial Fulfillment of the Requirements for the Degree of Master of Science in Computer Science and Information Engineering June 2004. Hsinchu, Taiwan, Republic of China 中華民國 九十三 年 六 月.

(3) 以「問題–解法」為基礎的軟體知識分類法 研究生:謝祖望 指導教授:鍾乾癸 國立交通大學資訊工程系碩士班. 摘要 軟體發展是腦力密集及知識密集的工作,在開發過程中,軟體工程師常需搜 尋所需技術知識來加速其發展。由於目前技術知識庫的關鍵字缺乏良好制定法 則,無法有效代表技術知識的意義,進而影響知識搜尋的範圍、精度與速度,對 軟體生產力造成不良影嚮。 現有知識管理平台常見的知識分類法則大致可以分為四類,即 Taxonomy、 Faceted Classification、Case-Based Reasoning 與 Ontology。這些方法中,Taxonomy 太過簡單故缺乏效率;Faceted classification 會因知識數量增多而過於複雜,且難 以對軟體知識定義有效率的面向;CBR 則缺乏良好的分類架構;Ontology 只做 到知識的描述,而欠缺知識間的關聯性。故這些方法應用於軟體知識管理仍有許 多不足之處。 本論文發現多數技術知識主要內容是針對特定議題提出解決方法,因此提出 以「領域類別」 、 「議題」 、 「解法」 、 「技術」來代表一技術知識的性質,且發現此 種表示法易於建構技術知識間的關聯性。進而本論文提出以「問題–解法」為基 礎的軟體知識分類架構,以領域類別為基礎,在類別下有子議題,各議題下有許 多論文提出不同的解法及各種技術解決此議題。本論文並依提出的知識分類方 法,實作了一雛型(Prototype)知識庫,以驗證其可行性。 本文所提之新技術知識關鍵字可清楚表示論文之性質,且可依領域類別、議 題、解法或技術有效且精確搜尋出所要的技術知識,較以前方法更為實用。 i.

(4) A Problem-Approach-based Software Knowledge Classification System Student: Tzu-Wang, Hsieh. Advisor: Chyan-Goei, Chung. Department of Computer Science and Information Engineering College of Electrical Engineering and Computer Science National Chiao-Tung University. Abstract It is well convinced that software industry is highly knowledge- and laborintensive. During software development process, software developers usually search for technical knowledge to shorten the development time and improve the software quality. However, technical knowledge doesn’t have good indexing keyword definition to stand for its main point. It will cause poor accuracy and efficiency of knowledge query. Consequently, it’s the obstacle toward productivity of software development. Most popular knowledge classification techniques are Taxonomy, Faceted classification, Case-based reasoning, and Ontology. Among these techniques, Taxonomy is too simple to be effective. Faceted classification is too complicated when the amount of knowledge increases, it’s also difficult to define good facet for software knowledge. Case-based reasoning lacks classification structure for knowledge domain. Ontology uses its model to describe knowledge, but there is no relationship between knowledge. Since above techniques is not designed for software knowledge, applying to software knowledge management has drawbacks. We find that the purpose of technical knowledge is to propose an approach to an issue. Hence, technical knowledge could be represented by its category, issue, approach and technique. With this representation, it’s very easy to construct the relationship between knowledge. Accordingly, this thesis proposed a problemapproach-based software knowledge classification system. This system classify knowledge domain with hierarchy structure. Leaf-node categories have issues. Technical knowledge proposes approach to each issue, and uses certain techniques. Then we can represent technical knowledge effectively, and increase the accuracy and efficiency of software knowledge query. To prove the feasibility, we also implement a prototype system. ii.

(5) This thesis proposed new classification of technical knowledge keywords. It allows user to query technical knowledge by its category, issue, approach or techniques. Therefore, this classification technique is more useful than others.. iii.

(6) 誌謝 在碩士班的兩年時間中,真的非常感激鍾乾癸老師的教誨,讓我深刻學習到 做學問的方法與態度,讓我往後做人做事都受用不盡。這篇論文能夠完成,也是 要感謝老師不厭其煩的教導,在此要對老師致上最高的謝意。 另外,感謝劉文謙學長與鄭靜紋學姐的細心指導,協助我解決許多研究上的 困難。同時也感謝一起畢業的莊志良、吳偉聖、黃鼎新,許多研究的想法都是和 大家一起討論才順利產生的,我們也一同度過了令人難忘的兩年碩士班時光。感 謝我從大學以來的好友陳大任、劉衍谷、張子文、邱挺以及實驗室的學弟們,你 們陪我度過了寫論文最困難的時光。 最後我要感謝我的母親及怡螢,這段日子為了寫論文錯過了許多陪伴你們的 時光,謝謝你們的支持與鼓勵,僅以此成果與你們分享。. iv.

(7) 目錄 目錄................................................................................................................................. i 第一章、緒論................................................................................................................ 1 1.1. 研究背景與動機.......................................................................................... 1. 1.2. 各章節介紹.................................................................................................. 4. 第二章、背景知識與相關研究.................................................................................... 6 2.1. 軟體知識管理.............................................................................................. 6. 2.2. 軟體知識分類方法.................................................................................... 10. 2.3. 2.2.1. Taxonomy ...................................................................................... 10. 2.2.2. Faceted Classification .................................................................... 12. 2.2.3. Case-based Reasoning ................................................................... 14. 2.2.4. Ontology ........................................................................................ 17. 現有知識分類方法的問題........................................................................ 19. 第三章、「問題–解法」軟體知識分類法之設計構想............................................ 22 3.1. 軟體技術知識的本質................................................................................ 22 3.1.1. 技術論文本質................................................................................ 22. 3.1.2. 技術報告本質................................................................................ 30. 3.1.3. 書本知識本質................................................................................ 31. 3.2. 以問題–解法為基礎的軟體知識分類方法............................................ 36. 3.3. 效益比較及分析........................................................................................ 47. 第四章、軟體知識的關鍵字分類機制...................................................................... 53 4.1. 關鍵字分類建構法則................................................................................ 53. 4.2. 領域類別架構設計.................................................................................... 58. 4.3. 知識排序法則與搜尋方法........................................................................ 66 i.

(8) 4.4. 4.3.1. 知識排序法則................................................................................ 66. 4.3.2. 知識搜尋方法................................................................................ 67. 關鍵字符號表示法.................................................................................... 69. 第五章、軟體知識庫系統之設計.............................................................................. 72 5.1. 系統功能需求............................................................................................ 72. 5.2. 系統架構與模組設計................................................................................ 73. 5.3. 系統資料儲存設計.................................................................................... 77. 5.4. 5.3.1. 資料庫設計.................................................................................... 78. 5.3.2. 記憶體快取資料結構設計............................................................ 84. 使用者介面說明........................................................................................ 88 5.4.1. 一般使用者介面............................................................................ 89. 5.4.2. 知識工程師介面............................................................................ 98. 第六章、結論............................................................................................................ 101 參考文獻.................................................................................................................... 105. ii.

(9) 圖目錄 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖. 2 - 1 軟體知識模型 ................................................................................................8 2 - 2 軟體知識管理模型 ........................................................................................8 2 - 3 軟體知識分類範例 ...................................................................................... 11 2 - 4 Faceted Classification範例-1 .....................................................................12 2 - 5 Faceted Classification範例-2 .....................................................................13 2 - 6 Faceted Classification範例-3 .....................................................................13 2 - 7 Faceted Classification範例結果.................................................................14 2 - 8 Case-based Reasoning模型 ........................................................................15 2 - 9 Case-based Reasoning流程圖 ....................................................................15 2 - 10 Dynamic memory model示意圖 ..............................................................16 2 - 11 Category & exemplar model示圖.............................................................16 2 - 12 On-To-Knowledge架構圖 ........................................................................18 2 - 13 On-To-Knowledge Ontology架構圖........................................................19 3 - 1 論文關鍵字示意圖 ....................................................................................26 3 - 2 論文關鍵字表示法範例(burst tries) ....................................................28 3 - 3 論文關鍵字表示法範例(text categorization).......................................28 3 - 4 論文關鍵字表示法範例(complier optimization).................................29 3 - 5 論文關鍵字表示法範例(mobile client/server) ....................................29 3 - 6 書本關鍵字示意圖 ....................................................................................34 3 - 7 書本關鍵字表示法範例(software engineering)...................................35 3 - 8 技術知識關鍵字類別圖 ............................................................................40 3 - 9 書本知識關鍵字類別圖 ............................................................................41 3 - 10 關鍵字分類及關聯性示意圖 ..................................................................42 3 - 11 On-To-Knowledge Ontology模型圖 ........................................................51 4 - 1 技術知識關鍵字定義流程圖 ....................................................................57 4 - 2 書本知識關鍵字定義流程圖 ....................................................................58 4 - 3 杜威十進分類法範例 ................................................................................59 4 - 4 美國國會圖書分類法範例 ........................................................................60 4 - 5 ODP分類範例 ............................................................................................61 4 - 6 ACM分類系統範例 ...................................................................................62 4 - 7 七層分類架構示意圖 ................................................................................64 4 - 8 七層架構分類範例 ....................................................................................65 5 - 1 知識庫系統架構圖 ....................................................................................74 5 - 2 系統模組架構圖 ........................................................................................74 iii.

(10) 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖. 5-3 5-4 5-5 5-6 5-7 5-8 5-9 5 - 10 5 - 11 5 - 12 5 - 13 5 - 14 5 - 15 5 - 16 5 - 17 5 - 18 5 - 19 5 - 20 5 - 21 5 - 22 5 - 23 5 - 24 5 - 25 5 - 26 5 - 27 5 - 28 5 - 29 5 - 30 5 - 31 5 - 32. 資料表架構圖 ............................................................................................78 快取資料類別關係圖 ................................................................................84 知識類別資料結構關係圖 ........................................................................85 議題資料結構關係圖 ................................................................................85 解法資料結構關係圖 ................................................................................86 技術資料結構關係圖 ................................................................................86 技術知識資料結構關係圖 ........................................................................87 書本知識資料結構關係圖 ......................................................................87 書本子議題資料結構關係圖 ..................................................................88 一般使用者主畫面 ..................................................................................89 新增論文畫面 ..........................................................................................90 新增書本知識畫面 ..................................................................................91 類別瀏覽主畫面 ......................................................................................91 類別簡介畫面 ..........................................................................................92 最熱門子類別畫面 ..................................................................................92 類別最新狀態畫面 ..................................................................................93 子議題列表畫面 ......................................................................................93 解法列表畫面 ..........................................................................................94 解法簡介畫面 ..........................................................................................94 技術知識主畫面 ......................................................................................95 引用知識畫面 ..........................................................................................95 論文運用技術畫面 ..................................................................................96 運用特定技術之論文列表 ......................................................................96 運用技術之議題列表 ..............................................................................97 書本知識列表 ..........................................................................................97 書本知識簡介畫面 ..................................................................................98 書本子議題架構畫面 ..............................................................................98 知識工程師主畫面 ..................................................................................99 類別架構管理畫面 ..................................................................................99 技術管理畫面 ........................................................................................100. iv.

(11) 表目錄 表 3-1 表 5-1 表 5-2. 各分類法比較表 ........................................................................................52 一般使用者需求表 .................................................................................... 72 知識工程師需求表 ....................................................................................73. v.

(12) 第一章、緒論. 1.1 研究背景與動機 近年來由於網際網路的普及與資訊科技的突飛猛進,帶動了知識經濟的風 潮。世界經濟的發展由以往的勞力密集、資本密集、技術密集,逐漸朝向知識密 集的時代,Toffler稱之為第三波經濟革命 (Alvin, 1991)。在農業時代,土地的取 得是成功的要素;工業時代則取決於資本財的投資;而當前的科技時代,知識已 成為個人與組織所擁有的珍貴資產之一(Thomas, et. al., 1998)。因此,知識管理將 是使組織具備競爭力的重要關鍵。所謂的知識管理,是指適時適地將正確的知識 提供給需要的成員,以輔助成員採取適當的行動來增進組織績效的持續性過程。 此過程包括知識的創造、確認、收集、分類組織、分享、使用與改進等步驟 (American Productivity & Quality Center, 1996)。而軟體產業本身即是一項人力與 知識密集的產業 (Birk, et. al., 1999),軟體發展更是一個知識不斷創新的過程。 由於資訊硬體產品的效能及功能大幅提升及價格大眾化,導致各類軟體需求愈來 愈多,功能也漸趨複雜,故軟體知識快速且多樣化地成長,因而造成發展軟體時 常遭遇開發過程費時、交貨延遲、產能不易提升,且品質不易確保等問題,甚至 產生了軟體危機[1]。故知識管理對軟體產業來說更是刻不容緩的課題。 如同前面所述,我們在過去已體認到軟體知識管理的重要性,展開一系列的 研究,對軟體知識種類與型態、軟體知識螺旋、軟體重用元件、軟體知識庫及軟 體發展環境之研究與實作等議題均有相關的研究,並將研究成果發表於會議論文 [2][3]。在過去的研究中,我們發覺軟體的知識管理必須與軟體開發流程緊密結 合,在不同的階段中,發展者需要不同類型的知識,在每一個階段中,遇到不同 的問題,發展者亦需要相對應的知識作為輔助。然而,隨著知識庫中的知識愈來 愈多,要如何有效地利用這些知識變成一個重要的課題。 1.

(13) 過去,許多典型的知識庫如 Microsoft 的知識庫[4]、IEEE 電子期刊資料庫 [5]、ACM 電子圖書館等[6],都擁有非常充足的知識。以 Microsoft 的知識庫作 為例,原先目的是用來作為產品技術支援服務;產品知識庫中包含數十萬份由數 千位產品技術支援工程師針對客戶的問題而製作的技術文件,藉由不斷的更新與 增加,以確保內容的實用性及正確性。使用者可透過搜尋介面,選擇所要查詢的 範圍與選項,鍵入關鍵字來尋找。然而由於其資料實在太過龐大,同一類型的產 品相關問題可能高達數千筆,即使其中真的有能解決使用者問題的知識,使用者 也很難利用幾個關鍵字就找得到。IEEE 及 ACM 的電子圖書館也有類似的問題, 同樣的領域可能有高達數百篇的論文,使用者利用幾個關鍵字找出來的論文也可 能相當多,難以判斷知識是否能夠解決問題。因此,即使這些知識庫都收集了相 關領域下最豐富、最有價值的知識,卻不能適時適地將正確的知識提供給需要的 成員,這使得這些知識庫沒有發揮其應有的價值。 知識庫的效率與知識分類方法有密不可分的關係,最常見的知識分類法大致 可 以 分 為 四 類 , 即 Taxonomy[7] 、 Faceted Classification[8] 、 Case-Based Reasoning[9]、Ontology[10]。 Taxonomy 是最廣為引用的樹狀分類法,將知識領域以階層架構的方式分 類。然而這種方法只將知識領域分類,對軟體知識而言,同領域下的知識仍非常 多,就如前述的 IEEE 及 ACM 電子圖書館,同領域下可能有高達數百篇的論文, 使用者必須閱讀全部論文後,才能判斷是否為他需要的知識,這種方法非常沒有 效率。 Faceted Classification 為多面向的分類法,讓知識能依不同面向進行樹狀結 構的分類。例如酒可依產地、種類來分類。但軟體知識各領域特性不同,除了依 知識領域分類外,難以建構其他具有通用性的面向。而如作者、期刊等面向則無 法對知識的內容描述有所幫助。當知識量增多時,從各個面向找尋知識也是費時 費力,因此很少有軟體知識採用 Faceted Classification 做為主要分類方法。 2.

(14) Case-based Reasoning(以下簡稱 CBR)採用案例及解決方案的原理描述知 識,因此會設計其知識模型。但各種知識都必須經過處理修改後才能符合其知識 模型,這對增長快速的軟體知識而言是沒有效率的。此外,對 CBR 方法而言, 各個案例都是單獨的存在,彼此之間僅有一些共通性的關聯,而沒有架構良好的 分類系統,因此使用 CBR 系統只能找案例的解答,若對知識領域不熟悉的使用 者,則無法利用類別瀏覽的方式找出想了解的知識領域。 Ontology 利用定義清楚的模型描述知識,改善傳統關鍵字搜尋的效率問題。 但軟體知識領域廣泛,很難定出各領域皆通用的 Ontology 模型,且以 Ontology 方法描述知識通常較為複雜,對知識工程師而言是一大負擔。此外,以 Ontology 描述的知識彼此間缺乏關聯性,使用者無法在閱讀知識之後快速取得相關知識, 也沒辦法對知識進行比較。 由上可知,目前的知識管理搜尋與分類方法應用在軟體知識上都有其不足之 處,當知識累積數量增多時,知識庫的效率及正確性便會降低,浪費使用者寶貴 的時間。因此我們需要更有效率的知識分類方法來改善此問題。 對知識使用者而言,利用知識庫搜尋知識,必定是對此類知識有所需求,我 們可以將這些需求大致分為下列四類: 1. 使用者對某特定領域不熟,希望找出該領域的介紹性知識。 2. 使用者對特定領域熟悉,希望深入了解某特定議題。 3. 使用者遭遇了某些問題,希望找出這些問題的最佳解決方案。 4. 使用者熟悉特定技術,想了解該技術被運用在哪些領域中。 在各種分類與搜尋方法中,關鍵字法仍舊是最廣為運用的。然而一般關鍵字 都較零散且缺乏規則,且關鍵字之間沒有具體的關聯性,如此對知識的使用者幫 助相當有限。因此有必要對關鍵字作更嚴謹的定義,使其更明確地表示論文的性 質,且便於分類。 3.

(15) 從技術論文或技術報告的本質分析,發現這兩種知識主要內容都是為了解決 某項議題,而提出其解決方法。議題必定存在於特定領域之下,而解決方法則可 能運用了其他的技術,因此,描述一篇論文,只要描述這篇論文所在領域、解決 的議題、採用的解法及運用的技術便能說明其核心意義。故我們能將關鍵字分為 「領域類別」 、 「議題」 、 「解法」 、 「技術」四個類型,一篇論文依此方法定義關鍵 字便能表示其意義。 採用上述方法表示技術知識後,可非常容易找出兩篇論文間之相關性。例如 解決相同議題的論文、採用相同解法或技術的論文、改善前人解法的論文,利用 這些關係能提供知識間的關聯性,依議題、解法、技術找出同性質的論文,提昇 搜尋的精度與準度。 本研究進一步依此表示方式提出知識分類架構。以領域類別為基礎,在其下 可建構議題,各議題下有許多論文提出不同的解法及各種技術解決此議題。如此 使用者便可依領域類別瀏覽,找出領域類別下的子議題,並可列出特定議題的解 法及技術,也可找出特定技術的運用狀況,讓上述四種需求的使用者都能在此分 類架構上找到合適的知識。 因此,本研究將依上述發現,詳細定義技術知識的關鍵字類型與關係,提出 知識分類架構,並依此分類方法實作一雛型(Prototype)知識庫系統,以證實可 行性。最後並將比較此方法與傳統知識分類法對軟體知識管理的適用性。. 1.2 各章節介紹 本論文章節安排如下,首先在第二章介紹軟體知識與軟體知識管理的概念, 接著探討傳統知識分類法運用在軟體知識管理上的問題。第三章從軟體知識本質 進行分析,進而提出軟體知識表示法及分類方法,並採用符號表示法提昇知識處 理的效率。第四章則介紹軟體知識的關鍵字分類機制,包括建構法則、領域類別 4.

(16) 架構、知識排序法則與搜尋方法以及符號表示法的 BNF。第五章將實作一知識 庫範例以證此分類方法的可行性。第六章總結本論文之研究成果並提出未來可繼 續發展的研究方向。. 5.

(17) 第二章、背景知識與相關研究 軟體產業是一高度知識密集的產業,軟體的發展更是一項不斷創新知識的過 程,因此,做好知識的管理,將能加速知識傳遞與學習的過程,以便縮短軟體開 發的時程,提高軟體品質,進而降低整體開發成本與加快產品上市的時間。而軟 體知識分類方法的好壞,將決定軟體知識管理的效率,尤其軟體知識發展迅速, 大量的知識必須透過有效率的知識分類方法加以管理方能達到軟體知識管理的 目標。 本章首先在 2.1 節介紹軟體知識管理的基本概念及其流程,2.2 節將重點放 在軟體知識管理中的分類方法,並介紹目前最常用的知識分類方法。2.3 節則分 析現有知識分類方法運用在軟體知識管理上的問題。. 2.1 軟體知識管理 軟體的發展是一項知識不斷創新的過程,每天都有新的問題被解決、新的知 識被創造出來,使得軟體的知識呈現多樣化且快速的成長。Ioana Rus等人曾說明 知識管理對於軟體工程的重要性包括[11]: •. 記錄與分享流程(Process)以及產物(Product)知識:軟體發展的流程與 產物會隨目標與內容的不同而有所差異,單一的發展模式無法滿足所有專案 的需要,因此發展者須不斷的藉由專案的過程來累積知識與經驗。然而有些 發展團隊卻常忽略這些工作經驗,以至於未能有效運用之前專案的成果而造 成許多時間的浪費。而知識管理強調的知識捕捉(Capture)與分享正是解決 的良方。. •. 了解專門領域知識(Domain Knowledge):軟體發展過程常需要瞭解問題領 域的相關知識,搜尋與學習這些知識往往要花上許多時間,但這些知識會散 6.

(18) 在不同的成員身上,其效用有限,知識管理技術可幫助組織將這些專門知識 (Expertise)予以確認(Identify) 、包裹(Package) ,進而供團隊共享,以提 升整體能力。 •. 獲得新技術、資訊:軟體是一個不容易掌握且發展快速的領域,科技不斷地 推陳出新,也許使軟體的能力更加強大了,但也是發展人員的夢魘,除了穩 定性、相容性外,也讓評估變的更加困難,需要花時間去適應與學習。知識 管理旨在促進組織分享的文化,透過溝通與實踐來縮短共同學習的曲線。. •. 分享所在環境的知識(Local Policy):成功的軟體組織應該擁有許多軟體經 驗,而發展團隊的程式風格或一些慣例通常存在較有經驗的發展者腦中,且 常透過較非正式的溝通來傳承給新進人員。知識管理除了協助溝通,也試著 去捕捉日常生活中較非正式的知識分享,讓更多需要的人能夠受益。. •. 了解有誰知道什麼(Who Knows What) :有許多的知識可以被紀錄下來,但 不可否認的,也有許多隱性的知識存在員工的腦中,對每個人所知道的知識 做管理可減少成員尋找專家幫忙解決問題的時間,甚至有成員離開時,也可 當作找尋替補人選的參考。. •. 遠距離的合作:由於全球化的趨勢,團隊的成員可能身處在不同的地方,因 此遠距的溝通、協調與合作就愈發顯出其重要性,透過知識分享,才能提升 整合效率。 所謂軟體知識是指在軟體發展過程中所有需要、產生、應用以及參考到的各. 項顯性與隱性的知識,我們即可稱之為「軟體知識」。一般而言,參與人員需要 軟體工程知識(Software Engineering Knowledge) 、產品領域知識(Product Domain Knowledge)、產品知識(Product Knowledge)、相關電腦科學知識(Computer Science Knowledge)等類的軟體知識。將上述知識與軟體發展人員的關係關連在 一起,則軟體知識模型便如圖 2 - 1 所示:[2] 7.

(19) 圖 2 - 1 軟體知識模型. 至於知識的創造是一項連續不斷的過程,透過內隱知識與外顯知識彼此的交 互作用,由個人、團體慢慢向外擴張至整個組織結構,結合新的概念和既有的知 識,進而發展出新的知識,此一反覆遞增的過程,即為知識的螺旋(Spiral of Knowledge)[12]。知識的螺旋包含社會化、外化、整合、內化四種知識的轉換 模式,而軟體發展的過程本身也符合知識螺旋的特性。根據這四類轉換在軟體知 識管理所扮演的角色與軟體發展者在各項轉換中所必須執行的活動,可整理軟體 知識管理模型如圖 2 - 2 所示[2]:. 圖 2 - 2 軟體知識管理模型. 8.

(20) 由上圖可知,軟體知識管理的主要活動包括: • 創造(Create):創造新的、有價值的知識是知識管理主要的目的之一,但並非 所有創新都是無中生有,許多知識是透過合併或更改舊有的知識,進而賦予 其新的意義與價值。因此在創造的過程中首要的步驟是確認(Identify)欲得到的 知識是什麼,並具體詳細地加以指明(Specify)。 • 搜尋(Search):在目前知識爆炸的時代,要精確的從數以萬計的資料中找出所 要的知識並不容易,因此搜尋的機制也是非常重要的一環。關於搜尋的研究 與作法很多,但主要的想法是根據想要找的條件,選擇(Choose)適合的分類, 再搜尋現有的知識庫,並從搜尋的結果中挑選出(Select)需要的部分。 • 調適(Adapt):從前一步驟搜尋得到的知識通常與發展者實際所想要的知識, 不管在內容或者形式上都可能會有些落差,因此在不破壞原來知識的情況 下,先將之取出複製(Copy)一份,再經過適當的修改(Modify)或合併以符合實 際的情境所需。 • 使用(Use):知識的使用可說是知識循環中最重要的部分,各項步驟的最終目 的就是希望讓知識能被有效的應用(Apply)到實際狀況中,進而發揮知識的價 值。 • 收集(Collect):擷取(Acquire)發展過程中可再應用的產物、相關文件、經驗等 知識,整理成特定的適當形式(Formalize),抽出(Extract)並儲存至知識庫中。 • 分類(Classify):組織(Organize)知識,放入適當的分類與索引(Index),並合併 (Integrate)其中相似的部分。同時在分類過程中也可能需要動態適時的進行知 識結構的調整。 • 共享(Share):透過分派(Distribute)與出版(Publish)的機制來擴散知識,進而達 成知識的共享。其中又可分為動態的散佈,主動地將重要的知識即時傳遞給. 9.

(21) 需要的人員;以及靜態的陳列,讓發展者有需求的時候再去尋找。這兩種方 式的差別在於時間、對象與知識內容的取捨。 • 評估(Evaluate):透過使用者的討論、評分、測量、回饋等方式對知識進行分 析與估價(Assess),以便瞭解知識使用和分佈的情形,淘汰其中過時以及無用 的部分,並將重要或使用率高的知識擺在明顯、容易取得的位置。 在這些軟體活動中,收集(Collect) 、分類(Classify)與共享(Share)是軟 體知識庫的主要工作,而這些工作的效率又與軟體知識分類方法有極大的關聯, 故軟體知識分類方法是決定軟體知識庫效率的重要關鍵,亦是本研究所探討的主 題。. 2.2 軟體知識分類方法 知識分類是將相同領域或具有相似特性的知識歸類整理,或對知識進行淬取 (extract)及描述,籍以提昇使用者搜尋知識的效率的方法。最常見的知識分類 法則大致可以分為四類,即 Taxonomy[7]、Faceted Classification[8]、Case-Based Reasoning[9]及 Ontology[10]。本節將分別對其進行介紹。. 2.2.1. Taxonomy. Taxonomy 是最廣為引用的樹狀分類法。Taxonomy 最早是在十七世紀,Carl Linnaeus 對植物採用拉丁二項式系統(Latin binomial system)命名,用第一個字 表示植物的屬(Genes),用第二個字表示種(Species),這種方法是最簡單的樹 狀分類法,而其後 Carl Linnaeus 還發明了以七層架構為基礎的生物種類分類法, 從上往下依序是界(Kingdom) 、門(Phylum) 、綱(Class) 、目(Order) 、科(Family) 、 屬(Genes)、種(Species),這個方法從十七世紀延用至今,仍然是生物分類的 標準,而 Carl Linnaeus 也被稱為 Taxonomy 之父。. 10.

(22) 這種樹狀分類法被運用在各種需要分類的地方,由於其方法簡單、直觀,又 能有效地對各種知識分門別類,故被廣為引用。在知識管理上,許多分類方法也 都是以 Taxonomy 方法架構的。如圖書館的分類系統,最著名的杜威十進分類法 (Dewey decimal classification)[13]、美國國會圖書分類法(Library of congress classification)[14]都是採用樹狀分類架構,在電腦科技期刊上,最常使用的 ACM 分類系統(ACM computing classification system)[15]也是 Taxonomy 的分類方式。 此外,在網際網路上搜尋引擎最常使用的 ODP(Open Directory Project)[16]分 類系統,同樣也是採用此方法。由上述可知,在各領域知識管理中,最常使用的 知識分類方法即為 Taxonomy。 Taxonomy 的基本原理即樹狀分類架構,將知識先分成數個大領域,各個大 領域再往下細分,每一個分類都可以繼續細分,例如軟體知識分類範例便可如圖 2 - 3 所示:. Computer Computer Science Science. Domain. Subject (Layer-1). Programming Programming Language Language. Subject (Layer-2). C/C++. HTML. Subject (Layer-3). Algorithm. Java Java. Database. DB Mgmt. VB. …... O/S. Perl. SQL. Graphic. …... E-Book. Conceptual-based Conceptual-based Tutorial Tutorial …... Article. Solution-base Solution-base API. 圖 2 - 3 軟體知識分類範例. 11. SQL. Info. Storage & Retrieval. Applet JavaBean ….. RMI Swing Swing. Conceptual/S olution-Based Type. ……. …... Q&A.

(23) 2.2.2 Faceted Classification Faceted Classification 係由印度的圖書館員 S. R. Ranganathan 於 1930 年代發 明的,這是利用清楚定義(clearly defined) 、完全互斥(mutually exclusive)及完 整窮舉(collectively exhaustive)的知識主題、特性來進行分類[8],其特色是讓 知識分類具備更高的彈性及自由度,不必侷限於之前的分類架構,隨時都可以新 增一個 Facet 分類。Facet 可以是兩種型態,第一種即前一小節所述的 Taxonomy 樹狀結構,第二種則是用表示連續數字的格式,如價格、日期等等。 Faceted Classification 自 1960 年代以來被廣泛地使用,由於其分類具有高度 彈性,故被運用在各個不同領域。例如原本採用 Taxonomy 架構的杜威十進分類 法,也在其第 21 版加入了 Faceted Classification 的概念,除了原有的領域分類外, 還加入了如作者種族、書本語言、國家等不同面向的分類。此方法也被運用到如 商業管理(London Classification of Business Studies)[17]與建築工程(Unified Classification for the Construction Industry)[18]等不同領域。運用在軟體知識管理 上,也有如 KM-Connection[19]等系統採用了 Faceted Classification 做為其分類架 構,此系統採用的面向包括了產品、應用領域、組織、人員、領域技術、事件、 出版物等,軟體知識採用上述面向進行分類以加速知識索引與搜尋。 Faceted Classification 採用多面向的分類方法,例如酒就可以利用種類(如 紅酒、白酒)、產地(歐洲、美洲)及價格加以分類,在 FacetMap[20]中就有提 到如下的範例,若酒採用 Faceted Classification 分類,則搜尋介面如圖 2 - 4 所示:. 圖 2-4. Faceted Classification 範例-1 12.

(24) 若使用者選了紅酒之後,則系統會依符合的酒重新整理後如圖 2 - 5:. 圖 2-5. Faceted Classification 範例-2. 接著使用者可以改以產地來縮小範圍,選擇 USA 或可得如圖 2 - 6:. 圖 2-6. Faceted Classification 範例-3. 產地部份便會顯示在美國之下的產地,如加洲、華盛頓等,使用者可再以價 格做選擇,例如選擇 Top shelf 的酒類,可得如圖 2 - 7 之結果:. 13.

(25) 圖 2-7. Faceted Classification 範例結果. 由於這些條件下只有四種酒類,故系統可直接列出其結果。由上例可知,此 方法的好處便是使用者的搜尋過程可以隨時利用不同面向縮小範圍,故可用其較 熟悉的面向快速找到符合的知識。 Faceted Classification 也有標準交換格式,稱為 XFML (the eXchangable Faceted Metadata Language)[21],此格式採用 XML 對 Facet 進行描述,讓不同的 知識庫可以籍此進行 Facet 的交換。. 2.2.3 Case-based Reasoning Case-based Reasoning(以下簡稱 CBR)是由 Roger Schank 所提出[22],一開 始是為了解決 AI 的問題,他認為知識的儲存、經驗及學習是不可分隔的,進而 提出了 theory of dynamic memory。而 CBR 的特性即是利用過往的經驗來解決新 的問題,它試圖從過往的個案(Case)中找尋與目前問題最相似者,將其解法進 行適當的修改後來提供解答,並透過解答所達成的效果來進行學習,籍以豐富其 知識庫。其中還有一分支稱為 Analogy-based Reasoning[23],試圖利用跨領域的 經驗來解決問題。CBR 的模型如圖 2 - 8 所示:. 14.

(26) 圖 2-8. Case-based Reasoning 模型. 故 CBR 是將知識分為問題與解答來描述,知識必須先依其模型描述問題及 對應解答,有新的問題出現時便依這些問題找尋最接近的答案,其結果可再儲存 為新的知識。CBR 的流程圖如圖 2 - 9 所示[24]:. 圖 2-9. Case-based Reasoning 流程圖. 15.

(27) CBR 用以描述案例(Case)最常用的模型有兩種,一種稱為 Dynamic memory model,另一種稱為 Category & exemplar model。前者將案例集合成一個個片斷 (Episode) ,在其下有不同的索引與對應的值,這些值又可以連結到其他的片斷 或直接連結到案例中,其示意圖如圖 2 - 10:. 圖 2 - 10 Dynamic memory model 示意圖. Category & exemplar model 則是自案例中找出特性(Feature),並將一些特 性定義為類別(Category) ,這些類別可再進一步分析而成為模範(Exemplar), 同一個類別可以產生多種模範,而案例便可依此進行歸類。當新的案例出現時, 系統便對此案例分析後找出合適的模範,並將其下案例的解答分析整理後提出可 能的答案。其示意圖如圖 2 - 11:. 圖 2 - 11 Category & exemplar model 示圖 16.

(28) 過去已有些許研究者,利用 CBR 進行知識管理[25],然而由於 CBR 必須仰 賴規格十分嚴謹的知識表示法,而且其複雜的模型必須完全相同才能夠讓不同的 CBR 系統溝通,因此一般都是運用在特定的領域解決特定的問題,例如處方、 餐廳菜單、病情診斷等,不適合用在五花八門的一般知識庫中。. 2.2.4 Ontology Ontology 是近年來非常熱門的研究主題,在知識管理、人工智慧、自然語言 解析、分散式系統都各有應用。所謂 Ontology 係指領域知識定義一個共通的分 享方式,運用正式且清楚定義的模型,籍以描述知識的意義[26]。 著 名 的 Ontology 應 用 如 WordNet[27] 、 KIF(Knowledge Interchange Format)[28]、Ontolingua[29]、On-To-Knowledge[30]等。應用在知識管理上,其 主要目的是將領域知識以完整定義的 Ontology Model 來描述,改善傳統關鍵字 搜尋的效率問題。以著名的 On-To-Knowledge 為例,它首先將文件進行解析後找 出文件中可能的重要概念,經由使用者編輯 Ontology 之後儲存至分享環境中。 系統會通知對相關概念有興趣的使用者,使用者可進而取得此知識。搜尋的時候 也是籍由其 Taxonomy 的樹狀分類搭配一些關鍵字來找尋特定概念下的知識。 On-To-Knowledge 的架構圖如圖 2 - 12 所示:. 17.

(29) 圖 2 - 12 On-To-Knowledge 架構圖. 其 Ontology 採用 RDF(Resource Description Framework)進行描述,其主要 子系統中,OntoEdit 是提供知識工程師手動建構 Ontology 的介面,而 OntoExtract 則是可以從自然語言的知識中半自動地建構知識的 Ontology,至於 OntoWrapper 可以從結構化的知識中淬取出其 Ontology,這些 Ontology 儲存在知識庫中,採 用 OntoShare 讓使用者進行搜尋,改善傳統關鍵字搜尋效率不彰的問題。 On-To-Knowledge 對於文件建構了詳細的 Ontology 描述,如標題(title)、 摘要(summary) 、作者、相關概念、附件等,而作者也描述其名字、e-mail 等資 訊,而相關概念也可採用分類的方式來描述,其示意圖如圖 2 - 13 所示:. 18.

(30) 圖 2 - 13 On-To-Knowledge Ontology 架構圖. 由上圖的例子,可看出 Ontology 的基本概念是定義知識的特性以及特性間 的關係,甚至可利用邏輯化的方式對知識進行描述,故使用者在搜尋知識時可明 確地描述知識特性及概念,提昇知識搜尋的效率。. 2.3 現有知識分類方法的問題 Taxonomy Taxonomy 是 最 廣 為 引 用 的 樹 狀 分 類 法 , 但 從 知 識 搜 尋 的 觀 點 來 看 , Taxonomy 下的知識缺乏關係與連結,也沒辦法進行知識的分析。由於樹狀分類 過於簡單,因此也沒辦法依使用者需求給予適當的知識。雖然有非常多的知識庫 都採用 Taxonomy 來做分類,但彼此之間由於缺乏共通的分類準則,因此沒有辦 法進行跨知識庫的整合。此外,Taxonomy 的層狀架構使其分類上缺乏彈性,因 為知識並非只有單一面向,而 Taxonomy 卻只能依特定方向進行分類。由於只能 單純的分類,故當知識量累積愈來愈多時,同類型知識也將非常可觀,使用者沒. 19.

(31) 辦法從中快速挑選合適的知識,只能逐一閱讀,非常沒有效率。 運用在軟體知識上較有名的 Taxonomy 分類法如 ACM 分類系統(ACM computing classification system)及網路上許多搜尋引擎所使用的的 Open directory project 等,其架構都是以四層為主,但軟體知識各項領域的發展都日新月異,對 於各領域的探討都愈來愈深,粗略的分類將使特定類別下的知識太過龐雜,不能 真正達到知識分類的優點,例如近年來急速發展的 Internet,若要細分的話可能 會出現下列的類別:Internet → WWW → Web Programming → Scripting Language → ASP → Database Connection,光是這些就需要六層的分類才真正能夠將知識恰 當地分類,因此現行的知識分類架構確有其不足之處。 Faceted Classification Faceted Classification 讓知識分類具備更高的彈性及自由度,不必侷限於固 定的分類架構,但仍有其問題。在知識的關係與連結上,Faceted Classification 所建立的關係僅是「同類型的知識」,實際上使用者閱讀特定知識後有時會需要 更基本或更進階的知識,甚或其他不同相關的知識,這些 Faceted Classification 都沒辦法處理;此外,Faceted Classification 的方式相當不直觀,一般人還是希 望籍由幾個關鍵字就找到他所需的知識,而非在複雜的 Facet 結構中找尋;在知 識庫的整合上,雖然有 XFML (the eXchangable Faceted Metadata Language)可做 為交換的標準,但由於不同知識庫所採用的 Facet 不同,因此知識交換上仍然非 常困難。此外,當知識的量累積愈來愈多時,Faceted Classification 也會愈來愈 複雜,這樣使用者在找尋知識便更加困難,故 Faceted Classification 用在增長快 速的軟體知識上也不夠有效率。 Case-based Reasoning Case-based Reasoning(以下簡稱 CBR)是利用過往的經驗來解決新的問題, 因此必須建構複雜的模型,儲存各種不同的學習結果(lesson-learned),用來做 20.

(32) 為之後處理問題的解答。故 CBR 必須將知識進行仔細的切割,以符合其模型。 例如論文、書籍中的知識都必須充份了解後再將其中知識一一分成案例(Case) 及解答(Solution) ,因此在知識處理過程非常困難且耗時,完全沒有辦法自動化, 這對於增長快速的軟體知識相當不合適;此外,由於 CBR 建構了嚴謹的知識表 示方法,故只能運用在特定的領域解決特定的問題,例如處方、餐廳菜單、病情 診斷等,不適合用在領域既廣且深的軟體知識庫中。由於各個 CBR 採用的基本 模型都不盡相同,因此知識庫之間並沒辦法整合及合作,這對軟體知識亦不合適。 Ontology Ontology 運用在知識管理上,主要目的是將領域知識以完整定義的 Ontology Model 來描述,改善傳統關鍵字搜尋的效率問題。然而透過 Ontology 描述的知 識彼此之間缺乏關聯性,雖然透過 Ontology 描述後的知識較易搜尋,但卻沒辦 法讓使用者自由取得相關的知識。此外,不同領域的知識其特性並不相同,因此 用以描述的 Ontology 必然無法通用,而對每個領域都要發展其 Ontology 也非常 耗時耗力,這對領域廣泛的軟體知識而言尤其不合適;其次,Ontology 雖然能提 供知識意義的描述,但其實對相關領域不熟的使用者而言,他對知識的概念不 足,因此在使用上反而覺得不便。誠如上述,使用者運用知識庫可概分為三類, 故對不同需求的使用者提供不同的搜尋才能真正對其產生幫助。 前了上述分類法各自的問題外,軟體知識管理一直都無法做到「知識處理自 動化」及「跨知識庫整合」的要求,知識處理若能自動化,將能夠提昇軟體知識 管理的效率。而知識庫之間的整合,將使知識庫的知識量大幅提昇,也能大幅縮 短使用者在各個知識庫之間找尋知識所耗費的時間。 由上可知,目前的知識管理搜尋與分類方法都有其不足之處,當知識累積數 量增多時,知識庫的效率及正確性便會降低,浪費使用者寶貴的時間。因此我們 需要更有效率的知識分類方法來改善此問題。. 21.

(33) 第三章、「問題–解法」軟體知識分類法之設計構想 前一章已對軟體知識分類方法做了一些探討及分析,可知目前的知識分類方 法運用在軟體知識管理上皆有不足之處,本章將進一步提出改進的軟體知識分類 方法。3.1 節首先分析軟體技術知識的本質,包括技術論文、技術報告以及書本 知識的本質。3.2 節依據軟體技術知識本質提出以「問題–解法」為基礎的軟體 知識分類方法。3.3 節則對我們提出的分類方法進行效益比較與分析。. 3.1 軟體技術知識的本質 為了解決上述的軟體知識分類方法問題,首先要分析軟體知識的本質,方能 進一步找出真正有效率的軟體知識分類法。 「軟體知識」較廣義的定義係指在軟 體發展過程中所有需要、產生、應用以及參考到的各項顯性與隱性的知識。這個 定義中的軟體知識種類繁多,尤其像軟體產物的管理更牽涉到軟體重複利用 (Software Reuse)的議題,非一般軟體知識庫的所探討的範圍。是以本論文的 研究對象為軟體發展過程中所參考的結構性知識(Structured Knowledge),主要 為技術論文、技術報告以及書本知識三大類型。以下將進行分析。. 3.1.1 技術論文本質 技術論文是軟體知識中非常重要的部份。技術論文可能提供全新的概念、新 的技術、特定議題的解決方案等,對軟體開發的效率與軟體成品都有非常大的影 響。了解技術論文的特性,將有助於建構有效率的知識分類方法,進而讓使用者 快速取得有幫助的技術論文。 從知識產生的目的來看,技術論文產生的目的大都是解決特定的問題,不論 是傳統的演算法、資料結構乃至於發展迅速的無線網路、多媒體,技術論文的產. 22.

(34) 生都是針對技術上的問題提供解法。常見的型態包括提供較現有技術更有效率的 演算法、更適當的資料結構、更佳的解法、更好的架構,或運用其他領域的技術 至特定領域上處理某些狀況,整合某些解法以提供更具通用性的解決方案等。即 使型態繁多,不難看出技術論文是「問題導向」的知識,換言之,技術論文與其 處理的問題息息相關。 然而,縱使技術論文是「問題導向」的知識,知識庫系統卻無法自動地從技 術論文的標題或內容中去找出其處理的「問題」以及論文提供的「解法」。由於 技術論文是以人的自然語言寫就,故其內容無法透過知識庫處理。而技術論文的 標題也沒有固定的原則可循。以下舉幾篇論文為例: Fabrizio Sebastiani 的”Machine learning in automated text categorization” [31] , 這 個 標 題 中 , machine learning 是 他 提 出 的 解 法 , 而 automated text categorization 則是他要處理的問題,格式是名詞+in+名詞,故在這裡第一個名詞 是 解 法 , 第 二 個 名 詞 是 問 題 。 但 另 一 篇 David F. Bacon 的 ”Compiler transformations for high-performance computing”[32],看起來跟前一篇標題格 式頗為類似,但其實這篇論文的內容是在處理 multiprocessors 以及 superscalar processors 機器上的 compiler optimization 問題,利用 compiler transformation 解 決,而採用了 dependence analysis 以及 locality 等技術來解決,這時前一個名詞 變成解法,第二個名詞則是問題所在領域。這兩篇標題型式如此類似的論文,其 代表的意義卻相差非常多。此外論文的標題由於沒有規定的格式,因此各種型式 的標題都可能出現,舉例而言,Weiyi Meng 的”Building efficient and effective metasearch engines”[33],從標題上只能看出這篇論文要建構有效率的 metasearch engine,看不出其提出的解法,且格式是採用動詞+名詞的方式,跟前兩篇不同; 又如 Jin Jing 的”Client-server computing in mobile environments”[34],標題看起 來 跟 第 一 篇 類 似 , 都 是 以 名 詞 +in+ 名 詞 做 為 標 題 , 但 在 這 裡 第 一 個 名 詞 (Client-server computing)並非解法,而是這篇論文處理的問題,其他尚有更難 23.

(35) 判斷的例子,如 Steffen Heinz 的”Burst tries: a fast, efficient data structure for string keys”[35],這篇的格式是名詞+:+形容詞+名詞+for+名詞,但其實讀了內 容後會發現這篇論文在講的是 text database 中的 string data structure 問題,而提 出了 Burst tries 做為解法。又如 Chang H. and Iyengar S. S 的”Efficient algorithms to globally balance a binary search tree”[36],格式是名詞+to+動詞+名詞,而這 些名詞卻不能完全代表這論文的意義,讀完論文後會發現這篇論文處理的是 Binary search tree 中的 improve worst case 問題,採用了 sequential balancing & parallel balancing 的解法。 由上述的例子,可發現論文的標題有非常多不同的語法,由於自然語言並非 電腦可處理的正規語言,同一種語法可能代表不同的意義,因此有許多地方都是 含糊不清(ambiguous)的;且許多論文的標題都沒有真正提到他處理的問題以 及採用的解法,因此對使用者而言,找尋論文必須閱讀內容後才能判斷是否符合 所需,顯得非常沒有效率。 為改善此問題,一般技術論文都會定義「關鍵字」來增加對論文意義的描述, 然而一般關鍵字都較零散且缺乏規則,且關鍵字之間沒有具體的關聯性,如此對 知識的使用者幫助相當有限。最著名的 IEEE 期刊也只規定關鍵字定義的基本原 則,其中列出了一個 Keyword List 供作者從中選擇,並建議作者採用五到八個關 鍵字做為索引,若有新的關鍵字則提供給 IEEE 參考等等。即使如此關鍵字仍是 零散無規則的,如前所述,使用者在輸入關鍵字時其目的可能是不同的,然而使 用者卻沒有辦法對關鍵字加以定義,因此只能輸入他認為較重要的幾個字,這往 往會找出一些完全不符合需求的知識。以下舉上面幾篇論文為例: Fabrizio Sebastiani 的”Machine learning in automated text categorization”, 這 篇 論 文 中 定 義 了 三 個 關 鍵 字 : Machine learning 、 text categorization 、 text classification,而 text categorization 與 text classification 其實是同義字,這樣的關 鍵字是很簡單的,text categorization 是問題,而 machine learning 是解法,至於 24.

(36) machine learning 所運用的技術就無法從關鍵字得知。另一篇 David F. Bacon 的”Compiler transformations for high-performance computing”,則定義了較多 的 關 鍵 字 : compilation 、 dependence analysis 、 locality 、 multiprocessors 、 optimization 、 parallelism 、 superscalar processors 等 , 這 些 關 鍵 字 中 , 有 些 (parallelism、superscalar processors、multiprocessors)是問題的領域,有些是問 題(compilation、optimization) ,有些則是解法運用的技術(dependence analysis、 locality) ,若使用者想找 superscalar 的介紹,也可能找到這一篇,想找 dependence analysis 的介紹,也可能找到這一篇,想找 compiler optimization 的方法,也可能 找到這一篇,但其實這篇都不符合上述三項需求,足見雜亂關鍵字帶來的不良影 響。又如 Steffen Heinz 的”Burst tries: a fast, efficient data structure for string keys”,定義了 Binary trees、splay trees、string data structures、text databases、tries、 vocabulary accumulation 等關鍵字,同樣的,這些關鍵字有些是領域,有些是問 題,有些是解法及運用的技術,這樣雜亂無章讓使用者難以快速掌握論文的重 點,也無法真正達到索引的功能。再如 Jin Jing 的”Client-server computing in mobile environments”的,定義了非常多的關鍵字:application adaptation、cache invalidation、caching、client/server、data dissemination、disconnected operation、 mobile applications、mobile client/server、mobile computing 等等,幾乎只要論文 有提到的相關內容都定義為關鍵字,完全無法由關鍵字看出論文的意義。 誠如上述,技術論文是「問題導向」的,故其探討的內容是針對單一領域中 的特定問題,且會提出對應的解決方案,而這個解決方案可能運用或改進了其他 論文中所使用的技術。是以我們可以將關鍵字分為四類,即「領域」 、 「問題」 、 「解 法」、「技術」: (1) 領域(Domain) :技術論文的關鍵字中有部份是用來表示此知識所在的領 域類別。例如前述的 parallelism、superscalar processors、multiprocessors 等。 25.

(37) (2) 問題(Problem) :指的是此知識所探討的主要問題,論文一般是提供某特 定問題(如 Traveling Salesman Problem)的解答,將問題獨立出來有助於 找尋問題的解法。 (3) 解法 (Approach):對於特定的問題,知識可能會提供解法。各個論文若 都將其提出的解法做為關鍵字,則使用者能夠快速地進行同問題間解法的 比 較 。 例 如 某 個 做 法 是 利 用 Greedy , 而 另 一 個 是 利 用 Dynamic Programming,這就能夠讓使用者對此知識有基本概念,也能有個簡單比 較的基礎。 (4) 技術(Technique) :一個特定解法可能是運用了某些技術,而這個部份也 是很有價值的。使用者不明白解法時,可以籍其所運用的技術有個概括性 的了解,例如前述的 dependence analysis、locality、splay trees 等。 因此,論文關鍵字可以圖 3 - 1 表示: Domain. Problem. Use. Technique. Approach Use. Technique. Use. Technique. 圖 3 - 1 論文關鍵字示意圖. 這樣的分類是依據技術論文的「問題導向」本質而定的。由於技術論文的本. 26.

(38) 質即是根據特定的「問題」提出「解決方案」 ,因此只要能夠描述「問題」與「解 決方案」 ,便能夠描述一篇技術論文的內容。而問題可分成「領域」與「問題」, 解決方案則可分成「解法」與「使用技術」 ,現行的關鍵字由於沒有定義,因此 經常發生許多論文的關鍵字與其內容關聯性不高的問題;事實上,基於技術論文 的「問題導向」本質,只要定義上述四類關鍵字,便能夠充份描述一篇論文在哪 個領域處理了哪個問題,提出了什麼樣的解法以及使用了什麼樣的技術,這對論 文的描述、索引、查詢而言已經足夠了。 一篇論文的問題與解法,用一兩個關鍵字來描述自然有其不足之處。例如對 圖學相關內容不熟悉的讀者而言,光看到 travel salesman problem 或是 Steiner tree problem 等關鍵字是無法聯想到實際的問題。或者對 binary search tree 不熟悉的 讀者而言,看到某一論文使用了 Hibbard's algorithm 或是 Knuth's algorithm 也很 難知道這是什麼樣的演算法。但技術論文的特性便是其深入地探討一個問題,因 此會去閱讀論文的讀者應該可以假設對此議題有基本認識,否則應該先從基本的 入門書籍開始了解。當使用者對特定領域中的議題有基本認識時,對於這些相關 的關鍵字其實都不會陌生,且軟體技術知識有其精確性,每項技術均有其定義清 楚(well-defined)的內容,例如排序法(sorting)的 bubble sort、quick sort、insertion sort 等,其實用一個關鍵字就能夠代表相當多的意義。這也是為何目前關鍵字仍 是最常被用來做為論文索引的原因。而透過上述的分類,這些關鍵字除了能代表 其本身軟體技術的知識外,尚能代表在論文中的意義,是屬於論文的領域、問題、 解法抑或技術,更能加強對論文的描述及索引的效率。 再以之前提到的論文為例,Steffen Heinz 的”Burst tries: a fast, efficient data structure for string keys”論文定義了 Binary trees、splay trees、string data structures、text databases、tries、vocabulary accumulation 等關鍵字,其內容是處 理 text database 領域中的 string data structure 問題,他提出了稱為 burst tries 的解 法,此解法運用了 splay trees、tries、binary trees、hash table 等技術,因此我們 27.

(39) 對其關鍵字稍加修改,可將之表示如圖 3 - 2:. Domain text database Problem string data structure Approach burst tries Technique Technique. Technique binary tree. splay tree. Technique. tries. hash table. 圖 3 - 2 論文關鍵字表示法範例(burst tries). Fabrizio Sebastiani 的”Machine learning in automated text categorization”論 文定義了 machine learning、text categorization、text classification 三個關鍵字,但 這樣的定義不足以描述這篇論文的內容。這篇論文是在探討 information retrieval 的 text categorization 問題,採用了 machine learning 做為解法,並分別採用了兩 種技術:train-and-test 以及 k-fold cross-validation,這篇論文可表示如下圖: Domain. information retrieval. Problem text categorization Approach machine learning Technique. Technique. train-and-test. k-fold cross-validation. 圖 3 - 3 論文關鍵字表示法範例(text categorization). David F. Bacon 的 ”Compiler transformations for high-performance computing”論文定義了相當多的關鍵字:compilation、dependence analysis、 locality、multiprocessors、optimization、parallelism、superscalar processors 等,這 些關鍵字中,parallelism、multiprocessors、superscalar processors 是領域,compiler. 28.

(40) optimization 是 問 題 , 這 篇 論 文 的 解 法 是 compiler transformation , 採 用 了 dependence analysis、locality 等技術,故其關鍵字可表示成圖 3 - 4: Domain. Domain. multiprocessors. superscalar processors. Problem compiler optimization Approach compiler transformation Technique. Technique. dependence analysis. locality. 圖 3 - 4 論文關鍵字表示法範例(complier optimization). Jin Jing 的”Client-server computing in mobile environments”論文中定義了 非常多的關鍵字,只要論文有提到的內容都定為關鍵字,包括:application adaptation 、 cache invalidation 、 caching 、 client/server 、 data dissemination 、 disconnected operation、mobile applications、mobile client/server、mobile computing 等等,其實讀了這篇論文可發現主要是在說明 mobile client/server 的問題,提到 了三種解法:mobile-aware adaptation、extended client/server model 以及 mobile data access 等,各自有其運用技術,可表示如圖 3 - 5: Domain mobile computing Approach. Problem mobile client/server. Approach. mobile-aware adaptation. Technique application adaptation. Approach. extended client/server model. Technique caching. mobile data access. Technique data dissemination. 圖 3 - 5 論文關鍵字表示法範例(mobile client/server) 29.

(41) 由上面的例子可看出技術論文的「問題導向」本質,籍由「領域」 、 「問題」、 「解法」 、 「技術」四類關鍵字便能對其內容做一簡單的描述及索引,這樣的表示 方法不像論文標題無法解析,也改善了傳統關鍵字缺乏定義的弱點,上述的例子 有 database、information retrieval、multiprocessors、mobile computing 等各種不同 領域的論文,但都能籍此共通的「問題導向」本質來描述,足見此方法的可行性。. 3.1.2 技術報告本質 技術報告(Technical Report)是軟體研究者交換其研究成果常見的方式。技 術報告與技術論文在格式上相當類似,但一般而言技術報告探討的主題較細,且 主要目的在描述其發現,因此不會像技術論文有豐富的內容,但相對的技術報告 往往都是最前瞻的知識。技術報告主要目的是在解釋研究者做了什麼、為何如此 做、有哪些發現、發現的價值在哪裡等。技術報告跟技術論文一樣,也是針對一 個特定主題進行探討,其探討的可能只是一個小改變、或是一些研究數據的呈現 等;因此,技術報告的內容同樣可以視為「問題導向」 ,也就是其內容的方向由 其處理的問題以及提出的解法決定。 技術報告在解決問題上要依據合理的論點(thesis) ,這個論點決定技術報告 在探討問題上所使用的架構。舉例而言,有一篇針對 geometric Steiner tree problem 的 partitioning algorithms 論文,使用了 Steele's theory of Euclidean functionals 做為 他分析 algorithms 效能的工具,則 Steele's theory of Euclidean functionals 即是這篇 技術報告的論點。 技術報告的格式與技術論文類似,因此一般也會定義關鍵字做為索引,然而 這也跟技術論文的問題一樣,零散且缺乏規則的關鍵字並沒有辦法有效率地做為 知識索引,且技術報告在這方面的問題更大,因為技術報告原本就是針對較細的 議題進行探討,故一般以其真正探討的主題做為關鍵字則通常過於侷限,讓使用 者找不到資料,但若採用較寬的領域做為關鍵字,則又會讓只想找該領域知識的 30.

(42) 使用者讀取不符需要的知識,例如 S. L. Martins, M. G. C. Resende, C. C. Ribeiro, and P. M. Pardalos 的”A parallel hybrid GRASP for the Steiner tree problem in graphs using a hybrid local search strategy”[37]這篇技術報告,它是要處理 graph 中 Steiner tree problem,提出了一個 parallel greedy randomized adaptive search procedure(GRASP)做為解決方案,但如果僅以 Steiner tree problem、parallel greedy randomized adaptive search procedure 做為關鍵字的話,則只有使用者完全了解他 的問題,直接找尋「Steiner tree problem」才可能找到這篇報告,但若加入 graph 做為其關鍵字,則所有對「graph」有興趣的使用者都可能找到這一篇探討特定 問題的技術報告,這都是因為關鍵字的定義缺乏法則及關聯性所導致的問題。 由於技術報告也是「問題導向」 ,一篇技術報告的內容主要是在「領域」中 探討特定「問題」 ,運用一個「論點或技術」提出「解法」 ,故我們同樣可以將其 關鍵字分為四類,即「領域」 、「問題」、「解法」、「論點或技術」 ,這跟我們對技 術論文關鍵字的分類是一樣的,而由於其「問題導向」的本質,這樣的分類也足 以對其內容進行簡單的描述。. 3.1.3 書本知識本質 書本知識對軟體開發者而言也是非常重要的知識來源。由於書本知識通常是 一般性介紹,故書本知識的產生是在相關議題技術論文發表到一定程度之後才會 出現,並非最前瞻的知識,其探討的內容也不會像技術報告或技術論文那樣深 入,相反地是側重介紹及教學的功能,這對想要了解或學習特定主題的軟體工程 師而言特別有幫助,一般人對一個不熟悉的領域通常都是透過書本知識來學習 的。分析書本知識的特性將能夠幫助想要學習的軟體工程師快速找到所需的教 材。 以知識產生的目的來看,書本知識是以介紹及教學為主要目的。各個主題都 會有所謂的入門書籍,若此主題的知識較繁多,則可能會有進階書籍。無論是入 31.

(43) 門書籍或進階書籍,書本知識都是偏向介紹性質的。也因此,書本知識不會針對 某個特定議題進行深入探討,相反地,書本知識往往是對議題進行概略的介紹, 讓讀者能夠對此議題有個初步的了解。跟技術論文、技術報告的專一性相反,一 本書裡可能會提到數十個議題,因此書本知識是以廣博為主,而技術論文則以深 入見長。 從技術書籍的架構來分析其本質。一本技術書籍的基本架構都包括有目錄 (Table of Content) 、序言(Preface) 、簡介(Introduction) 、章節內容(Chapters) 以及索引(Index) 。序言(Preface)的內容通常只是說明此書著作的背景以及適 當哪些讀者,並不適合用來描述書本知識的內容。簡介(Introduction)部份是對 此主題做一簡單描述,適合對此主題沒概念的使用者閱讀,但並不適合用來描述 此書的內容架構。章節內容(Chapters)則是書本知識的主體,這項特性有助於 我們對書本知識架構的理解;但由於章節的定義並沒有制式的規範,因此我們需 要更佳的表示方法。索引(Index)其實可以看成是書本知識的關鍵字(Keyword) , 但因為索引也是缺乏定義及關聯性,因此一本書出現了特定的關鍵字(比如 compiler optimization),其內容仍無法預測,比如此書可能是介紹 compiler optimization 有哪些方法,也可能是在談 computer architecture 的時候提到 compiler optimization 的重要性等。 書本知識是圍繞在一特定主題(subject)之上,一般而言這個主題都會是書 名,例如 Software Engineering、System Programming 等。在主題之下便是此書所 介紹的議題(topic),依不同的書本特性,一本書可能以一個章節(chapter)或 數個章節來討論此議題,一個議題下的內容依其本質可分為三類: (1) 介紹此議題的章節內容:在討論介紹的過程中,一個議題可能會分成數 個 子 議 題 ( sub-topic ), 子 議 題 又 可 能 再 細 分 為 更 小 的 議 題 (sub-sub-topic),這些內容具有階層架構的特性,例如 Roger Pressman 的 Software Engineering[38],針對 Project Management 這個議題寫了四 32.

(44) 章 , 這 四 章 可 分 為 四 個 子 議 題 , 分 別 是 Project Metrics 、 Risk Management、Project Planning、Project Scheduling 等。又如 Richard Johnsonbaugh 與 Martin Kalin 的 Object-Oriented Programming in C++[39] 一 書 , 在 Inheritance 這 個 議 題 上 提 到 了 四 個 子 議 題 : Constructor 、 Polymorphism & Virtual Function 、 Destructor 、 Multiple Inheritance 等。 (2) 對特定議題的解法或方法:某些議題的介紹並不是分為子議題,而是針 對此議題介紹各種不同解法或方法。這種類型的內容與前兩節討論的技 術論文、技術報告雖然有些不同,但其本質仍屬「問題導向」,因此可 採用上述的問題與解法來加以描述。在這裡問題即是書本討論的議題, 而解法則是書本談到的解法或方法。例如 Hafedh Mili 等的 Reuse-based Software Engineering [40]一書中對 Domain Analysis 提出了如下的方 法:Feature-Oriented Domain Analysis(FODA)、Organization Domain Modeling(ODM) 、Join Object-Oriented Domain Analysis(JODA) 、Reuse Library Process Model(RLPM)、Domain Analysis and Design Process (DADP) 、Domain-Specific Software Architecture(DSSA) ,又或者演算 法的書對排序方法介紹了如下的方法:Bubble Sort、Insertion Sort、Binary Sort、Quick Sort、Shell Sort 等。 (3) 介紹此議題所提供的範例:由於書本知識是以介紹為主要目的,因此在 其說明過程中會以範例讓讀者易於理解。這種內容尤其容易出現在偏向 實作面的書本,例如程式語言、資料結構、演算法、資料庫等等。範例 有助於讀者對議題的理解,但其實並沒有真正增加書本介紹的知識範 圍,因此這部份的內容不必加入對書本知識的描述中。 經由上述的分析,可知書本知識亦可籍由良好定義的關鍵字加以描述,這個 關鍵字可分為「主題」、「議題」、「解法」三類: 33.

(45) (1) 主題(Subject):主題即是一本書所探討的主要內容,通常會是書名。 主題可以籍由一良好的分類架構將軟體技術知識的主題分類,使其定義 標準化。 (2) 議題(Topic):一本書的主題下會包含幾個主要的議題。這些議題下可 能又可細分為子議題,由於這些子議題的內容組成主要議題,故亦可看 成主要議題包含數個子議題。書本知識的議題間可能會有閱讀上的順序 關係,例如閱讀 Object-oriented analysis 跟 Object-oriented design 之前應 先閱讀 Object-oriented concept,因此他們會有依存的關係。 (3) 解法(Approach):如前所述,某些議題的介紹並不是分為子議題,而 是針對此議題介紹各種不同解法或方法,這類型便以「解法」定義。 書後的索引(Index)雖然也具有相當的參考價值,但由於索引實在太過龐 雜,若索引中的每個字都做為書本的關鍵字,反而在描述上增加許多困難,且看 不出書本內容的重點。而上述的三項關鍵字分類係依書本知識的架構得來,故以 此三類關鍵字便能對書本知識做有效率的描述,書本知識關鍵字可以圖 3 - 6 表 示:. Subject. Topic. Topic. Topic. Topic. Topic. Topic. Topic. Topic Approach. Approach 圖 3 - 6 書本關鍵字示意圖 34. Topic. Topic.

(46) 以 Roger Pressman 的 Software Engineering 一書中針對 Project Management 這個議題的內容以上述的方式分類,便可得到如圖 3 - 7 的結果:. Subject. Software Engineering. Topic Project Management. Topic Project Metrics. Topic. Topic. Risk Management. Project Planning. Topic. Topic. Software Scope. Approach. LOC-based Estimation. Project Scheduling. Topic. Project Estimation. Approach. Problem-based Estimation. Topic. Make/Buy Decision. Approach FP-based Estimation. 圖 3 - 7 書本關鍵字表示法範例(software engineering). 將書本知識以上述方式表示後,每個書本知識可看成一個個獨立的物件。這 些物件可能因為討論的主題(Subject)相同,因而會在知識庫中分在同一類型中。 此時知識庫必須整合這些書本知識提供給使用者選擇。在主題之下有書本的議題 (Topic) ,故多本書的議題可以整合後取其聯集,讓使用者了解此主題下有哪些 議題,例如介紹 Data Structure 的書,有的書提到 List、Queue、Stack、Hash Table, 有的書提到 Tree、Hash Table 等,則知識庫可整合這些議題供使用者參考,若多 本書談到了同一議題,則知識庫可列出各書在此議題下的子議題或解法 (Approach)供使用者比較。這樣做對使用者來說非常方便,因為他可以快速掌 握多本書的概略內容,找出有興趣的議題,進而取得適合的知識。 雖然書本知識與技術論文、技術報告的「問題導向」特性有些不同,但仍可 將書本知識視為具有「問題」與「解答」特性的知識。因為對書本知識而言,使. 35.

數據

圖  2 - 1  軟體知識模型  至於知識的創造是一項連續不斷的過程,透過內隱知識與外顯知識彼此的交 互作用,由個人、團體慢慢向外擴張至整個組織結構,結合新的概念和既有的知 識,進而發展出新的知識,此一反覆遞增的過程,即為知識的螺旋(Spiral of  Knowledge)[12]。知識的螺旋包含社會化、外化、整合、內化四種知識的轉換 模式,而軟體發展的過程本身也符合知識螺旋的特性。根據這四類轉換在軟體知 識管理所扮演的角色與軟體發展者在各項轉換中所必須執行的活動,可整理軟體 知識管理模型如圖  2 -
圖  2 - 3  軟體知識分類範例
圖  2 - 7    Faceted Classification 範例結果
圖  2 - 8    Case-based Reasoning 模型
+7

參考文獻

相關文件

2-1 化學實驗操作程序的認識 探究能力-問題解決 計劃與執行 2-2 化學實驗數據的解釋 探究能力-問題解決 分析與發現 2-3 化學實驗結果的推論與分析

推理論證 批判思辨 探究能力-問題解決 分析與發現 4-3 分析文本、數據等資料以解決問題 探究能力-問題解決 分析與發現 4-4

在選擇合 適的策略 解決 數學問題 時,能與 別人溝通 、磋商及 作出 協調(例 如在解決 幾何問題 時在演繹 法或 分析法之 間進行選 擇,以及 與小組成 員商 討統計研

並藉由適當工具與資訊,去描述、模擬、解釋與 預測各種現象,發揮數學思維方式的特長,做出

● 應用 Greedy choice ,將問題劃分成子問題,根據 optimal su bstructure ,可以持續應用 Greedy choice

這些問題目前尚未找到可以在 polynomial time 內解決的 algorithm.. 這些問題目前尚未被證明無法在 polynomial time

在選擇合 適的策略 解決 數學問題 時,能與 別人溝通 、磋商及 作出 協調(例 如在解決 幾何問題 時在演繹 法或 分析法之 間進行選 擇,以及 與小組成 員商 討統計研

 活用建築物本身擁有的磁場特性進行定位 ,因此可用來解決 上述問題。利用實驗型App取得智慧型手機地磁場感應器的數據,接著