楊洋 曹天杰
摘要:軟件工程是一門(mén)理論和實(shí)踐性都很強(qiáng)的計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)課程,課程內(nèi)容抽象、龐雜,教學(xué)實(shí)踐環(huán)節(jié)薄弱。筆者依據(jù)近幾年軟件工程的教學(xué)實(shí)際經(jīng)驗(yàn),分析教學(xué)過(guò)程中存在的一些問(wèn)題。從學(xué)生錯(cuò)誤概念的糾正、教學(xué)方法的應(yīng)用、團(tuán)隊(duì)合作的設(shè)計(jì)、實(shí)踐教學(xué)環(huán)節(jié)的設(shè)計(jì)、軟件工程環(huán)境的構(gòu)建等幾方面進(jìn)行分析和論述,以期對(duì)教學(xué)起到指導(dǎo)和借鑒的作用。
關(guān)鍵詞:軟件工程;工程化方法;問(wèn)題描述;建議;注意點(diǎn)
文章編號(hào):1672-5913(2013)07-0062-04
中圖分類(lèi)號(hào):G642
軟件工程在計(jì)算機(jī)專(zhuān)業(yè)領(lǐng)域中是一門(mén)較普及的課程,本課程主要研究如何將工程化方法應(yīng)用于軟件的開(kāi)發(fā)、運(yùn)行和維護(hù)過(guò)程之中。根據(jù)培養(yǎng)計(jì)算機(jī)應(yīng)用型人才的需要,本課程的任務(wù)是通過(guò)講述軟件的工程化開(kāi)發(fā)方法和相關(guān)的軟件開(kāi)發(fā)工具、開(kāi)發(fā)過(guò)程、開(kāi)發(fā)規(guī)范,使學(xué)生了解軟件工程的本質(zhì),掌握常用的軟件開(kāi)發(fā)方法,并且能夠有意識(shí)地將軟件工程原理運(yùn)用于實(shí)際的軟件開(kāi)發(fā)和維護(hù)過(guò)程中,提高學(xué)生的專(zhuān)業(yè)素質(zhì)。但在實(shí)際教學(xué)中,學(xué)生認(rèn)為該課程內(nèi)容理論性強(qiáng),需要記憶的內(nèi)容多,枯燥無(wú)味,學(xué)不進(jìn)去,課程結(jié)束后對(duì)于軟件開(kāi)發(fā)過(guò)程、規(guī)范和開(kāi)發(fā)方法的概念依然很模糊。筆者依據(jù)自己對(duì)于軟件工程的理解,通過(guò)近幾年從事軟件工程課程的授課感受,結(jié)合學(xué)生的反饋意見(jiàn),做了一些思考和總結(jié)。
1 程序與軟件概念混淆
學(xué)生從接受計(jì)算機(jī)領(lǐng)域方面的課程開(kāi)始,就一直以編程為主,所以,大多數(shù)學(xué)生認(rèn)為該課程就是學(xué)習(xí)如何編程。當(dāng)提出“什么是軟件”這個(gè)問(wèn)題時(shí),大多數(shù)學(xué)生無(wú)法給出準(zhǔn)確的定義;當(dāng)提出“程序和軟件的區(qū)別”這個(gè)問(wèn)題時(shí),大多數(shù)學(xué)生會(huì)回答“程序=軟件”。
其實(shí),程序和軟件是不同的概念,編程的目標(biāo)是程序,軟件工程的目標(biāo)是軟件,軟件=程序+文檔。從軟件工程的角度看,編程的比重不足15%,其他如需求分析、設(shè)計(jì)、制作、測(cè)試和維護(hù)等比重占85%。學(xué)生一開(kāi)始就對(duì)課程認(rèn)識(shí)存在誤區(qū),認(rèn)為軟件工程就是編寫(xiě)程序,因此,作為教師應(yīng)引導(dǎo)他們認(rèn)識(shí)軟件和程序的區(qū)別,學(xué)生才會(huì)去思考它們之間的不同,此時(shí)再給學(xué)生輸入軟件工程的概念,學(xué)生才能開(kāi)始有意識(shí)地去了解軟件工程。
作為教師,首先應(yīng)給學(xué)生介紹軟件工程課程在專(zhuān)業(yè)知識(shí)體系中的地位,讓學(xué)生在宏觀上了解該課程的性質(zhì)及與其他專(zhuān)業(yè)課程之間的聯(lián)系和區(qū)別,指導(dǎo)學(xué)生正確認(rèn)識(shí)該課程的特點(diǎn),避免他們?nèi)蘸笃x課程方向,導(dǎo)致盲目學(xué)習(xí)。
2 案例教學(xué)法在教學(xué)中的運(yùn)用
相比計(jì)算機(jī)專(zhuān)業(yè)的其他課程而言,軟件工程理論性和抽象性較強(qiáng),學(xué)生學(xué)習(xí)起來(lái)比較吃力。大多數(shù)軟件工程的教材都是重理論輕實(shí)踐,需記憶的內(nèi)容較多,不容易理解;各個(gè)階段的概念和任務(wù)容易混淆,學(xué)生學(xué)習(xí)興趣不大,極易造成反感情緒。
傳統(tǒng)的滿堂灌的教學(xué)方法顯然不適合軟件工程課程的特點(diǎn)和教學(xué)要求。經(jīng)過(guò)幾年的教學(xué)嘗試,筆者認(rèn)為在課堂中可以采用案例教學(xué)法。案例教學(xué)法是指教師根據(jù)具體的教學(xué)環(huán)境,將復(fù)雜抽象的概念運(yùn)用到具體案例中進(jìn)行講解,引導(dǎo)學(xué)生分析問(wèn)題,并最終解決問(wèn)題的一種教學(xué)過(guò)程。
在教學(xué)中,教師選擇軟件開(kāi)發(fā)中的一些實(shí)際案例,將學(xué)生分成若干小組,每組不同成員擔(dān)任不同的角色。待小組成員確定案例后,模擬實(shí)際開(kāi)發(fā)環(huán)境,運(yùn)用所學(xué)的理論知識(shí)展開(kāi)分析和討論。討論結(jié)束后,由各組選派一名代表在全班同學(xué)面前匯報(bào)討論結(jié)果,教師再針對(duì)存在的問(wèn)題進(jìn)行補(bǔ)充。案例討論增強(qiáng)了學(xué)生對(duì)軟件開(kāi)發(fā)項(xiàng)目的感性認(rèn)識(shí)和實(shí)際經(jīng)驗(yàn),激發(fā)了學(xué)生的學(xué)習(xí)興趣,提高和培養(yǎng)了他們分析問(wèn)題和解決問(wèn)題的能力。
在進(jìn)行案例教學(xué)時(shí),教師需注意以下幾點(diǎn):一是要選擇合適的案例,案例不在于多,而在于是否適合課程特點(diǎn)和學(xué)生的實(shí)際情況;二是教師要及時(shí)引導(dǎo),案例討論時(shí),教師要把握好討論方向,要摒棄主觀臆想的成分;三是注重加強(qiáng)學(xué)生理論知識(shí)的掌握,學(xué)生的軟件開(kāi)發(fā)經(jīng)驗(yàn)較少甚至完全沒(méi)有,案例教學(xué)是需要學(xué)生有理論知識(shí)作為討論的基礎(chǔ),如果沒(méi)有一定的理論知識(shí)是無(wú)法討論的,所以教師要注重培養(yǎng)學(xué)生的理論知識(shí)。
3 團(tuán)隊(duì)合作完成任務(wù)
軟件開(kāi)發(fā)是團(tuán)隊(duì)合作完成的任務(wù)。在教學(xué)過(guò)程中,要讓學(xué)生體會(huì)到團(tuán)隊(duì)的氛圍,培養(yǎng)其團(tuán)隊(duì)合作的能力和精神。團(tuán)隊(duì)合作以5~6人一個(gè)小組為宜,人數(shù)太多會(huì)導(dǎo)致“三個(gè)和尚沒(méi)水吃”,人數(shù)太少會(huì)帶來(lái)工作量偏重。教師在進(jìn)行分組時(shí),最好根據(jù)學(xué)生的能力和水平,明確學(xué)習(xí)任務(wù),進(jìn)行合理有效的分工,按軟件開(kāi)發(fā)階段把各組學(xué)生分為需求分析、設(shè)計(jì)、編碼、測(cè)試及項(xiàng)目管理人員,每位學(xué)生承擔(dān)一個(gè)角色。例如,在南京城市職業(yè)學(xué)院該課程的教學(xué)過(guò)程中,我們將學(xué)生每5人分為一個(gè)項(xiàng)目組,每人承擔(dān)相應(yīng)的角色,如項(xiàng)目經(jīng)理、技術(shù)支持員、配置管理員、軟件工程師和測(cè)試工程師等;教師擔(dān)任企業(yè)培訓(xùn)師的角色,分配給每一個(gè)項(xiàng)目組課題,讓學(xué)生模擬參與到軟件企業(yè)實(shí)訓(xùn)中,最終使學(xué)生完成需求分析、設(shè)計(jì)、代碼編寫(xiě)、測(cè)試、部署全過(guò)程,使得學(xué)生在學(xué)習(xí)過(guò)程中體會(huì)到軟件開(kāi)發(fā)工程師的角色任務(wù)。這樣,學(xué)生就有合作意識(shí)、責(zé)任感和集體榮譽(yù)感,模擬軟件企業(yè)項(xiàng)目組的情境,根據(jù)公司管理體制開(kāi)發(fā)項(xiàng)目。學(xué)生在團(tuán)隊(duì)合作學(xué)習(xí)時(shí),作為教師應(yīng)加強(qiáng)對(duì)其合作方法的指導(dǎo);學(xué)生在開(kāi)發(fā)過(guò)程中遇到問(wèn)題,教師建議他們自行討論來(lái)解決,提高他們的溝通交際能力,培養(yǎng)其團(tuán)隊(duì)合作精神。
在組織學(xué)生團(tuán)隊(duì)合作學(xué)習(xí)時(shí),筆者認(rèn)為還應(yīng)注重培養(yǎng)學(xué)生以下能力:一是尊重他人,在其他人發(fā)言時(shí),要善于傾聽(tīng),尊重他人的觀點(diǎn),能夠?qū)λ说陌l(fā)言做出合理的評(píng)價(jià);二是善于總結(jié),在各小組發(fā)言完畢后,能根據(jù)發(fā)言情況,總結(jié)出要點(diǎn);三是敢于質(zhì)疑,當(dāng)自己的觀點(diǎn)與他人觀點(diǎn)發(fā)生碰撞時(shí),要敢于質(zhì)疑,提出自己的想法,從而完善自己的觀點(diǎn)和認(rèn)識(shí)。
4 實(shí)踐教學(xué)環(huán)節(jié)以大作業(yè)的形式貫穿
由于計(jì)算機(jī)專(zhuān)業(yè)學(xué)生畢業(yè)后大部分從事與軟件開(kāi)發(fā)相關(guān)的工作,所以該課程的實(shí)踐教學(xué)尤為重要。實(shí)踐教學(xué)是加深理解理論知識(shí)的有效途徑。是培養(yǎng)學(xué)生動(dòng)手能力和技術(shù)創(chuàng)新精神的有效手段。但在教學(xué)過(guò)程中,由于實(shí)驗(yàn)條件有限,教師僅給出項(xiàng)目各階段文檔模板或范例,學(xué)生按照要求編寫(xiě)相應(yīng)的文檔,文檔完成后沒(méi)有企業(yè)項(xiàng)目開(kāi)發(fā)的嚴(yán)格評(píng)審機(jī)制,學(xué)生無(wú)法發(fā)現(xiàn)開(kāi)發(fā)階段里存在的問(wèn)題,難以建立標(biāo)準(zhǔn)化和規(guī)范化的思想。實(shí)踐教學(xué)環(huán)節(jié)相對(duì)理論教學(xué)環(huán)節(jié)而言,內(nèi)容薄弱,甚至有些流于形式。
作為教師,在軟件工程實(shí)踐教學(xué)環(huán)節(jié)中,盡可能靈活安排實(shí)驗(yàn)時(shí)間,實(shí)踐環(huán)節(jié)應(yīng)以大作業(yè)的形式貫穿于整個(gè)教學(xué)過(guò)程。教師在該課程教學(xué)初期,首先給學(xué)生若干項(xiàng)目課題進(jìn)行選擇,為了讓學(xué)生能有較充足的基本知識(shí)和充分的準(zhǔn)備,應(yīng)當(dāng)給學(xué)生足夠的時(shí)間來(lái)完成。比如,需求分析可安排在第3周布置、第5周提交;設(shè)計(jì)可安排在第6周布置、第8周提交;測(cè)試案例可安排在第9周布置、第11周提交;質(zhì)量評(píng)估可安排在第12周布置、第14周提交。教師應(yīng)要求每位學(xué)生參與,抽查部分學(xué)生并要求其在全班進(jìn)行匯報(bào)和交流。
除此之外,筆者認(rèn)為還可以邀請(qǐng)一些理論知識(shí)和開(kāi)發(fā)經(jīng)驗(yàn)都很豐富的行業(yè)人員與學(xué)生互動(dòng)交流,定期舉辦專(zhuān)題講座,如行業(yè)發(fā)展趨勢(shì)、行業(yè)現(xiàn)狀和自己的從業(yè)經(jīng)驗(yàn)等,讓學(xué)生了解企業(yè)軟件開(kāi)發(fā)中的實(shí)際問(wèn)題,讓學(xué)生學(xué)到在課堂中學(xué)不到的知識(shí)和實(shí)際經(jīng)驗(yàn),提高學(xué)生實(shí)際軟件開(kāi)發(fā)的能力。
在進(jìn)行實(shí)踐環(huán)節(jié)教學(xué)時(shí),筆者認(rèn)為需注意以下幾點(diǎn):一是加強(qiáng)師生對(duì)實(shí)踐教學(xué)環(huán)節(jié)重要性的認(rèn)識(shí),大多數(shù)師生重理論輕實(shí)踐,而軟件工程課程的特殊性,必須加大學(xué)生實(shí)踐能力的培養(yǎng);二是規(guī)范實(shí)踐教學(xué)環(huán)節(jié)的考核,教師應(yīng)及時(shí)檢查學(xué)生實(shí)踐環(huán)節(jié)的質(zhì)量,與學(xué)生面對(duì)面交流,注意收集學(xué)生的反饋意見(jiàn),發(fā)現(xiàn)問(wèn)題,及時(shí)解決,不要使實(shí)踐教學(xué)流于形式;三是加大實(shí)踐教學(xué)環(huán)節(jié)的考核比例,我們將實(shí)踐教學(xué)環(huán)節(jié)考核比例增加至總成績(jī)的70%。在對(duì)學(xué)生的實(shí)踐環(huán)節(jié)考核中,我們更側(cè)重于對(duì)學(xué)生的實(shí)踐操作能力、綜合應(yīng)用能力、文檔編寫(xiě)能力、團(tuán)隊(duì)合作和溝通能力的考核。南京城市職業(yè)學(xué)院該課程的實(shí)踐考核主要從2個(gè)方面進(jìn)行:職業(yè)素養(yǎng)評(píng)定和業(yè)務(wù)能力考核。職業(yè)素養(yǎng)評(píng)定主要通過(guò)對(duì)學(xué)生的平時(shí)工作表現(xiàn),評(píng)價(jià)其所具備的工作素質(zhì),實(shí)行百分制,占實(shí)踐教學(xué)環(huán)節(jié)考核比例的30%。內(nèi)容包括考勤情況、個(gè)人素養(yǎng)、團(tuán)隊(duì)溝通和日志填寫(xiě)等。例如,學(xué)生是否能夠按企業(yè)工作制度進(jìn)行工作;學(xué)生對(duì)于教師或組長(zhǎng)交代的工作是否能反應(yīng)迅速準(zhǔn)確,是否能抓住工作的關(guān)鍵;是否有不斷提高個(gè)人工作效率和自己業(yè)務(wù)水平的意愿;是否能夠和小組成員進(jìn)行良好的溝通和協(xié)作;是否能夠按時(shí)認(rèn)真完成每天的工作日志。業(yè)務(wù)能力考核主要評(píng)定學(xué)生在規(guī)定時(shí)間內(nèi)完成任務(wù)的情況,同樣實(shí)行百分制,占實(shí)踐教學(xué)環(huán)節(jié)考核比例的40%。內(nèi)容包括軟件完成的質(zhì)量和所花費(fèi)的時(shí)間。例如,提交的程序是否能夠正常運(yùn)行;程序代碼是否能夠嚴(yán)格遵守代碼規(guī)范性;項(xiàng)目團(tuán)隊(duì)、教師和企業(yè)專(zhuān)家對(duì)其開(kāi)發(fā)的軟件產(chǎn)品是否滿意;提交的軟件產(chǎn)品是否達(dá)到預(yù)期效果;是否在規(guī)定時(shí)間完成任務(wù)。2方面綜合計(jì)算后評(píng)定學(xué)生的實(shí)踐環(huán)節(jié)成績(jī)。軟件工程課程的教學(xué)目的是使學(xué)生能將軟件工程的思想和方法應(yīng)用于實(shí)際軟件開(kāi)發(fā)過(guò)程中,應(yīng)著重培養(yǎng)學(xué)生的動(dòng)手實(shí)踐能力,加大實(shí)踐教學(xué)環(huán)節(jié)的考核比例可使實(shí)踐教學(xué)環(huán)節(jié)不再薄弱。
5 打造良好的軟件工程環(huán)境
一個(gè)成功的軟件必須經(jīng)過(guò)一系列嚴(yán)格的過(guò)程,包括可行性研究、需求分析、設(shè)計(jì)、編碼、測(cè)試、包裝、發(fā)行、宣傳、銷(xiāo)售和客戶服務(wù)等。在軟件工程教學(xué)中,大多數(shù)情況是學(xué)生將實(shí)驗(yàn)中所做的工作整理成作業(yè)的形式提交給教師,教師進(jìn)行批改,并沒(méi)有嚴(yán)格的走查、審查和技術(shù)復(fù)審等評(píng)審機(jī)制,沒(méi)有交付給用戶使用,更談不上驗(yàn)收和維護(hù)。此時(shí),學(xué)生對(duì)于軟件工程的理解程度依然停留在分析、設(shè)計(jì)和編碼這幾個(gè)層面。
對(duì)于軟件工程課程來(lái)說(shuō),如果只是讓學(xué)生在實(shí)踐環(huán)節(jié)中進(jìn)行軟件開(kāi)發(fā)是不夠的,學(xué)生需要在一個(gè)符合軟件工程要求的環(huán)境下開(kāi)發(fā)軟件,才能夠真正掌握軟件工程的思想和方法,因此軟件工程教學(xué)取得效果的關(guān)鍵是建立一個(gè)良好的軟件工程環(huán)境。
筆者認(rèn)為,在課程教學(xué)中可適當(dāng)引入一些常用的軟件工程工具,比如進(jìn)行軟件需求分析和設(shè)計(jì)時(shí)可使用建模工具,進(jìn)行軟件測(cè)試時(shí)可使用測(cè)試工具等。結(jié)合課程實(shí)踐教學(xué)環(huán)節(jié)的要求,根據(jù)學(xué)生實(shí)際情況和項(xiàng)目的固有特點(diǎn),教師可編寫(xiě)實(shí)驗(yàn)指導(dǎo)手冊(cè),包括開(kāi)發(fā)過(guò)程模型、文檔模板、編碼標(biāo)準(zhǔn)、階段評(píng)審標(biāo)準(zhǔn)和驗(yàn)收審查標(biāo)準(zhǔn)等,將實(shí)踐環(huán)節(jié)的過(guò)程規(guī)范化和產(chǎn)業(yè)化,要求學(xué)生在相對(duì)真實(shí)、良好的軟件工程環(huán)境中去理解軟件工程方法論、過(guò)程模型、開(kāi)發(fā)環(huán)境和軟件開(kāi)發(fā)的管理技術(shù)等,體會(huì)和掌握軟件工程的思想,能將這一系列活動(dòng)靈活運(yùn)用到實(shí)際開(kāi)發(fā)工作中去。例如,南京城市職業(yè)學(xué)院與軟件開(kāi)發(fā)公司合作開(kāi)發(fā)了“軟件人才實(shí)訓(xùn)平臺(tái)”,該平臺(tái)構(gòu)建了良好的軟件工程環(huán)境。在軟件工程課程實(shí)訓(xùn)中,我們利用該平臺(tái)完成了相關(guān)實(shí)訓(xùn),學(xué)生可以通過(guò)該平臺(tái)了解軟件開(kāi)發(fā)過(guò)程中的一系列流程,如項(xiàng)目環(huán)境準(zhǔn)備、需求分析、設(shè)計(jì)、編碼、測(cè)試、部署和維護(hù)等。該平臺(tái)要求學(xué)生完成相應(yīng)階段后,必須在該平臺(tái)上提交文檔和相關(guān)資料,教師可以通過(guò)該平臺(tái)學(xué)生提交的相關(guān)成果進(jìn)行考核評(píng)分。這就很好地模擬了軟件工程環(huán)境,讓學(xué)生參與到真實(shí)化企業(yè)實(shí)訓(xùn)中去。
在構(gòu)建軟件工程環(huán)境時(shí),應(yīng)以軟件工程環(huán)境的主要目標(biāo)和基本需求為基礎(chǔ),把開(kāi)發(fā)技術(shù)、管理技術(shù)、支撐環(huán)境、相關(guān)工具和開(kāi)發(fā)平臺(tái)等有關(guān)因素有機(jī)地結(jié)合在一起,全方位考慮。
6 結(jié)語(yǔ)
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,軟件工程領(lǐng)域里的新知識(shí)和新理論也在不斷涌現(xiàn),對(duì)該課程教學(xué)方法和手段的探索是一項(xiàng)長(zhǎng)期而艱巨的任務(wù)。以上只是筆者在近幾年教學(xué)工作中的一些思考和建議,在今后的教學(xué)工作中,教師應(yīng)為學(xué)生豐富和完善軟件工程環(huán)境,注重激發(fā)學(xué)生的學(xué)習(xí)興趣,注重學(xué)生學(xué)習(xí)主動(dòng)性和創(chuàng)造性的培養(yǎng)。
(編輯:郭田珍)