鄭春紅,劉志敏,董海山,陳靜
(青島職業(yè)技術(shù)學(xué)院信息學(xué)院,青島 266555)
《軟件工程》是一門理論性和實(shí)踐性要求都較強(qiáng)的課程。目前,高職院?!盾浖こ獭穼?shí)際教學(xué)過(guò)程中,普遍存在的教學(xué)現(xiàn)狀是:教學(xué)內(nèi)容往往重理論、輕實(shí)踐,學(xué)生沒(méi)有實(shí)際項(xiàng)目開(kāi)發(fā)經(jīng)歷,教師缺乏項(xiàng)目化教學(xué)經(jīng)驗(yàn),一味地照本宣科難免讓學(xué)生覺(jué)得枯燥、難懂、難以接受。如何在《軟件工程》教學(xué)中培養(yǎng)學(xué)生對(duì)這門課程的學(xué)習(xí)興趣,將理論應(yīng)用于實(shí)踐,是提高教學(xué)質(zhì)量的關(guān)鍵所在。本文將項(xiàng)目教學(xué)法[1]應(yīng)用于《軟件工程》的教學(xué)過(guò)程中,以小型圖書館管理系統(tǒng)的開(kāi)發(fā)為例,將軟件工程的基本理論滲透并貫穿到實(shí)際開(kāi)發(fā)過(guò)程中,以期為提高《軟件工程》的教學(xué)效果提供新方法、新思路。
目前,高職院校的《軟件工程》教學(xué)內(nèi)容并沒(méi)有結(jié)合高職院校學(xué)生的特點(diǎn)及未來(lái)的就業(yè)方向制定相應(yīng)的教學(xué)目標(biāo)。教師的任務(wù)就是按照課程標(biāo)準(zhǔn)完成教材中基礎(chǔ)內(nèi)容的教學(xué),教學(xué)內(nèi)容偏理論,缺乏實(shí)踐指導(dǎo),導(dǎo)致學(xué)生學(xué)習(xí)興趣不高,對(duì)于相關(guān)的理論和方法只能做到字面上的理解,缺乏實(shí)際應(yīng)用的體驗(yàn),教學(xué)效果不理想。
目前,教師隊(duì)伍普遍都是由通過(guò)事業(yè)單位招聘選拔的應(yīng)屆畢業(yè)生組成。大部分教師缺乏企業(yè)工作經(jīng)驗(yàn),更缺乏大型項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn)。在《軟件工程》的教學(xué)過(guò)程中,缺乏實(shí)際的、雄厚的項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)去指導(dǎo)學(xué)生,只是一味地向?qū)W生灌輸書本上的知識(shí),導(dǎo)致教學(xué)內(nèi)容枯燥、無(wú)趣,難以讓學(xué)生真正理解和掌握軟件工程的思想。
目前,高職院校的《軟件工程》教學(xué)方法主要以講授法為主,教學(xué)內(nèi)容按照教材中各章節(jié)的順序組織,教學(xué)過(guò)程中應(yīng)用的案例較為零散,缺乏聯(lián)系?!盾浖こ獭返慕虒W(xué)與該門課程的前導(dǎo)課程之間聯(lián)系較少,難以讓學(xué)生做到相關(guān)知識(shí)點(diǎn)的融會(huì)貫通。學(xué)生對(duì)《軟件工程》相關(guān)知識(shí)點(diǎn)的理解僅限于書本上的內(nèi)容,缺乏實(shí)際項(xiàng)目經(jīng)驗(yàn),難以適應(yīng)企業(yè)的用人需求。
《軟件工程》是一門工程性的綜合學(xué)科,內(nèi)容靈活、覆蓋面廣泛,是理論性與實(shí)踐性并重的學(xué)科。《軟件工程》的教學(xué)應(yīng)該切合實(shí)際,與時(shí)俱進(jìn)。為了能培養(yǎng)出具有工程實(shí)踐能力的學(xué)生,在傳統(tǒng)講授法的基礎(chǔ)上,采用項(xiàng)目教學(xué)法,指導(dǎo)學(xué)生運(yùn)用軟件工程理論去踐行軟件項(xiàng)目的開(kāi)發(fā),引導(dǎo)學(xué)生體會(huì)軟件工程的思想,培養(yǎng)學(xué)生的工程實(shí)踐能力,激發(fā)學(xué)生學(xué)習(xí)軟件工程的興趣。
采用項(xiàng)目教學(xué)法,項(xiàng)目的選取是至關(guān)重要的。在選取項(xiàng)目時(shí),需要考慮以下幾個(gè)方面:(1)緊密聯(lián)系《軟件工程》的前導(dǎo)課程,利用前導(dǎo)課程學(xué)到的程序設(shè)計(jì)相關(guān)知識(shí)點(diǎn),設(shè)計(jì)軟件工程的實(shí)踐項(xiàng)目。這樣可以幫助學(xué)生建立課程知識(shí)結(jié)構(gòu)的整體框架。(2)要結(jié)合高職院校學(xué)生特點(diǎn),選取難度適中、絕大多數(shù)學(xué)生都能完成的項(xiàng)目。盡量使每個(gè)學(xué)生都能在實(shí)踐中體會(huì)軟件工程的思想。(3)選取的項(xiàng)目既能運(yùn)用到當(dāng)下主流技術(shù),又能涉及到軟件工程中的主要內(nèi)容。
目前,考慮到面向?qū)ο蟮能浖_(kāi)發(fā)方法備受青睞,并且高職院校學(xué)生在學(xué)習(xí)軟件工程之前,通過(guò)前導(dǎo)課程Java程序設(shè)計(jì),已經(jīng)能夠運(yùn)用Java面向?qū)ο蟮母拍詈驮O(shè)計(jì)方法、Java界面設(shè)計(jì)、異常處理和Java JDBC連接數(shù)據(jù)庫(kù)等Java核心技術(shù)編寫簡(jiǎn)單的項(xiàng)目。因此,選取一個(gè)典型的難度適中的項(xiàng)目——小型圖書館管理系統(tǒng)作為軟件工程教學(xué)過(guò)程中的項(xiàng)目實(shí)例,指導(dǎo)學(xué)生將軟件工程中的過(guò)程、方法、工具應(yīng)用于項(xiàng)目開(kāi)發(fā)的整個(gè)過(guò)程中。
《軟件工程》是一門綜合性的學(xué)科,強(qiáng)調(diào)過(guò)程與工具的重要性,同時(shí)也強(qiáng)調(diào)了人與人的溝通在軟件開(kāi)發(fā)過(guò)程中的重要作用。軟件開(kāi)發(fā)的過(guò)程是離不開(kāi)處于各種角色的人員,例如需求人員、設(shè)計(jì)人員、程序員、測(cè)試人員、客戶和項(xiàng)目經(jīng)理等。只有各方面人員分工合作、有效溝通,才能保證開(kāi)發(fā)出令用戶滿意的產(chǎn)品。
綜上,在項(xiàng)目教學(xué)法的基礎(chǔ)上,對(duì)學(xué)生劃分項(xiàng)目小組,每組由3-5人組成,不同的成員分擔(dān)不同的角色,在項(xiàng)目的開(kāi)發(fā)過(guò)程中,既能運(yùn)用到軟件工程相關(guān)的理論和方法,又能體驗(yàn)每種角色所承擔(dān)的任務(wù),這樣可以使學(xué)生更加深刻地體會(huì)軟件工程方法在具體項(xiàng)目中的實(shí)際運(yùn)用,同時(shí)也可以增強(qiáng)學(xué)生的團(tuán)隊(duì)意識(shí),培養(yǎng)學(xué)生相互交流、有效溝通的能力。
教師能否將項(xiàng)目教學(xué)法運(yùn)用的恰到好處,做好教學(xué)準(zhǔn)備是必不可少的。準(zhǔn)備過(guò)程主要包含以下兩個(gè)方面:
(1)備項(xiàng)目。將項(xiàng)目開(kāi)發(fā)過(guò)程與軟件工程相關(guān)內(nèi)容建立連接。
俗話說(shuō):“要給學(xué)生一杯水,教師要有一桶水”。要想達(dá)到良好的教學(xué)效果,課前充分的準(zhǔn)備是至關(guān)重要的。運(yùn)用項(xiàng)目教學(xué)法的前提是,教師要能踐行項(xiàng)目開(kāi)發(fā)的各個(gè)環(huán)節(jié),并且能將其與《軟件工程》相關(guān)內(nèi)容有機(jī)地結(jié)合起來(lái),做到在教學(xué)過(guò)程和指導(dǎo)學(xué)生實(shí)踐的過(guò)程中游刃有余。
(2)備學(xué)生。合理劃分小組,充分調(diào)動(dòng)每位學(xué)生參與項(xiàng)目的積極性。
“教學(xué)的藝術(shù)不在于傳授本領(lǐng),而在于激勵(lì)、呼喚”。教學(xué)要始終以學(xué)生為主體。根據(jù)學(xué)生的學(xué)習(xí)狀態(tài)、接受能力等特點(diǎn)將學(xué)生進(jìn)行分組,在學(xué)生自愿的基礎(chǔ)上,為學(xué)生進(jìn)行組內(nèi)角色的劃分,發(fā)揮每位學(xué)生的主觀能動(dòng)性,充分調(diào)動(dòng)每位學(xué)生參與項(xiàng)目的積極性。
高職院?!盾浖こ獭方虒W(xué)內(nèi)容主要包括需求分析、軟件設(shè)計(jì)、編碼實(shí)現(xiàn)、軟件測(cè)試這四個(gè)方面。以小型圖書館管理系統(tǒng)的開(kāi)發(fā)為例,按照《軟件工程》教學(xué)內(nèi)容,分解為需求分析、軟件設(shè)計(jì)、編碼實(shí)現(xiàn)、軟件測(cè)試四個(gè)階段,每一階段的任務(wù)及覆蓋的《軟件工程》相關(guān)內(nèi)容如表1所示。
表1 項(xiàng)目開(kāi)發(fā)過(guò)程按照軟件工程主要內(nèi)容進(jìn)行分解
《軟件工程》的教學(xué)過(guò)程中,教師根據(jù)學(xué)生的特點(diǎn)進(jìn)行分組,每位學(xué)生在組內(nèi)都要體驗(yàn)所有角色。角色的劃分可以使每位學(xué)生都能積極地參與到項(xiàng)目實(shí)訓(xùn)環(huán)節(jié),角色劃分可以幫助學(xué)生積累實(shí)踐經(jīng)驗(yàn)、體會(huì)團(tuán)隊(duì)作業(yè)的優(yōu)勢(shì)。
在小型圖書館管理系統(tǒng)這一項(xiàng)目中,任務(wù)分解后要與具體角色建立連接。本文將對(duì)具體的角色劃分以及每種角色需要完成的任務(wù)和標(biāo)準(zhǔn)進(jìn)行概述。
(1)需求分析員角色
需求分析員主要負(fù)責(zé)分析用戶的功能需求和非功能需求。在扮演這個(gè)角色的過(guò)程中,學(xué)生首先需要扮演需求獲取人員,與普通用戶進(jìn)行溝通,獲取需求并用文字記錄。然后扮演需求分析人員,運(yùn)用UML中的用例圖描述獲取到的需求,并記錄到軟件需求規(guī)格說(shuō)明書中。對(duì)于小型圖書館管理系統(tǒng),獲取到的基本功能需求如下:
①用戶管理
對(duì)系統(tǒng)中的用戶進(jìn)行管理,包括新增、刪除、修改、查詢、權(quán)限管理,用戶有兩類,圖書管理員、讀者,圖書管理員享有最大的權(quán)限,可以全權(quán)操作系統(tǒng),讀者可以登錄查尋個(gè)人基本信息、圖書基本信息、借閱記錄,也可以預(yù)約圖書。
②圖書管理
新采購(gòu)圖書的入庫(kù)操作,丟失圖書的報(bào)廢,圖書修改和查詢操作。
③借閱管理
對(duì)讀者的借書和還書行為進(jìn)行記錄,逾期不還的圖書收取滯納金。
(2)系統(tǒng)設(shè)計(jì)員角色
系統(tǒng)設(shè)計(jì)員主要根據(jù)需求分析階段的成果,完成系統(tǒng)數(shù)據(jù)庫(kù)、功能模塊、界面的設(shè)計(jì)工作。該階段完成的任務(wù)要記錄到軟件設(shè)計(jì)說(shuō)明書中。
①在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),首先需要運(yùn)用E-R模型描述實(shí)體與實(shí)體之間的聯(lián)系,然后根據(jù)E-R模型映射為存放到數(shù)據(jù)庫(kù)中具體的關(guān)系數(shù)據(jù)表。以讀者和圖書這兩類實(shí)體為例,E-R模型如圖1所示。可以將E-R模型映射成的三個(gè)關(guān)系模型:讀者表(借書證編號(hào),密碼,姓名,性別,單位,節(jié)約權(quán)限)、圖書表(圖書編號(hào),書名,作者,出版社,入庫(kù)日期,是否預(yù)約,是否借閱)、借閱表(圖書編號(hào),借書證編號(hào),借閱時(shí)間,應(yīng)還時(shí)間)。
圖1
②功能模塊的設(shè)計(jì)主要是依據(jù)需求分析階段分析到的功能需求,設(shè)計(jì)出系統(tǒng)功能結(jié)構(gòu)圖。本文用到的小型圖書館管理系統(tǒng)的功能結(jié)構(gòu)圖如圖2所示。
圖2
③界面設(shè)計(jì)的質(zhì)量,將直接影響用戶對(duì)軟件的評(píng)價(jià)。學(xué)生在設(shè)計(jì)界面時(shí),要注意保持界面簡(jiǎn)潔、美觀、風(fēng)格一致、交互友好等問(wèn)題[4]。
(3)程序員角色
程序員負(fù)責(zé)根據(jù)軟件設(shè)計(jì)說(shuō)明書,運(yùn)用Java程序設(shè)計(jì)語(yǔ)言,利用Eclipse集成開(kāi)發(fā)環(huán)境、微軟SQL Server 2008數(shù)據(jù)庫(kù)服務(wù)器完成系統(tǒng)功能的實(shí)現(xiàn)。程序員的工作可以安排到課下完成。編程階段不僅可以讓學(xué)生掌握軟件工程中的編碼規(guī)范等內(nèi)容,還可以幫助學(xué)生練習(xí)鞏固前導(dǎo)課程中所學(xué)到的知識(shí),幫助學(xué)生建立整體的、系統(tǒng)的知識(shí)框架。
(4)測(cè)試員角色
測(cè)試人員負(fù)責(zé)對(duì)完成的代碼或功能進(jìn)行測(cè)試,目的是為了盡可能多地發(fā)現(xiàn)系統(tǒng)中的錯(cuò)誤。在每個(gè)功能模塊實(shí)現(xiàn)之后,按照白盒測(cè)試為主、黑盒測(cè)試為輔的原則,對(duì)該模塊進(jìn)行測(cè)試。沒(méi)有問(wèn)題,再按照一定的集成策略進(jìn)行集成后的測(cè)試。
測(cè)試需要依據(jù)具體的方法設(shè)計(jì)測(cè)試用例,并記錄到測(cè)試報(bào)告中。
《軟件工程》的教學(xué)過(guò)程中,采用講授和項(xiàng)目教學(xué)相結(jié)合的方法,利用章節(jié)實(shí)驗(yàn)使每個(gè)學(xué)生掌握基本知識(shí)點(diǎn),然后隨著項(xiàng)目的推進(jìn)完成項(xiàng)目階段性任務(wù),并進(jìn)行階段性展示、交流、評(píng)價(jià)。每次階段性展示需要小組每位成員對(duì)自己所完成的任務(wù)進(jìn)行總結(jié)。階段性交流后選出優(yōu)秀的小組進(jìn)行成果共享,以便于其他各組及時(shí)總結(jié)、完善每個(gè)階段的成果。
本文提出的項(xiàng)目教學(xué)法應(yīng)用于《軟件工程》的實(shí)際教學(xué)過(guò)程中并取得良好的教學(xué)效果。以下從三個(gè)方面對(duì)項(xiàng)目教學(xué)法取得的顯著效果進(jìn)行總結(jié):
《軟件工程》的課堂教學(xué)不再是枯燥無(wú)味的理論灌輸,而是有實(shí)際項(xiàng)目做驅(qū)動(dòng),理論聯(lián)系實(shí)踐,極大提高了學(xué)生學(xué)習(xí)的興趣,課堂氣氛活躍。
將項(xiàng)目的各個(gè)階段與軟件工程相關(guān)內(nèi)容緊密聯(lián)系,讓學(xué)生在具體項(xiàng)目開(kāi)發(fā)過(guò)程中體驗(yàn)《軟件工程》這門課程的重要性。學(xué)生通過(guò)項(xiàng)目實(shí)訓(xùn),理解軟件開(kāi)發(fā)不單單是編寫代碼,需求分析、軟件設(shè)計(jì)、軟件測(cè)試、軟件維護(hù)和管理等各個(gè)階段都是非常重要的。有效提高了學(xué)生的工程意識(shí),培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題、與人溝通、團(tuán)結(jié)協(xié)作的能力。
項(xiàng)目教學(xué)法讓教師從枯燥、空乏的理論講授中解脫出來(lái),以實(shí)際項(xiàng)目開(kāi)發(fā)為例,課堂教學(xué)有理有據(jù),活躍了課堂氣氛,提高了學(xué)生的學(xué)習(xí)興趣,增強(qiáng)了教師的教學(xué)自信,提高了教師的業(yè)務(wù)水平。
在《軟件工程》的教學(xué)過(guò)程中運(yùn)用項(xiàng)目教學(xué)法,在一定程度上提高了學(xué)生學(xué)習(xí)的主動(dòng)性和積極性,取得了較好的教學(xué)效果。在今后的教學(xué)中,將進(jìn)一步探索符合高職學(xué)生特點(diǎn)的《軟件工程》教學(xué)方法,努力培養(yǎng)出符合企業(yè)用人需求的具有工程思想的綜合型人才。