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