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