一、軟件可靠性工程與需求工程的關(guān)系
軟件需求分析是軟件產(chǎn)品開發(fā)設(shè)計(jì)的第一步,也是最重要的一步。其工作質(zhì)量的高低,不僅直接影響后續(xù)工程的質(zhì)量,而且決定著所開發(fā)軟件產(chǎn)品的價(jià)值。當(dāng)然,完整、嚴(yán)密地描述用戶需求,并不是一件十分容易的事。有些軟件產(chǎn)品之所以功能不完善、性能差、可靠性低、可用度差、甚至不能使用,多數(shù)是因?yàn)橛脩粜枨蠓治龉ぷ鞑粡氐姿隆5?,目前軟件可靠性工程研究與實(shí)踐的重點(diǎn),在于軟件測(cè)試等一些事后的驗(yàn)證性工作,對(duì)軟件可靠性設(shè)計(jì)重視不多,這在需求分析等前期階段尤為突出。
二、軟件需求分析
軟件需求分析是軟件設(shè)計(jì)的基礎(chǔ)。它采用一系列行之有效的技術(shù)、方法和工具來(lái)分析用戶需求,通過特定的形式系統(tǒng)地描述擬開發(fā)軟件的功能、性能,以及行為特征和相關(guān)約束,定義所有內(nèi)外部特征,最后形成既能指導(dǎo)軟件設(shè)計(jì)、又能同用戶溝通的軟件需求規(guī)格說(shuō)明。它覆蓋了軟件設(shè)計(jì)之前的各項(xiàng)活動(dòng)。
軟件需求分析是從用戶最初的非形式化需求,到滿足用戶要求的軟件產(chǎn)品設(shè)計(jì)的一個(gè)映射。
在軟件計(jì)劃的基礎(chǔ)上,從深入分析用戶需求出發(fā),把用戶的需求變換成以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)需求。需求分析實(shí)際上是調(diào)查、評(píng)價(jià)、以致肯定用戶對(duì)軟件的需求的過程,是一個(gè)對(duì)用戶意圖不斷進(jìn)行揭示和判斷的過程。其目的在于細(xì)化、精化軟件的作用范圍,確定擬開發(fā)軟件的功能和性能,分析并確認(rèn)其過程,確定軟件成分及接口。
1.軟件需求分析的任務(wù)與步驟
軟件需求分析可分為四個(gè)步驟。
①歸納整理用戶提出的各種問題和要求,弄清用戶企圖通過軟件達(dá)到的目的,并把它作為要求和條件予以明確。即分析人員借助各種工具和方法,獲得對(duì)用戶需求的基本理解,然后在需求獲取方法的驅(qū)動(dòng)和指導(dǎo)下,從非形式需求陳述中提取出用戶的實(shí)際需求。由此確定軟件的功能、性能、接口關(guān)系及有關(guān)屬性、軟件條件、限制和邊界等,標(biāo)定軟件的作用范圍,確認(rèn)支持性的軟硬件環(huán)境及輔助工具與條件。此階段還為軟件需求分析活動(dòng)提供了相應(yīng)的過程控制機(jī)制。
?、谠谛枨螳@取的基礎(chǔ)上,建立邏輯模型,使用自頂向下、逐層分解的方法,把用戶對(duì)軟件的需求分解成若干子系統(tǒng)或軟件成分,將外部需求賦予軟件的各個(gè)功能成分,定義軟件成分的內(nèi)部功能,并標(biāo)定它們之間的接口。
?、塾脺?zhǔn)確、簡(jiǎn)練、無(wú)二義性的語(yǔ)言將用戶需求規(guī)格化為軟件需求規(guī)格說(shuō)明,使用戶和開發(fā)人員對(duì)擬開發(fā)軟件有共同的理解,它同時(shí)還是軟件確認(rèn)、測(cè)試、驗(yàn)收和交付的基準(zhǔn)。
?、芡ㄟ^需求評(píng)審,對(duì)需求獲取、需求定義等進(jìn)行全面審查,力圖發(fā)現(xiàn)需求分析中的錯(cuò)誤和缺陷,最終確認(rèn)軟件需求規(guī)格說(shuō)明。同時(shí),以需求規(guī)格說(shuō)明為輸入,通過符號(hào)執(zhí)行、模擬或快速原型等方法,向用戶展示需求規(guī)格說(shuō)明所刻劃的系統(tǒng)外部行為和相應(yīng)特征。
2.軟件需求定義方法
在需求分析的前期,用戶往往難以對(duì)其要求進(jìn)行準(zhǔn)確、完整的描述,因此獲取并定義軟件需求特別重要。常用的需求定義方法是需求背景描述法。它可以通過對(duì)下面問題的獲取與分析,來(lái)獲得對(duì)用戶需求的定義。
- 用戶需求的數(shù)學(xué)、物理和工程技術(shù)等背景。
- 相關(guān)數(shù)據(jù)量及其數(shù)據(jù)的準(zhǔn)確性和提供方式。
- 用戶需求的規(guī)模和一般限制。
- 精度要求。
- 原始數(shù)據(jù)的診斷要求和參數(shù)缺省處理要求。
- 操作控制與環(huán)境要求。
- 可靠性要求。
在規(guī)范用戶需求的基礎(chǔ)上,分析用戶的需求背景,應(yīng)特別注意其差異。根據(jù)開發(fā)和運(yùn)行環(huán)境限制,得到軟件功能和性能的初始集合,最終形成需求集合。
另一種方法是問題求解過程定義。因?yàn)橛行┬枨箅y以用簡(jiǎn)練的原始問題模型或輸入/輸出規(guī)格予以定義,需要把解決問題的過程逐步描述出來(lái),即指定每一步的數(shù)學(xué)模型、數(shù)