孫文玲,張繼山,余久久,吳寧,梅瑩瑩
(安徽三聯(lián)學(xué)院計(jì)算機(jī)工程學(xué)院,安徽 合肥 230601)
軟件工程是計(jì)算機(jī)以及軟件工程專業(yè)的一門工程性基礎(chǔ)課程,在軟件工程學(xué)科人才培養(yǎng)體系中占有重要的地位。軟件開(kāi)發(fā)是建立計(jì)算機(jī)應(yīng)用系統(tǒng)的重要環(huán)節(jié),人們通過(guò)軟件工程學(xué)把軟件開(kāi)發(fā)納入工程化的軌道,用以指導(dǎo)軟件人員進(jìn)行軟件的開(kāi)發(fā)、維護(hù)和管理。軟件工程已成為高等學(xué)校計(jì)算機(jī)軟件教學(xué)體系中的一門核心課程。
為深入貫徹落實(shí)習(xí)近平總書記關(guān)于教育的重要論述和全國(guó)教育大會(huì)精神,貫徹落實(shí)中共中央辦公廳、國(guó)務(wù)院辦公廳《關(guān)于深化新時(shí)代學(xué)校思想政治理論課改革創(chuàng)新的若干意見(jiàn)》,把思想政治教育貫穿人才培養(yǎng)體系,全面推進(jìn)高校課程思政建設(shè),發(fā)揮好每門課程的育人作用,提高高校人才培養(yǎng)質(zhì)量,依據(jù)《高等學(xué)校課程思政建設(shè)指導(dǎo)綱要》在軟件工程教學(xué)實(shí)踐中不斷挖掘課程思政元素,結(jié)合課程的特點(diǎn),將課程思政融入教學(xué)內(nèi)容全過(guò)程中,圍繞知識(shí)傳授與價(jià)值引領(lǐng)相結(jié)合的課程思政目標(biāo),巧妙植入思政元素[1],在情感、態(tài)度與價(jià)值觀上達(dá)到更好的育人效果。以下內(nèi)容是在教學(xué)過(guò)程中對(duì)軟件工程課程思政的教學(xué)實(shí)踐與探索。
課程思政并不是簡(jiǎn)單的課程內(nèi)容加上思政教育,在實(shí)際教學(xué)中,結(jié)合學(xué)生的日常生活,通過(guò)對(duì)問(wèn)題的討論,引導(dǎo)學(xué)生自主融入課程思政中,形成學(xué)中有思,思中有學(xué),不斷提高學(xué)生個(gè)人思政意識(shí),引導(dǎo)在知識(shí)獲取的基礎(chǔ)上提高一定的深度,讓學(xué)生從思政教育中有所收獲。
第一章軟件工程概述:先講解軟件的定義,通過(guò)課堂討論方式讓學(xué)生結(jié)合生活談?wù)勔?jiàn)過(guò)的、用過(guò)的軟件,來(lái)講解軟件的定義,通過(guò)反問(wèn)的方式“軟件就是程序嗎?”引出軟件的定義。之后,讓學(xué)生將軟件和硬件在一起對(duì)比,使用自己的語(yǔ)言表述軟件的特點(diǎn),針對(duì)學(xué)生未能分析出來(lái)的特點(diǎn)著重講解。在此基礎(chǔ)上,讓學(xué)生思考“大家用的軟件中哪些是國(guó)產(chǎn)軟件?在國(guó)產(chǎn)軟件和國(guó)外軟件的功能差不多的情況下,是否會(huì)選擇國(guó)產(chǎn)軟件?為什么?”在學(xué)生討論完甚至有的學(xué)生辯論起來(lái)后,簡(jiǎn)單介紹國(guó)家軟件發(fā)展戰(zhàn)略,引導(dǎo)學(xué)生在學(xué)習(xí)之始樹立正確的價(jià)值觀,立志為軟件行業(yè)發(fā)展做出更大的貢獻(xiàn)。針對(duì)使用國(guó)內(nèi)外軟件的選擇上,引導(dǎo)學(xué)生要有開(kāi)放的態(tài)度,在軟件開(kāi)發(fā)與維護(hù)過(guò)程中要學(xué)習(xí)借鑒他人做得好的地方,用開(kāi)放的態(tài)度對(duì)待,保持初心。在此基礎(chǔ)上,分析軟件危機(jī)的根本原因以及如何解決改善?順其自然地講解到軟件工程的概念,將軟件與工程學(xué)的方法結(jié)合起來(lái)以優(yōu)化軟件開(kāi)發(fā)與維護(hù)過(guò)程。引導(dǎo)學(xué)生在學(xué)習(xí)生活和以后的工作中注意尋找更好的方法,借鑒軟件工程中的方法,加以應(yīng)用,與其他的學(xué)科方法結(jié)合,融會(huì)貫通,找到適合自己的方法,激發(fā)學(xué)生學(xué)習(xí)方法論并應(yīng)用起來(lái)。通過(guò)思維導(dǎo)圖介紹課程的總體結(jié)構(gòu)來(lái)讓學(xué)生看到好的方法的價(jià)值,引導(dǎo)學(xué)生使用思維導(dǎo)圖(如圖1、圖2)提高效率。

圖1 軟件思維導(dǎo)圖

圖2 軟件工程思維導(dǎo)圖
軟件工程的概念中通過(guò)三要素過(guò)程、方法、工具以及目標(biāo)來(lái)全局把握這門課程,以思維導(dǎo)圖(圖2)總體結(jié)構(gòu)認(rèn)識(shí)課程的框架結(jié)構(gòu),提出課后實(shí)踐的要求,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),是認(rèn)識(shí)的基礎(chǔ),通過(guò)動(dòng)手實(shí)踐能夠加深對(duì)知識(shí)的理解,將理論與實(shí)踐相結(jié)合,自主學(xué)習(xí)并樹立正確的學(xué)習(xí)觀。引導(dǎo)學(xué)生認(rèn)識(shí)實(shí)踐的重要性,落實(shí)實(shí)踐來(lái)提高自我發(fā)展。
第二章軟件過(guò)程:從軟件工程三要素的過(guò)程來(lái)講解軟件生命周期以及主要的軟件過(guò)程模型,在介紹瀑布模型時(shí)反問(wèn)大家“需要返工怎么辦?是不是要罷工?”強(qiáng)調(diào)并告知在以后的工作中遇到問(wèn)題時(shí)請(qǐng)保持優(yōu)先解決問(wèn)題的態(tài)度而不是過(guò)分懲罰責(zé)任人,不要有過(guò)多的負(fù)面情緒。人非圣賢,孰能無(wú)過(guò),軟件行業(yè)發(fā)展至今,應(yīng)該看到各個(gè)過(guò)程模型的優(yōu)點(diǎn)和缺點(diǎn),學(xué)會(huì)揚(yáng)長(zhǎng)避短,不斷提高自己的能力,提高團(tuán)隊(duì)合作能力,提高國(guó)內(nèi)軟件實(shí)力,讓行業(yè)整體素質(zhì)水平得到提高。重點(diǎn)結(jié)合項(xiàng)目案例講解敏捷開(kāi)發(fā)的過(guò)程,讓學(xué)生體會(huì)敏捷的社會(huì)主義核心價(jià)值觀“溝通、簡(jiǎn)單、反饋、勇氣”,強(qiáng)調(diào)以積極的心態(tài)擁抱變化。強(qiáng)調(diào)通過(guò)實(shí)踐不斷優(yōu)化自我。
第三章可行性分析階段:按照軟件過(guò)程的各個(gè)階段開(kāi)始,先講解可行性分析階段。針對(duì)法律性這個(gè)方面,結(jié)合學(xué)生生活中可能面臨的問(wèn)題,提問(wèn)“刷單能不能做?為什么不能做?”,引導(dǎo)學(xué)生認(rèn)清刷單的危害,從以下幾個(gè)方面讓學(xué)生理解:
1)潛在的法律風(fēng)險(xiǎn),不從事刷單等類似軟件工作;
2)潛在的資金風(fēng)險(xiǎn),大額刷單的風(fēng)險(xiǎn);
3)數(shù)據(jù)的泄漏帶來(lái)諸如垃圾短信、垃圾郵件、騷擾電話等;
4)對(duì)互聯(lián)網(wǎng)真實(shí)數(shù)據(jù)的影響,不利于數(shù)據(jù)的價(jià)值與大數(shù)據(jù)發(fā)展,不利于認(rèn)識(shí)、分析或者預(yù)測(cè),不利于數(shù)據(jù)的生態(tài)發(fā)展;
5)一時(shí)的傭金利益助長(zhǎng)了行業(yè)的不良發(fā)展,作為用戶最終會(huì)買到次品,引導(dǎo)學(xué)生學(xué)會(huì)正確地衡量金錢的價(jià)值,不局限于眼前的利益誘惑。
類似的網(wǎng)絡(luò)詐騙等需要提高自身的思想覺(jué)悟,認(rèn)真分析問(wèn)題,多想想再?zèng)Q定,三思而后行。
第四章需求分析階段:先明確需求分析的必要性,是做什么的問(wèn)題,然后從方法、過(guò)程與工具方面講述重點(diǎn)內(nèi)容。在講解需求說(shuō)明書中,讓全班討論“為什么要有文檔?”以后到企業(yè)中會(huì)不會(huì)吐槽說(shuō)“作為一名軟件開(kāi)發(fā)工程師還要寫文檔,太浪費(fèi)時(shí)間?”在討論后,給大家分析文檔化的必要性:
1)傳承的價(jià)值,大到國(guó)家的文化傳承,引導(dǎo)學(xué)生關(guān)注學(xué)校、國(guó)家的文化,形成把有價(jià)值的東西保留發(fā)揚(yáng)光大的意識(shí);
2)自我提升的價(jià)值,做好個(gè)人總結(jié)與反思,強(qiáng)化實(shí)踐后的總結(jié)的價(jià)值。
除此之外,講解結(jié)構(gòu)化分析方法的應(yīng)用案例,讓學(xué)生在課后實(shí)踐中參考并應(yīng)用結(jié)構(gòu)化分析的方法,體會(huì)結(jié)構(gòu)化分析方法的好處與不足。在課堂結(jié)合項(xiàng)目案例介紹了需求管理工具,引導(dǎo)合理地使用工具做到更方便文檔化管理與追溯。
第五章軟件設(shè)計(jì)階段:先讓學(xué)生談?wù)劇安蛔鲈O(shè)計(jì)可不可以?設(shè)計(jì)的價(jià)值是什么?”引導(dǎo)學(xué)生說(shuō)出自己的理解,講解到國(guó)家知識(shí)產(chǎn)權(quán)(Intellectual Property,簡(jiǎn)稱IP),引導(dǎo)學(xué)生提高IP意識(shí),告知設(shè)計(jì)思想作為勞動(dòng)成果要有維護(hù)意識(shí)。在說(shuō)到面向?qū)ο笤O(shè)計(jì)中的信息隱藏的作用時(shí),講到在大數(shù)據(jù)時(shí)代的數(shù)據(jù)保護(hù)價(jià)值,引申到黑客與白帽子的選擇,引導(dǎo)學(xué)生找到正確的方法尋求正規(guī)的渠道獲取數(shù)據(jù)和資源,不可以不知者不罪來(lái)開(kāi)脫,或者存在僥幸心理,要有規(guī)則與相關(guān)的法律意識(shí)。
第六章面向?qū)ο蟮姆椒ㄅcUML:基于學(xué)生反饋的課程比較抽象,結(jié)合學(xué)生點(diǎn)菜吃飯,提出問(wèn)題“想吃西紅柿炒雞蛋怎么辦?”讓全班同學(xué)參與討論提出解決方案,同學(xué)們有的說(shuō)買菜按照菜譜做,有的說(shuō)點(diǎn)外賣。由此分析,一種是面向過(guò)程的方案,一種是面向?qū)ο蟮姆桨福ㄟ^(guò)面向過(guò)程與面向過(guò)程的對(duì)比,加深以前知識(shí)的總結(jié),突出在什么場(chǎng)景下使用什么樣的方案需要通過(guò)分析具體問(wèn)題具體來(lái)確定方案。從發(fā)展歷史上正確地看待方法選擇與多種方法的融合,引導(dǎo)學(xué)生取其精華,去其糟粕,找到適合自己的方法,促進(jìn)自身發(fā)展。通過(guò)項(xiàng)目實(shí)踐演示成果,結(jié)合實(shí)踐體會(huì)團(tuán)隊(duì)合作過(guò)程中問(wèn)題的優(yōu)化過(guò)程,學(xué)會(huì)創(chuàng)新,突破局限,學(xué)會(huì)接受不一樣的思維或者有意識(shí)改變并嘗試不一樣的方式和方法。緊接著,對(duì)于面向?qū)ο蟮姆椒ㄈ绾伪硎荆鯱ML來(lái)表示面向?qū)ο蟮母拍睿釂?wèn)討論“為什么要用UML?為什么要標(biāo)準(zhǔn)化?”引入標(biāo)準(zhǔn)化的價(jià)值,讓學(xué)生理解標(biāo)準(zhǔn)化推動(dòng)行業(yè)發(fā)展的價(jià)值。在現(xiàn)有的基礎(chǔ)上有所突破,讓更多人參與發(fā)展,需要參照一定的標(biāo)準(zhǔn)來(lái)更好地交流,加強(qiáng)標(biāo)準(zhǔn)化意識(shí)并推廣學(xué)會(huì)開(kāi)源共享,海納百川,更快進(jìn)步,提升核心競(jìng)爭(zhēng)力!最后通過(guò)引導(dǎo)學(xué)生總結(jié)UML圖與面向?qū)ο蟾拍畹膶?duì)應(yīng)關(guān)系,如表1,引導(dǎo)學(xué)生時(shí)刻注意通過(guò)一定的學(xué)習(xí)方法來(lái)更好地掌握知識(shí)。

表1 面向?qū)ο蠡靖拍钆cUML表示
第七章面向?qū)ο蟮姆治觯夯谥皩W(xué)習(xí)的面向?qū)ο蟮母拍睿寣W(xué)生自己討論如何去做分析,對(duì)學(xué)生理解不到位的地方加以補(bǔ)充強(qiáng)調(diào),引導(dǎo)學(xué)生對(duì)比結(jié)構(gòu)化分析來(lái)提高分析能力。接著提問(wèn)學(xué)生“怎么將理論加以應(yīng)用?”對(duì)學(xué)生回答給予鼓勵(lì),讓學(xué)生體會(huì)到軟件工程的指導(dǎo)作用,并積極落實(shí)項(xiàng)目實(shí)踐。
第八章軟件體系結(jié)構(gòu):討論“蓋草房和蓋高樓大廈有什么不一樣?”引出軟件體系結(jié)構(gòu)。對(duì)不同的需求要分析更加合理的方法,軟件行業(yè)發(fā)展越來(lái)越好,小作坊形式不會(huì)長(zhǎng)久,大型軟件系統(tǒng)需要有一定的結(jié)構(gòu)作為指導(dǎo),軟件危機(jī)的解決需要工程化指導(dǎo),對(duì)于面向?qū)ο蟮姆椒ǎ诜治鲈O(shè)計(jì)與實(shí)現(xiàn)中需要一定的抽象能力,對(duì)于可以公用化的模塊需要復(fù)用,重復(fù)造輪不會(huì)帶來(lái)快速發(fā)展,通過(guò)抽象類、接口、構(gòu)件、服務(wù)等一層一層的抽象,不斷細(xì)化那些需要變化修改的內(nèi)容,提煉可復(fù)用的程序,形成一定的框架。在體系結(jié)構(gòu)框架講解后,簡(jiǎn)單講解軟件設(shè)計(jì)模式,強(qiáng)調(diào)解決某一類相似問(wèn)題的方法論的重要性,引導(dǎo)學(xué)生要學(xué)習(xí)別人的方法,并實(shí)踐調(diào)整形成更好的方法,在以后的工作中遇到問(wèn)題可以先看看設(shè)計(jì)模式中是不是已經(jīng)有了解決方案,那么完全可以通過(guò)應(yīng)用來(lái)更快完成項(xiàng)目開(kāi)發(fā)。最后總結(jié)對(duì)比軟件體系結(jié)構(gòu)、風(fēng)格與設(shè)計(jì)模式,引導(dǎo)學(xué)生更好地通過(guò)差異加深理解。
第九章面向?qū)ο蟮脑O(shè)計(jì):回顧軟件設(shè)計(jì)的相關(guān)知識(shí),提問(wèn)“是不是面向?qū)ο蠓治鐾瓿珊笤僮雒嫦驅(qū)ο蟮脑O(shè)計(jì)呢?”強(qiáng)調(diào)面向?qū)ο蟮脑O(shè)計(jì)經(jīng)歷從依賴結(jié)構(gòu)化分析結(jié)果到與面向?qū)ο蠓治霾⑿胁粩嗟鷥?yōu)化,而不只是單純地做完分析就不需要再做分析,通過(guò)提問(wèn)“適合用什么軟件過(guò)程模型?”來(lái)強(qiáng)調(diào)知識(shí)的關(guān)聯(lián)性,引導(dǎo)學(xué)生不斷地對(duì)所學(xué)的知識(shí)加以反復(fù)回看,踐行迭代的思想,去體會(huì)量變到質(zhì)變的成就,引導(dǎo)學(xué)生在發(fā)現(xiàn)問(wèn)題中不斷優(yōu)化完善自我。
第十章編碼實(shí)現(xiàn):軟件工程并不講解怎么寫代碼,通過(guò)具體學(xué)習(xí)過(guò)的編程語(yǔ)言對(duì)比,提出通用的軟件編程風(fēng)格,為了讓學(xué)生理解價(jià)值,通過(guò)反問(wèn)“在一個(gè)項(xiàng)目團(tuán)隊(duì)中,自己寫的方法只有自己用,別人不會(huì)用,別人寫的方法自己也不用,因?yàn)闆](méi)有一定規(guī)范,理解不了、需要花更多的時(shí)間去讀懂等原因,團(tuán)隊(duì)的價(jià)值何在?”引導(dǎo)學(xué)生團(tuán)隊(duì)合作價(jià)值發(fā)揮好需要一定的規(guī)范,需要大家能主動(dòng)溝通學(xué)習(xí)來(lái)更好地融入團(tuán)隊(duì)。
第十一章軟件測(cè)試:提問(wèn)“不測(cè)試直接上線可以嗎?什么時(shí)候測(cè)試?”引出軟件測(cè)試相關(guān)概念。通過(guò)討論讓學(xué)生找到為什么不能在開(kāi)發(fā)完成后才測(cè)試,引導(dǎo)生活中也需要做好計(jì)劃,挖掘生活中的哲學(xué),盡早發(fā)現(xiàn)問(wèn)題,盡早解決問(wèn)題[2],不能到最后一刻才發(fā)現(xiàn)問(wèn)題而導(dǎo)致付出慘痛代價(jià)。引導(dǎo)學(xué)生使用對(duì)比的方法,對(duì)比軟件測(cè)試與軟件調(diào)試,對(duì)比白盒測(cè)試與黑盒測(cè)試來(lái)更好地學(xué)習(xí)。在講解邊界值分析法時(shí),引入社會(huì)上典型的“59歲現(xiàn)象”[3],以軟件更容易在邊界值上出現(xiàn)錯(cuò)誤,引導(dǎo)工作中引以為戒,引導(dǎo)學(xué)生堅(jiān)守住職業(yè)道德底線。結(jié)合學(xué)生的學(xué)習(xí)生活,提醒學(xué)生在考試中要警惕不舞弊,不要存有僥幸心理,合理計(jì)劃學(xué)習(xí),查缺補(bǔ)漏,正確地看待考核與測(cè)試。
第十二章軟件維護(hù):維護(hù)作為最后一個(gè)階段,學(xué)生可能興趣不大,恰恰相反,維護(hù)是軟件生命周期中時(shí)間最長(zhǎng)的階段,為了讓學(xué)生理解,結(jié)合學(xué)生日常使用的支付寶、手機(jī)銀行軟件來(lái)提問(wèn)“有沒(méi)有注意到支付寶什么時(shí)候更新版本?或者注意到某些軟件有提示需要更新升級(jí)?”“代碼寫完了就不管了?”軟件開(kāi)發(fā)完成后,要滿足不斷變化的需求,維護(hù)以及如何維護(hù)非常重要,引導(dǎo)學(xué)生不要覺(jué)得代碼寫完了就不需要做了,要提高責(zé)任意識(shí)與服務(wù)意識(shí),不斷完善系統(tǒng),更好地服務(wù)用戶。針對(duì)學(xué)生熬夜現(xiàn)象,提問(wèn)“是不是年輕就可以放肆熬夜?”來(lái)引導(dǎo)學(xué)生加強(qiáng)體育鍛煉,合理規(guī)劃日常安排,維護(hù)好自己的身體[4]。
通過(guò)在各個(gè)章節(jié)內(nèi)容中,發(fā)掘和學(xué)生學(xué)習(xí)生活相關(guān)的刷單、如何學(xué)習(xí)、法律意識(shí)、工作創(chuàng)業(yè)等方面,在課堂中以提問(wèn)討論的方式,讓學(xué)生順其自然地接受,認(rèn)為這就是課堂的一部分[5],實(shí)現(xiàn)課程與思政融合,引導(dǎo)學(xué)生通過(guò)正確的方法找到適合自己發(fā)展的方法,引導(dǎo)學(xué)生培養(yǎng)思政意識(shí),不斷創(chuàng)新,逐步實(shí)現(xiàn)個(gè)人全面的發(fā)展。在課程考核中,通過(guò)開(kāi)放式簡(jiǎn)答題來(lái)了解思政教育的效果,在256人中僅有13人未能表達(dá)出在課程學(xué)習(xí)中所吸收的思政內(nèi)容,分析可見(jiàn)學(xué)生對(duì)軟件工程中的方法元素掌握較好,在項(xiàng)目實(shí)踐中也能在原有的基礎(chǔ)上有所突破,在今后的教學(xué)中將結(jié)合提問(wèn)討論方式與故事分享方式結(jié)合,進(jìn)一步挖掘更多與學(xué)生息息相關(guān)的思政元素,對(duì)“知識(shí)點(diǎn)—思政元素—職業(yè)技能”課程思政教學(xué)模式[6]加以融合實(shí)踐與探索,堅(jiān)持合目的性、合規(guī)律性與合必然性的統(tǒng)一[7]來(lái)發(fā)揮課程思政的價(jià)值,設(shè)計(jì)參考協(xié)同創(chuàng)新評(píng)價(jià)[8]等更好的思政教育評(píng)價(jià)方法來(lái)提高思政教育能力。