摘 要:軟件工程是高校軟件專業(yè)的核心課程,課程性質(zhì)偏于設(shè)計(jì)且實(shí)踐性較強(qiáng);在實(shí)際教學(xué)中,學(xué)生常感課程乏味,難于掌握;本文深入分析探討軟件工程的三要素:過程、方法和工具,一方面總結(jié)指出課程乏味的根源,另一方面給出提高學(xué)生興趣的授課策略,以期學(xué)生能更快更好地掌握軟件工程本質(zhì),為以后的工程實(shí)踐打下良好基礎(chǔ)。
關(guān)鍵詞:軟件工程;過程;工具;方法;三層結(jié)構(gòu)
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A
1 引言(Introduction)
軟件工程是軟件專業(yè)的核心課程。它從設(shè)計(jì)的角度涵蓋、運(yùn)用以前學(xué)習(xí)的各門專業(yè)基礎(chǔ)課如數(shù)據(jù)結(jié)構(gòu)、算法、程序語言、數(shù)據(jù)庫、網(wǎng)絡(luò)、開發(fā)工具,以及操作系統(tǒng),通過設(shè)計(jì)分布式系統(tǒng),學(xué)生一方面能夠加深對以往知識的理解,另一方面能從關(guān)注模塊轉(zhuǎn)變到理解系統(tǒng)架構(gòu)。但要想深刻理解軟件工程并掌握軟件設(shè)計(jì),就一定要深入領(lǐng)會軟件的三要素:過程、方法和工具,因?yàn)檫@三要素將幫助我們整體、可視化地管理軟件系統(tǒng)的各個(gè)方面,包括抽象到具體的需求分析,概要到詳細(xì)的軟件設(shè)計(jì),黑/白盒測試,以及源碼和項(xiàng)目管理等??紤]到課程的學(xué)時(shí),要求學(xué)生短期內(nèi)全面深入地掌握軟件工程的諸多方面是不現(xiàn)實(shí)的。這就要求在授課期間,對三要素所涉及的理論部分和實(shí)踐部分做刪減,以便在強(qiáng)調(diào)軟件工程各階段框架建立的同時(shí)能突出理論重點(diǎn)。下面本文將對三要素作深入的分析,以期能夠闡明三要素之間的關(guān)系,引導(dǎo)學(xué)生的學(xué)習(xí)熱情,同時(shí)提高授課效率。
2 對軟件工程三要素的分析與探討(Analysis for the
main three factors in software engineering)
2.1 對工程過程的分析探討
不失本質(zhì),過程即指工程階段,強(qiáng)調(diào)的是異步或同步的工程步驟。如眾所周知的軟件工程的幾個(gè)工程階段分別是:需求分析、設(shè)計(jì)、編碼、測試、部署、維護(hù)等。而每個(gè)階段具體實(shí)施還要分為若干步驟,如需求分析階段又可細(xì)分為獲取需求、問題分析、需求評審、變更管理等步驟;設(shè)計(jì)階段可細(xì)分為架構(gòu)設(shè)計(jì),詳細(xì)設(shè)計(jì)等步驟。授課時(shí)結(jié)合“過程”這個(gè)概念,講的最多的就是軟件工程的生命周期模型(如瀑布模型和RUP模型),通過不同模型的講解,綜合地闡述各階段之間的關(guān)聯(lián),以及各步驟的時(shí)序關(guān)系。概括地說,對軟件過程的講解除了要規(guī)范軟件的開發(fā)過程之外,更多的是不同工程周期模型的理論對比。在學(xué)生沒有掌握具體工程方法和工具的情況下,對比的不論多詳細(xì),學(xué)生都不會有切身的感受,而如果這部分的理論講解用時(shí)較長,學(xué)生感覺課程乏味、不明就里就是自然而然的事情。因此對“過程”的講解應(yīng)盡量簡短,只要規(guī)范化軟件過程中涉及的詞匯并給出準(zhǔn)確釋義即可。
2.2 對工程方法的分析探討
對于“過程”中給出的若干具體詞匯,即步驟名稱,要想具體展開實(shí)施,必然有一定的理論方法。如“需求分析”階段的“問題分析”步驟,這個(gè)詞匯在具體展開時(shí)涉及的理論方法可以是:繪制系統(tǒng)流程圖、業(yè)務(wù)流程圖、活動圖等;再比如“設(shè)計(jì)階段”的“詳細(xì)設(shè)計(jì)”步驟,在展開時(shí)對應(yīng)的理論方法可以是面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA/OOD),或者是基于數(shù)據(jù)流的分析方法等。概括而言,對“方法”的講解,重點(diǎn)突出的是兩方面:一方面要進(jìn)一步劃分詞匯的層次結(jié)構(gòu),使得每個(gè)階段的每個(gè)步驟都有具體的實(shí)施方法的名稱。實(shí)施方法的名稱一定是詞匯層次結(jié)構(gòu)樹的葉子節(jié)點(diǎn)。另一方面,要對每個(gè)葉子節(jié)點(diǎn)(即方法名稱)做理論說明,交代清楚該節(jié)點(diǎn)要產(chǎn)出的模型內(nèi)容及意義即可。該部分內(nèi)容在授課上仍是理論為主,強(qiáng)調(diào)有關(guān)詞匯的理解和記憶,課時(shí)無需太多。
2.3 對工程工具的分析探討
對于工程方法中給出的每種理論方法都有相應(yīng)的工具予以支持。我們說軟件工程實(shí)踐性較強(qiáng),一部分原因就是指對有關(guān)建模工具的運(yùn)用和掌握。假設(shè)我們對“設(shè)計(jì)—詳細(xì)設(shè)計(jì)—OOA/OOD”中的葉子詞匯“OOA/OOD”,遵照其方法上的理論說明,應(yīng)用工具進(jìn)行實(shí)施展開的話,意味著要選用一個(gè)支持UML建模語言的工具軟件進(jìn)行實(shí)施建模。對UML提供支持的工具有Microsoft Visio和IBM Rational Rose,任選一種即可。在具體軟件操作上即是要生成用例圖、類圖、時(shí)序圖、構(gòu)件圖和部署圖。盡管理論上學(xué)生知道應(yīng)用工具要生成哪些視圖,但對于圖形間的邏輯關(guān)系,每個(gè)圖形攜帶的細(xì)節(jié)信息,未必能夠準(zhǔn)確理解。因此,應(yīng)用工具軟件進(jìn)行實(shí)際的建模操作要多分配學(xué)時(shí),通過較長時(shí)間實(shí)踐才能逐漸地將理論方法和實(shí)際工具操作結(jié)合到一起。另外,隨著工具軟件使用上逐漸成熟,軟件建模的高級話題,如正逆向工程,通過與開發(fā)工具的結(jié)合(如Visio與.NET的結(jié)合)[1],才能使學(xué)生真正感受到設(shè)計(jì)的樂趣。
3 建議的授課策略(A proposed schema for improving
the teaching effect)
軟件工程總體來看就是要把握過程、方法和工具的學(xué)習(xí)時(shí)間。為了既能突出理論重點(diǎn),又能保障有足夠的實(shí)踐和思考,本文建議在理論講解上除了釋義闡述詞匯層次結(jié)構(gòu)樹,還要滲透如圖1所示的軟件設(shè)計(jì)思想。
design process
該圖體現(xiàn)了以數(shù)據(jù)處理為中心的軟件的三個(gè)概念層次。三個(gè)層次在圖中分別由三個(gè)對象予以表示:分別是邊界層(boundary)對象,邏輯層(logical)對象和數(shù)據(jù)層(dbaccess)對象。其中boundary對象主要負(fù)責(zé)接收用戶在界面輸入的數(shù)據(jù);logical對象負(fù)責(zé)接收和處理來自于boundary和dbaccess的數(shù)據(jù);而dbaccess則負(fù)責(zé)存取存儲介質(zhì)上的數(shù)據(jù)。圖1的整體語義是:用戶第1步輸入數(shù)據(jù)集合DC1給boundary對象;boundary對象對DC1做處理之后,數(shù)據(jù)集合變?yōu)镈C2,然后boundary對象通過第3步將DC3(DC3≤DC2)傳遞給logical對象;logical對象收到DC3并結(jié)合經(jīng)由dbaccess對象發(fā)送過來的DC4,在計(jì)算處理后持有的數(shù)據(jù)集合變?yōu)镈C5;接下來,logical對象一方面通過第7步發(fā)送DC6給boundary對象,一方面調(diào)用dbaccess對象進(jìn)行數(shù)據(jù)DC7的存儲,其中DC6≤DC5,DC7≤DC5;經(jīng)由boundary對象對DC6進(jìn)行處理變成DC8后,對數(shù)據(jù)的處理至此結(jié)束。boundary最終通過第10步將數(shù)據(jù)DC9(DC9≤DC8)顯示給用戶。
通過對該圖的理論闡述,重點(diǎn)強(qiáng)調(diào)數(shù)據(jù)的流動以及各層次對象對數(shù)據(jù)的處理結(jié)果,這將有效促進(jìn)學(xué)生對人機(jī)交互類軟件運(yùn)行機(jī)理的理解,同時(shí)也能印證設(shè)計(jì)階段的各種方法理論的潛在機(jī)理。
至于在軟件工程的實(shí)踐環(huán)節(jié),筆者建議除了常規(guī)的基于UML為軟件建模之外,可重點(diǎn)練習(xí)分布式軟件設(shè)計(jì),以加深理解設(shè)計(jì)模式在構(gòu)件設(shè)計(jì)上的應(yīng)用[2];另外,對于常規(guī)的測試工具如黑盒測試分類中的功能測試工具WinRunner和負(fù)載測試工具LoadRunner[3],可適當(dāng)予以實(shí)際演示,幫助學(xué)生理解通過錄制腳本,可完全模擬多個(gè)客戶使用軟件的情況,既能實(shí)際檢測待測軟件的功能接口是否正常工作,還能使學(xué)生對測試有直覺上的認(rèn)識,有利于擴(kuò)充學(xué)生的視野。
4 結(jié)論(Conclusion)
對軟件工程三要素:過程、方法和工具的理解和掌握是軟件工程課程的授課重點(diǎn),也是量化教學(xué)中理論部分和實(shí)踐部分學(xué)時(shí)的主要依據(jù)。本文通過對三要素的分析和探討,指出“過程”和“方法”的講解是理論部分,主要講解工程詞匯的層級結(jié)構(gòu)樹及詞匯的準(zhǔn)確釋義。除此之外,本文特別提出軟件設(shè)計(jì)的三層結(jié)構(gòu)應(yīng)貫穿于理論授課的全過程,因?yàn)椤叭龑咏Y(jié)構(gòu)”能與三要素在理解上相互促進(jìn);對“工具”的掌握則主要來源于實(shí)踐,既然“方法”部分已對必要的理論進(jìn)行了釋義,那么“工具”部分的練習(xí),一方面用于印證“方法”的理論說明,另一方面用于開闊學(xué)生的視野,使學(xué)生直覺上能感知軟件工程的各階段都有“工具”予以支撐,軟件工程不再只是枯燥的理論,而是“觸手可及”的實(shí)用方法。
參考文獻(xiàn)(References)
[1] Andrew Filev,et al.Professional UML with Visual Studio.NET—
UnmaskingVisio for Enterprise Architects[M].Wrox Press Ltd.?,
Reprinted March 2003 in the United States of America.
[2] 竇萬峰.軟件工程實(shí)驗(yàn)教程[M].北京:機(jī)械工業(yè)出版社,2009.
[3] 姚紅巖,馬云吉.“軟件工程”教學(xué)策略探討[J].軟件工程師,
2014,17(8):10-11.
作者簡介:
姚紅巖(1979-),男,博士,講師.研究領(lǐng)域:軟件工程.