陸悠 奚雪峰 華澤
[摘 要]在高校計算機科學(xué)與工程專業(yè)的教學(xué)實踐中,軟件工程作為專業(yè)的核心和基礎(chǔ)課程,如何將課本知識盡可能貼近實踐地傳授給學(xué)生,并合理地考核學(xué)生掌握程度是關(guān)鍵。在計算機軟件工程的實踐過程中,引入市場機制,構(gòu)建貼近實際的模擬開發(fā)環(huán)境,以此為基礎(chǔ)來設(shè)計、組織教學(xué)內(nèi)容和成績評定,突出知識的實踐性,學(xué)習(xí)的主動性,從而提高高校學(xué)生對軟件工程課程的學(xué)習(xí)效果。
[關(guān)鍵詞]迭代開發(fā)計算機實踐課程 軟件工程
[中圖分類號] G642;TP311.5 [文獻標(biāo)識碼] A [文章編號] 2095-3437(2014)15-0080-03
一、前言
在高校計算機科學(xué)與工程專業(yè)的教學(xué)實踐中,軟件工程作為專業(yè)的核心和基礎(chǔ)課程,如何將課本知識盡可能貼近實踐地傳授給學(xué)生,并合理地考核學(xué)生掌握程度是關(guān)鍵。由于缺乏實踐性,以講課為主的教學(xué)方式對學(xué)生缺乏吸引力;另一方面,盡管學(xué)生完成課程之后能通過書面考試,但當(dāng)其進行畢業(yè)設(shè)計、企業(yè)實習(xí)乃至進行實際項目開發(fā)時,仍不能合理應(yīng)用所學(xué)知識,不少考試成績出色的學(xué)生在實際項目中并沒有表現(xiàn)出相應(yīng)的實踐能力。
分析這些現(xiàn)象,可以找出一個共同的原因,即軟件工程課程教學(xué)方式與實際環(huán)境脫離,與實際的軟件項目環(huán)境聯(lián)系不深,對學(xué)生的吸引力不大,導(dǎo)致教學(xué)效果不理想。
軟件工程本身是一門實踐性、工程性很強的課程,尤其是隨著軟件工業(yè)的不斷發(fā)展,軟件開發(fā)已經(jīng)普遍團隊化、規(guī)范化和流程化,如何將教學(xué)與軟件工業(yè)的需求銜接起來,是擺在高校教師面前的一項嚴(yán)峻課題。本文提出將市場機制環(huán)境引入軟件工程實踐教學(xué)過程中的方法,即以模擬實際商業(yè)環(huán)境中客戶、軟件開發(fā)公司管理者以及軟件開發(fā)者互動為導(dǎo)向,將軟件工程的教學(xué)目標(biāo)融合進具體實踐環(huán)境中去,從而使學(xué)生直接得到近似于實際環(huán)境的鍛煉,充分掌握軟件工程的基本概念、理論與方法。此舉不但促進學(xué)生在實踐中應(yīng)用和掌握軟件工程的開發(fā)規(guī)范和流程以及團隊合作方法等,而且可以促使用戶理解軟件工業(yè)所處的商業(yè)背景和實際環(huán)境,從而有效地提高教學(xué)效果。學(xué)生在軟件工程的課程學(xué)習(xí)基本完成之后,以分別扮演客戶、軟件公司管理者與開發(fā)人員等不同角色,在教師協(xié)調(diào)之下,模擬開發(fā)項目的商業(yè)流程,完成若干工程目標(biāo),最終通過衡量每個角色的收入來考核學(xué)生的表現(xiàn)。在實踐過程中,學(xué)生在教師指導(dǎo)與裁決的基礎(chǔ)上,根據(jù)所扮演角色的需求,靈活運用所學(xué)的知識點,盡可能地將自身利益最大化。當(dāng)整個課程結(jié)束的時候,學(xué)生不僅能夠在實踐動手能力、創(chuàng)新思維、專業(yè)知識、科研能力和團隊合作精神等方面得到訓(xùn)練,而且也能對軟件工業(yè)環(huán)境有更充分的了解。另外,這樣的方式對學(xué)生而言具有很大的趣味性、實用性以及競爭性,能極大地提高學(xué)生的學(xué)習(xí)主動性。
二、引入迭代開發(fā)驅(qū)動模擬項目的教學(xué)目的
將市場機制引入軟件工程實踐過程,通過模擬實際軟件工業(yè)的開發(fā)環(huán)境,將知識點融合于整個開發(fā)過程,強化學(xué)生的實踐行為,通過這樣的教學(xué)方式,能夠有效地實現(xiàn)以下目標(biāo)。
(一)符合軟件行業(yè)對高校學(xué)生的需求
市場機制(market mechanism),即資源在市場上通過自由競爭與自由交換來實現(xiàn)配置的機制,也是價值規(guī)律的實現(xiàn)形式。具體來說,它是指市場機制體內(nèi)的供求、價格、競爭、風(fēng)險等要素之間互相聯(lián)系及作用機理,主要包括供求機制、價格機制、競爭機制和風(fēng)險機制。當(dāng)前軟件工業(yè)正是建立在高度市場化的競爭環(huán)境中,其基本概念、方法等都體現(xiàn)了市場機制下各個經(jīng)濟行為主體之間如何為自身的利益而相互展開競爭,實現(xiàn)利益最大化的。然而在目前的高校教育課程中,軟件工程類課程缺乏對實際情況的體現(xiàn),學(xué)生對基本概念、理論難有實踐的理解和鍛煉,將基于市場機制的模擬實踐環(huán)境引入教學(xué)環(huán)節(jié)之中,能夠有效地彌補這一不足。
(二)強化學(xué)生的實踐能力
由中國計算機學(xué)會教育專業(yè)委員會完成的《中國高等學(xué)校計算機科學(xué)與技術(shù)專業(yè)(應(yīng)用型)學(xué)科教程(2009)》明確指出:“計算機科學(xué)與技術(shù)學(xué)科是實踐性極強的學(xué)科,必須培養(yǎng)學(xué)生具有很強的實際動手能力?!眰鹘y(tǒng)的教學(xué)無法使學(xué)生了解如何在實踐中應(yīng)用軟件工程的理論知識。因此,在教學(xué)中引入市場機制的模擬環(huán)境能夠有效地提高學(xué)生的實踐能力。
(三)提高學(xué)生的自學(xué)能力
“講三、練二、考一”是當(dāng)前計算機學(xué)科課程教學(xué)的主要特征,這種“填鴨式”的教學(xué)使得學(xué)生幾乎沒有對軟件工程進行自學(xué)和深入研究的動力。要解決這個矛盾,就要讓學(xué)生主動產(chǎn)生對課堂傳授的理論的求知欲和好奇心,而實踐則是培養(yǎng)這種求知欲、好奇心的最佳方法。
(四)鍛煉學(xué)生的問題求解能力
傳統(tǒng)軟件工程教學(xué)重點往往集中在軟件工程領(lǐng)域本身,而軟件開發(fā)則是一個綜合性過程,通過引入市場機制的模擬實際項目環(huán)境,能夠不斷提出涉及各個方面的實際的問題目標(biāo),能夠有效驅(qū)動學(xué)生靈活運用所學(xué)的各方面課程的知識,進而培養(yǎng)學(xué)生解決實際問題的能力。
三、模擬項目的教學(xué)組織方法
要達到上述的教學(xué)效果,以“軟件工程實踐——信息管理類項目實踐”為例,筆者在教學(xué)組織方面進行了以下的嘗試。
(一)基于市場機制的項目環(huán)境構(gòu)建
筆者基于市場機制的項目開發(fā)環(huán)境設(shè)計和組織了教學(xué)內(nèi)容,主要安排包括以下幾個方面。
1.場景設(shè)計
筆者將整個項目的場景設(shè)計為一小型市場環(huán)境,主要角色包括消費者、項目經(jīng)理和軟件開發(fā)者三種,這三種角色具有各自的目的和利益,并試圖通過市場來達到目的并實現(xiàn)利益最大化,角色安排如表1所示。
表1 項目場景設(shè)計
■
從表1可以看出,三種角色是對當(dāng)前軟件工業(yè)市場環(huán)境的簡單模擬,其中消費者、項目經(jīng)理和開發(fā)者的利益訴求能夠較好地進行量化。在實踐過程中,該場景能夠有效吸引學(xué)生的興趣,促使學(xué)生思考和應(yīng)用課程所學(xué)的知識點,并具備對學(xué)生實踐成績的合理量化方法。
2.教學(xué)組織方法
在實踐過程的每個階段啟動前,教師根據(jù)場景安排準(zhǔn)備較為具體的角色目標(biāo)讓學(xué)生討論。不同角色的學(xué)生團隊需要進行現(xiàn)場討論,分析本團隊要采取的策略,提出該階段內(nèi)的具體實踐路線圖,在完成實踐之后,還要對該階段的行為進行整理和總結(jié),教師則需對可能存在的爭議進行裁決。實踐結(jié)束后,各個角色、開發(fā)團隊還需要在課堂上陳述自己的工作。
3.教學(xué)內(nèi)容安排
(1)角色分配階段,確定消費者、項目經(jīng)理與開發(fā)者的角色,根據(jù)學(xué)生人數(shù),大致比例為1∶1∶8。消費者從項目經(jīng)理處預(yù)定軟件,項目經(jīng)理雇傭軟件開發(fā)者開發(fā)軟件,流通貨幣為虛擬貨幣¥,資金由教師操作的銀行支持。課程初期,銀行為每個消費者和項目團隊設(shè)立一個賬戶,消費者有¥30000 購買資金,項目經(jīng)理則有¥2000啟動資金。游戲目標(biāo)是消費者盡可能以較低價格購買較高質(zhì)量的軟件,實現(xiàn)采購成本最小化;項目經(jīng)理則盡可能多銷售出本團隊的應(yīng)用程序,從而使團隊利潤最大化。在購買軟件和銷售軟件時,買家和賣家都必須在價格上達成一致,包括軟件工程所涉及的維護時間、技術(shù)支持、軟件擔(dān)保以及可能的延期交付懲罰等各種費用。
(2)項目確定階段,消費者通過與教師討論確定應(yīng)用程序需求,對功能要求進行量化,相當(dāng)于用戶需求的提出,隨后教師根據(jù)難度,給出功能指導(dǎo)價格。在此基礎(chǔ)上,消費者向項目經(jīng)理進行招標(biāo)。為避免因難度不匹配造成投標(biāo)困難,教師一方面需控制難度,另一方面可重復(fù)進行三輪投標(biāo),每輪投標(biāo)后公布結(jié)果,然后重新投標(biāo),最后取平均價格決定結(jié)果。投標(biāo)結(jié)束后消費者與項目經(jīng)理簽訂合同。雙方必須在文字上達成一致意見。以下是合同內(nèi)容的若干建議:價格、交付清單(例如:應(yīng)該提交的文檔)、每一個交付項的交付日期、轉(zhuǎn)讓機制(軟件如何交付?)、達成一致的售后工作量、技術(shù)支持成本、不能按時交付需交的違約金、對于軟件最低質(zhì)量程度的保證,等等。最后項目經(jīng)理根據(jù)投標(biāo)情況在軟件開發(fā)者中招募不同角色的開發(fā)人員并與其約定酬勞,為避免分配不均勻,招募過程也可重復(fù)進行三輪,每輪結(jié)束時公示各角色的平均薪酬。
(3)軟件開發(fā)階段,該階段中項目經(jīng)理負(fù)責(zé)管理,根據(jù)開發(fā)人員的表現(xiàn)情況發(fā)放酬金,消費者負(fù)責(zé)監(jiān)督,根據(jù)項目進展情況,按照投標(biāo)約定給付資金。開發(fā)階段可安排四次講評,以團隊成果的形式在全班環(huán)境下進行討論。在整個開發(fā)過程中還需要提交每周工作報告,幫助教師了解團隊的進度以及存在的問題,并作為裁決基礎(chǔ)。周報中應(yīng)該記錄團隊本周的工作情況,具體要包含以下一些內(nèi)容:識別的風(fēng)險,列出本周識別出的所有新風(fēng)險、技術(shù)問題;列出所出現(xiàn)的技術(shù)問題(如設(shè)計問題等)細節(jié)、解決方法等;列出本周做出的所有決策,包括買賣策略、測試策略、管理策略等;列出完成的工作,到達的里程碑等。該階段中較易出現(xiàn)各種糾紛,教師應(yīng)該承擔(dān)裁決的任務(wù),合理解決。
(二)學(xué)生的管理
對學(xué)生實踐行為的管理以及加強學(xué)生對自身角色的了解是項目實踐成功的前提,在不同階段應(yīng)注意不同的工作細節(jié)。
在第一階段,不同角色理解難度有差別,教師應(yīng)做好解釋和培訓(xùn)工作,另外也可以采用兩個班互相分配方式。
在第二階段,教師應(yīng)引導(dǎo)學(xué)生盡可能理性地進行思考,從真正的消費者或項目經(jīng)理的角度考慮問題,并注意約定合同的合理性、可操作性。
在第三階段,教師一方面要做好糾紛的裁決,另一方面則要及時進行總結(jié)和引導(dǎo)討論,盡可能及時地將開發(fā)過程中體現(xiàn)軟件工程思想、理論的實例展示給學(xué)生。
(三)成績評定
在基于市場機制的模擬實際項目環(huán)境下,成績量化根據(jù)角色的不同而有不同的側(cè)重點。對消費者而言,其成績由所收獲的應(yīng)用程序質(zhì)量和剩余資金之和構(gòu)成;項目經(jīng)理的成績則由其利潤來計算;而開發(fā)者的成績則由其收入來決定。顯然,要得到較高的成績,依賴消費者、項目經(jīng)理和開發(fā)者的通力合作才可以,因此,學(xué)生只有在平時實踐中盡可能地互相協(xié)作,才能獲得良好的成績。這樣不僅可以使日常教學(xué)獲得良好的效果,而且也減輕了學(xué)生考試的壓力。
四、采用模擬項目后的教學(xué)效果
下面是部分學(xué)生在課后交流時談到的收獲與體會:
“在以前的軟件工程課程中,我們大多都是對書本知識進行死記硬背。這次不一樣了,我們遇到了許多過去從沒接觸到的實際問題。課程結(jié)束以后,我們體會到理論結(jié)合實際、培養(yǎng)動手能力的重要意義?!?/p>
“一個團隊的成功絕不是隊員個人能力累積的結(jié)果,我們的成功得益于我們非常好的團隊合作關(guān)系。合作當(dāng)中比較關(guān)鍵的因素包括責(zé)任心、互補的性格、尊重對方的意見、不互相埋怨、相互鼓勵信任等,看起來很普通的人組成的團隊,可以釋放出超出累計和的效果,就是所謂的1+1>2?!?/p>
總之,通過引入市場機制的軟件工程實踐項目的訓(xùn)練,能夠強化學(xué)生對理論知識的理解,培養(yǎng)了學(xué)生嚴(yán)謹(jǐn)踏實、堅韌不拔的科學(xué)探索精神。
五、結(jié)論
通過兩個學(xué)期的實踐,引入市場機制的軟件工程實踐取得了良好的教學(xué)效果。在該課程中,學(xué)生們經(jīng)過實踐的3個不同環(huán)節(jié),完成了約6000-10000行左右的Java、C#程序。雖然距離實際程序員仍有差距,但我們有理由相信,通過一系列類似的實踐環(huán)節(jié)訓(xùn)練,一個高校學(xué)生完全有希望達到成為一個有基礎(chǔ)的程序員的目標(biāo)。
[ 參 考 文 獻 ]
[1] 陸悠.一種項目迭代開發(fā)驅(qū)動的計算機實踐類課程教學(xué)方法[J].大學(xué)教育,2013(8).
[2] 彭秀芳.高等職業(yè)教育與國際教育水平接軌若干問題的思考與探索[J].教育理論與實踐,2005(12).
[3] 楊小秋.教育實踐主體的活動范式[J].教育理論與實踐,2007(4).
[4] 劉超,林虹.談高職教育的課程開發(fā)與建設(shè)[J].北京教育,2006(6).
[5] 程忠國.深化高職教育課程模式改革的實踐思考[J].教育與職業(yè),2006(21).
[責(zé)任編輯:覃侶冰]