計算教程軟件工程_第1頁
計算教程軟件工程_第2頁
計算教程軟件工程_第3頁
計算教程軟件工程_第4頁
計算教程軟件工程_第5頁
已閱讀5頁,還剩97頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ComputingCurriculum-

SoftwareEngineering

--FinalReport-一

(May21,2004)

計算教程:軟件工程

TheJointTaskForceonComputingCurricula

IEEEComputerSociety

AssociationforComputingMachinery

目錄

第一章緒論4

1.1計算教程軟件工程卷的目標4

1.2在計算教程中所處的位置4

1.3CCSE的發展過程4

1.3.1教育知識領域小組(EducationKnowledgeAreaGroup)4

1.3.2教育學小組(PedagogyFocusGroup)5

1.3.3CCSE教程的發展過程5

1.4CCSE教程的結構6

第二章軟件工程學科7

2.1軟件工程學科7

2.2作為計算學科的軟件工程8

2.3作為工程學科的軟件工程8

2.3.1工程特征8

2.3.2工程設計9

2.3.3特定領域的軟件工程9

2.4專業實踐9

2.4.1基本原理9

2.4.2軟件工程道德和職業規范10

2.4.3支持專業實踐的教程10

2.5軟件工程教育和計算教程的早期工作10

2.6SWEBOK和其它BOK的成果11

第三章指導原則二12

3.1CCSE的原則12

3.2學生培養目標13

第四章軟件工程教育知識概述15

4.1SEEK的形成過程15

4.2知識領域、知識單元和知識點15

4.3核心內容15

4.4時間單元16

4.5SEEK與教程之間的關系16

4.6知識領域的選擇16

4.7SE教育知識領域17

4.8計算基礎18

4.9數學和工程基礎19

4.10專業實踐20

4.11軟件建模和分析21

4.12軟件設計23

4.13軟件驗證與確認24

4.14軟件演化25

4.15軟件過程26

4.16軟件質量27

4.17軟件管理28

2

4.18特定系統和應用29

第五章設計與實施SE教程的指導方針31

5.1關于開發和講授教程的方針31

5.2建立教程的方針31

5.3對教程及其實施應具備的認識和態度33

5.4軟件工程教學的一般策略36

5.5小結37

第六章課程和課程順序38

6.1課程編號方案38

6.2軟件工程、計算機科學和數學課程的授課順序40

6.2.1計算入門課程順序A:在第一學年開始學習軟件工程41

6.2.2計算入門課程順序B:在第二學年開始學習軟件工程41

6.2.3數學入門課程順序42

6.3軟件工程核心課程順序43

6.3.1軟件工程核心包143

6.3.2軟件工程核心包II44

6.3.3軟件工程綜合實習45

6.4對教程進行完善:附加課程45

6.4.1涵蓋剩余必修內容的課程45

6.4.2非SEEK課程46

6.5教程模式47

第七章對不同環境的適應52

7.1不同的教學環境52

7.1.1學生位于不同的物理位置52

7.1.2學生在不同的時間學習53

7.2不同的教育機構環境53

7.2.1銜接問題53

7.2.2不同大學教程之間相協調53

7.2.3教育機構之間的協作54

7.3美國有副學位授予權的教育機構和加拿大社區大學的教育計劃54

7.3.1特殊課程計劃55

第八章教育計劃的實施與評價56

8.1教程資源和基礎設施56

8.1.1教師56

8.1.2學生56

8.1.3基礎設施56

8.1.4工業界的參與56

8.2評定57

8.3其它相關計算學科中的軟件工程57

軟件工程教育參考文獻59

附錄A:相關課程的詳細描述67

附錄B:貢獻者和審閱者94

3

第一章緒論

1.1計算教程軟件工程卷的目標

計算教程軟件工程卷的主要目標是,為教育機構及評定組織的本科軟件工程教育內容提

供指導和建議。這些建議是由志愿者組成的國際團體提出的,并考慮了上個世紀后25年來

軟件工程教育的大量成果。因為目前軟件工程學位教育及其資質認證在許多國家已經設立,

因此軟件工程推薦教程被賦予特別重要的地位。

本文檔的內容以第三章所闡述的軟件工程畢業生應該具備的高水平特征為基礎,最主要

的兩個貢獻在于:

-SEEK:軟件工程教育知識(SoftwareEngineeringEducationKnowledge)軟件工

程畢業生所必須了解的內容。

-教程:在不同環境下講授軟件工程基本知識和技能的方式。

1.2在計算教程中所處的位置

1998年,ACM(美國計算機械協會)和1EEE-CS(美國電氣電子工程師協會計算機分

會)組織了一個稱為計算■教程2001(ComputingCurricula2001,簡稱CC2001)的聯合工作

組,其本意是形成一個指導教程從而“滿足最近10年以及未來10年計算技術的最新發展”。

該工作組在工作早期就認識到:作為一個主要由計算機科學家組成的團體,他們的能力并不

足以開發出覆蓋整個計算技術的指導教程。在過去的50年間,計算"(Computing)已成為覆

蓋廣泛領域的學科,超出了計算機科學的范圍,其中包括了多個獨立的學科,如計算機工程、

軟件工程、信息系統及其它許多方面。由于這個領域的廣泛性,教程工作組得到的結論是沒

有哪個單一專業團體能夠完整地評價該領域。與此同時,對第一個草案的反饋意見也說明,

計算教育界需要一個考慮學科寬度的報告。

為應對挑戰,工作組繼續工作并于2001年推出計算機科學推薦教程,即CC200/計拿

加存學卷(CCCS)[ACM2001]。此外,他們建議資助組織把項目擴展到包括上面所列舉的

計算教育界需要深究的相關學科。本文闡述的內容是CCSE(ComputingCurricula-Software

Engineering)項目,它是ACM和1EEE-CS為開發軟件工程指導教程所進行的第一次嘗試。

IS2002-信息系統本科學位教程模型與指南在2002年后期通過并出版,它是由ACM、

信息系統協會(theAssociationforInformationSystem,AIS)和信息技術專業協會(the

AssociationofInformationTechnologyProfessionals,AITP)組建的工作組提出的。他們正在進

,步制定計算機工程和信息技術的推薦教程。

1.3CCSE的發展過程

軟件工程卷的內容包括,大量志愿者和指導委員會成員在下述三方面的工作。一是?組

與教程相關的成果及SE畢業生必須了解的知識;二是本科軟件工程教育計劃中應包括的知

識規范,即SEEK;三是一系列推薦教程,它們描述了軟件工程教程在不同環境下與SEEK

的結合。

1.3.1教育知識領域小組(EducationKnowledgeAreaGroup)

本文的工作開始于2002年春,教育知識領域志愿者計劃開發?個初步的軟件工程教育

4

知識體。首先給志愿者們一組教育知識領域,每個領域都有一個簡短的描述,志愿者需要做

的是,使用指導委員會提供的模板為每個知識領域定義知識單元和知識點。除此之外,SEEK

開發者們還考慮了在CSEE&T2002(ConferenceonSoftwareEngineeringEducation&

Training)[Thompson2002]中舉辦的一個公開討論會,CSEE&T2002與ICSE2002

(InternationalConferenceofSoftwareEngineering)[Thompson2002]同時召開,共同討論軟

件工程教程所需要的知識。

志愿者們的初期工作反映在SEEK草案的初稿中,在2002年6月由NSF資助的一個

SEEK討論會上,該草案作為工作文檔使用。討論會把教育知識領域小組成員、指導委員會

成員、軟件工程教育界的權威人士以及選中的教育學小組(PedagogyFocusGroup)成員召

集在?起,共同致力于基本草案的形成。討論會的成果在會后由指導委員會加以細化。

推選批國際公認的軟件工程專家對SEEK文檔進行審閱。他們的評價/意見幫助指導

委員會制定第一個官方的SEEK草案,草案在2002年8月發布并請各界評閱。

2002年10月第一次評閱結束,指導委員會收到大約40份評閱意見。對于每個評價,

指導委員會都以書面形式給以回復,說明委員會對此將要做的工作。第二個版本的SEEK在

2002年12月發布,新一輪的評閱開始,并于2003年3月初結束。WGSEET(WorkingGroup

onSoftwareEngineeringEducationandTraining,軟件工程教育與培訓工作組)致力于SEEK

第二版的修正,使之更好地滿足教育學小組的教程指導要求。正是WGSEET的貢獻和第二

輪的評閱促使SEEK發展到最終版本。

1.3.2教育學小組(PedagogyFocusGroup)

2002年10月,教育學小組開始以SEEK為基礎制定推薦教程,為此形成了?個教育學

小組工作計劃。小組成員初期的工作是定義教育指南、教程模型、國際適用性以及實施環境。

2003年2月指導委員會對上述內容進行了細化,并在?次WGSEET會議和2003軟件工程

教育與培訓大會的一個討論會上聽取教育學章節草案的評閱意見。

教育學章節的草案包括以下內容:

-軟件工程教程設計和實施的原則;

-軟件工程教程包括教程模型與課程示例,說明課程包含的SEEK知識點;

-國際適用性;

-除學習SEEK中的知識外,學生應掌握的技能:

-對不同教育環境的適應性,例如兩年制的學校。

教程模型的開發參考了SEEK、計算機科學教程(CCCS)以及對現有學士學位教育的

調查結果,研究了來自北美、歐洲和澳大利亞的共計32個教學計劃。開發該模型的關鍵技

術是,確定哪些SEEK知識點能夠重用CCCS已有的課程,余下的SEEK內容將以現有教

學計劃為指導,安排到軟件工程課程中。

13.3CCSE教程的發展過程

2003年的春季和夏季,緒論、指導原則與培養目標、軟件工程背景等內容被加入到SEEK

和教程中,構成一個完整的CCSE草案。ICSE2003[Thompson2003]的第二次軟件工程教育

會對CCSE草案進行了第一次評閱。指導委員會根據這次會議以及另外一些非正式的評閱意

見制定了第一個公開的完整CCSE草案,并在2003年7月到9月對其進行評閱。同時,草

案送ACM教育理事會(ACMEducationBoard)和IEEE-CS教育活動理事會(Educational

ActivitiesBoard)進行評閱,評閱意見以及指導委員會的后續工作,最終促成了現在這個

CCSE最終版本。

5

1.4CCSE教程的結構

第二章討論軟件工程作為一門學科所具有的本質,介紹軟件工程教育的部分歷史,說明

它們是如何影響到本文提出的建議。第三章闡述隱藏于本文發展過程之后的相關指導原則,

這些原則從CC2001工作組開始就被采用。第三章還描述了每個SE畢業生所需要了解的內

容。第四章介紹軟件工程教育知識,為第五章和第六章所介紹的教程指南和教育計劃設計奠

定基礎。第七章討論如何在不同環境下實施第六章所提出的推薦教程.最后,第八章強調教

程實施的各種挑戰,并考慮了評定策略。

6

第二章軟件工程學科

本章討論了軟件工程的本質,以及和軟件工程指導教程的發展相關的一些歷史背景。本

章的目的是為后續章節中的教程內容提供一些基本知識和原理。

2.1軟件工程學科

自從20世紀40年代計算的破曉而出,人們對于計算機的應用就以驚人的速度發展起來。

軟件在我們日常生活的各個方面正扮演著一個核心角色,包括政府、銀行和金融、教育、交

通、娛樂、醫療、農業和法律等各個領域。同時,計算機程序在數量、規模和應用領域等方

面的增長引人注目,這導致上千億資金花費在軟件開發上面,許多人的工作和生活依賴于軟

件開發的成果。軟件產品也幫助人們獲得更高的生產效率,能更加高效的解決問題,同時也

給人們提供一個更加安全、靈活和寬松的工作與娛樂環境。盡管有很多成功之處,許多軟件

產品在成木、工期、質量等方面存在嚴重問題。產生這些問題的原因是多方面的,其中包括

以下幾點:

?軟件產品屬于最復雜的人造系統之一,并且由于其特點使得軟件擁有一些內在的、

基本的、難于處理的性質(如:復雜性、不可見性、易變性)[Brooks95]。

?對個人或小組開發小型軟件非常有效的編程技術和過程,在用于大型、復雜系統(例

如需要數百開發人員、多年時間、具有數百萬行代碼的系統)時并不是按比例的發

揮作用。

?計算機和軟件技術不斷變化的步伐推動著對新的、需要演化的軟件產品的需求。這

種情形提高了客戶的期望和競爭壓力,降低了在可接受開發進度內保證軟件質量的

能力。

自從1968年NATO軟件工程會議第一次有組織地正式把軟件工程作為一門學科討論差

不多35年了燈251969]。“軟件工程”這個術語已被廣泛使用于工業、政府和學術界。成千

上萬的計算職業者被冠以“軟件工程師”的頭銜;眾多的出版物、團體和組織、專業會議在

它們的名稱里面使用“軟件工程”這個術語;并有了許多關于軟件工程的教育課程和教育計

劃。可是仍有許多關于這個術語涵義的不同看法和爭論,以下的定義就是針對軟件工程本質

和含義的幾種觀點。不過它們都遵循一個共同的思路,即明確說明或強烈暗示軟件工程絕不

只是編寫代碼——它包括質量、進度和經濟效益、以及關于法規和紀律的知識與應用。

軟件工程的定義

多年來,出現了許多對軟件工程學科的定義。為了符合本文的目標,我們旨在突出以下

定義:

?“為了經濟地獲得在真實機器上可靠工作的軟件而制定和使用的合理工程原則(方

法)”[Bauer1972]。

?”軟件工程是這樣一種工程形式,它運用計算機科學和數學原理來針對軟件問題獲

得一種經濟有效的解決方案。”[CMU/SEI-90-TR-003]

?“用系統的、規范的、可量化的方法,開發、運行和維護軟件”[IEEE1990]。

這里的每個定義都包含一些對本文軟件工程的描述具有貢獻的方面.其中一個特別重要

的方面就是軟件工程建立于計算機科學和數學的基礎之上。并且,根據工程慣例,它超越了

該技術基礎而成為一個范圍更加廣闊的學科。

這些定義清楚表明了軟件工程是用系統的、可控制的、有效的方式建造高質量的軟件。

7

因此,分析和評估、規范、設計和軟件演化等需要特別強調。另外,管理與質量、創新性與

創造力、標準、個人技巧、團隊工作和專業實踐等一些內容在軟件工程中扮演著至關重要的

角色。

2.2作為計算學科的軟件工程

對軟件工程有一個比較普遍的誤解,認為它主要關心面向過程的活動(例如:需求、設

計、質量保證、過程改進和項目管理)。這種觀點認為,軟件工程的能力可以通過具有較強

的工程背景、熟悉一種軟件開發過程并有一些計算背景(包括使用一種或多種編程語言的經

驗)來獲得。事實上,這是遠遠不夠的。導致這種誤解的基礎是因為對軟件工程的木質和面

臨的挑戰認識并不完全。

在計算發展的歷史進程中,計算機科學家制造軟件,電子工程師生產出軟件運行的硬件。

隨著軟件規模、復雜性和重要性的增加,更需要確保軟件按意圖執行。在1970年代早期就

已經非常明顯,有效的軟件開發實踐需要比計算機科學原理更多的內容。它需要在計算機科

學范圍內開發的分析和描述工具,同時為提高人工制品的可靠性和可信性還需要工程思想的

嚴密性。

軟件工程與其它工程學科相比存在根本的區別,這應歸于軟件難以明了的本質和軟件操

作的離散性。人們試圖把為制造切實的、物理的人工制品而形成的工程實踐與數學原理和計

算機科學相結合。在利用計算和數學作為基礎的情況下,軟件工程仍在為制造高質量軟件尋

求系統的模型和可靠的技術。這些關注點擴展了從理論和原理到開發實踐的所有途徑,它們

在學科之外是最容易看到的。雖然并不指望每個軟件工程師在計算的所有方面都有很深的專

業知識,但是需要他們對相關內容有初步理解,并在某些方面有較深的專業知識。第四章定

義的軟件工程教育知識(SEEK)體系反映了軟件工程對計算機科學的依靠,以及SEEK作

為計算基礎的主要組成部分。

2.3作為工程學科的軟件工程

軟件工程的研究與實踐受到計算機科學和工程學科的影響。當前軟件工程的主要研究工

作是在計算機科學系或計算系(學院)進行的。類似地,這些學術單位和工程學院制定了軟

件工程學位計劃。這樣,軟件工程學科V其它傳統工程領域相比,可以被看作與計算機科學

聯系更加緊密的工程領域。在處理本文結構時,特別注意了工程實踐和軟件開發的結合,從

而區別本教程和計算機科學教程。為了對這些觀點進行更細致地闡述,本節描述了工程方法

學以及如何把它應用到軟件開發中。

我們必須指出,盡管軟件工程和其它傳統工程有很多相似之處(如2.3.1節中所列出的),

但它們仍有一些不同之處:

?主要基礎是計算機科學,而不是自然科學。

?更關注離散數學,而不是連續數學。

?關注抽象/邏輯實體,而不是具體/物理產品。

?不存在傳統概念中的“制造”階段。

?軟件“維護”指的是持續地開發或演化,而不是傳統的磨損和破裂。

2.3.1工程特征

所有工程學科都有一組共同的特征,它們非常重要,可以作為支撐工程的基礎。這些基

礎被看作軟件工程所期望具有的特征,它們影響到軟件工程的發展和本文的內容。

[1]工程師通過?系列的討論決策,仔細評估項目的可選活動,并在每個決策點選擇一

8

種在當前環境中適合當前任務的方法進行工作。可以通過對成本和收益進行折衷分

析調整相應策略。

[2]工程師需要對某些對象進行度量,有時需要定量的工作;他們要校準和確認度量方

法,并根據經驗和實驗數據進行估算。

[3]軟件工程師強調項目設計過程的紀律性,這是團隊高效工作的條件。

[4]工程師可勝任研究、開發、設計、生產、測試、構造、操作、管理,以及銷售、咨

詢和培訓等多種角色。

[5]工程師們需要在某些過程中使用工具,選擇和使用合適的工具是工程的關鍵要素。

[6]工程師們通過專業協會發展和確認原理、標準和最佳實踐方法,并提高個人能力。

[7]工程師們能夠重用設計和設計制品。

必須注意,當工程師和工程這兩個術語在后續的章節被廣泛使用時,本文主要針對本科

軟件工程教程的設計、開發和實施。本文許多成果是以大量個人和團體的工作為基礎,這些

工作推動了計算機科學和信息技術的發展,并形成了一些教育計劃幫助本科生以專業方式來

進行軟件開發實踐,在此對他們表示感謝。

2.3.2工程設計

任何工程活動都以設計為中心,對于軟件,設計同樣扮演著重要的角色。通常,工程設

計活動指,對特定的實際問題尋找技術方案以定義一個新產品,該過程還需要考慮經濟、法

律和社會等方面的問題。經過系統的過程,及對潛在沖突約束的折衷,盡量滿足項目的需求,

工程設計為解決方案的“物理”實現提供了先決條件。

因為軟件的特殊性,軟件工程與傳統的工程學不同,軟件工程更關注抽象、建模、信息

組織和表示、變更管理等。軟件工程在產品周期的設計和制造等階段必須考慮實現和質量控

制。此外,持續的演化(也就是“維護”)對軟件來說至關重要。宏觀上看,軟件工程面臨

的核心挑戰是工程設計決策。重要的是,工程設計決策過程將用于抽象的各個層次。重用和

基于構件開發在工程設計實踐中越來越受到重視,人們對此寄予厚望。

2.3.3特定領域的軟件工程

在特定領域內,工程師依靠專業知識和經驗評價可行性方案,并考慮與功能、成本、性

能和生產能力相關的各種因素。工程師必須決定哪些標準部件能夠使用,哪些還要開發。為

了做出這些決策,他們必須掌握領域基礎知識和相關專業。

特定領域的技術、工具和組件造就了許多軟件工程的成功案例。在標準方法已被廣泛接

受、并被很好理解的領域中,已出現了成功的途徑。為了專業實踐,軟件工程教育計劃的畢

業生應該至少熟悉一個應用領域的基礎知識。他們必須理解該領域定義的問題空間及常用求

解方法,包括為問題求解開發軟件時用到的標準組件(如果有的話)。

2.4專業實踐

工程教育計劃的一個重要目標是,為畢業生工程實踐提供必要的工具。如第三章所述,

本文一個重要的指導原則是,“所有軟件工程學生的教育必須包括軟件工程專業實踐的經

驗。”這些經驗的內容和本質在后續的章節討論,本節為軟件工程教程的專業實踐提供基本

原理和背景。

2.4.1基本原理

專業人員的特殊職責是,應用他們的專業知識實現社會各階層不具備這種知識群體的利

益。在2.3.1節討論的工程特征與工程的專業實踐直接或間接相關。工程學科畢業生的用人單

位經常提到類似的需求[Denning1992]。每年,NACE(NationalAssociationofCollegesand

9

Employers)都進行一個調查,以確定在尋找工作的申請中,哪些品質是用人單位認為最重

要的[NACE2003]。2003年,用人單位基于5分標準來為候選的品質和技能打分,5分是“極

為重要”,1分是“不重要”。最后,信息交流能力(平均4.7分)、誠實/正直(4.7)、團隊合

作能力(4.6分)、人際關系能力(4.5分)、主動性(4.5分)和具有較好的工作道德(4.5分)

被認為是最期望的品質。

社會對軟件質量和成本的依賴,以及軟件工程的相對不成熟,使得軟件工程教育計劃比

其它工程更關注專業實踐問題。學生需要達到一個能面對挑戰、并幫助軟件工程學科更專業

化和更受承認的境界。像其它工程人員一樣,在適當和可行的時候,軟件工程師需要尋找定

量數據進行決策,能夠在不明確的環境中有效的行使職責,避免過于簡化或未經證實的建模

帶來的局限性。

2.4.2軟件工程道德和職業規范

軟件工程是一個對社會負責任的職業。軟件工程師生產的產品將影響產品用戶的生活與

工作。軟件工程師需要以道德和專業的方式行事。“&卅山?EngineeringCodeofEthicsand

ProfessionalPractice''[ACM1998]的導言里說,“鑒于他們在軟件系統開發中扮演的角色,

軟件工程師有更多的機會把事情做好或做壞,并使其他人做好或做壞,或者影響其他人做好

或做壞。為了盡可能保證他們的努力能將事情做好,軟件工程師必須承諾把軟件工程當成一

項有益的、受人尊敬的專業。為了與這份承諾一致,軟件工程師將遵守以下道德和職業規范

為確保道德和專業行為,軟件工程教育者不僅有責任讓學生熟悉規范,而且要找到合適

的方法讓學生參于到與規范八個原則相關的討論和活動中,包括在典型工作環境中,專業工

程師常見的困難抉擇。

2.4.3支持專業實踐的教程

教程可以對專業實踐產生重要的、直接的影響(例如團隊合作、交流和分析技能),而

其它方面(如,強烈的職業道德感、自信)取決于學校教育對個人品質、個性和成熟程度的

微妙影響。專業實踐是教程的一部分,也是畢業生應有的基礎,本文將在第四章闡述。第五

章和第六章包括,專業實踐與軟件工程教程相結合的指導原則和思想,尤其是直接支持專業

實踐的內容,如技術交流、道德規范、工程經濟學等,及模擬工作環境的設想,如案例學習、

實驗室工作、團隊項目課程等。

有許多因素,其中包括課堂以外的,對學生專業實踐的準備有著尤為重要的影響。例

如:具有專業經驗的教員所講授的核心教程;學生通過實習或合作在參與教育項目過程中所

獲得的工作經驗;參加座談會、工業界考察、學生專業俱樂部等課外活動。

2.5軟件工程教育和計算教程的早期工作

在1970年代末期,IEEE-CS就提出了關于創建軟件工程教程的建議,這些建議首先在美

國創建研究生教育計劃時被采納[Freeman1976,Freeman1978]。盡管這些努力集中在研究生

教育,但為軟件工程教育打下了基礎。在英國,最早的本科軟件工程教育計劃開始于1985

年的皇家學院和1988年的謝菲爾德大學[Finkelstein1993,Cowling1998]。

在1980年代末和1990年代初,軟件工程教育得到卡內基梅隆大學軟件工程研究所(SEI)

教育組的培育和支持。他們的工作包括:調查軟件工程教育現狀;出版研究生的軟件工程推

薦教程;在卡內基梅隆大學建立軟件工程碩士教育計戈I;組織和推動軟件工程教育者研討會,

出版了軟件工程推薦教程的相關模塊[Budgen2003,Tomayko1999]。

SEI發起和資助的第一屆軟件工程教育和培訓會議(CSEET)在1987年召開。大會為軟件

工程教育者提供了一個論壇,以提出和討論軟件工程教育的觀點、方法和活動。在1995年,

10

作為軟件工程教育計劃的一部分,SEI建立了關于軟件工程教育和培訓的?個工作組

(WGSEET)(http://www.sei.cm/collaborating/ed/workgroup-ed.html),目的是共

同研究問題、提出解決方法,與軟件工程教育和培訓組織共享信息和最佳實踐方法。1999

年,工作組提出了一個技術報告,為設計和實現本科軟件工程教育計劃提供指導[Bagert

1999]。除美國外,還有很多國家和國際組織為提高軟件工程教育的地位作了很多努力,包

括大型會議的教育部分(例如1996年軟件工程大會的職業教育部分[Myers,1997]),針對軟

件工程教育的小型專門會議,例如1993年在香港召開的IFIP工作大會[Barta,1993]和1997年

在芬蘭Rovaniemi在開的國際論壇[Taipale,1997]。

1993年,IEEE-CS和ACM為把軟件工程建設成為個專業,建立了IEEE-CS/ACM聯合

指導委員會。隨后,該指導委員會被軟件工程協調委員會(SWECC)替代。SWECC主要整

理了三方面的工作:關于道德和職業規范的發展[ACM1998];開發軟件工程教育項目

(SWEEP),即評價本科軟件工程教育計劃是否合格的標準草案[Barnes1998];開發了軟件工

程知識體(SWEBOK)[Bourque2001]?上述工作,加上Curriculum1991[Tucker1991]報告和

CCCS[ACM2001]報告都對本文的指導思想、結構和內容產生重要影響。

2.6SWEBOK和其它BOK的成果

為新興的、正在出現并動態變化的學科提供指導教程的主要挑戰是,識別并說明學科的

基本內容。因為計算學科比較新,而且變化很快,因此詳細說明知識體系非常關鍵。

第四章提出一個支持軟件工程教程的知識體(SEEK-SoftwareEngineeringEducation

Knowledge)?相關學科知識體的描述對SEEK的組織和內容具有很大影響。以下是一些相

關工作。

?SWEBOK全面描述了軟件工程實踐所需的知識。這個項目的一個目的是,“為開

發教程提供基礎”。為了達到這個目的,SWEBOK基于Bloom教育目標的分級制

提出了知識點評價系統。盡管SWEBOK是形成SEEK的主要來源之一,并且在

SWEBOK和CCSE之間存在著緊密的聯系,但仍有一些關于SWEBOK的假設和特

征可以區分它們:

>SWEBOK試圖覆蓋經過四年學習后所具有的知識。

>SWEBOK有意不包含那些非軟件工程知識,但這些對于軟件工程來說乂是必

要的。

>CCSE僅支持本科軟件工程教育。

?PMBOK(GuidetotheProjectManagementBodyofKnowledge)[PMI2000]提供了

項目管理(并不僅限于軟件項目)的知識描述。除了與軟件工程管理相關外,

PMBOK的組織和風格對計算學科也有類似的影響。

?IS'97報告(ModelCurriculumandGuidelinesforUndergraduateDegreeProgramsin

InfbrmationSystems)[Davis,1997]描述了信息系統的本科教程模型。報告包括IS知

識體的描述,它涉及軟件工程知識,并且也有一個類似于Bloom分級標準,指明本

科知識所需的深度。

?報告"ComputingasaDiscipline”[ACM1989]提出了計算的全面定義,并為形成

ComputingCurriculum1991和之后的ComputingCurriculum2001打下了基礎。它具

體說明了包括軟件工程在內的計算學科的9個領域。

***GuidelinesforSoftwareEngineeringEducationw[Bagert1999](由WGSEET形成)

提出了一個本科軟件工程教育的教程模型,它的知識體由四個領域組成:基礎

(Foundations)、核心(Core)、重復出現(Recurring)和支持(Support)。

11

第三章指導原則

本章描述指導CCSE發展的基本思想和觀點:包括CCSE研究的指導原則,以及本科軟

件工程教程的培養目標。

3.1CCSE的原則

下面列出的原則受到CCCS原則的影響較大。在某些情況下,兩種原則只有略微的不

同。另?方面,我們試圖找到區別軟件工程與其它計算學科的特有本質。

[1]計算是一個廣泛的領域,它超越了任何一個計算學科的界限。CCSE主要關注與軟

件工程有關的知識和教育。只要合適,CCSE就會共享或覆蓋其它計算課程的內容,

并指導如何與其它學科相結合。

[2]軟件工程的基礎建立在多個不同學科上。本科軟件工程的學習依賴于計算機科學許

多領域的基礎理論和基本概念,需要使用許多其它領域的概念,如數學、工程學、

項目管理、以及一些應用領域。所有軟件工程學生都必須學會將原理和實踐結合起

來,認識到抽象與建模的重要性,還要能夠超越計算學科獲得某一領域的專業知識,

從而支持特殊應用領域的軟件開發,并能夠認識到良好設計的價值。

[3]軟件工程的迅速發展及專業本質要求對教程進行持續的審閱。該學科中的專業協會

必須建立一個不斷審閱的過程,允許推薦教程的內容能夠連續不斷的更新。因為軟

件工程師對公眾負有特殊的職業責任,所以指導教程能夠支持和促進對軟件工程教

育計劃進行有效的外部評估和鑒定是非常重要的。

[4]軟件工程教程的發展必須適應技術的變化、實踐和應用,適應教育學的發展和終身

學習的靂蓼。像軟件工程這樣迅速發展的領域,教育機構必須采取明確的策略響應

變化。如,機構必須認識到,在技術和教育兩方面建立良好過程的重要性,要遵循

可用資源的約束。軟件工程教育必須探索出一條讓學生準備好終身學習的道路,通

過這種方式,學生將能夠超越目前的技術適應未來的挑戰。

[5]CCSE不僅包含知識方面的內容,而且還要為教程的組成提供指導。CCSE的課程模

型應該將相關的知識組織成合理的、容易實施的學習單元。清晰、合理地定義一組

課程模型將使各教育機構共享教育策略和工具變得容易。同時,也給提供課本和其

它材料的出版商提供一個框架。

[6]CCSE必須支持軟件工程畢業生必須掌握的基本技能和知識。在金適的錯,CCSE

必須有助于制訂軟件工程學科的公共主題,并保證所有的本科推薦計劃包含這些內

容。

[7]軟件工程指導教程必須基于對軟件工程知識的正確定義。知識的描述對于本科教育

應該是簡潔準確的,并且它應該用到軟件工程知識體的研究工作。必須為所有本科

軟件工程學位規定一個所需知識點的核心集合,這個核心應該被軟件工程教育界廣

泛接受。核心的覆蓋面應該從入門課程開始,逐步擴展遍及整個教程,再根據教育

機構、學位計劃或學生的不同情況增加額外的課程。

[8]CCSE必須力爭在國際范圍內適用。盡管不同國家對教程的要求不--樣,但CCSE

必須適用于全世界的計算教育家。只要可能,應盡力使推薦教程滿足不同民族和文

化的要求,使得它在世界范圍內能廣泛使用。歡迎所有國家的計算團體和志愿者加

12

入。

[9]CCSE的發展必須具有廣泛的基礎。為了做到這一點,制訂軟件工程推薦教程必須

包括軟件工程教育家、工業界、商業界和政府代表多種觀點。

[10]CCSE必須把專業實踐作為本科教程的一個組成部分。軟件工程的專業實踐要覆蓋

許多方面的主題和活動,包括問題求解、管理、道德與法律問題、書面和口頭交流、

在團隊中工作、以及在快速變化的學科中跟上趨勢。

[11]CCSE不僅要提供高層次的建議,還要包括對實施策略IJ方法的討論。雖然形成一

個廣泛的軟件工程教育前景對于CCSE十分重要,但任何教程的成功都很大程度依

賴于實施細節。CCSE必須為各教育機構提供建立教程的建議。

3.2學生培養目標

指導教程的第一步是本科教程培養目標。希望它能成為通用的基礎,可以被各種軟件工

程教育計劃采納。

本科軟件工程教育計劃的畢業生應該能夠:

[1]掌握軟件工程知識和技能,以及作為一個軟件工程師開始工作所必須具有的專業素

質。

學生通過軟件工程教育計劃的學習,經過鞏固和實踐,能獲得對自己能力的自信。

多數情況下,可以分階段獲得知識和技巧,按學期達到不同的水平。此外,畢業生還

要能夠理解和評價與道德和職業操行、經濟、社會需求相關的專業問題。

[2]作為個人和團隊成員進行工作時,能開發和交付高質量的軟件產品。

學生既要完成獨立從事的工作,又要完成在團隊方式下進行的工作。對于團隊工

作,學生要盡可能清楚地了解團隊的本質和團隊行為/角色的本質。這需要強調以下幾

點:遵守紀律、重視最終期限、交流、個人和團隊能力評價。

[3]協調相互沖突的項目目標,在有限開銷、時間、知識、已有系統和組織之間找到個

可接受的折衷方案。

在實踐中,要使學生面對一些矛盾的、甚至是變化的需求。為了保證實踐的真實

性,必須從真實世界得到典型范例。為了保證高質量的需求和靈活的軟件設計,教程

知識單元應該強調這些問題。

[4]使用軟件工程方法在一個或多個應用領域中設計出合適的方案,并綜合考慮道德、社

會,法律和經濟等方面的問題。

在學生的學習過程中,學生需要面對通用的工程設計方法,以及在軟件不同應用

領域中解決特定問題的方法。他們要能夠理解各種可用方法的優缺點,并能在給定的

情形下選擇合適的方法。他們提出的設計方案必須符合道德、社會、法律、安全和經

濟的范疇。

[5]理解并能運用當前理論、模型和技術,為問題識別和分析、軟件設計、開發、實現、

驗證和文檔化打下基礎。

綜合實習(Casptone項目,軟件工程教育計劃學習末期的一個重要活動)十分重

要。它為學生提供項目實踐的機會,綜合各門課程中學到的知識,并有效地進行應用。

這個機制可以表明學生掌握了廣泛的軟件工程知識,并具有在真正實施過程中的運用

能力。它還能夠反映學生的成績。

[6]能夠理解和正確評價典型軟件開發環境中下列因素的重要性:協商、高效的工作習慣、

13

領導力、與投資者的良好溝通能力。

在教育計劃中包含一個向用戶提供解決方案的活動非常重要。軟件工程師必須知

道他們要制造的是真正有用的軟件。只要可能,我們應該在一個計劃中加入?段時間

的工業實踐,以及邀請具有實踐經驗的軟件工程師進行講座,甚至參加外部的軟件競

賽。這些將提供更豐富的經歷,并有助于創造一個產生高質量軟件工程畢業生的環境。

17]當新的模型、技術和工藝出現的時候,能積極的學習它們,并能認識到專業知識持續

發展的必要性。

教育計劃執行到末期時,學生應該養成主動、長期學習的習慣。這是通過學習計

劃逐步培養起來的。在學習階段后期,如,綜合實習階段,學生應該具備愿意學習新

思想的愿望。但在早期階段,學生還需要經歷最好的實踐鍛煉。

14

第四章軟件工程教育知識概述

本章描述本科教育計劃的軟件工程知識體SEEK(SoftwareEngineeringEducation

Knowledge)o

4.1SEEK的形成過程

創建CCSE使用的開發模型以CCCS用到的模型為基礎。最初選擇的SEEK領域以

SWEBOK知識領域和眾多SEEK志愿者的討論為基礎。SEEK領域的志愿者被分成許多小

組,每個小組代表一個單獨的SEEK領域,每個小組大約包含七個志愿者。為這些小組分配

的任務是,對組成特定教育知識領域的知識單元提供更多細節,并將這些知識單元細化為知

識點。為了便于他們工作,向他們提供了與軟件工程知識體系相關的成果(如,SWEBOK.

CSDPExam和SEI推薦教程)和支持知識單元與知識點定義的模板集作為參考。

當志愿工作組為各自的教育知識領域細節產生了一個初步草案后,指導委員會舉行了一

場面對面的討論會,把教育知識和教育學領域的志愿者召集在?起陳述每個草案,并產生一

個SEEK的初始草案(出席者列表見附錄B)。帶有該特定目標的討論會產生了與CCCS發

展過程中舉辦的討論會類似的巨大成功。一旦教育知識領域的內容確定下來,知識點被分成

核心或可選兩類。知識點用Bloom分類法的三個教育目標標識:知識、理解或應用。從Bloom

分類法中僅選擇和學習這三個層次,因為它們表示在本科教育中哪些知識可以被合理學習。

討論會結束后,形成了SEEK草案。接著,對草案進行了一次細致的內部評閱(由軟件

工程領域選出的專家)和兒次廣泛公開的評閱。每當完成?次評閱后,指導委員會就根據評

閱意見對SEEK的內容進行進一步細化和完善。

4.2知識領域、知識單元和知識點

用‘知識”描述學科的整體內容,包括:信息、術語、制品、數據、角色、方法、模型、

步驟、技術、實踐、過程和文獻。SEEK分為三層結構,最高層是教育知識領域(area),

它代表了軟件工程的子學科,通常被認為是本科生應該掌握的軟件工程知識體的重要部分。

知識領域是,對軟件工程知識進行組織、分類和描述的高層結構元素。每個領域使用一個縮

寫進行標識,如PRF代表專業實踐。每個知識領域又分成許多知識單元(unit),表示一個

領域中的獨立主題模塊。在知識領域標識的后面,添加兩到三個字母的后綴標識知識單元,

如PRF.com代表交流技能知識單元。

每個知識單元被進?步分成知識點(topic)集合,知識點是層次結構的最底層。

4.3核心內容

在形成SEEK的過程中,指導委員會認識到軟件工程作為一個學科還相當年輕,公認的

教育知識體還在不斷發展中。本文檔所提出的SEEK基于以前所做的大量研究工作和對學科

推薦內容的解釋。在它的設計過程中特別考慮了要支持本科軟件工程教程的生成,所以沒有

包括在一般知識體中出現的所有知識。因此,指導委員會試圖定義一個核心范圍,以包含任

何軟件工程本科學位獲得者必需的知識。在定義核心的過程中,根據多數人的意見,指導委

員會希望核心盡可能的小,使各機構可以在教程中自由選擇滿足自己需求的選修內容。

為了區分SEEK與指導委員會本科軟件工程推薦教程課程之間的關系,必須強調以卜兩

15

點:

?核心知識不是完整的教程。因為核心被定義得盡可能的小,所以它本身沒有構成

完整的本科教程。每個本科教育計劃都將包含附加知識單元,它們既可能被包含

在也可能超出軟件工程知識體。本文并不強調這些附加內容。

?核心知識單元不必限制于本科教程早期開設的一些基礎課程。雖然核心中的許多

知識單元確實是基礎,但還是有一些核心知識單元只能在學生具有較強的領域背

景后再被論及。例如,項目管理、需求獲取和高層抽象建模等領域的知識點,就

需要低年級學生所不具有的知識和技巧。同樣,基礎課也可以包括那些與核心課

程相關的可選I知識單元。核心的設計僅僅意味著是必需的,而與課程的層次無關。

4.4時間單元

SEEK必須定義相應準則以建立一個度量標準,以判斷覆蓋■個特定知識單元所需要的

實際時間。因為在全世界范圍內沒有一個公認的度量標準,所以選擇這種準則十分困難。為

了保持和其它相關計算教程的?致性,這里選擇學時來表示時間。?學時對應于傳統的講授

方式需要的實際課內時間(本文中也指接觸時間)。為了消除混淆,使用授課學時作為度量

時間十分重要。

?指導委員會不試圖規定講授方式。盡管使用一種來源于經典講授方式的度量標準,

指導委員會相信還有其它有效風格,特別近來教育技術進步很快。在這些風格中,

學時的概念難以被運用。如果給定這樣一個假設:不管是什么教學風格,五學時

的知識單元所使用的時間大約是一學時知識單元的五倍,那么該時間規格還是一

個可以提供比較的度量方法。

?所指定的學時不包含課外花費的時間。分配給一個知識單元的時間不包括教師的

準備時間和學生在課外花的時間。作為一個通用性的指導,課外的學習時間應該

是課內時間的3倍。

?對一個知識單元所給出的學時只代表最小覆蓋水平.為每個知識單元所分配的度

量時間應該被看作完成該知識單元學習目標所需的最少數量。在一個知識單元上

使用更多的時間總是合適的。

4.5SEEK與教程之間的關系

SEEK不代表教程,但是SEEK為構成軟件工程教程的教學單元提供了設計、實現和交

付的基礎。CCSE的其它章節為如何使用SEEK開發教程提供指導和支持。特別地,知識領

域和知識單元的組織與內容不應該被認為是如何將知識組織到教學單元或活動中。例如,

SEEK不提倡知識領域的順序編號(首先CMP,第二FND,第三是PRF,等等)。它即不建

議如何將知識點和知識單元組合為教學單元,也無意支持任何特殊的教程開發方法學(瀑布、

增量、循環等)。

4.6知識領域的選擇

SWEBOK提供了知識領域的起點。因為CCSE指導委員會和SEEK領域的志愿者都強

調軟件工程的學術原理,所以軟件產品開發理論和科學基礎領域占了核心的一半左右。這就

需要重新估計是否滿足學科的原始目標,為了支持這些目標必須重新平衡知識領域集。結果

本科教育計劃中核心部分以外的內容被認為是可選的.

16

是,強調適合本科教育的軟件工程學科的基本原理、知識和實踐。

4.7SE教育知識領域

這一節描述了構成SEEK的十個知識領域:計算基礎(CMP)、數學和工程基礎(FND)、

專業實踐(PRF),軟件建模與分析(MAA)、軟件設計(DES)、軟件驗證與確認(VAV)、

軟件演化(EVL)、軟件過程(PRO)、軟件質量(QUA)和軟件管理(MGT)。這些知識領

域不包括與連續數學或自然科學相關的內容,這些領域需要的知識將在CCSE的其它部分提

到。對于每一個知識領域,都有個簡短的說明和?個描述這個領域中知識單元和知識點的

列表。對于每一個知識單元都推薦了授課學時。對于每一個知識點,都指定了一個Bloom

分類級別(說明畢業生應該掌握的程度)和知識點的相關度(說明這個知識點是基本的、值

得學習的或對于核心而言是可選的)。表1總結了SEEK知識領域,列出了知識單元的集合,

并推薦了每個知識領域和知識單元所需的最少學時數。

Bloom屬性使用字母k、c或a來表示,這些字母所代表的意義如下:

?知識(k)——要記住學習過的內容。測試對信息的觀察和記憶能力,即“記得有

價值的信息”(如:日期、事件、位置、主要概念、主要內容)。

?理解(c)——明白知識表示的信息和含義。如,能將知識轉化到新的上下文環境、

能解釋事實、比較、對比、排序、分組、推斷因果關系和預測結果等。

?應用(a)——在新的、具體環境下,使用學過知識的能力。如,使用信息、方法、

概念和原理解決需要相關技能或知識的問題。

使用下面方式表達知識點與核心的相關性:

?基礎(E)——知識點是核心的一部分。

?值得(D)——知識點不是核心的組成部分,但如果可能,可以將這個知識點包含

在一個特定的教學計劃中。否則,這個知識點將被當作選修內容。

?選修(O)——這個知識點僅僅是可選的。

表1:SEEK知識領域和知識單元*

KA/KU名稱學時KA/KU名稱學時

CMP計算基礎172VAV軟件驗證與確認42

CMP.cf計算機科學基礎140VAV.fndV&V術語和基礎5

CMP.ct構造技術20VAV.rev評審6

CMP.tl構造工具4VAV.tst測試21

CMP.fm形式化構造方法8VAV.hct人機用戶界面測試和評價6

VAV.par問題分析和報告4

FND數學和工程基礎89EVL軟件演化10

FND.mf數學基礎56EVO.pro演化過程6

FND.ef軟件的工程基礎23EVO.ac演化活動4

FND.ec軟件的工程經濟學10

PRF專業實踐35PRO軟件過程13

PRF.psy團隊動力/心理學5PRO.con過程概念3

PRF.com交流技能(SE)10PRO.imp過程實施10

PRF.pr專業技能20

MAA軟件建模與分析53QUA軟件質量16

MAA.md建模基礎19QUA.cc軟件質量概念和文化2

MAA.tm模型類型12QUA.std軟件質量標準2

17

MAA.af分析基礎6QUA.pro軟件質量過程4

MAA.rfd需求基礎3QUA.pca過程保證4

MAA.er需求獲取4QUA.pda產品保證4

MAA.rsd需求規約和文檔6

MAA.rv需求確認3

DES軟件設計45MGT軟件管理19

DES.con設計概念3MGT.con管理概念2

DES.str設計策略6MGT.pp項目規劃6

DES.ar體系結構設計9MGT.per項目人員和組織2

DES.hci人機界面設計12MGT.ctl項目控制4

DES.dd詳細設計12MGT.cm軟件配置管理5

DES.ste設計工具和評價3

*4.18節(系統和應用特性)包含附加內容,這些附加內容不是核心的組成部分,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論