孫文玲,張繼山,余久久,吳寧,梅瑩瑩
(安徽三聯(lián)學(xué)院計算機工程學(xué)院,安徽 合肥 230601)
軟件工程是計算機以及軟件工程專業(yè)的一門工程性基礎(chǔ)課程,在軟件工程學(xué)科人才培養(yǎng)體系中占有重要的地位。軟件開發(fā)是建立計算機應(yīng)用系統(tǒng)的重要環(huán)節(jié),人們通過軟件工程學(xué)把軟件開發(fā)納入工程化的軌道,用以指導(dǎo)軟件人員進行軟件的開發(fā)、維護和管理。軟件工程已成為高等學(xué)校計算機軟件教學(xué)體系中的一門核心課程。
為深入貫徹落實習(xí)近平總書記關(guān)于教育的重要論述和全國教育大會精神,貫徹落實中共中央辦公廳、國務(wù)院辦公廳《關(guān)于深化新時代學(xué)校思想政治理論課改革創(chuàng)新的若干意見》,把思想政治教育貫穿人才培養(yǎng)體系,全面推進高校課程思政建設(shè),發(fā)揮好每門課程的育人作用,提高高校人才培養(yǎng)質(zhì)量,依據(jù)《高等學(xué)校課程思政建設(shè)指導(dǎo)綱要》在軟件工程教學(xué)實踐中不斷挖掘課程思政元素,結(jié)合課程的特點,將課程思政融入教學(xué)內(nèi)容全過程中,圍繞知識傳授與價值引領(lǐng)相結(jié)合的課程思政目標,巧妙植入思政元素[1],在情感、態(tài)度與價值觀上達到更好的育人效果。以下內(nèi)容是在教學(xué)過程中對軟件工程課程思政的教學(xué)實踐與探索。
課程思政并不是簡單的課程內(nèi)容加上思政教育,在實際教學(xué)中,結(jié)合學(xué)生的日常生活,通過對問題的討論,引導(dǎo)學(xué)生自主融入課程思政中,形成學(xué)中有思,思中有學(xué),不斷提高學(xué)生個人思政意識,引導(dǎo)在知識獲取的基礎(chǔ)上提高一定的深度,讓學(xué)生從思政教育中有所收獲。
第一章軟件工程概述:先講解軟件的定義,通過課堂討論方式讓學(xué)生結(jié)合生活談?wù)勔娺^的、用過的軟件,來講解軟件的定義,通過反問的方式“軟件就是程序嗎?”引出軟件的定義。之后,讓學(xué)生將軟件和硬件在一起對比,使用自己的語言表述軟件的特點,針對學(xué)生未能分析出來的特點著重講解。在此基礎(chǔ)上,讓學(xué)生思考“大家用的軟件中哪些是國產(chǎn)軟件?在國產(chǎn)軟件和國外軟件的功能差不多的情況下,是否會選擇國產(chǎn)軟件?為什么?”在學(xué)生討論完甚至有的學(xué)生辯論起來后,簡單介紹國家軟件發(fā)展戰(zhàn)略,引導(dǎo)學(xué)生在學(xué)習(xí)之始樹立正確的價值觀,立志為軟件行業(yè)發(fā)展做出更大的貢獻。針對使用國內(nèi)外軟件的選擇上,引導(dǎo)學(xué)生要有開放的態(tài)度,在軟件開發(fā)與維護過程中要學(xué)習(xí)借鑒他人做得好的地方,用開放的態(tài)度對待,保持初心。在此基礎(chǔ)上,分析軟件危機的根本原因以及如何解決改善?順其自然地講解到軟件工程的概念,將軟件與工程學(xué)的方法結(jié)合起來以優(yōu)化軟件開發(fā)與維護過程。引導(dǎo)學(xué)生在學(xué)習(xí)生活和以后的工作中注意尋找更好的方法,借鑒軟件工程中的方法,加以應(yīng)用,與其他的學(xué)科方法結(jié)合,融會貫通,找到適合自己的方法,激發(fā)學(xué)生學(xué)習(xí)方法論并應(yīng)用起來。通過思維導(dǎo)圖介紹課程的總體結(jié)構(gòu)來讓學(xué)生看到好的方法的價值,引導(dǎo)學(xué)生使用思維導(dǎo)圖(如圖1、圖2)提高效率。
圖1 軟件思維導(dǎo)圖
圖2 軟件工程思維導(dǎo)圖
軟件工程的概念中通過三要素過程、方法、工具以及目標來全局把握這門課程,以思維導(dǎo)圖(圖2)總體結(jié)構(gòu)認識課程的框架結(jié)構(gòu),提出課后實踐的要求,實踐是檢驗真理的唯一標準,是認識的基礎(chǔ),通過動手實踐能夠加深對知識的理解,將理論與實踐相結(jié)合,自主學(xué)習(xí)并樹立正確的學(xué)習(xí)觀。引導(dǎo)學(xué)生認識實踐的重要性,落實實踐來提高自我發(fā)展。
第二章軟件過程:從軟件工程三要素的過程來講解軟件生命周期以及主要的軟件過程模型,在介紹瀑布模型時反問大家“需要返工怎么辦?是不是要罷工?”強調(diào)并告知在以后的工作中遇到問題時請保持優(yōu)先解決問題的態(tài)度而不是過分懲罰責(zé)任人,不要有過多的負面情緒。人非圣賢,孰能無過,軟件行業(yè)發(fā)展至今,應(yīng)該看到各個過程模型的優(yōu)點和缺點,學(xué)會揚長避短,不斷提高自己的能力,提高團隊合作能力,提高國內(nèi)軟件實力,讓行業(yè)整體素質(zhì)水平得到提高。重點結(jié)合項目案例講解敏捷開發(fā)的過程,讓學(xué)生體會敏捷的社會主義核心價值觀“溝通、簡單、反饋、勇氣”,強調(diào)以積極的心態(tài)擁抱變化。強調(diào)通過實踐不斷優(yōu)化自我。
第三章可行性分析階段:按照軟件過程的各個階段開始,先講解可行性分析階段。針對法律性這個方面,結(jié)合學(xué)生生活中可能面臨的問題,提問“刷單能不能做?為什么不能做?”,引導(dǎo)學(xué)生認清刷單的危害,從以下幾個方面讓學(xué)生理解:
1)潛在的法律風(fēng)險,不從事刷單等類似軟件工作;
2)潛在的資金風(fēng)險,大額刷單的風(fēng)險;
3)數(shù)據(jù)的泄漏帶來諸如垃圾短信、垃圾郵件、騷擾電話等;
4)對互聯(lián)網(wǎng)真實數(shù)據(jù)的影響,不利于數(shù)據(jù)的價值與大數(shù)據(jù)發(fā)展,不利于認識、分析或者預(yù)測,不利于數(shù)據(jù)的生態(tài)發(fā)展;
5)一時的傭金利益助長了行業(yè)的不良發(fā)展,作為用戶最終會買到次品,引導(dǎo)學(xué)生學(xué)會正確地衡量金錢的價值,不局限于眼前的利益誘惑。
類似的網(wǎng)絡(luò)詐騙等需要提高自身的思想覺悟,認真分析問題,多想想再決定,三思而后行。
第四章需求分析階段:先明確需求分析的必要性,是做什么的問題,然后從方法、過程與工具方面講述重點內(nèi)容。在講解需求說明書中,讓全班討論“為什么要有文檔?”以后到企業(yè)中會不會吐槽說“作為一名軟件開發(fā)工程師還要寫文檔,太浪費時間?”在討論后,給大家分析文檔化的必要性:
1)傳承的價值,大到國家的文化傳承,引導(dǎo)學(xué)生關(guān)注學(xué)校、國家的文化,形成把有價值的東西保留發(fā)揚光大的意識;
2)自我提升的價值,做好個人總結(jié)與反思,強化實踐后的總結(jié)的價值。
除此之外,講解結(jié)構(gòu)化分析方法的應(yīng)用案例,讓學(xué)生在課后實踐中參考并應(yīng)用結(jié)構(gòu)化分析的方法,體會結(jié)構(gòu)化分析方法的好處與不足。在課堂結(jié)合項目案例介紹了需求管理工具,引導(dǎo)合理地使用工具做到更方便文檔化管理與追溯。
第五章軟件設(shè)計階段:先讓學(xué)生談?wù)劇安蛔鲈O(shè)計可不可以?設(shè)計的價值是什么?”引導(dǎo)學(xué)生說出自己的理解,講解到國家知識產(chǎn)權(quán)(Intellectual Property,簡稱IP),引導(dǎo)學(xué)生提高IP意識,告知設(shè)計思想作為勞動成果要有維護意識。在說到面向?qū)ο笤O(shè)計中的信息隱藏的作用時,講到在大數(shù)據(jù)時代的數(shù)據(jù)保護價值,引申到黑客與白帽子的選擇,引導(dǎo)學(xué)生找到正確的方法尋求正規(guī)的渠道獲取數(shù)據(jù)和資源,不可以不知者不罪來開脫,或者存在僥幸心理,要有規(guī)則與相關(guān)的法律意識。
第六章面向?qū)ο蟮姆椒ㄅcUML:基于學(xué)生反饋的課程比較抽象,結(jié)合學(xué)生點菜吃飯,提出問題“想吃西紅柿炒雞蛋怎么辦?”讓全班同學(xué)參與討論提出解決方案,同學(xué)們有的說買菜按照菜譜做,有的說點外賣。由此分析,一種是面向過程的方案,一種是面向?qū)ο蟮姆桨福ㄟ^面向過程與面向過程的對比,加深以前知識的總結(jié),突出在什么場景下使用什么樣的方案需要通過分析具體問題具體來確定方案。從發(fā)展歷史上正確地看待方法選擇與多種方法的融合,引導(dǎo)學(xué)生取其精華,去其糟粕,找到適合自己的方法,促進自身發(fā)展。通過項目實踐演示成果,結(jié)合實踐體會團隊合作過程中問題的優(yōu)化過程,學(xué)會創(chuàng)新,突破局限,學(xué)會接受不一樣的思維或者有意識改變并嘗試不一樣的方式和方法。緊接著,對于面向?qū)ο蟮姆椒ㄈ绾伪硎荆鯱ML來表示面向?qū)ο蟮母拍?,提問討論“為什么要用UML?為什么要標準化?”引入標準化的價值,讓學(xué)生理解標準化推動行業(yè)發(fā)展的價值。在現(xiàn)有的基礎(chǔ)上有所突破,讓更多人參與發(fā)展,需要參照一定的標準來更好地交流,加強標準化意識并推廣學(xué)會開源共享,海納百川,更快進步,提升核心競爭力!最后通過引導(dǎo)學(xué)生總結(jié)UML圖與面向?qū)ο蟾拍畹膶?yīng)關(guān)系,如表1,引導(dǎo)學(xué)生時刻注意通過一定的學(xué)習(xí)方法來更好地掌握知識。
表1 面向?qū)ο蠡靖拍钆cUML表示
第七章面向?qū)ο蟮姆治觯夯谥皩W(xué)習(xí)的面向?qū)ο蟮母拍?,讓學(xué)生自己討論如何去做分析,對學(xué)生理解不到位的地方加以補充強調(diào),引導(dǎo)學(xué)生對比結(jié)構(gòu)化分析來提高分析能力。接著提問學(xué)生“怎么將理論加以應(yīng)用?”對學(xué)生回答給予鼓勵,讓學(xué)生體會到軟件工程的指導(dǎo)作用,并積極落實項目實踐。
第八章軟件體系結(jié)構(gòu):討論“蓋草房和蓋高樓大廈有什么不一樣?”引出軟件體系結(jié)構(gòu)。對不同的需求要分析更加合理的方法,軟件行業(yè)發(fā)展越來越好,小作坊形式不會長久,大型軟件系統(tǒng)需要有一定的結(jié)構(gòu)作為指導(dǎo),軟件危機的解決需要工程化指導(dǎo),對于面向?qū)ο蟮姆椒?,在分析設(shè)計與實現(xiàn)中需要一定的抽象能力,對于可以公用化的模塊需要復(fù)用,重復(fù)造輪不會帶來快速發(fā)展,通過抽象類、接口、構(gòu)件、服務(wù)等一層一層的抽象,不斷細化那些需要變化修改的內(nèi)容,提煉可復(fù)用的程序,形成一定的框架。在體系結(jié)構(gòu)框架講解后,簡單講解軟件設(shè)計模式,強調(diào)解決某一類相似問題的方法論的重要性,引導(dǎo)學(xué)生要學(xué)習(xí)別人的方法,并實踐調(diào)整形成更好的方法,在以后的工作中遇到問題可以先看看設(shè)計模式中是不是已經(jīng)有了解決方案,那么完全可以通過應(yīng)用來更快完成項目開發(fā)。最后總結(jié)對比軟件體系結(jié)構(gòu)、風(fēng)格與設(shè)計模式,引導(dǎo)學(xué)生更好地通過差異加深理解。
第九章面向?qū)ο蟮脑O(shè)計:回顧軟件設(shè)計的相關(guān)知識,提問“是不是面向?qū)ο蠓治鐾瓿珊笤僮雒嫦驅(qū)ο蟮脑O(shè)計呢?”強調(diào)面向?qū)ο蟮脑O(shè)計經(jīng)歷從依賴結(jié)構(gòu)化分析結(jié)果到與面向?qū)ο蠓治霾⑿胁粩嗟鷥?yōu)化,而不只是單純地做完分析就不需要再做分析,通過提問“適合用什么軟件過程模型?”來強調(diào)知識的關(guān)聯(lián)性,引導(dǎo)學(xué)生不斷地對所學(xué)的知識加以反復(fù)回看,踐行迭代的思想,去體會量變到質(zhì)變的成就,引導(dǎo)學(xué)生在發(fā)現(xiàn)問題中不斷優(yōu)化完善自我。
第十章編碼實現(xiàn):軟件工程并不講解怎么寫代碼,通過具體學(xué)習(xí)過的編程語言對比,提出通用的軟件編程風(fēng)格,為了讓學(xué)生理解價值,通過反問“在一個項目團隊中,自己寫的方法只有自己用,別人不會用,別人寫的方法自己也不用,因為沒有一定規(guī)范,理解不了、需要花更多的時間去讀懂等原因,團隊的價值何在?”引導(dǎo)學(xué)生團隊合作價值發(fā)揮好需要一定的規(guī)范,需要大家能主動溝通學(xué)習(xí)來更好地融入團隊。
第十一章軟件測試:提問“不測試直接上線可以嗎?什么時候測試?”引出軟件測試相關(guān)概念。通過討論讓學(xué)生找到為什么不能在開發(fā)完成后才測試,引導(dǎo)生活中也需要做好計劃,挖掘生活中的哲學(xué),盡早發(fā)現(xiàn)問題,盡早解決問題[2],不能到最后一刻才發(fā)現(xiàn)問題而導(dǎo)致付出慘痛代價。引導(dǎo)學(xué)生使用對比的方法,對比軟件測試與軟件調(diào)試,對比白盒測試與黑盒測試來更好地學(xué)習(xí)。在講解邊界值分析法時,引入社會上典型的“59歲現(xiàn)象”[3],以軟件更容易在邊界值上出現(xiàn)錯誤,引導(dǎo)工作中引以為戒,引導(dǎo)學(xué)生堅守住職業(yè)道德底線。結(jié)合學(xué)生的學(xué)習(xí)生活,提醒學(xué)生在考試中要警惕不舞弊,不要存有僥幸心理,合理計劃學(xué)習(xí),查缺補漏,正確地看待考核與測試。
第十二章軟件維護:維護作為最后一個階段,學(xué)生可能興趣不大,恰恰相反,維護是軟件生命周期中時間最長的階段,為了讓學(xué)生理解,結(jié)合學(xué)生日常使用的支付寶、手機銀行軟件來提問“有沒有注意到支付寶什么時候更新版本?或者注意到某些軟件有提示需要更新升級?”“代碼寫完了就不管了?”軟件開發(fā)完成后,要滿足不斷變化的需求,維護以及如何維護非常重要,引導(dǎo)學(xué)生不要覺得代碼寫完了就不需要做了,要提高責(zé)任意識與服務(wù)意識,不斷完善系統(tǒng),更好地服務(wù)用戶。針對學(xué)生熬夜現(xiàn)象,提問“是不是年輕就可以放肆熬夜?”來引導(dǎo)學(xué)生加強體育鍛煉,合理規(guī)劃日常安排,維護好自己的身體[4]。
通過在各個章節(jié)內(nèi)容中,發(fā)掘和學(xué)生學(xué)習(xí)生活相關(guān)的刷單、如何學(xué)習(xí)、法律意識、工作創(chuàng)業(yè)等方面,在課堂中以提問討論的方式,讓學(xué)生順其自然地接受,認為這就是課堂的一部分[5],實現(xiàn)課程與思政融合,引導(dǎo)學(xué)生通過正確的方法找到適合自己發(fā)展的方法,引導(dǎo)學(xué)生培養(yǎng)思政意識,不斷創(chuàng)新,逐步實現(xiàn)個人全面的發(fā)展。在課程考核中,通過開放式簡答題來了解思政教育的效果,在256人中僅有13人未能表達出在課程學(xué)習(xí)中所吸收的思政內(nèi)容,分析可見學(xué)生對軟件工程中的方法元素掌握較好,在項目實踐中也能在原有的基礎(chǔ)上有所突破,在今后的教學(xué)中將結(jié)合提問討論方式與故事分享方式結(jié)合,進一步挖掘更多與學(xué)生息息相關(guān)的思政元素,對“知識點—思政元素—職業(yè)技能”課程思政教學(xué)模式[6]加以融合實踐與探索,堅持合目的性、合規(guī)律性與合必然性的統(tǒng)一[7]來發(fā)揮課程思政的價值,設(shè)計參考協(xié)同創(chuàng)新評價[8]等更好的思政教育評價方法來提高思政教育能力。