黃 杰,高 珍,范鴻飛
(1.同濟大學 軟件學院,上海 201804;2.同濟大學 計算機與信息技術(shù)國家級實驗教學示范中心,上海 201804)
“軟件工程”概念源于1968 年秋NATO 科技委員會組織的軟件工程學術(shù)會議,會議主席Bauer 教授定義軟件工程是“為了經(jīng)濟地獲得可靠的、可以在真實機器上運行的軟件,而制定和使用的健全的工程原理和方法,”[1]。半個世紀以來,人們在軟件工程領(lǐng)域取得的進展極大豐富了軟件工程的內(nèi)涵,但是軟件生產(chǎn)者和使用者對軟件工程“經(jīng)濟性”的要求非但沒有減少,反而愈加受到業(yè)界和學界的重視[2-4]。在電氣和電子工程師協(xié)會(IEEE)發(fā)布的《軟件工程知識體系》(SWEBOK 2014)中,軟件工程經(jīng)濟學已經(jīng)獨立成為一個核心知識域(KA),其定義是“關(guān)于在商業(yè)環(huán)境中軟件工程項目決策的學科領(lǐng)域。軟件產(chǎn)品、服務(wù)及解決方案的成功均有賴于良好的業(yè)務(wù)管理”[5]。
在教育界培養(yǎng)軟件工程人才的供給端,教育部發(fā)布的《普通高等學校本科專業(yè)類教學質(zhì)量國家標準》(2018)[6],將工程經(jīng)濟學列為計算機類軟件工程專業(yè)的核心課程之一。教育部高等學校軟件工程專業(yè)教學指導委員會組織編寫的《中國軟件工程知識體系》(C-SWEBOK)[7],也已將軟件工程經(jīng)濟學作為該知識體系中的一個獨立知識域。中國工程教育專業(yè)認證協(xié)會發(fā)布的《工程教育認證標準》(2017 修訂稿),要求大學工科畢業(yè)生必須達到“理解并掌握工程管理原理與經(jīng)濟決策方法,并能在多學科環(huán)境中應(yīng)用”之能力標準[8]。針對這項認證要求,軟件工程專業(yè)細化的工程認證指標點有3 項,即“具備運用工程原理和經(jīng)濟決策方法分析軟件工程系統(tǒng)方案及其可行性的能力”“具備將專業(yè)知識運用于管理具有多學科特征的系統(tǒng)方案的能力”和“具有約定和管理變化需求的能力”。目前國內(nèi)高校軟件工程專業(yè)普遍將軟件工程經(jīng)濟學作為知識模塊嵌入在軟件工程或軟件項目管理等課程中授課。同濟大學(2013 年起)、華南理工大學(2014 年起)及四川大學(2015 年起)等高校,相繼試點開設(shè)軟件工程經(jīng)濟學課程。華南理工大學左保河教授于2017 年起在“好大學在線”開設(shè)軟件工程經(jīng)濟學MOOCs 課程[9]。
在產(chǎn)業(yè)界吸納軟件工程人才的需求端,根據(jù)上海交通大學2015 年對上海地區(qū)ICT 企業(yè)問卷調(diào)查的統(tǒng)計數(shù)據(jù)顯示[10],企業(yè)對于畢業(yè)生缺乏“設(shè)計中考慮經(jīng)濟的原則”和“管理知識的應(yīng)用”之評價,分別位列企業(yè)對人才知識與能力度量(期望值與實際值)差距最大項的第2 位和第3 位。這反映出處于幼年期的軟件工程經(jīng)濟學教學之產(chǎn)出與產(chǎn)業(yè)界對軟件工程專業(yè)人才所應(yīng)具備的本專業(yè)經(jīng)濟學知識及應(yīng)用能力的需求之間存在“鴻溝”。
關(guān)于學界和業(yè)界對軟件工程專業(yè)人才經(jīng)濟學知識及能力“鴻溝”之成因,主要來源于以下兩個方面。
比較《中國軟件工程知識體系C-SWEBOK》(2019)與教育部《普通高等學校本科專業(yè)類教學質(zhì)量國家標準》(2018)可以發(fā)現(xiàn),這兩個標準在軟件工程專業(yè)經(jīng)濟學知識域的教學標準上存在明顯差異,前者是軟件工程經(jīng)濟學獨立知識域,后者則推薦將工程經(jīng)濟學作為專業(yè)核心課程(結(jié)合《高等學校軟件工程專業(yè)規(guī)范》(2011)之相關(guān)描述:工程經(jīng)濟學可用于任何工程教學,但可以將其裁剪以適合軟件工程教學)[11]。目前國內(nèi)高校的軟件工程經(jīng)濟學課程教學基本上采用后者的標準,即將工程經(jīng)濟學知識域裁剪拼貼后用于軟件工程經(jīng)濟學課程教學,由此產(chǎn)生課程講授的知識與中國軟件工程知識體系之間存在不一致。不僅導致課程教學內(nèi)容相比中國軟件工程知識體系對應(yīng)知識域內(nèi)容的短斤缺兩,而且課程教學內(nèi)容極度地缺乏與軟件工程知識體系內(nèi)相關(guān)知識域或知識點的有效融合。
軟件工程經(jīng)濟學雖發(fā)端于工程經(jīng)濟學且兩者聯(lián)系緊密,但是兩者知識域的起源或研究對象有著本質(zhì)性的不同。軟件工程經(jīng)濟學起源于軟件,軟件是人類智力勞動的成果。軟件具有無形、接近零成本復制且復制質(zhì)量無損等區(qū)別于傳統(tǒng)工業(yè)產(chǎn)品(實體)的顯著特征,研究對象性質(zhì)的差異導致了這兩個學科的知識域結(jié)構(gòu)及內(nèi)容之差異。例如,傳統(tǒng)行業(yè)的“邊際成本遞增”經(jīng)濟學規(guī)律,在軟件行業(yè)則呈現(xiàn)出“邊際成本遞減”規(guī)律;又如傳統(tǒng)工業(yè)產(chǎn)品(如汽車)在使用過程中逐步磨損且可以用備用部件更換磨損件,產(chǎn)品的生命周期成本曲線是“浴盆曲線”,而軟件則不存在備用部件,軟件的缺陷暗示了設(shè)計缺陷或是從設(shè)計轉(zhuǎn)化到機器可執(zhí)行代碼過程中的錯誤,軟件的生命周期成本曲線是“風帆曲線”。知識域結(jié)構(gòu)及內(nèi)容的差異使得軟件工程經(jīng)濟學在軟件成本測量、軟件定價(策略)、軟件設(shè)計、軟件配置管理以及軟件項目效益評價等領(lǐng)域的原理與方法徹底改寫了傳統(tǒng)工程經(jīng)濟學的原理與方法,因此不能簡單地將工程經(jīng)濟學內(nèi)容在裁剪后用于軟件工程經(jīng)濟學教學,而是必須立足于軟件工程學科本體,綜合運用計算機科學與技術(shù)、經(jīng)濟學、管理學、法學及會計學等多學科知識的交叉融合,腳踏實地構(gòu)建軟件工程經(jīng)濟學知識體系,解決“軟件工程+”多學科知識交叉融合深度與廣度不足的問題。
現(xiàn)有多數(shù)高校軟件工程經(jīng)濟學課程偏重于工程經(jīng)濟學理論與方法的傳授,缺少與業(yè)界軟件工程最佳實踐相結(jié)合的教學內(nèi)容。例如,在供給與需求知識點教學中,缺失反映軟件市場特征的網(wǎng)絡(luò)平臺教學內(nèi)容,而網(wǎng)絡(luò)平臺恰恰是軟件引領(lǐng)的新興市場區(qū)別于傳統(tǒng)市場供給與需求之最明顯特點;又如在軟件成本測算知識點教學中,停留在講解經(jīng)驗估算法、功能點(FP)及代碼行(LOC)等測量方法層面,未能將《軟件工程 軟件開發(fā)成本度量規(guī)范》(GB/T36964—2018)等來自于我國軟件及信息技術(shù)行業(yè)最新實踐成果整合進教學內(nèi)容,而該標準正是我國軟件及信息技術(shù)行業(yè)推薦采用的現(xiàn)行標準,是畢業(yè)生走上職業(yè)崗位必須掌握的知識;再如在軟件項目的效益/效果分析知識點教學中,缺少結(jié)合中國會計準則開展教學,不僅會導致軟件項目經(jīng)濟效益分析準確度誤差,而且嚴重削弱了軟件工程專業(yè)學生在面臨創(chuàng)新創(chuàng)業(yè)機遇時采用業(yè)界通行的經(jīng)濟分析方法設(shè)計與選擇最佳方案及創(chuàng)業(yè)融資的能力。
軟件工程經(jīng)濟學作為一門以“軟件工程+”多學科知識交叉融合為基礎(chǔ)和特征的軟件工程專業(yè)課程,其教學內(nèi)容一則必須體現(xiàn)多學科知識的交叉整合,二則教學內(nèi)容必須緊跟軟件技術(shù)發(fā)展及行業(yè)需求的演進,及時吸納來自國內(nèi)外業(yè)界一線的最佳實踐成果,如此才能符合培養(yǎng)學生達成“理解并掌握工程管理原理與經(jīng)濟決策方法,并能在多學科環(huán)境中應(yīng)用”之國家工程教育認證標準。
鑒于目前多數(shù)大學本科生在入學前缺少經(jīng)濟學基本知識的學習與積累,特別是考慮到我國高中教育普遍缺乏類似歐美高中教育中的商業(yè)與經(jīng)濟基礎(chǔ)課程,可以設(shè)計在軟件工程經(jīng)濟學課程教學中引進課內(nèi)實驗教學手段,降低課程中部分知識點的學習門檻,提供學生動手實踐虛擬實驗項目,增強學生學習新知識的信心和獲得感;逐步增加課內(nèi)實驗教學知識點,精心設(shè)計模擬場景的實驗案例,讓學生通過親身實驗,體驗及快速掌握軟件工程經(jīng)濟學主要知識點。同時,基于實驗項目敏捷靈活的特點,每年迭代2~3 個實驗項目,用業(yè)界新方法、新參數(shù)重構(gòu)實驗項目。軟件工程經(jīng)濟學“理論+實驗”教學框架詳見表1。
(1)理解軟件設(shè)計的工作分解結(jié)構(gòu)(WBS)方法,綜合運用軟件研發(fā)成本國標及至少兩種軟件工程量估算方法,估算小型軟件系統(tǒng)項目工程量,編制該項目工程量文件。
表1 軟件工程經(jīng)濟學“理論+實驗”教學框架表
(2)理解軟件市場及軟件平臺經(jīng)濟的特點,基于軟件產(chǎn)品工程量測算結(jié)果,結(jié)合本地區(qū)軟件產(chǎn)業(yè)生產(chǎn)率等參數(shù),測算軟件項目投資;根據(jù)軟件項目融資方式,測算資金時間價值,推薦合理的項目投融資方案。
(3)理解軟件項目財務(wù)評價在軟件工程項目決策中的作用,設(shè)計市場策略及軟件定價,構(gòu)建軟件項目財務(wù)評價模型,具備計算軟件項目盈利能力與償債能力的能力。
(4)理解軟件項目風險特點,測算風險指標,具備設(shè)計合理的項目風險防控預案能力。
實驗1:軟件項目工程量測算實驗。根據(jù)實驗指導書提供的小型軟件系統(tǒng)項目需求,運用工作分解結(jié)構(gòu)方法,分解該系統(tǒng)至粒度合理的模塊;選擇至少兩種軟件工程量估算方法(必須包含一種功能的方法),估算各模塊工程量并計算軟件項目的總工程量;歸納總結(jié)實驗過程及全部數(shù)據(jù)信息;撰寫實驗報告,按時提交實驗指導教師。
實驗2:軟件項目投資度量實驗。依據(jù)實驗1 測算所得的軟件項目工程量,按照實驗指導書要求,合理選擇上海地區(qū)軟件生產(chǎn)率指標(包括軟件過程各崗位、各工種績效指標以及平均工資),計算軟件項目造價;規(guī)范編制軟件項目造價文件;撰寫實驗報告,按時提交實驗指導教師。
實驗3:資金時間價值測算實驗。按照實驗指導書及實驗指導教師的要求,依照軟件項目需求,利用Excel 函數(shù)及電子表格軟件工具,結(jié)合項目籌資方案,合理選擇及運用資金時間價值計算公式,進行資金等值計算實驗(包括現(xiàn)值、終值及年金);并根據(jù)計算結(jié)果,分析且推薦一個軟件項目投資管理的最佳方案;撰寫實驗報告,按時提交實驗指導教師。
實驗4:軟件項目財務(wù)評價實驗。按照實驗指導書要求及實驗指導教師的要求,收集擬開發(fā)軟件項目的業(yè)務(wù)目標;調(diào)研該軟件項目的目標市場結(jié)構(gòu)及經(jīng)濟環(huán)境等多維度信息;基于對上述信息的分析,設(shè)計擬開發(fā)軟件項目的市場策略與軟件產(chǎn)品或系統(tǒng)的定價方法;設(shè)計構(gòu)建軟件項目的財務(wù)評價模型;根據(jù)實驗期間的國民經(jīng)濟經(jīng)濟參數(shù),測算實驗項目的盈利能力和償債能力;撰寫實驗報告,按時提交實驗指導教師。
實驗5:軟件項目風險分析實驗。根據(jù)實驗指導書及實驗指導教師的要求,診斷候選軟件項目財務(wù)狀況及風險類型,設(shè)計項目財務(wù)風險分析方案、風險預警機制及風險防控方法;合理選擇風險計算方法;診斷軟件項目風險來源(如籌資風險、投資風險及經(jīng)營風險等);推薦合理的軟件項目風險防范預案;撰寫實驗報告,按時提交實驗指導教師。
在課程中采用“理論+實驗”探究式教學法可以取得良好效果。教師在課程授課過程中應(yīng)充分尊重學生的主體地位,注重發(fā)揮學生學習的主觀能動性。教師在教學過程中作為教學過程的引導者與組織者,努力尋找教學內(nèi)容與教育對象之間最佳結(jié)合點,研究學生的思維方式及其解決問題的思維習慣,借助實驗項目和案例引導,使學生將直接經(jīng)驗與所學的知識間建立起映射關(guān)系,并力求在此基礎(chǔ)上深化應(yīng)用相關(guān)知識。例如,講解“需求、供給與均衡”知識點時,以嘉定校區(qū)校園內(nèi)的自行車租賃業(yè)務(wù)案例為引導,模擬當學生作為唯一消費者時,在開學或畢業(yè)季與正常學期之間的自行車供需變化情況,進而當允許教師加入這個市場后因購買力不同而對這個局部市場租賃價格產(chǎn)生的影響,繼而當租賃價格上升后校區(qū)管理者對價格采取控制措施后,對需求及消費者的影響,最后假設(shè)開放這個市場引進外來競爭者或者出現(xiàn)自行車替代產(chǎn)品后對供需雙方的影響。學生們通過切身經(jīng)驗體會,逐漸理解這組概念。
在實驗教學中也布置一定數(shù)量的課外閱讀作業(yè),加深學生對所做實驗的原理及其應(yīng)用之掌握,教師也可以從學生提交作業(yè)中獲得反饋信息改進教學。例如,課內(nèi)做完“供給—需求”實驗后,布置一篇書面作業(yè),要求學生課外閱讀并描述他所發(fā)現(xiàn)及理解的軟件產(chǎn)業(yè)特征。作業(yè)提交后,選取有創(chuàng)業(yè)意向?qū)W生、正在校外企業(yè)實習學生以及在校學習學生多篇有代表性的作業(yè),請學生們上講臺宣講他們通過實踐體會到的或者通過閱讀所發(fā)現(xiàn)的軟件產(chǎn)業(yè)特征。書本理論與實習實踐結(jié)合,讓學生自覺主動地探索、交流并認識到軟件產(chǎn)業(yè)特征。通過這種方式,學生的主體地位和自主學習能力都得到了培養(yǎng)。
軟件工程經(jīng)濟學作為一門理論與實驗相結(jié)合的特色課程,基于試卷的考核方式不足以準確地測量學生對于課程理論知識和實踐能力掌握的程度,設(shè)計采用“課堂問答+實驗+課程設(shè)計項目”三段式組合的考核方式,以評價學生在該課程全過程學習中的成績。課堂問答和課內(nèi)實驗兩部分成績占總成績50%,課程設(shè)計項目占總成績50%。
課內(nèi)實驗和課程設(shè)計項目是作為必須完成的課程考核項目,每位學生必須提交全部課內(nèi)實驗項目報告和一項課程設(shè)計項目,其中課程設(shè)計項目以小組方式開發(fā),允許最多3 位學生組成小組共同完成。課程設(shè)計項目選題由學生自主選擇,大多數(shù)學生會選擇自己感興趣或者在外實習單位的課題或者創(chuàng)新創(chuàng)業(yè)課題作為課程設(shè)計項目,個別學生若覺得選題困難也可以通過與教師溝通討論確定項目選題。課程設(shè)計項目需要在學期末以小組項目答辯方式獲得成績,在答辯考核過程中將著重考查小組成員將經(jīng)濟學思維用于軟件工程研究對象的分析建模能力、選擇合理方法與合適的參數(shù)估算軟件項目投入產(chǎn)出的計算能力以及小組管理與成員合作能力等。
使用軟件工程經(jīng)濟學“理論+實驗”教學框架授課后,學生運用經(jīng)濟學理論和軟件工程方法解決問題的綜合能力得到明顯提升,貢獻了一批優(yōu)秀作品,例如,“個性餐飲服務(wù)系統(tǒng)可行性研究報告”依據(jù)現(xiàn)場問卷調(diào)查收集數(shù)據(jù)結(jié)合專業(yè)經(jīng)濟測算,設(shè)計的星巴克專賣店客戶推薦系統(tǒng)得到了顧客首肯;“智能資產(chǎn)配置投資平臺系統(tǒng)”將人工智能技術(shù)應(yīng)用于優(yōu)化金融工程算法,設(shè)計開發(fā)出智能投顧系統(tǒng),成功地發(fā)掘出一批符合條件的潛在客戶,并為他們提供符合其投資習慣與風控級別的投資產(chǎn)品。
軟件工程經(jīng)濟學教學對教師很有挑戰(zhàn)。教師不僅要有扎實的軟件工程學科知識功底,還需具備學習與深刻理解經(jīng)濟、管理等學科相關(guān)知識以及運用于軟件項目設(shè)計開發(fā)及運維的能力。要教好軟件工程經(jīng)濟學這門課程,應(yīng)基于大學生特點低門檻起步、增量迭代提升,以增強學生從經(jīng)濟視角剖析和解決軟件工程問題的能力。統(tǒng)籌考慮課程理論教學與實驗教學安排,精心設(shè)計實驗項目及知識點間的銜接,使學生在學中做、做中學的過程中,增強學習新知識的獲得感。