時間:2022-04-11 03:09:25
序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內心深處的真相,好投稿為您帶來了一篇軟件工程論文范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創作。
楊摯
ISO9000系列標準及軟件質量認證
近年來,國際上影響最為深遠的質量管理標準當屬國際標準化組織于1987年公布的ISO9000系列標準,這一國際標準發源于歐洲經濟共同體,但很快就波及美國、日本及世界各國。到目前為止,已有70多個國家在它們的企業中采用和實施這一系列標準。中國對此也十分重視,也采取了積極態度。一方面確定對其等同采用,與其相應的質量管理國家標準系列GB/T19000;同時積極組織實施和開展質量認證工作。計算機軟件行業自然也和其它領域一樣被席卷進去。
ISO9000系列標準如此迅速地在國際上廣為流行,其原因主要在于:
1)市場經濟,特別是國際貿易的驅動。無論任何產業,其產品的質量如何都是生產者、消費者、以及中間商十分關注的問題。市場的競爭很大程度上反映了在質量方面的競爭。ISO9000系列標準客觀地對生產者(也稱供方)提出了全面的質量管理要求、質量管理辦法,并且還規定了消費者(也稱需方)的管理職責,使其得到雙方的普遍認同,從而將符合ISO9000標準的要求作為國家貿易活動中建立互相信任關系的基石,并且在國際貿易中,把生產者是否達到ISO9000質量標準作為購買產品的前提條件,取得ISO9000質量標準認證被人們當作進入國際市場的通行證。
2)ISO9000系列標準適用領域廣闊。它的出現最初針對制造行業,但現已面向更為廣闊的領域,這包括:
(1)硬件:指不連續的具有特定形狀的產品,如機械、電子產品,不只是計算機硬件。
(2)軟件:通過支持媒體表達的信息所構成的智力產品。計算機軟件當然屬于其中。
(3)流程性材料:將原料轉化為某一特定狀態的產品。如,流體、粒狀、線狀等,通過瓶裝、袋裝等或通過管道傳輸交付。
(4)服務:為滿足客戶需求的更為廣泛的活動。
ISO9000系列標準的內容
2000版ISO9000系列標準的內容
ISO9000:2000質量管理體系基本原則和術語
ISO9001:2000質量管理體系——要求
ISO9004:2000質量管理體系——業績改進指南
ISO19011:2000質量和環境審核指南
2000版ISO9000族標準的特點
新版ISO9000族標準對比現行的1994版而言,具有以下的特點。
1.面向所有組織,通用性強。新版ISO9000族標準適用于所有的產品類別、所有的行業和各種規模的組織,總之,新版標準面向所有組織,通用性很強,將成為適用范圍最廣的國際標準之一,表現在:
(1)新版標準消除了1994版對硬件產品制造業的偏向性。
2000版標準巧妙地采用了“產品實現”、“動作控制”、“過程的測量和監控”和“產品的測量和監控”等詞匯和要求,消除了行業的偏向性,對非制造業貫徹ISO9000族標準所帶來的方便是不容置疑的。
(2).為特種行業制定行業附加要求奠定了共同的基礎。有些行業確有其特殊性,2000版本標準允許在ISO9001基礎上增加行業特殊要求的條款。這樣既能使所有組織的質量體系基本要求具有一致性,又確保行業特殊要求的適用小性。已有軟件.通訊.汽車.等行業都已用此方式制定各自的行業特殊要求。
(3)?!试S裁剪“的規定使2000版ISO9001標準的適用范圍擴大到1994版ISO9001/9002/9003/三個保證摸式的標準戶群。三個保證沒摸式的差異都在第7章產品實現過程中,2000版ISO9001,1.2允許對第7章要求中不影響滿足顧客和法規要求,不及組織責任的標準條款進行裁剪,從擴大了ISO9001標準的適用范圍,又獲得”以一頂是三(三個質量保證摸式),減少標準數量的功效。
(4)??紤]了小型企業的適用性。2000版標準保留了大小企業都是必要的條款,有的還進行強化,對小型企業可能不太上適合的具體要求則進行弱化。使2000版ISO9001標準的通用性更強了。
2.確立八項原則,統一留念理念。
3.鼓勵過程方法,操作性強。2000版標準的修訂采用了過程摸式,提倡用過程方法來識別和建立體系。
4.強化關鍵:領導作用。
5.自我評價測量,突出改進。
6.關心各相關方,利益共享。
ISO9000系列標準原本是為制造硬件產品而制定的標準,不能直接用于軟件制作。后來曾試圖將ISO9001改寫用于軟件開發方面,但效果不佳。于是,以ISO9000系列標準的追加形式,另行制定出ISO90003標準。這樣,ISO90003就成了用于“使ISO9001適用于軟件開發、供應及維護”的“指南”。不過,在ISO90003的審議過程中,日本等國曾先后提出過不少意見。所以,在內容上與ISO9001已有相當不同。ISO90003(即GB/T19000.394),全稱《質量管理和質量保證標準第三部分:在軟件開發、供應和維護中的使用指南》。
制定與實施ISO9000系列標準
1)強調質量并非在產品檢驗中得到,而是形成于生產的全過程。ISO90003敘述了需方和供方應如何進行有組織的質量保證活動,才能得到較為滿意的軟件;規定了從雙方簽訂開發合同到設計、實現以至維護整個軟件生存期中應當實施的質量保證活動,但并沒有規定具體的質量管理和質量檢驗方法和步驟。
ISO90003的核心思想是“將質量制作入產品之中”。其實道理是很明顯的,軟件在完成編碼以后,不論花多大的力氣用于測試,提高質量都是有限度的,更不必說需求規格說明存在的問題常常是測試無法發現的。事實上,軟件產品的質量取決于軟件生存周期。
2)為把握產品的質量,ISO9000要求“必須使影響產品質量的全部因素在生產全過程中始終處于受控狀態”。為使軟件產品達到質量要求,ISO90003要求軟件開發機構建立質量保證體系。首先要求明確供需雙方的職責,針對所有可能影響軟件質量的各個因素都要采取有力措施,作出如何加強管理和控制的決定。對與質量有關的人員規定其職責和職權,使之責任落實到人,產品質量真正得到控制。
3)ISO9000標準要求證實:“企業具有持續提供符合要求產品的能力”。質量認證是取得這一證實的有效方法。產品質量若能達到標準提出的要求,由不依賴于供方和需方的第三方權威機構對生產廠家審查證實后出具合格證明。顯然,如果這一認證工作是公正的、可靠的,其公證的結果應當是可以信賴的。正確實施產品質量認證制度自然會在促進產品質量提高,指導消費者選購產品,提高質量合格產品企業的聲譽,以及節省社會檢驗大量費用等方面發揮積極作用。
生產企業為了達到質量標準,取得質量認證,必須多方面開展質量管理活動。其中,企業負責人的重視以及企業全體人員的積極參與是取得成功的關鍵。
4)ISO9000標準還強調“質量管理必須堅持進行質量改進”。貫徹ISO9000標準是企業加強質量管理、提高產品質量的過程,這個過程包含許多工作絕非輕而易舉、一蹴而就所能奏效的。即使已經取得了質量認證也不能認為一勞永逸而放松質量管理。實際上認證通常以半年為有效期。取得認證之后尚需接受每年1~2次的定期檢查,其目的在于促使企業堅持進 行質量改進。
摘要:軟件工程專業是計算機領域發展最快的學科分支之一,軟件工程(software engineering,簡稱為se)是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。這一學科包括許多的內容,具體來講有程序設計語言,數據庫,軟件開發工具,系統平臺,標準,設計模式等。當今社會,網絡化迅速發展,軟件的應用領域越來越廣?,F在比較普遍的軟件有電子郵件,人機界面,辦公套件,操作系統,游戲等。目前,基本上每個行業都會某種程度的運用到計算機軟件。這些應用對于推動經濟和社會的發展起到了舉足輕重的作用,提高了工作效率,改善了人們的生活質量。
關鍵詞:軟件工程 計算機領域 程序設計 開發工具 設計模式 生命周期、軟件開發
1 概述
軟件工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。這一學科包括許多的內容,具體來講有程序設計語言,數據庫,軟件開發工具,系統平臺,標準,設計模式等。當今社會,網絡化迅速發展,軟件的應用領域越來越廣?,F在比較普遍的軟件有電子郵件,人機界面,辦公套件,操作系統,游戲等。目前,基本上每個行業都會某種程度的運用到計算機軟件。這些應用對于推動經濟和社會的發展起到了舉足輕重的作用,提高了工作效率,改善了人們的生活質量。
我們究竟是將軟件的開發看成一門科學,還是將其看成是一門工程,關于這個問題已經討論了很長時間了。事實上,軟件的開發具備這兩者的特征。但是我們不能將二者混淆了。大多數人認為軟件工程基于計算機科學和信息科學就像是傳統意義上的工程學之于物理和化學。在世界各個國家,尤其是美國大約有40%的軟件工程師都有計算機科學的學位。他們可能不經常運用到計算機科學上的知識,但是會經常運用到軟件工程上的知識。許多應用都需要軟件工程,在軟件開發的許多程序中也需要軟件工程。軟件工程的主要作用就是指導軟件項目的方方面面。在軟件工程中,軟件開發與各種市場活動緊密相連。軟件工程的方法學認為程序員在開發軟件的時候是處在一個團隊中的,而且在編寫程序時要符合軟件的需求,設計,以及客戶的利益。
伴隨著開發技術的不斷進步,軟件開發過程也在不斷的改進。從早期的瀑布式(waterfall)的開發模型直到最近開始興起的敏捷開發方法(agile),表現出來的是隨著時代的變化,軟件產業對于開發過程的認識也在不斷的變化,對于各種類型項目的理解方法也在發生著變化。在美國曾經有權威機構對軟件組織的績效做過評估,所得到結論是:軟件工程的專業分工不足,是造成品質低落、時程延誤、預算超支的最關鍵因素。2003年,the standish group年度報告指出,在他們調查的13522個專案中,有66%的軟件專案失敗、82%超出時程、48%推出時缺乏必需的功能,總計約550億美元浪費在不良的計劃、預算或軟件估算上。
2 軟件工程的需求分析
有一種觀點認為軟件工程是學習怎么做軟件的,對吧?我認為,這種觀點算對,但不是全對。得到一個軟件產品,自然是軟件工程的目的所在,但是軟件工程所包含的卻不僅僅是這些。就拿軟件業界比較常見的例子來給大家講一下,這個例子就是蓋房子,我們蓋房子,是不是就買塊地,然后準備好建材,就哐當哐當地開始建房子了呢?大家明白不是這樣,要建好一座房子,先要對土地進行測量勘察,確定可以在上面建房屋,之后還得先規劃出整個房子的藍圖來,接下來才是對根據藍圖開始建房子。建好房子后,還得經過一些檢測,比如甲醛有沒有超標啊,包工頭有沒有偷工減料啊,這些都合格之后才能交付使用。于是有人入住了,住久了,發現浴室漏水,那就得修補一下。再住久了,住了幾十年,房子舊得不成樣子了,這時候它的壽命也到了終點了。
軟件工程之所以叫軟件工程,就是因為它使用了工程學方法來幫助軟件開發,建筑也是一門工程學,所以它們之間是會有些共通之處的,不信?請看:首先,我們在對土地進行測量勘察的時候,是在確定它是否適宜建房子,在軟件工程上來講,這個術語叫“可行性分析”,可行性分析的任務就是確定開發這個軟件是否在技術上可以做到,在資金上有充足支持,在市場上能夠受歡迎,如果答案是肯定的,那么就可以繼續下一步的開發步驟。規劃
房子的藍圖,在軟件工程上被分為兩個過程:“需求分析”、“設計”。需求分析就是得到軟件需要做什么,需要實現什么功能。而設計就是告訴開發人員怎么實現這些功能。也就是規劃出軟件的一個藍圖,在“編碼”階段再對其進行實現,這就對應著建房的關鍵階段,就是按照藍圖蓋好房子啦。房子在入住前需要檢測是否合格,軟件在交付給用戶使用的時候自然也需要檢測是否合格,這個階段叫做“測試”。檢測合格了,那就可以交付給用戶使用,在市場上銷售。軟件不可能完美無缺,所以在使用過程中,一定會出現某些問題,這時候就要將問題提交給軟件開發人員,修復問題,這個階段就是軟件過程中的“維護”階段。過了一段時間,這段時間可能很長,也可能很短,這軟件已經不適應生產力的發展了,那么就可以正式宣告這軟件壽終正寢了,至此,軟件的生命周期才正式結束。
我們還要注意,軟件生命周期包括制定計劃、需求分析和定義、軟件設計、程序編碼、軟件測試、運行維護這六個階段,是指一個計算機軟件從功能確定、設計直到不再使用該軟件的全過程。
軟件工程,正是貫穿在一個軟件的整個生命周期中的。從開發某個軟件的計劃被提起或者立項,軟件工程就開始發揮著作用,用自己的一套方法體系,來指導軟件開發的整個過程。因此軟件工程不等于編程,編程只是軟件工程整個過程中的一個重要環節而已。據統計,在整個開發周期中,平均編碼這個過程只占了整個周期的大約30%的時間。
3 軟件工程原則
軟件工程學主要是用來對軟件開發和維護進行指導,是為了經濟地獲得能夠在實際機器上有效運行的可靠軟件而建立和使用的一系列完整的工程化原則。它充分的運用計算機科學、數學及管理科學等方面的知識,并借鑒傳統工程的原則、方法來完成開發軟件的任務,這樣就能夠最大限度的開發高質量的軟件,并且能夠減少成本。
boehm是一位知名的軟件工程專家,在借鑒了許多的專家和學者的經驗之后,再加上自己在開發軟件方面的經驗,在1983年總結出了軟件工程的七條基本原理:
①用分階段的生存周期計劃嚴格管理;
②堅持進行階段評審;
③對產品嚴格把關;
④在技術上運用現代程序設計;
⑤結果能清楚地審查;
⑥開發小組的人員不要太多,但是這些人員要有真才實學;
⑦不斷對軟件工程實踐進行改進是很有必要的。
一般來說,一個軟件方法往往規定了明確的工作步驟、具體的描述方式以及確定的評價標準。軟件開發的基本方法包括結構化方法、面向對象方法等。
隨著軟件工程學的發展和軟件開發的實踐,軟件開發模型依次被提出:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、形式化方法模型等。
目前,已經推出很多軟件開發工具,如需求分析階段的psl/psa系統;編碼階段的各種語言編譯工具、編輯程序、連接程序等,都是軟件編碼階段的軟件工具;測試階段的測試數據產生程序、動態分析程序、靜態分析程序等軟件自動測試工具;維護階段的版本控制系統等。從廣義上來講,軟件分析、設計階段的各種圖形工具,如數據流(dfd)等也可以稱為軟件開發工具。
從技術和管理上采取多項措施后,組織實施軟件工程的最終目的是保證項目成功,即達到以下幾個主要目標:
①使開發成本最少;
②達到預期的軟件功能;
③軟件性能更好;
④使軟件易于移植;
⑤最大限度降低維護費用;
⑥按時完成開發任務,及時交付使用。
4 結束語
軟件工程的方法的意義是非常廣泛的。具體來講包括項目管理,分析,設計,程序的編寫,測試和質量控制。有些人認為人們要認真遵守這些方法進行軟件開發,但是有些人還沒有足夠的能力實施這些方法。事實上,具體運用哪種方法開發軟件是受很多方面因素的限制的。
隨著科學技術的不斷進步,計算機硬件也進入了高速發展階段,軟件開發方法也隨之得到不斷更新。面向對象(oo)方法于60年代后期被提出,但花了近乎20年才被人們廣泛認識和使用。如今,面向對象軟件已成為行業內的主流,并在軟件行業中占據著非常重要的位置。傳統的軟件工程方法常把數據與處理的過程分開,大大增加了軟件開發的難度。面向對象方法吧軟件工作視作離散解空間對象的結合,并使問題空間與解空間的結構、描述模型相一致,簡化了程序的同時降低了軟件系統開發的難度。
目前,國內普遍采用傳統的結構化分析設計和面向對象程序相結合的方式進行項目開發,并且大部分項目也取得了成功。但這種方法無法讓實現兩者的平滑過渡及連續性,并且不利于軟件重用、維護、測試等工作的進行。如果全過程僅采用面向對象軟件工程方法,則能確保信息系統開發的完整性和一致性。由于面向對象數據庫產品尚未完善,因此此方法很難應用于實際中。為此,必須制定相應的規則和算法,確保面向對象分析、面向對象設計的結果能正確地向關系數據庫轉換。
一、關于面向對象軟件工程
1.面向對象。面向對象主要是指在滿足客戶需求的基礎下,將需求合理構建成獨立的業務模塊,之后利用多態、繼承、封裝、抽象的編程思想對業務邏輯進行構建,使之與業務需求相一致,最后將各模塊整合以達到最佳的預期效果。
2.面向對象軟件工程。面向對象軟件工程時面向對象技術和軟件工程相結合的產物。面向對象技術貫穿到面向對象軟件工程的全過程,并將過程中形成的面向對象分析、面向對象設計和面向對象程序設計三部分,貫穿到軟件工程的各個相應階段。面向對象軟件工程所采用的具體模型不外乎以下幾種:整體——部分模型、類——對象模型、對象模型、分類模型和狀態模型。
3.面向對象的方法。隨著時代的發展,面向對象分析和面向對象設計的理論和技術都得到了逐步完善,軟件開發方法也不斷地推陳出新。國內外目前已衍生出多種的面向分析方法,其中最有影響力的主要有:booch方法、rumbaugh方法、coad和yourdon方法、jacobson方法、統一的ooa方法(uml)。從面向對象分析到面向對象設計是一個將模型逐漸擴充的過程。在這個過程中,主要考慮的是如何分析處理問題,對于與特定計算機相關的問題則可以忽略不計。面向對象設計可以分為高層設計和低層設計兩個階段,高層設計主要用于建立體系整體架構,低層設計則主要用于對類的詳細設計。
二、面向對象方法在醫院收費信息系統的應用
為了更好地理解面向對象軟件工程方法在信息系統開發中的應用,我們采用了醫院的收費信息系統為例。首先,可將醫院收費的需求構建成三個獨立的業務模塊——功能模型、動態模型、對象模型。
1.功能模型
對收費信息系統進行業務分類,其中主要包括劃價和查詢統計兩個子系統。分類的目的是為了業務模塊的構建更合理清晰,節省和減少了系統操作人員的工作時間和工作量。病人繳費以后,操作人員可通過劃價子系統輸出其收費單據,并按有關規定將單據導入數據庫中。如果病人想清楚醫院的具體收費,操作人員可鍵入查詢條件,從而為病人輸出相關單據。
2.動態模型
醫院收費信息系統被劃分為兩個子系統,其中劃價子系統的動態模型主要顯示為一些列的前臺操作,其主要表現為:病人請求→劃價員根據相關單據進行劃價;病人付款→操作人員打出收據→將信息導入數據庫→修改記錄。查詢統計子系統跟劃價子系統類似,主要均是由病人提出請求,操作員再根據病人需求鍵入查詢條件,從而輸出病人的相關統計表單。
3.對象模型
本系統主要涉及到的重要的類模型為——庫存類圖、人員類圖和單據類圖。
(1)庫存類圖。庫存類模型所增加的屬性(庫存量、生產日期、保質期)主要跟藥物和其特性密切相關。醫院內各種藥物及材料都標明了庫存量和保質期,而藥品則常被細分為:西藥、中藥、中成藥。
(2)人員類圖。病人和醫院工作人員均繼承在人員類中,其中病人是醫院收費信息系統的主角,劃價請求、查詢請求、繳費等劃價子系統業務都是病人類的方法。醫院工作人員類又可細分為三個子類,包括醫生類、收費員類和操作員類。醫生類是必然的存在,病人的病情及其主治醫生,這些都需要存檔。操作員是除病人外在系統中的又一主角,查詢、劃價、統計均是其工作。由此可見,系統的操作運行離不開操作員。收費員的工作極為簡單,只需進行收費操作即可。
(3)單據類圖。單據可分為治療單據和收費單據。治療單據在病人治療后由醫生開出,單據上主要標有:單據號、醫生和病人的姓名、日期等項目。其中父類為單據號、醫生和病人的姓名,子類為治療項目如手術項目類、藥品項目類等。收費單據時是系統根據治療單據劃價、病人繳費后所打印出的憑據。其父類為收費項目類,子類則為藥品收費項目類、手術收費項目類等。由于單據的不同,子類會根據其屬性而有所變化,因而系統可以根據需要打印出不同類別的單據。
筆者所在學院的軟件工程系是成立于2005年的新專業,為校級特色專業。近年來,隨著對軟件工程特色專業建設進程的推進,課程體系日趨完善。針對軟件工程學科具有理論多且實踐性極強的特點,本系較大幅度地加大了實踐類課程和環節所占的比例,“軟件開發設計實訓”便是其中很重要的一門實踐課程。由于軟件工程學科發展速度很快,在軟件產業不斷發展,全國對高素質的軟件人才的需求量激增的形式下,迫切需要研究和探索實踐類課程的教學模式,激發學生學習興趣,以更有效的手段和方式提高教學和指導質量,為培養更加符合社會實際需要的軟件開發人才打下堅實基礎。在我校教改基金的資助下,依托軟件工程教學團隊,本文對將軟件工程應用于“軟件開發設計實訓”課程的教學模式及主要措施進行探討。
1 選擇適當的軟件工程過程
“軟件開發設計實訓”課程的主要目的是使學生學會用面向對象的設計方法設計實際系統。結合軟件工程學科的發展和應用現狀,軟件開發過程主要采用rup(rational unified process,統一軟件開發過程)的方式組織軟件開發。rup是風險驅動的、基于use case(用例)技術的、以架構為中心的、迭代的、可配置的軟件開發流程。
rup分為初始、精化、構造和交付四個階段,各階段涉及多種工作流。rup的核心工作流主要包括:
需求捕獲工作流:需求捕獲通過對問題的理解和分析,確立問題涉及的信息、功能和系統行為,將用戶需求精確化、完全化。需求的焦點主要在初始和精化階段,在精化階段后期,需求捕獲的工作量大幅下降。
分析工作流:分析的主要工作開始于初始階段的結尾,和需求一樣是精化階段的主要焦點。精化階段的大部分活動是捕獲需求,分析工作與需求捕獲在很大程度上重疊。
設計工作流:設計的主要工作是位于精化階段的最后部分和構造階段的開始部分的主要建?;顒?。系統建模最初的焦點是需求和分析,在分析活動逐步完善后,建模的焦點開始轉向設計。
實現工作流:實現(實施)是關于把設計模型轉換成可執行代碼的過程。從系統分析師或系統設計師的角度看,實現工作流的重點就是完成軟件系統的可執行代碼。實現工作流是構建階段的焦點。
測試工作流:測試是一項相當主要的工作。測試工作流貫穿于軟件開發的整個過程。它開始于軟件開發的初始階段,而細化階段和構造階段是測試的焦點。測試是為了找出程序中的錯誤與缺限,而不能證明程序無錯。
rup就像一個元過程,通過對rup進行裁剪可以得到很多不同的開發過程,非常靈活,所以可以將其按本課程需要進行精簡,從而把深奧的理論指導融入具體軟件項目的開發設計中,讓學生更加深切地體會到什么叫學以致用,消除畏難情緒,培養和增強在軟件開發設計中自覺遵從軟件工程思想的習慣。本課程使用的case(computer aided software engineering,計算機輔助軟件工程)工具集采用sybase公司的powerdesigner。
2 將有價值的軟件工程知識引入課堂,教學采用項目貫通案例
為讓學生在中小規模的實訓項目中也能體會到較大型項目通常會用到的一些軟件工程技術,讓本課程更有實用價值,教師需要對學生補充一些軟件工程相關知識,包括:設計模式、架構設計、類的持久化以及數據庫設計、面向對象實現以及文檔的書寫這四個方面。
為配合上述四個方面的軟件工程相關知識的介紹,教師采取“項目驅動的案例教學”方法【2】,在課堂講授中引入一個完整的、規模適中、難易適度的軟件項目案例。該案例需要通俗易懂而又具有實際意義,涉及的應用領域應該是學生較為熟悉的,這樣理解起來更為容易。以此案例完整的開發設計過程為主線,借助這個貫穿整個課程教學進程、文檔齊全的完整案例來將軟件項目開發設計過程中的各個環節串連起來,著重展現上述四個方面的知識運用,讓學生熟悉和掌握軟件開發設計的具體實施步驟和技術。
3 學生實踐環節分小組按項目方式進行
由于在本實訓課程之前學生已經學習過一門先導課程:“軟件需求分析實踐”,所以可以把學生仍然按照在“軟件需求分析實踐”課程中的各小組成員組成來進行項目分組,這樣各小組便可將該課程中的最終成果——《軟件需求分析規格說明書》作為本課程的起點來進行,需求捕獲工作流便只需粗略進行。由于本課程側重于軟件開發過程的分析工作流和設計工作流,對實現工作流和測試工作流也只作粗略涉及。
每個項目小組通常為3到5人,分組時采用了優勢互補的方式,注意合理搭配,盡量讓每組各個成員具有不同的優勢能力,并讓其民主推選一名組長負責組內的組織和協調【3】。
教師的項目貫通案例教學分階段間插在學生實踐過程中,每介紹一個階段的rup理論,就緊跟幾次課的學生實踐環節,如此交替進行,當教師的教學案例施教完畢,學生的項目也同步進行到最后階段。
項目進行中模仿軟件公司的例會形式,定期由項目小組長召開小組討論會(如每周一次),對最近這段時間的項目進展情況和技術問題進行討論。每個開發設計階段結束時教師均要求各小組給出相應的文檔,且每個階段完畢要進行一個模擬的里程碑式的評審(教師參與作為評審團的一員)【4】。
教師還應在課程即將結束的最后課時中對各小組的項目完成情況及普遍存在的共性問題作一個分析總結,并讓各小組組長總結本組項目完成的經驗教訓,以利于同學之間取長補短,活躍思維,提高分析總結問題的能力。
4 依托教學團隊,理論及案例部分采用輪流授課法
筆者所在的軟件工程系于2009年底成立了軟件工程教學團隊。團隊兼顧了職稱、學歷、教學、科研的合理搭配,由有大型項目開發和管理經驗的老教師提供指導來提升年輕教師的教學能力,并讓其參與到科研項目中積累項目經驗。本課程的任課教師均由該團隊中選出。本課程所用的《軟件開發設計實訓指導書》的編寫由各任課教師分工完成,每人負責完成一章內容。本課程每個教學班安排30人左右,各教學班的教師全程負責該班整個課程的實踐指導環節。而理論及案例講授部分的教學則采用輪流授課法,實施方案是每個階段的課堂講授由編寫實訓指導書的相應章節的教師對全體教學班集體授課,其他教師同時到場輔導。具體各階段的課堂講授內容安排如下:
1)rup總論以及課程概述
2)設計模式
3)常用的軟件架構風格及適用情況分析
4)對象持久化與數據庫設計
5)面向對象實現及文檔編寫與整理
對應進行的學生的各階段實踐任務如下:
1)按既定方式確定各小組成員和組長,并且重新審核各組在先導課程“軟件需求分析實踐”中的最終成果《軟件需求分析規格說明書》,進一步完成分析模型,得出用例圖,分析類圖,序列圖及協作圖。這一階段學生需提交分析模型文檔。
2)按照設計模式重新設計類。這一階段學生需完成兩個任務:一是實現設計模型中的具體設計類,具體要求學生:使用設計模式和機制;創建初始設計類;確定持久類;定義類可視性;定義操作;定義方法;定義狀態;定義屬性;定義依賴關系;定義關聯;定義內部結構;定義泛化關系;解決用例沖突。二是完成用例實現的設計,主要設計模型內的協作關系,以設計類及其對象為基礎,描述各個特定用例的實現和協作。這一階段學生需提交設計模型、類圖和用例實現。
3)完成架構設計。這一階段學生需要設計包結構,完成系統設計模型圖的實現子系統、接口設計類及架構模型(組件圖),重新審查用例模型,得出用例模型的架構視圖。這一階段學生需提交子系統設計文檔、接口設計文檔及架構模型文檔。
4)根據持久類以及數據庫知識對數據庫進行設計(包括字段編碼設計)。這一階段學生需提交數據庫設計文檔。
5)本課程的最后階段。完成實施模型(部署圖);完成界面以及輸入輸出(報表等)設計;完成具體子系統的編程工作,并進行二次迭代重新審核前面的設計部分;整理測試報告;整理文檔并編寫軟件使用說明書。這一階段學生需提交組件圖、部署圖、輸入輸出設計說明及具體子系統代碼執行程序。
5 考核方式強調過程考核,開發設計能力與書寫文檔能力并重
本課程的實訓目標是使學生能綜合運用所學的知識進行中小型應用項目的軟件開發設計。為此,我們提出了本課程考核的指導思想:重視實訓過程,看重軟件開發設計能力的提高,采用復合考核的方式,課程成績由平時考核、過程考核和項目驗收答辯成績組成。重點突出“會不會做”,強調對學生的實際開發設計能力考核,同時注意防止輕視書寫文檔的觀念。這種考核方式不但能更客觀地反映學生的學習情況,還能引導學生有意識地加強軟件開發設計技能的培養,開發設計能力與書寫文檔能力并重,更利于達到預期的教學效果。本課程具體的課程考核成績組成如下:
1)平時成績*10%(考勤成績*50%+小組開發設計工作中的合作精神表現*50%);
2)階段考核成績*60%(五個階段,各階段的能力表現及提交的文檔各占20 %);
3)項目驗收成績*30%(項目文檔匯總整理占50%,項目答辯50%)。
6 結束語
“軟件開發設計實訓”課程是軟件工程專業實踐類課程中非常核心的一門,其實踐性和綜合性都很強,能集中訓練和提高學生進行軟件項目開發和設計的實際技能。其教學實施過程不應被視為只要學生針對項目要求能編寫出相應的軟件即可,而更應注重軟件開發設計過程的方法和技能的培養,以培養具有軟件工程思想的真正符合社會需求的軟件人才。本課程應緊隨軟件工程學科的發展而不斷更新。在今后的課程開展過程中,其教學模式和措施還需要不斷創新、總結和改進,需要持續不斷地研究和探索。
論文 關鍵詞:軟件工程管理 開發人員 組織結構用戶
論文摘要:通過對軟件產品特點的分析,討論軟件工程管理可能涉及的人員、組織機構、用戶、控制、文檔資料等內容.
一、引言
軟件工程管理目前還沒有引起人們的足夠重視。究其原因:首先是人的傳統觀念,工程管理不為人們所重視;另一方面軟件工程是一個新興的學科領域,軟件工程管理的問題也是剛被提出的。同時,由于軟件產品的特殊性,使軟件工程管理涉及到很多學科。因此.對軟件工程管理,人們還缺乏經驗和技術。但事實證明,由管理失誤造成的后果要比程序錯誤造成的后果更為嚴重。很少有軟件項目的實施進程能準確地符合預定目標、進度和預算的,這也就足以說明軟件工程管理的重要。
二、軟件工租,理的內容
目前軟件生產自動化程度很低,在開發過程中人是起決定性的因素,因此,軟件工程管理很大程度上是對人的管理。我們可根據軟件產品的特點.分析軟件下程管理的具體內容,它包括對開發人員、組織機構、用戶、文檔資料等方而的管理。
(一)開發人員
軟件開發人員一般分為:項目負責人、系統分析員、高級程序員、初級程序員、資料員和其他輔助人員.根據項目的規模人小,有可能一人身兼數職,但職責必須明確。不同職責的人,要求的素質不同。如項目負責人需要有組織能力、判斷能力和對重大問題能做出決策的能力;系統分析員則要有概括能力、分析能力和社交活動能力;程序員需要有熟練的編程能力等。人員要少而精,選人要慎重。軟件生命期各個價段的活動有分工又互相聯系。因此,要求選擇各類人員既能勝任工作,又要能相互很好地配合.沒有一個和諧的工作氣氛很難完成個復雜的軟件項目。
(二)組織機構
組織機構不等于開發人員的簡單集合。這里的組織機構要求:好的組織結構、合理的人員分工和有效的通訊。軟件開發的組織機構沒有統一的模式。下面簡單介紹三種組織機構。
1.主程序員組織機。ibm公司提出的主程序員組是軟件系統結構化思想在組織上的體現。它的目的是為了保證全組的協調和統一。一位高級工程師(主程序員)主持計劃、協調和復審組的全部技術活動。技術人員(一般25人)負責分析和開發活動,一位后援工程師支持高級工程師的工作,并且在該項目繼續進行時,可以代替高級工程師工作,以減少可能的損失.
2.專家組。專家組強調每個人的才能,把每個人都看作是某一方面的專家,由這些專家組成一個開發機構。這種組織結構雖然能發揮所有工作人員的積極性,但往往有可能出現協調上的困難,選擇這種方式要慎重.
3.民主組織.民主組織由從事各方面工作的人員輪流擔任組長。很顯然,這種組織結構對調動積極性和個人的創造性是很值得稱道的。但是由于過多地進行組長信息“轉移”不符合軟件工程化的方向。
(三)用戶
我們是為用戶開發軟件的,在開發過程中自始至終必須得到用戶的密切合作和支持。作為項目負責人,要特別注意與用戶保持聯系,掌握用戶的心理和動態.防止來自用戶的各種干找和阻力。
1.用戶不積極,不配合。這種表現通常來自對采用先進技術持懷疑態度的用戶,他們心理上的抵觸情緒會在行動上表現為消極、漠不關心。在需求階段,做好這部分人的工作很重要,通過他們中的業務骨千,才能真正了解到用戶的要求。要使他們認識到: 計算 機的 發展 和應用是 現代 化的必然趨勢,使用計算機將會帶來巨大的 經濟 效益:讓他們掌握新的技術和方法去取代某些可能過時的或淘汰的專長。
2.用戶求快求全.這種表現來自對使用計算機持積極態度的人.他們中一部分人希望一個早上就能用上計算機,并且全能用上計算機。要他們認識到;開發一個軟件項目不是一朝一夕就能完成的,軟件工程不是靠人海戰術就能加快的工期。另外,即使計算機能夠處理的事情,系統也不能下于包羅萬象,貪大求全。要根據現有的條件量力而行。如果系統大而全,必然會很復雜,開發時間就拖得很長,因此可能會導致一個系統的失敗或性能太差.
3.用戶需求變化.在軟件開發過程中,用戶可能會不斷提出新的要求和修改以前提出的要求。從軟件工程的角度不希望有這種變化。但實際上,不允許用戶提出變動的要求是不可能的.因為一方面每個人對新事物有一個認識過程,不可能一下子提出全面的、準確的要求:另一方而還要考慮到與用戶的關系。對來自用戶的這種變化要正確對待:要向用戶解釋軟件工程的 規律 ,并在可能的條件下部分或有條件地滿足用戶的合理要求.例如:軟件需求分析階段結束后軟件的設計口標已經確定,這時用戶要求的重大變化要導致設計目標的變化,特別是到軟件開發的后期,一般不可能滿足這種變化的要求。要向用戶解釋清楚工程的內在規律,但對用戶提出的如性能等局部方而的要求,只要是合理的,就要加以考慮。
4控制。人員控制是對開發組織內部人員控制。就是要保證開發人員的積極性和穩定性。人員的頻繁更換或流動將會大大增加軟件出錯誤的機會。至少要保證軟件項目每一期工程或軟件生命期每一階段中人員的相對穩定性。同時注意發揮每個開發人員的積極性和創造性。經費控制要編制詳細的經費預算。并在各階段進行經費的核算。在經費上失去控制,軟件項目就沒有經濟保證。質量控制與各階段的復審在意義和作用上是一致的,在此不再敘述。
5.文檔資料。開發過程的各種活動后都要反映在文檔資料上。每一個階段的文檔資料是以后各階段工作的基礎,又是對前面各階段工作的復審。軟件工程管理很大程度上是通過對文檔資料管理來實現的。因此,要把開發過程中的初步設計、中間過程、最后結果等建立成一套完整的文檔資料。文檔標準化是文檔管理的重要方面。
三、結束語
在當今的軟件工程時代,每個項目涉及眾多的人力和物力,管理問題日益突出。在實際工作中,不管是否正式提出管理問題。都在自覺或不自覺地進行著管理,只不過是管理的好壞程度不同而已。隨著軟件規模的不斷增大.開發人員也隨著增多,開發時間也相應持續增長。而對于規模大、人員多、開發時間長的軟件項目,必須要有良好的管理和力求在確定的時間和預算范圍內有效地、合理地組織人力、物力.按計劃完成預定的軟件項目。
2004年,世界工程師大會在中國召開,會議的主題是“工程師塑造可持續發展的未來”。這個主題告訴我們,“工程師”對人類未來發展的重要性,同時也告訴我們“工程教育”對人類未來發展的重要性。[1]應該看到,盡管一些應用型本科院校把培養“一線工程師”作為學校的辦學宗旨,并在此基礎上對教學模式、教學方法進行了一系列的教學改革,但由于與企業的結合不夠緊密,高等工程教育所培養出的“一線工程師”與企業、與社會的脫節比較嚴重,不能適應現代社會發展的需求。
2010年6月教育部基于提高工科院校專業教育教學水平而正式啟動推出的“卓越工程師教育培養計劃”(以下簡稱“卓越計劃”)[4]是貫徹落實《國家中長期教育改革和發展規劃綱要(2010-2020年)》和《國家中長期人才發展規劃綱要(2010-2020年)》的重大教育計劃。該計劃旨在培養造就一大批創新能力強、適應經濟社會發展需要的高質量各類型工程技術人才,為國家走新型工業化發展道路、建設創新型國家和人才強國戰略服務,對促進高等教育面向社會需求培養人才,全面提高工程教育人才培養質量具有十分重要的示范和引導作用。
上海應用技術學院“軟件工程”專業從 2010 年起即著手準備,在原有專業設置基礎上不斷探索與實踐,根據it學科行業發展的特殊性,制定具有前瞻性的人才培養標準,并通過全面修訂人才培養方案、實施人才培養模式、教學方式、訓練方式和評價方式等的改革。
一、培養模式
本專業實施“3+1”校企聯合培養模式,學生須接受3年的在校培養,累計1年的企業實踐和畢業設計。前三年學生在校學習學科基礎知識和軟件工程的基本理論知識和技能,打好從事軟件工程領域工作的扎實專業基礎。在校學習過程中,定期聘請企業教師參與到教學實踐中,使學生對企業的生產實際有初步的了解。
第四年學生將被安排在合作企業進行為期一年的學習與實踐。一些與企業聯系密切的專業課程及畢業設計在企業完成,學生參與到企業的各個項目組,隨項目組一起參與實際項目的開發。項目組負責人將視學生為自己的員工,分派合適的工作要學生隨導師或獨立完成。通過參加一個或幾個實際項目的工作,獨立地完成一部分工作,并以企業標準進行考核,使學生對軟件標準化設計的全過程有更深入的了解。增強學生的責任心,提高學生的實際工作能力。
二、培養標準
按照教育部“卓越工程師教育培養計劃”的總體工作思路和標準要求,上海應用技術學院“軟件工程專業卓越計劃”將以“培養面向未來國家建設需要,適應未來科技發展,德智體全面發展,掌握軟件工程學科的基本原理和基本知識,具有扎實的基礎理論、寬厚的專業知識和良好的實踐能力,獲得工程師基本訓練,能勝任軟件工程項目的規劃、設計、實施、管理、研究、教育,以及投資與開發等工作,具有創新精神和國際視野的卓越的專業工程師”。
三、培養方案架構
按照課程群和模塊化的指導思想搭建培養方案的課程架構,滿足不同學生、企業對知識能力培養的需求。培養方案課程體系總體架構如圖1所示。1-5學期按照課程群進行教學,滿足學生對不同知識能力的需求;第6學期根據學生實習企業對知識能力的需求分模塊進行教學;第7-8學期進入對口的企業實習并完成畢業設計。
四、校內培養方案
校內培養方案的設計目標是通過學習使學生具有較強的工程意識、工程素質、工程實踐能力,成為專業知識扎實、動手能力突出、素質優良的卓越軟件技術人才。為了保證卓越工程師培養計劃的實現,制定了卓越工程師計劃專業知識與能力的實現矩陣,進一步明確了本科課程體系設置,包括課程模塊的構成、具體翔實的課程教學目標以及教學考查方式。結合專業特點以及學校學院的教學平臺、 教學設施、教學創新實踐基地等,加強了教育教學中的基礎性、創新性、實踐性、國際化,使專業的教育教學更上一個新的臺階。
(一)課程群劃分
將課程劃分為三條主線進行教學:1.基本理論課群,包括操作系統、計算機網絡、離散數學、數據結構、算法、計算機原理等。本部分課程培養學生計算機學科的基本理論和體系結構,使學生具備堅實的理論基礎,為其今后的繼續學習和發展打下基礎,同時滿足學生考研需求。2.程序設計能力課程群,.net、java兩個主流平臺并重,再加上三門培養綜合設計能力的課程,以提高學生的實踐動手能力,并滿足不同企業對開發工具的需求。為了加強學生的程序設計能力,我們在課程設置上體現了在校學習期間三年不斷線的思想,每學期都有與程序設計有關的課程和實訓。要求學生第一年編寫代碼不少于5000行,第二年不少于10000行,第三年不少于20000行。在進入企業之時,已經具備了較強的程序設計能力。3.軟件工程能力課程群,以提供學生軟件工程的管理與被管理能力。
(二)課程模塊劃分
根據合作企業的知識能力的不同需求劃分為若干不同模塊。通過對學生工作去向的跟蹤調查和軟件工程行業需求調查,確定了erp開發、web應用開發、手機應用開發、軟件咨詢服務等幾個方向。每個方向設立若干課程構成若干課程模塊,對應不同的去向,滿足不同企業的需求。在基本能力培養的基礎上,根據學生第四年去向選擇模塊,在第6學期完成,由企業方參與教學,完成學生進入企業的過渡。
五、企業培養方案
企業培養方案突出了理論和實踐綜合素質的培養,在教學體系上形成了企業導師教學講解、專題實訓、項目實踐的“三位一體”、工學交替的人才培養方案。
整個企業階段的培養方案劃分為企業工程教育或專業特色實習(累計15周)、現場工程實踐和專業綜合設計(累計25周)兩個部分,共40周,其中:
1.企業工程教育或專業特色實習(15周)
根據企業的業務和項目情況設置相關課程,折合15周。目的是培養軟件企業需要的一線工程人才。為了提高本專業特色實習的質量,聘用計算機軟件工程專業知識過硬、實踐經驗豐富的技術人員為教師。在實習過程中,采用案例教學法,把企業實際軟件工程項目納入學生實習范圍,讓學生接觸和開發企業實際的工程項目。為了提高實習效果,企業工程教育要做到講授、訓練、實踐穿插進行,使學生全面感受企業的工作環境、管理體制和項目開發過程,做到學生學習的專業特色內容與企業實踐相結合。
2.現場工程實踐或專業綜合設計(25周)
為使學生成為滿足軟件產業需求的創新型人才,專業綜合設計采用項目驅動的實習模式,專業綜合設計通過參與企業實際項目完成,共25周。專業綜合設計課題全部來源于企業的工程項目,實行1人1題,由實習單位的專業技術人員和學校的專業教師擔任設計指導教師。專業綜合設計結合實際工程問題,進行有針對性的研究與實踐,培養學生綜合運用所學知識和技能、分析與解決實際問題的能力,培養學生勇于探索的創新精神、嚴肅認真的科學態度和嚴謹求實的工作作風。
經過一年多的實踐,卓越工程師人才培養成效顯著,一批特色鮮明、實踐能力強的工程應用型創新人才脫穎而出,2012屆參加卓越工程師培養方式的學生,在就業方面占據了明顯的優勢。受到了企業的普遍歡迎。目前,2013屆學生參加卓越工程師培養計劃的工作正在進行,受到2012屆成功運作的影響,學生們積極性很高。在卓越工程師計劃的實施過程中,我們也發現了一些培養計劃中的不足之處,并在2013屆的實施中加以以調整。相信經過幾年的努力,我們的培養方案會愈加成熟。
地方院校教學目標是培養社會所需要的應用型人才,這是其優勢所在。實訓教學是指獨立設課的實訓課和理論課中的實訓環節,是實現培養目標的主體教學環節之一。實訓教學是培養學生專業技術應用能力及分析問題和解決問題能力的重要途徑,是教育過程中不可缺失的重要環節。本課題的研究基于某些國內外知名企業提供技術服務為基礎,以梧州學院軟件工程專業為探索平臺進行的教學改革實踐。校企合作的內容主要包括實踐教學體系建設、實訓教材建設、實訓基地建設、產學研等多方面。
著力打造“4+5”的實踐教學體系
學院軟件專業打破傳統的三段式教學,著力打造“4+5”的實踐教學體系?!?”是指突出培養學生四種能力(實踐能力、創造能力、就業能力和創業能力);“5”是指培養過程的“課程實驗—期末實訓--畢業實訓—頂崗實習—創新性實踐活動”五個模塊。五個模塊是根據軟件工程特點,循序漸進地培養四種能力,體現工學結合。這五個模塊和整個課程體系,都是圍繞主線來展開。其中的“創新性實踐活動”對軟件技術人才來說是非常重要的,一個軟件就像一個作品,必須有創意和實用的算法。
校企合作,共同開發實訓課程和教材
為了支持“一條主線,五個模塊”的實踐教學體系,學院軟件專業采取校企合作方式,共同開發實訓課程,分別用于各個模塊教學中。目前,已與多家企業共同建設基于任務驅動、項目導向、工作過程的《信息開發技術》課程,基于工作過程的 “教學做”一體化情景化教學的《網絡綜合布線》課程。與企業合作開發《信息開發技術教程》、《多媒體技術與應用實訓教程》、《網站規劃與設計實訓教程》、《計算機組裝與維護實訓教程》、《角色動畫教程》等教材。
校企合作,共建校內生產性實訓基地
學院軟件專業采取校企合作方式,與多家企業共建網絡構建、服務器、綜合布線實訓室,實訓室建設貫徹先進性、真實性、工程性、開放性的建設原則,將實訓基地建成具備多類網絡架構真實環境,集教學、科研、工程、培訓、技能鑒定等多種功能于一體的網絡技術與軟件工程中心,著力培養學生的職業技能和創新能力,提高人才培養質量,提升社會服務能力。
以產學研充實教學內容,提高教學和管理水平
為搞好產學研,學院建立二級科研機構軟件開發中心,軟件專業教師在研究所兼職搞開發,取得了良好的效果。先后完成了梧州市國稅限時辦結稅務系統、廣西財政廳的預算單位銀行賬戶管理系統、基于cmpp的短信系統的研究、廣西科技廳的nsq物流信息實時智能配對系統、新型農村合作醫療信息系統等。在重大課題研究中積累了豐富的研究經驗。特別是在醫療衛生行業, 建立醫療衛生行業綜合信息平臺。醫療衛生行業以新型農村合作醫療、城鎮居民健康檔案管理系統為切入點,以現有系統為基礎,以國家農村合作醫療建設政策為指導思想,以具體的信息化項目作為實際載體,參與到醫療衛生行業“一個平臺、四大系統”的建設中(即建立一個包含網絡硬件和基礎軟件的統一技術基礎平臺,建立衛生行政管理信息系統(衛生電子政務)、突發公共衛生事件應急系統(突發公共衛生事件應急指揮決策、疾病預防控制、衛生監督、醫療救治等系統)、醫療服務信息系統(醫院信息)和衛生應用信息系統(合作醫療、社區衛生、婦幼保健、醫教科研等系統)),在加快全市公共衛生信息化建設進程,全面提高突發公共衛生事件監測、應急反應、醫療救治、執法監督和指揮決策的能力方面作出我們應有的貢獻。
總結
軟件工程專業的“3+0.5+0.5”的教學模式的實訓環節是按照校內半年、校外半年的方式進行組織的。校內實訓基地引入來自企業的真實項目,學生在貼合軟件企業工作環境的實訓室中完成校內綜合實訓。校外實訓基地由來自企業的兼職教師帶領在企業頂崗實習的學生參加企業項目的研發,在實戰中進一步深化所掌握的專業知識。通過分方向、多層次、分階段來逐步訓練學生的專業技術能力和職業素質。整個實訓環節包括專業認知、基本技能實訓、核心技術實訓、綜合實訓、頂崗實習幾個環節,實訓涵蓋了基礎知識、專業核心技術及綜合能力培養等各個方面,所建立的實訓教學體系有一定的借鑒意義。
目前流行的領域本體構建方法有:英國edinbunrgh大學ai應用研究所的enterprise項目組開發的“骨架法”,該方法使用middle—out開發方式提供與商業和企業有關的術語及其定義的集合;加拿大toronto大學企業集成實驗室開發了tove項目本體,通過該本體來建立指定知識的邏輯模型;bernaras等人開發的歐洲eaprit kactus項目中由應用來控制本體的開發,每個應用都有相應的知識本體,這些本體即能復用其他的本體,又能集成到項目以后的本體應用中;西班牙madrid理工大學ai實驗室開發的,methontology法構建知識級本體;美國southern california大學信息科學研究所開發的sensus法,主要通過自然語言處理,提取和合并不同電子知識源的信息而得到該領域本體的內容。
本文借鑒了上述傳統領域本體構建方法中的基本思想,并在構建框架中融合了軟件工程開發方法中的結構化開發方法和原型化開發方法。
1 傳統領域本體構建方法分析
1.1 共同點分析
縱觀上述“骨架法”、“評估法”、“bernaras”、“methonotology”及“sensus”方法構建領域本體過程中的思路,它們之間存在以下共同點:
(1)許多本體構建方法都以一個具體任務為起點,這樣易于知識的獲取和本體功能的描述。
(2)本體構建大致可劃分為階段法(如骨架法)和演化法(如methontology法)。
(3)在構建過程中可分為“非形式化描述本體”和用正規描述語言“形式化描述本體”前后兩個階段。
(4)希望通過累積的方法構建本體,即先構建一個基礎本體,然后做進一步開發。
(5)對于由同一個基礎本體構建出的領域本體,由于高層概念的共享,本體系統之間具有互操作能力。
1.2 缺陷分析
ieee 1074—1995標準是軟件開發生命周期過程的標準,其中包括模型階段、項目管理階段、軟件開發階段與集成階段4個開發階段,其中軟件開發階段的具體步驟如下:
(1)開發前期:主要進行可行性研究等活動;
(2)開發階段:主要進行需求分析、設計和實現等活動;
(3)開發后期:主要進行軟件的安裝、試運行、操作和維護等活動。
與ieee 1074—1995標準對比而言,目前領域本體構建還遠遠沒有成為一種工程性活動,還具有如下缺陷:
(1)沒有一種方法是完全成熟的,不論是bemaras法、sensus法、骨架法、評估法,還是methontology法。
(2)缺乏工程化的本體通用構造方法和標準。由于每個研發團隊處于不同的學科領域,雖然總結出各個領域不同的開發方法和體系結構,但是各個本體開發方法都不盡統一,缺乏通用的標準。
本文在領域本體構建過程中揚棄上述5種領域本體構建方法中的優缺點,而且借鑒了軟件工程開發的基本標準。
2 基于軟件工程開發的領域本體構建
2.1 構建框架
本文在領域本體框架構建的形式上采用結構化方法中分段式模式,將整個領域本體構建過程分為領域本體規劃階段、領域本體分析階段、領域本體設計階段、領域本體實施階段及領域本體運行階段,每個階段都有自己獨立的目標及主要任務,前一階段任務的完成是后一階段任務開始的前提和基礎,后一階段任務通常是對前一階段提出的解決問題方法的進一步具體化,即該過程是按照軟件工程開發的生命周期流程來逐步解決問題的。在領域本體分析階段,根據領域本體規劃階段提出的具體要求和目標,采用原型化方法不斷地對分析結果進行修改和完善。其構建框架如圖1所示。
2.2 構建框架分析
2.2.1 領域本體規劃階段
(1)確定領域本體的用途和范圍
確定領域本體范圍的方式之一是設計并填寫本體的性能調查表,以下從需求的角度對本體支持的性能調查表進行簡單的分類:
①需求細化。需求細化過程必須滿足何種標準?會產生多余的需求嗎?需求是客戶的清晰表述嗎?
②需求追溯能力。需求還能分解嗎?需求的來源是什么?誰記錄需求?需求在特定的設計團隊中適用嗎?
③需求滿足。需求能夠滿足嗎?兩個或多個需求間相互沖突嗎?更高抽象級別的需求怎樣滿足評估?
④文檔生成。需求屬于哪類文檔?哪些是與需求文檔中的段落相符的需求?不屬于客戶報告的需求有哪些(商業機密)?
⑤升級。這是需求的最新版本嗎?需求的舊版本有哪些?為什么還要改變需求?變化對需求文檔的一致性和完整性有影響嗎?
(2)考慮復用現有領域本體
一些本體已經初具規模,可以在網上找到相應的本體庫及相關資料,在具體開發之前,有必要在這些本體中尋找系統可以重用的本體,這樣可以省去元本體和頂層本體的建立,而把本體建立的目標重點放在領域本體的建立上。
2.2.2領域本體分析階段
(1)定義類和類層次
類描述了領域的概念而非單詞。在類和類層次的定義過程中,需要依據以下8個原則:
①確保類層次的正確性
恰當使用is—a和kind-of等類間關系,is-a關系指類a是類b的子類,前提是b的每個實例也是a的實例。類的子類表示概念是kind-of父類表示的概念;層次關系間具有傳遞性,并應區分直接子類和間接子類的關系;避免類層次的循環,確保類層次隨著領域發展而進化。
②分析類層次中的兄弟關系
在類層次中,兄弟關系是同一類的直接子類,并在同一抽象級別上。關于直接子類的個數并沒有明確規定,但父類一般只有2-12個直接子類,過多或過少不都合適。
③多重繼承關系
一個類可以是幾個類的子類,則子類的實例是其所有父類的實例,子類將繼承所有父類的屬性和關系約束。
④引入新類的時機
當類的子類有其父類不具有的新屬性,或有已定義的新屬性值,或覆蓋父類屬性的約束,此時可以引入一個新類。新類可以沒有任何新的屬性,沒有必要為了一個額外的限定條件來創建新類。
⑤新類或特性值
如果有不同屬性值的概念變成其他類中不同屬性的約束,則應該生成新類,以便加以區別;類的單個實例不應經常改變,當使用概念的外在(非固有)屬性來區別類時,這些類的實例將需從一個類移動到另一類。
⑥類或實例
判斷類結束和單個實例開始依賴于知識表示中最低的粒度級,而粒度級又由本體應用來確定;如果概念已經形成自然的層次,則應表述為類,單個實例是最特殊的概念表述,實例沒有層次性。
⑦限定范圍
確保不包括類具有的所有特性,僅在本體中表述類最突出的特性,不增添所有類(術語)間全部的關系。
⑧不相關子類
很多系統明確指定某些子類不相交,如果類沒有任何共同的實例,則它們不相交。
(2)定義類的屬性及其約束
類的屬性是描述類和實例的特性,也是類間區分的特性。通常有四種對象特性能變成本體中的屬性:
①固有的特性,如圓柱的半徑和高度。
②外在的屬性,如螺旋的設計者。
③局部,若對象是結構化的,物理和抽象的部分。
④與其他個體間的關系。
不同的約束可以用來描述屬性的值類型、值范圍、值基準,及值的其他特征。下面從5個方面來描述屬性普通的約束:
①屬性基數?;鶖刀x屬性有多少值。有些系統定義單一和多個基數,而有些系統用最小和最大基數來描述屬性值的個數。有些屬性設置最大基數為o,目的是為了表示特定子類的屬性不能有任何值。
②屬性值類型。通常屬性值類型可分為字符串型(string)、“浮點或整數”數值型(float或integer number)、“是或否”布爾型(yes或no boolean)、枚舉型或符號型(enumerated或symbol)、實例型(instance)。
③屬性的領域和范圍
屬性應能描述其領域中所有的類,屬性應能填充其范圍內所有類的實例,同時不應指定屬性的范圍是本體中最通用的類。
④逆屬性
屬性值可能會依賴于另一屬性值,稱為逆關系,在兩個方向保存此數據是冗余的,通常使用逆屬性,可以自動填充另一逆關系的值。
⑤默認值
如果類的多數實例的特定屬性值是相同的,則可把該值定義成默認值。當類的每個新實例包含這個屬性值時,系統自動填充默認值,還能把此值改成約束允許的其他值。
(3)生成實例
定義類的單個實例首先需要選擇類,接著生成這些類的單個實例,最后填充屬性值。
為了使生成的類、類間層次關系、類屬性及約束、類實例等更符合構建目標和用途,并為了保障在較短時間內適合用戶的需求,在領域專家的指導下,采用原型化軟件工程開發方法對該階段產生的成果不斷修改和完善。
2.2.3 領域本體設計階段
(1)領域本體的形式化表示
一般用語義模型表示領域本體。perez等人用分類法組織領域本體,歸納出5個基本建模元語:
①類(classes)或概念(concepts)
從語義上講,它表示的是對象的集合,其定義一般采用框架(frame)結構,包括概念的名稱、與其他概念之間的關系集合、以及用自然語言對概念的描述。
②關系(relatiom)
在領域中概念之間的交互作用,形式上定義為n維笛卡爾積的子集,即:r=c1×c2×……×cn
③函數(functions)
一類特殊的關系。該關系的前n-1個元素可以惟一決定第n個元素。形式化定義為f:c1×c2×……×cn-1→cn。
④公理(axioms)
代表永真斷言,如概念乙屬于概念甲的范圍。
⑤實例(instances)
代表元素,從語義上講實例表示的就是對象。
另外,從語義上講基本的關系有4種:整體與部分關系(part—whole)、分類關系(is—a)、實例與概念關系(instance—concept)和屬性關系(attribute-of)。但在實際建模過程中,概念之間的關系不限于上述4類關系,可以根據領域的具體情況定義相應的關系。
(2)領域本體的形式化描述語言
領域本體可用自然語言、框架、語義網絡或邏輯語言等來描述。但對計算機來說,形式化描述語言做為一種可供計算機處理的概念模型,應具備以下條件:
①應該具有較強的表示能力,同時也應兼顧推理能力,以滿足智能檢索中進一步實現推理的需求。
②應該具有較強的內在邏輯系統支持。
③應該具備一致的描述概念和表示數據的能力。
④應該盡可能與w3c已有標準兼容,從而保證其持續發展需求。
⑤應該具備xml語法特性,最好是基于語義web。
⑥所表示的領域知識是形式化的,即機器可讀和可理解的。
目前已經開發了6種本體語言,有些是直接基于xml語言的語法,如簡單html本體擴展(simple html ontologyextension,shoe)、本體標記語言(ontology markup language,oml)和基于xml的本體交換語言(xml—based ontology exchange language,xol);另外有2種本體語言是建立于rdf(s)之上,以便改善rdf(s)的特征:本體交互語言(ontology interchange language,oil)和darpa主體標記語言+本體推理層(darap agent markup language with ontology inference layer,daml+oil)。最近,以oil和daml+oil語言為起點,已開發出語義網所用的web本體語言(web ontology language,owl)。各個本體語言之間的層次化關系如圖2所示:
(3)領域本體的文檔化構建和存儲
構建領域本體文檔,可對后續領域本體修改和進化奠定基礎。1個owl文檔由以下4個部分組成:
①本體首部:包含了文檔的元數據,如導入數據、版本數據及與其他owl文檔的兼容數據。
②類的定義:通過(owl:class)標簽定義類,使用(rdfs:subclassof)來繼承1個或多個類,由此建立類的層次關系。類的語義用類的描述來表達。owl區分了6種類的描述:1個類標識,1個詳細的列舉,1個屬性的限定,2個或多個類描述的交,2個或多個類描述的并,1個類描述的補。
③屬性的定義:owl存在2種類型的屬性,即對象屬性(object property)和數據類型屬性(datatype property)。對象屬性是用來表述2個類實例之間的關系,而數據類型屬性則描述類的實例、rdf literals,以及xml schema數據類型之間的關系。屬性之間還能夠定義子屬性關系以及為屬性聲明額外的特征(傳遞屬性和逆屬性)。如能夠定義father是parent的子屬性,定義anceator為傳遞屬性,定義child為parent的逆屬性。
④個體(實例)的定義:一個個體是一個特定類的實例,并與其屬性相聯系。
2.2.4 領域本體實施和運行階段
(1)領域本體評價
這里采用gruber在1995年提出的5條準則:
①清晰性。所定義的術語應盡量客觀,避免受社會背景和客觀環境的影響;給出的定義應盡可能完整。
②一致性。即本體中定義的公理應該是邏輯一致的,概念和概念間關系在邏輯上也應該是一致的。
③可擴展性。本體應該能夠保證添加新的通用或專用術語,而不需要修改原有的定義,即能支持在已有的概念基礎上定義新術語。
④編碼偏好程度最小。概念應該在知識層次上說明,而不應該依賴于特定的符號層次的編碼,因為不同的系統可能采用不同的表示風格。
⑤最小本體承諾。一般地,本體承諾只要滿足特定的知識共享需求即可,這可以通過定義約束最弱的公理及只定義交流所需的基本詞匯來保證。
(2)領域本體試運行
可針對某一應用目標,可利用初始生成的領域本體在特定的應用范圍內進行試運行,來驗證初始領域本體是否能夠滿足領域范圍應用的需求,特別是要檢驗其一致性、完整性和可擴展性。經過試運行,若符合要求則轉向(4);若不符合要求則要重新經過本體分析階段,然后轉向(3)與(4)。
(3)領域本體文檔的修改
針對試運行的結果,可在owl文檔的基礎上做一些標注性的修改。
(4)領域本體應用
對于修改后的領域本體,可正式投入實際運行應用過程。
3 總結和展望
本文在總結與分析傳統領域本體構建方法中的基本思想及缺陷的基礎上,提出了基于軟件工程開發角度來構建領域本體的思路。其中利用結構化開發方法構建領域本體整體開發流程,充分借鑒了結構化開發方法中的用戶至上原則,結構化、模塊化、自頂向下地對系統進行分析和設計等優點,但由于結構化開發方法中存在開發周期過長、不易滿足用戶需求并難易修改等缺陷,因此在領域本體構建的重要環節,即在領域本體分析階段采用原型化開發方法,使用戶與開發者通過不斷地溝通盡快確定領域本體初始模型,并通過結構化開發方法所劃分的層次結構過程不斷地優化和修改初始模型,使其能夠盡快滿足用戶的需求。
摘要:針對“軟件工程”這門課的課程特點,本文提出幾種實用的教學方法和手段,目的為了提高“軟件工程”的教學質量。
關鍵詞:軟件工程 教學改進 實踐
中圖分類號:
1、 引言
提起軟件,在當今社會人們并不陌生,正是由于軟件的發展,使計算機應用逐步滲透到社會生活的各個角落,使各行各業都發生很大的變化。這同時也促進人們對軟件的品種、數量、功能和質量等提出了越來越高的要求。然而,軟件的規模越大、越復雜,人們的軟件開發能力越顯得力不從心。于是,人們開始重視軟件開發過程、方法、工具和環境的研究,軟件工程應運而生。
“軟件工程”主要介紹軟件工程的基本原理、開發方法和開發工具,通過本課程的學習,使學生了解和初步掌握開發1個軟件項目所使用的方法和工具,以及“軟件工程”的發展過程和發展趨勢,為進行軟件開發打下1個良好的基礎。
2、 課程特點
1。 課程綜合性強。
軟件工程與其他計算機課程,如程序設計語言、數據結構、編譯原理、數據庫以及操作系統等課程都是相互作用和影響的。在1定程度上說,軟件工程討論的是在實際開發當中綜合運用這些課程中講過的理論和方法,將這些課程的理論和方法放在1個統1的目標下,這個目標就是在有限的時間及預算條件下,開發出高質量的令用戶滿意的軟件。
2。 課程內容不斷更新。
軟件工程課程的教學培養目標應該以市場需求為導向,使課程培養的學生真正能夠在軟件行業中發揮作用。因此,在授課時,我們不能拘泥于教材內容的限制。在講解基本原理、基本概念和基本方法的同時,介紹1些新方法、新技術。這樣,有助于開拓學生的視野和培養創新意識與開發能力,使他們走向社會后不至落伍。
3。 課程的實踐性強。
軟件工程是1門實踐性很強的課程,它是各種開發經驗的總結與提煉。在學習過程中不但應注重概念、原理、方法和技術的掌握,更應注重方法、技術的實際應用。學習軟件工程必須投身于軟件開發的實踐,才能真正領悟軟件工程的精髓。
實際教學當中,這門課的教學效果往往不是很理想,教師覺得這門課教起來較困難,學生學習中多數也覺得枯燥無味,很難達到較好的教學效果或獲得較強的實踐能力等預期目的。如何改善?結合軟件工程的課程特點,筆者認為可以從以下幾個方面來改進《軟件工程》的教學質量。
三、軟件工程教學改進的內容和方法
1。 教學過程引入實際案例
軟件工程課程涉及面很廣,如果不結合實際工程項目進行教學,很難把教學內容教授給學生。因此,在教學過程中引入案例,將復雜抽象的概念用具體生動的實例進行詮釋,能夠收到事半功倍的效果。例如,在授課時教師可結合1個“學校教材購銷系統”實例,給學生介紹具體的開發過程和方法。
另外,學校還可邀請領域內有實際經驗的資深程序員,針對軟件工程中具體理論和方法在實際開發中的應用,在課堂上和學生進行面對面講座,深入淺出地作講解。這樣,學生可以更加熟悉、掌握軟件開發的過程。
2。 組織課堂討論,形成教學互動
我國有句名言:“授人以魚,不如授人以漁”。學生是教學活動的核心,教師要利用合適的方法調動學生的積極心理和參與意識,改變傳統的教師高高在上的教學方式,讓學生參與教學過程,有機會發表自己的看法。
比如在講授需求分析這章內容時,可結合“學校教材購銷系統”這個案例,要求學生按照軟件工程教學的思想和方法認真做好需求分析。在實施過程中,首先由學生獨立思考,給出解決方案。然后在課堂上,組織學生進行討論,分析各自解決方案的優劣,并進行綜合。最后由老師進行總結和評價,指出該案例所涉及的理論知識及其應用方法,就學生提出的問題進行解答。這樣通過組織學生討論,可使學生進1步理解和掌握課程內容的方法和步驟,使抽象的知識變得看得見,用得著,大大激發了學生學習的興趣和自信。
3。 加強實踐環節
從本質上看,軟件工程的實踐性和綜合性是其他相關課程難以比擬的。因此,必須結合設計項目和實際應用加以施教,才能取得良好的教學效果。那么,在把握教學進度的同時,必須及早安排好課程設計,讓學生同步開展課程設計。這樣,理論課講完了,課程設計也基本結束,學生們能從理論和實踐的結合上,加深對軟件工程知識難點、重點的理解,進1步深刻理解軟件過程和系統消化理論知識,訓練項目設計的思路,鍛煉實際開發能力,培養嚴格規范的項目開發方法和步驟,體驗文檔編寫整理、階段性評審總結以及軟件測試等各個方面的工作流程,直接培養了學生從事實際開發的能力。
四、結束語
在教學中,我們還應根據學生的具體情況,因材施教??傊ㄟ^不斷改進教學,使學生能更好地理解、掌握知識,運用所學服務社會。
摘要:提出了面向學生主體和項目驅動的軟件工程教學模式。從開展以學生為主體的理論教學過程、實施基于項目驅動的實踐教學環節、制定符合教學特點的課程考核體系三個方面出發,對該模式進行了研究和探討。
關鍵詞:軟件工程;教學模式;軟件工程;學生主體;項目驅動
1 引言
長期以來,在我國《軟件工程》課程教學中強調理論學習而忽視實踐能力培養的現象比較普遍,現有的國內不少教材對實踐能力的培養重視不夠,表現為:①教材中的案例缺乏完整性、統一性和實用性;②缺乏與理論教學相適應的實驗教材。evelyn等在他們的著作《project-based software engineering an object-oriented approach》中強調了學生具備開發項目經歷的重要性,認為現有的教材過分強調軟件工程理論的教學,不能有效地培養學生的軟件開發技能。由于缺少軟件開發各個階段的經歷,因此,學生較難理解、掌握所學的課程內容。
我們主要圍繞《軟件工程》課程的內容體系、教學方法、課程考核等方面對該門課程的教學模式進行了改革,其根本思想是開展以學生為主體的理論教學過程;實施基于項目驅動的實踐教學環節;根據教學過程的特點,制定該課程的考核體系。我們把改革后的、新的教學模式稱為“面向學生主體和項目驅動的軟件工程教學模式”。
2 開展以學生為主體的理論教學過程
2.1 建立合理的課程內容體系
建立合理的課程內容體系首先應合理地選擇教材,我們選用的教材為shari lawrence pfleeger 編著的《software engineering(theory and practice)》。該教材內容的特點是:①理論性,教材比較全面地介紹了軟件工程中的基本原理、概念和方法;②實踐性,課程的內容體系強調基本原理、方法在實踐中的具體應用;③先進性,教材較為詳細地介紹了軟件工程中的新技術、新方法。同時,我們選用的輔助教材為清華大學張海藩編著的《軟件工程導論(第四版)》。
其次,應根據學生的培養方向、學時數等因素對所講授的內容作必要地取舍。我們以傳統的生命周期方法學和面向對象方法學為主線,建立了課程內容體系,參考國內外先進的軟件工程理論和應用實例,對教學內容進行了必要的補充和刪減;以培養學生的軟件開發過程中的技能為目標,制作了內容豐富、聯系項目開發實際的多媒體教學課件;建立了較為完善的軟件工程典型項目案例庫,為每一個案例提供詳細的分析說明;編寫了供實踐環節使用的《軟件工程項目案例實施指南》。
2.2 開展以學生為主體的案例式教學
在教學過程中,開展以學生為主體的案例式教學,克服了傳統的“教師教、學生學”的模式。在課程的開始,即將學生分為若干個項目小組(每個小組5至7人),并為每個小組確定一個負責人,各個項目小組選定一個互不相同的項目,并明確所選項目的總體要求及考核標準。教師以一個完整的項目案例貫穿于整個理論教學過程中,學生則帶著自己項目中的問題去理解、思考教師所講授的內容。學生的作業主要體現為項目的階段性的分析和設計文檔,項目小組的成員在討論、協作的基礎上,每次均以小組的形式提交作業。
2.3 建立《軟件工程》課程教學資源平臺
該課程的教學輔助資料圍繞《軟件工程》網絡課程建設而展開,所建設的網絡課程主要內容包括:教學大綱,教學內容,電子教案,課程習題,模擬試題,多媒體課件,實驗部分,課程評價反饋等。建立網絡課程平臺的目的是為了便于學生進行網上自學、討論交流、作業提交、在線測試、教學效果評價等功能,充分發揮學生在學習過程中的主體作用。
通過該門課程的理論教學改革,學生普遍反映能夠較好地理解、掌握軟件工程項目的開發理論和方法,和單純的理論教學相比,改革后的教學方式更容易讓人接受,學習的主動性得到了提高。
3 實施基于項目驅動的實踐教學環節
我們把實踐教學和項目開發相結合,實施基于項目驅動的實踐教學環節。不同的項目小組開發不同的項目,學生在實踐環節中主要完成在理論學習過程中形成的分析、設計文檔,以小組成員分工協作的方式共同開發一個完整的項目。完成一個符合要求的項目是該門課程實踐考核的主要內容。學生的學習活動是在項目開發的各項過程和活動的驅動下完成的。在具體的實施過程中應注意以下幾個問題:
(1)由項目負責人在課外時間召集項目組成員討論、進行人員分工,使項目小組的所有成員熟悉和感受軟件開發小組的組織和管理。
(2)實驗內容應覆蓋軟件生存周期的各個階段,使學生通過實驗加深對理論知識的理解。項目小組的所有成員均應參加軟件開發的每一個階段。
(3)應保證實驗內容具有可操作性和適當的難度。可操作性保證學生都能完成實驗,幫助學生樹立學習信心,并在一定程度上減少學生抄襲的現象;適當的難度有助于培養優秀學生進一步鉆研的精神。
4 制定符合教學特點的課程考核體系
傳統的考核方法不能在教學的過程中把握學生的學習效果,不能充分調動學生學習的主動性和提高學生的學習興趣,課程的考核應該和課程的教學特點相適應。因此,我們制定了分階段、互評定的二次考核體系,具體措施為:
(1)課程考核由三部分組成:理論考核占40%,實踐考核占40%,平時考核(作業、考勤)占20%。
(2)實踐成績的評定包括小組成績和個人成績兩部分,各占50%。小組成績為小組中所有成員的第一次考核成績,個人成績為小組成員的第二次考核成績。
(3)小組成績由各個小組階段成績的平均值與完成的項目的最終驗收的情況(包括系統是否達到需求規格說明中的功能性、非功能性要求,文檔是否全面、合理、規范等)組成。小組的階段性成績由教師和該項目組之外的其他項目組共同評定。
(4)個人成績由教師根據小組每個成員的答辯成績來評定,答辯的內容為小組成員在項目開發中所完成的任務,其中,評定項目負責人個人成績時,還應考查其項目開發的組織、
管理能力。
考核結果表明,我們采用的考核方法提高了學生按照軟件工程的原理、方法、技術、標準和規范進行軟件開發的綜合能力和軟件項目的管理能力,特別在基礎技能、團隊協作、人際交流、項目規劃幾個方面明顯具備較強的能力。
5 結束語
《軟件工程》課程的教學模式改革主要體現在以下三個方面:在理論教學方面,以學生為主體的教學模式,表現為以分組形式的案例教學過程;在實踐教學方面,通過小組內成員分工協作的方式,完成小組所選定的項目案例;在課程考核方面,制定了符合教學特點的課程考核體系。在整個教學過程中,學生始終處于主導地位,是學習的主體,教師處于指導和評價學生階段性學習效果的地位。從學生反饋的結果來看,通過對該門課程的教學模式進行改革,使學生經歷了軟件開發的全過程,鍛煉和培養了學生的系統分析能力、設計能力、編程能力、測試和維護能力、團隊協作能力和文檔書寫能力,全面地提高了學生的綜合素質。
摘要:信息工程是企業信息系統中不可或缺的一部分,其包括信息網絡工程、信息資源工程、信息應用工程。該文將憑借著軟件工程理論,從信息工程開發的角度,進行信息工程的三維監理,從而構建一種新型監理模式,即“三控四管一協調”。從而使信息工程監理走向更深入、更全面、更有效的水平。
關鍵詞:軟件工程;信息工程監理;監理模型
自從二零零二年十二月我國信息產業部頒布《信息系統工程監理暫行規定》(簡稱《規定》)之后,信息工程監理公司越來越多。根據《規定》,信息工程監理主要是指依法設立且具備相應資質的信息系統工程監理單位,受業主單位委托,依據國家有關法律法規、技術標準和信息系統工程監理合同,對信息系統工程項目實施的監督管理。[1]
1 信息工程的特點
跟其他的一般的建設工程項目相比,企業信息工程有著復雜高度、能見度低等不確定因素。其主要有以下幾個特點:
1.1 組織驅動技術
企業信息工程項目的組織和建設越來越表現出不可分割的一面。工程項目組織要求信息工程必須嚴格確定“前期準備-工程項目規劃-工程項目設計-工程項目實施-工程項目驗收-工程項目維護”的“組織思維”過程,設立周密的“組織標準”通過這些組織標準來帶動技術標準的設立,通過組織的需求來帶動技術方面的需求,也通過組織的滿意度還評價技術方面的滿意程度。
1.2 全員全程參與
信息工程并不能跟那種“交鑰匙”工程一樣,其要求建設單位的所有員工進行全程參與。這主要是由于企業信息工程項目不并簡單,而是一個非常復雜的知識傳遞的過程,其要求建設單位的所有員工必須學習并接受相關知識;因此建設單位與開發單位之間必須相互適應、相互協調,必須協同共進。企業信息工程系統是一個人機相結合的有機系統,沒有建設單位人員的全程參與,信息工程系統將不可能實現其有效性、完整性、全面性。
1.3 復雜度高,不確定因素多
由于信息工程項目的需求比較復雜,其不像其他建筑工程那樣具有可見性。檢驗復雜,較長的維護期,還有其它非技術因素原因導致企業信息化項目失敗[2]。因此,企業的信息工程項目具有搞復雜度、低能見度,存在許多不確定的因素。
2 信息工程監理的必要性
現在,我國企業實現信息工程項目的成功幾率還非常低,根據我國企業信息工程項目的自身特點,保證信息工程項目的成功幾率的提高,必須進行信息工程建立,即必須通過第三方監理單位對企業信息工程項目的實施進行監督。信息工程監理將有利于開發單位跟企業的相互協調,彼此協同共進,能確保信息工程項目的有效進行。對于信息工程監理的必要性,主要原因在于:目前我國企業信息工程監理對過去傳統的建筑工程監理模式進行了參考,但又跟一般的建筑工程的監理有一定的差別。第一,信息工程的可見度非常低,開發過程相當多變、復雜,其知識密度也相當高。不像建筑工程項目的監理那樣能隨時對施工現場進行其質量、進度進行監督管理,信息工程監理根本無法對信息工程的操作現場、質量進行監督和管理,信息工程的進合同執行情況、軟件質量、資金使用情況、進度等很難把握和操控。從而致使了信息工程監理低能見度、高復雜度、差操作度等現象。為了解決這些監理中出現的問題,必須采用軟件工程理論。通過軟件工程,可以將高復雜度的信息工程項目進行分解,對信息工程中低“能見度”的難題設置了一套有效的解題方案。根據現有的軟件工程平臺和工具,將能為信息工程項目的監理提供一套“復雜度”低、“可見性”高的監理平臺,很大程度上滿足了現階段我國企業信息工程項目建設的需要。
3 基于軟件工程理論的信息工程監理模型
軟件工程是一門通過工程化的手段來維護和構建高質量的、實用的、有效的軟件的學科。軟件工程涉及到的內容有:設計模式、軟件標準、系統平臺、軟件開發工具、數據庫、程序設計語言等多個方面。在目前的現實生活中,軟件的應用領域非常廣泛,政府部門、航空、銀行、農業、工業都會應用到軟件,其最具典型的軟件有:游戲、數據庫、編譯器、操作系統、辦公套件、人機界面、嵌入式系統和電子郵件等等。軟件工程的應用將對社會和經濟有著極大的促進作用。多年的實踐證明,通過軟件工程的方法對信息工程進行監理能更易被監理活動過程中的三方接受,因此將軟件工程引入信息工程項目監理中,將能為信息工程項目的監理提供一套“復雜度”低、“可見性”高的監理平臺。
3.1 設立信息工程監理的目標
進行軟件工程最主要的目的是利用科學的有效的管理方法來促進軟件開發質量的提高。其主要要求是要將過去的軟件開發模式(小作坊開發模式)進行轉變,對過去的開發模式其進行細分和分解,按照各階段的特征選用不同的方法和工具,從而使復雜度較高的軟件生產進行可度量、可控的設置。再者,經過對各個階段進行嚴密的、有效的控制,從而促使一些可能出現的風險和問題在前期階段就得以解決和重視,從而促使軟件開發風險的降低和軟件質量的提升。總之,企業信息工程監理的最主要的任務就是對工程的進度、質量、投資等進行有效的、科學的控制和規劃,其最基本的方法是進行有效的合同管理、展開合理的組織協調、實現工程的動態控制、完成理想的目標規劃,使監理貫穿于整個“前期準備-工程項目規劃-工程項目設計-工程項目實施-工程項目驗收-工程項目維護”的工程項目過程。因此,信息工程監理的最終目的是通過合同管理、質量控制、進度控制、成本控制、信息管理來保證工程項目的有效、高質量、順利的進行。
3.2 構建信息工程監理的模型
根據信息工程監理的目標,信息工程項目應該分為:項目分析、項目設計、項目實施以及項目維護等四個階段[3]?;谲浖こ汤碚摰男畔⒐こ瘫O理并不是機械地復雜軟件工程的相關理論于信息工程的監理中,而是根據軟件工程理論,對搞復雜度、低能見度的工程項目進行設計和管理,并將其融入到信息工程的監理中去的一種方法。根據這中方法,從而建立基于軟件工程理論的信息工程監理模型。該模型以信息工程項目過程控制為主線,對企業信息工程的項目分析、項目設計、項目實施以及項目維護等四個階段進行全方位控制和監督,從管理上對其進行風險管理、需求管理、合同管理、信息管理,從控制上對其進行進度管理、質量管理、成本控制,并從管理角度對項目階段進行總體協調,形成企業信息化項目監理的“三控四管一協調”三維監理模型。其監理模型如圖1所示。
4 結束語
綜上所述,軟件工程是一門通過工程化的手段來維護和構建高質量的、實用的、有效的軟件的學科。通過軟件工程的方法對信息工程進行監理能更易被監理活動過程中的三方接受,因此將軟件工程引入信息工程項目監理中,將能為信息工程項目的監理提供一套“復雜度”低、“可見性”高的監理平臺。進行軟件工程最主要的目的是利用科學的有效的管理方法來促進軟件開發質量的提高。其基于軟件工程理論的信息工程監理的模型應該以信息工程項目過程控制為主線,對企業信息工程的項目分析、項目設計、項目實施以及項目維護等四個階段進行全方位控制和監督。
摘要:課程體系的研究,是通過對軟件企業軟件工程師的職業工作過程分析,建立軟件工程師的職業能力模型,然后建立針對工作領域的崗位特定能力模型、行業通用能力模型、核心能力模型。根據以上模型映射出實訓體系的四個組件:實訓教程、流行技術、職業素質、軟件素養,然后建立不同技術特點的課程開發標準。
關鍵詞:職業能力模型;核心能力;崗位特定能力
1 基于工作過程的課程開發模式的必要性
近年來在政府推動與經濟發展需求的刺激下,我國高等職業教育的規模有了很大發展;全國職業教育工作會議的召開,又為高職發展迎來了新的歷史機遇。然而,我們可以在短短幾年內建設起大量被稱為高職學校的校舍,卻無法在短期內形成真正的高職教育。受傳統教育體制的影響,教材更新速度也嚴重滯后于軟件技術發展,師資素質又得不到提高,人才培養模式缺乏創新,這種傳統教育模式無法真正適應軟件企業對軟件人才的需求。一方面是大批企業找不到急需的技能型、實用型、國際化、規范化的軟件職業技術人才;另一方面,學校培養出的軟件人才由于不能適應企業需求而找不到理想的工作。如何凸顯特色已經成為高職發展的重大課題;如何開發一套既適合高職生學習特點,又能增強其就業競爭能力的教材,是高職課程建設面臨的另一個重大課題。
要有效地解決這些問題,建立能綜合反映高職發展多種需求的課程體系,必須進一步明確高職人才培養目標。為此,不能僅僅滿足于對“高職到底培養什么類型人才”的論述,而是要從具體的崗位與知識分析入手。高職專業的定位要通過理清其所對應的工作崗位來解決,而其課程特點應該通過特有的知識框架來闡明。也就是說,高職課程與學術性大學的課程相比,其特色不應僅僅體現在理論知識少一些,技能訓練多一些,而是要緊緊圍繞基于工作過程和工作目標重構其知識、技能、素質的課程體系。
2 軟件工程師能力素質模型
2.1 軟件工程師能力素質模型
職業人的能力分為三層:崗位特定能力、行業通用能力、核心能力。每個具體的職業、工種、崗位和工作都會對應一些崗位特定能力。崗位特定能力從總量上是最多的,但是適應范圍又是最窄的,對每個行業來說,又存在著一定數量的通用能力,從數量上看,它比特定能力少得多,但他們的適應范圍要寬些,涵蓋整個行業活動領域。而整體上,存在著每個人都需要的,從事任何職業或工作都離不開的能力,這就是核心能力。核心能力往往是人們職業生涯中更重要的、最基本的能力,對人的影響和意義更深遠。我們在日常生活中看到的崗位特定能力,其實是浮出海面的冰山一角,而行業通用能力和核心能力則是海面下的冰山主體,它們是每個人在職業生涯中,甚至日常生活中必備的最重要的能力,它們具有普遍的適用性和廣泛的可遷移性,對人的終身發展和成就影響極其深遠,目前核心能力包括:交流表達、數字運算、革新創新、自我提高、與人合作、解決問題、信息處理、外語運用。
2.2 軟件工程師崗位特定能力分解
根據軟件工程從業人員的崗位不同,從java軟件工程師和.net軟件工程師兩個方面,提取了基于工作過程的能力描述。
(1)java軟件工程師
(2).net軟件工程師
2.3 行業通用能力分解
2.4 核心能力分解
3 軟件工程師課程內涵
根據軟件工程師能力模型影射出職業課程中的四個組件:實訓教程、軟件素養、職業素質、流行技術。
根據軟件工程師能力形成規律,我們分s1、s2、s3三個階段逐步實施。通過s1階段的訓練,學生具備了利用面向過程思想、面向對象思想分析設計解決問題的能力,掌握c/s軟件體系的程序開發方法。通過s2、s3階段的訓練,使學生具備利用b/s軟件體系結構進行軟件開發、設計的能力;掌握大型企業級應用問題的分析、設計方法。
3.1 實訓教程
“實訓教程”以項目為主線,分為learning案例、training案例、mentoring案例三種。項目案例均為企業真實項目,由經驗豐富的軟件工程師編寫而成,在實施環節由實訓工程師帶領學生完成。
“實訓教程”重點提高學生的職業特定能力,通過項目實訓,學生能夠將理論知識與實際項目相結合,不但提高了軟件開發技術水平,還能夠具備大型項目的開發經驗與行業知識,增強團隊合作的能力。
3.2 軟件素養
軟件素養要求對軟件行業知識的認識有足夠的深度與廣度。它是軟件工程師應具備的基本素質,是軟件行業通用能力,軟件素養組件與大學的計算機相關課程共同培養學生的這一能力。
“軟件素養”主要包括實用操作系統知識,各種軟件開發團隊模型的理解與認識,項目開發流程與規范,項目文檔編寫,軟件開發中各種工具的配置與管理,設計模式的原理與實現等。
3.3 職業素質
職業素質是勞動者對社會職業了解與適應能力的一種綜合體現,在軟件開發中包括責任心、學習能力、創新能力、溝通與合作能力、高效的團隊協作能力、積極主動的心態、扎實的工作作風、科學的工作方式及較強的解決問題能力等。
3.4 流行技術
it業正在以傳統行業七倍的速度快速發展,軟硬件技術在以摩爾定律的速度更新,即使學生在大學中學習的是最新軟件版本與技術,畢業之后,版本也已經更新,“流行技術”正是為解決此問題而提出的,目的是讓學生與it信息同步,把自我知識與最新知識做到無縫銜接。
1. 引言
軟件工程碩士專業學位的設立,是我國學位與研究生教育改革的重大舉措。經過近十年的發展,已經逐漸發展壯大成為我國規模最大、覆蓋面最廣的專業碩士學位之一。隨著數量的不斷擴大, 軟件工程碩士生的培養中出現了不少問題。如導師難以對每一個碩士生進行悉心指導和嚴格要求, 而且招生生源有著不同的理論及實踐基礎。在這種情況下,碩士學位論文質量難以提高,因此, 確保軟件工程碩士的培養質量已成為一個不容忽視的問題。需要進一步對培養質量進行審視,并采取切實措施,保障培養質量。
2. 預審制度的必要性
碩士學位論文是綜合衡量軟件工程碩士培養質量的重要標志。它體現了研究生綜合運用基礎理論、專業知識與科學方法、解決行業實際問題的能力,以及反映具有新思想,新方法或新進展的創新能力。在數量不斷擴大、培養質量面臨嚴峻挑戰的背景下,科學公正地評價軟件工程碩士學位申請者的學位論文, 是保證培養質量的一個重要環節。
2.1目前軟件工程碩士學位論文主要存在如下的問題:
論文缺乏自己的實際創新點和具體工作。部分論文停留在對以往研究內容的重組或綜述的水平,缺乏對自己實際工作的闡述和驗證,技術難度和工作量不夠。論文寫作缺乏整體性思路,很多學生論文撰寫結構欠合理,對本領域內的工程和學術動態了解不全面,缺乏實用價值和社會效益。論文格式不夠規范。主要表現在各級標題字號、錯別字、參考文獻引用格式不夠規范、圖標排版不符合要求等方面。
2.2目前學位論文評閱及答辯制度存在以下問題:
2.2.1校內外評閱制度難以切實起到監控作用:以往碩士學位論文評審實行的是校內外專家的實名評閱制度,校內、校外兩位專家評審意見中有一人沒有通過的,就不能直接進入答辯階段;如果兩位專家評審意見都是可以通過的,就可以直接進入答辯階段。評閱制度是對論文質量的一種監控方式,是對碩士生是否達到培養要求及質量的檢驗,但目前現實情況是對評審專家沒有一套嚴格、完整的遴選機制,往往評審專家都是圈內熟人, 甚至是碩士生指導老師的好友、課題合作人等,他們事先知道論文作者和導師是誰, 礙于情面,論文一般均可順利通過評審。即使覺得論文不符合評審要求的,也不會直接給出不同意進行答辯的意見結論。
2.2.2“雙盲”抽檢制度不能全覆蓋所有碩士學位論文:碩士學位論文“雙盲”抽檢制度(即評審專家不知道被評人、被評人也不知道評審專家),在多年實踐中的確是提高學位論文水平的一項重要舉措,實現并達到了非常好的效果,但由于實行的是抽檢機制,并不全部覆蓋所有的學生,抽中參加雙盲審的學生比例有限,大部分學生和導師在得知未抽中參加“雙盲”后,往往對論文的重視程度不足。
2.2.3碩士學位論文答辯流于形式:學位論文答辯成員組成盡管回避了導師,聘請了一些校外企業專家,但由于答辯專家通常是由導師聘請,會導致答辯專家們答辯時往往留面子,缺乏打破沙鍋問到底的精神, 即使有些專家堅持原則認真負責的, 但在投票時少數比率起不了作用, 結果常常是評審結論與實際水準不符, 答辯流于形式。目前碩士學位論文一旦進入答辯程序,就很少有不通過的,使得論文答辯本應該具有的權威性大有所失。
2.2.4無法確保論文修改質量:答辯專家即使指出論文中有些較大的缺陷和問題,需要進行修改,但是由于答辯已經完畢,并且決議通過答辯,在申請學位之前,學生就沒有動力也不會去花時間對要求修改的論文內容去做充分的修改和完善。答辯專家組也很難在答辯之后繼續跟蹤確保對原答辯論文進行修改質量的監控。
目前學位論文評審方式與答辯方式不足以及時發現和有力遏制以上所述的問題,而學位論文作為全面衡量軟件工程碩士生培養質量的主要指標,因在各環節上予以嚴格要求,并在制度上給予切實的保證。因此,有必要在正式答辯之前建立一套碩士學位論文質量的內部控制管理機制,以確保碩士學位論文的質量。
3. 我們的預審制度和執行效果
預審,就是在碩士學位論文成型之后論文正式評閱之前進行的一項審查過程,采用匿名方式請專家對論文進行評審、以決定是否可否進入答辯階段的一項論文評審制度。對于達不到要求的,就要求其繼續修改或者下一次再申請。設立預審制度的目的是想通過匿名評審專家組對碩士學位論文進行內容和形式上的審查,發現問題,查找缺陷,提出改進意見,并決定可否提交正式評閱并進入答辯流程,以保證論文寫作和論文答辯的較高質量。這是對以往論文答辯制度的一種修正、補充。它把對碩士學位論文的質量監控重心提前到評閱前,使得學生擁有充足的時間修改論文,并采用匿名審核,力爭做到公平公正。對保證論文質量有較大的作用。
3.1預審制度的主要內容
預審由碩士學位候選人提出書面申請, 經導師同意并簽署書面意見后,于每學期開學后第3周之前(大致在每年3月31日前、9 月30 日前)向學院軟件工程碩士教學管理中心(以下簡稱管理中心)提交完備的申請材料。申請材料包括學位論文一式2份以及已發表的符合學校有關規定要求的論文復印件, 并由管理中心形式審查相關培養環節是否全部完成。符合條件者進人預審程序。管理中心根據論文研究內容,選擇2名以上相關領域的教授或副教授組成預審小組進行匿名預審。導師不得作為本論文預審組成員。論文預審的主要內容是審查論文選題、分析框架結構、研究方法、工作量、引用資料文獻數據和寫作規范、基本結論,并進行原創性審查,看是否存在抄襲、剽竊等問題。預審組在規定時間內本著認真負責的態度嚴格把關論文質量,對預審中提出的問題要求進行書面記錄并填寫《軟件學院--工程碩士學位論文預審意見表》反饋至管理中心,由管理中心及時反饋預審結論至相關導師告知答辯申請人。碩士生根據預審小組提出的問題和建議認真修改論文。
預審結論分為以下幾種:
(1)可以參加答辯:認為論文達到了碩士學位論文水平,且不需要修改,可以直接參加答辯;
(2)修改后再審:認為論文及課題工作接近碩士學位水平。但論文需要修改,并給出具體修改意見。學生需根據預審意見認真進行修改,修改后的論文經導師審查確認后,再提交管理中心提請原預審專家組審核。符合要求的,可正常參加答辯,否則就不能參加本次答辯,需整改后下一學期再重新申請。逾期未提交修改論文的,視為自動放棄本次答辯申請;
(3)不通過:認為未達到工程碩士學位論文要求,不能參加本次答辯。導師應指導答辯申請人完善課題工作,修改論文,下一學期再申請參加論文預審和答辯。
(4)涉嫌抄襲:發現論文涉嫌抄襲、并經查實的,則一律退回,并至少一年內不得再申請答辯。如果以后再次發現抄襲,則直接取消答辯資格和申請學位的資格。
3.2預審制度實施效果
預審制度實施以來,迄今已經完成了對1367位碩士學位論文申請者的審查, 其中通過預審的629人、推遲答辯的167人、需要修改的544人、抄襲27人,共授予學位1143人。從總體上看,預審制度真正起到了對論文質量的監控、提高作用。由于論文預審不是最終性的,且匿名進行評審,排除了論文本身之外的因素,預審專家組本著對學生負責任、幫助提高論文質量的態度對碩士學位論文提出問題和修改建議,有助于碩士生多方位思考并對論文進行有效改進,起到了協助其導師把住質量關的作用。論文預審不僅對當事人有很大的幫助, 并且對其他準備提交論文的學生也具有很大的促進作用,導師們也更加重視論文的質量和指導。?
4. 預審制度實施的總結和思考
預審制度最主要的優勢是對碩士學位申請人的論文質量進行事前監控,在正式答辯前,學位申請人能夠在導師指導下根據預審專家提出的修改意見對論文進行修改和完善。預審未通過的論文不許提交答辯,這在制度上將那些質量差的論文隔離在外,有效地把好了碩士生出口的質量。
在看到預審制度效果的同時, 我們也清醒地認識到要最大限度地發揮預審的功能, 必須同時嚴格碩士生的開題工作,只有抓牢抓實開題工作,才能在論文工作的源頭保障論文的質量;同時引起導師及其論文作者對論文質量的重視,導師是保障論文質量的關鍵因素,只有導師和論文作者共同重視,才能保障培養的質量。為了更好的完善論文預審制度,我們覺得今后還需要在以下方面進行進一步的改進:
(1)落實論文預審的后續檢查機制,預審結束后, 學位申請人應該嚴格按照專家提出的修改意見認真仔細地修改論文。在評閱和正式答辯階段, 評閱專家及答辯專家除了對論文的主要工作給予評價外, 也要評判碩士生的學位論文是否按預審意見進行了修改和完善。如果后續的檢查機制落實不徹底, 預審專家所提的修改意見得不到嚴格貫徹, 預審也難免會流于形式。
(2)預審過程中,為了避免論文預審的偏頗,盡量做到同一位導師所指導的學生論文分送到不同的預審組,以盡量提高論文預審的公正性和合理性。
(3)進一步細化預審復議環節的工作,對導師、學生提出的論文預審復議要求交由學科專業委員會復議,并指導導師、學生對論文做后續的修改。
(4)增強預審獎懲機制管理,促進導師持續關注論文質量,對預審結果優秀的老師予以適當的獎勵,反之則需對導師增強后續再培訓,鼓勵導師改進研究生培養質量。
預審制度在我院已取得一定效果,我們將繼續總結經驗,不斷探索和完善預審制度,切實提高我院的研究生培養質量。
摘要:本文就案例教學法在軟件工程中的應用作了初步的探討,同時,簡要介紹我們在嘗試軟件工程案例教學中的一些體會。
關鍵詞:軟件工程;案例教學法;分析設計
1 引言
隨著計算機應用日益普及和深化,正在運行使用著的計算機軟件的數量以驚人的速度急劇膨脹,而且現代軟件的規模往往十分龐大,所以指導計算機軟件開發和維護的工程學科—軟件工程,日益顯示其重要地位。然而學習者一般不好理解軟件工程的實踐性,不能將所學的知識真正應用到軟件開發過程中去。如何將理論與實際聯系起來呢?我們認為在軟件工程中采用案例教學發將會彌補這一缺憾。
案例教學法以對案例的分析解決為主線,通過對案例中的問題進行分析,激發學生的求知欲,調動學生的積極性,使學生自覺主動的學習案例,掌握原理和方法,實行科學的教育思想觀念的一種教學方式。它是一種互動式的教學方法,可以實現啟發式教學,能夠極大的促進學生的學習興趣,實現真正的教學相長。它更是實現理論聯系實際的現實可實施的途徑。案例教學法在軟件工程教學中的應用將在更大程度上激發學生學習的學習興趣和參與的積極性。同時,利于學生掌握理論知識,并運用知識解決軟件開發中的實際問題,最終提高教學質量,達到學校教育培養的目標。
有鑒于此,本文試對案例教學法在軟件工程中的應用作了初步探討,以期對教育同行和廣大學習者有所啟發和借鑒。
2 案例教學法的含義
案例教學法(case methods of teaching)可簡單地界定為一種運用案例進行教學的一種方法,它是美國當今教育行業中非常盛行而有效的一種方法,在我國正在慢慢推廣開來。1910年,美國哈佛商學院最先使用案例教學,開創了案例教學的先河。案例教學法于20世紀80年代初傳入我國,它有利于培養學生分析問題、解決問題的能力,提高教學效果。
案例教學是在學生掌握了有關基本知識和分析技術的基礎上,在教師的精心策劃和指導下,根據教學目的和教學要求,運用典型案例,將學生帶入特定的現場進行案例分析,通過學生的獨立思考和集體協作,進一步提高識別,分析和解決某一具體問題的能力,同時培養學生的溝通能力和協作精神的教學方式。通過案例分析,學生可以獲得蘊涵其中的那些已形成的教育原理、教學方法等知識,同時可以提高和發展學生的創造能力以及解決實際問題能力。更重要的是,通過案例教學獲得的知識是內化了的知識,是“做中學”獲得自己理解了的能駕馭的知識,不再像傳統教學下獲得的抽象的、過度概括化的生硬知識,它能立即被用到類似教學實踐情境中去解決處理類似的疑難教學問題。所以從美國教育家舒爾1986年在美國教育研究協會(aera)年會重要演講中發出要發展關于教學的案例知識的呼吁,時至今日,在眾多國家的教育研究領域中都能發現案例教學法的應用。
3 軟件工程案例的選擇
概括而言,案例是含有問題或疑難情境在內的真實發生的典型性事件。沒有案例,案例教學無從談起,沒有好的案例,便沒有有效的案例教學,所以案例的選擇在案例教學中至關重要。一個高質量的案例應該具備以下幾個特點。
(1)目的性。案例教學的目的是為了讓學生理論聯系實際,通過案例讓學生掌握基本的原理和概念,提高發現問題,解決實際問題的能力。一個好的案例應該使學生在討論中加深對教材中某一重點或難點知識的理解和把握,能利用課堂學習的理論知識來分析和解決案例中所涉及的問題。所以案例的選擇一定要圍繞教學目的和教學要求來。如果脫離這兩個中心,即使案例再生動,其教學效果也大打折扣。
(2)真實性。案例一定是現實中發生的真實事件,是常見又復雜的問題,有助于學生實踐能力的提高。
(3)啟發性。一個好的案例需要蘊涵一定的問題,能啟發學生思考,發現多種解決的途徑。問題越誘人深入,越能夠給學生留下較多的思維空間,教學效果越好。
(4)生動性。案例必須生動活潑,引人入勝,這樣才能引起學生的興趣,以便展開深入的思考。
軟件工程是采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。它強調使用生存周期方法學和各種結構分析及結構設計技術,所以軟件工程案例即是選擇一些典型的軟件開發系統,介紹其開發和維護的過程。
我們根據講解軟件工程課的具體體會和開發軟件的實際經驗,撰寫了五個案例,開發了《軟件工程案例分析》網絡課件,詳細介紹五個軟件系統的開發過程,互動的方式講述了用軟件工程的方法是如何進行分析和設計的,同時在系統開發的每個過程中提出大量的問題供學生思考。案例選擇了房產管理系統、財務管理系統、機票預定系統、計算機儲蓄系統四個應用軟件系統,同時為了提高學習者理解開發軟件的難度,特別介紹l-simple語言編譯系統。采用傳統的生命周期方法學,從問題定義、可行性研究、需求分析、總體設計到詳細設計做了比較詳細的研究。系統中五個案例涉及到當前人們日常生活中關注的幾個領域:房產管理、財務管理、計算機儲蓄、機票預定,還有計算機的語言編譯系統。案例既具有典型性,同時又具有真實性。我們選擇四個應用軟件和一個系統軟件,一方面考慮到目前軟件市場涉及應用范圍的廣泛性,另一方面考慮到軟件工程學習者中大部分為計算機專業,對于系統軟件也有一定愛好,對于將來開發系統軟件作一個鋪墊。
4 軟件工程案例教學的主要環節
案例教學的需要具備三個主要環節:
閱讀案例,個人分析——分組討論,集體交流——總結歸納,消化提升
我們嘗試的軟件工程案例教學中同樣采用了這三個階段:
(1)閱讀案例,個人分析
學生首先對具體案例進行必要的基礎知識的了解,認真閱讀案例,并且要有個人的研究與分析,用軟件工程的傳統途徑—生命周期方法學作為理論指導,熟悉軟件開發過程各階段的基本任務。
其次,學生需要盡快進入案例情境,了解、掌握案例中揭示的有關事實、情況,自居案例中的教師角色,設身處地地分析思考案例中教師的行為及對策的合理性與不合理性。在案例的分析過程中,要注意尋找其中的因果關系,只有弄清問題產生的原因,才可能找到問題的合理解決手段。注意區分基本性問題和現時性問題?;拘詥栴}即抽象或一般的問題,常與事實背后的概念、原理、規則等有關,需要通過對案例中所包括的信息進行解釋、分析、演繹、推理和抽象以得到概括化的結論?,F時性問題即案例中教師所面對的特殊決定、疑難問題等要求在一定的時間范圍內得到解決的那些問題,需將自己已有的知識或過去形成的經驗與案例展示的背景材料、內外部因素等整合起來進行綜合評判來提出多種經得起別人反駁的見解、對策以及方案。
(2)分組討論,集體交流
分組討論是案例教學中非常重要的環節,本質上是一種概念或想法的交流。圍繞案例的重點,難點,疑點,進行討論,辯論和爭論。每個學生可以自由的抒發己見,相互啟迪,互相借鑒,重點是想法的交流。要求每個學生簡要介紹自己對軟件開發所做的分析設計,并提出自己對該軟件開發流程的看法,供大家討論與切磋,可以按照案例中所提出的問題一個一個討論。在教師的引導下,讓學生進行課堂發言,進行全體學生的交流。本階段要討論主要解決兩個問題:1、小組討論沒有達成共識的問題;2、按照教學目標,有意引導學生掌握軟件工程的生命周期法各階段所做的具體工作以及進行相關工作的必要性。
為了使分組討論有效地開展,教師要作好充分的課前準備。除了熟知案例陳述的事實、觀點外,還要諳知案例反映或蘊涵的原理、規則等知識,以便引導學生概括出來。要認真學習研究案例后給出的教學指南,具體擬定出課堂教學計劃,這要求教師認真思考回答以下問題:希望課堂上發生些什么?如何引導這些情況的發生?討論如何開展?時間如何安排?自己扮演什么角色?是先得結論再分析,還是相反?并對課堂討論中可能出現的情況作出預測。教師還要依據課程目標、案例目標及教學計劃的具體安排重點分析以下方面的內容:案例中反映的那些重要論題、案例中易得出兩可結論的那些材料、案例中反映的情況發生的根源、案例中人物的行為、案例中所反映的而學生可能設想不到的情況等。在討論掌握上,教師要力保討論沿預期的軌道進行,把討論引導到問題的解決上去,并引導出與論題相關的理論知識,力爭班上每個學生都至少有一次發言的機會,切實做到有效參與。
(3)總結歸納,消化提升
總結歸納是軟件工程案例教學的最后階段,要求學生要對每個案例寫出學習報告。該報告中包含學生在閱讀案例中所得到的具體收獲;通過分析與設計軟件,提出自己所解決的實際問題;對理論上軟件工程概念和案例中的實際是否一一相對應;以及對軟件工程仍然存在的困惑。通過反思進一步加深對案例的認識,真正作到理論和實踐的相結合。
案例教學中,師生都要注意角色轉換,如果學生仍然熱衷于將自己置身于教學過程之外,只做一名旁觀者,案例教學也就失去了它的價值。學生只有真正地深入案例、體驗角色,才會有案例情境的“再現”,案例教學的價值才能被體現。而教師在教學過程中也要不斷變換自己的角色,可充當監督員,激勵啟發學生,監督案例分析、討論情況;可充當示范員,向學生演示、講解、分析案例中的事實、圖表、材料等;可充當主人翁,制定下一步的工作計劃并在實施中起主導作用;可作仲裁,解決各種爭端;可充當交警,使討論回到預定的軌道上來;等等。
5 結束語
傳統的“黑板教育學”越來越受到冷落,案例教學已經提到教育改革的重要日程上來。華東師范法學教育系鄭金洲曾指出,案例教學并不是單純的一種教學方法,它實際上是以教學內容的變革為前提條件的,正是有了形形色色的案例,才使案例教學成為可能;案例教學也并不是一種單純的教授法,它實際上也是以學生行為的轉變為前提條件的;如果學生仍然熱衷于自己先前的角色,把自己置身于教學過程之外,只是一個旁觀者,案例教學也就失去意義。
筆者從事軟件工程的教學工作,在軟件工程中進行案例教學法的嘗試,并且在實踐中得到了一定的效果。然而,在軟件工程案例教學中仍有很多問題需要進一步研究探討,比如在案例中如何體現軟件的測試階段,它需要具體的環境來實現;如何在案例中能夠讓學生更深入理解軟件的維護過程等等問題,都是有待于我們進一步完善,使案例教學在軟件工程中得到進一步的推廣。
計算機組成原理在我院的軟件工程系被定為專業基礎課,在學科體系中起著基礎性和準備指導性的作用。目標是通過該課程的學習,使學生掌握計算機各功能部件及整機運行的工作原理和方法,并為學生建立起整機的概念。為后期的系統開發的理論、實踐的學習奠定基礎。但該門課程具有概念多、知識點多、內容抽象等特點,加上學生思想上有“偏軟”現象,使該課程的組織教學有一定難度。本文將對計算機組成原理的教學現狀、教學方法、教學內容、及通過實踐等輔助教學手段來改進教學等方面進行闡述,以期對一般本科院校的計算機組成原理教學有一定借鑒促進作用。
一、計算機組成原理的課程的教學現狀
(一)課程本身的特點決定這門課程教學難度大
1、基礎概念多的特點
計算機組成原理這門課程由于內容較多,所涉及的基礎概念也較多。在cpu模塊有微程序、微指令及流水線等系統類概念,其中alu部分有原碼、補碼等與編碼相關的概念;在存儲器部分,與存儲器單元相關的有ram、sram、dram、rom及各種rom設備,與存儲系統相關的有cache存儲器、虛擬存儲器等概念;外設部分有中斷等信息的各種傳送方法。對整個計算機系統,有計算機的各種性能指標。對各個概念,靠單純記憶的方法很難掌握,必須放在系統中學習。
2、理論性強的特點
計算機組成原理這門課程首先要考慮其原理性,現在仍然采用馮.諾依曼式計算機模型作為基本模型,但也要考慮現代計算機的發展,以融入實際的需要。如何對內容進行合理的安排、銜接,對任課教師來說,是一不小的挑戰。
3、內容抽象的特點
要讓學生明白計算機的工作原理、方法和實現,需弄清數據和信號在計算機各部件件間的流動情況,對學生來說,這看不見也摸不著,如何將信息流動的復雜情況形象、生動地向學生展示、講解,教師對此需要作出相當的努力。
(二)學生對該們課程的認識誤區
大部分的學生認為,我們學的專業是軟件工程,專業是“偏軟”的,而計算機組成原理這門課程是“偏硬”的,對其轉為實際能力表示懷疑。由于對這門課程在學科中的作用認識不明確,在學生中就有一種印象,學習這門課程主要目的是修學分的需要,另外還有考研的需要,但考研的學生比例較小,再加上這門課程本身的學習難度,因此認真學習且能學好這門課程的人數就不多了。
二、對組成原理教學的幾點建議
(一)對學生對該門課程的認識進行相應正確引導
由于是一門基礎理論課,加上本身的教學內容特點,可能內容較為枯燥,因此學生可能會因為課程內容本身而不感興趣。因此我們要在思想上要對學生加以引導,使學生認識到,學習這門課程不僅對計算機本身的運轉有更深刻的認識,更對與硬件相關的嵌入式系統設計,軟件的設計實現有基礎指導作用。并為學生在計算機領域的進一步研究和發展奠定基礎。因此,學生不能因為這門課程“偏硬”,而自己的專業和就業方向“偏軟”就否定這門課程的重要性。
(二)根據課程設置需要對教學學時進行相應調整
根據不同的專業,學生的不同層次,及大部分學生的就業方向對該課時設置不同的教學學時。報告[3]中指出,對于多數調查對象為畢業生的調查結果,多數人認為這門課開設為64、48或32學時。而48學時的人稍多些。這與本人想法基本一致,對于非計算機專業,作為導論型的,32學時足矣;對于軟件專業,其目的主要是通過掌握其基本原理,能更好的為軟件系統的設計服務,開設48學時,其中8學時實驗較合理。而對于偏硬件的計算機專業,可以根據需要,開設56或64學時。
(三)根據專業要求及課程設置對教學內容作出調整
計算機組成原理在學科中的地位被定為專業基礎課,在學科中具有承上啟下的作用,希望通過本門課程的學習,使學生對計算機硬件的組成、各部件及各部件之間運轉情況進行了解。對于軟件專業的學生來說,為硬件相關的嵌入式系統設計及其他軟件的設計奠定基礎。計算機組成原理從內容上主要分為三部分:cpu、存儲器、外設。但由于學時的限制及課程的安排(本專業開設了微機原理課,外設是其講授重點),重點講授cpu和存儲器兩部分。存儲器內容分為主存儲器和存儲體系兩部分內容。前者講述存儲元器件的基本原理,而后者則是cache、主存和輔存之間的區別與聯系,如果開設了計算機體系結構這么課程,這存儲體系的內容可簡略介紹,具體內容由計算機體系結構講解。cpu部分與存儲器一樣,在詳細介紹完其核心部件alu后,重點即是中央處理器章節,即指令的運行,而指令的運行需要訪問存儲器,這就將cpu與存儲體系聯系起來了。故這兩部分又是有聯系的。由此有關硬件的內容就脈絡清晰、分工明確了。
(四)對實驗內容進行合理的學時分配
實驗課對于一門課程來說,主要目的是加深對知識點認識,使抽象的理論變得形象、具體。因此,對本身理論性強,內容抽象的計算機組成原理課程,實驗課就顯得尤為重要。我們采用的是西安唐都科教儀器公司生產的實驗箱作為實驗設備。與其相配套的實驗有9個,其中主要包括與cpu中的與alu相關的3個實驗、靜態存儲器存取實驗、微程序控制實驗及4個模型機的設計類實驗。根據實驗學時的設置,只有8個學時的實驗課。8個學時全部完成這些實驗有一定難度,因此,可將這些試驗進行合理的學時分配,如第1、2個學時完成第一、二個實驗,因為剛開始做硬件實驗不熟悉,但第二個運算器進位實驗教簡單,可順便完成;有了前面的基礎,完成第三個運算器移位控制實驗就簡單多了,因此和第四個稍麻煩的靜態存儲器存取試驗合并在第3、4學時完成;第5個實驗內容較復雜,可單獨安排2個學時完成;這樣就留出了2學時來研究后面的模型及設計與實現的實驗了。
(五)以實踐為手段帶動學生的學習積極性
為了提高學生的學習積極性,加深對知識的掌握,實踐就顯得尤為重要。對軟件專業的學生來說,利用軟件對所學知識進行模擬不失為一種好的辦法。對于計算機組成原理這門課程,實驗內容較為抽象,不易被理解,因此,采用“硬件軟化”的方法,對課程的實驗內容等進行模擬,既可加深對知識的掌握,又可提高大家的軟件設計、編程能力。本系為了提高大家參與的積極性,采用了學生科技立項的辦法,系里拿出一部分資金,將“計算機組成原理虛擬實驗系統的設計與實現”作為一學生科技項目,鼓勵學生組隊參加,和其他項目一起參加評比,并進行獎勵的辦法,在學生中得到了良好的響應。學生做出的項目教師可拿來作為課堂教學用,并可鼓勵學生在此基礎上進行改進,進一步完善。以后甚至可以將系統分塊,讓學生分組做,并作為課后作業的一部分,計入學生平時成績。以此提高學生的學習興趣和動力。
三、結語
計算機組成原理這門課程由于其本身知識點多、內容相對抽象、知識“偏硬”等特點,對軟件專業的學生來說,普遍學習的積極性不高,對知識的掌握不能達到預期的目的。本文從對學生的引導、課時的設置、教學內容的調整等方面進行了討論,特別提出通過“硬化軟件”的方法,提高大家學習的積極性。相信經過多方面的努力,學生會喜歡并學好這門課程,該課程也將很好地發揮其在學科體系中的作用。