肖卓宇,葉嘉笑,李港,楊道武(.中南林業(yè)科技大學涉外學院,湖南長沙4000;.湖南郵電職業(yè)技術(shù)學院,湖南長沙4005)
應(yīng)用型高校學生程序設(shè)計能力培養(yǎng)研究
肖卓宇1,葉嘉笑2,李港1,楊道武1
(1.中南林業(yè)科技大學涉外學院,湖南長沙410200;2.湖南郵電職業(yè)技術(shù)學院,湖南長沙410015)
文章以應(yīng)用型本科院校計算機專業(yè)設(shè)計模式課程為例,首先介紹學習設(shè)計模式課程的前驅(qū)知識;接著依據(jù)GOF分類編程實現(xiàn)設(shè)計模式,并通過具體項目進行綜合實訓;最后引導(dǎo)學生將設(shè)計模式課程與逆向工程、數(shù)據(jù)挖掘、機器學習等領(lǐng)域結(jié)合,解決涉及交叉學科的復(fù)雜問題,并取得較好的效果。事實證明,系統(tǒng)性與漸進性融合的啟發(fā)式學習方法有助于激發(fā)學生學習設(shè)計模式課程的積極性。
設(shè)計模式;啟發(fā)式;逆向工程;數(shù)據(jù)挖掘;機器學習
應(yīng)用型本科院校側(cè)重學生實踐動手能力的培養(yǎng),并密切關(guān)注市場對人才的需求,計算機相關(guān)專業(yè)對實踐應(yīng)用的要求顯得尤為重要。結(jié)合先前計算機專業(yè)大學生程序設(shè)計實踐能力培養(yǎng)改革[1-3],通過各級程序設(shè)計大賽經(jīng)驗的積累[4],并以大學生研究性學習與創(chuàng)新性實踐項目“基于設(shè)計模式角色的附加關(guān)系檢測研究”為契機,本研究以設(shè)計模式為例,著重探討應(yīng)用型本科院校程序設(shè)計的啟發(fā)式學習方法。
Erich Gamma等人提出設(shè)計模式是一套被反復(fù)使用、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性[5]。為此,眾多軟件企業(yè)為節(jié)約成本,減少研發(fā)周期,使設(shè)計模式得以廣泛應(yīng)用于項目研發(fā)中。
設(shè)計模式課程學習具有一定的抽象性,故對學生掌握相關(guān)知識的能力提出了一定的要求。
圖1 設(shè)計模式前驅(qū)知識圖
如圖1所示,第一階段學生首先應(yīng)該具備結(jié)構(gòu)化程序設(shè)計知識,為此學院在大一階段開設(shè)了C語言程序設(shè)計課程,并制定了符合學院特點的C語言程序設(shè)計實訓書;第二階段需在第一階段的基礎(chǔ)上側(cè)重面向?qū)ο蟮某绦蛟O(shè)計知識學習,主要涉及類、實例、封裝、繼承、多態(tài)等知識點的學習,該階段學院通過多年來對多屆學生教學方式的改革,制訂了具有學院特色的Java程序設(shè)計課程及實訓,側(cè)重案例式教學,并將多種面向?qū)ο蟮闹R融入到實訓中來,取得了較好的效果;第三階段通過軟件工程這門課程將UML程序設(shè)計引入到項目設(shè)計中,該階段尤其側(cè)重學生對類圖、用例圖、時序圖的掌握能力,并通過積累的經(jīng)典案例引導(dǎo)學生分小組進行實訓;在第三步之后逐步介入到設(shè)計模式領(lǐng)域。
Erich Gamma將23種設(shè)計模式分為結(jié)構(gòu)型、行為型、創(chuàng)建型三類,每一類設(shè)計模式側(cè)重點各不相同,見表1,如若要較好地掌握23種設(shè)計模式,將其分類進行實踐學習顯得尤為重要。
表1 設(shè)計模式功能分類表
在表1分類基礎(chǔ)上,引導(dǎo)學生依次通過編程實現(xiàn)結(jié)構(gòu)型模式、行為型模式、創(chuàng)建型模式的應(yīng)用,在此基礎(chǔ)上啟發(fā)學生側(cè)重分析3類設(shè)計模式中不同模式的設(shè)計意圖,尤其注重研究其區(qū)別。如:Composite模式與Decorator模式同屬于結(jié)構(gòu)型模式,但前者側(cè)重解決“部分與整體”的層次結(jié)構(gòu)問題,后者側(cè)重動態(tài)增加新的職責問題。通過比較分析法,讓23種看似枯燥的設(shè)計模式學習變得生動有趣,并輔以多年來積累的經(jīng)典用例實現(xiàn),讓學生對設(shè)計模式學習的積極性得到了極大的提高。在此基礎(chǔ)上,再將多個設(shè)計模式融入先前指導(dǎo)學生實現(xiàn)的網(wǎng)上商城購物系統(tǒng),從而實現(xiàn)對設(shè)計模式的融會貫通,進一步讓學生認識到設(shè)計模式的重要性與趣味性。
在學生較好地掌握了23種經(jīng)典設(shè)計模式用例后,嘗試將學生的程序設(shè)計思維進一步引入到更為開闊的逆向工程、數(shù)據(jù)挖掘、機器學習等領(lǐng)域。
3.1 設(shè)計模式與逆向工程、數(shù)據(jù)挖掘關(guān)聯(lián)
設(shè)計模式廣泛應(yīng)用于軟件系統(tǒng)開發(fā)中,但從軟件工程的角度可知,再優(yōu)秀的軟件也存在軟件生命周期,故存在設(shè)計模式的遺產(chǎn)系統(tǒng)如能進行有效識別,必能大大節(jié)約人力成本及時間成本。以此為契機,進一步引導(dǎo)學生對遺產(chǎn)系統(tǒng)中的設(shè)計模式實例檢測進行深入研究。
先期啟發(fā)學生以DPS(Design pattern string,DPS)表達式類圖形式檢測設(shè)計模式,該階段對遺產(chǎn)系統(tǒng)中設(shè)計模式恢復(fù)的程度進行了初步研究,其檢測結(jié)果只有完全匹配、部分匹配及完全不匹配三種形式[6]。之后,在此基礎(chǔ)上針對發(fā)生頻率較高的設(shè)計模式檢測部分匹配進行了深入研究,并提出了基于矩陣積分評估的設(shè)計模式檢測研究方法[7],該方法基于子圖同構(gòu)的概念,通過矩陣積分理論對候選設(shè)計模式參與者進行檢測,并通過閾值對檢測結(jié)果進行約束,從而過濾不精確的結(jié)果,并進一步提高了設(shè)計模式檢測的精確率。此階段之后,逆向工程與數(shù)據(jù)挖掘知識漸進式進入學生的思考范疇,而學生對于設(shè)計模式檢測的認知更加深刻。
此外在對檢測結(jié)果的研究分析中,部分學生甚至發(fā)現(xiàn)了假陽性與假陰性結(jié)果,為了發(fā)現(xiàn)造成假陽性檢測結(jié)果的原因,指導(dǎo)老師啟發(fā)學生對假陽性結(jié)果進行了歸納,并發(fā)現(xiàn)設(shè)計模式參與角色之間的附加關(guān)系會改變設(shè)計的意圖,從而導(dǎo)致假陽性結(jié)果。在歸納了典型的附加關(guān)系后,學生在指導(dǎo)老師的啟發(fā)下進一步制定了設(shè)計模式角色間附加關(guān)系的檢測原則[8]。
為了對該附加關(guān)系進行檢測,學生主動分析了當前設(shè)計模式檢測工具的優(yōu)缺點,并對之進行優(yōu)化,提出了一種形式化上下無關(guān)文法關(guān)系驅(qū)動的設(shè)計模式檢測方法[9],該方法較好地解決了設(shè)計模式角色間的附加關(guān)系問題與設(shè)計模式參與者共享問題,進一步提高了檢測的精確率。另一方面,同時引導(dǎo)學生對設(shè)計模式檢測結(jié)果存在的假陰性問題進行深入研究后發(fā)現(xiàn),現(xiàn)有23種經(jīng)典設(shè)計模式已不能完全滿足軟件設(shè)計師的需求,大多數(shù)情況下,軟件設(shè)計師在不改變設(shè)計意圖的前提下對Erich Gamma提出的23種設(shè)計模式進行了演化,并取得了較好的效果,這類演化后的設(shè)計模式可謂之設(shè)計模式“變體”,為此在先前工作[9]基礎(chǔ)上,項目組學生進一步對這類難以檢測的設(shè)計模式變體進行了檢測研究,這樣富有挑戰(zhàn)性的課題也漸進式激發(fā)了學生的學習熱情,并進而提出了基于文法產(chǎn)生式優(yōu)化的設(shè)計模式識別方法,旨在通過特征匹配進行設(shè)計模式變體識別[10],過濾假陰性結(jié)果,該方法對結(jié)構(gòu)型設(shè)計模式變體檢測取得了較好的效果。但項目組學生通過手工驗證恢復(fù)結(jié)果發(fā)現(xiàn),該方法對于行為型與創(chuàng)建型模式變體存在改進的空間,但這類復(fù)雜的行為型與創(chuàng)建型設(shè)計模式變體規(guī)律性不太明顯,如果以全自動的方式很難發(fā)現(xiàn)全部的變體,故項目組學生嘗試一種半自動多階段交互式線索驅(qū)動的設(shè)計模式檢測方法[11],該方法通過調(diào)查表獲取常見的靜態(tài)線索、動態(tài)線索、專家線索,并將之轉(zhuǎn)為CSP形式的特征形式,并可以自定義,該方法對先前工作[10]進行了優(yōu)化,并取得了較好的效果。如此對問題進行漸進式累積,并逐個擊破,讓學生深刻感受到設(shè)計模式課程的重要性及樂趣。
3.2 設(shè)計模式與機器學習的聯(lián)系
考慮到現(xiàn)實生活中設(shè)計模式專家畢竟是有限的,為了讓更多的設(shè)計模式初學者能夠靈活應(yīng)用設(shè)計模式解決軟件設(shè)計問題,除開設(shè)計模式檢測領(lǐng)域,指導(dǎo)老師也引導(dǎo)另一部分同學深入設(shè)計模式推薦系統(tǒng)領(lǐng)域。項目組學生在指導(dǎo)老師的啟發(fā)下結(jié)合形式概念分析與實例推理技術(shù),并依據(jù)余弦理論對用戶提出的問題要求進行了設(shè)計模式推薦,這有助于輔助軟件設(shè)計師進行高效的軟件項目設(shè)計[12]。對文獻[12]優(yōu)化的后續(xù)工作正有條不紊地進行,通過設(shè)計模式與機器學習的聯(lián)系,將大大開拓學生的視野,并更進一步激發(fā)學生的學習興趣。
此外,項目組學生從基準、變體及設(shè)計模式實例共享指標出發(fā),對各類設(shè)計模式檢測工具優(yōu)缺點進行了評估[13]。從而更進一步加深了對設(shè)計模式的了解。等領(lǐng)域有機結(jié)合,實現(xiàn)了基于設(shè)計模式漸進式學習,并取得了較好的效果。后期工作將設(shè)計模式與更多交叉學科進行聯(lián)系,從而實現(xiàn)應(yīng)用型本科院校學生程序設(shè)計能力的進一步提升。
本研究對應(yīng)用型本科院校大學生程序能力培養(yǎng)進行了研究,以設(shè)計模式為例,介紹了設(shè)計模式學習的前驅(qū)知識點,并分類引導(dǎo)學生對結(jié)構(gòu)型、行為型及創(chuàng)建型模式進行程序?qū)崿F(xiàn),在此基礎(chǔ)上以具體項目為依托,融入多種設(shè)計模式,進一步將學生對設(shè)計模式學習的成果融會貫通。此后,引導(dǎo)學生介入交叉學科學習,并將設(shè)計模式與逆向工程、數(shù)據(jù)挖掘、機器學習
[1]肖卓宇,葉嘉笑,黎妍.計算機專業(yè)大學生程序設(shè)計實踐能力培養(yǎng)改革[J].軟件導(dǎo)刊,2017(2):197-199.
[2]肖卓宇,黎妍,葉嘉笑.以計算思維為導(dǎo)向的大學生程序設(shè)計能力培養(yǎng)研究[J].計算機時代,2017(1):79-81.
[3]肖卓宇,陳俊旭,楊鑫維,楊邦平,胡振濤.獨立學院計算機專業(yè)大學生程序設(shè)計能力培養(yǎng)的研究與實踐[J].湖南郵電職業(yè)技術(shù)學院學報,2016(2):88-90.
[4]肖卓宇,余波,黎妍.以競賽為驅(qū)動的計算機專業(yè)創(chuàng)新人才培養(yǎng)模式的研究[J].湖南郵電職業(yè)技術(shù)學院學報,2015(3):89-92.
[5]ZHANG C,BUDGEN D.What do we know about the effectiveness of software design patterns?[J].IEEE Transactions on Software Engineering,2012(5):1213-1231.
[6]肖卓宇,何锫,黎妍.基于DPS表達式類圖的設(shè)計模式檢測[J].計算機工程與設(shè)計,2015(10):2743-2748.
[7]肖卓宇,黎妍,何锫,陳俊旭.基于矩陣積分評估的設(shè)計模式檢測研究[J].小型微型計算機系統(tǒng),2016(7):1428-1433.
[8]肖卓宇,何锫,黎妍.基于設(shè)計模式角色的附加關(guān)系檢測研究[J].計算機應(yīng)用研究,2015(7):2042-2045.
[9]肖卓宇,何锫,余波,黎妍,楊鑫維.一種形式化文法關(guān)系驅(qū)動的設(shè)計模式檢測方法[J].工程科學學報,2016(10):1499 -1508.
[10]肖卓宇,何锫,楊鑫維,楊邦平,陳俊旭,胡振濤.基于文法產(chǎn)生式優(yōu)化的設(shè)計模式識別方法[J].電子科技大學學報,2017(3).
[11]肖卓宇,何锫,余波.一種多階段交互式線索驅(qū)動的設(shè)計模式識別方法[J/OL].北京航空航天大學學報,http://kns.cnki. net/kcms/detail/11.2625.V.20161226.1707.002.htm l.
[12]肖卓宇,何锫,余波,黎妍,胡振濤.基于FCA與CBR的設(shè)計模式檢測[J].山東大學學報(工學版),2016(2):22-28.
[13]肖卓宇,黃海,何锫,李港,楊道武,彭逸凡,董澤民.設(shè)計模式檢測工具有效性評估策略[J/OL].計算機科學與探索,http: //kns.cnki.net/kcms/detail/11.5602.TP.20170504.1312.006.htm l.
Training research of students' programm ing ability in app lied undergraduate colleges
XIAOZhuo-yu1,YE Jia-xiao2,LIGang1,YANGDao-wu1
(1.Swan CollegeofCentralSouth University of Forestry and Technology,Changsha,Hunan,China 410200;2.Hunan Postand Telecommunication College,Changsha,Hunan,China410015)
The design pattern course of computer specialty in applied undergraduate college was taken as an example.Firstly pre-knowledge of design pattern coursewas introduced.Then,design patternswere performed based on classification of Gang of Four (GOF),and detail projects were performed.Finally,the students were guided to combine the design pattern course with reverse engineering,datamining,machine learning and other fields,solving the complex problems related to cross subjects,and achieving better results.The experimental results showed that the presented method based on systematic,progressive and heuristic learning can encourage theenthusiasm ofstudents.
design pattern;heuristic;reverseengineering;datamining;machine learning
10.3969/j.issn.2095-7661.2017.02.008】
TP311;G642
A
2095-7661(2017)02-0027-03
2017-03-27
肖卓宇(1979-),男,湖南長沙人,副教授,高級工程師,研究方向:程序理解、逆向工程、軟件演化等。
湖南省教學改革研究項目“獨立學院IT類相關(guān)專業(yè)學生程序設(shè)計能力的研究與實踐”(課題編號:湘教通[2016]400號1068);湖南省大學生研究性學習和創(chuàng)新性實驗計劃項目“基于設(shè)計模式角色的附加關(guān)系檢測研究”(課題編號:湘教通[2015]84號197)。