郭詠梅+張劍妹+韓冰
摘要:針對學(xué)生在軟件開發(fā)過程中操作不規(guī)范、實踐動手能力弱的問題,對《軟件工程》課程的實踐教學(xué)內(nèi)容、方法、實施過程和考核方法進行改革。闡述了分層遞進的實踐教學(xué)過程、案例驅(qū)動的教學(xué)方法和重視實踐能力的考核方法,使學(xué)生在實際項目開發(fā)過程中不斷提高基本工程能力和創(chuàng)新能力。
關(guān)鍵詞:軟件工程;創(chuàng)新能力;實踐教學(xué)
DOIDOI:10.11907/rjdk.171690
中圖分類號:G434
文獻標識碼:A 文章編號:1672-7800(2017)006-0212-02
0 引言
《軟件工程》課程是計算機科學(xué)與技術(shù)專業(yè)的一門專業(yè)基礎(chǔ)核心課程,重點講授軟件工程的基本概念、原理和方法,使學(xué)生不僅認識和理解開發(fā)大型軟件的基本方法和過程,而且學(xué)以致用,將理論知識運用到軟件開發(fā)的分析、設(shè)計、編碼和測試等活動中,基本具備解決實際問題的軟件工程能力[1]。但在實際教學(xué)過程中,普遍存在著一些問題:教學(xué)活動重理論輕實踐,重知識傳授輕實踐能力培養(yǎng);實踐教學(xué)缺少對學(xué)生工程能力和工程素養(yǎng)的訓(xùn)練,學(xué)生實際動手能力不足;學(xué)生分析建模、設(shè)計算法和編碼測試不規(guī)范,其專業(yè)能力與軟件產(chǎn)業(yè)界的需求往往存在較大的脫節(jié),難以滿足社會和企業(yè)用人需求。為此,應(yīng)用型高?!盾浖こ獭氛n程教學(xué)必須區(qū)別于科學(xué)型和工程型學(xué)校,要以培養(yǎng)軟件應(yīng)用型人才為目標,以培養(yǎng)學(xué)生工程基本能力為導(dǎo)向,針對教學(xué)中存在的問題,對《軟件工程》課程的實踐環(huán)節(jié)進行改革,探索行之有效的教學(xué)方法和教學(xué)手段,改革實踐教學(xué)的實施過程,提高學(xué)生應(yīng)用所學(xué)知識解決真實問題的工程能力和職業(yè)素養(yǎng),適應(yīng)經(jīng)濟社會發(fā)展對應(yīng)用型人才的需求。
1 軟件工程基本能力分析
對于應(yīng)用型軟件人才,其主要任務(wù)是將成熟的技術(shù)和理論應(yīng)用到實際的生產(chǎn)和生活中,其培養(yǎng)的關(guān)鍵是強調(diào)對學(xué)生工程能力的培養(yǎng)[2]。在學(xué)生掌握《軟件工程》課程基礎(chǔ)理論知識的同時,重點培養(yǎng)以下基本能力:
(1)需求分析與系統(tǒng)設(shè)計能力。掌握軟件工程結(jié)構(gòu)化和面向?qū)ο蠓治?、設(shè)計方法,能夠用規(guī)范的方法獲取用戶需求,并進行需求分析、概要設(shè)計和詳細設(shè)計;熟悉常用的軟件分析與設(shè)計工具,能夠描述系統(tǒng)的功能模型、數(shù)據(jù)模型和動態(tài)模型,設(shè)計系統(tǒng)結(jié)構(gòu)、模塊實現(xiàn)算法和用戶界面等;能夠閱讀理解和撰寫系統(tǒng)需求規(guī)格說明書、概要設(shè)計和詳細設(shè)計說明書等軟件開發(fā)文檔。
(2)編程能力和測試程序能力。根據(jù)設(shè)計階段的設(shè)計方案,在某一特定的開發(fā)平臺上,應(yīng)用軟件工程的技術(shù)和工具,編寫程序?qū)崿F(xiàn)軟件系統(tǒng)的功能并進行測試。要求學(xué)生熟悉一門高級語言編程語言,如Java、C++等,掌握軟件的編輯、編譯、運行和調(diào)試技術(shù);遵循軟件工程要求的編程規(guī)范,養(yǎng)成良好的編程風格;掌握基本的軟件測試步驟、測試方法和常用的測試工具,能應(yīng)用白盒測試和黑盒測試技術(shù)設(shè)計簡單的測試用例;能夠閱讀理解和撰寫軟件測試計劃、軟件測試報告等測試文檔。
(3)團隊協(xié)作能力和溝通能力。每個成員都要充分理解團隊合作的重要性,在具備個人工作能力和表達溝通能力的基礎(chǔ)上,能夠與小組成員分工合作,遇到問題能夠與成員討論協(xié)商,共同完成軟件項目開發(fā)。
2 軟件工程基本能力培養(yǎng)途徑
基本能力的培養(yǎng)要以課程知識為載體,通過一系列的教學(xué)活動來完成[3]。在教學(xué)過程中,以案例教學(xué)取代傳統(tǒng)的理論教學(xué),強化實踐為主取代講授為主,精選實驗內(nèi)容、改進教學(xué)方法和考核方法,多方面密切配合,有效培養(yǎng)學(xué)生的軟件工程基本能力。
2.1 構(gòu)建分層遞進的實踐教學(xué)環(huán)節(jié)
《軟件工程》課程的實踐環(huán)節(jié)分為3個層次:案例解剖、課程實驗、課程設(shè)計。在整個教學(xué)過程中,由教師引導(dǎo),從案例解剖入手,到分模塊的課程實驗,再到整體的課程設(shè)計,遵循學(xué)生的認知過程,讓學(xué)生由簡單到復(fù)雜,由模仿設(shè)計到創(chuàng)新設(shè)計,不斷提高學(xué)生的實際動手能力。
(1)案例解剖。在課堂教學(xué)過程中,教師緊緊圍繞一個典型的案例開展教學(xué),將課程知識點與案例緊密結(jié)合,引導(dǎo)學(xué)生按照軟件開發(fā)的基本過程解剖案例,讓學(xué)生動手體驗案例開發(fā)各階段的主要活動。首先讓學(xué)生以用戶的身份實際操作應(yīng)用案例,明確案例系統(tǒng)能夠完成的功能和具備的性能,然后教師引導(dǎo)學(xué)生以開發(fā)者的身份將系統(tǒng)的開發(fā)分為分析、設(shè)計、編碼測試3個主要階段,教師緊緊圍繞案例講解用戶需求獲取方法、需求建模方法和工具、系統(tǒng)設(shè)計方法、編碼規(guī)范、測試方法以及常用工具的使用,并讓學(xué)生動手模仿和驗證各階段的實際操作,讓學(xué)生真正看到一個應(yīng)用系統(tǒng)是如何開發(fā)的,初步認識一個軟件項目的開發(fā)方法和過程,了解軟件項目開發(fā)流程和規(guī)范,養(yǎng)成良好的軟件開發(fā)習慣,加深理解軟件工程的基本概念、原理和方法在實際項目中的應(yīng)用,建立初步的工程意識。
(2)課程實驗。根據(jù)課程的知識單元設(shè)計分模塊的實驗項目,主要類型包括設(shè)計性實驗和綜合性實驗,學(xué)生模仿案例的開發(fā)過程,舉一反三,以小組形式完成分模塊的課程實驗。例如面向?qū)ο箝_發(fā)方法實驗分為需求分析、設(shè)計和編碼測試3個主要模塊,學(xué)生以小組形式完成實驗內(nèi)容,小組成員分工合作,用面向?qū)ο蟮姆治龇椒ê筒襟E需求分析,建立系統(tǒng)的對象模型、功能模型和動態(tài)模型;然后通過迭代完成面向?qū)ο蟮脑O(shè)計,最后編碼實現(xiàn)系統(tǒng)的主要功能,設(shè)計簡單測試用例進行類測試和系統(tǒng)測試,撰寫需求規(guī)格說明書、系統(tǒng)設(shè)計說明書和系統(tǒng)測試報告。在實驗過程中,一方面綜合應(yīng)用Java語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫原理等前修課程的知識,將理論知識與實際應(yīng)用相結(jié)合,培養(yǎng)學(xué)生的獨立思維能力和應(yīng)用知識解決實際問題的能力;另一方面使用分析、設(shè)計和測試的常用方法和工具,進一步訓(xùn)練學(xué)生分析設(shè)計能力、編碼測試能力和分工合作能力,培養(yǎng)學(xué)生的工程素養(yǎng),促進工程能力的提升。
(3)課程設(shè)計。課程設(shè)計是在整個課程結(jié)束后開設(shè)的綜合性實踐項目,時間1周,采用分組形式,每組3~4人,完成一個比較完整的軟件項目開發(fā)。該階段聘請企業(yè)有開發(fā)經(jīng)驗的教師一起設(shè)計課程題目和內(nèi)容,講解企業(yè)開發(fā)環(huán)境、基本開發(fā)過程和管理活動,使學(xué)生在模擬的企業(yè)環(huán)境中,進行角色體驗,在企業(yè)教師和學(xué)校教師的共同指導(dǎo)下完成軟件項目開發(fā)。課程設(shè)計過程可進一步促進學(xué)生開發(fā)項目的規(guī)范性,提高其軟件工程應(yīng)用能力、軟件項目開發(fā)與測試能力,訓(xùn)練學(xué)生團隊合作精神,提高其工程職業(yè)素質(zhì),為將來進入企業(yè)實訓(xùn)打下良好基礎(chǔ)。
2.2 精選實踐內(nèi)容、強化實施過程
(1)實踐內(nèi)容選擇。案例、實驗和課程設(shè)計內(nèi)容要精心設(shè)計和準備,主要考慮3個方面: 一是實踐內(nèi)容要具有實際意義,與日常生活的應(yīng)用緊密聯(lián)系,這樣能夠調(diào)動學(xué)生學(xué)習的積極性,讓學(xué)生在完成實踐的過程中體會到軟件工程知識在真實環(huán)境下的應(yīng)用;二是要能夠綜合應(yīng)用前修課程的知識,領(lǐng)會C語言程序設(shè)計、Java程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫原理、算法分析與設(shè)計等在軟件開發(fā)過程中的應(yīng)用;三是要考慮學(xué)生的接受能力,設(shè)計從簡單到復(fù)雜、從單項到綜合的實踐模塊,讓不同層次的學(xué)生都能完成一定的實踐內(nèi)容,讓基礎(chǔ)比較差的學(xué)生能夠完成簡單的實踐內(nèi)容,獲得成就感,讓學(xué)有余力的學(xué)生能發(fā)揮潛能,完成較為復(fù)雜的實踐內(nèi)容。
(2)實踐過程實施。案例的講解過程主要是在教師的引導(dǎo)下,對案例分解、講解,讓學(xué)生動手驗證需求建模、設(shè)計算法、編碼測試的過程,體驗軟件的開發(fā)方法和步驟。課程實驗以學(xué)生為主、教師為輔,充分調(diào)動學(xué)生的積極性,要求學(xué)生模仿案例,通過小組討論,設(shè)計完成實驗的各個模塊。課程設(shè)計在企業(yè)教師和學(xué)校教師共同指導(dǎo)下,模擬企業(yè)環(huán)境進行項目開發(fā)活動,以開發(fā)團隊的形式開發(fā)一個具有一定規(guī)模的實際項目,重點訓(xùn)練學(xué)生獨立思維能力,提高學(xué)生的基本工程能力和工程素養(yǎng)。
2.3 注重規(guī)范訓(xùn)練和工具使用
在軟件開發(fā)過程中,注重軟件工程標準與軟件工程工具的使用,重點培養(yǎng)學(xué)生的工程意識和規(guī)范行為。以基于UML的面向?qū)ο鬄橹?,?xùn)練學(xué)生學(xué)會使用Visio 2010或者starUML等工具建立需求模型,畫出用例圖、類圖、時序圖等,熟悉常用的軟件體系結(jié)構(gòu)和設(shè)計原則,用流程圖描述功能模塊的算法。在程序代碼編寫過程中,統(tǒng)一標識符的命名規(guī)則,避免隨意命名的不良習慣,注重培養(yǎng)學(xué)生良好的編程規(guī)范。掌握基本的測試方法和測試步驟,學(xué)會運用常用測試工具完成簡單的測試要求,保證學(xué)生用規(guī)范方法和工具完成實踐的各個環(huán)節(jié)。
2.4 改進實踐環(huán)節(jié)考核方法
課程實驗和課程設(shè)計的過程都要注重小組成員的分工和小組協(xié)作,既要考核小組整個成果,也要考核小組成員的個人貢獻。課程實驗按教學(xué)內(nèi)容分為結(jié)構(gòu)化和面向?qū)ο髢蓚€實驗內(nèi)容,每個實驗分為需求分析、系統(tǒng)設(shè)計、編碼測試3個主要模塊,每個實驗具體評價內(nèi)容與比例為:軟件需求規(guī)格說明 30%,軟件設(shè)計文檔30%,模塊代碼和軟件測試40%。
課程設(shè)計環(huán)節(jié)的考核與《軟件工程》課程考核分開進行,有獨立的學(xué)分和成績,需求分析占20%,系統(tǒng)設(shè)計占20%,模塊編碼和測試方法占40%,課程設(shè)計報告格式和圖表規(guī)范占20%。
注重實踐環(huán)節(jié)的考核和管理,分階段進行評審,督促學(xué)生嚴格遵守開發(fā)計劃、需求規(guī)格要求和操作規(guī)范,是保證軟件高質(zhì)量的重要措施。
3 結(jié)語
作為計算機專業(yè)的核心基礎(chǔ)課程,《軟件工程》課程實踐環(huán)節(jié)對軟件應(yīng)用型人才的基本工程能力培養(yǎng)起著重要作用。通過分層遞進的實踐教學(xué)環(huán)節(jié),讓學(xué)生在學(xué)中做、做中學(xué),理論和實踐緊密結(jié)合,真正領(lǐng)悟軟件工程抽象的理論方法在現(xiàn)實生活中的具體應(yīng)用,從案例體驗到模仿設(shè)計,再到獨立設(shè)計和創(chuàng)新設(shè)計,從分模塊的實驗到簡單項目的完整開發(fā),循序漸進地提高了學(xué)生分析和解決實際問題的能力,以及工程能力、團隊合作能力,使學(xué)生建立了規(guī)范開發(fā)軟件的工程意識。
參考文獻:
[1]劉強,陳越,駱斌,等.“軟件工程”課程教學(xué)實施方案教育[J].中國大學(xué)教學(xué),2011(2):41-44.
[2]檀明,張向東,許強,等.以能力為導(dǎo)向的軟件工程專業(yè)應(yīng)用型人才培養(yǎng)[J].計算機教育,2010(21):88-92.
[3]蔣宗禮.以能力培養(yǎng)為導(dǎo)向提高計算學(xué)科教育教學(xué)水平[J].中國大學(xué)教學(xué),2008(8):35-37.
(責任編輯:孫 娟)