標題: 軟體開發實作階段的知識管理
A Software Knowledge Management System for Implementation Phase
作者: 施向玨
Hsiang-Chueh Shih
鍾乾癸
Chyan-Goei Chung
資訊科學與工程研究所
關鍵字: 軟體知識;知識管理;軟體知識管理系統;實作階段;software knowledge;knowledge management;Software Knowledge Management System;Implementation Phase
公開日期: 2001
摘要: 軟體產業是高度知識密集與人力密集的產業,軟體開發單位必須做好知識管理以加速知識傳遞與學習,方能縮短軟體開發時間及提高軟體品質,進而降低整體開發成本與加快產品的推出。 目前從軟體發展的角度來進行知識管理相關研究可以區分為產品導向、流程導向與運用代理人輔助發展者等作法,這些方法的基本差異在於知識範圍的看法不同;由於對軟體知識範圍定義的不夠完整,也缺乏一套完善的方案來進行軟體知識的循環與運用,所以只能滿足軟體開發的部分知識需求。為了提出更完善的軟體知識管理系統,本研究首先探討軟體知識之種類與型態,配合發展程序而提出一套軟體的知識模型,並藉由知識螺旋的探討,提出軟體知識管理模式與應用流程建議。 所謂軟體知識,是指在軟體發展過程中所需要、產生、應用或參考到的各項顯性與隱性的知識。其種類又可分為關於軟體發展所需的一般性基礎知識,也就是軟體工程知識,以及發展特定軟體所需的相關知識,包括領域知識、資訊技術、相關軟體產物以及所獲得的經驗等。知識的螺旋包含社會化、外化、整合、內化四種知識的轉換模式,而軟體發展的過程本身也符合知識螺旋的特性。根據知識的螺旋模型,本研究進一步的探討軟體知識的擷取、表示、方類、儲存、搜尋、散佈、應用與評估等程序,並提出軟體知識管理模型。 為驗證本方法的可行性,本研究以實作階段知識管理為對象,探討實作階段所需要運用到的知識,找出目前開發工具之不足之處,例如選擇適當的演算法、選擇適當的資料結構、以及尋找錯誤等,歸納整理出實作階段的軟體知識管理系統應具備之功能包括:輔助成員知識的交流與溝通;便利軟體知識的建立、保存與再利用;幫助知識的分類與搜尋;配合軟體的發展程序盡可能的自動化與提供發展者適切的協助等。根據上述需求,設計了一套軟體知識管理系統,分為知識循環子系統與代理人子系統兩部分,前者主要用來協助各類軟體知識的建立、保存、分類、搜尋、修改、運用、評估等方面;後者則是根據定義的規則,自動分析軟體產物,在問題或狀況發生時提供發展者建議與修改。藉由這套系統,軟體組織可以簡單有效的方式來進行知識管理,軟體發展者也可透過此系統來進行傳播與儲存所需的各項知識。
Software industry is a knowledge- and human-intensive one, hence knowledge management becomes essential for software development organizations. Knowledge management helps the organizations on speeding up the dissemination and learning process of knowledge, improving software quality, reducing the cost of development, and accelerating the development of software product. Currently, from software development point of view, there are three approaches to design software knowledge management system: the product-oriented approach, the process-oriented approach, and the software agent-based approach. The main difference of these approaches is that they have different view about the knowledge definition in software development organization. So, these approaches could only partially satisfy the knowledge management requirements for a software development organization. The purpose of this research is to propose a software knowledge management model which encompasses the knowledge definitions of these approaches. Software knowledge is defined as tacit and explicit knowledge needed, produced, applied, or referenced during software development. It consists of software engineering knowledge, domain knowledge, computer technology knowledge, product artifacts, and development experience etc. The spiral model of converting information into knowledge consists of four transformation modes: socialization, externalization, combination, and internalization. According to the knowledge spiral model, this research proposes a software knowledge management model which consists of processes of software knowledge acquisition, representation, classification, preservation, searching, distribution, utilization, and evaluation,. To verify the feasibility of our model, this research takes the implementation phase as an example to build a software knowledge management system. The detail knowledge needed in this phase is defined first, then shortages of current developing tools, such as those at choosing proper algorithms and data structures, and finding errors etc. are found. The requirements of the software knowledge management system for implementation phase are defined as follows: helping programmers to exchange and communicate their knowledge; facilitating software knowledge creation, reservation classification search, and reuse; and cooperating software knowledge providing facilities into software developing process to give proper assistance to programmers. Based on the requirements above, a software knowledge management system, including knowledge repository subsystem and agent subsystem, is designed. The knowledge repository subsystem is to facilitate the process of knowledge creation, preservation, classification, searching, modification, utilization, and evaluation. The agent subsystem would analyze the artifacts automatically in terms of predefined rules, and provide possible suggestion and help when errors or inconsistencies are detected. Consequently, software developers can use our system to disseminate and preserve all kinds of the knowledge easily and effectively.
URI: http://140.113.39.130/cdrfb3/record/nctu/#NT900392036
http://hdl.handle.net/11536/68450
顯示於類別:畢業論文