【摘要】軟件從業(yè)人員的人文素質(zhì)和科學(xué)素養(yǎng)決定了中國(guó)軟件產(chǎn)業(yè)的未來。軟件人才教育必須重視科學(xué)人文底蘊(yùn)的積淀,而不應(yīng)局限于知識(shí)的傳授和實(shí)踐能力的提高。該文著重探討了如何針對(duì)軟件學(xué)院的辦學(xué)目標(biāo)和特色,在教學(xué)中培養(yǎng)軟件工程碩士的科學(xué)思維和創(chuàng)新思維能力,并引導(dǎo)其從哲學(xué)角度思考軟件開發(fā)與設(shè)計(jì)中的問題。
【關(guān)鍵詞】軟件工程碩士;科學(xué)思維;創(chuàng)新思維;哲學(xué)思維
【中圖分類號(hào)】G420 【文獻(xiàn)標(biāo)識(shí)碼】B 【論文編號(hào)】1009—8097 (2008) 03—0116—04
“面向應(yīng)用、面向領(lǐng)域,培養(yǎng)多層次、實(shí)用型、復(fù)合型、國(guó)際化人才”是軟件學(xué)院的辦學(xué)目標(biāo)和特色,對(duì)軟件工程領(lǐng)域工程碩士應(yīng)注重培養(yǎng)其自學(xué)專業(yè)知識(shí)的能力、理解特定領(lǐng)域?qū)I(yè)方法的能力和自我發(fā)展的能力。
大多數(shù)在職學(xué)習(xí)的工程碩士學(xué)生,已經(jīng)具有一定的自學(xué)能力和較豐富的實(shí)踐經(jīng)驗(yàn),處理和解決實(shí)際問題的能力普遍強(qiáng)于全日制在校生,他們希望通過碩士階段的系統(tǒng)學(xué)習(xí),使知識(shí)水平和能力都得到明顯提升。相對(duì)本科層次而言,碩士生不僅要有較強(qiáng)的專業(yè)能力,還應(yīng)具備一定的人文素養(yǎng)和科學(xué)素養(yǎng)。下文將以《軟件架構(gòu)與設(shè)計(jì)模式》課程為切入點(diǎn),闡述如何在專業(yè)課教學(xué)中培養(yǎng)軟件工程碩士的科學(xué)思維和創(chuàng)新思維能力,并初步探討對(duì)其中軟件設(shè)計(jì)與開發(fā)問題的哲學(xué)思考。
一 軟件人才科學(xué)思維能力的培養(yǎng)
人與人的差異,很大程度上取決于人的思維方式與思維水平的差異??茖W(xué)思維是介于日常思維和哲學(xué)思維之間的思維層次,既有與實(shí)踐相聯(lián)系的確定性,又具有抽象性、邏輯性和系統(tǒng)性??茖W(xué)思維能力的高低,是研究能力和素質(zhì)的體現(xiàn),直接決定著軟件工程碩士生畢業(yè)后能否擔(dān)當(dāng)所肩負(fù)的重任。因此,在教學(xué)中要有意識(shí)地倡導(dǎo)科學(xué)精神,把科學(xué)思維的培養(yǎng)貫穿于整個(gè)教學(xué)過程,既要促進(jìn)學(xué)生知識(shí)的增長(zhǎng),更要促進(jìn)學(xué)生思維能力的發(fā)展。
國(guó)內(nèi)軟件工程的教學(xué)和培訓(xùn),已經(jīng)開始關(guān)注軟件過程、問題解決步驟等宏觀方法,但卻忽略了基本的科學(xué)思維方法在軟件開發(fā)中的微觀應(yīng)用。如果不能有意識(shí)地運(yùn)用這些邏輯思維方法來解決軟件問題,或不知道如何使用常規(guī)科學(xué)思維來完成開發(fā)任務(wù),就會(huì)把軟件開發(fā)神秘化,認(rèn)為開發(fā)高手如藝術(shù)家,設(shè)計(jì)技巧完全靠靈感所得,毫無思維規(guī)律可言。實(shí)際上,軟件工程師微觀上的思維模式并未超出傳統(tǒng)的科學(xué)思維范疇,心智良好并接受過系統(tǒng)的邏輯思維以及其它思維方式訓(xùn)練的程序員,都能解決軟件中的大部分問題。
1 在教學(xué)中培養(yǎng)發(fā)現(xiàn)問題和解決問題的能力
問題發(fā)現(xiàn)和解決過程是高級(jí)形式的學(xué)習(xí)活動(dòng), 強(qiáng)化學(xué)生的問題意識(shí),引導(dǎo)學(xué)生解決問題或創(chuàng)造性地解決問題,有利于培養(yǎng)其綜合思維能力和創(chuàng)造性思維。因此,在教學(xué)中變傳統(tǒng)的知識(shí)傳授過程為“探索和解決問題”序列的探究過程,創(chuàng)設(shè)問題情境,引導(dǎo)學(xué)生不斷地提出有價(jià)值的問題,探索解決問題的思路,對(duì)于提高學(xué)生的科學(xué)思維能力大有裨益。
(1)改變教學(xué)模式,引導(dǎo)學(xué)生發(fā)現(xiàn)問題和解決問題
課堂教學(xué)仍是當(dāng)前高校教學(xué)的主要形式,課堂教學(xué)質(zhì)量的高低直接影響著學(xué)生知識(shí)水平和能力的提高。在教學(xué)中除了應(yīng)講清講透知識(shí),更重要的是啟發(fā)和培養(yǎng)學(xué)生發(fā)現(xiàn)和解決問題的能力。沒有這方面的訓(xùn)練,學(xué)生只會(huì)接受知識(shí),其透視問題、把握問題的能力和習(xí)慣不能得到有效的開發(fā),理論上的創(chuàng)新更無從談起。
《軟件架構(gòu)與設(shè)計(jì)模式》所涉及的知識(shí)源自軟件設(shè)計(jì)實(shí)踐,有軟件開發(fā)經(jīng)驗(yàn)的學(xué)生完全能夠自學(xué),甚至已經(jīng)在從事軟件開發(fā)的過程中自發(fā)或自覺地加以應(yīng)用,只是缺乏系統(tǒng)性。因此,在教學(xué)過程中必須改變平鋪直敘的授課方法,采用靈活的授課形式,從教學(xué)的內(nèi)容、方法和手段等多方面調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,使他們主動(dòng)參與教學(xué)過程。教師首先簡(jiǎn)明扼要地介紹軟件體系結(jié)構(gòu)的發(fā)展現(xiàn)狀、存在的問題與爭(zhēng)論以及對(duì)軟件開發(fā)的影響等,以激發(fā)學(xué)生的興趣;在教學(xué)中,留足夠的時(shí)間讓學(xué)生去閱讀、思考和提問,要善于創(chuàng)造問題情境,開展多種形式的討論,以提高學(xué)生發(fā)現(xiàn)問題和解決問題的能力,鼓勵(lì)學(xué)生對(duì)權(quán)威理論提出評(píng)論性意見。
(2)創(chuàng)設(shè)問題情境,與學(xué)生共同探求解決問題的方法
問題情境是指學(xué)生不能用已有的知識(shí)經(jīng)驗(yàn)直接加以處理,感到不理解和束手無策的情形。創(chuàng)設(shè)問題情境能夠調(diào)動(dòng)學(xué)生的探究意識(shí)和學(xué)習(xí)積極性,啟迪思維,在交互過程中完成問題的理解、知識(shí)的應(yīng)用。認(rèn)清問題的關(guān)鍵,探索解決問題的途徑正是學(xué)習(xí)和理解架構(gòu)與模式的最佳方法。
問題情境狀態(tài)下的問題,不是簡(jiǎn)單的提問和回答,是通過嚴(yán)謹(jǐn)?shù)姆治?,深刻揭示所講課程內(nèi)容的內(nèi)在規(guī)律,啟發(fā)引導(dǎo)學(xué)生去思考更深層的問題,應(yīng)具有可接受性、障礙性和探索性。每種架構(gòu)或設(shè)計(jì)模式都有特定的意圖和應(yīng)用場(chǎng)景,應(yīng)當(dāng)選擇軟件項(xiàng)目開發(fā)過程中常見而又有一定難度的問題加以分析和討論,啟發(fā)和鼓勵(lì)學(xué)生把自己的實(shí)踐經(jīng)驗(yàn)與相關(guān)理論知識(shí)相結(jié)合,表達(dá)自己的思想,提出合理的方案,再共同總結(jié)和完善分析解決問題的思路,這樣既提高了學(xué)生參與教學(xué)的積極性,又有利于靈活掌握和應(yīng)用所學(xué)內(nèi)容,可取得良好的課堂教學(xué)效果。在課程的后階段,考慮到軟件工程碩士的學(xué)科交叉背景和相對(duì)豐富的實(shí)踐經(jīng)驗(yàn),更應(yīng)提倡學(xué)生主動(dòng)發(fā)現(xiàn)和提出問題,只有不斷提出深刻的問題,分析能力才會(huì)有所提高,這種能力對(duì)從事科學(xué)研究和工程實(shí)踐尤為重要。
1 在問題解決中培養(yǎng)科學(xué)思維方式
軟件與數(shù)學(xué)的淵源甚深,理科學(xué)生尤其是數(shù)學(xué)專業(yè)的學(xué)生在軟件設(shè)計(jì)和開發(fā)中所體現(xiàn)的潛在優(yōu)勢(shì)發(fā)人深思。工科學(xué)生的數(shù)學(xué)基礎(chǔ)停留在知識(shí)層面,沒有提升到思維的高度,用科學(xué)思維方法指導(dǎo)軟件的設(shè)計(jì)和開發(fā),這使他們?cè)诰帉懸话銘?yīng)用軟件時(shí)得心應(yīng)手,善于用新開發(fā)技術(shù)和工具快速實(shí)現(xiàn)軟件功能,但在設(shè)計(jì)內(nèi)在復(fù)雜度高的軟件尤其是系統(tǒng)軟件時(shí),會(huì)感到無從下手,或是只實(shí)現(xiàn)軟件的基本功能需求,而軟件的內(nèi)部結(jié)構(gòu)和質(zhì)量卻很差。這種軟件設(shè)計(jì)的先天缺陷是不能靠規(guī)范軟件工程過程、軟件質(zhì)量管理等后天手段來彌補(bǔ)的。
當(dāng)代軟件越來越復(fù)雜,人文素質(zhì)成為軟件設(shè)計(jì)人員必備的基本素質(zhì),而科學(xué)素養(yǎng)是決定他們最終能否有所作為的最重要的素養(yǎng)。培養(yǎng)軟件專業(yè)學(xué)生的科學(xué)思維能力,固本強(qiáng)基,才能鍛造出適應(yīng)時(shí)勢(shì)變化的真正軟件精英。
(1)巧設(shè)案例, 拓展思維的深度和廣度
多數(shù)學(xué)生習(xí)慣于用一種固定模式解決問題, 把平時(shí)熟悉的架構(gòu)或設(shè)計(jì)模式案例套用在當(dāng)前遇到的問題上, 一旦問題有變化,就很難靈活應(yīng)對(duì),這是思維定勢(shì)造成的。針對(duì)上述情形,教師可設(shè)計(jì)一些特殊案例,并在原問題基礎(chǔ)上加以演進(jìn)變化,與學(xué)生共同探討解決方案。
以處理對(duì)多種數(shù)據(jù)庫(kù)操作的通用數(shù)據(jù)庫(kù)訪問類的設(shè)計(jì)為例,通常學(xué)過設(shè)計(jì)模式的學(xué)生都會(huì)采用工廠模式解決同類的問題,將對(duì)數(shù)據(jù)庫(kù)的訪問集中起來,以保證良好的封裝性和可維護(hù)性。分析具體實(shí)現(xiàn)細(xì)節(jié),由于數(shù)據(jù)庫(kù)操作通常被劃分成幾個(gè)邏輯步驟,在工廠方法類中又可使用模板模式,這是一部分有設(shè)計(jì)經(jīng)驗(yàn)的學(xué)生會(huì)自覺采用的方法。如果使問題稍加變化,要求提供能程序控制的數(shù)據(jù)庫(kù)連接緩存,以提供更大的靈活性和效率,則需要構(gòu)建一個(gè)緩沖池,保存數(shù)據(jù)庫(kù)類的實(shí)例,此時(shí)多數(shù)學(xué)生不能準(zhǔn)確找出解決問題的模式,教師可引導(dǎo)學(xué)生思考如何將保證數(shù)據(jù)庫(kù)連接唯一性的單例模式擴(kuò)展為多例模式。把問題再引申一步,在數(shù)據(jù)訪問類DAO的設(shè)計(jì)中,實(shí)現(xiàn)商業(yè)邏輯抽象和具體數(shù)據(jù)對(duì)象的分離,則是橋模式的應(yīng)用。通過上述案例的變換與分析,學(xué)生對(duì)常見問題的解決方案和設(shè)計(jì)模式理論都會(huì)有更深刻的認(rèn)識(shí)和理解,拓展了思考問題的廣度和深度。
(2)剖析案例,提高思維的精度
人接受新知識(shí)都會(huì)經(jīng)歷“表象-抽象-本質(zhì)”的演化過程, 教師在教學(xué)中可設(shè)計(jì)典型案例, 完成從分析問題,提出解決方案到方案具體實(shí)現(xiàn)的全過程,幫助學(xué)生澄清模糊認(rèn)識(shí),深刻理解所學(xué)內(nèi)容,掌握知識(shí)的實(shí)質(zhì)。
在講解MVC(Model-View-Controller)架構(gòu)模式時(shí),暫不直接介紹相關(guān)概念和理論,以Java技術(shù)實(shí)現(xiàn)Web應(yīng)用的3種不同模型為例,激發(fā)學(xué)生興趣,分析前兩種模型中存在的問題,探討如何先從模型中分離表現(xiàn),再?gòu)囊晥D中分離控制器,最終引入實(shí)現(xiàn)3部件解耦的MVC架構(gòu)方案。在此基礎(chǔ)上,總結(jié)MVC模式的優(yōu)勢(shì),并從使用意圖、所針對(duì)(的)問題、實(shí)現(xiàn)機(jī)制、局限性等方面比較系統(tǒng)、詳盡地講授相關(guān)理論知識(shí)。最后,鑒于MVC作為一個(gè)廣泛采用的模式,在J2EE,.NET框架的候選方案中都有典型應(yīng)用,對(duì)學(xué)生構(gòu)建應(yīng)用系統(tǒng)有較高的參考價(jià)值,將詳細(xì)剖析ASP.NET和JSP+Servlet下MVC模式實(shí)現(xiàn)的2個(gè)完整實(shí)例及代碼片段,強(qiáng)化對(duì)所學(xué)知識(shí)的理解和實(shí)踐,學(xué)以致用。在整個(gè)課程的結(jié)束階段,嘗試融會(huì)貫通,綜合運(yùn)用所學(xué)知識(shí),以企業(yè)應(yīng)用為切入點(diǎn),從領(lǐng)域邏輯模式,數(shù)據(jù)源架構(gòu)模式,控制器及視圖的不同實(shí)現(xiàn)方式等角度深入討論系統(tǒng)MVC架構(gòu)的實(shí)現(xiàn)策略,以及與其他設(shè)計(jì)模式的協(xié)同應(yīng)用,提升認(rèn)識(shí)的層次。
二 軟件人才創(chuàng)新思維能力的培養(yǎng)
高等教育必須改變傳統(tǒng)的教學(xué)模式,重視潛能的開發(fā),突出創(chuàng)新能力,實(shí)施創(chuàng)新教育,培養(yǎng)創(chuàng)新人才,追求“為創(chuàng)造性而教”的最高境界。創(chuàng)新思維是創(chuàng)造和創(chuàng)新的核心,在教學(xué)中提倡多種思維方式相結(jié)合,培養(yǎng)和訓(xùn)練創(chuàng)新思維,提高創(chuàng)新能力。
在專業(yè)課的教學(xué)實(shí)踐過程中,有意識(shí)地強(qiáng)調(diào)思維的能動(dòng)性和集中性的統(tǒng)一,強(qiáng)調(diào)思維的逆向性、靈活性、發(fā)散性、獨(dú)創(chuàng)性與敏銳性,能有效提升課堂教學(xué)效果,激發(fā)學(xué)生的學(xué)習(xí)興趣,在潛移默化中培養(yǎng)學(xué)生的創(chuàng)新思維能力。
1 復(fù)合思維與發(fā)散思維相結(jié)合
復(fù)合思維是單一地尋求答案的思維過程,是創(chuàng)新思維不可缺少的前提;而發(fā)散思維則假定一個(gè)問題有多種不同答案,是創(chuàng)新思維的本質(zhì)或基礎(chǔ)。復(fù)合思維“求同”,發(fā)散思維“求異”,在分析解決問題的過程中,應(yīng)努力實(shí)現(xiàn)這兩種思維的有機(jī)結(jié)合:任何軟件的設(shè)計(jì)和實(shí)現(xiàn)方案都不是唯一的,通常同時(shí)有多個(gè)候選架構(gòu)都能正確完成軟件的功能,且各有優(yōu)劣。教學(xué)中應(yīng)鼓勵(lì)學(xué)生盡可能多地從不同的角度,提出各種解決方法。這些方法有的很經(jīng)典,容易想到,有現(xiàn)成方案可借鑒;有的則很具新意,注意針對(duì)系統(tǒng)的特點(diǎn),優(yōu)勢(shì)突出,但實(shí)現(xiàn)起來有一定難度。此時(shí)再用一些經(jīng)驗(yàn)性的方法簡(jiǎn)單分析各種候選架構(gòu)的特性及優(yōu)缺點(diǎn),進(jìn)而引導(dǎo)學(xué)生采用SEI提出的ATAM(Architecture Tradeoff Analysis Method)評(píng)估每一種架構(gòu)方案,從中選擇一種最合理的架構(gòu)設(shè)計(jì)。
2 抽象思維與形象思維相結(jié)合
架構(gòu)師的頭腦需要經(jīng)常在抽象思維和形象思維間切換,他必須能理解表述模糊或抽象的概念并將其變成相關(guān)各方能夠理解的項(xiàng)目構(gòu)件;必須掌握將解決方案分解到不同抽象層次的技能;必須能綜合利用架構(gòu)圖、UML圖、文字和代碼片斷,表達(dá)自己的設(shè)計(jì)思想。如果是對(duì)現(xiàn)有系統(tǒng)的改造,那么在看過系統(tǒng)的文檔和代碼后,他就要能總結(jié)出系統(tǒng)的架構(gòu)特點(diǎn)。雖然架構(gòu)師不是教出來的,但培養(yǎng)上述必備素質(zhì)無疑是本課程的目標(biāo)。模式都基于抽象,架構(gòu)模式描述系統(tǒng)基本的結(jié)構(gòu)組織方案,把系統(tǒng)抽象為部件和連接件;設(shè)計(jì)模式提供部件和連接件的解決方案,是對(duì)不同可變性的封裝,從而使系統(tǒng)在不同的角度達(dá)到“開-閉”原則的要求。但模式不是提供一種簡(jiǎn)單可復(fù)制的方法,而是從已有的經(jīng)驗(yàn)中歸納、抽取、提升規(guī)律的過程,往往是“可意會(huì),不可言傳”,只能用通過“模式”的方法去解決某個(gè)問題的例子來說明模式的存在。在架構(gòu)與設(shè)計(jì)模式的學(xué)習(xí)中,應(yīng)以探索的方式完成“問題-解決方法-通用(可復(fù)用)解決方案-抽象模式-模式的規(guī)范描述-模式實(shí)現(xiàn)”的全過程。
3 逆向思維法
逆向思維是在已知結(jié)論的情況下,尋找其成立的條件和原因,在分析中采用這種方法,能夠使邏輯嚴(yán)密,對(duì)問題分析透徹、認(rèn)識(shí)深刻。在教學(xué)過程中,分析優(yōu)秀的軟件產(chǎn)品解決方案或典型的程序代碼范例,推斷其軟件架構(gòu)和使用的設(shè)計(jì)模式,結(jié)合所學(xué)知識(shí)證實(shí)這種推斷的正確性,并通過對(duì)軟件功能、性能需求,主要特點(diǎn)及開發(fā)技術(shù)的分析,反推選擇該架構(gòu)或模式的理由; 或者找一段真實(shí)代碼(問題代碼)現(xiàn)場(chǎng)討論它的作用,什么地方做得好?什么做得不好?假如是你該如何進(jìn)行設(shè)計(jì)和重構(gòu)?上述方法對(duì)于軟件設(shè)計(jì)和程序重構(gòu)都大有益處。
三 軟件人才哲學(xué)思維習(xí)慣的培養(yǎng)
科學(xué)思維要求從哲學(xué)的高度理解科學(xué),需要哲學(xué)的頭腦和理論思維能力;任何成功的科技創(chuàng)新,尤其是突破傳統(tǒng)的重大科技創(chuàng)新,都有正確的哲學(xué)思維作指導(dǎo)。哲學(xué)思維在當(dāng)今社會(huì)越來越受到重視,有些跨國(guó)公司在招聘人才的時(shí)候公開提出應(yīng)聘者應(yīng)該具有哲學(xué)思維的能力,能夠統(tǒng)觀全局,運(yùn)籌帷幄。為順應(yīng)時(shí)代發(fā)展,軟件人才必須具有哲學(xué)思維,能夠從哲學(xué)的層面思考和發(fā)現(xiàn)問題,用辯證的、發(fā)展的觀點(diǎn)分析問題。
部分優(yōu)秀的軟件工程碩士生不僅已經(jīng)在軟件項(xiàng)目開發(fā)中熟練應(yīng)用架構(gòu)和設(shè)計(jì)模式知識(shí),而且能很好地權(quán)衡理論和實(shí)踐的關(guān)系,少數(shù)學(xué)生更是自覺從哲學(xué)角度思考軟件的設(shè)計(jì)與開發(fā),在課堂討論中形象而深刻地總結(jié)了自己的經(jīng)驗(yàn)與體會(huì),以下是其中兩個(gè)重要的論題。
1 軟件架構(gòu)、設(shè)計(jì)模式與代碼實(shí)踐
有程序經(jīng)驗(yàn)的設(shè)計(jì)人員,對(duì)軟件架構(gòu)、設(shè)計(jì)模式和代碼實(shí)踐通常會(huì)有兩種極端的認(rèn)識(shí)。一種觀點(diǎn)認(rèn)為在具備足夠豐富的編程和項(xiàng)目經(jīng)驗(yàn)之前,軟件架構(gòu)和設(shè)計(jì)模式是空談,沒有學(xué)習(xí)的必要。事實(shí)上,好的軟件設(shè)計(jì)師必須主動(dòng)地選擇工作在合適的抽象層次上,能夠脫離具體編程語(yǔ)言進(jìn)行思考,準(zhǔn)確抓住事物的本質(zhì),而架構(gòu)與模式應(yīng)用實(shí)質(zhì)上正是對(duì)軟件設(shè)計(jì)思想、設(shè)計(jì)知識(shí)的重用;如果只會(huì)工作在代碼實(shí)現(xiàn)層,遇到任何問題就立即想到寫代碼,否則就無法順利思考,其能力是有缺陷的。軟件設(shè)計(jì)需要充分實(shí)踐,但不宥于實(shí)踐,積極地學(xué)習(xí)軟件架構(gòu)與模式的理論,嘗試用理論來指導(dǎo)實(shí)踐,理論與實(shí)踐既不矛盾,也無絕對(duì)的先后順序。
另一種相反的情形是認(rèn)為架構(gòu)師只需關(guān)注模式和系統(tǒng)架構(gòu),軟件架構(gòu)設(shè)計(jì)可以脫離具體的代碼實(shí)踐。事實(shí)上,由于程序設(shè)計(jì)語(yǔ)言、技術(shù)平臺(tái)、數(shù)據(jù)管理技術(shù)、網(wǎng)絡(luò)體系結(jié)構(gòu)等下層技術(shù)的變化迅速,架構(gòu)師一旦脫離現(xiàn)實(shí)應(yīng)用,就會(huì)做出一些不切實(shí)際的設(shè)計(jì)決策,造成設(shè)計(jì)與現(xiàn)實(shí)的脫節(jié),缺乏對(duì)系統(tǒng)真正的指導(dǎo)和掌控,成了為設(shè)計(jì)而設(shè)計(jì),而非應(yīng)需求而設(shè)計(jì)。具體地說,就是會(huì)寫代碼,也能設(shè)計(jì)系統(tǒng)方案,但對(duì)設(shè)計(jì)如何指導(dǎo)代碼,代碼如何實(shí)現(xiàn)設(shè)計(jì)意圖則缺乏把握。因此,在進(jìn)行軟件設(shè)計(jì)時(shí),應(yīng)當(dāng)對(duì)設(shè)計(jì)意圖具體到底層實(shí)現(xiàn)有一個(gè)清醒的脈絡(luò)圖,如果在這種設(shè)計(jì)架構(gòu)下,底層實(shí)現(xiàn)會(huì)有困難或性能滿足不了需求,就應(yīng)當(dāng)調(diào)整設(shè)計(jì)思路。設(shè)計(jì)指導(dǎo)實(shí)踐,而實(shí)踐反過來又決定設(shè)計(jì)。
2 設(shè)計(jì)模式之道
面向?qū)ο笙到y(tǒng)的分析和設(shè)計(jì)實(shí)質(zhì)上追求的就是高內(nèi)聚(Cohesion)和低耦合(Coupling),這也是設(shè)計(jì)模式的原則和精要。面向?qū)ο笙到y(tǒng)的設(shè)計(jì)和開發(fā)中的很多原則,如封裝、繼承和多態(tài)、面向接口編程、優(yōu)先使用組合而不是繼承、將抽象和實(shí)現(xiàn)分離的思想等,在設(shè)計(jì)模式的兩個(gè)基本策略中都有體現(xiàn):發(fā)現(xiàn)并封裝變化點(diǎn);優(yōu)先使用對(duì)象組合,而不是類繼承。設(shè)計(jì)人員或更高抽象層次可以更多關(guān)注設(shè)計(jì)模式的使用場(chǎng)景和應(yīng)用效益,而編碼實(shí)現(xiàn)人員則需要更多關(guān)注設(shè)計(jì)模式的實(shí)現(xiàn)方法。設(shè)計(jì)模式體現(xiàn)的是一種思想,產(chǎn)生于實(shí)踐并指導(dǎo)實(shí)踐。設(shè)計(jì)模式的思想在系統(tǒng)設(shè)計(jì)和開發(fā)中隨處可見:Observer(其實(shí)例為Model-View-Control模式)是MFC中的基本框架;Iterator模式則在C++的STL中有實(shí)現(xiàn);軟件重構(gòu)是實(shí)現(xiàn)設(shè)計(jì)模式的一種手段,設(shè)計(jì)模式往往是重構(gòu)的目的;模式思維有助于理解和選擇系統(tǒng)架構(gòu),也有助于了解和使用框架。理解和掌握設(shè)計(jì)模式,并不只是記住23種或更多的設(shè)計(jì)場(chǎng)景和解決策略,而是接受一種思想的熏陶和洗禮,最重要的是自覺地遵循這種思想去進(jìn)行設(shè)計(jì)和開發(fā)。
四 結(jié)語(yǔ)
多年的專業(yè)課教學(xué)實(shí)踐表明:使學(xué)生掌握扎實(shí)的專業(yè)基礎(chǔ)、合理的知識(shí)結(jié)構(gòu),具備較強(qiáng)的軟件設(shè)計(jì)與開發(fā)能力、工程組織與管理能力固然重要,但要孕育一批優(yōu)秀的軟件人才,僅僅傳授知識(shí)和培養(yǎng)專業(yè)能力是不夠的,知識(shí)經(jīng)濟(jì)時(shí)代需要科學(xué)精神與人文精神的融合。目前,我國(guó)軟件業(yè)界存在的急功近利、浮躁、自我膨脹、不實(shí)事求是、缺乏誠(chéng)信、惟利是圖等現(xiàn)象,都與這兩種精神的缺失有關(guān)。只有大力弘揚(yáng)科學(xué)與人文精神,并將之融會(huì)、貫穿于軟件工程人才培養(yǎng)過程的始終,我國(guó)的軟件產(chǎn)業(yè)才真正有希望。
參考文獻(xiàn):
[1]文俊浩,楊丹,陳林,傅鸝. 軟件工程人才培養(yǎng)體系研究與實(shí)踐[J]. 高等工程教育研究,2005,(4):63-65.
[2] 文俊浩,徐玲,楊丹. 軟件工程人才培養(yǎng)實(shí)踐[J]. 中國(guó)大學(xué)教育,2005(9):31-32.
[3] 陳靜, 馬蘇奇, 王來生. 注重學(xué)生解決問題的能力與創(chuàng)造型思維的培養(yǎng)提高高等數(shù)學(xué)課程的教學(xué)效果[J]. 大學(xué)數(shù)學(xué),2006(3):25-27.
[4] 呂亞芹,劉世祥.培養(yǎng)學(xué)生數(shù)學(xué)思維能力的研究和探索[J]. 北京建筑工程學(xué)院學(xué)報(bào),2004(1):72-75.