楊帆
摘要:軟件產(chǎn)品線是一種面向特定領(lǐng)域的大規(guī)模、大粒度的軟件復(fù)用技術(shù),目前已被軟件開(kāi)發(fā)人員普遍接受?;谲浖a(chǎn)品線的需求分析是產(chǎn)品線技術(shù)研究領(lǐng)域的一個(gè)關(guān)鍵問(wèn)題。通過(guò)對(duì)軟件產(chǎn)品線的需求進(jìn)行類型分解,并在此基礎(chǔ)上對(duì)需求形式化表示;通過(guò)分析需求的相似性,提出用FR-NFR矩陣模型來(lái)描述需求,并基于FR-NFR矩陣來(lái)度量需求差異。差異度量的最終目的在于確保復(fù)用質(zhì)量的同時(shí),提高現(xiàn)有核心資產(chǎn)的復(fù)用率和為產(chǎn)品線的演化提供支持。
關(guān)鍵詞:軟件產(chǎn)品線;需求形式化表示;FR-NFR矩陣;差異度量
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-1161(2014)11-0040-03
軟件產(chǎn)品線是一組軟件密集的系統(tǒng),共享一個(gè)公共的、受管理的特征集,滿足一個(gè)特定的市場(chǎng)階段或任務(wù)的特別需要,并且是一種規(guī)定的方式,從一組公共核心資產(chǎn)開(kāi)發(fā)出來(lái)的。隨著人們對(duì)產(chǎn)品線技術(shù)認(rèn)識(shí)的不斷發(fā)展,這種大粒度、大規(guī)模的軟件開(kāi)發(fā)方法也不斷被接受和使用。同一領(lǐng)域的產(chǎn)品,其開(kāi)發(fā)過(guò)程中包含了大量的相似性,這就為在開(kāi)發(fā)過(guò)程中使用復(fù)用技術(shù)提供了可能。需求分析作為軟件產(chǎn)品線開(kāi)發(fā)的一個(gè)重要部分,其分析的合理性及正確性直接影響后續(xù)工作的開(kāi)展及質(zhì)量。因此,對(duì)需求共性和特性的分析,對(duì)需求的形式化表示,以及如何度量需求之間的差異成為軟件產(chǎn)品線技術(shù)研究的重點(diǎn)。
1 軟件產(chǎn)品線需求分析
1.1 軟件需求分類
需求作為一個(gè)人為術(shù)語(yǔ),在軟件行業(yè)中的使用可能很不一致。有時(shí)需求被視為對(duì)系統(tǒng)應(yīng)該提供的服務(wù)或?qū)ο到y(tǒng)的約束的一個(gè)高層次抽象描述;而另一種極端情況,它被定義為是對(duì)系統(tǒng)功能的詳細(xì)的、用數(shù)學(xué)方法的形式化描述。因此,可以根據(jù)對(duì)象的不同,從兩個(gè)方面來(lái)描述軟件需求:1) 用戶需求是用自然語(yǔ)言加圖表的形式給出關(guān)于系統(tǒng)需要提供哪些服務(wù),以及系統(tǒng)操作受到哪些約束的聲明。2) 系統(tǒng)需求是詳細(xì)給出系統(tǒng)將要提供的服務(wù)以及系統(tǒng)所受到的約束。
從這2個(gè)定義可以看出,對(duì)于用戶來(lái)說(shuō),軟件需求是用戶對(duì)系統(tǒng)的要求;而對(duì)于系統(tǒng)來(lái)說(shuō),軟件需求是系統(tǒng)對(duì)用戶要求的一種滿足反饋。用戶的需求是概括性的、非結(jié)構(gòu)化的;系統(tǒng)的需求是詳細(xì)的,結(jié)構(gòu)化的。用戶需求和系統(tǒng)需求都包括功能需求、非功能需求和領(lǐng)域需求3個(gè)部分。其中,功能需求包括對(duì)系統(tǒng)應(yīng)該提供的服務(wù)、如何對(duì)輸入做出反應(yīng),以及系統(tǒng)在特定條件下的行為的描述;非功能需求是對(duì)系統(tǒng)提供的服務(wù)或功能給出的約束;領(lǐng)域需求是來(lái)自系統(tǒng)的應(yīng)用領(lǐng)域的需求,反應(yīng)了該領(lǐng)域的特點(diǎn)。
1.2 軟件產(chǎn)品線需求分析過(guò)程
軟件產(chǎn)品線需求的分析過(guò)程對(duì)應(yīng)著軟件產(chǎn)品線工程。因此,該過(guò)程可以分為面向產(chǎn)品線的領(lǐng)域需求過(guò)程,以及面向產(chǎn)品線中某個(gè)具體產(chǎn)品的應(yīng)用需求過(guò)程。
領(lǐng)域需求過(guò)程的參與者包括領(lǐng)域?qū)<液头治鋈藛T。其過(guò)程是確定需求范圍,以及在產(chǎn)品線范圍定義的基礎(chǔ)上建立面向整個(gè)產(chǎn)品線的需求模型,找出產(chǎn)品線中所有產(chǎn)品的共性和可變性,形成整個(gè)產(chǎn)品線可復(fù)用的需求核心資產(chǎn)庫(kù)。應(yīng)用需求過(guò)程的參與者包括用戶和分析人員,其過(guò)程是根據(jù)具體產(chǎn)品的需求模型,獲得最后的需求規(guī)格說(shuō)明書(shū)。
領(lǐng)域需求過(guò)程區(qū)分領(lǐng)域內(nèi)產(chǎn)品的共性和可變性,將來(lái)自系統(tǒng)應(yīng)用領(lǐng)域的需求分離出來(lái),這些需求帶有系統(tǒng)的共性,每個(gè)產(chǎn)品都要符合這些共性需求的約束,因此對(duì)這類需求差異分析的意義不大。本文的需求差異分析主要是針對(duì)應(yīng)用需求過(guò)程中用戶提出的功能和非功能需求。
2 需求形式化表示
用戶需求是由軟件產(chǎn)品的使用者提供的,因此不可能使用任何實(shí)現(xiàn)模型來(lái)描述,而只能用自然語(yǔ)言、圖表或者直觀的圖形來(lái)描述,易現(xiàn)描述不夠清楚、需求混亂和需求混合的問(wèn)題。將用戶需求系統(tǒng)化、結(jié)構(gòu)化是需求形式化表示的基礎(chǔ),通過(guò)類型分解法可以直觀的體現(xiàn)需求之間的相似性。
2.1 需求類型分解法
由于用戶需求是概括性的、非結(jié)構(gòu)的,而系統(tǒng)需求是詳細(xì)的、結(jié)構(gòu)的。因此,如何將用戶需求轉(zhuǎn)變成開(kāi)發(fā)過(guò)程中使用的系統(tǒng)需求是該分解方法的重點(diǎn)。需求類型分解法的具體步驟為:
1) 操作:用戶通過(guò)自然語(yǔ)言或者圖形語(yǔ)言描述自己所需產(chǎn)品的需求。
2) 規(guī)約:該過(guò)程所使用的自然語(yǔ)言和圖像語(yǔ)言必須是用戶和系統(tǒng)分析人員都可接受、可理解的、唯一性可確定的語(yǔ)言
3) 操作:需求分析人員得到用戶需求之后,將其分解成用戶功能需求和用戶非功能需求,并將分解后的結(jié)果返回給用戶進(jìn)行新一輪的確認(rèn)。
4) 規(guī)約:將分解結(jié)果返回給用戶進(jìn)行再確認(rèn)的同時(shí),附帶用戶可理解的功能分解說(shuō)明。
5) 操作:在反復(fù)確認(rèn)之后,需求分析人員將用戶的功能需求分解成系統(tǒng)的功能需求,將用戶的非功能需求分解成系統(tǒng)的非功能需求。
6) 規(guī)約:將用戶需求細(xì)化成若干項(xiàng)系統(tǒng)需求,每項(xiàng)系統(tǒng)需求要求具有原子性和相互正交性,即每一項(xiàng)系統(tǒng)需求有且只有一個(gè)功能點(diǎn),并且彼此間不相同。
如圖1所示,這個(gè)過(guò)程的參與者只有用戶和需求分析人員。從圖中可以看到,需求分解的過(guò)程就是一個(gè)從概括到詳細(xì),從非結(jié)構(gòu)到結(jié)構(gòu)的過(guò)程。將用戶需求系統(tǒng)化,是需求形式化表示的基礎(chǔ)。
2.2 FR-NFR矩陣模型
通過(guò)類型分解法,可以將用戶需求細(xì)分為若干項(xiàng)系統(tǒng)功能需求(Function Requirement,F(xiàn)R)和若干項(xiàng)系統(tǒng)非功能(Non-Function Requirement,NFR)。這是FR-NFR矩陣的兩個(gè)重要組成元素。
FR-NFR矩陣是一個(gè)二維矩陣,其中功能需求(FR)作為矩陣的橫坐標(biāo),非功能需求(NFR)作為矩陣的縱坐標(biāo)。以該矩陣為模型,矩陣內(nèi)部的元素可以有兩種表現(xiàn)形式:一種是數(shù)值;一種是邏輯值。因此FR-NFR矩陣又可以分為數(shù)值矩陣和邏輯矩陣。
定義1:數(shù)值矩陣用V表示,是可度量的二維需求集合。用橫軸表示功能需求,縱軸表示非功能需求,其中每個(gè)元素vij(i為功能需求,j為非功能需求)表示一個(gè)功能和非功能的數(shù)值映射,其值表示需求的具體參數(shù),其中vij為集合R的元素。
定義2:邏輯矩陣用L表示,是不可度量的二維需求集合。用橫軸表示功能需求,縱軸表示非功能需求,其中每個(gè)元素lpq(p為功能需求,q為非功能需求)表示一個(gè)功能和非功能的邏輯映射,取值范圍是(0,1),其中0表示功能和非功能不相關(guān),1表示功能和非功能相關(guān)。
由前面的規(guī)定可知,需求在分解的時(shí)候要遵循原子性,即每個(gè)需求只能唯一對(duì)應(yīng)一個(gè)功能,所以需求的復(fù)用率提高也對(duì)應(yīng)著構(gòu)件復(fù)用率的提高。
3 差別度量
由于每個(gè)用戶需求都可以形式化的表示成FR-NFR矩陣。所以,需求的差異度量可以分為可量化的數(shù)值差異度量和非可量化的邏輯差異度量。
可量化的數(shù)值差異度量對(duì)應(yīng)數(shù)值矩陣,需求之間的差別可以直觀的通過(guò)矩陣自動(dòng)或半自動(dòng)的比較出來(lái)。例如每秒鐘處理的事務(wù)、事件響應(yīng)時(shí)間、無(wú)效的概率、目標(biāo)系統(tǒng)數(shù)、提示畫(huà)面數(shù)目等。
非可量化的差異度量對(duì)應(yīng)邏輯矩陣,需求之間的差別可以通過(guò)需求間映射的“存在”或“不存在”來(lái)初步體現(xiàn),接下來(lái)的工作需要具體分析人員來(lái)人為規(guī)定差別的度量形式,具體情況具體分析。例如是否需要可維護(hù)性,以及如何定義可維護(hù)性等。
由此可見(jiàn),基于FR-NFR矩陣的差別度量方法,在可量化的差異度量方面做到了部分自動(dòng)化,而在非可量化的差異度量方面,雖然還需要需求分析人員的參與,但邏輯矩陣的使用縮減了差別比較的范圍,減少了工作量。
4 需求差異度量模型
在求得需求分解模型和需求形式化表示模型之后,可以通過(guò)建立它們差別度量和驗(yàn)證機(jī)制之間的邏輯順序關(guān)系來(lái)描述需求差異度量模型。如圖3所示,模型分為4個(gè)主要的模塊:用戶需求定義、需求形式化、差異度量和驗(yàn)證機(jī)制。
5 對(duì)產(chǎn)品線演化的支持及驗(yàn)證
產(chǎn)品線演化是只產(chǎn)品線受內(nèi)部或外部影響,隨著時(shí)間的推移,朝著特定的方向累積變化,在演化的同時(shí),一切不適應(yīng)演化的產(chǎn)品線資產(chǎn)都要隨之改變或更新。以FR-NFR矩陣為基礎(chǔ)的差異度量機(jī)制,很好的支持了產(chǎn)品線演化。為進(jìn)行差異比較,把需求原子化,在演化的過(guò)程中,降低了資產(chǎn)相互之間的耦合度,提高了復(fù)用率的同時(shí),也降低了不適當(dāng)演化的風(fēng)險(xiǎn)。
6 結(jié)語(yǔ)
基于FR-NFR矩陣的需求差異分析,將概括性的用戶需求映射到具體的模塊或構(gòu)件上,在簡(jiǎn)化需求差異比較的同時(shí),增加了需求和系統(tǒng)構(gòu)件的可復(fù)用比率,減少了由于需求定義不準(zhǔn)確而造成的出錯(cuò)風(fēng)險(xiǎn),降低了分析成本,軟件產(chǎn)品線演化技術(shù)提供支持。
參考文獻(xiàn)
[1] 楊芙清,梅宏,黃罡,等.構(gòu)件化軟件設(shè)計(jì)與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2008.
[2] SOMMERVILLE,I.Software Engineering Eighth Edition[M].London: Pearson Education, 2007.
[3] 唐文忠,李劍.基于產(chǎn)品線需求分析的過(guò)程改進(jìn)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008.7,18(7):104-108.
[4] 朱亞峰,姚鄭.軟件產(chǎn)品線需求過(guò)程和方法淺論[J].計(jì)算機(jī)工程與設(shè)計(jì),2008.8,29(16):4215-4219.
[5] D.MCGREGOR, J. The Evolution of Product Line Assets[R].PA:Software Engineering Institute, Carnegie Mellon University,2003:
1-3.