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