欒好利 楊 政
摘要:本文研究了軟件工程課程的教學特點和教學中存在的問題,提出了以軟件工程知識體系為基礎的課程體系的構建,并針對目前各院校的實踐類教學薄弱環(huán)節(jié),提出一套解決軟件工程實踐教學的項目實戰(zhàn)方案。
關鍵詞:項目導向;軟件工程;實戰(zhàn)方案
中圖分類號:G642文獻標識碼:B文章編號:1672-5913(2009)04-0052-02
1教改背景
為了滿足當前社會對具有豐富的實際軟件項目開發(fā)經驗人才的需求,許多院校適時地增加軟件工程專業(yè)或軟件工程方向的人才培養(yǎng)。即使對于原有的其他專業(yè)本、專科學生也需要增強實戰(zhàn)項目訓練的深度和廣度,以增強學生對專業(yè)知識的學習興趣和能力。目前,國內高校對于該類課程的傳統(tǒng)做法是以教師課堂授課為主,學生被動地聽課,教學內容一般是重理論而輕實踐。即使設立實踐課程,學生也只是編寫一些規(guī)定的文檔,其開發(fā)方式和手段基本上與軟件工程的要求脫節(jié)。我們所采用的課程設計、畢業(yè)實訓、畢業(yè)設計等實踐類教學環(huán)節(jié)遠遠達不到我們的預期效果。究其原因主要有以下兩個方面:
第一、軟件工程是一門綜合應用的學科,其本身的特點決定了它不是完全可以從書本和課堂上學會,理解和實踐是非常重要的。學生不可能靠聽講軟件工程的基本原理學會開發(fā)一個實際的軟件,而是在實際的“動手做”和“真正練”中體會和掌握軟件工程的思想許多教師本身缺少使用軟件工程方法開發(fā)一個完整系統(tǒng)的經驗,僅限于照本宣科地介紹上些基本原理,不能將當前軟件企業(yè)的實際案例融入在基本原理的講解之中,與實際的軟件工程實踐有明顯的差距。
第二、我們在這些實踐教學中主要以教師為主體,由指導教師來負責整個實踐教學過程的管理和控制。學生只能機械地按照教師的安排完成自己的任務,使得學生認為就是在應付檢查或者是為了簡單的拿到學分。學生完全不能發(fā)揮自己的主觀能動性,樹立正確的學習目標。在課程設計、實訓、畢業(yè)設計中學生很難完全自己動起來,更談不上去從中獲取實踐經驗和提高實踐技能為將來的工作打基礎。
第三、在實踐環(huán)節(jié)的設計方面,我們完全按照課程來制定實踐的活動安排。比如,一般根據當前的理論課程的教學進度,在學期期末或者在中間來設置一周或兩周的時間進行課程設計等實踐教學。這種制定策略完全脫離的實際工作技能需求,在軟件開發(fā)中往往更需要整體項目開發(fā)能力的運用。而且只有整體項目的展示才能夠把獨立教學的理論課程揉捏到一起,形成一個實踐項目的知識鏈條。
第四、我們教師往往使用虛擬課題作為課程設計、實訓和畢業(yè)設計的題目,這樣的題目本身就脫離了社會實際。這樣的題目基本上不能提供軟件開發(fā)中所需要的重要技能訓練平臺。從需求分析開始就讓學生無所適從,根本不能把所學的理論知識運用到實踐中,更談不上鍛煉系統(tǒng)的分析及設計能力。
2構建先進的課程實踐體系
方案一:軟件工程工作室模式
以項目研發(fā)為主體、項目管理為主線,建立一支軟件工程研發(fā)小組。由學生對該研發(fā)小組進行自我組織和管理,開展實際項目的研發(fā)。并且逐步形成一個軟件工程領域知識的研究團體,與課堂理論知識形成互補。教師對項目的管理和技術方向及日常知識學習進行指導,為項目的成功完成提供必要的支撐。對于規(guī)模較大或實用性較強的項目,教師也同時參與到項目的研發(fā),從協(xié)作的角度帶動研發(fā)小組建立軟件工程的開發(fā)理念和方法。
執(zhí)行步驟:
(1)組建團隊。公開招聘學習成績優(yōu)秀,有興趣進行軟件開發(fā)的專業(yè)學生進入研發(fā)團隊。
(2)搭建軟硬件環(huán)境。合理規(guī)劃工作室空間,組建小型研發(fā)軟硬件系統(tǒng)。
(3)制度化建設。建立合理的管理條例,初步形成一套行之有效的團隊文化。以軟件工程國家標準為基礎,結合團隊的自身情況建立項目研發(fā)標準和規(guī)范。
(4)確立項目及開發(fā)。虛擬一個軟件項目,深入開展調研。組織研發(fā)小組進行以工程化為原則進行軟件開發(fā),在工作中不斷學習和完善。
(5)規(guī)模擴大,為方案二的執(zhí)行做準備。
方案二:公司化項目實戰(zhàn)管理模式
校內建立虛擬軟件公司,教師進入公司擔任高級管理職務(CEO、技術總監(jiān)、資深顧問、部門經理)。學生組建項目開發(fā)團隊、培訓中心、測試中心、質量控制中心、項目管理中心。
執(zhí)行步驟:
(1)制定公司人員招聘、錄用方案。根據不同的職位制定招聘條件,激勵學生對理論課程的學習興趣。指導學生根據自己的興趣、個人條件、就業(yè)方向等方面有目的的培養(yǎng)自身的專業(yè)素養(yǎng)。使學生由被動的、教師灌輸式的學習變?yōu)楦鶕殬I(yè)需求主動的、吸取式的學習。
(2)建立運行及獎懲制度。以實踐學分和實踐課程成績作為員工的工資報酬,對每名員工由上級主管、團隊成員、工作業(yè)績考核(參與項目考核)進行評價。從企業(yè)的評價角度來考核,讓學生認識到什么才是企業(yè)所需要和看重的。從評價中塑造學生的學習觀、職業(yè)觀、價值觀。
(3)承接實際項目。定位中小企業(yè),建立合作關系。在公司成立初期,甚至可以免費為小型公司、企業(yè)單位開發(fā)軟件系統(tǒng)、辦公系統(tǒng)、網站??蛻糌撠熖峁┱{研條件、業(yè)務需求、評價、二次開發(fā)等方面的支持。學生從中可以得到職業(yè)素養(yǎng)的鍛煉和提高,特別是在實際調研時與客戶的溝通能力。收集業(yè)務數(shù)據資料,對客戶業(yè)務流進行深入認識和提煉形成業(yè)務需求。根據調研記錄進行整理形成報告。
(4)項目啟動及實施。高級管理人員、項目經理、部門負責人進行項目論證,進行項目開發(fā)任務拆分。完全按照企業(yè)模式,由學生擔任項目經理、軟件工程師、測試工程師、項目管理人員。為了確保項目的成功運行,由教師擔任技術總監(jiān)、資深顧問隨時監(jiān)控、指導項目的運行和管、理。在此完全形成了以學生主導、教師引導的項目開發(fā)模式。學生在這種模式中不是按照教師的要求去完成自己作業(yè)式的任務,而是完全要按照軟件工程的原則來工作。培養(yǎng)學生認識企業(yè)化的工作需求、管理模式和任務提交規(guī)格,利用課堂上所學的理論知識融合項目所需的實際技術能力進行自主的知識到生產的轉化。
(5)實踐教學與實際項目的有機結合。采用部分帶動整體的實踐教學模式,引導部分學生的實踐教學環(huán)節(jié)有效的進入實際項目的任務活動中。對于某一門課程的實踐教學不是僵硬的規(guī)定固定的時間,而是融合在項目開發(fā)過程中的某一環(huán)節(jié)。也就是說在某一項目開發(fā)過程中可能結合若干門課程的實踐教學活動。這種新的模式能增強知識的有效性和擴展性,讓課堂所學的理論知識在實踐中真正的流動起來。
3項目教學和實踐探索式學習
軟件工程的理論和方法是從眾多軟件開發(fā)實踐中總結出來的,但是對于缺乏軟件開發(fā)實際經驗的學生來說,單純地講授理論知識往往使學生感到枯燥無味且難以理解。因此,我們收集和總結了一套完整的項目研發(fā)體系,將整個項目貫穿于理論知識的講解中,使學生真正理解這
些理論知識,建立軟件開發(fā)的系統(tǒng)化與工程化觀念和質量意識。
(1)從分析項目開發(fā)中的挫折入手,例如需求分析失誤、軟件設計缺陷、客戶溝通問題等,深入剖析導致軟件失敗的根本原因,從而引出軟件開發(fā)的工程化發(fā)展方向,即以軟件工程的原理和方法為指導,嚴格遵循軟件過程規(guī)范和步驟。通過這些實例的分析,學生們逐漸改變軟件開發(fā)等于編寫程序代碼的錯誤觀念,開始認識到軟件工程的重要性,有利于培養(yǎng)工程化的意識和觀念。
(2)軟件過程是軟件工程課程中的一個重要內容,但是對于開發(fā)經驗有限的學生來說,很難在頭腦中將軟件過程的抽象模型與實際開發(fā)聯(lián)系起來,容易產生枯燥乏味的感覺。在教學過程中,我們從軟件開發(fā)的實際案例中的軟件系統(tǒng),結合這些系統(tǒng)的特點和開發(fā)策略,講解開發(fā)過程模型,學生在思考、分析和討論過程中更好地理解和體會軟件過程的基本概念,有利于在實際開發(fā)中運用這些過程模型組織開發(fā)過程。
(3)在軟件項目管理方面,我們總結一些企業(yè)的最佳實踐案例,諸如東軟公司的人員組織與項目管理,使學生了解軟件項目管理中人員、產品、過程和項目之間的關系,認識到項目管理在成本、人員、進度、質量、風險等方面活動的重要性,有利于學生在實際項目中開展團隊協(xié)作和項目溝通活動。
(4)在軟件工程技術方面,我們結合企業(yè)信息系統(tǒng)、教學管理系統(tǒng)、電力負荷預測系統(tǒng)等實際項目,論述需求工程、軟件體系結構設計、用戶界面設計、詳細設計、軟件測試和軟件演化等內容,重點引入項目開發(fā)流程的開發(fā)思想及各個環(huán)節(jié)的技術手段。
在整個教學過程中,也應注重引入探索式學習策略,引導學生通過文獻查閱以及與軟件企業(yè)人員的接觸交流,真正體會當前軟件工程業(yè)界的真實案例和最佳實踐。在常規(guī)的課堂教學之外,初期首先選擇“方案一”建立軟件工程工作室,利用有限的教學資源快速組建軟件項目開發(fā)團隊。教師利用“虛擬實戰(zhàn)項目”引導學生進入項目研發(fā)情境,形成規(guī)范的項目研發(fā)標準。結合理論課程教學,針對實戰(zhàn)項目進行需求性學習,構建一種“工作式”的學習模式。該方案實施后,學生對理論課的學習興趣增強,提高了理論聯(lián)系實際的能力。執(zhí)行“方案二”后,徹底改變原有的實踐教學模式。以“真實項目”為核心,從管理到技術方面廣泛模擬公司化運作模式,讓學生盡早轉變角色。這種“真刀真槍”的實戰(zhàn)模式極大的刺激學生的學習主動性,提高了學生的職業(yè)素養(yǎng),豐富了學生的工作經驗。
4結束語
軟件開發(fā)是一個抽象和復雜的過程,不僅包含許多工程化的原則和方法,而且結合多種技術。在理論課教學中對于這樣系列性、綜合性、理論性很強的課程群,必須配合系統(tǒng)的、真實的、多角度的實踐教學體系?!捌髽I(yè)化項目實戰(zhàn)”方案能夠讓學生進入一種企業(yè)級實戰(zhàn)情境,進行多角度綜合軟件研發(fā)體系的深入學習。