?

應用型高校學生程序設計能力培養研究

2017-07-01 20:28肖卓宇葉嘉笑李港楊道武中南林業科技大學涉外學院湖南長沙4000湖南郵電職業技術學院湖南長沙4005
湖南郵電職業技術學院學報 2017年2期
關鍵詞:設計模式程序設計檢測

肖卓宇,葉嘉笑,李港,楊道武(.中南林業科技大學涉外學院,湖南長沙4000;.湖南郵電職業技術學院,湖南長沙4005)

應用型高校學生程序設計能力培養研究

肖卓宇1,葉嘉笑2,李港1,楊道武1
(1.中南林業科技大學涉外學院,湖南長沙410200;2.湖南郵電職業技術學院,湖南長沙410015)

文章以應用型本科院校計算機專業設計模式課程為例,首先介紹學習設計模式課程的前驅知識;接著依據GOF分類編程實現設計模式,并通過具體項目進行綜合實訓;最后引導學生將設計模式課程與逆向工程、數據挖掘、機器學習等領域結合,解決涉及交叉學科的復雜問題,并取得較好的效果。事實證明,系統性與漸進性融合的啟發式學習方法有助于激發學生學習設計模式課程的積極性。

設計模式;啟發式;逆向工程;數據挖掘;機器學習

應用型本科院校側重學生實踐動手能力的培養,并密切關注市場對人才的需求,計算機相關專業對實踐應用的要求顯得尤為重要。結合先前計算機專業大學生程序設計實踐能力培養改革[1-3],通過各級程序設計大賽經驗的積累[4],并以大學生研究性學習與創新性實踐項目“基于設計模式角色的附加關系檢測研究”為契機,本研究以設計模式為例,著重探討應用型本科院校程序設計的啟發式學習方法。

Erich Gamma等人提出設計模式是一套被反復使用、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性[5]。為此,眾多軟件企業為節約成本,減少研發周期,使設計模式得以廣泛應用于項目研發中。

1 設計模式前置知識點學習

設計模式課程學習具有一定的抽象性,故對學生掌握相關知識的能力提出了一定的要求。

圖1 設計模式前驅知識圖

如圖1所示,第一階段學生首先應該具備結構化程序設計知識,為此學院在大一階段開設了C語言程序設計課程,并制定了符合學院特點的C語言程序設計實訓書;第二階段需在第一階段的基礎上側重面向對象的程序設計知識學習,主要涉及類、實例、封裝、繼承、多態等知識點的學習,該階段學院通過多年來對多屆學生教學方式的改革,制訂了具有學院特色的Java程序設計課程及實訓,側重案例式教學,并將多種面向對象的知識融入到實訓中來,取得了較好的效果;第三階段通過軟件工程這門課程將UML程序設計引入到項目設計中,該階段尤其側重學生對類圖、用例圖、時序圖的掌握能力,并通過積累的經典案例引導學生分小組進行實訓;在第三步之后逐步介入到設計模式領域。

2 設計模式分類學習

Erich Gamma將23種設計模式分為結構型、行為型、創建型三類,每一類設計模式側重點各不相同,見表1,如若要較好地掌握23種設計模式,將其分類進行實踐學習顯得尤為重要。

表1 設計模式功能分類表

在表1分類基礎上,引導學生依次通過編程實現結構型模式、行為型模式、創建型模式的應用,在此基礎上啟發學生側重分析3類設計模式中不同模式的設計意圖,尤其注重研究其區別。如:Composite模式與Decorator模式同屬于結構型模式,但前者側重解決“部分與整體”的層次結構問題,后者側重動態增加新的職責問題。通過比較分析法,讓23種看似枯燥的設計模式學習變得生動有趣,并輔以多年來積累的經典用例實現,讓學生對設計模式學習的積極性得到了極大的提高。在此基礎上,再將多個設計模式融入先前指導學生實現的網上商城購物系統,從而實現對設計模式的融會貫通,進一步讓學生認識到設計模式的重要性與趣味性。

3 設計模式的演化學習

在學生較好地掌握了23種經典設計模式用例后,嘗試將學生的程序設計思維進一步引入到更為開闊的逆向工程、數據挖掘、機器學習等領域。

3.1 設計模式與逆向工程、數據挖掘關聯

設計模式廣泛應用于軟件系統開發中,但從軟件工程的角度可知,再優秀的軟件也存在軟件生命周期,故存在設計模式的遺產系統如能進行有效識別,必能大大節約人力成本及時間成本。以此為契機,進一步引導學生對遺產系統中的設計模式實例檢測進行深入研究。

先期啟發學生以DPS(Design pattern string,DPS)表達式類圖形式檢測設計模式,該階段對遺產系統中設計模式恢復的程度進行了初步研究,其檢測結果只有完全匹配、部分匹配及完全不匹配三種形式[6]。之后,在此基礎上針對發生頻率較高的設計模式檢測部分匹配進行了深入研究,并提出了基于矩陣積分評估的設計模式檢測研究方法[7],該方法基于子圖同構的概念,通過矩陣積分理論對候選設計模式參與者進行檢測,并通過閾值對檢測結果進行約束,從而過濾不精確的結果,并進一步提高了設計模式檢測的精確率。此階段之后,逆向工程與數據挖掘知識漸進式進入學生的思考范疇,而學生對于設計模式檢測的認知更加深刻。

此外在對檢測結果的研究分析中,部分學生甚至發現了假陽性與假陰性結果,為了發現造成假陽性檢測結果的原因,指導老師啟發學生對假陽性結果進行了歸納,并發現設計模式參與角色之間的附加關系會改變設計的意圖,從而導致假陽性結果。在歸納了典型的附加關系后,學生在指導老師的啟發下進一步制定了設計模式角色間附加關系的檢測原則[8]。

為了對該附加關系進行檢測,學生主動分析了當前設計模式檢測工具的優缺點,并對之進行優化,提出了一種形式化上下無關文法關系驅動的設計模式檢測方法[9],該方法較好地解決了設計模式角色間的附加關系問題與設計模式參與者共享問題,進一步提高了檢測的精確率。另一方面,同時引導學生對設計模式檢測結果存在的假陰性問題進行深入研究后發現,現有23種經典設計模式已不能完全滿足軟件設計師的需求,大多數情況下,軟件設計師在不改變設計意圖的前提下對Erich Gamma提出的23種設計模式進行了演化,并取得了較好的效果,這類演化后的設計模式可謂之設計模式“變體”,為此在先前工作[9]基礎上,項目組學生進一步對這類難以檢測的設計模式變體進行了檢測研究,這樣富有挑戰性的課題也漸進式激發了學生的學習熱情,并進而提出了基于文法產生式優化的設計模式識別方法,旨在通過特征匹配進行設計模式變體識別[10],過濾假陰性結果,該方法對結構型設計模式變體檢測取得了較好的效果。但項目組學生通過手工驗證恢復結果發現,該方法對于行為型與創建型模式變體存在改進的空間,但這類復雜的行為型與創建型設計模式變體規律性不太明顯,如果以全自動的方式很難發現全部的變體,故項目組學生嘗試一種半自動多階段交互式線索驅動的設計模式檢測方法[11],該方法通過調查表獲取常見的靜態線索、動態線索、專家線索,并將之轉為CSP形式的特征形式,并可以自定義,該方法對先前工作[10]進行了優化,并取得了較好的效果。如此對問題進行漸進式累積,并逐個擊破,讓學生深刻感受到設計模式課程的重要性及樂趣。

3.2 設計模式與機器學習的聯系

考慮到現實生活中設計模式專家畢竟是有限的,為了讓更多的設計模式初學者能夠靈活應用設計模式解決軟件設計問題,除開設計模式檢測領域,指導老師也引導另一部分同學深入設計模式推薦系統領域。項目組學生在指導老師的啟發下結合形式概念分析與實例推理技術,并依據余弦理論對用戶提出的問題要求進行了設計模式推薦,這有助于輔助軟件設計師進行高效的軟件項目設計[12]。對文獻[12]優化的后續工作正有條不紊地進行,通過設計模式與機器學習的聯系,將大大開拓學生的視野,并更進一步激發學生的學習興趣。

此外,項目組學生從基準、變體及設計模式實例共享指標出發,對各類設計模式檢測工具優缺點進行了評估[13]。從而更進一步加深了對設計模式的了解。等領域有機結合,實現了基于設計模式漸進式學習,并取得了較好的效果。后期工作將設計模式與更多交叉學科進行聯系,從而實現應用型本科院校學生程序設計能力的進一步提升。

4 結束語

本研究對應用型本科院校大學生程序能力培養進行了研究,以設計模式為例,介紹了設計模式學習的前驅知識點,并分類引導學生對結構型、行為型及創建型模式進行程序實現,在此基礎上以具體項目為依托,融入多種設計模式,進一步將學生對設計模式學習的成果融會貫通。此后,引導學生介入交叉學科學習,并將設計模式與逆向工程、數據挖掘、機器學習

[1]肖卓宇,葉嘉笑,黎妍.計算機專業大學生程序設計實踐能力培養改革[J].軟件導刊,2017(2):197-199.

[2]肖卓宇,黎妍,葉嘉笑.以計算思維為導向的大學生程序設計能力培養研究[J].計算機時代,2017(1):79-81.

[3]肖卓宇,陳俊旭,楊鑫維,楊邦平,胡振濤.獨立學院計算機專業大學生程序設計能力培養的研究與實踐[J].湖南郵電職業技術學院學報,2016(2):88-90.

[4]肖卓宇,余波,黎妍.以競賽為驅動的計算機專業創新人才培養模式的研究[J].湖南郵電職業技術學院學報,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表達式類圖的設計模式檢測[J].計算機工程與設計,2015(10):2743-2748.

[7]肖卓宇,黎妍,何锫,陳俊旭.基于矩陣積分評估的設計模式檢測研究[J].小型微型計算機系統,2016(7):1428-1433.

[8]肖卓宇,何锫,黎妍.基于設計模式角色的附加關系檢測研究[J].計算機應用研究,2015(7):2042-2045.

[9]肖卓宇,何锫,余波,黎妍,楊鑫維.一種形式化文法關系驅動的設計模式檢測方法[J].工程科學學報,2016(10):1499 -1508.

[10]肖卓宇,何锫,楊鑫維,楊邦平,陳俊旭,胡振濤.基于文法產生式優化的設計模式識別方法[J].電子科技大學學報,2017(3).

[11]肖卓宇,何锫,余波.一種多階段交互式線索驅動的設計模式識別方法[J/OL].北京航空航天大學學報,http://kns.cnki. net/kcms/detail/11.2625.V.20161226.1707.002.htm l.

[12]肖卓宇,何锫,余波,黎妍,胡振濤.基于FCA與CBR的設計模式檢測[J].山東大學學報(工學版),2016(2):22-28.

[13]肖卓宇,黃海,何锫,李港,楊道武,彭逸凡,董澤民.設計模式檢測工具有效性評估策略[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類相關專業學生程序設計能力的研究與實踐”(課題編號:湘教通[2016]400號1068);湖南省大學生研究性學習和創新性實驗計劃項目“基于設計模式角色的附加關系檢測研究”(課題編號:湘教通[2015]84號197)。

猜你喜歡
設計模式程序設計檢測
“1+1”作業設計模式的實踐探索
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
三維協同設計模式下的航天項目管理實踐與展望
基于Visual Studio Code的C語言程序設計實踐教學探索
從細節入手,談PLC程序設計技巧
交通機電工程設計模式創新探討
高職高專院校C語言程序設計教學改革探索
小波變換在PCB缺陷檢測中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合