遼寧工業(yè)大學(xué)電子與信息工程學(xué)院 陳鑫 伊華偉 佟玉軍
針對(duì)軟件工程專業(yè)畢業(yè)生基礎(chǔ)知識(shí)不扎實(shí)、技能掌握不牢的現(xiàn)象,提出一種以“系統(tǒng)開發(fā)案例分析”為匯點(diǎn),相關(guān)課程融合建設(shè)的方法。通過(guò)對(duì)該門課程的介紹,分析了該課程在課程體系中的匯點(diǎn)作用;通過(guò)對(duì)其先行課程的知識(shí)點(diǎn)提取,構(gòu)建知識(shí)網(wǎng)絡(luò),并在課程案例中予以運(yùn)用。實(shí)踐表明,該課程可以向上承接主要專業(yè)課程,向下開啟學(xué)生畢業(yè)前夕的主要任務(wù),具有很好的開設(shè)價(jià)值。
隨著《中國(guó)制造2025》、《關(guān)于積極推進(jìn)“互聯(lián)網(wǎng)+”行動(dòng)的指導(dǎo)意見》、《促進(jìn)大數(shù)據(jù)發(fā)展行動(dòng)綱要》等政策的出臺(tái),我國(guó)的軟件產(chǎn)業(yè)即將面臨又一次的騰飛,相應(yīng)的,對(duì)軟件行業(yè)的人才需求量及其技術(shù)水平必將持續(xù)上升[1]。與之形成對(duì)比的是,各大高校軟件相關(guān)專業(yè)的畢業(yè)生在走出校門之際,普遍存在基礎(chǔ)知識(shí)不夠扎實(shí)、基本技能掌握不牢的現(xiàn)象,從而無(wú)法迅速達(dá)到用人單位的要求。
針對(duì)上述現(xiàn)象,高校的教學(xué)人員提出了多項(xiàng)舉措進(jìn)行改革,從教學(xué)方法、教學(xué)手段、教學(xué)內(nèi)容等方面進(jìn)行思考,旨在提高教學(xué)質(zhì)量[2-5]。然而,大部分的教學(xué)改革都是孤立地從一門課程入手,缺少其與先行課、后繼課之間的聯(lián)系,致使學(xué)生對(duì)知識(shí)的理解及后續(xù)應(yīng)用不夠深刻、缺少延續(xù),無(wú)法做到融會(huì)貫通。因此,考慮專業(yè)內(nèi)部相關(guān)課程之間的聯(lián)合建設(shè),并設(shè)立一門起到承上啟下作用的“匯點(diǎn)”課程,是十分必要的。
“系統(tǒng)開發(fā)案例分析”是可設(shè)置為大專院校軟件工程相關(guān)專業(yè)開設(shè)的一門專業(yè)方向課,建議于大四上學(xué)期(第7 學(xué)期)開設(shè),共40 學(xué)時(shí),其中理論授課24 學(xué)時(shí),上機(jī)實(shí)驗(yàn)16 學(xué)時(shí)。授課內(nèi)容建議分為三個(gè)部分,具體如下:
(1)算法設(shè)計(jì)與實(shí)現(xiàn)。任何一個(gè)信息系統(tǒng)的本質(zhì)都是對(duì)數(shù)據(jù)的加工過(guò)程,將初始的輸入數(shù)據(jù)經(jīng)過(guò)一系列處理轉(zhuǎn)換為有意義的信息;而每一次處理,即可視為一個(gè)算法。本環(huán)節(jié)主要培養(yǎng)學(xué)生分析問(wèn)題、設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)、進(jìn)而實(shí)現(xiàn)編程的能力,關(guān)注學(xué)生的編程基本功,所講授的案例可以選擇計(jì)算機(jī)科學(xué)領(lǐng)域的一些經(jīng)典問(wèn)題,如最短旅行商(TSP)問(wèn)題[6]等。該部分預(yù)計(jì)使用理論授課8學(xué)時(shí),上機(jī)實(shí)驗(yàn)6 學(xué)時(shí)。
(2)C/S 結(jié)構(gòu)信息系統(tǒng)的分析與設(shè)計(jì)。作為軟件行業(yè)的從業(yè)人員,相當(dāng)大一部分的工作內(nèi)容是管理信息系統(tǒng)的開發(fā),將客戶的需求轉(zhuǎn)換成最終能在計(jì)算機(jī)上運(yùn)行的系統(tǒng)。因此,本環(huán)節(jié)將以C/S 結(jié)構(gòu)的產(chǎn)品庫(kù)存管理系統(tǒng)為案例,重點(diǎn)介紹需求分析、模塊劃分以及數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程。本環(huán)節(jié)理論授課10 學(xué)時(shí),上機(jī)實(shí)驗(yàn)6 學(xué)時(shí)。
(3)B/S 結(jié)構(gòu)信息系統(tǒng)的分析與設(shè)計(jì)。本環(huán)節(jié)中的內(nèi)容與上一部分類似,區(qū)別在于使用的案例為商品在線銷售系統(tǒng)。因?yàn)槭褂昧伺c上一案例所不同的架構(gòu)模式,所以本環(huán)節(jié)主要關(guān)注的是軟件的體系結(jié)構(gòu)、設(shè)計(jì)模式等內(nèi)容。所占用的學(xué)時(shí)數(shù)較前兩個(gè)環(huán)節(jié)略有減少,即理論授課6 學(xué)時(shí),上機(jī)實(shí)驗(yàn)4 學(xué)時(shí)。
課程的總體介紹如表1 所示。
表1 “系統(tǒng)開發(fā)案例分析”課程總體介紹Tab.1 "System Development Case Analysis" course introduction
通過(guò)“系統(tǒng)開發(fā)案例分析”的課程內(nèi)容及其關(guān)注重點(diǎn),可以大致地看出該門課程在軟件工程專業(yè)課程體系中所起到的承上啟下的作用,本節(jié)將結(jié)合遼寧工業(yè)大學(xué)軟件工程專業(yè)的培養(yǎng)計(jì)劃[7]加以明確分析。
遼寧工業(yè)大學(xué)軟件工程專業(yè)的學(xué)制為4 年制,根據(jù)其教學(xué)計(jì)劃,學(xué)生需要修滿171 學(xué)分,其中前三年需要完成138.5 學(xué)分。在前三學(xué)年中,與“系統(tǒng)開發(fā)案例分析”有關(guān)的主干課程包括:
(1)算法與程序設(shè)計(jì):面向剛?cè)雽W(xué)的學(xué)生,即第1學(xué)期的學(xué)生,培養(yǎng)其基本的計(jì)算機(jī)思維能力和基礎(chǔ)的編程能力;
(2)高級(jí)程序設(shè)計(jì)應(yīng)用:在第2 學(xué)期開設(shè),培養(yǎng)學(xué)生的面向?qū)ο笏季S和面向?qū)ο笳Z(yǔ)言編程能力;
(3)數(shù)據(jù)結(jié)構(gòu):可以認(rèn)為是計(jì)算機(jī)、軟件工程相關(guān)專業(yè)的最主要的課程之一,培養(yǎng)學(xué)生對(duì)鏈表、樹、圖等主流數(shù)據(jù)結(jié)構(gòu)的理解、使用,同時(shí)強(qiáng)化學(xué)生的編程能力。該課程將在第3 學(xué)期開設(shè);
(4)數(shù)據(jù)庫(kù)原理與應(yīng)用:面向軟件工程專業(yè)第4 學(xué)期的學(xué)生,主要介紹數(shù)據(jù)庫(kù)系統(tǒng)原理,完成從現(xiàn)實(shí)世界的概念模型到程序世界的邏輯模型的轉(zhuǎn)化,保證學(xué)生能夠通過(guò)SQL 語(yǔ)言對(duì)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行操作;
(5)軟件工程:有了上述課程的基礎(chǔ),本專業(yè)在第5學(xué)期開設(shè)“軟件工程”課程。該課程可以說(shuō)是軟件工程專業(yè)的另一門重要課程,主要介紹軟件開發(fā)的原理、過(guò)程及標(biāo)準(zhǔn),讓學(xué)生對(duì)于軟件開發(fā)有一個(gè)全面而深刻的理解;
(6)軟件體系結(jié)構(gòu):針對(duì)軟件設(shè)計(jì)方案進(jìn)行強(qiáng)化,介紹主流的設(shè)計(jì)模式、架構(gòu)模式,通過(guò)對(duì)該門課程的學(xué)習(xí),學(xué)生可以“輕化”軟件設(shè)計(jì)方案,提高設(shè)計(jì)的靈活性和軟件的可維護(hù)性。本課程將在第6 學(xué)期為學(xué)生開設(shè)。
本科生學(xué)習(xí)的最后一個(gè)學(xué)期,需要完成從學(xué)校到社會(huì)的過(guò)渡,在這個(gè)階段,學(xué)生(此處專指畢業(yè)后選擇就業(yè)的學(xué)生)主要面臨兩項(xiàng)任務(wù):
(1)完成畢業(yè)設(shè)計(jì)論文。該過(guò)程往往要求學(xué)生針對(duì)某一具體的題目,進(jìn)行全面的分析、設(shè)計(jì),將之實(shí)現(xiàn)并進(jìn)行測(cè)試,進(jìn)而撰寫論文,可以說(shuō)是對(duì)本科階段所學(xué)知識(shí)作以系統(tǒng)總結(jié)及靈活應(yīng)用的過(guò)程。然而,這個(gè)過(guò)程中會(huì)發(fā)現(xiàn)學(xué)生存在知識(shí)點(diǎn)掌握不牢、運(yùn)用不當(dāng)、論文組織不合理、寫作不夠流暢等問(wèn)題。比如,描述系統(tǒng)數(shù)據(jù)模型的ER 圖,應(yīng)該作為開發(fā)者對(duì)于現(xiàn)實(shí)概念的理解,放入到系統(tǒng)分析的部分,然而很多學(xué)生在使用ER 圖時(shí),將之錯(cuò)誤地放入到系統(tǒng)設(shè)計(jì)的章節(jié)中;
(2)尋找合適的實(shí)習(xí)單位和就業(yè)單位。該過(guò)程需要進(jìn)行多次的筆試、面試,在這些環(huán)節(jié)中,學(xué)生經(jīng)常出現(xiàn)知識(shí)點(diǎn)遺忘、實(shí)踐經(jīng)驗(yàn)欠缺,甚至表達(dá)不清晰的情況。例如,數(shù)據(jù)結(jié)構(gòu)中的知識(shí)點(diǎn),是歷來(lái)軟件企業(yè)在筆試過(guò)程中所重點(diǎn)考察的內(nèi)容,然而大部分高校相關(guān)專業(yè)的“數(shù)據(jù)結(jié)構(gòu)”課程,基本都在第3 學(xué)期甚至更早的時(shí)間開設(shè),待筆試考察時(shí),學(xué)生的印象已經(jīng)不夠深刻了。
“系統(tǒng)開發(fā)案例分析”這門課程的設(shè)置,恰恰能夠解決畢業(yè)生所面臨的問(wèn)題。一方面,其通過(guò)若干個(gè)案例的理論教學(xué),將之前所學(xué)內(nèi)容匯總,從而使得學(xué)生對(duì)整個(gè)知識(shí)脈絡(luò)融會(huì)貫通,有了良好的掌握;另一方面,在實(shí)驗(yàn)環(huán)節(jié)讓學(xué)生分組實(shí)踐,完成指定案例的實(shí)現(xiàn),并通過(guò)答辯過(guò)程加以檢驗(yàn),可提升學(xué)生的開發(fā)經(jīng)驗(yàn),并鍛煉其表達(dá)能力。
基于上述分析,可以構(gòu)建軟件工程專業(yè)的“課程樹”(也可以稱之為該專業(yè)學(xué)生所面臨的“任務(wù)樹”),如圖1所示。從中可以明顯地看出“系統(tǒng)開發(fā)案例分析”這門課程的“匯點(diǎn)”作用——其向上承接了前三個(gè)學(xué)年的主要專業(yè)課程,向下開啟了學(xué)生畢業(yè)前夕所面臨的畢業(yè)設(shè)計(jì)、就業(yè)等任務(wù),起到了很好地從理論向?qū)嵺`的過(guò)渡作用。
圖1 軟件工程專業(yè)“課程樹”Fig.1 Software engineering "Course Tree"
為了保證學(xué)生對(duì)知識(shí)體系具備全面的理解,相關(guān)課程需要通過(guò)將某些線索聯(lián)系到一起,形成知識(shí)網(wǎng)絡(luò)。本節(jié)將介紹以知識(shí)點(diǎn)作為線索、以“系統(tǒng)開發(fā)案例分析”課程作為“匯點(diǎn)”的課程融合建設(shè)方法。
每一門課程中都有其主要的知識(shí)點(diǎn),是該門課程的精髓所在。在融合建設(shè)過(guò)程中,不可能將所有課程的全部知識(shí)點(diǎn)都加以考慮,但是,可以提取最具代表性的部分,以這些主要知識(shí)點(diǎn)為代表,加深學(xué)生課程的印象,激發(fā)學(xué)生去主動(dòng)回顧以往課程。
將提取出的知識(shí)點(diǎn)加以融合,在“系統(tǒng)開發(fā)案例分析”這門課程的相關(guān)案例中靈活運(yùn)用,從而形成知識(shí)網(wǎng)絡(luò)的構(gòu)建,如圖2 所示。
圖2 以“系統(tǒng)開發(fā)案例分析”為匯點(diǎn)的知識(shí)網(wǎng)構(gòu)建Fig.2 Knowledge network construction with "System Development Case Analysis" as the convergence point
求解最短旅行商問(wèn)題的最基礎(chǔ)算法,就是對(duì)圖2 中所有路徑進(jìn)行窮舉嘗試,從而找到最優(yōu)解,這可以看作是對(duì)樹進(jìn)行搜索的過(guò)程。而樹中每一個(gè)節(jié)點(diǎn),可以看作旅行商的一種狀態(tài),記錄其當(dāng)前已經(jīng)走過(guò)的路徑、花費(fèi)的代價(jià)等,是一個(gè)類定義的過(guò)程。將上述方案通過(guò)C++或Java 等高級(jí)語(yǔ)言實(shí)現(xiàn),就完成了這一問(wèn)題的最初級(jí)求解方案。當(dāng)然,在此基礎(chǔ)上,還可以給學(xué)生介紹分支定界法[8]等經(jīng)典算法,以加速求解過(guò)程。
進(jìn)行管理信息系統(tǒng)的分析與設(shè)計(jì),首先需要從技術(shù)、經(jīng)濟(jì)等方面分析其可行性,在得到肯定答案的基礎(chǔ)上對(duì)系統(tǒng)進(jìn)行需求分析,進(jìn)而考慮其結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)等方案;其次是在進(jìn)行分析、設(shè)計(jì)的同時(shí),還需要考慮其測(cè)試時(shí)所注意的問(wèn)題、使用的用例等[9]。這些知識(shí)點(diǎn)將在產(chǎn)品庫(kù)存管理系統(tǒng)、商品在線銷售系統(tǒng)這兩個(gè)案例的學(xué)習(xí)過(guò)程中予以總結(jié)。
以知識(shí)點(diǎn)連線,進(jìn)而推廣成知識(shí)面——“系統(tǒng)開發(fā)案例分析”這門課程作為軟件工程專業(yè)系列課程的“收口”,把相關(guān)課程很好地融合在一起,起到了良好的總結(jié)作用。在大四上學(xué)期開設(shè)這門課程,既可以幫助學(xué)生全面地掌握本專業(yè)的課程體系,又可以為接下來(lái)的畢業(yè)設(shè)計(jì)、就業(yè)等環(huán)節(jié)奠定基礎(chǔ),具有很強(qiáng)的現(xiàn)實(shí)意義。
數(shù)字技術(shù)與應(yīng)用2023年11期