魏恒義,安 健,鮑軍鵬
(西安交通大學(xué)電子與信息工程學(xué)院,陜西西安710049)
ACM/IEEECS2013的重點是強(qiáng)調(diào)系統(tǒng)知識和系統(tǒng)能力的培養(yǎng)[1],系統(tǒng)能力包括系統(tǒng)分析能力、系統(tǒng)設(shè)計能力和系統(tǒng)驗證能力3個方面[2]。針對信息系統(tǒng)設(shè)計專題實驗綜合實踐課程包含內(nèi)容廣泛、教學(xué)實施困難的問題,提出一個四維教學(xué)模型用于培養(yǎng)學(xué)生的系統(tǒng)思維方法和軟件開發(fā)能力。綜合運用多種知識解決復(fù)雜系統(tǒng)級問題是系統(tǒng)能力的重要表現(xiàn)[3],能刺激學(xué)生的首創(chuàng)精神和熱情[4],給學(xué)生一個“整體大于各部分的總和”的實際體驗[5]。
信息系統(tǒng)設(shè)計專題實驗的目標(biāo)是培養(yǎng)本科生的軟件系統(tǒng)開發(fā)能力。該實驗是培養(yǎng)學(xué)生貫通程序設(shè)計、數(shù)據(jù)庫和軟件工程知識,以軟件產(chǎn)品開發(fā)為導(dǎo)向的綜合實踐教學(xué)活動,也是工程教育的實施過程[6]。課程實施中很容易使學(xué)生陷入局部的軟件編程中,無暇顧及涉及的方法和系統(tǒng)能力。教師在教學(xué)中也難以有的放矢地補(bǔ)充相關(guān)的知識和技能,幫助學(xué)生提高開發(fā)大型軟件的系統(tǒng)能力。針對該問題,我們設(shè)計了一個四維教學(xué)模型,綜合培養(yǎng)學(xué)生的系統(tǒng)思維和軟件系統(tǒng)開發(fā)能力,幫助學(xué)生在實踐中靈活運用知識和技能、在團(tuán)隊協(xié)作中突出重點。
該維度的目的是引導(dǎo)學(xué)生將基礎(chǔ)理論和方法應(yīng)用到實踐項目中。課程在面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)上補(bǔ)充面向?qū)ο蟮姆治鲈O(shè)計方法,構(gòu)成軟件開發(fā)能力的基礎(chǔ);在數(shù)據(jù)庫理論上需補(bǔ)充建模理論和方法,將軟件體系結(jié)構(gòu)理論通過B/S結(jié)構(gòu)、C/S結(jié)構(gòu)、移動應(yīng)用等技術(shù)具體落實。
好的工具可以讓學(xué)生體驗軟件開發(fā)方法的內(nèi)涵和應(yīng)遵循的標(biāo)準(zhǔn)規(guī)范。該維度對需求分析、設(shè)計、實現(xiàn)和測試各個階段采用的規(guī)范和工具進(jìn)行實例教學(xué),培養(yǎng)學(xué)生規(guī)范和準(zhǔn)確表達(dá)軟件各個開發(fā)階段的模型,貫穿設(shè)計思想。課程采用需求描述模板對學(xué)生選題和分析進(jìn)行起步導(dǎo)引,采用UML建模實例引導(dǎo)學(xué)生從用例圖開始建立系統(tǒng)需求模型。完整的應(yīng)用示例幫助學(xué)生了解問題與設(shè)計模型的映射關(guān)系;實體類與關(guān)系數(shù)據(jù)庫模型實現(xiàn)方法的比較、數(shù)據(jù)庫建模工具的示范可以解決信息持久存儲問題。系統(tǒng)實現(xiàn)階段以Web應(yīng)用、移動應(yīng)用的范例教學(xué)為主,讓學(xué)生借鑒和模仿范例,提高編碼效率。
產(chǎn)品化是軟件的終極目標(biāo)之一,該維度培養(yǎng)學(xué)生綜合考慮軟件功能需求、面向的領(lǐng)域、軟件分布架構(gòu)、軟件配置、使用方式等產(chǎn)品特性。課程重點考慮如下兩個問題:①軟件分布結(jié)構(gòu)和部署對軟件產(chǎn)品的影響;②軟件產(chǎn)品的功能和非功能需求。
軟件分布結(jié)構(gòu)和部署看起來是兩個技術(shù)問題,但會影響軟件系統(tǒng)的可用性和受歡迎程度。軟件的分布結(jié)構(gòu)和部署與采用的開發(fā)技術(shù)密切相關(guān),開發(fā)小組可從產(chǎn)品市場化的角度選擇軟件結(jié)構(gòu)和部署策略。在復(fù)雜的軟件開發(fā)中學(xué)會取舍與平衡也是學(xué)生創(chuàng)新能力的體現(xiàn)。教師應(yīng)引導(dǎo)學(xué)生在開發(fā)中不忘系統(tǒng)的可擴(kuò)展性、可配置性、網(wǎng)絡(luò)和通信協(xié)議、持久性、并發(fā)性等非功能需求,以適應(yīng)市場需求。
針對耗時最多的編碼實現(xiàn),教學(xué)中需要注意如下3個問題:①指定開發(fā)技術(shù)與學(xué)生自選技術(shù)對課程進(jìn)度的影響:以指定技術(shù)為主線,教師可以通過精心準(zhǔn)備的講義、實例、視頻和資料提高學(xué)生的效率。②編程框架與第三方軟件的采用:課程對Web應(yīng)用框架的演變進(jìn)行詳細(xì)講授,幫助學(xué)生選擇適合的Web應(yīng)用服務(wù)器、數(shù)據(jù)庫系統(tǒng)和編程框架。③數(shù)據(jù)的持久化存儲問題:實體類圖與關(guān)系數(shù)據(jù)庫模型具有天然的不相容性。分析Java的持久性機(jī)制、持久性框架以及面向?qū)ο髷?shù)據(jù)庫等解決方案,使學(xué)生能夠兼顧應(yīng)用程序規(guī)模、復(fù)雜性、技術(shù)成熟度、學(xué)習(xí)成本與開銷等因素,選擇合適的數(shù)據(jù)存儲方式。
理論教學(xué)中軟件開發(fā)能力綜合知識之間的相互關(guān)系和協(xié)同往往被忽略,導(dǎo)致大學(xué)生創(chuàng)新能力培養(yǎng)績效不高[7],該四維教學(xué)模型是指導(dǎo)教師和學(xué)生提高系統(tǒng)及創(chuàng)新能力的導(dǎo)引。
該維度主要從以下3個主要問題入手,將學(xué)生的理論知識與實踐環(huán)節(jié)銜接。
1)面向?qū)ο蠓治雠c設(shè)計方法與軟件系統(tǒng)建模技術(shù)的對接。
面對一個實際問題,如何將面向?qū)ο蟮姆治雠c設(shè)計方法落實到建模技術(shù)的具體視圖是首要解決的問題。深刻理解UML視圖對RUP4+1方法的具體表示,可以為UML模型精準(zhǔn)體現(xiàn)分析設(shè)計的思想打下基礎(chǔ)。RUP4+1方法與UML視圖的對應(yīng)關(guān)系有:①二者都采用用例視圖描述參與者對系統(tǒng)功能的期望,用邏輯視圖描述系統(tǒng)功能的內(nèi)部設(shè)計和協(xié)作,用配置視圖描述軟件到硬件的映射及分布特性、依賴的庫和其他支持軟件;②RUP4+1中的實現(xiàn)視圖對應(yīng)UML中的組件視圖,描述軟件實現(xiàn)模塊及其依賴關(guān)系、代碼的組織方式;③RUP4+1中的進(jìn)程視圖對應(yīng)UML中的并發(fā)視圖,描述系統(tǒng)的并發(fā)性及通訊,關(guān)注進(jìn)程、線程、對象在運行時的交互問題。
2)面向?qū)ο竽P团c關(guān)系數(shù)據(jù)庫模型的映射。
數(shù)據(jù)模型是信息系統(tǒng)設(shè)計中的重要部分,將數(shù)據(jù)庫概念模型、邏輯模型和物理模型理論通過建模工具有效的實施,可引導(dǎo)學(xué)生完成數(shù)據(jù)存儲和訪問設(shè)計,加深對數(shù)據(jù)庫理論的實踐體驗。
3)軟件體系結(jié)構(gòu)理論的落實。
教師應(yīng)對B/S結(jié)構(gòu)、C/S結(jié)構(gòu)、移動應(yīng)用等主流軟件體系結(jié)構(gòu)進(jìn)行示范,指導(dǎo)軟件架構(gòu)設(shè)計,幫助學(xué)生綜合平衡項目需求、團(tuán)隊技術(shù)基礎(chǔ)、成員興趣等因素,處理好宏大理想和32個有限課時的矛盾;要讓學(xué)生深刻體會利用建模工具表達(dá)自己的軟件分析和設(shè)計思想是重點,而不是工具本身如何操作。
工具承載了豐富的軟件開發(fā)思想和方法,課程對UML建模工具、關(guān)系數(shù)據(jù)庫建模工具、面向?qū)ο缶幊坦ぞ叩囊笫牵孩賹9ぞ逽tarUML進(jìn)行示范,提供MOOC短視頻讓學(xué)生了解有關(guān)細(xì)節(jié);②通過數(shù)據(jù)庫建模工具的示范,將概念數(shù)據(jù)模型、物理數(shù)據(jù)模型、正向工程、逆向工程、模型報告生成落到實處;③強(qiáng)調(diào)Eclipse加擴(kuò)展插件的編程框架;④對關(guān)系數(shù)據(jù)庫MySQL、Tomcat應(yīng)用服務(wù)器等相關(guān)軟件以實例示范為主,供學(xué)生快速學(xué)習(xí)模仿;⑤代碼管理工具推薦采用GitHub管理小組協(xié)同編碼。
為了培養(yǎng)大學(xué)生的創(chuàng)新創(chuàng)業(yè)能力,在應(yīng)用領(lǐng)域與軟件產(chǎn)品維度上的教學(xué)要強(qiáng)調(diào)實踐項目的產(chǎn)品化特性。關(guān)注點一是項目的選題領(lǐng)域與規(guī)模,二是從軟件產(chǎn)品的角度考慮用戶需求和市場的適應(yīng)性。對有創(chuàng)新創(chuàng)業(yè)意愿的學(xué)生,教師要在選題、設(shè)計和實現(xiàn)中進(jìn)行重點關(guān)注,同時結(jié)合相似的產(chǎn)品軟件進(jìn)行對比分析,以提高學(xué)生的市場意識。
面對新技術(shù)快速發(fā)展帶來的挑戰(zhàn),任課教師必須不斷地更新課程內(nèi)容,學(xué)生需要對新技術(shù)學(xué)習(xí)投入時間成本。讓學(xué)生針對具體項目需求選擇合適的實現(xiàn)技術(shù)并能快速學(xué)習(xí)掌握是本維度的難點。
1)實現(xiàn)技術(shù)的模仿與運用。
選擇合適的實現(xiàn)技術(shù)是軟件工程的核心之一,教學(xué)中對C/S、B/S以及移動應(yīng)用結(jié)構(gòu)的應(yīng)用實例進(jìn)行示范并提供原型系統(tǒng)供學(xué)生模仿,此種方式適合沒有額外時間投入的學(xué)生順利完成課程。
2)實現(xiàn)技術(shù)的學(xué)習(xí)方式。
在課程中靈活運用如下幾種教學(xué)方法,可以有效提高新技術(shù)的學(xué)習(xí)效率:①利用短課堂梳理理論主題。對面向?qū)ο蠓椒?、“RUP4+1”視圖等理論進(jìn)行課堂歸納可以快速將方法引入實踐;對StarUML等工具,通過實例示范講授快速引導(dǎo)學(xué)生模仿和細(xì)化。②“干中學(xué)”對實踐課程尤為重要,可以解決技術(shù)細(xì)節(jié)學(xué)習(xí)?!案芍袑W(xué)”的實施主要依靠小組內(nèi)部溝通和師生互動環(huán)節(jié)。課程教學(xué)中設(shè)計了選題與項目可行性評估、需求模型、數(shù)據(jù)庫模型、設(shè)計模型和作品討論5個師生互動環(huán)節(jié)。③組織針對性的文字資料、MOOC短視頻、應(yīng)用示范源代碼供學(xué)生進(jìn)行細(xì)節(jié)學(xué)習(xí)和模仿,提供“為什么需要多個模型或視圖描述系統(tǒng)”之類的問答資料以及“用戶眼中的業(yè)務(wù)流程——活動圖”之類的短視頻示范。豐富的在線資料和幫助文檔構(gòu)成技術(shù)細(xì)節(jié)的學(xué)習(xí)條件。④團(tuán)隊精神培養(yǎng)通過在實踐中以問題為驅(qū)動、以團(tuán)隊成員分工合作的方式,讓學(xué)生體驗感受團(tuán)隊攻關(guān)的價值與樂趣[8]。在5個師生互動環(huán)節(jié)中,各個團(tuán)隊可以相互觀摩、協(xié)同學(xué)習(xí)。⑤體驗學(xué)習(xí)的目的是軟件開發(fā)經(jīng)驗的傳遞。一種形式是教師會提供一些高年級學(xué)生的作品作為示范資料;另一種形式是在5個師生互動環(huán)節(jié)中相互學(xué)習(xí)。
3)技術(shù)發(fā)展的適應(yīng)性引導(dǎo)。
技術(shù)和工具的發(fā)展是必然的,指導(dǎo)教師在教學(xué)中的歸類理解、探詢本質(zhì)、舉一反三,可培養(yǎng)學(xué)生求新求變的興趣,提高學(xué)生自學(xué)習(xí)、自適應(yīng)的能力。
教學(xué)中對縱向4個維度的主題內(nèi)容進(jìn)行歸納、示范和推進(jìn),在橫向上進(jìn)行交叉融合;對不同層次的學(xué)生和課時量,在保證主題內(nèi)容完整的前提下,進(jìn)行內(nèi)容深度的裁減。
課程的選題分為教師指定和學(xué)生自選兩大類。教師選題包含信息管理、物流、電子商務(wù)等10余個選題。教師選題的應(yīng)用細(xì)節(jié)由學(xué)生根據(jù)領(lǐng)域知識細(xì)化。自選題目來源于大學(xué)生創(chuàng)新實驗、參與的科研與社會實踐以及學(xué)生自主創(chuàng)業(yè)項目。
程序設(shè)計基礎(chǔ)、數(shù)據(jù)庫理論和軟件工程方法都會在課程中深入實踐。在“選題與項目可行性評估”互動環(huán)節(jié)中,每個小組用5min的PPT講解項目需求,與指導(dǎo)教師進(jìn)行討論,根據(jù)小組成員的基礎(chǔ)和時間投入確定系統(tǒng)邊界,在四維框架下堅持課程主線內(nèi)容,適當(dāng)擴(kuò)展個人興趣點并樹立信心。
培養(yǎng)框架的4個主題及其內(nèi)容細(xì)節(jié)協(xié)同體現(xiàn)在需求分析、設(shè)計、實現(xiàn)和測試的各個階段,表1是目前課程的進(jìn)度與內(nèi)容安排,每次課程一般為4h。
(1)課程采用“原理性與工程性相結(jié)合、分析式與綜合式相互動”的教學(xué)方法[9]。課程設(shè)計的5個師生互動環(huán)節(jié)也是階段驗收和過程考核點。①選題與項目可行性評估是指導(dǎo)教師與各項目組互動的第一個環(huán)節(jié),目標(biāo)是落實項目小組,根據(jù)小組人力和技術(shù)基礎(chǔ)評估選題規(guī)模和時間可行性,處理好需求與有限課時之間的矛盾?;咏Y(jié)果是項目組能寫出項目需求描述。②需求模型討論中,教師針對小組匯報結(jié)果與小組討論,對系統(tǒng)邊界、功能、數(shù)據(jù)基礎(chǔ)等問題提出具體意見,完成第1次考核評分。③設(shè)計模型討論重點考查學(xué)生能否合理采用UML描述系統(tǒng)的結(jié)構(gòu)、流程和處理方法,指導(dǎo)教師提出修改意見,完成第2次考核評分。④數(shù)據(jù)庫模型討論考查學(xué)生將面向?qū)ο蟮膶嶓w類映射成關(guān)系模型的結(jié)果,對模型進(jìn)行點評,提出建議,進(jìn)行第3次考核。⑤作品演示中,項目小組每位成員匯報自己開發(fā)的功能,回答教師的提問。現(xiàn)場檢查單是師生互動的憑據(jù),學(xué)生填寫自己匯報的內(nèi)容,指導(dǎo)教師評估作品等級,并在現(xiàn)場檢查單上記錄學(xué)生的貢獻(xiàn)度、代碼理解和調(diào)試情況。
(2)考核評分是針對每一位學(xué)生的,主要依據(jù)是小組作品等級、個人設(shè)計實現(xiàn)報告和5個互動環(huán)節(jié)中小組成員的貢獻(xiàn)。評分內(nèi)容包括需求分析結(jié)果及討論10%;模型設(shè)計(含數(shù)據(jù)庫模型)結(jié)果及討論15%;作品演示驗收40%;設(shè)計實現(xiàn)報告25%;平時考核10%。
表1 課程的進(jìn)度安排與內(nèi)容
實踐教學(xué)是培養(yǎng)學(xué)生創(chuàng)新精神和實踐能力的一個重要環(huán)節(jié),其體驗知識過程還伴隨著探究性的學(xué)習(xí)活動[10]。多年的教學(xué)中,該教學(xué)框架扎實提升了學(xué)生軟件開發(fā)的系統(tǒng)能力,對教師和學(xué)生也提出了新挑戰(zhàn)。要讓學(xué)生有興趣投入這個繁雜、綜合性和系統(tǒng)性強(qiáng)的課程,教師必須在知識的凝練、實驗范例準(zhǔn)備、資料的完整性準(zhǔn)備、MOOC短視頻的錄制、互動交流等教學(xué)環(huán)節(jié)投入精力。實施中的主要困難是部分學(xué)生的前序課程基礎(chǔ)薄弱,每年都有中途退課的學(xué)生。能堅持完成的學(xué)生都感受到課程系統(tǒng)性強(qiáng)、包含內(nèi)容豐富,同時也對先修課程進(jìn)行了夯實與運用。學(xué)生在報告中寫到“這應(yīng)該是大學(xué)以來做過最難的實驗,也比較耗時間,前前后后投入了很長時間。聽學(xué)長說這個實驗很難,但當(dāng)時還是選了,當(dāng)然也收獲不少,真的切身體驗到學(xué)習(xí)的樂趣,感覺能做成一件事,還是很有成就感的”。