- 相關推薦
淺談軟件開發(fā)中的需求分析
摘要:眾所周知,想要做好軟件 ,首先要做好需求分析,但是實際上人們對需求分析卻不夠重視。并且由于需求分析的錯誤引起的軟件開發(fā)的錯誤在制作時是看不出來的,只有做完軟件進行檢測時才能發(fā)現(xiàn),但是這時想要改正錯誤就要付出雙倍的代價。下文就需求分析的相關問題進行了探討。 關鍵詞:軟件開發(fā) 需求分析 分類號】:TP311.52 一.什么是需求分析 結(jié)構(gòu)化軟件開發(fā)一般分為分析、設計、開發(fā)、測試、驗收與運行等階段。開發(fā)前,會進行前期的可行性研究;在運行開始以后,還要進行后期維護。需求分析是結(jié)構(gòu)化開發(fā)中的重要階段。通常情況下,國內(nèi)軟件開發(fā)公司在做歐美和日本的項目時,對前期的可行性研究參與得較少,一般都是對方已經(jīng)做完可行性研究,國內(nèi)軟件開發(fā)公司從需求分析開始做起,直到軟件開發(fā)后的運行和維護。 所謂“需求分析”,是指對要解決的問題進行詳細的分析,弄清楚客戶的需求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應輸出什么,等等?梢哉f,軟件工程當中的“需求分析”就是確定要計算機“做什么”。 二.需求分析的重要性 從需求分析的定義上,就可以看出需求分析在軟件開發(fā)過程中的重要性了。需求分析做得不對,后面的步驟做得再好,也只能是南轅北轍,無法滿足客戶的要求。研究表明,改正產(chǎn)品付諸應用后所發(fā)現(xiàn)的一個需求方面的缺陷,比在需求階段改正這個錯誤要多付出大約100倍的成本。而另一項研究發(fā)現(xiàn),在需求開發(fā)階段發(fā)現(xiàn)的一個錯誤,平均僅需要花30分鐘修復,但若在系統(tǒng)測試時發(fā)現(xiàn)則需要5―17個小時來修復。 需求工程的成功與否直接關系到系統(tǒng)給的命運,需求工程絕對不是軟件開發(fā)的前期任務,而應該在整個系統(tǒng)的生命周期里都扮演著重要角色。在需求工程階段解決和根除需求引起的問題可以大大降低生產(chǎn)和維護的成本,提高用戶的滿意度。在軟件開發(fā)的過程中,需求工程階段是了解用戶需求的最佳時期,但很大一部分用戶不知道、不了解需求工程,以至于在和他們交流的時候,他們都不能準確完整的說出自己的需求,因而對于從事需求工程的人員來說,能夠正確的理解用戶的需求觀點,利用一些方法和技巧來啟發(fā)用戶闡述清楚自己的需求是很重要的。需求工程作為了解并實現(xiàn)軟件開發(fā)者的目標的重要手段,有著不可替代的作用。 比如一個失敗的案例:由于和客戶簽訂了合同,5個月必須交付軟件,開發(fā)時間緊迫,導致項目計劃時做需求分析的時間只給了2周時間(理由是客戶的文檔已經(jīng)提供好了,照著做即可)。結(jié)果,由于前期對客戶文檔理解得不是很清楚,導致開發(fā)進行到3個月的時候發(fā)現(xiàn)需求上有爭議。在和客戶確認后得出結(jié)論:如果要滿足客戶的要求,則需要對整體架構(gòu)進行修改。雖然最后按期交付了軟件,但是整個項目組最后兩個月每天都在加班,包括周末,而且軟件質(zhì)量也沒有得到客戶的充分認可。 再如我們在了解客戶需求的同時,應該盡量了解客戶為什么要這么做,幫客戶一起想需求,以便我們開發(fā)的軟件能夠更好地為客戶服務。每天開完會后,我們應該把客戶的需求整理好,發(fā)給同事進行研究分析,建立簡單的基礎模型并研究技術可行性。需求分析結(jié)束后,保持每周至少3次電話會議與客戶進行溝通,隨時了解客戶的需求。最后正因為在前期階段進行了這種細致的需求分析,項目組在很少加班的情況下,不但按時交付了項目,并且得到客戶的充分認可。 三.軟件需求分析的任務 軟件工程的發(fā)展來源于信息需求對它的推動,現(xiàn)在互聯(lián)網(wǎng)技術和應用越來越成熟,信息的獲取也逐漸變得簡單和完整,但是由于資源的開放性、系統(tǒng)與系統(tǒng)的相互滲透性、用戶的變動性讓需求變得多目的、多變化,增加了軟件制作的難度,但同樣帶來了巨大的用戶市場。需求的獲取同樣也是困擾軟件工程的絆腳石。需求與資源的搭配不合理,就會影響軟件工程的發(fā)展。未來適應變化多端的用戶需求,必須讓軟件也隨之變化。要滿足多樣化的信息需求,提取合適的信息需求建立模式,就要有相應的系統(tǒng)對需求信息進行分析和總結(jié),通過程序化的模式來制定切實可行的軟件方案。 在軟件分析過程中,應盡http://www.oriental01.com/news/557AB9D13B507EBA.html可能地讓更多的人參與進來,而不僅僅是軟件分析師自己。在之前的美國項目中,在前期分析時軟件開發(fā)的核心技術人員和測試人員就已經(jīng)進入項目組,每天技術人員會對分析的結(jié)果提出技術實現(xiàn)的難點以及改進的方法,筆者在隨后的會議上就會和客戶進行討論,盡量在滿足客戶需求的同時,使用更簡單可行的技術,這樣就為以后的開發(fā)奠定了基礎,使開發(fā)時的工作量大大減少。測試人員也在需求時提出從測試角度看到的問題,同樣在需求分析階段得到解決,節(jié)省了大量的開發(fā)時間。 需求工程在未來發(fā)展中會有如下幾個方面的著重考慮:(1)縮小需求工程在理論研究階段取得的成果同實際應用中得到的效果的差距,通過得到的結(jié)論來更好的設計軟件;(2)規(guī)范需求工程的各種機制,可以有需求工程規(guī)格數(shù)據(jù)的搜集、整理、制作、實現(xiàn)以及維護,也可以有需求工程的問題的解決辦法;(3)保證需求工程有較高的質(zhì)量。這一點是需求工程最為關鍵的要求,質(zhì)量的高低直接影響了未來實現(xiàn)效果的好壞。 需求工程就是對未知問題進行探索、處理的過程。未來必然會朝著對象具體化、分析自動化的方向發(fā)展。 四.進行需求分析的注意事項 1.需求分析是分析人員與用戶共同的責任。用戶必須對軟件功能和性能提出初步要求,并澄清一些模糊概念。而需求分析人員則要認真了解用戶的要求,細致地進行調(diào)查分析,把用戶“做什么”的要求最終轉(zhuǎn)換成一個完全的、精細的軟件邏輯模型,并寫出軟件的需求規(guī)格說明,準確地表達用戶的要求。在一些項目中,由于時間緊迫,一些模糊問題沒有及時澄清,導致最后返工,影響了項目進度。 2.需求分析階段研究的對象是軟件項目的用戶要求。需要注意的是,必須理解用戶的各項要求,但又不能全盤接受所有的要求。在一些項目中,針對客戶提出的需求,了解客戶的意圖后,發(fā)現(xiàn)技術上實現(xiàn)有很大難度。我們了解到這個需求對客戶來說不是十分重要,于是和客戶商量出一個折中的解決方案,繞過技術難點,并且沒有降低客戶滿意度。 3.分析人員要使用符合客戶語言習慣的表達,應主動積極了解客戶業(yè)務和相關知識。需求討論集中于業(yè)務需求和任務,因此要使用術語。客戶應將有關術語教給分析人員,而客戶不一定要懂得計算機行業(yè)的術語。由于通常情況下客戶對計算機術語了解不多,需求分析人員應該盡量將計算機術語轉(zhuǎn)化成通俗易懂的語言,這樣便于和客戶溝通。而對于客戶方面的術語,一方面不懂的時候一定要問;另一方面也要多學習。 綜上所述,需求分析是軟件開發(fā)周期中的重要階段,關系到軟件開發(fā)的成敗。我們在軟件開發(fā)中應該充分重視這一階段,盡量將問題在這一階段解決好,為后期的軟件開發(fā)打好堅實的基礎,使項目能夠保質(zhì)保量的完成。 參考文獻: 【1】李德毅.需求工程----對復雜系統(tǒng)的軟件工程的基礎研究【J】.中國基礎科學,2009,11(2);56-57. 【2】李虹,閆德恒.基于項目需求工程理論的軟件需求管理淺析【J】.國科技信息,2011,(16);72-73 【3】李建平.軟件需求工程過程管理的研究與應用【J】.科技信息,2011,(5);66-67
【淺談軟件開發(fā)中的需求分析】相關文章:
需求分析報告09-17
論英語語言課程設計中的需求分析05-01
軟件需求分析報告11-27
網(wǎng)站需求分析報告08-17
淺談危險性分析中應注意的問題04-28
有效需求不足的成因分析04-29
淺談我國綠色建材的發(fā)展需求04-30
淺談詞素分析法在西班牙語教學中的運用04-29