国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向計(jì)算機(jī)專業(yè)的軟件開(kāi)發(fā)技術(shù)課程集成發(fā)現(xiàn)教學(xué)法探索

2017-09-23 02:57王小平裴喜龍衛(wèi)志華
關(guān)鍵詞:架構(gòu)軟件思維

王小平 裴喜龍 衛(wèi)志華

(同濟(jì)大學(xué)電子與信息工程學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系 上海 200092)

面向計(jì)算機(jī)專業(yè)的軟件開(kāi)發(fā)技術(shù)課程集成發(fā)現(xiàn)教學(xué)法探索

王小平 裴喜龍 衛(wèi)志華

(同濟(jì)大學(xué)電子與信息工程學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系 上海 200092)

在調(diào)研和分析國(guó)內(nèi)外高等院校計(jì)算機(jī)和軟件工程相關(guān)專業(yè)課程體系及其存在問(wèn)題的基礎(chǔ)上,面向信息技術(shù)高端人才需求和新舊體系調(diào)整的要求,基于軟件開(kāi)發(fā)中的抽象思維(對(duì)象思維、模式思維和架構(gòu)思維),提出了以運(yùn)用能力為主要目標(biāo)的集成發(fā)現(xiàn)教學(xué)法和教學(xué)模式。并且,進(jìn)一步探討建立以軟件開(kāi)發(fā)方法及其綜合實(shí)踐為核心的應(yīng)用軟件課程教學(xué)體系,重組基礎(chǔ)課程、核心課程和相關(guān)平臺(tái)應(yīng)用課程關(guān)系, 使這些課程內(nèi)容聯(lián)系更加緊密, 銜接更加順暢,有利于學(xué)生運(yùn)用能力和創(chuàng)新能力的培養(yǎng)。

軟件開(kāi)發(fā)技術(shù) 課程改革 集成發(fā)現(xiàn)教學(xué)法 抽象思維

0 引 言

隨著信息技術(shù)和計(jì)算機(jī)學(xué)科的發(fā)展,軟件系統(tǒng)的重要性在整個(gè)計(jì)算機(jī)系統(tǒng)中所占的份額及其本身的復(fù)雜性迅速地提高,使得它的開(kāi)發(fā)代價(jià)和重要性超過(guò)了基本硬件系統(tǒng)。目前,相對(duì)于信息技術(shù)發(fā)達(dá)的國(guó)家而言,我國(guó)信息技術(shù)及其產(chǎn)業(yè)的發(fā)展面臨“技術(shù)少標(biāo)準(zhǔn)、開(kāi)發(fā)缺規(guī)范、生產(chǎn)無(wú)檢驗(yàn)、質(zhì)量無(wú)保證”落后壓力。本科生教育是信息技術(shù)人才的主要源頭,問(wèn)題求解、程序設(shè)計(jì)、軟件開(kāi)發(fā)和創(chuàng)新能力是計(jì)算機(jī)專業(yè)人才優(yōu)劣衡量標(biāo)準(zhǔn)中最重要的方面之一。然而,軟硬件能力的培養(yǎng)并非一兩門課可以完成的,而是需要一個(gè)長(zhǎng)期的、有目的的修養(yǎng)過(guò)程。系統(tǒng)及其運(yùn)行信號(hào)的非直觀可視性,又使得這種能力在很大程度上依賴于邏輯思維方法、抽象思維能力,以及對(duì)學(xué)科發(fā)展過(guò)程中不斷深化的自頂向下、逐步求精、分而治之等思想,依賴對(duì)計(jì)算理論、抽象建模、系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)三個(gè)過(guò)程的基礎(chǔ)內(nèi)容掌握程度。另外,不斷涌現(xiàn)的新問(wèn)題求解、新系統(tǒng)設(shè)計(jì)和創(chuàng)造、新技術(shù)應(yīng)用,也凸顯了本學(xué)科創(chuàng)新思維和能力培養(yǎng)的重要性,要求學(xué)生對(duì)目前的軟件開(kāi)發(fā)技術(shù)和研究發(fā)展?fàn)顩r有很好的理解和掌握,以適應(yīng)當(dāng)前應(yīng)用及未來(lái)發(fā)展的需要。計(jì)算機(jī)專業(yè)教學(xué)內(nèi)容和形式也在發(fā)生深刻的轉(zhuǎn)變,要求傳統(tǒng)的 “教導(dǎo)”或“灌輸”、自底而上的單一展現(xiàn)模式,逐漸構(gòu)建為自頂而下的“集成式”、目標(biāo)導(dǎo)向的“發(fā)現(xiàn)式”、問(wèn)題求解的啟發(fā)式,甚至是這些模式的混合體。這些教學(xué)方法和教學(xué)模式的研究、發(fā)展和逐漸成熟,將會(huì)受到廣泛關(guān)注,作為教學(xué)方法論的參考,也會(huì)逐漸被開(kāi)放式背景下類如MOOCs和SPOCs在線形式教學(xué)方式所接受,使得更為廣泛的受教育者獲益。

2013年底 IEEE & ACM聯(lián)合發(fā)布 CS2013[1],這一版本與CC2001和CS2008比較起來(lái),在知識(shí)體系有了較大的變化。CS2013包括18個(gè)知識(shí)領(lǐng)域,其中軟件開(kāi)發(fā)基礎(chǔ)(SDF)和系統(tǒng)基礎(chǔ)(SF)作為兩個(gè)新的知識(shí)領(lǐng)域被正式提出,并列出了各種不同類型大學(xué)的80個(gè)課程樣本和5個(gè)完整的課目樣本?,F(xiàn)有的課程包含不同知識(shí)領(lǐng)域的論題,可以用不同方法組合成一個(gè)完整的課目,在課時(shí)數(shù)滿足的前提下覆蓋所有課目的知識(shí)單元。

計(jì)算機(jī)科學(xué)與技術(shù)作為一門學(xué)科的邊界很廣闊,學(xué)生興趣又各有不同,這就要求專業(yè)的課程體系為學(xué)生在本科階段的學(xué)習(xí)提供不同的選擇。但無(wú)論如何,學(xué)校課程的教學(xué)體系也有責(zé)任保證,不論學(xué)生的選擇是什么,都能學(xué)到計(jì)算機(jī)系統(tǒng)的核心知識(shí)和主要專業(yè)技能。例如,軟件開(kāi)發(fā)方法學(xué)作為一門新的專業(yè)課程在國(guó)內(nèi)許多高校相繼開(kāi)設(shè),包括天津大學(xué)計(jì)算機(jī)專業(yè)自2011年開(kāi)始開(kāi)設(shè)“軟件開(kāi)發(fā)方法論”,北京大學(xué)、西安交通大學(xué)、西安電子科技大學(xué)等都先后開(kāi)設(shè)了類似的課程,相應(yīng)的教材也開(kāi)始編寫。但系統(tǒng)性不強(qiáng)、內(nèi)容陳舊,應(yīng)該與非計(jì)算機(jī)專業(yè)的《軟件開(kāi)發(fā)技術(shù)基礎(chǔ)》教材要求有較大的區(qū)別。不僅要求學(xué)生掌握軟件開(kāi)發(fā)各個(gè)階段的技術(shù)方法,還要求掌握軟件開(kāi)發(fā)全過(guò)程的技術(shù)方法,這是計(jì)算機(jī)專業(yè)培養(yǎng)系統(tǒng)能力的重要入口,如軟件建模、構(gòu)件技術(shù)、軟件架構(gòu)和基于平臺(tái)的開(kāi)發(fā)技術(shù),并且強(qiáng)調(diào)可盡量采用新的技術(shù)、管理方法和新工具,與軟件開(kāi)發(fā)技術(shù)的行業(yè)標(biāo)準(zhǔn)相適應(yīng)。北大青鳥(niǎo)軟件開(kāi)發(fā)培訓(xùn)課程作為國(guó)內(nèi)IT職業(yè)教育的知名品牌,迄今已持續(xù)十多年,一方面說(shuō)明不同層次軟件開(kāi)發(fā)人才需求旺盛,另一方面也說(shuō)明了目前學(xué)校專業(yè)教育的短板。只有在理論、技術(shù)和實(shí)踐能力都有較高水平的教學(xué)要求,并付諸實(shí)施,才能滿足目前信息產(chǎn)業(yè)高端人才的緊缺需求。

本文在調(diào)研和分析國(guó)內(nèi)外高等院校計(jì)算機(jī)和軟件工程相關(guān)專業(yè)課程體系及其存在問(wèn)題的基礎(chǔ)上,面向信息技術(shù)高端人才需求和新舊體系調(diào)整的要求,基于軟件開(kāi)發(fā)中的抽象思維(對(duì)象思維、模式思維和架構(gòu)思維),提出了以運(yùn)用能力為主要目標(biāo)的集成發(fā)現(xiàn)教學(xué)法和教學(xué)模式。最后,進(jìn)一步探討建立以軟件開(kāi)發(fā)方法及其綜合實(shí)踐為核心的應(yīng)用軟件課程教學(xué)體系,重組基礎(chǔ)課程、核心課程和相關(guān)平臺(tái)應(yīng)用課程關(guān)系, 使這些課程內(nèi)容聯(lián)系更加緊密, 銜接更加順暢,有利于學(xué)生創(chuàng)新能力的培養(yǎng)。

1 新舊課程體系特點(diǎn)和觀念變化

在IEEE & ACM CS 2013中,包括18個(gè)知識(shí)域[2]:算法與復(fù)雜性、體系結(jié)構(gòu)與組織、計(jì)算機(jī)科學(xué)、離散結(jié)構(gòu)、圖形和可視化、人機(jī)接口、信息保障和安全、信息管理、智能系統(tǒng)、網(wǎng)絡(luò)與通信、操作系統(tǒng)、基于平臺(tái)的開(kāi)發(fā)、并行和分布式計(jì)算、程序語(yǔ)言、軟件開(kāi)發(fā)基礎(chǔ)、軟件工程、系統(tǒng)基礎(chǔ)、社會(huì)議題和專業(yè)實(shí)踐。其中,軟件開(kāi)發(fā)基礎(chǔ),過(guò)去叫編程和系統(tǒng)導(dǎo)引,包括算法、設(shè)計(jì)、編程和軟件開(kāi)發(fā)過(guò)程。它是一些基礎(chǔ)軟件開(kāi)發(fā)概念的組合。系統(tǒng)基礎(chǔ)也是一個(gè)新的知識(shí)領(lǐng)域,包括操作系統(tǒng)、網(wǎng)絡(luò)、計(jì)算機(jī)體系結(jié)構(gòu)的常用論題。為了并行計(jì)算的普適性和計(jì)算機(jī)安全更好理解的需要,加入了并行和分布式計(jì)算、信息保障和安全和基于平臺(tái)的開(kāi)發(fā)等課目。比以前關(guān)注較少的內(nèi)容包括數(shù)字邏輯、數(shù)值方法、網(wǎng)頁(yè)設(shè)計(jì)、檢索引擎、語(yǔ)言翻譯等,在CS2013中算作選修材料。CS2013還概括了CS研究生除專業(yè)技術(shù)之外與專業(yè)實(shí)踐有關(guān)的一些特征,譬如溝通能力、團(tuán)隊(duì)合作和倫理道德,也是大學(xué)生經(jīng)驗(yàn)的一部分。

值得關(guān)注的軟件開(kāi)發(fā)方法新要求,要求教學(xué)中論及一種軟件開(kāi)發(fā)方法時(shí), 應(yīng)該考慮以下因素: 開(kāi)發(fā)全過(guò)程, 在各階段間的模型轉(zhuǎn)換和技術(shù)銜接;便于在開(kāi)發(fā)各階段人員之間的技術(shù)交流和迭代性改進(jìn);支持有效解決問(wèn)題的綜合決策和管理; 支持系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的各種不同途徑;支持軟件正確性的檢查、測(cè)試和驗(yàn)證;滿足在系統(tǒng)需求中有關(guān)抽象設(shè)計(jì)、系統(tǒng)環(huán)境和性能的約束;支持設(shè)計(jì)師和程序員創(chuàng)造性的勞動(dòng);支持系統(tǒng)生存周期的演化; 高效率使用一些自動(dòng)化工具。 此外, 所有階段軟件開(kāi)發(fā)成果物都應(yīng)該是可預(yù)見(jiàn)和可控的。這些新要求對(duì)軟件開(kāi)發(fā)的專業(yè)教學(xué)提出更高的標(biāo)準(zhǔn),應(yīng)該可演示、可轉(zhuǎn)移、可重復(fù)驗(yàn)證,并且在技術(shù)實(shí)現(xiàn)上是開(kāi)放的。

如何把計(jì)算機(jī)專業(yè)的一門軟件工程學(xué)科有效地分解為初級(jí)課程和多門高級(jí)課程?如何解決現(xiàn)有課程體系中計(jì)算機(jī)硬件與系統(tǒng)課程中的裁剪和求精問(wèn)題?如何在專業(yè)教學(xué)初期引入軟件工程的觀念,并將其在教學(xué)中與程序設(shè)計(jì)、軟件職業(yè)、團(tuán)隊(duì)交流溝通相結(jié)合?南京大學(xué)軟件學(xué)院在軟件工程學(xué)科建設(shè)實(shí)踐中,依據(jù)國(guó)際軟件工程學(xué)科教程CC-SE2004建議,軟件工程專業(yè)教學(xué)計(jì)劃的技術(shù)課程包括初級(jí)課程、中級(jí)課程、高級(jí)課程和領(lǐng)域相關(guān)課程[3],其中初級(jí)課程包括離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)與算法兩門公共課程,另三門組成計(jì)算機(jī)科學(xué)優(yōu)先方案(程序設(shè)計(jì)基礎(chǔ)、面向?qū)ο蠓椒ê蛙浖こ虒?dǎo)論)和軟件工程優(yōu)先方案(軟件工程與計(jì)算概論、軟件工程與計(jì)算II、軟件工程與計(jì)算III);中級(jí)課程覆蓋計(jì)算機(jī)硬件、操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)以及其他必備的計(jì)算機(jī)硬件與計(jì)算機(jī)系統(tǒng)基本知識(shí);高級(jí)課程包括6門課程,覆蓋軟件需求、體系結(jié)構(gòu)、設(shè)計(jì)、構(gòu)造、測(cè)試、質(zhì)量、過(guò)程、管理和人機(jī)交互等;領(lǐng)域相關(guān)課程、與具體應(yīng)用領(lǐng)域相關(guān)的選修課程可以結(jié)合各自學(xué)校辦學(xué)特色開(kāi)設(shè)。因此,在求精計(jì)算機(jī)硬件與軟件系統(tǒng)課程的基礎(chǔ)上,強(qiáng)調(diào)在專業(yè)教學(xué)的早期培養(yǎng)學(xué)生的軟件工程觀和計(jì)算機(jī)系統(tǒng)觀,融合軟件工程基礎(chǔ)、程序設(shè)計(jì)、職業(yè)團(tuán)隊(duì)等知識(shí)實(shí)踐的“軟件工程與計(jì)算”系列課程,通過(guò)案例教授中小規(guī)模軟件系統(tǒng)構(gòu)建;圍繞大中型軟件系統(tǒng)構(gòu)建知識(shí)分領(lǐng)域,組織軟件工程高級(jí)課程;圍繞軟件工程應(yīng)用領(lǐng)域,建設(shè)領(lǐng)域相關(guān)課程。在教材建設(shè)上編寫了《軟件工程與計(jì)算》三卷本教材(《軟件工程的編程基礎(chǔ)》、《軟件開(kāi)發(fā)的技術(shù)基礎(chǔ)》和《團(tuán)隊(duì)與軟件開(kāi)發(fā)實(shí)踐》)作為軟件工程本科專業(yè)的入門課程教材。

目前專業(yè)課程教學(xué)中不同程度地存在的一些共性問(wèn)題: 對(duì)于教師和課程體系而言,課程之間聯(lián)系不夠緊,課程實(shí)踐缺少系統(tǒng)安排,指導(dǎo)不夠。計(jì)算思維的方法把握和指導(dǎo)不夠; 教學(xué)手段單一化,教學(xué)方法不能緊跟發(fā)展需要,教師參與和提升教學(xué)能力和水平的動(dòng)力不足。對(duì)于學(xué)生而言,知識(shí)點(diǎn)聯(lián)系缺口比較多,對(duì)自學(xué)能力不強(qiáng)的學(xué)生存在不少障礙; 學(xué)生學(xué)習(xí)和能力提高要么盲目,要么不夠主動(dòng),效率較差。抽象建模能力弱,專業(yè)思維能力有待提高;對(duì)軟件工具、開(kāi)發(fā)環(huán)境、軟件不同階段常用的成熟開(kāi)發(fā)技術(shù)和管理手段把握不夠;實(shí)際的比較復(fù)雜軟件項(xiàng)目參與少,創(chuàng)新能力缺少基礎(chǔ)。顯然,對(duì)于教師、課程體系和授業(yè)對(duì)象學(xué)生,其中有些問(wèn)題是相對(duì)存在的,比較突出的是課程體系集成性先天不足,不利于激發(fā)學(xué)生發(fā)現(xiàn)問(wèn)題和解決問(wèn)題的興趣,培養(yǎng)學(xué)生的專業(yè)思維能力和系統(tǒng)觀,需要從高度集成性和問(wèn)題發(fā)現(xiàn)、知識(shí)挖掘入手,使學(xué)生在專業(yè)素質(zhì)和能力培養(yǎng)有較大的上升空間。

2 軟件開(kāi)發(fā)技術(shù)課程集成發(fā)現(xiàn)式教學(xué)法

2.1 軟件開(kāi)發(fā)中的抽象思維

計(jì)算機(jī)科學(xué)中很多涉及到算法、設(shè)計(jì)、系統(tǒng)的問(wèn)題歸結(jié)到計(jì)算機(jī)問(wèn)題求解,這樣思維技能的培養(yǎng),可以是科學(xué)思維(例如大數(shù)據(jù)中挖掘科學(xué)規(guī)律)、算法思維(例如,根據(jù)領(lǐng)域原理設(shè)計(jì)和應(yīng)用算法求解問(wèn)題)、效率思維(計(jì)算、通信和控制體現(xiàn)在不同領(lǐng)域都有效率問(wèn)題,有計(jì)算效率、經(jīng)濟(jì)性的效率),還有創(chuàng)新思維(例如,計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境下可以支持協(xié)同工作,不同專業(yè)的人員甚至普通大眾可以參與到任務(wù)完成的眾包問(wèn)題求解,強(qiáng)調(diào)社會(huì)計(jì)算的思維等)。計(jì)算思維實(shí)際上不是只來(lái)源于計(jì)算機(jī),而是更多地來(lái)自于自然和社會(huì)中人工系統(tǒng)設(shè)計(jì)和應(yīng)用中比較共性的東西,總結(jié)出計(jì)算模型應(yīng)用的模式、策略和規(guī)律來(lái),方便交流和思考問(wèn)題。從思維的角度而言,軟件開(kāi)發(fā)的本質(zhì)就是要實(shí)現(xiàn)概念世界到設(shè)計(jì)模型和物理模型的映射, 實(shí)現(xiàn)高層處理邏輯到低層處理實(shí)現(xiàn)的映射。抽象思維有很多思路和方法,對(duì)軟件開(kāi)發(fā)而言,對(duì)象思維、模式思維和架構(gòu)思維很重要,三者是從微觀到宏觀遞進(jìn)的相互關(guān)聯(lián)關(guān)系。

(1) 對(duì)象思維 是結(jié)構(gòu)化思維的進(jìn)一步發(fā)展。在結(jié)構(gòu)化程序中,程序=數(shù)據(jù)結(jié)構(gòu)+算法,結(jié)構(gòu)化思維用“過(guò)程”來(lái)刻畫數(shù)據(jù)間關(guān)系,結(jié)構(gòu)化中,數(shù)據(jù)是死的,全部依賴算法操作,結(jié)構(gòu)化思維更像是一個(gè)人在解決所有問(wèn)題。面向?qū)ο蟪绦颍瑢?duì)象=(算法+數(shù)據(jù)結(jié)構(gòu)),程序=(對(duì)象+對(duì)象+…)。對(duì)象思維直接用類表達(dá)數(shù)據(jù)間關(guān)系;對(duì)象思維中,數(shù)據(jù)是活的,“她”知道自己的信息(屬性),并能完成自己的工作(操作);對(duì)象思維更像是一個(gè)團(tuán)隊(duì)的分工協(xié)作。當(dāng)然,相對(duì)而言,對(duì)象思維是一種揚(yáng)棄,不是否定結(jié)構(gòu)化思維。如果說(shuō)結(jié)構(gòu)化編程是一種符合機(jī)器指令執(zhí)行過(guò)程的一種實(shí)現(xiàn),那么對(duì)象思維就是符合客觀世界對(duì)象靜態(tài)構(gòu)成和動(dòng)態(tài)交互行為的一種實(shí)現(xiàn)。面向?qū)ο蟮能浖治龊驮O(shè)計(jì)時(shí),不是直接面向程序代碼的實(shí)現(xiàn),而是需要先根據(jù)實(shí)際需求建立業(yè)務(wù)過(guò)程模型,思考應(yīng)該如何去抽象描述和實(shí)現(xiàn)這些業(yè)務(wù)過(guò)程。從這個(gè)意義上而言,軟件只是一個(gè)實(shí)際業(yè)務(wù)的載體,其中最重要的目標(biāo)是業(yè)務(wù)過(guò)程的實(shí)現(xiàn)。統(tǒng)一建模語(yǔ)言UML及其可視化設(shè)計(jì)工具是這種對(duì)象思維的最好實(shí)現(xiàn),作為設(shè)計(jì)活動(dòng)交流手段,也支持軟件過(guò)程的迭代和改進(jìn)。以用例描述和刻畫需求,以多個(gè)靜態(tài)視圖和動(dòng)態(tài)視圖建立對(duì)象元素之間的聯(lián)系和交互行為,使對(duì)象系統(tǒng)實(shí)現(xiàn)建立在系統(tǒng)分析和設(shè)計(jì)的藍(lán)圖之上,許多流行的IDE都支持這種集成性的實(shí)現(xiàn)。面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的抽象數(shù)據(jù)類型、封裝性、繼承性(泛化)、多態(tài)性、消息和事件機(jī)制等,保證了對(duì)象思維成果的代碼級(jí)轉(zhuǎn)換。

(2) 模式思維 可以認(rèn)為是對(duì)象思維的高級(jí)形式。如何應(yīng)用設(shè)計(jì)模式?其實(shí),任何復(fù)雜對(duì)象聯(lián)系問(wèn)題都可以通過(guò)增加一個(gè)間接層次來(lái)解決,即所謂的抽象層。設(shè)計(jì)模式的核心思維, 用一句話來(lái)高度概括就是:多態(tài)包容是諸多設(shè)計(jì)模式中都反復(fù)出現(xiàn)的經(jīng)典技術(shù),通過(guò)多態(tài)來(lái)適應(yīng)各種變化。而所謂多態(tài)包容是指宿主對(duì)象中包含抽象基類(或接口)的引用,而實(shí)際行為委托給這個(gè)引用所指向的實(shí)際對(duì)象,從而使這些行為可以根據(jù)該引用所指向的實(shí)際對(duì)象不同而不同。因?yàn)樵趯?duì)象級(jí)模塊設(shè)計(jì)階段,最關(guān)鍵的問(wèn)題是系統(tǒng)設(shè)計(jì)的要素及其關(guān)系是經(jīng)常變化的,對(duì)象設(shè)計(jì)方法上需要適應(yīng)和包容這些變化[4]。如果只是試圖捕捉和描述這些變化,還是停留在分析階段;當(dāng)然,如果設(shè)計(jì)的對(duì)象模塊只是能夠面向未來(lái),相對(duì)于軟件開(kāi)發(fā)成本和時(shí)間而言也是不允許的。實(shí)踐表明,分析和設(shè)計(jì)兩個(gè)階段存在必要的轉(zhuǎn)換和迭代,但過(guò)分的分析和設(shè)計(jì)都是事倍功半的。如果在分析階段能夠判斷變化將要發(fā)生,到設(shè)計(jì)階段能夠判斷變化將會(huì)在哪里發(fā)生,并且包容這些變化,這樣就形成了幾個(gè)著名的面向?qū)ο笤O(shè)計(jì)原則,也是對(duì)象復(fù)用設(shè)計(jì)的經(jīng)驗(yàn)總結(jié)。例如,針對(duì)接口編程而不是針對(duì)實(shí)現(xiàn)編程;優(yōu)先使用對(duì)象組合和聚合,而不是應(yīng)用繼承。考慮設(shè)計(jì)中哪些要素是可變時(shí),什么原因?qū)е略O(shè)計(jì)改變有時(shí)并不重要,而不會(huì)引起重新設(shè)計(jì)的封裝才是復(fù)用設(shè)計(jì)的重點(diǎn)。也就是說(shuō),封裝變化的概念是模塊設(shè)計(jì)的主題。掌握這一問(wèn)題的思維方法,我們才需要學(xué)習(xí)重構(gòu)技術(shù)影響最大而且最成功的應(yīng)用, 這就是GoF 的 23 種設(shè)計(jì)模式,在 GoF 設(shè)計(jì)模式中,把設(shè)計(jì)模式分為結(jié)構(gòu)型、創(chuàng)建型和行為型三大類,從不同的角度討論了軟件重構(gòu)的方法。

(3) 架構(gòu)思維 架構(gòu)思維是總體宏觀思維,也是高層思維。架構(gòu)思維“只可意會(huì),不可言傳”,它是一門與實(shí)踐緊密結(jié)合的藝術(shù)。設(shè)計(jì)模式和軟件架構(gòu)技術(shù)是軟件復(fù)用新技術(shù),是構(gòu)件技術(shù)的發(fā)展和延伸。類庫(kù)和構(gòu)件庫(kù)主要側(cè)重于代碼及其物理上的復(fù)用,而設(shè)計(jì)模式則側(cè)重于軟件分析和設(shè)計(jì)階段的業(yè)務(wù)過(guò)程對(duì)象的復(fù)用。軟件架構(gòu)介于二者之間,它把軟件的應(yīng)用領(lǐng)域需求和特征與軟件的基礎(chǔ)架構(gòu)中的要素有機(jī)地結(jié)合起來(lái),可以認(rèn)為是一種宏觀的可復(fù)用構(gòu)件,是一種框架技術(shù)。主要包括三個(gè)方面的思想,一方面架構(gòu)的設(shè)計(jì)起源于需求分析,另一方面架構(gòu)設(shè)計(jì)更加關(guān)注軟件系統(tǒng)的質(zhì)量需求(即非功能性需求);第三方面,架構(gòu)的實(shí)現(xiàn)還依賴于好的開(kāi)發(fā)環(huán)境和項(xiàng)目管理。所以,軟件架構(gòu)設(shè)計(jì)是一個(gè)系統(tǒng)工程,它需要系統(tǒng)架構(gòu)師有很寬的知識(shí)面和實(shí)施能力,從需求分析、架構(gòu)設(shè)計(jì)到模塊設(shè)計(jì)和實(shí)現(xiàn),直到軟件測(cè)試、運(yùn)行和維護(hù)都需要有透徹的理解。 而對(duì)于初學(xué)者而言,設(shè)計(jì)是架構(gòu)、構(gòu)件、接口以及系統(tǒng)其他特征定義的過(guò)程,需要適應(yīng)企業(yè)需求和變化的架構(gòu)模型元素有哪些?如何通過(guò)分層應(yīng)對(duì)復(fù)雜性和變化,構(gòu)建穩(wěn)定的架構(gòu)?如何通過(guò)分包,實(shí)現(xiàn)構(gòu)件化開(kāi)發(fā)?這些問(wèn)題是非?;镜?。

借鑒古代三國(guó)的英雄角色,可以理解架構(gòu)中的角色和功能怎么匹配的?如圖1所示一個(gè)Web應(yīng)用框架[7]。可以參照根據(jù)架構(gòu)模型元素和三國(guó)故事情節(jié)之間的隱喻關(guān)系如下:?jiǎn)我蝗肟谙喈?dāng)于守衛(wèi)荊州的“門神關(guān)羽”; 路由相當(dāng)于劉備的引路人徐庶; 控制層相對(duì)于掌柜曹操; 業(yè)務(wù)模型層相對(duì)于鞠躬盡瘁的勞模諸葛亮; 表示層相對(duì)于戰(zhàn)神呂布; 異步處理相對(duì)于劉備的幕后英雄趙云; 接口層相對(duì)于孫權(quán)的外交官魯肅; 數(shù)據(jù)層相對(duì)于曹營(yíng)的后方夏侯敦; 緩存層相對(duì)于曹操五個(gè)良將之一的張遼; 通用類庫(kù)相當(dāng)于曹操的謀士郭嘉,三國(guó)演義中說(shuō)“天生郭奉孝,豪杰冠群英。腹內(nèi)藏經(jīng)史,胸中隱甲兵。” 這樣陣容的精英團(tuán)隊(duì)組合在三國(guó)時(shí)代打天下也無(wú)敵了,那么架構(gòu)的思維就是謀天下的大思維,要學(xué)會(huì)結(jié)合對(duì)象思維和模式思維,從局部到整體集成上理解架構(gòu)思維。離開(kāi)了架構(gòu)思維,專業(yè)知識(shí)的集成和能力創(chuàng)新就無(wú)從談起。

圖1 一個(gè)Web應(yīng)用架構(gòu)中的隱喻

2.2 集成發(fā)現(xiàn)教學(xué)法

2002年美國(guó)學(xué)者James F. Kurose和Keith W. Ross在《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》 [Computer Networking: A Top-Down Approach]一書[5]中提出的極富盛名的“自頂向下”教學(xué)法是從計(jì)算機(jī)網(wǎng)絡(luò)的原理及其協(xié)議教學(xué)中總結(jié)出來(lái)的,從高層的應(yīng)用層協(xié)議開(kāi)始沿協(xié)議棧向下層講解,可以從實(shí)現(xiàn)、應(yīng)用的角度更好地理解各層網(wǎng)絡(luò)協(xié)議的意義,教學(xué)中強(qiáng)調(diào)應(yīng)用層范例和編程接口,學(xué)生可以在實(shí)際應(yīng)用程序環(huán)境中進(jìn)行學(xué)習(xí)、模仿和創(chuàng)造。傳統(tǒng)的計(jì)算機(jī)課程體系人為地割裂了解決問(wèn)題時(shí)所需技能的綜合性。例如匯編語(yǔ)言、計(jì)算機(jī)原理、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、操作系統(tǒng)和編譯原理分別從不同角度介紹了計(jì)算機(jī)的硬件和軟件系統(tǒng),但是隨著多核系統(tǒng)日漸成為主流,這種軟硬件分離的教學(xué)方法變得不切實(shí)際。國(guó)內(nèi)外大學(xué)都在這方面展開(kāi)了探索,即如何用一種綜合的方法來(lái)講授計(jì)算機(jī)系統(tǒng)的相關(guān)內(nèi)容??▋?nèi)基·梅隆大學(xué)的《深入理解計(jì)算機(jī)系統(tǒng)》是目前比較成功的探索,它主要從程序員視角來(lái)講解計(jì)算機(jī)系統(tǒng),內(nèi)容偏向系統(tǒng)軟件(特別是操作系統(tǒng))。美國(guó)佐治亞理工學(xué)院計(jì)算機(jī)系教授Umakishore Ramachandran提出在《計(jì)算機(jī)系統(tǒng)》課程實(shí)踐中更多地強(qiáng)調(diào)采用軟硬件集成的方法[6],系統(tǒng)地講解了計(jì)算機(jī)系統(tǒng)的軟件和硬件知識(shí)及其相互關(guān)系,從發(fā)現(xiàn)問(wèn)題入手揭示系統(tǒng)架構(gòu)與操作系統(tǒng)之間的高度集成,學(xué)生才會(huì)融會(huì)貫通。例如,“什么是內(nèi)存管理?”,一旦理解了內(nèi)存管理的需求,再探討內(nèi)存管理所需的軟件技術(shù)和相應(yīng)的硬件支持,才有比較清晰的理解。計(jì)算機(jī)的內(nèi)存系統(tǒng)可能是決定計(jì)算機(jī)性能最為關(guān)鍵的因素。如果內(nèi)存系統(tǒng)不能以匹配處理器速度的方式提供執(zhí)行程序所需的代碼和數(shù)據(jù),處理器速度再快也毫無(wú)意義。由于技術(shù)的進(jìn)步,內(nèi)存系統(tǒng)的大小一直在跨越式發(fā)展,但應(yīng)用程序使用內(nèi)存的胃口也在以同樣的速度增長(zhǎng)著。因此,內(nèi)存也是寶貴資源,操作系統(tǒng)的作用之一就是保證用好資源。從問(wèn)題發(fā)現(xiàn)和提出入手可以有效地集成軟硬件知識(shí),理解關(guān)于有效管理內(nèi)存的操作系統(tǒng)算法以及相應(yīng)的體系結(jié)構(gòu)支持,進(jìn)而把握內(nèi)存層次問(wèn)題,可以幫助降低處理器在訪問(wèn)代碼和數(shù)據(jù)時(shí)的延遲。

軟件開(kāi)發(fā)技術(shù)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)中最活躍、發(fā)展最快的部分,大部分計(jì)算機(jī)和軟件工程的本科畢業(yè)生都從事相關(guān)的工作。當(dāng)今軟件開(kāi)發(fā)技術(shù)中,框架、架構(gòu)、面向?qū)ο蠓治龊驮O(shè)計(jì)、設(shè)計(jì)模式、契約式編程、測(cè)試驅(qū)動(dòng)開(kāi)發(fā)、面向方面的編程、模型驅(qū)動(dòng)架構(gòu)、基于組件的開(kāi)發(fā)、敏捷軟件開(kāi)發(fā)、元編程、面向服務(wù)的體系結(jié)構(gòu)、面向特征的編程等許多新技術(shù)領(lǐng)域已經(jīng)接近成熟,但據(jù)了解國(guó)內(nèi)多數(shù)院校在開(kāi)設(shè)和講授軟件開(kāi)發(fā)技術(shù)相關(guān)課程中,都只涉及到其中部分領(lǐng)域,基本上沒(méi)有應(yīng)用自頂而下的集成發(fā)現(xiàn)教學(xué)方法。部分原因在于教學(xué)理念落后,教材建設(shè)滯后,教學(xué)團(tuán)隊(duì)建設(shè)存在先天不足,沒(méi)有與行業(yè)技術(shù)專家合作教學(xué)。軟件開(kāi)發(fā)技術(shù)課程如何應(yīng)用集成發(fā)現(xiàn)教學(xué)方法呢?下面以框架技術(shù)的學(xué)習(xí)為例來(lái)進(jìn)行探討。在一些著名企業(yè)招聘Java開(kāi)發(fā)人員時(shí),有不少經(jīng)常提到的問(wèn)題,以判斷應(yīng)聘者對(duì)基礎(chǔ)知識(shí)的掌握情況。例如,請(qǐng)解釋一下Session的工作原理,沒(méi)有很好基礎(chǔ)的應(yīng)聘者往往感到一頭霧水。對(duì)于初學(xué)者而言,各種技術(shù)書籍汗牛充棟,仍然對(duì)學(xué)習(xí)各種框架疲于奔命,并不知道如何發(fā)現(xiàn)和解決學(xué)習(xí)中的問(wèn)題,獲得集成性的技術(shù)理解。如果先熟悉Java EE中關(guān)于Servlet API 中常用的類和方法,在此基礎(chǔ)上學(xué)習(xí)某個(gè)框架的使用,最后閱讀HTTP協(xié)議的內(nèi)容。對(duì)HTTP協(xié)議的深入了解,一旦發(fā)現(xiàn)和掌握了這些基礎(chǔ)的內(nèi)容,初學(xué)者就會(huì)發(fā)現(xiàn)使用框架甚至自己開(kāi)發(fā)一個(gè)業(yè)務(wù)框架是多么容易,很自然地會(huì)引導(dǎo)他學(xué)習(xí)設(shè)計(jì)一個(gè)框架所用到的各種技術(shù),其中主要包括類加載器、依賴注入、線程本地、事務(wù)管理和安全控制等。進(jìn)一步地,對(duì)于初學(xué)者而言,應(yīng)該學(xué)習(xí)經(jīng)典的MVC架構(gòu)Struts和最流行的ORM框架Hibernate,并能夠熟練使用JSP+Struts+Hibernate開(kāi)發(fā)小型Java Web應(yīng)用程序。但對(duì)于技術(shù)框架的演化而言,要適應(yīng)既復(fù)雜又安全的應(yīng)用需求,適應(yīng)業(yè)務(wù)需求變化和QoS目標(biāo)需求,對(duì)這些企業(yè)級(jí)應(yīng)用核心需求和技術(shù)有深入的把握。所謂企業(yè)級(jí)應(yīng)用,一般具有數(shù)據(jù)持久化需求、高并發(fā)訪問(wèn)、巨型或海量數(shù)據(jù)、應(yīng)用規(guī)模龐大、界面需求復(fù)雜、生命周期長(zhǎng)等特點(diǎn),高級(jí)學(xué)習(xí)者不能僅停留在早期經(jīng)典的架構(gòu)技術(shù)和解決方案上。眾所周知,在產(chǎn)業(yè)界隨著Spring框架的問(wèn)世,意味了企業(yè)級(jí)J2EE春天的到來(lái),Spring+Struts+Hibernate三個(gè)框架組合(SSH)被廣泛應(yīng)用于Web開(kāi)發(fā)。高級(jí)學(xué)習(xí)者在實(shí)踐中會(huì)發(fā)現(xiàn)以前的SSH已經(jīng)顯得重量級(jí)了,許多大型企業(yè)級(jí)應(yīng)用會(huì)放棄掉一些技術(shù),如Struts、Hibernate和JSP等,但Spring目前仍然是主流,尤其是Spring MVC,足以取代Struts。同時(shí)輕量級(jí)JDBC框架MyBatis也可以取代Hibernate,目前企業(yè)級(jí)Java EE架構(gòu)的首先變成了Spring+Spring MVC+MyBatis , 簡(jiǎn)稱SSM。

當(dāng)然,對(duì)于軟件開(kāi)發(fā)技術(shù)的課程學(xué)習(xí)者而言,開(kāi)發(fā)框架并非是完整的技術(shù)解決方案,他們需要在技術(shù)方案中提出和解決虛擬文件系統(tǒng)、緩存、文件處理框架、模板語(yǔ)言、數(shù)據(jù)庫(kù)訪問(wèn)層、數(shù)據(jù)庫(kù)水平擴(kuò)展、服務(wù)層、流程引擎、元數(shù)據(jù)、展現(xiàn)層、Web層、統(tǒng)一界面框架、Restful Web服務(wù)和模塊化等滿足企業(yè)級(jí)應(yīng)用的核心需求。例如[8],應(yīng)對(duì)大數(shù)據(jù)量存儲(chǔ)和高并發(fā)訪問(wèn)業(yè)務(wù),需要在解決方案中考慮將應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離;為減少數(shù)據(jù)庫(kù)高頻并發(fā)訪問(wèn)的壓力和服務(wù)器負(fù)荷,一般使用一些服務(wù)器緩存技術(shù),如本地緩存、分布式緩存服務(wù)器上的遠(yuǎn)程緩存。盡管這樣服務(wù)器訪問(wèn)壓力得到一定的緩解,但單一應(yīng)用服務(wù)器能夠處理的請(qǐng)求連接是有限的,在并發(fā)訪問(wèn)高峰期應(yīng)用服務(wù)器又成為整個(gè)系統(tǒng)的性能瓶頸,這時(shí)服務(wù)器集群技術(shù)的選擇就非常必要;使用緩存后大部分?jǐn)?shù)據(jù)讀操作訪問(wèn)可以不通過(guò)數(shù)據(jù)庫(kù)服務(wù)器連接就能完成,但是仍有一部分緩存不命中或緩存過(guò)期的讀操作和全部的寫操作都需要訪問(wèn)數(shù)據(jù)庫(kù),在用戶數(shù)達(dá)到一定規(guī)模后,服務(wù)器因?yàn)樨?fù)載壓力過(guò)高而又成為系統(tǒng)性能的瓶頸。這時(shí)在架構(gòu)上有利的決策選擇,可以通過(guò)配置數(shù)據(jù)庫(kù)主從關(guān)系,實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離,從而進(jìn)一步改善數(shù)據(jù)庫(kù)負(fù)載壓力。繼而,如果從一臺(tái)服務(wù)器拆分成多臺(tái)服務(wù)器提供集群服務(wù),隨著應(yīng)用系統(tǒng)業(yè)務(wù)的發(fā)展依然不能滿足需求,這時(shí)就需要使用分布式數(shù)據(jù)庫(kù)和大數(shù)據(jù)的系統(tǒng)架構(gòu)。可見(jiàn)。解決方案中技術(shù)發(fā)現(xiàn)之旅,也是技術(shù)架構(gòu)因需求變化而演化和重構(gòu)的路徑,集成和發(fā)現(xiàn)是一種軟件技術(shù)教學(xué)的啟發(fā)式途徑。除此之外,還必須認(rèn)識(shí)到技術(shù)和管理需要有效的結(jié)合,作為技術(shù)解決方案自然有很多可以自由選擇的領(lǐng)域,有很多受限的前提條件。這些外圍因素往往還與系統(tǒng)背后的個(gè)人、團(tuán)隊(duì)、企業(yè)的價(jià)值觀以及非IT能力有關(guān)。

2.3 教學(xué)模式

對(duì)從事軟件開(kāi)發(fā)行業(yè)的計(jì)算機(jī)專業(yè)學(xué)生而言,長(zhǎng)期的職業(yè)發(fā)展途徑大致分為三個(gè)階段:軟件工程師階段、軟件設(shè)計(jì)師階段、架構(gòu)設(shè)計(jì)師或項(xiàng)目管理師階段。俗話說(shuō),不想當(dāng)元帥的士兵不是好士兵,不想當(dāng)架構(gòu)設(shè)計(jì)師或項(xiàng)目管理師的程序員也不是好的程序員。從專業(yè)知識(shí)集成性和能力培養(yǎng)的成長(zhǎng)路線而言,本科生期間需要學(xué)習(xí)和掌握的開(kāi)發(fā)應(yīng)用軟件主要理論、方法和技術(shù)可以歸結(jié)如下:

(A) 基礎(chǔ)理論知識(shí),如操作系統(tǒng)、計(jì)算機(jī)組成原理和體系結(jié)構(gòu)、編譯原理、數(shù)據(jù)結(jié)構(gòu)與算法、計(jì)算機(jī)網(wǎng)絡(luò)、信息安全等,一般的計(jì)算機(jī)相關(guān)專業(yè)培養(yǎng)方案和教學(xué)計(jì)劃都視為核心課程。

(B) 1~2門程序設(shè)計(jì)語(yǔ)言,主要面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,Java/C++/C#/Python等。如果從事Web開(kāi)發(fā)的話, 還要學(xué)習(xí)一些網(wǎng)絡(luò)編程技術(shù)、腳本語(yǔ)言、XML等。

(C) 面向?qū)ο蠓椒▽W(xué),面向?qū)ο笏枷?、基于?gòu)件的開(kāi)發(fā)CBD、面向方面編程AOP等。

(D) 關(guān)系型數(shù)據(jù)庫(kù)及DBMS,例如,ORACLE/SQL Server/DB2/MySQL等。

(E) 軟件開(kāi)發(fā)集成開(kāi)發(fā)環(huán)境和軟件測(cè)試技術(shù),例如,IntelliJ IDEA/Eclipse/MyEclipse/VS.NET等。

(F) UML建模工具,例如,Rational ROSE/VISIO。

(G) 軟件過(guò)程管理,例如,RUP/XP/CMM等,通過(guò)軟件過(guò)程模型和持續(xù)改進(jìn),使開(kāi)發(fā)流程規(guī)范化,軟件質(zhì)量可控。

(H) 軟件源碼管理Git/GitHub、項(xiàng)目管理、軟件架構(gòu)、框架、開(kāi)源軟件、軟件開(kāi)發(fā)的經(jīng)濟(jì)學(xué)等。

對(duì)多數(shù)學(xué)生而言,恰當(dāng)?shù)膶W(xué)習(xí)路線應(yīng)該是:(B)→(C)→(E)→(F)→(G)→(H)。進(jìn)一步地,軟件工程師著重于(B)、(C)、(E)、(D);軟件設(shè)計(jì)師著重于(B)、(C)、(E)、(D)、(F);架構(gòu)設(shè)計(jì)師著重于(C)、(F)、(H)。

專業(yè)教學(xué)培養(yǎng)體系中,軟件開(kāi)發(fā)課程群設(shè)置以初學(xué)者自頂向下地集成知識(shí)和發(fā)現(xiàn)知識(shí)、提高運(yùn)用能力為導(dǎo)向,以軟件開(kāi)發(fā)方法學(xué)、工具和環(huán)境支持為教學(xué)核心。其中,軟件開(kāi)發(fā)方法學(xué)比較成熟的內(nèi)容和做法是,從不同的軟件類型,按不同的觀點(diǎn)和原則,對(duì)軟件開(kāi)發(fā)中應(yīng)遵循的策略、原則、步驟和必須產(chǎn)生的軟件產(chǎn)物進(jìn)行解構(gòu)性教學(xué),從而要求學(xué)生掌握軟件開(kāi)發(fā)規(guī)范化和工程化的基本技術(shù)。教學(xué)內(nèi)容設(shè)置上應(yīng)該覆蓋軟件開(kāi)發(fā)模型和一般方法、軟件開(kāi)發(fā)平臺(tái)與工具、系統(tǒng)分析與建模、軟件架構(gòu)技術(shù)、軟件設(shè)計(jì)模式、IT規(guī)劃與咨詢、軟件開(kāi)發(fā)項(xiàng)目管理、軟件開(kāi)發(fā)標(biāo)準(zhǔn)和案例等內(nèi)容。通過(guò)這些課程群的設(shè)置和教學(xué)實(shí)施,學(xué)生很容易掌握在操作系統(tǒng)、數(shù)據(jù)庫(kù)、多媒體、網(wǎng)絡(luò)等應(yīng)用環(huán)境中軟件的基本開(kāi)發(fā)方法及技術(shù),以及在軟件開(kāi)發(fā)過(guò)程中要解決的數(shù)據(jù)結(jié)構(gòu)與常用算法的實(shí)現(xiàn),學(xué)生在掌握了開(kāi)發(fā)軟件所必需的基礎(chǔ)知識(shí)、基本開(kāi)發(fā)方法和常用開(kāi)發(fā)技術(shù)之后,今后面臨的職業(yè)發(fā)展道路就更加有信心和目標(biāo)。在同濟(jì)大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系的教學(xué)實(shí)踐中,我們部署了如下的教學(xué)方案(要點(diǎn)):

1) 知識(shí)目標(biāo)

(1) 教授以軟件開(kāi)發(fā)的發(fā)展、主要方法、常用工具的使用為主線。包括:軟件開(kāi)發(fā)的基本概念、基本原理、常用的軟件管理方法、常用的建模工具等。

(2) 關(guān)鍵的知識(shí)講授:軟件需求獲取方法、需求規(guī)格說(shuō)明撰寫與評(píng)審方法、軟件設(shè)計(jì)的基本概念、結(jié)構(gòu)化設(shè)計(jì)方法、體系結(jié)構(gòu)設(shè)計(jì)、面向?qū)ο骍ML的軟件分析方法、UML建模方法、構(gòu)件化軟件開(kāi)發(fā)技術(shù)等。

(3) 通過(guò)該課程的教學(xué)活動(dòng),學(xué)生應(yīng)具備軟件開(kāi)發(fā)基本理論知識(shí)。

2) 能力目標(biāo)

(1) 運(yùn)用軟件開(kāi)發(fā)的概念、原理、技術(shù)和方法開(kāi)發(fā)與維護(hù)軟件的能力。

(2) 編寫相關(guān)技術(shù)文檔的能力。

(3) 分析問(wèn)題和解決問(wèn)題的能力和團(tuán)隊(duì)工作交流能力。

3) 素質(zhì)目標(biāo)

(1) 職業(yè)素養(yǎng)的培養(yǎng):對(duì)軟件開(kāi)發(fā)領(lǐng)域常見(jiàn)的職業(yè)要求、團(tuán)隊(duì)合作精神進(jìn)行培養(yǎng)與灌輸。

(2) 專業(yè)素養(yǎng)的培養(yǎng):對(duì)軟件管理過(guò)程中常見(jiàn)的問(wèn)題能夠予以準(zhǔn)確判斷,明確解決思路。

4) 教學(xué)方案及其改進(jìn)要點(diǎn)

結(jié)合IEEE & ACM CS 2013課程體系, 2014 年我校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)又一次修訂培養(yǎng)計(jì)劃[9], 并開(kāi)始制定課程教學(xué)大綱和實(shí)驗(yàn)教學(xué)大綱, 進(jìn)一步完善教學(xué)體系、教學(xué)團(tuán)隊(duì)相關(guān)支持。其中, 軟件技術(shù)系列的課程包括原有的: 高級(jí)語(yǔ)言程序設(shè)計(jì)、匯編語(yǔ)言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法、數(shù)據(jù)庫(kù)系統(tǒng)、操作系統(tǒng)、編譯原理、軟件工程、程序設(shè)計(jì)方法、服務(wù)計(jì)算概論等, 又增加了計(jì)算機(jī)系統(tǒng)實(shí)驗(yàn)(必修)、軟件開(kāi)發(fā)方法(必修)、Unix 系統(tǒng)分析(選修)、軟件形式化技術(shù)(選修) 等課程。這也體現(xiàn)了目前國(guó)際上計(jì)算機(jī)科學(xué)學(xué)科知識(shí)體系在系統(tǒng)基礎(chǔ)和軟件開(kāi)發(fā)基礎(chǔ)方面有了較大的變化,其中, 前者對(duì)應(yīng)一個(gè)新的知識(shí)領(lǐng)域, 包括操作系統(tǒng)、網(wǎng)絡(luò)、計(jì)算機(jī)體系結(jié)構(gòu)的常用論題, 強(qiáng)調(diào)系統(tǒng)思維方法和系統(tǒng)能力的提升。而后者過(guò)去主要依賴前期程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和算法課程以及后期的軟件工程課程, 按照 CS2013 的觀點(diǎn), 算法、設(shè)計(jì)、編程和軟件開(kāi)發(fā)過(guò)程是一些基礎(chǔ)軟件開(kāi)發(fā)概念和技術(shù)的組合, 其中軟件建模和基于平臺(tái)的軟件開(kāi)發(fā)是信息技術(shù)應(yīng)用和創(chuàng)新的最重要基礎(chǔ)部分。

在計(jì)劃調(diào)整過(guò)程中,以培養(yǎng)和提高學(xué)生復(fù)雜軟件系統(tǒng)的構(gòu)建和實(shí)現(xiàn)能力以及新技術(shù)應(yīng)用能力為目標(biāo), 建立軟件開(kāi)發(fā)全局性的目標(biāo)矩陣和技術(shù)能力矩陣, 各門課程的建設(shè)相互聯(lián)系、相互支持。例如:

(1) “軟件開(kāi)發(fā)方法”中構(gòu)件技術(shù)、設(shè)計(jì)模式以及流行的軟件開(kāi)發(fā)環(huán)境和工具,與“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程中面向?qū)ο蟪绦蛟O(shè)計(jì)、“軟件工程”中面向?qū)ο蟮姆治雠c建模, 教學(xué)上聯(lián)系起來(lái), 培養(yǎng)學(xué)生軟件開(kāi)發(fā)的分析、設(shè)計(jì)建模和實(shí)現(xiàn)能力; 程序設(shè)計(jì)是軟件架構(gòu)實(shí)現(xiàn)的核心,通過(guò)代碼可以完成對(duì)現(xiàn)實(shí)世界的虛擬化:概念的虛擬化、能力的虛擬化、實(shí)體的虛擬化、記憶的虛擬化、協(xié)作的虛擬化,例如,概念的虛擬化:對(duì)應(yīng)一個(gè)業(yè)務(wù)概念的類定義;能力的虛擬化:一個(gè)方法對(duì)多個(gè)輸入數(shù)據(jù)進(jìn)行加工并返回結(jié)果;實(shí)體的虛擬化:一個(gè)類的實(shí)例,即具體的數(shù)據(jù);記憶的虛擬化:一條關(guān)系型數(shù)據(jù)庫(kù)的行記錄;協(xié)作的虛擬化:遠(yuǎn)程方法調(diào)用。程序代碼是計(jì)算機(jī)的指揮者,通過(guò)代碼把人類智慧「賦能」給計(jì)算機(jī)的一種語(yǔ)言。對(duì)象設(shè)計(jì)模式主要支持功能性需求;而架構(gòu)模式支持非功能性需求?,F(xiàn)代軟件架構(gòu)設(shè)計(jì)的原則來(lái)自于軟件復(fù)用,軟件復(fù)用是指重復(fù)使用“為了復(fù)用目的而設(shè)計(jì)的軟件”的過(guò)程。

(2) “程序設(shè)計(jì)方法”與 “軟件形式化技術(shù)”、“軟件可靠性與容錯(cuò)”與“軟件測(cè)試”課程聯(lián)系起來(lái), 培養(yǎng)學(xué)生軟件設(shè)計(jì)驗(yàn)證、性能優(yōu)化與質(zhì)量保證能力。

(3) “軟件開(kāi)發(fā)方法” 課程中將軟件體系結(jié)構(gòu)與“服務(wù)計(jì)算概論”中的面向服務(wù)架構(gòu)聯(lián)系起來(lái), 將軟件建模與“電子商務(wù)技術(shù)”中業(yè)務(wù)建模聯(lián)系起來(lái), 培養(yǎng)學(xué)生對(duì)復(fù)雜軟件架構(gòu)和軟件開(kāi)發(fā)環(huán)境的應(yīng)用能力和創(chuàng)新基礎(chǔ)。

(4) 將先期的軟件技術(shù)課程和后期的“數(shù)據(jù)庫(kù)系統(tǒng)原理”、“計(jì)算機(jī)網(wǎng)絡(luò)”、“Web技術(shù)”、“軟件工程”課程教學(xué)聯(lián)系起來(lái), 培養(yǎng)學(xué)生軟件過(guò)程改進(jìn)與迭代、 軟件開(kāi)發(fā)組織、管理和溝通能力。

(5) 適當(dāng)注意本科階段與研究生階段課程與實(shí)踐在深度和廣度上的銜接和聯(lián)系。

2014年培養(yǎng)計(jì)劃和教學(xué)方案調(diào)整基本體現(xiàn)了集成發(fā)現(xiàn)教學(xué)法的精神。在軟件開(kāi)發(fā)技術(shù)系列課程建設(shè)上,試圖建立從程序設(shè)計(jì)到軟件工程之間一系列課程的連接橋梁。課程的建設(shè)標(biāo)準(zhǔn)以工程專業(yè)認(rèn)證通用標(biāo)準(zhǔn)(12 條)為基準(zhǔn), 達(dá)成預(yù)定的技術(shù)能力矩陣, 并在教學(xué)中強(qiáng)調(diào)課程的畢業(yè)達(dá)成度評(píng)價(jià)和持續(xù)改進(jìn)。在課程實(shí)踐環(huán)節(jié),聘請(qǐng)校外技術(shù)專家參與教學(xué)和指導(dǎo)環(huán)節(jié)。

3 結(jié) 語(yǔ)

本文從計(jì)算機(jī)專業(yè)中軟件開(kāi)發(fā)技術(shù)課程設(shè)置和教學(xué)改革的要求出發(fā),分析了新舊教學(xué)體系的特點(diǎn)和目前存在的主要問(wèn)題。基于軟件開(kāi)發(fā)實(shí)踐中的抽象思維(對(duì)象思維、模式思維和架構(gòu)思維),提出了一種適合于軟件開(kāi)發(fā)技術(shù)課程的集成發(fā)現(xiàn)教學(xué)法和教學(xué)模式。本文探討了如何建立以軟件開(kāi)發(fā)方法及其綜合實(shí)踐為核心的應(yīng)用軟件課程教學(xué)體系,如何引導(dǎo)和支持學(xué)生自主地發(fā)現(xiàn)所學(xué)知識(shí),提高應(yīng)用實(shí)踐的集成運(yùn)用能力,是需要借助于很好的教學(xué)設(shè)計(jì)、合理的教學(xué)計(jì)劃支持。

今后需要重點(diǎn)關(guān)注的是,創(chuàng)新和創(chuàng)業(yè)已經(jīng)成為現(xiàn)階段我國(guó)經(jīng)濟(jì)轉(zhuǎn)型和企業(yè)升級(jí)的重要發(fā)展策略, 而技術(shù)創(chuàng)新驅(qū)動(dòng)商業(yè)模式創(chuàng)新已成為 IT 創(chuàng)新的一個(gè)重要范式。 軟件開(kāi)發(fā)方法創(chuàng)新能力的培養(yǎng)起點(diǎn)高、難度大,有必要重點(diǎn)研究軟件新技術(shù)的教學(xué)實(shí)踐。例如,現(xiàn)在從事企業(yè)軟件開(kāi)發(fā),掌握企業(yè)信息系統(tǒng)軟件開(kāi)發(fā)中構(gòu)件技術(shù)的應(yīng)用很有好處。目前電商系統(tǒng)架構(gòu)、大規(guī)模信息服務(wù)架構(gòu)、大數(shù)據(jù)應(yīng)用架構(gòu)、云計(jì)算架構(gòu)、物聯(lián)網(wǎng)架構(gòu)都有應(yīng)用, 教學(xué)實(shí)踐中一方面重點(diǎn)介紹成熟的構(gòu)件技術(shù)及典型的分布式架構(gòu)技術(shù), 但作為創(chuàng)新的基礎(chǔ)訓(xùn)練, 可以結(jié)合一些新的選題, 提供給學(xué)生足夠的學(xué)習(xí)支撐和技術(shù)支持, 例如, 開(kāi)源軟件架構(gòu)、網(wǎng)構(gòu)軟件及其自適應(yīng)演化技術(shù)、面向方面的軟件開(kāi)發(fā)、高安全的形式化驗(yàn)證、面向 Agent 的軟件開(kāi)發(fā)、敏捷軟件開(kāi)發(fā)、面向移動(dòng)應(yīng)用 App 開(kāi)發(fā)、包管理系統(tǒng)Docker與分布式服務(wù)框架、云件開(kāi)發(fā)等,引導(dǎo)學(xué)生創(chuàng)新的思維和計(jì)劃實(shí)施能力的提高。希望這部分的內(nèi)容可以根據(jù)實(shí)際需要和可能在課程項(xiàng)目、課程設(shè)計(jì)、專業(yè)實(shí)習(xí)和畢業(yè)設(shè)計(jì)期間有序地安排和實(shí)施。

[1] Joint Task Force on Computing Curricula,Association for Computing Machinery (ACM) and IEEE Computer Society.Computer Science Curricula 2013:Curriculum Guidelines for Undergraduate Degree Programs in Computer Science[M].ACM,2013.

[2] 閔應(yīng)驊.計(jì)算機(jī)科學(xué)課目CS2013[OL].http://blog.sciencenet.cn/blog-290937-803714.html.

[3] 駱斌,丁二玉,劉欽.軟件工程與計(jì)算(卷2):軟件開(kāi)發(fā)的技術(shù)基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2012.

[4] 謝新華.軟件架構(gòu)設(shè)計(jì)的思想與模式[OL].中科院計(jì)算所培訓(xùn)中心,高級(jí)軟件系統(tǒng)架構(gòu)師培訓(xùn).http://www.TCICT.cn.

[5] Behrouz A Forouzan,Firouz Mosharraf.計(jì)算機(jī)網(wǎng)絡(luò)教程:自頂向下方法[M].陳鳴,譯.6版.北京:機(jī)械工業(yè)出版社,2013.

[6] Umakishore Ramachandran,William D Leahy.計(jì)算機(jī)系統(tǒng):系統(tǒng)架構(gòu)與操作系統(tǒng)的高度集成[M].陳文允,譯.北京:機(jī)械工業(yè)出版社,2015.

[7] 應(yīng)用Web框架模塊設(shè)計(jì)三國(guó)演義篇[OL].2015-09-16.http://weibo.com/p/1001603887721239202407.

[8] 大型網(wǎng)站架構(gòu)演化歷程[OL].2015-06-03.http://blog.csdn.net/zhaoxuejie/article/details/46347063.

[9] 同濟(jì)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)本科生專業(yè)培養(yǎng)計(jì)劃(2014版)[OL].http://see.#edu.cn/09/fb/c319a2555/page.htm.

RESEARCHONTHEINTEGRATEDDISCOVERYTEACHINGMETHODOFSOFTWAREDEVELOPMENTTECHNOLOGYCURRICULUMFORCOMPUTERSCIENCEMAJOR

Wang Xiaoping Pei Xilong Wei Zhihua

(DepartmentofComputerScienceandTechnology,CollegeofElectronicandInformationEngineering,TongjiUniversity,Shanghai200092,China)

There are some problems with the computer software engineering curriculum system in our investigation and analysis of domestic and foreign universities. In order to meet the requirements of high-end talents for information technology and the adjustment of old and new systems, based on the abstract thinking (i.e. object of thinking, design pattern thinking and architecture thinking) in software development, we propose an integrated discovery teaching method and teaching model aiming at main target of the ability to use for undergraduate students of computer science. Moreover, to further explore the teaching system of application software course based on software development methods and comprehensive practice as the core, the relationship between application of reorganization of courses basic courses, core courses and related platform, make the curriculum more closely, converge more smoothly, which is conducive to the cultivation of students’ innovation ability.

Software development technology Curriculum reform Integrated discovery teaching method Abstract thinking

TP3

A

10.3969/j.issn.1000-386x.2017.09.005

2016-10-09。同濟(jì)大學(xué)2015-2016年度教學(xué)改革課題資助。王小平,教授,主研領(lǐng)域:智能算法,軟件技術(shù),社會(huì)計(jì)算,安全關(guān)鍵系統(tǒng)。裴喜龍,講師。衛(wèi)志華,副教授。

猜你喜歡
架構(gòu)軟件思維
基于FPGA的RNN硬件加速架構(gòu)
思維跳跳糖
思維跳跳糖
思維跳跳糖
思維跳跳糖
禪宗軟件
功能架構(gòu)在電子電氣架構(gòu)開(kāi)發(fā)中的應(yīng)用和實(shí)踐
構(gòu)建富有活力和效率的社會(huì)治理架構(gòu)
軟件對(duì)對(duì)碰
VoLTE時(shí)代智能網(wǎng)架構(gòu)演進(jìn)研究
盐津县| 华容县| 手机| 青河县| 马鞍山市| 怀远县| 武城县| 紫阳县| 赤壁市| 策勒县| 新田县| 大兴区| 柘荣县| 玉溪市| 土默特左旗| 门源| 玉田县| 万安县| 太白县| 铜梁县| 巫山县| 德格县| 景宁| 河曲县| 曲靖市| 惠安县| 民和| 松原市| 榆社县| 西宁市| 云霄县| 微博| 雷波县| 江永县| 喀什市| 灵璧县| 叙永县| 阿合奇县| 博野县| 安平县| 隆尧县|