杜小坤,涂韜,徐勝舟
(1.中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,武漢 430074;2.湖北廣播電視大學(xué)導(dǎo)學(xué)中心,武漢 430074)
《Java程序設(shè)計(jì)》與《軟件工程》綜合教學(xué)改革初探
杜小坤1,涂韜2,徐勝舟1
(1.中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,武漢 430074;2.湖北廣播電視大學(xué)導(dǎo)學(xué)中心,武漢 430074)
針對(duì)目前《Java程序設(shè)計(jì)》與《軟件工程》課程教學(xué)中出現(xiàn)的問(wèn)題,分析問(wèn)題出新的原因并結(jié)合一些已有的教學(xué)改革成果,提出一種將兩門課程進(jìn)行綜合并增加實(shí)踐部分學(xué)時(shí)的改良方案。
軟件工程;Java程序設(shè)計(jì);面向?qū)ο?/p>
《Java程序設(shè)計(jì)》與《軟件工程》是計(jì)算機(jī)類專業(yè)高年級(jí)本科生的專業(yè)選修課,兩門課程都具有較強(qiáng)的實(shí)踐性,都著重培養(yǎng)學(xué)生的實(shí)踐能力,但傳統(tǒng)教學(xué)模式偏重于理論教學(xué),對(duì)實(shí)踐性較強(qiáng)的課程存在授課內(nèi)容空泛,實(shí)踐內(nèi)容不完整、學(xué)時(shí)不足等缺點(diǎn),導(dǎo)致最終教學(xué)效果不夠理想。
傳統(tǒng)的教學(xué)體系將兩門課程分別開(kāi)設(shè),使得在教學(xué)過(guò)程中存在如下一些問(wèn)題:
《Java程序設(shè)計(jì)》:Java語(yǔ)言的應(yīng)用十分廣泛,且非常適合于大型程序的開(kāi)發(fā)。作為一門專業(yè)選修課程,學(xué)生選修該課程的比例極高。該課程以培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)思想為目標(biāo),以Java語(yǔ)言及其面向?qū)ο筇匦浴⒔缑婢幊虨橹攸c(diǎn)教學(xué)內(nèi)容,以代碼閱讀講解為主要教學(xué)方式。這種灌輸式的教學(xué)方式使學(xué)生無(wú)法真正理解知識(shí)點(diǎn)的應(yīng)用場(chǎng)景,不能在實(shí)際中靈活應(yīng)用,更無(wú)法體會(huì)到編程的樂(lè)趣和成就感,從而失去學(xué)習(xí)興趣[1]。雖然目前已有一些教研成果通過(guò)在教學(xué)過(guò)程中引入大量實(shí)際工程案例的方式的提高學(xué)生的實(shí)踐能力,取得了一定的效果,但也存在一些問(wèn)題[2]。首先,模擬實(shí)際項(xiàng)目開(kāi)發(fā)的工作量較大,現(xiàn)有的Java課程體系一般安排為48個(gè)學(xué)時(shí)(實(shí)踐課16個(gè)學(xué)時(shí)),不足以支持實(shí)際項(xiàng)目的模擬開(kāi)發(fā);其次代碼設(shè)計(jì)和實(shí)現(xiàn)只是項(xiàng)目開(kāi)發(fā)中的一個(gè)重要環(huán)節(jié),在Java課程中進(jìn)行完整的項(xiàng)目開(kāi)發(fā)實(shí)踐不切實(shí)際,但若僅進(jìn)行代碼的設(shè)計(jì)與實(shí)現(xiàn)部分則無(wú)法使學(xué)生深入體會(huì)其面向?qū)ο筇匦缘膽?yīng)用創(chuàng)景,效果不夠理想。
《軟件工程》:軟件工程是運(yùn)用計(jì)算機(jī)科學(xué)的理論和技術(shù),并輔以工程管理的原則和方法,按預(yù)算和進(jìn)度滿足用戶要求的軟件產(chǎn)品的定義、開(kāi)發(fā)、部署和維護(hù)的工程或以之為研究對(duì)象的學(xué)科[3]。該課程涉及復(fù)雜的工程性問(wèn)題,其復(fù)雜性來(lái)源于現(xiàn)實(shí)世界問(wèn)題的復(fù)雜性和教學(xué)過(guò)程中對(duì)問(wèn)題復(fù)雜性的“難以再現(xiàn)”。事實(shí)上,教學(xué)一般通過(guò)從復(fù)雜現(xiàn)實(shí)問(wèn)題剝離出一些簡(jiǎn)單問(wèn)題,易于講解,學(xué)生也易于接受,但這種剝離不僅使教學(xué)過(guò)程不完善,也導(dǎo)致學(xué)生不能駕馭實(shí)際問(wèn)題[4]。對(duì)此,引入實(shí)際工程案例進(jìn)行分析是一種有效的解決方案,目前已有大量的成果對(duì)此進(jìn)行研究,但無(wú)法全面開(kāi)展的一個(gè)重要原因是其中存在一些不可控的因素(例如實(shí)踐教學(xué)質(zhì)量無(wú)法有效保證等)并且對(duì)既有課程體系存在較大的沖擊。
傳統(tǒng)教學(xué)方式將兩門課程分開(kāi)進(jìn)行,主要存在兩方面的問(wèn)題。首先,兩門課程關(guān)注開(kāi)發(fā)流程的不同階段,都僅涉及其中的一部分,因此其實(shí)踐課程內(nèi)容的設(shè)計(jì)都僅包含軟件開(kāi)發(fā)流程的某一個(gè)或幾個(gè)環(huán)節(jié)。其次,實(shí)踐課時(shí)少且分散,導(dǎo)致學(xué)生僅能完成軟件開(kāi)發(fā)流程的某些環(huán)節(jié),無(wú)法完整的操作一個(gè)具有一定規(guī)模的軟件項(xiàng)目。針對(duì)上述問(wèn)題,本項(xiàng)目提出一種綜合實(shí)踐教學(xué)的改革方案,該方案通過(guò)重新調(diào)整兩門課程的理論和實(shí)踐學(xué)時(shí)并將兩門課程的實(shí)踐課合并為一門大型的綜合實(shí)踐課程的方式以獲取充分的實(shí)踐學(xué)時(shí)來(lái)保證能夠完成一個(gè)大型的實(shí)踐項(xiàng)目的全部流程。Java語(yǔ)言是目前大型程序設(shè)計(jì)的主流語(yǔ)言,而軟件工程也主要研究大型軟件的設(shè)計(jì)與管理過(guò)程,二者的知識(shí)體系具有較強(qiáng)的相關(guān)性和一定的互補(bǔ)性。據(jù)此,本文提出一種將這兩個(gè)課程合并教學(xué)的綜合課程改革方案,該方案具有如下幾點(diǎn)優(yōu)勢(shì):
(1)使學(xué)生對(duì)面向?qū)ο笏枷氲睦斫飧?。面向?qū)ο蟮乃枷爰词笿ava語(yǔ)言的核心思想,也是軟件工程的重要設(shè)計(jì)思想,二者的結(jié)合使學(xué)生對(duì)面向?qū)ο笏枷氲恼J(rèn)識(shí)更全面、更深刻。
(2)對(duì)現(xiàn)有課程體系的沖擊較小。無(wú)須安排專門的課程教學(xué)時(shí)間,僅需將兩門課程已有的理論和教學(xué)時(shí)間調(diào)整到同一學(xué)期并重新分配理論和實(shí)踐教學(xué)工作量的比例即可。
(3)強(qiáng)調(diào)實(shí)踐教學(xué),提高動(dòng)手能力。導(dǎo)師負(fù)責(zé)制的小班集中實(shí)驗(yàn)教學(xué)模式,導(dǎo)師能夠?qū)W(xué)生進(jìn)行更具有針對(duì)性的指導(dǎo)。
本次綜合教學(xué)改革的具體實(shí)施流程如圖1所示。首先由資深教師對(duì)關(guān)鍵的理論知識(shí)點(diǎn)進(jìn)行精講(實(shí)行大班教學(xué)),然后學(xué)生對(duì)相關(guān)知識(shí)點(diǎn)進(jìn)行實(shí)踐和綜合實(shí)踐,整個(gè)教學(xué)過(guò)程中,要求學(xué)生獨(dú)立完成1-2個(gè)大型的軟件工程項(xiàng)目的全部流程。與傳統(tǒng)方式相比,其特點(diǎn)及優(yōu)勢(shì)主要體現(xiàn)在如下幾個(gè)方面:
(1)將《軟件工程》與《Java程序設(shè)計(jì)》課程體系中的相關(guān)知識(shí)點(diǎn)融合,這些知識(shí)點(diǎn)在不同課程體系中的具體表述存在一定差異,但其實(shí)質(zhì)是相同的。通過(guò)橫向、縱向的反復(fù)對(duì)比聯(lián)系,讓學(xué)生能夠更深刻的理解和應(yīng)用面向?qū)ο笏枷搿?/p>
(2)重新分配課時(shí)比例,強(qiáng)化實(shí)踐教學(xué)。已有課程體系中理論與實(shí)踐教學(xué)課時(shí)的比例一般按照3:1的比例分配,這顯然不適合實(shí)踐性較強(qiáng)的課程,導(dǎo)致理論課花費(fèi)大量時(shí)間讀程序,效率低下。重新分配后,理論和實(shí)踐課時(shí)比例為1:1,重點(diǎn)強(qiáng)化學(xué)生的實(shí)踐能力。
(3)小班制的實(shí)踐教學(xué)。理論教學(xué)實(shí)施大班教學(xué),集中教學(xué)能力強(qiáng)的教師重點(diǎn)講解關(guān)鍵的理論知識(shí);實(shí)踐教學(xué)實(shí)施小班教學(xué)(每班15人),使教師能夠充分與每個(gè)學(xué)生進(jìn)行溝通,了解學(xué)生在實(shí)驗(yàn)過(guò)程中問(wèn)題,并在項(xiàng)目實(shí)施的關(guān)鍵節(jié)點(diǎn)對(duì)學(xué)生進(jìn)行測(cè)評(píng),既能考察學(xué)生動(dòng)手能力,又能主動(dòng)及時(shí)發(fā)現(xiàn)相關(guān)問(wèn)題并進(jìn)行指導(dǎo),提高學(xué)習(xí)效率。
(4)創(chuàng)新性的課程考評(píng)機(jī)制。傳統(tǒng)課程考評(píng)機(jī)制常用30%(實(shí)踐)+70%(考試)的方式,但在一些實(shí)踐性較強(qiáng)的課程中,傳統(tǒng)的考試形式很難反映學(xué)生的真實(shí)水平。本方案將考試所占比例降低為40%,并完善了實(shí)踐課程的考評(píng)機(jī)制。
圖1 《Java程序設(shè)計(jì)》與《軟件工程》綜合教學(xué)流程圖
面向?qū)ο笫恰盾浖こ獭放c《Java程序設(shè)計(jì)》課程共有的重要概念,下面以該知識(shí)點(diǎn)為例講解綜合教學(xué)改革實(shí)施方案的過(guò)程。
3.1 傳統(tǒng)教學(xué)方式及缺陷
面向?qū)ο蟮能浖こ谭椒ㄊ擒浖O(shè)計(jì)方法學(xué)中極其重要的一種方法,其基本原則是盡可能地模擬人類習(xí)慣的思維方式,使開(kāi)發(fā)軟件的方法和過(guò)程盡可能接近人類認(rèn)識(shí)世界解決問(wèn)題的方法與過(guò)程,也就是使描述問(wèn)題的問(wèn)題空間(也稱為問(wèn)題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致,便于程序的理解和維護(hù)。Java作為目前最流行的面向?qū)ο笳Z(yǔ)言,在軟件工程課程實(shí)踐中被大多數(shù)同學(xué)選用。傳統(tǒng)教學(xué)方式在對(duì)該知識(shí)點(diǎn)進(jìn)行教學(xué)時(shí)主要會(huì)遇到如下兩個(gè)問(wèn)題:
(1)實(shí)踐課學(xué)時(shí)數(shù)較少,無(wú)法完整的執(zhí)行一個(gè)大型面向?qū)ο筌浖_(kāi)發(fā)的全部流程?!禞ava程序設(shè)計(jì)》和《軟件工程》的實(shí)踐課學(xué)時(shí)都為16學(xué)時(shí),因此在實(shí)踐課題的選擇上存在較大局限性,前者一般選取規(guī)模較小僅能完成初步功能的題目,而后者一般僅要求學(xué)生完成部分代碼。二者都無(wú)法完成實(shí)際軟件開(kāi)發(fā)的整個(gè)流程。
(2)面向?qū)ο笳Z(yǔ)言的諸多特性都是為了更方便地解決面向?qū)ο笤O(shè)計(jì)過(guò)程中遇到的各種問(wèn)題?!盾浖こ獭氛n程中僅介紹設(shè)計(jì)理念,缺少具體實(shí)現(xiàn),而《Java程序設(shè)計(jì)》則僅介紹Java面向?qū)ο筇匦缘木唧w實(shí)現(xiàn)。這種分開(kāi)的教學(xué)方式使學(xué)生缺乏對(duì)面向?qū)ο笏枷氲娜胬斫?,在?shí)踐課程時(shí)大多也是生搬硬套。
綜合改革教學(xué)方案能夠有效克服上述問(wèn)題,首先通過(guò)課程融合并提高實(shí)踐課程所占比例使得實(shí)踐課程量能夠滿足較大型軟件開(kāi)發(fā)的工作量,其次通過(guò)面向?qū)ο蠓治觥⒃O(shè)計(jì)、實(shí)現(xiàn)一整套的流程實(shí)踐,使學(xué)生對(duì)面向?qū)ο笏枷氲睦斫飧羁?,運(yùn)用起來(lái)也更為靈活。
3.2 具體實(shí)施流程
新方案將面向?qū)ο髮?duì)象的分析、設(shè)計(jì)、實(shí)現(xiàn)過(guò)程完整的融合,下面給出該部分內(nèi)容的教學(xué)大綱:
第三章Java面向?qū)ο蟮脑O(shè)計(jì)
通過(guò)本節(jié)的學(xué)習(xí),學(xué)生應(yīng)熟悉面向?qū)ο蟪绦蛟O(shè)計(jì)方法的整個(gè)過(guò)程,重點(diǎn)掌握面向?qū)ο蠓治龅幕具^(guò)程及模型的建立,設(shè)計(jì)對(duì)象的交互作用、指定聯(lián)系、尋找繼承、分析對(duì)象行為、設(shè)計(jì)系統(tǒng)的體系結(jié)構(gòu),測(cè)試用例的設(shè)計(jì)。
第一節(jié)面向?qū)ο蟮幕靖拍詈吞卣鳎?學(xué)時(shí))
1.面向?qū)ο蠓椒▽W(xué)概述
2.面向?qū)ο蟮母拍?/p>
3.面向?qū)ο蠼?/p>
第二節(jié)面向?qū)ο蠓治觯?學(xué)時(shí))
1.面向?qū)ο蠓治龅幕具^(guò)程
2.需求陳述
3.建立對(duì)象模型
4.建立動(dòng)態(tài)模型
5.建立功能模型
6.定義服務(wù)
第三節(jié)Java面向?qū)ο筇匦裕?學(xué)時(shí))
1.抽象與封裝
2.Java類與類的設(shè)計(jì)
3.類的繼承、多態(tài)
4.方法的重載
5.包和接口
第四節(jié)面向?qū)ο笤O(shè)計(jì)(5學(xué)時(shí))
1.面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則
2.啟發(fā)規(guī)則
3.軟件重用
4.系統(tǒng)分解
5.設(shè)計(jì)問(wèn)題域子系統(tǒng)
6.設(shè)計(jì)人機(jī)交互子系統(tǒng)
7.設(shè)計(jì)任務(wù)管理子系統(tǒng)
8.設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)
9.設(shè)計(jì)類中的服務(wù)
10.設(shè)計(jì)關(guān)聯(lián)
11.設(shè)計(jì)優(yōu)化
第五節(jié)面向?qū)ο髮?shí)現(xiàn)(3學(xué)時(shí))
1.程序設(shè)計(jì)語(yǔ)言和風(fēng)格
2.測(cè)試策略
3.設(shè)計(jì)測(cè)試用例
通過(guò)上述課程學(xué)習(xí)應(yīng)獨(dú)立采用面向?qū)ο笤O(shè)計(jì)方法完成具有一定規(guī)模的應(yīng)用軟件的設(shè)計(jì)與開(kāi)發(fā)流程,并由指導(dǎo)教師進(jìn)行分階段考評(píng),考評(píng)成績(jī)占期末總成績(jī)的60%。具體考評(píng)表格如下表1所示。
表1 實(shí)踐成績(jī)?cè)u(píng)分表
《軟件工程》和《Java程序設(shè)計(jì)》是兩門實(shí)踐性較強(qiáng)的課程,教學(xué)的重點(diǎn)和難點(diǎn)在于強(qiáng)化學(xué)生的實(shí)踐能力。筆者分析傳統(tǒng)教學(xué)方式針對(duì)實(shí)踐性課程存在的缺陷,提出一種綜合性的改良方案,該方案能夠在基本不改變現(xiàn)有教學(xué)管理體制的前提下,提高學(xué)生實(shí)踐性課程的教學(xué)效果,提高學(xué)生的實(shí)踐動(dòng)手能力。
[1]徐傳運(yùn),張楊,王森.針對(duì)Java程序設(shè)計(jì)的仿真教學(xué)法[J].計(jì)算機(jī)教育,2013(6):99-102.
[2]覃國(guó)蓉,張席,李華忠.基于開(kāi)源項(xiàng)目的項(xiàng)目教學(xué)法在Java教學(xué)中的應(yīng)用[J].計(jì)算機(jī)教育,2010(12):66-69.
[3]教育部高等學(xué)校軟件工程專業(yè)教學(xué)指導(dǎo)分委員會(huì).高等學(xué)校軟件工程專業(yè)規(guī)范[M].北京:高等教育出版社,2011:3-3.
[4]王燦輝,張舒,林郎碟.案例教學(xué)法在軟件工程教學(xué)中的應(yīng)用[J].計(jì)算機(jī)教育,2012(1):20-23.
Discussion on the Synthetically Teaching Reformation of Java Programming and Software Engineering
DU Xiao-kun1,TU Tao2,XU Sheng-zhou1
(1.College of Computer Science,South-Central University for Nationalities,Wuhan 430074 2.Guidance Center,HuBei Radio&TV University,Wuhan 430074)
Aiming at the problems in the teaching of Java Programming and Software Engineering,analyses the reasons and combines the existing teaching reformation achievement,proposes the improved solution to combine these two courses for synthetically teaching,and adds some practice class hours.
Software Engineering;Java Programming;Object-Oriented
1007-1423(2016)33-0057-04
10.3969/j.issn.1007-1423.2016.33.013
2016-10-08
2016-11-16
中南民族大學(xué)“本科教學(xué)工程”(No.JYX14024)
杜小坤,男,講師,研究方向?yàn)槟J接成?/p>