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