靳緒果
【摘要】詳細介紹了軟件需求的過程:需求工程分為需求開發(fā)和需求管理兩個階段。需求開發(fā)又分為需求獲取、需求分析、編寫規(guī)格說明書和需求驗證,其中需求獲取是該階段的一個最重要的任務(wù);需求分析時使用模型來描述,以獲取用戶更明確的需求;軟件需求規(guī)格說明闡述一個軟件系統(tǒng)必須提供的功能和性能以及它所要考慮的限制條件;一般說來,應(yīng)該從四個方面對軟件需求進行驗證,即一致性、完整性、現(xiàn)實性和有效性。需求管理就是對需求變更控制的過程。給出了企業(yè)人事信息管理系統(tǒng)實例,來簡單說明需求分析的過程。
【關(guān)鍵詞】軟件工程 軟件需求 需求工程 需求開發(fā) 需求管理
【中圖分類號】TP311.5 【文獻標識碼】A 【文章編號】2095-3089(2015)06-0181-02
軟件工程師所需解決的問題往往十分復雜,了解問題的性質(zhì)可能是非常困難的,尤其當系統(tǒng)是全新的時候。
1.綜述
軟件工程中包含需求、設(shè)計、編碼和測試四個階段,其中需求工程是軟件工程第一個也是很重要的一個階段,這個階段的任務(wù)仍然不是具體地解決問題,而是準確地確定“為了解決這個問題,目標系統(tǒng)必須做什么”,主要是確定目標系統(tǒng)必須具備哪些功能。本文以企業(yè)人事信息管理系統(tǒng)為例詳細介紹了需求工程的構(gòu)成和進行方法。
2.需求的標準
定義需求標準有所不同,但在思想上是相同的,都是為了保證項目的順利進行。一般的標準為:明確(Clear)、完整(Complete)、一致(Consistent)、可測試(Testable),還有可跟蹤、可修改等等。
明確:目前大多數(shù)的需求分析采用的仍然是自然語言,自然語言對需求分析最大的弊病就是它的二義性。所以對需求分析中采用的語言應(yīng)該做某些限制盡量采用主語+動作的簡單表達方式。還有,不要使用計算機術(shù)語。需求分析最重要的是和用戶溝通,可是用戶多半不是計算機的專業(yè)人士,如果在需求分析中使用了行話,就會造成用戶理解上的困難。
完整:需求的完整性是非常非常重要的,要做到需求的完整性是很艱難的一件事情,它涉及到需求分析過程的各方各面,貫穿了整個過程,從最初的計劃制定到最后的需求評審。
一致:用戶需求必須和業(yè)務(wù)需求一致,功能需求必須和用戶需求一致。嚴格的遵守不同層次間的一致性關(guān)系,就可以保證最后開發(fā)出來的軟件系統(tǒng)不會偏離最初的實現(xiàn)目標。
可測試:需求的幾項標準都是為了保證需求的可測試性,只有系統(tǒng)的所有需求是可以被測試的,才能夠保證軟件始終圍繞著用戶的需要,保證軟件系統(tǒng)是成功的。
需求工程分為了需求開發(fā)和需求管理兩個階段:下面就以這兩個階段說明:
3.需求開發(fā)
需求開發(fā)又分為需求獲取、需求分析、編寫規(guī)格說明書和需求驗證。以下列出和講解分析常規(guī)的步驟,當然應(yīng)按照項目的大小和特點等實際情況我們應(yīng)該自己確定合適的步驟。
3.1需求獲取:
這是該階段的一個最重要的任務(wù)。以下為獲取用戶需求需要執(zhí)行的活動。
●了解客戶方的所有用戶類型以及潛在的類型。然后,根據(jù)他們的要求來確定系統(tǒng)的整體目標和系統(tǒng)的工作范圍。
●對用戶進行訪談和調(diào)研。交流的方式可以是會議、電話、電子郵件、小組討論、模擬演示等不同形式。需要注意的是,每一次交流一定要有記錄,對于交流的結(jié)果還可以進行分類,便于后續(xù)的分析活動。例如,可以將需求細分為功能需求、非功能需求(如響應(yīng)時間、平均無故障工作時間、自動恢復時間等)、環(huán)境限制、設(shè)計約束等類型。
●需求分析人員對收集到的用戶需求做進一步的分析和整理。
●需求分析人員將調(diào)研的用戶需求以適當?shù)姆绞匠式唤o用戶方和開發(fā)方的相關(guān)人員。大家共同確認需求分析人員所提交的結(jié)果是否真實地反映了用戶的意圖。
3.2需求分析
需求分析是軟件定義時期中很重要的一個階段,它的基本任務(wù)是準確地回答“系統(tǒng)必須做什么?”這個問題。在很多情形下,分析用戶需求是與獲取用戶需求并行的,主要通過建立模型的方式來描述用戶的需求,為客戶、用戶、開發(fā)方等不同參與方提供一個交流的渠道。這些模型是對需求的抽象,以可視化的方式提供一個易于溝通的橋梁。用戶需求的分析與獲取用戶需求有著相似的步驟,區(qū)別在于分析用戶需求時使用模型來描述,以獲取用戶更明確的需求。
用于需求建模的方法有很多種,最常用的包括數(shù)據(jù)流圖(DFD)、實體關(guān)系圖(ERD)和用例圖(Use Case)三種方式。DFD作為結(jié)構(gòu)化系統(tǒng)分析與設(shè)計的主要方法,已經(jīng)得到了廣泛的應(yīng)用,DFD尤其適用于MIS系統(tǒng)的表述。DFD使用四種基本元素來描述系統(tǒng)的行為,過程、實體、數(shù)據(jù)流和數(shù)據(jù)存儲。DFD方法直觀易懂,使用者可以方便地得到系統(tǒng)的邏輯模型和物理模型,但是從DFD圖中無法判斷活動的時序關(guān)系。
ERD方法用于描述系統(tǒng)實體間的對應(yīng)關(guān)系,需求分析階段使用ERD描述系統(tǒng)中實體的邏輯關(guān)系,在設(shè)計階段則使用ERD描述物理表之間的關(guān)系。需求分析階段使用ERD來描述現(xiàn)實世界中的對象。ERD只關(guān)注系統(tǒng)中數(shù)據(jù)間的關(guān)系,而缺乏對系統(tǒng)功能的描述。如果將ERD與DFD兩種方法相結(jié)合,則可以更準確地描述系統(tǒng)的需求。
3.3編寫規(guī)格說明書
項目視圖和范圍文檔包含了業(yè)務(wù)需求,而使用實例文檔則包含了用戶需求。你必須編寫從使用實例派生出的功能需求文檔,還要編寫產(chǎn)品的非功能需求文檔,包括質(zhì)量屬性和外部接口需求。軟件需求規(guī)格說明闡述一個軟件系統(tǒng)必須提供的功能和性能以及它所要考慮的限制條件,它不僅是系統(tǒng)測試和用戶文檔的基礎(chǔ),也是所有子系列項目規(guī)劃、設(shè)計和編碼的基礎(chǔ)。它應(yīng)該盡可能完整地描述系統(tǒng)預期的外部行為和用戶可視化行為。
采用軟件需求規(guī)格說明模版:采用需求規(guī)格說明書模板在你的組織中要為編寫軟件需求文檔定義一種標準模板。該模板為記錄功能需求和各種其它與需求相關(guān)的重要信息提供了統(tǒng)一的結(jié)構(gòu)。注意,其目的并非是創(chuàng)建一種全新的模板,而是采用一種已有的且可滿足項目需要并適合項目特點的模板。
3.4需求驗證
需求分析階段的工作結(jié)果是開發(fā)軟件系統(tǒng)的重要基礎(chǔ),大量統(tǒng)計數(shù)字表明,軟件系統(tǒng)中15%的錯誤起源于錯誤的需求。為了提高軟件質(zhì)量,確保軟件開發(fā)成功,降低軟件開發(fā)成本,一旦對目標系統(tǒng)提出一組要求之后,必須嚴格驗證這些需求的正確性。一般說來,要按以下步驟進行需求驗證:
1)審查需求文檔;2)依據(jù)需求編寫測試用例;3)編寫用戶手冊;4)確定合格的標準。
4.需求管理
需求開發(fā)的結(jié)果應(yīng)該有項目視圖和范圍文檔、使用實例文檔、軟件需求規(guī)格說明及相關(guān)分析模型。經(jīng)評審批準,這些文檔就定義了開發(fā)工作的需求基線。這個基線在客戶和開發(fā)人員之間就構(gòu)筑了計劃產(chǎn)品功能需求和非功能需求的一個約定。需求約定是需求開發(fā)和需求管理之間的橋梁,需求管理包括在工程進展過程中維持需求約定集成性和精確性的所有活動。
5.企業(yè)人事管理系統(tǒng)
5.1企業(yè)人事管理系統(tǒng)概述
企業(yè)人事管理系統(tǒng)是針對企業(yè)人事方面的大量業(yè)務(wù)處理工作而開發(fā)的管理軟件。根據(jù)用戶的要求,實現(xiàn)人員基本情況管理、工資管理、和考勤管理等幾個方面的功能。用戶通過輸入工資、考勤、職工履歷等基本信息,由系統(tǒng)自行生成相應(yīng)的統(tǒng)計數(shù)據(jù)及各類統(tǒng)計報表以供用戶查詢、打印。
5.2系統(tǒng)功能分析
系統(tǒng)開發(fā)的總體任務(wù)是實現(xiàn)企業(yè)人事信息關(guān)系的系統(tǒng)化、規(guī)范化和自動化。
系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成的。經(jīng)過按照以上分析過程進行分析,分析出企業(yè)人事信息管理需要完成功能。
6.總結(jié)
以上詳細介紹了軟件需求分析過程。軟件工程中包含需求、設(shè)計、編碼和測試四個階段,其中需求工程是軟件工程第一個也是很重要的一個階段,要想做好一個項目,必須先做好需求分析,需求工程分為了需求開發(fā)和需求管理兩個階段:需求開發(fā)又分為需求獲取、需求分析、編寫規(guī)格說明書和需求驗證。需求管理就是對需求變更控制的過程。通過介紹企業(yè)人事信息管理系統(tǒng)的需求分析階段,更好地說明了需求分析過程。
參考文獻:
[1]張海藩.軟件工程導論.清華大學出版社 1998