張 帥
廣州工商學(xué)院工學(xué)院,廣東 佛山 528138
軟件工程專業(yè)教學(xué)在大數(shù)據(jù)時(shí)代下面臨更多的新情況和新問題,要結(jié)合軟件工程專業(yè)學(xué)科的系統(tǒng)性、專業(yè)性和實(shí)踐性特點(diǎn),分析大數(shù)據(jù)時(shí)代下軟件工程教學(xué)面臨的問題,認(rèn)真查找大數(shù)據(jù)背景下軟件工程專業(yè)教學(xué)需要進(jìn)行怎樣的改革和發(fā)展,才能應(yīng)對其專業(yè)人才培養(yǎng)的需求,提升學(xué)生創(chuàng)新使用大數(shù)據(jù)工具并解決問題的實(shí)踐能力。
軟件工程主要是軟件維護(hù)和開發(fā)過程中所涉及的普遍原理和應(yīng)用技術(shù),涵蓋設(shè)計(jì)模式、系統(tǒng)平臺、數(shù)據(jù)庫、程序、設(shè)計(jì)語言等。在軟件工程專業(yè)教學(xué)之中,既要系統(tǒng)學(xué)習(xí)計(jì)算機(jī)科學(xué)相關(guān)技術(shù),也要全面了解基本理論知識,并且,對軟件工程管理方法和運(yùn)行模式進(jìn)行教學(xué),引導(dǎo)學(xué)生進(jìn)行軟件測試、軟件工程工具方法、軟件設(shè)計(jì)、軟件構(gòu)造與維護(hù)、軟件工程管理、軟件需求及配置管理等方面的教學(xué),較好地提升學(xué)生對軟件工程產(chǎn)品的定義、維護(hù)、開發(fā)和管理[1]。
具體來說,在軟件工程專業(yè)教學(xué)之中,要讓學(xué)習(xí)者理解軟件工程專業(yè)教學(xué)的基本理論和專業(yè)知識,引導(dǎo)學(xué)習(xí)者進(jìn)行面對對象的程序設(shè)計(jì)、Java語言和實(shí)踐訓(xùn)練,學(xué)習(xí)網(wǎng)絡(luò)數(shù)據(jù)庫的設(shè)計(jì)、應(yīng)用和編程能力。同時(shí),通過大量的實(shí)踐提升學(xué)習(xí)者的實(shí)際問題解決能力,并能夠逐漸進(jìn)入到社會中從事計(jì)算機(jī)軟硬件開發(fā)、系統(tǒng)集成、程序設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)等行業(yè)領(lǐng)域之中。
當(dāng)前軟件工程專業(yè)教學(xué)課程目標(biāo)存在一定的偏差,軟件工程專業(yè)課程設(shè)置與計(jì)算機(jī)專業(yè)存在一定的重復(fù)。為此,需要培育出軟件工程特色專業(yè)應(yīng)用人才,凸顯軟件工程專業(yè)人才在軟件領(lǐng)域中的作用和地位。
大數(shù)據(jù)時(shí)代下的軟件工程專業(yè)教學(xué)課程結(jié)構(gòu)不夠合理,課程內(nèi)容較為陳舊,沒有跟上大數(shù)據(jù)發(fā)展的速度,局限于面向?qū)ο蠓椒ń虒W(xué)內(nèi)容和生命周期教學(xué)內(nèi)容等,對于CMM、UML、軟件度量、軟件配置管理、軟件質(zhì)量管理等課程內(nèi)容缺乏充分的關(guān)注[2]。這些大數(shù)據(jù)時(shí)代的時(shí)興技術(shù)沒有體現(xiàn)在課程教學(xué)內(nèi)容之中,不利于學(xué)生對軟件工程專業(yè)課程的深入理解和應(yīng)用。
同時(shí),在軟件工程專業(yè)實(shí)踐課程設(shè)置中也存在一定的欠缺。由于受到諸多條件的限制和影響,軟件工程教學(xué)實(shí)踐與社會需求存在錯(cuò)位現(xiàn)象,學(xué)生在學(xué)習(xí)中無法將理論較好地應(yīng)用于實(shí)踐操作之中,不僅軟件配置和軟件風(fēng)險(xiǎn)在管理上存在問題,而且在軟件過程等管理方面距離標(biāo)準(zhǔn)差距也很大,更不要說復(fù)合型以及復(fù)合型人才的相關(guān)需求。
現(xiàn)階段軟件工程專業(yè)教學(xué)只是采取了單一化的模式,使學(xué)生在課堂上并不占據(jù)主導(dǎo)地位和發(fā)揮主導(dǎo)作用,只能是被動(dòng)式的接受,所以,不利于培養(yǎng)學(xué)生在軟件工程專業(yè)學(xué)習(xí)中的主動(dòng)性和創(chuàng)造性。同時(shí),由于軟件工程專業(yè)教學(xué)實(shí)施模式較為單調(diào),學(xué)生的學(xué)習(xí)動(dòng)力明顯不足,缺乏良好的師生互動(dòng)和交流,導(dǎo)致學(xué)生對軟件工程專業(yè)缺乏具象化認(rèn)知,沒有充分認(rèn)識到軟件工程在社會實(shí)際中的應(yīng)用價(jià)值,降低了軟件工程專業(yè)教學(xué)的效果。
要明確大數(shù)據(jù)時(shí)代下軟件工程專業(yè)課程培養(yǎng)的目標(biāo),充分體現(xiàn)軟件工程專業(yè)的自身特色,結(jié)合社會需求進(jìn)行精準(zhǔn)定位,如:某高校在軟件工程人才培養(yǎng)的過程中就提出了“面向軟件工程領(lǐng)域前沿,融合國際先進(jìn)的NIIT 軟件人才教育模式”為人才培養(yǎng)目標(biāo),重點(diǎn)培育能夠?qū)Υ笾行蛷?fù)雜軟件系統(tǒng)進(jìn)行開發(fā)、管理等具有高級水平的人才。
同時(shí),在對軟件工程專業(yè)課程目標(biāo)進(jìn)行合理定位的前提下,要結(jié)合IT 產(chǎn)業(yè)的市場需求,注重理論、方法、技術(shù)和軟件管理教學(xué)并重,合理設(shè)計(jì)切實(shí)可行的軟件工程專業(yè)人才培養(yǎng)方案,設(shè)計(jì)科學(xué)合理、切實(shí)可行的理論和實(shí)踐課程。
首先,要改變先進(jìn)行理論課程學(xué)習(xí)后進(jìn)行課程設(shè)計(jì)學(xué)習(xí)的縱向課程結(jié)構(gòu),使得理論教學(xué)和課程設(shè)計(jì)能夠同時(shí)安排,推進(jìn)學(xué)生對軟件工程專業(yè)知識的理解和應(yīng)用。
在軟件工程專業(yè)理論教學(xué)之中,要進(jìn)一步加強(qiáng)在軟件工程方面的理論教學(xué),并且將結(jié)構(gòu)化方法教學(xué)作為重要基礎(chǔ),為學(xué)生提供接觸到專業(yè)軟件工程方法機(jī)會和實(shí)踐,幫助學(xué)生擁有更強(qiáng)的軟件開發(fā)運(yùn)維能力[3]。還可以讓學(xué)生在課堂實(shí)踐中運(yùn)用主流的C#或Java 語言進(jìn)行軟件開發(fā),讓學(xué)生對軟件工程理論知識有更為深入的理解。同時(shí),還要增設(shè)《Python 程序設(shè)計(jì)》《數(shù)據(jù)科學(xué)基礎(chǔ)》《算法分析與設(shè)計(jì)》《人工智能導(dǎo)論》《云計(jì)算技術(shù)》等課程,還要更新數(shù)據(jù)庫相關(guān)課程內(nèi)容,包括分布式數(shù)據(jù)庫、NoSQL 數(shù)據(jù)庫等,為學(xué)生的軟件工程專業(yè)學(xué)習(xí)提供新的視野和思路。
其次,要進(jìn)一步加強(qiáng)軟件項(xiàng)目管理知識的授予以及科學(xué)教學(xué)方法的采取,使得學(xué)生盡可能多地掌握軟件項(xiàng)目管理科學(xué)可行的方法。比方說,知曉怎樣估算項(xiàng)目規(guī)模和具體的工作量,明白怎樣估算項(xiàng)目當(dāng)前的實(shí)際進(jìn)度,了解進(jìn)度計(jì)劃的相關(guān)方法等,這對于軟件開發(fā)實(shí)踐過程來說非常重要。
在軟件工程專業(yè)實(shí)踐教學(xué)之中,可以采用校內(nèi)實(shí)踐和校外實(shí)踐的不同方式,較好地改善實(shí)踐教學(xué)效果和質(zhì)量。在校內(nèi)實(shí)踐教學(xué)之中,可以組建項(xiàng)目開發(fā)小組,選擇難易程度適宜的研究課題,對標(biāo)對表進(jìn)度安排,認(rèn)真細(xì)致地落實(shí)軟件開發(fā)任務(wù),教師則在這一過程實(shí)施及時(shí)必要的指導(dǎo)和幫助,如幫助學(xué)生進(jìn)行軟件開發(fā)的需求分析、系統(tǒng)設(shè)計(jì)、軟件設(shè)計(jì)等方面的指導(dǎo),學(xué)生要充分借助分工合作這一有利契機(jī),彼此之間進(jìn)行深入探討和多方交流,在完成軟件開發(fā)后編制課題報(bào)告并進(jìn)行課題答辯,通過軟件開發(fā)實(shí)踐掌握軟件相關(guān)技術(shù)和方法。在校外實(shí)踐教學(xué)之中,要由任課老師帶隊(duì),分組進(jìn)入到實(shí)踐基地之中進(jìn)行實(shí)訓(xùn)練習(xí),增強(qiáng)學(xué)生動(dòng)手實(shí)踐的能力。
另外,在完善和優(yōu)化軟件工程課程結(jié)構(gòu)的過程之中,要采用模塊化管理的方式,構(gòu)建基于大數(shù)據(jù)的軟件工程專業(yè)教學(xué)課程體系,主要包括公共基礎(chǔ)與自然科學(xué)模塊、綜合素質(zhì)、專業(yè)基礎(chǔ)、專業(yè)課程、工程應(yīng)用與創(chuàng)新等不同模塊單元,使之形成高內(nèi)聚、低耦合的特征,較好地適應(yīng)在大數(shù)據(jù)時(shí)代背景下,越來越多的軟件工程專業(yè)人才需求。
1.案例教學(xué)法
基于大數(shù)據(jù)時(shí)代的軟件工程專業(yè)教學(xué)要充分利用大數(shù)據(jù)平臺和系統(tǒng),將教學(xué)內(nèi)容呈現(xiàn)于真實(shí)復(fù)雜的可視化情境之中,引導(dǎo)學(xué)生對各個(gè)知識點(diǎn)產(chǎn)生沉浸式的學(xué)習(xí)體驗(yàn),快速融入到軟件工程開發(fā)的可視化場景之中,積極主動(dòng)地進(jìn)行學(xué)習(xí)和探究。
考慮到軟件工程案例構(gòu)建存在一定的難度,要貼近學(xué)生的實(shí)際學(xué)習(xí)需求構(gòu)建基于軟件工程的第三方智能化教學(xué)與實(shí)訓(xùn)平臺,如:EduCoder[https://www.educoder.net/]等,在該平臺中設(shè)計(jì)不同的子模塊,包括建模系統(tǒng)平臺、Git 可視化分析系統(tǒng)、代碼閱讀標(biāo)注系統(tǒng)、團(tuán)隊(duì)項(xiàng)目管理平臺等,在教學(xué)改革實(shí)踐中借助于基于軟件工程的第三方智能化教學(xué)與實(shí)訓(xùn)平臺開展輔助教學(xué),凝練、總結(jié)和設(shè)計(jì)教學(xué)案例,引領(lǐng)學(xué)生深入挖掘軟件工程專業(yè)知識重點(diǎn)和難點(diǎn),幫助學(xué)生進(jìn)一步理解案例中的關(guān)鍵知識點(diǎn)[4]。具體設(shè)計(jì)如下幾個(gè)教學(xué)案例:
案例一:模型保存功能。針對“保存模型”的教學(xué)需求,程序員要能夠利用“自動(dòng)保存”功能捕捉所有界面退出的事件,并在該事件后自動(dòng)運(yùn)行保存功能。在這一案例之中,程序員首先要有效獲取軟件需求,進(jìn)行有效的用戶驗(yàn)收測試,從用戶的感受對功能進(jìn)行分析和設(shè)計(jì),從而較好地提高用戶的使用體驗(yàn)。
案例二:時(shí)間緊張下未充分測試的問題。對于這一問題的解決要進(jìn)行全面的分析,不能僅僅是由程序人員對本機(jī)進(jìn)行測試,還應(yīng)當(dāng)進(jìn)行跨平臺的系統(tǒng)測試,并在測試用例中設(shè)計(jì)完整的內(nèi)容,包括黑盒測試、白盒測試等,并設(shè)計(jì)完整的測試用例代碼。同時(shí),還要進(jìn)行實(shí)際的用戶驗(yàn)收測試,考慮用戶的使用偏好和習(xí)慣,對于測試中可能存在的異常操作進(jìn)行設(shè)計(jì)和實(shí)施,從而較好地提高建模的效率。由此可見,軟件工程人員要進(jìn)行合理高效的工程項(xiàng)目管理,準(zhǔn)確評估軟件開發(fā)的難度,制定合理可行的項(xiàng)目計(jì)劃,避免開發(fā)周期過長而縮減軟件測試的問題。
案例三:技術(shù)方案的局限性而導(dǎo)致需求變更。對于部分瀏覽器不支持jQuery AJAX request 的模型丟失現(xiàn)象而言,程序員在比較短的時(shí)間之內(nèi)并不能修改好,因此,要在固有的系統(tǒng)需求外添加約束條件,也即對軟件需求進(jìn)行適當(dāng)?shù)难莼?,使之能夠跟隨系統(tǒng)的開發(fā)和使用發(fā)生變化。
2.基于MOOC、PBL 和FC 的課堂教學(xué)
傳統(tǒng)教學(xué)模式教學(xué)手段較為單一,缺乏多樣性和靈活性,難以有效培養(yǎng)學(xué)生的創(chuàng)新能力、自能力、團(tuán)隊(duì)協(xié)作精神和實(shí)踐動(dòng)手能力。當(dāng)前,在大數(shù)據(jù)時(shí)代背景下的軟件工程教學(xué)要充分利用MOOC、PBL、翻轉(zhuǎn)課堂等方法進(jìn)行融合教學(xué),系統(tǒng)改革現(xiàn)階段的軟件工程專業(yè)教學(xué)模式,以問題為載體,充分調(diào)動(dòng)學(xué)生對于探究的激情和熱情,在教師的指引和點(diǎn)撥之下提高學(xué)生的自主學(xué)習(xí)和創(chuàng)新能力。
在基于MOOC、PBL 和FC 的課堂教學(xué)之中,老師要預(yù)先設(shè)計(jì)軟件工程專業(yè)課程問題,要將學(xué)生當(dāng)前的實(shí)際情況和學(xué)習(xí)要求作為出發(fā)點(diǎn)和落腳點(diǎn),富有創(chuàng)意地設(shè)計(jì)實(shí)用性、擴(kuò)展性、啟發(fā)性和綜合性的課程問題[5]。并將課前準(zhǔn)備好的課件、教學(xué)視頻、教案、測試題等資源上傳到MOOC 平臺,學(xué)生根據(jù)自己的學(xué)習(xí)需求和學(xué)習(xí)時(shí)間進(jìn)行自主學(xué)習(xí),登錄到慕課平臺之中學(xué)習(xí)相關(guān)課程章節(jié),并進(jìn)行相關(guān)章節(jié)的習(xí)題在線測試,記錄下自己在學(xué)習(xí)和測試中遇到的問題,教師對學(xué)生進(jìn)行在線學(xué)習(xí)的問題進(jìn)行歸納之后進(jìn)行集中解答和討論,在課上對學(xué)生遇到的問題進(jìn)行反饋和講解。并在課后對課堂情況進(jìn)行梳理,在慕課平臺上布置隨堂測試和課后作業(yè),檢查學(xué)生的學(xué)習(xí)效果,以此作為后期教學(xué)計(jì)劃的調(diào)整依據(jù)。
3.引入CDIO 教學(xué)模式
CDIO 是將理論與實(shí)踐融合的教學(xué)模式,涵蓋構(gòu)思(Conceive)、設(shè)計(jì)(Design)、執(zhí)行(Implement)、運(yùn)作(Operate)等內(nèi)容,是以軟件產(chǎn)品的研發(fā)、測試、運(yùn)行等生命周期為載體進(jìn)行有針對性的理論實(shí)踐教學(xué)改革,既要著眼于基礎(chǔ)知識和實(shí)踐能力,也要聚焦于工程系統(tǒng)等不同維度開展對學(xué)生的專業(yè)培養(yǎng)和教育,讓學(xué)生在主動(dòng)的、聯(lián)系實(shí)際的、課程互動(dòng)的環(huán)境中進(jìn)行自主學(xué)習(xí)和探究。
教師合理設(shè)計(jì)相關(guān)課程問題,引導(dǎo)學(xué)生圍繞課程問題進(jìn)行思考、自主分析和探索,培養(yǎng)學(xué)生的自主學(xué)習(xí)意識和問題探索能力。以學(xué)習(xí)《操作系統(tǒng)》的“存儲管理”知識點(diǎn)為例,教師精心設(shè)計(jì)課程問題,向?qū)W生提問:“Linux 操作系統(tǒng)采用哪種存儲管理方式?”“Linux 操作系統(tǒng)實(shí)現(xiàn)內(nèi)存擴(kuò)充的途徑是怎樣的呢?”學(xué)生帶著問題進(jìn)行思考和探究,能夠快速進(jìn)入到對專業(yè)知識的學(xué)習(xí)之中。
教師預(yù)先設(shè)計(jì)一個(gè)完整的課程項(xiàng)目,讓學(xué)生圍繞這一項(xiàng)目開展學(xué)習(xí)和實(shí)踐。以學(xué)習(xí)《Java 程序設(shè)計(jì)》的課程為例,教師可以結(jié)合學(xué)生的生活經(jīng)驗(yàn)進(jìn)行教學(xué),合理設(shè)計(jì)課程項(xiàng)目“員工薪酬管理系統(tǒng)”和“圖書館管理系統(tǒng)”,全程教學(xué)圍繞這兩個(gè)完整的項(xiàng)目展開,讓學(xué)生在相應(yīng)項(xiàng)目模塊中進(jìn)行設(shè)計(jì)和實(shí)踐,體會項(xiàng)目中蘊(yùn)藏的專業(yè)知識點(diǎn),實(shí)現(xiàn)理論與實(shí)踐的有機(jī)結(jié)合。
大數(shù)據(jù)時(shí)代下的軟件工程專業(yè)教學(xué)要根據(jù)課程體系設(shè)計(jì)要求,建設(shè)軟件工程實(shí)訓(xùn)實(shí)驗(yàn)室,既要引進(jìn)我國和國外的高校人才,也要重視研究機(jī)構(gòu)以及企業(yè)界的“行家里手”,并且樹立和鞏固大數(shù)據(jù)全生命周期管理的核心地位,重點(diǎn)做好軟件工程實(shí)驗(yàn)室的大數(shù)據(jù)存儲、處理和計(jì)算分析等內(nèi)容,形成以大數(shù)據(jù)系統(tǒng)軟件產(chǎn)業(yè)為核心的創(chuàng)新網(wǎng)絡(luò),并且在創(chuàng)新研發(fā)上花更多的心思,在技術(shù)轉(zhuǎn)化上下更多功夫,在應(yīng)用示范平臺上做更大的努力,使得專業(yè)課程教學(xué)和行業(yè)應(yīng)用能夠更加緊密聯(lián)系在一起。
綜上所述,想要與大數(shù)據(jù)產(chǎn)業(yè)發(fā)展和軟件人才的各項(xiàng)需求同頻共振,需要改革當(dāng)前的軟件工程專業(yè)教學(xué),找到大數(shù)據(jù)背景下最為符合客觀發(fā)展的培養(yǎng)創(chuàng)新模式,同時(shí),轉(zhuǎn)變傳統(tǒng)的教學(xué)方法和手段,融入多樣化的軟件工程專業(yè)人才教學(xué)方法,重點(diǎn)培養(yǎng)學(xué)生面向大數(shù)據(jù)環(huán)境的問題解決能力和實(shí)踐創(chuàng)新能力,從理論和實(shí)踐相結(jié)合的角度開展軟件工程專業(yè)教學(xué),從而幫助學(xué)生更好地突破軟件工程專業(yè)課程的重點(diǎn)難點(diǎn),增進(jìn)對軟件工程專業(yè)課程的理解和應(yīng)用水平。