秦放 曾維佳
【摘 要】課程設(shè)計是檢驗理論教學(xué)效果的一種有效途徑,對于軟件開發(fā)類型的課程設(shè)計而言,需求分析是其中一個非常重要的環(huán)節(jié),但由于學(xué)生重程序輕代碼,重文檔輕業(yè)務(wù),教師重知識輕技能等原因,使得需求分析環(huán)節(jié)并沒有得到應(yīng)有的重視,文章結(jié)合教學(xué)改革實踐,針對以上問題,提出了一系列解決方案。
【關(guān)鍵詞】軟件工程;課程設(shè)計;需求分析
一、引言
課程設(shè)計是指學(xué)生在學(xué)完相關(guān)課程后,綜合利用所學(xué)知識分析問題、解決問題、實現(xiàn)理論向?qū)嵺`轉(zhuǎn)換的重要教學(xué)環(huán)節(jié),也是對前期理論教學(xué)效果的檢驗。
軟件工程專業(yè)的大部分課程設(shè)計是有關(guān)軟件開發(fā)的。這就要求學(xué)生在設(shè)計過程中經(jīng)歷一個完整的軟件開發(fā)流程:項目定義、分析、設(shè)計、開發(fā)、維護[1]。作為軟件開發(fā)過程中的一個重要環(huán)節(jié),需求分析在實際的課程設(shè)計中由于各種條件的限制往往被忽略,沒有得到應(yīng)有的重視[2]。針對這一問題,本文首先闡述了需求分析在軟件開發(fā)過程中的重要性,分析了軟件工程專業(yè)課程設(shè)計中需求分析階段存在的主要問題,并給出了相應(yīng)的解決方案。
二、需求分析的重要性
軟件需求定義了系統(tǒng)必須具備的能力,即軟件能完成什么樣的功能,達到什么樣的性能,這種能力體現(xiàn)了用戶的需要和開發(fā)者對用戶需要的理解。軟件項目的開始,就是因為軟件需求的存在,需求是項目開發(fā)的基石。
一個項目成敗的關(guān)鍵因素之一就是對需求的把握程度,研究表明,軟件項目中大部分的問題都是在需求分析階段埋下的隱患,需求問題發(fā)現(xiàn)的越晚,軟件維護的開銷就越大。很多項目的失敗,也是由于需求分析的不明確而造成的,有些項目甚至是在需求沒有完全確認(rèn)的情況下就開始執(zhí)行了,這必然會導(dǎo)致成本浪費、進度延遲等嚴(yán)重問題。所以分析是軟件開發(fā)中最為基礎(chǔ)和重要的環(huán)節(jié),是軟件項目邁向成功的第一步。
需求分析也稱需求建模,主要任務(wù)就是借助當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題,即對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求[4]。分析用戶需求主要過程如下:
(1)以圖形描述系統(tǒng)的整體結(jié)構(gòu)。
(2)為用戶提供可視化界面供用戶對需求做出評價。
(3)以模型描述系統(tǒng)功能、實體關(guān)系及狀態(tài)轉(zhuǎn)等內(nèi)容[3]。
需求分析要保證需求明確,盡量避免需求描述不清楚、需求遺漏、需求互相矛盾等問題,避免在開發(fā)后期因需求問題對項目產(chǎn)生困擾。
三、課程設(shè)計中需求分析現(xiàn)狀
(1)學(xué)生重代碼,輕需求,急于完成可見的執(zhí)行軟件,大大壓縮了需求分析時間。
(2)學(xué)生缺乏對所選課程設(shè)計題目相關(guān)的業(yè)務(wù)知識的了解,需求分析只是對需求的拼貼,不完善,不系統(tǒng)。
(3)教師缺乏實際項目經(jīng)驗,對需求分析的認(rèn)知只是停留在理論階段,不能在實踐上給學(xué)生以高水平的指導(dǎo)。
四、解決方案
針對以上問題,文中給出解決方案如下:
(1)一方面轉(zhuǎn)變學(xué)生對需求分析的認(rèn)知誤區(qū),強調(diào)需求分析的重要性,通過一些案例及調(diào)研數(shù)據(jù)讓學(xué)生了解忽視需求分析帶來的嚴(yán)重后果,讓學(xué)生重視需求。讓學(xué)生了解軟件項目開發(fā)工作和項目管理工作都與需求密不可分,如軟件項目成本估算、進度計劃、項目跟蹤控制、驗證、確認(rèn)等工作都以需求為基礎(chǔ);軟件設(shè)計、編碼、測試最終的目的都是為了提交一個滿足用戶要求的可執(zhí)行軟件,用戶的要求主要就體現(xiàn)在需求分析的制品上。
另一方面增強需求分析的趣味性,讓學(xué)生主動參與需求分析,如選題上給學(xué)生充分的自主選擇權(quán)利,或者讓兩個同學(xué)選相同題目(分別做不同模塊),同組間進行需求分析競賽等。
在軟件開發(fā)過程中讓學(xué)生記錄并總結(jié),自身項目中存在的那些需求問題,對項目產(chǎn)生了怎樣的影響,讓學(xué)生在實踐中體驗、總結(jié)需求的重要性,加深認(rèn)識。
(2)題目選擇范圍上給學(xué)生更大空間,可從教師給定的題目中選取,也可學(xué)生自擬題目。因為課程設(shè)計的時間有限,需求又是一項要求精細(xì)、準(zhǔn)確、全面的工作,所以在課設(shè)開始前至少一個月,讓學(xué)生預(yù)先選好題目,進行需求調(diào)研、分析工作。需求分析開始前,由教師預(yù)先規(guī)定應(yīng)分析什么,如:軟件功能需求、性能需求、可靠性和可用性需求、接口需求、系統(tǒng)約束等;采用什么樣的分析方法,建立什么模型,如:功能模型、數(shù)據(jù)模型、行為模型等;及最終要形成軟件需求規(guī)格說明,該文檔模板由教師提供。任何軟件需求都離不開其涉及到的業(yè)務(wù)領(lǐng)域,因此也要要求學(xué)生對業(yè)務(wù)領(lǐng)域相關(guān)的標(biāo)準(zhǔn)模型進行分析和研究,對業(yè)界的一些標(biāo)準(zhǔn)和最佳實踐進行熟悉,對業(yè)務(wù)領(lǐng)域進行大量調(diào)研。這樣才能讓才能分析出真正的需求,否則需求就會脫離實際。
(3)作為教師不但要有扎實的理論知識,還應(yīng)具有較強的實踐經(jīng)驗,指導(dǎo)學(xué)生完成由理論知識向?qū)嵺`技能的轉(zhuǎn)換。所以在選擇課程設(shè)計教師的一個重要條件就是教師要有軟件項目開發(fā)經(jīng)驗及管理經(jīng)驗[5],熟悉軟件開發(fā)的各個環(huán)節(jié)。若教師本身不具備這樣的能力,也可以通過加強教師培訓(xùn),讓教師到企業(yè)中實習(xí)的方式來提高教師實踐指導(dǎo)水平,通過考核的教師才可以指導(dǎo)課程設(shè)計。
五、結(jié)論
總之,需求分析是軟件開發(fā)過程中非常重要的一個環(huán)節(jié),是項目所有活動展開的基石,在軟件工程專業(yè)軟件類的課程設(shè)計中,作為教師在這一環(huán)節(jié)應(yīng)為學(xué)生提供有效的理論和實踐指導(dǎo),讓學(xué)生理解需求分析的重要性,積極主動地做好需求分析工作,為后續(xù)的各項軟件工程活動展開打下良好基礎(chǔ)。
參考文獻:
[1] 秦放等.案例驅(qū)動與項目導(dǎo)向結(jié)合的軟件工程課程教學(xué)模式探討[J].計算機教育. 2013(9):87-90
[2] 陳杰.計算機專業(yè)課程設(shè)計中的需求分析[J].集美大學(xué)學(xué)報.2009(2):89-92
[3] 韓萬江等編著.軟件項目管理案例教程(第2版)[M].北京:機械工業(yè)出版社,2009.48
[4] 趙英豪等.基于小項目的軟件工程教學(xué)設(shè)計[J].電腦知識與技術(shù).2007(4):1143,1162
[5] 董宗然.應(yīng)用型院校軟件項目管理課程教學(xué)探討[J].計算機教育.2011(03):43-46