摘 要:首先評述軟件工程知識體系指南的歷史及其五大目標(biāo),并進(jìn)一步說明了其層次結(jié)構(gòu)以及相關(guān)的八個學(xué)科;詳細(xì)分析了其十大知識域及其相應(yīng)的各個子專題;最后探討了我國如何應(yīng)用軟件工程知識的體系指南。
關(guān)鍵詞:軟件工程; 標(biāo)準(zhǔn)化; 軟件工程知識體系; 軟件工程教育
中圖法分類號:TP311.5 文獻(xiàn)標(biāo)識碼:A 文章編號:1001-3695(2006)10-0001-03
Overview of Guide to Software Engineering Body of Knowledge
WAN Jiangping, AN Shifang, HUANG Deyi
(College of Business Administration, South China University of Technology, Guangzhou Guangdong 510640, China)
Abstract:The history and its five goals of guide to the Software Engineering Body of Knowledge(SWEBOK) and its hierarchical organization and its eight related disciplines are illuminated in the first. Then, both ten knowledge areas and their topics of SWEBOK are also illuminated. Finally, how to apply SWEBOK in China is discussed.
Key words:Software Engineering; Standard; SWEBOK(Software Engineering Body of Knowledge); Education of Software Engineering
隨著軟件產(chǎn)業(yè)的逐漸形成,一方面,國際軟件工程標(biāo)準(zhǔn)化迅速活躍起來,另一方面,軟件工程的教育也應(yīng)運而生。特別是20世紀(jì)80年代和90年代,計算機科學(xué)教育得到了突飛猛進(jìn)的發(fā)展,進(jìn)一步帶動了軟件工程教育。不過人們發(fā)現(xiàn),雖然許多院校的大綱已經(jīng)從最初的以程序設(shè)計語言和編碼為中心的課程設(shè)置轉(zhuǎn)移到強調(diào)軟件工程理論和設(shè)計上,但是直接面向“工程化”的課程和學(xué)時很少。然而,恰恰是諸如需求建模、設(shè)計方法、體系結(jié)構(gòu)設(shè)計、軟件復(fù)用、軟件過程、質(zhì)量問題、團(tuán)隊組織技能之類軟件工程領(lǐng)域的知識和技能對于商業(yè)軟件的高效開發(fā)是至關(guān)重要的。由于缺乏對于各種軟件工程化實踐活動和必要能力的共識,致使在軟件工程化活動中出現(xiàn)許多混亂現(xiàn)象,對軟件工程知識的評價、獲取和應(yīng)用造成嚴(yán)重的不良后果。
1 軟件工程知識體系指南的歷史
1998年,美國聯(lián)邦航空管理局在啟動一個旨在提高該局技術(shù)和管理人員軟件工程能力的項目時,發(fā)現(xiàn)他們找不到軟件工程工程師應(yīng)該具備的公認(rèn)的知識結(jié)構(gòu)。他們向美國聯(lián)邦政府提出了關(guān)于開發(fā)“軟件工程知識體系指南”的項目建議。美國EmbryRiddle航空大學(xué)計算與數(shù)學(xué)系的Thomas B.Hilburn教授接受了該研究項目,并且于1999年4月完成了《軟件工程知識本體結(jié)構(gòu)》的報告。該報告發(fā)布后迅速引起世界軟件工程界、教育界和一些政府對建立軟件工程本體知識結(jié)構(gòu)的興趣。很快人們普遍接受了這樣的認(rèn)識:建立軟件工程本體知識的結(jié)構(gòu)是確立軟件工程專業(yè)至關(guān)重要的一步;如果沒有一個得到共識的軟件工程本體知識結(jié)構(gòu),將無法驗證軟件工程工程師的資格,無法設(shè)置相應(yīng)的課程,或者無法建立對相應(yīng)課程進(jìn)行認(rèn)可的判斷準(zhǔn)則。對建立權(quán)威的軟件工程知識本體結(jié)構(gòu)的需求迅速從世界各地反映出來。1999年5月,ISO和IEC的第一聯(lián)合技術(shù)委員會(ISO/IEC/JTC1)為順應(yīng)這種需求,立即啟動了標(biāo)準(zhǔn)化項目——“軟件工程知識體系指南”(Guide to the Software Engineering Body of Knowledge, SWEBOK,http://www.swebok.org/)。美國電子電氣工程師學(xué)會與美國計算機聯(lián)合會聯(lián)合建立的軟件工程協(xié)調(diào)委員會(SECC)、加拿大魁北克大學(xué)以及美國MITRE公司(與美國SEI共同開發(fā)SWCMM的軟件工程咨詢公司)等共同承擔(dān)了ISO/IEC/JTC1“SWEBOK指南”項目任務(wù)。幾十個國家和地區(qū)的幾百名軟件工程專家先后參加了SWEBOK指南草案的三次公開審查工作,提出了幾千條意見和建議。整個SWEBOK指南項目實施過程分為三大階段,即草人階段、石人階段和鐵人階段。草人階段產(chǎn)生軟件工程本體知識指南的雛型,主要是為該指南確定恰當(dāng)?shù)慕M織結(jié)構(gòu)。2001年4月18日發(fā)布的SWEBOK 0.95版標(biāo)志著石人階段的結(jié)束。在完成兩年試用之后,啟動了該指南的“鐵人階段”的編制工作。其中鐵人階段包括0.1版(1999.2),0.5版(1999.10),0.6版(2000.2),0.7版(2000.4),0.9版(2001.2),0.95版(2001.5),1.0版(2001.5)。本文將討論的是最新的2004版本。
2 軟件工程知識體系指南的目標(biāo)
SWEBOK指南的目的是為軟件工程學(xué)科的范圍提供一致的確認(rèn),為支持該學(xué)科的本體知識提供指導(dǎo)。SWEBOK指南將軟件工程學(xué)科的本體知識分為10個知識域,各種重要概念之間的區(qū)別在每個知識域描述中闡述,便于讀者迅速查找感興趣的專題。
SWEBOK指南的目標(biāo)是:①促進(jìn)軟件工程本體知識達(dá)成世界范圍的共識;②澄清軟件工程與其他相關(guān)學(xué)科如計算機科學(xué)、項目管理、計算機工程以及計算機數(shù)學(xué)的關(guān)系,并且確定軟件工程學(xué)科的范圍;③反映軟件工程這個學(xué)科內(nèi)容的特征;④確定軟件工程本體知識的各個專題;⑤為相應(yīng)的課程和職業(yè)資格認(rèn)證材料的編寫奠定基礎(chǔ)。其目標(biāo)結(jié)構(gòu)圖如圖1所示。
SWEBOK指南項目的成果并不在于知識體系本身,而在于它是一個指南。知識早已存在,關(guān)鍵是在可以表征軟件工程學(xué)科特點的核心知識子集上達(dá)成共識。為了達(dá)成這些目標(biāo),該項目是面向廣大讀者的。它著眼于為公共和私營的組織或團(tuán)體服務(wù),需要對軟件工程的共識來確定教育和訓(xùn)練的需求、崗位分類和開發(fā)績效評估的策略,同時也向在職的軟件工程師和政府官員闡明了制定認(rèn)證和專業(yè)指導(dǎo)方針的公共策略的相關(guān)責(zé)任。
SWEBOK指南面向全世界的廣大讀者。它適合于有關(guān)的公共和私營組織——它為軟件工程規(guī)定教育和培訓(xùn)要求、劃分職業(yè)類別、擬訂績效評價政策或確定開發(fā)任務(wù)提供一致的見解;它適合于從事具體執(zhí)行或管理工作的軟件工程師和負(fù)責(zé)制定職業(yè)許可政策及指南的政府官員;它適合于負(fù)責(zé)規(guī)定認(rèn)證規(guī)則、大學(xué)課程認(rèn)可政策以及職業(yè)實踐指南的職業(yè)工作者和教育工作者;它也適合于正在學(xué)習(xí)軟件工程專業(yè)的學(xué)生和從事課程設(shè)置及課程內(nèi)容設(shè)計的教育工作者和培訓(xùn)工作者。
3 軟件工程知識體系指南的結(jié)構(gòu)
SWEBOK 2004版包括正文11章和四個附錄。核心部分是第二~第十一章。為了便于閱讀,對于核心部分,SWEBOK指南在材料的組織上采用了比較一致的分層結(jié)構(gòu)。整個SWEBOK指南中包含10個本體知識域(Knowledge Areas, KA),每個本體知識域均用一章予以描述,并且進(jìn)一步分解為若干專題,在專題描述中引用有關(guān)知識的參考材料。涉及到了八個相關(guān)的學(xué)科:計算機工程(Computer Engineering)、計算機科學(xué)(Computer Science)、管理(Management)、數(shù)學(xué)(Mathematics)、項目管理(Project Management)、質(zhì)量管理(Quality Management)、軟件人類工程學(xué)(Software Ergonomics)和系統(tǒng)工程(System Engineering)。
知識域間的區(qū)別與相關(guān)學(xué)科間的區(qū)別對指南的目標(biāo)很重要。項目將被指定知識域及其專題,它們被看作是軟件工程師的核心知識,軟件工程師也應(yīng)該知道相關(guān)學(xué)科的資料,但SWEBOK指南項目將不會試圖去指定這些資料,而是留給其他部門和單位努力去解決,如IEEE計算機協(xié)會和計算機協(xié)會軟件工程協(xié)調(diào)委員會(ACM Software Engineering Coordinating Committee)的協(xié)同合作、軟件工程教育工作組(Working Group on Software Engineering Education)的研究等。如圖2所示,每個知識域的說明均包含了若干個重要的成分。
第10期萬江平等:軟件工程知識體系指南綜述 SWEBOK指南用層次的組織結(jié)構(gòu)將每個知識域分解成一組可以識別的專題。二或三層的細(xì)目分類給讀者提供了一個合理的方法去找到感興趣的專題。指南將會用一種與主流的思想學(xué)派相兼容、與在工業(yè)和軟件工程文獻(xiàn)及標(biāo)準(zhǔn)中通用的細(xì)目分類方法相兼容的方式來處理所選擇到的專題。專題的細(xì)目分類不假定特殊的應(yīng)用域、商業(yè)用途、管理哲學(xué)、開發(fā)方法等。每個專題的說明范圍將僅符合讀者成功找到參考資料的需要,知識體系畢竟是在參考的資料中得到,而不是在指南本身。
指南為每個知識域確定了參考資料。它們可能是書本的章節(jié)、參考論文或任何其他公認(rèn)的權(quán)威消息的來源——但參考資料必須用英文寫成而且通常是可獲得的。我們更需要那些不是IEEE計算機協(xié)會或ACM早已擁有版權(quán)的資料,因為我們想在Internet上免費得到這些參考資料。指南將會按Bloom的分類學(xué)(Taxonomy of Educational Objectives: The Classification of Educational Goals, Mackay, 1956)來組織。Bloom的分類學(xué)是眾所周知并廣泛使用的認(rèn)知經(jīng)驗分類方法。
4 軟件工程知識體系指南的十大知識域
每個知識域的選擇、命名和說明均保留了對專題的注解、評審和修正。而諸如測量、工具和標(biāo)準(zhǔn)的專題跨越了知識域卻被獨立地分開了,這些內(nèi)容在指南的后續(xù)版本中都將要評審(圖3)。10個知識域及與它們集成的重要專題如表1所示。
(1)軟件需求(Software Requirements)。需求定義為解決真實世界問題而必須展示的特性。軟件需求的知識域包括七個子域,即軟件需求基礎(chǔ)、需求過程、需求獲取、需求分析、需求規(guī)格說明、需求確認(rèn)和實踐考慮。
(2)軟件設(shè)計(Software Design)。根據(jù)IEEE[IEEE 610.1290],設(shè)計既是“定義一個系統(tǒng)或組件的體系結(jié)構(gòu)、組件、接口和其他特征的過程”,又是“這個過程的結(jié)果”。軟件設(shè)計的知識域包括六個子域,即軟件設(shè)計基礎(chǔ)、軟件設(shè)計關(guān)鍵問題、軟件結(jié)構(gòu)與體系結(jié)構(gòu)、軟件設(shè)計質(zhì)量的分析與評價、軟件設(shè)計符號、軟件設(shè)計的策略與方法。
(3)軟件構(gòu)造(Software Construction)。它指通過編碼、驗證、單元測試、集成測試和排錯的組合,具體創(chuàng)建一個可以工作的、有意義的軟件,其知識域包括軟件構(gòu)造基礎(chǔ)、管理構(gòu)造、實際考慮三個子域。
(4)軟件測試(Software Testing)。它是由在有限測試用例集合上,根據(jù)期望的行為,對程序的行為進(jìn)行的動態(tài)驗證組成,測試用例是實際上無限的執(zhí)行域中適當(dāng)選擇出來的。軟件測試包括五個子域,即軟件測試基礎(chǔ)和測試級別、測試技術(shù)、需求分析、與測試相關(guān)的度量、測試過程。
(5)軟件維護(hù)(Software Maintenance)。軟件一旦投入運行,就可能出現(xiàn)異常,運行環(huán)境可能發(fā)生改變,用戶會提出新的需求。生命周期軟件維護(hù)階段從軟件交付時開始,但是維護(hù)活動出現(xiàn)得還要早。軟件維護(hù)的知識域包括四個子域,即軟件維護(hù)基礎(chǔ)、軟件維護(hù)的關(guān)鍵問題、維護(hù)過程、維護(hù)技術(shù)。
(6)軟件配置管理(Software Configuration Management)。為了系統(tǒng)地控制配置的變更和維護(hù)在整個系統(tǒng)生命周期中的完整性和可追蹤性,而標(biāo)志軟件在時間上不同點的配置的學(xué)科。軟件配置管理包括六個子域,即軟件配置管理過程管理、軟件配置標(biāo)志、軟件配置控制、軟件配置狀態(tài)統(tǒng)計、軟件配置審核、軟件發(fā)行管理和交付。
(7)軟件工程管理(Software Engineering Management)。處理軟件工程的管理與度量,雖然度量是所有知識域的一個重要方面,但是這里涉及的是度量程序的專題。軟件工程管理包括六個子域,即啟動和范圍定義、軟件項目計劃、軟件項目實施、評審與評價、關(guān)閉、軟件工程度量。前五個覆蓋軟件過程工程管理,第六個描述軟件度量的程序。
(8)軟件工程過程(Software Engineering Process)。涉及軟件工程過程本身的定義、實現(xiàn)、評定、度量、管理、變更和改進(jìn)。軟件工程過程包括四個子域,即過程實施與改變、過程定義、過程評定、過程和產(chǎn)品度量。
(9)軟件工程工具和方法(Software Engineering Tool and Method)。包括軟件工程工具、軟件工程方法兩個子域。
(10)軟件質(zhì)量(Software Quality)。處理跨越軟件生命周期過程的軟件質(zhì)量的考慮,由于軟件質(zhì)量在軟件工程中無處不在,其他知識域也涉及質(zhì)量問題。軟件質(zhì)量包括三個子域,即軟件質(zhì)量基礎(chǔ)、軟件質(zhì)量過程、實踐考慮。
5 軟件工程知識體系指南的應(yīng)用思考
與亞洲的印度和歐洲的愛爾蘭等國相比,中國軟件產(chǎn)業(yè)發(fā)展還不太盡如人意,原因很多。從SWEBOK指南發(fā)展中至少有下面兩點啟示:①我國軟件工程知識教育必須與國際接軌;②我國必須關(guān)注軟件工程知識指南的最新發(fā)展。
在已經(jīng)比較成熟的計算機科學(xué)教育中,不乏有關(guān)的理論知識,但缺少的是軟件工程的“行為”以及對于“工程”而言至關(guān)重要的人員問題和過程問題。在長期軟件工程實踐活動中已經(jīng)積累了大量行之有效的經(jīng)驗和知識,其中有一些經(jīng)過反復(fù)探討和驗證之后還被制定成了標(biāo)準(zhǔn)。SWEBOK是指南,不是軟件工程知識本身,軟件工程方面的知識已經(jīng)存在。SWEBOK指南的宗旨是在眾多知識中圈定“屬于”軟件工程學(xué)科域的知識,規(guī)定軟件工程教育和培訓(xùn)方面的要求和制定出評價原則,并且在世界范圍內(nèi)求得公認(rèn)。它還試圖為從事軟件實踐的工程師和負(fù)責(zé)制定有關(guān)職業(yè)指導(dǎo)原則政策的官員提供指南;此外,制定高等院校課程認(rèn)證規(guī)則、認(rèn)可政策和職業(yè)實踐指南的社會職業(yè)工作者和教育工作者以及從事軟件工程職業(yè)學(xué)習(xí)的學(xué)生也可以從SWEBOK指南中得到收益。本文至今還沒有發(fā)現(xiàn)SWEBOK指南應(yīng)用于我國軟件工程的教育實踐。
第一屆國際軟件工程知識體系指南演化研討會于2005年7月25日~28日在蘇格蘭的愛丁堡與COMPSAC 2005聯(lián)合舉行,研討會的目標(biāo)如下:①制定增刪指南知識域的標(biāo)準(zhǔn);②制定專門的增刪指南專題標(biāo)準(zhǔn)的準(zhǔn)則;③制定專門的取代、增加和刪除指南的參考資料標(biāo)準(zhǔn)的準(zhǔn)則;④推薦知識域范圍的增加、刪除或重大修改;⑤提名指南適應(yīng)性修改的潛在起草人。本文認(rèn)為我國相關(guān)的研究也亟待加強,不僅要從計算機工程和計算機科學(xué)本身以及其相關(guān)的六個學(xué)科入手,還需要從知識科學(xué)和系統(tǒng)科學(xué)的高度來研究[3~6]。
參考文獻(xiàn):
[1]SWEBOK,Guide to Software the Software Engineering Body of Knowledge[EB/OL]. http://www.swebok.org/, 2004.
[2]Pierre Bourque, et al. The Guide to the Software Engineering Body of Knowledge[J]. IEEE Software, 1999,16(6):35-44.
[3]Wang Zhongtuo. Knowledge System Engineering: A New Discipline of Knowledge Management and Enabling[J]. International Journal of Knowledge and System Sciences, 2004,1(1):916.
[4]Etsujiro Shimemura, Yoshiteru Nakamori. Toward Establishing Knowledge Science and Technology[C]. Proceedings of International Symposium on Knowledge and Systems Sciences, 2001.111.
[5]Wan Jiangping, Yang Jiangmei, Han Huiyuan. Support Structure of Knowledge Management in Software Process Improvement[A]. Roland T. Information Systems: Ebusiness Challenge[C]. IFIP the 17th World Computer Conference, Norwell, Massachusetts: Kluwer Acadmic Publishers, 2002.17-29.
[6]萬江平,楊建梅.軟件過程改進(jìn)的復(fù)雜性工作程序研究——SWCMM實施方法論[M]. 北京:科學(xué)出版社,2004.
作者簡介:
萬江平(1964-),男,副教授,碩士生導(dǎo)師,博士,主要研究方向為知識系統(tǒng)與信息系統(tǒng)、管理決策和項目管理、軟件工程和軟件商務(wù)等;安詩芳(1978-),女,碩士研究生,主要研究方向為知識系統(tǒng)和信息系統(tǒng)、軟件工程和項目管理;黃德毅(1981-),男,碩士研究生,主要研究方向為知識系統(tǒng)和信息系統(tǒng)、軟件工程和項目管理。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文