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