【摘 要】本科階段的教育遵循“以實(shí)踐能力培養(yǎng)引領(lǐng)理論教學(xué)”的基本原則,著眼于提高學(xué)生的實(shí)踐能力和創(chuàng)新能力。軟件工程系列課程的開設(shè),旨在培養(yǎng)軟件領(lǐng)域高素質(zhì)、實(shí)用型工程技術(shù)性人才和軟件工程管理人才。其中,《軟件需求分析》是計(jì)算機(jī)及軟件工程專業(yè)本科三年級(jí)學(xué)生的一門專業(yè)課,筆者嘗試運(yùn)用情景模擬的模式進(jìn)行該課程的教學(xué),在課堂中模擬軟件需求分析實(shí)踐中相關(guān)或類似的場(chǎng)景。實(shí)踐證明,該教學(xué)方法可以提高教學(xué)效果并活躍課堂氣氛,讓學(xué)生受益匪淺。
【關(guān)鍵詞】教學(xué)方法 軟件需求分析 情景模擬
一、《軟件需求分析》課程的特點(diǎn)和存在的問題
首先,《軟件需求分析》是一門抽象性和實(shí)踐性很強(qiáng)的課程,沒有開發(fā)實(shí)踐經(jīng)驗(yàn)的學(xué)生在聽課時(shí)會(huì)感覺非常抽象,難以理解。該課程重點(diǎn)培養(yǎng)學(xué)生在軟件開發(fā)周期中獲取、分析、建模及管理需求的能力。任何一個(gè)軟件項(xiàng)目不論大小、復(fù)雜或簡(jiǎn)單,都存在著各式各樣的業(yè)務(wù)需求、用戶需求及系統(tǒng)需求。軟件需求分析是一個(gè)循序漸進(jìn)的過程,其中的每一階段都需要需求人員運(yùn)用相應(yīng)的技術(shù)來處理不同層次的需求。因此,課程應(yīng)遵循理論與實(shí)踐緊密結(jié)合、以能力培養(yǎng)為核心的原則,尤其強(qiáng)化實(shí)踐環(huán)節(jié)貫穿于教學(xué)之中,在引入案例教學(xué)法的同時(shí),圍繞具體的軟件項(xiàng)目而展開教與學(xué)的活動(dòng),讓學(xué)生在結(jié)束一個(gè)學(xué)期的課程學(xué)習(xí)之后,能完成一個(gè)軟件系統(tǒng)的需求分析任務(wù),為軟件工程的下一個(gè)周期工作奠定基礎(chǔ)。由此,也可以提高學(xué)生的成就感和榮譽(yù)感、提升學(xué)生的自信心。
其次,一般情況下,軟件項(xiàng)目的開發(fā)并非個(gè)人獨(dú)立可以完成的,而是需要軟件開發(fā)團(tuán)隊(duì)中每個(gè)成員的溝通與協(xié)作來共同作業(yè)。同樣,軟件需求分析也需要團(tuán)隊(duì)分工合作,同時(shí),軟件開發(fā)出來是給人使用的,所以開發(fā)團(tuán)隊(duì)必須保持與用戶的有效合作,才能開發(fā)出有用、好用的系統(tǒng)。因此,團(tuán)隊(duì)協(xié)作意識(shí)是計(jì)算機(jī)/軟件工程專業(yè)學(xué)生必須具備的基本素質(zhì)。然而,當(dāng)代學(xué)生身上存在著一個(gè)普遍的問題,就是以自我為中心,缺乏集體觀念,在團(tuán)體中出現(xiàn)離群現(xiàn)象的也不少,這樣對(duì)自身將來參加軟件開發(fā)工作特別不利。因此,要培養(yǎng)出高素質(zhì)的軟件需求分析人員,就應(yīng)該在課程教學(xué)中融入團(tuán)隊(duì)意識(shí)教育,設(shè)置一些必要的環(huán)節(jié)來提高學(xué)生的團(tuán)
隊(duì)協(xié)作能力及人際溝通與交流能力。
二、情景模擬教學(xué)方式的特點(diǎn)
在教學(xué)過程中模擬軟件需求分析各階段的實(shí)踐活動(dòng)中,一些相關(guān)情景是一種個(gè)性化、互動(dòng)式、寓樂于教的教學(xué)方式,可以實(shí)現(xiàn)啟發(fā)式教學(xué),營(yíng)造師生平等互動(dòng)、輕松活潑的課堂教學(xué)環(huán)境。在這樣的課堂中,教師已經(jīng)不再是一個(gè)傳統(tǒng)的課堂講授者,而是更像一位主持人或?qū)а荩匍_技術(shù)交流會(huì)、成果評(píng)審會(huì)、軟件演示會(huì)等;學(xué)生也不再是純粹意義上的聽課者,而是根據(jù)場(chǎng)景的需要扮演不同角色,他們?cè)诔浞直磉_(dá)自身的思想和觀點(diǎn)、展示各自的個(gè)性化思維的同時(shí),也歷練出在公共場(chǎng)合不凡的談吐。這種方法將傳統(tǒng)的“以教師為中心”的教學(xué)模式轉(zhuǎn)變?yōu)椤耙詫W(xué)生為中心,在教師指導(dǎo)下的主動(dòng)學(xué)習(xí)”的模式,該模式可以提高學(xué)生的課堂參與度,很大程度上活躍課堂氣氛,最大程度地保持學(xué)生的學(xué)習(xí)興趣而不是由于課程的抽象性感到枯燥乏味,從而激發(fā)學(xué)生學(xué)習(xí)的主動(dòng)性與積極性,培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作意識(shí)和創(chuàng)新精神。同時(shí),這種模式使學(xué)生更加深刻地體會(huì)并掌握各種理論和技術(shù),也有助于他們找到實(shí)現(xiàn)理論聯(lián)系實(shí)際的可實(shí)施途徑,從而促進(jìn)學(xué)生的個(gè)體化學(xué)習(xí)和發(fā)展。
三、情景模擬教學(xué)模式的實(shí)施
1.溝通技巧的培養(yǎng)
成功的軟件產(chǎn)品是建立在成功的需求基礎(chǔ)之上的,而高質(zhì)量的需求來源于需求分析人員與用戶之間有效的溝通與合作。需求獲取是軟件開發(fā)中最困難、最關(guān)鍵、最易出錯(cuò)及最需要溝通交流的活動(dòng)。由于用戶對(duì)計(jì)算機(jī)系統(tǒng)的能力和限制缺乏了解,他們不清楚需求是什么,或者說如何以一種精確的方式來描述需求,因此,他們需要需求人員的協(xié)助和指導(dǎo),但是用戶與開發(fā)人員之間的交流很容易出現(xiàn)障礙,這條溝通之路布滿了荊棘。客戶就如一座冰山,露出海面的一個(gè)小尖角是語言、表情,以及行為、情緒等,而大部分在水面下不容易被看到的是客戶的真實(shí)的動(dòng)機(jī)、原因、企圖、理由等。所以,需求分析人員不僅要用眼睛,還要用腦子看問題。
與用戶溝通的基本技巧之一就是詢問技巧。需求人員在與用戶接觸時(shí)提倡多提問,讓客戶參與到談話中來,在和諧的雙向溝通過程中了解客戶真正的需求。在教學(xué)中培養(yǎng)學(xué)生詢問技巧主要分為兩個(gè)階段。首先,通過教師的闡述,學(xué)生能夠了解提問的意義、問題的分類以及實(shí)施提問時(shí)應(yīng)該注意的問題。第二階段就是培養(yǎng)學(xué)生對(duì)詢問技巧的理解及應(yīng)用能力。在該階段,讓學(xué)生分別扮演提問方和被問方,站在不同的角度感受詢問的過程。當(dāng)提問者提出了一些離題或偏題的問題時(shí),盡管雙方相談甚歡,但是最終詢問是失敗的;而當(dāng)被問者不善言表時(shí),提問者就必須更加主動(dòng)積極地發(fā)問以激發(fā)其思維、鼓勵(lì)其參與到談話中,否則無法得到足夠的信息。通過這樣的會(huì)話場(chǎng)景,學(xué)生更深刻地理解了提問的重要性。提問前,教師預(yù)設(shè)特定的主題,例如,問出對(duì)方日常使用電腦的情況,隨后,讓學(xué)生自主設(shè)計(jì)封閉型、公開中立型和公開引導(dǎo)型三種類型的問題展開練習(xí),體會(huì)不同類型問題之間的區(qū)別。為了讓學(xué)生掌握提問時(shí)的技巧,在課堂上將學(xué)生分成小組,每個(gè)小組選出一位學(xué)生扮演顧客,教師發(fā)給他一張紙條,上面寫著他想購買的產(chǎn)品是一個(gè)公文包,必須包括的特征是價(jià)格5000元左右、黑色等,其他學(xué)生扮演賣包的售貨員,先后用隨意的和遵循技巧的方式問出顧客的需求。通過效果對(duì)比,學(xué)生能夠理解詢問時(shí)應(yīng)該注意哪些問題來提高詢問的效率。
與用戶溝通的另一個(gè)技巧是傾聽技巧。先以一個(gè)小游戲開始,讓學(xué)生認(rèn)真地聽老師的敘述并依照口令行事。結(jié)果大部分學(xué)生在這場(chǎng)游戲中都玩輸了,主要原因就是他們都沒有逾越阻礙有效傾聽的兩大障礙,即在聽之前心中已有成見或者胸有成竹。這樣的游戲會(huì)讓學(xué)生心服口服地對(duì)傾聽這一所謂的技能刮目相看,他們從中明白傾聽并不是想象中的那么簡(jiǎn)單,而是如同詢問一樣必須遵循一定的章法和技巧,才能在與用戶談話時(shí)獲取更多更準(zhǔn)確的信息。在激發(fā)了他們?nèi)フ莆諆A聽要領(lǐng)的興趣之后,再教其傾聽的原則、注意事項(xiàng)等,相關(guān)知識(shí)就變得事半功倍了。
2.聯(lián)合會(huì)議的模擬召開
詢問與傾聽是需求分析人員與用戶交流的必備技能,除此之外,課程中還應(yīng)該讓學(xué)生了解并掌握需求獲取的方法。最常見的需求獲取方法是召開會(huì)議或者面談,聯(lián)合會(huì)議是一種常用的且簡(jiǎn)便的討論會(huì),也是核心隊(duì)伍成員之間一種很好的溝通方法。為了讓學(xué)生體驗(yàn)聯(lián)合會(huì)議的場(chǎng)景,筆者決定將教室當(dāng)成會(huì)議室,讓學(xué)生充當(dāng)需求分析人員與用戶,模擬召開聯(lián)合會(huì)議。學(xué)生只有對(duì)系統(tǒng)有充分地了解或者存在自身的期望,才能夠完全站在用戶的角度提出自己的想法和看法,因此所設(shè)定的軟件項(xiàng)目必須是他們熟悉的或是真正以學(xué)生為用戶的,例如,“班級(jí)同學(xué)錄管理系統(tǒng)”。會(huì)議召開時(shí),由教師擔(dān)當(dāng)主持的工作,需求人員與用戶分坐在教室中央的兩排座位進(jìn)行討論??梢杂娩浺艄P記錄討論的全過程,以助于開發(fā)團(tuán)隊(duì)之后的工作。在討論完系統(tǒng)的必要性與合理性之后,就將開始討論用例清單。清單可以打印成大紙掛在墻上、寫在黑板上或做成演示材料。對(duì)每個(gè)清單合并去掉重復(fù)項(xiàng),加上補(bǔ)充內(nèi)容就可以得到一份新的匯總清單。教師除了是主持人,還要指導(dǎo)學(xué)生的言行。由于討論雙方時(shí)常會(huì)出現(xiàn)意見相左的情形,而且大家都是彼此熟知的同學(xué),因此要防止討論會(huì)偏離初衷演變成了辯論會(huì);同時(shí),要培養(yǎng)學(xué)生盡量尊重用戶但不是迎合用戶,特別注意在會(huì)議中避免采用負(fù)面的字眼如“太差”、“不可行”去否定用戶的想法,對(duì)有爭(zhēng)議的想法都應(yīng)該保留下來,作為過后被開發(fā)團(tuán)隊(duì)評(píng)議的清單項(xiàng),這樣可以保護(hù)小組成員開放的思維,維持會(huì)議的順利進(jìn)行。
通過模擬召開聯(lián)合會(huì)議,學(xué)生可以親自體驗(yàn)與用戶面對(duì)面交流的過程,尤其鍛煉他們的敏捷思維能力與沉著應(yīng)變能力,也能將之前學(xué)到的詢問與傾聽技能付諸于實(shí)踐從而提高自身的溝通會(huì)話技能。
3.需求復(fù)審的場(chǎng)景演示
需求分析人員與用戶充分溝通之后對(duì)獲取的信息進(jìn)行整理、分析并轉(zhuǎn)化為需求模型,其中一種重要的模型就是用例模型——“與系統(tǒng)對(duì)話行為相關(guān)的一系列事務(wù)”。學(xué)生做出了系統(tǒng)的用例不應(yīng)該交由教師來審評(píng),而是應(yīng)該像開發(fā)實(shí)踐中那樣由團(tuán)隊(duì)成員共同來復(fù)審。但是,如果采用普通的瀏覽或閱讀的方式很難調(diào)動(dòng)學(xué)生的積極性,尤其是讓他們檢查自己的成果時(shí)就更容易產(chǎn)生抵觸和厭煩情緒。因此,筆者嘗試采用用例卡片技術(shù)和角色扮演互相結(jié)合的方式來進(jìn)行需求復(fù)審。這種方式要求學(xué)生扮演不同的角色,像在臺(tái)上表演小品似的以用戶和系統(tǒng)之間對(duì)話的形式將自己分析得出的用例模型用言行展示出來,而坐在臺(tái)下的其他學(xué)生無論是否是團(tuán)隊(duì)中的成員都可以在觀賞“小品”的同時(shí),更全面地去度量和評(píng)審模型。
在實(shí)施審查活動(dòng)之前,教師首先向?qū)W生介紹用例卡片與角色扮演所基于的技術(shù)背景——CRC(類—職責(zé)—協(xié)作),而后布置學(xué)生按照用例卡片的格式將用例模型做成卡片。每張用例卡片只代表單個(gè)用例,卡片上要記錄用例的名稱和對(duì)話腳本步驟。在這出“小品”中,教師充當(dāng)著導(dǎo)演的角色,分配任務(wù)、主持工作并協(xié)調(diào)指揮現(xiàn)場(chǎng)演練,學(xué)生分別扮演用例中所指代的系統(tǒng)模塊和將使用該系統(tǒng)的用戶,兩者之間的會(huì)話則以用例卡片上所描述的觸發(fā)和響應(yīng)動(dòng)作序列為劇本臺(tái)詞,即“用戶”將自己使用系統(tǒng)的動(dòng)作,如查找特定主題的書籍用語言描述出來,而“圖書查詢模塊”也給予相應(yīng)的反饋。例如,顯示“查無此書”并等待下一次查詢。表演前,用戶角色使用探討的方式進(jìn)行排練。團(tuán)隊(duì)需要集體工作以決定對(duì)話的步驟。這些工作交由學(xué)生在上課前就準(zhǔn)備好。當(dāng)某一想法聽起來很合理時(shí),演員按腳本將之“表演”出來。團(tuán)隊(duì)的其它成員則審查表演,之后再討論,并在必要時(shí)進(jìn)行改進(jìn)。在多媒體教室,可以應(yīng)用幻燈片或文檔投影儀,將電子版或書面的卡片清晰地投影到大屏幕上,供班級(jí)里所有學(xué)生查看。以上過程反復(fù)進(jìn)行,直到所有的評(píng)審都認(rèn)為對(duì)話已經(jīng)能夠描述用戶與系統(tǒng)交互的方式。由于課堂上的時(shí)間有限,對(duì)于每一個(gè)團(tuán)隊(duì)只能復(fù)審若干個(gè)用例,而且對(duì)于爭(zhēng)議較多的用例模型可以留待學(xué)生課后參照審查時(shí)的意見和建議去修改完善。
通過以上表演小品的方式復(fù)審用例,扮演者的語言表達(dá)及隨機(jī)應(yīng)變能力得到了鍛煉,觀眾的洞察力也得到了難以預(yù)料地提升,尤其關(guān)鍵的是,團(tuán)隊(duì)成員積極地參與并輕松愉快地完成本是枯燥乏味的檢查工作。
四、結(jié)束語
除了上述的教學(xué)案例,在《軟件需求分析》課程其他的知識(shí)點(diǎn)教學(xué)中也可以開設(shè)類似的情景模擬環(huán)節(jié)。該課程是培養(yǎng)學(xué)生如何將需求理論應(yīng)用到開發(fā)實(shí)踐中的一門課程,其中諸多的規(guī)范、流程和原則如果采用傳統(tǒng)的講授方式是很難被學(xué)生接受的,極有可能讓原本興致勃勃的學(xué)生們覺得內(nèi)容空洞且枯燥乏味。
在教學(xué)過程中,嘗試融入情景模擬的方式既豐富了教學(xué)方法,又活躍了課堂氣氛,尤其縮短了理論教學(xué)與工程應(yīng)用的距離。實(shí)踐證明,該模式在一定程度上激發(fā)了學(xué)生的學(xué)習(xí)興趣,提高了他們的學(xué)習(xí)效率,強(qiáng)化了他們的團(tuán)隊(duì)合作意識(shí),培養(yǎng)了他們脫離書本獨(dú)立思考應(yīng)對(duì)各種實(shí)際情況的能力,即“授之以漁,非授之以魚”。在今后的教學(xué)工作中,應(yīng)該根據(jù)教學(xué)內(nèi)容與教學(xué)對(duì)象的變化不斷調(diào)整和完善教學(xué)方法,以期達(dá)到最佳教學(xué)效果。
參考文獻(xiàn):
[1]陳塑鷹,趙小林.建立軟件實(shí)踐課程體系,全面培養(yǎng)工程型人才[J].計(jì)算機(jī)教育,2008,(7):14-15.
[2] Karl E. Wiegers. Software Requirements[M].北京:機(jī)械工業(yè)出版社,2003.87-88.
(作者單位:福建廈門大學(xué)嘉庚學(xué)院)