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