摘要:軟件工程中包含需求、設(shè)計(jì)、編碼和測(cè)試四個(gè)階段,其中,軟件工程第一個(gè)也是很重要的一個(gè)階段是需求工程,需求分析又是需求工程中重要的一環(huán)。它是指理解用戶需求,就軟件功能與客戶達(dá)成一致,估計(jì)軟件風(fēng)險(xiǎn)和評(píng)估項(xiàng)目代價(jià),最終形成開(kāi)發(fā)計(jì)劃的一個(gè)復(fù)雜過(guò)程,決不是軟件工程中最簡(jiǎn)單的一個(gè)步驟,它包括需求的獲取、分析、規(guī)格說(shuō)明、變更、驗(yàn)證、管理的一系列需求工程。本文就需求分析在軟件工程中的作用,層層剝離,深入淺出,進(jìn)行了粗淺層次的探討。
關(guān)鍵詞:軟件工程;CMM;需求管理;需求分析
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-7712 (2012) 18-0039-01
“軟件工程”這個(gè)名詞是1968年美國(guó)和西歐的一些科學(xué)家在NATO(北大西洋公約組織)會(huì)議上第一次提出的,是利用工程學(xué)的方法開(kāi)發(fā)和維護(hù)計(jì)算機(jī)軟件的一門(mén)學(xué)科。本篇論文粗淺分析的是軟件工程中的需求分析。
軟件開(kāi)發(fā)由需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、軟件測(cè)試、項(xiàng)目維護(hù)和軟件集成幾部分內(nèi)容組成。英文中有個(gè)全稱為CapabilityMaturityModelforSoftware,縮寫(xiě)為SW-CMM,簡(jiǎn)稱為CMM,用漢語(yǔ)表達(dá)出的意思就是——“能力成熟度模型”,也就是對(duì)于軟件組織在定義、實(shí)施、度量、控制和改善其軟件過(guò)程的實(shí)踐中各個(gè)發(fā)展階段的描述。軟件開(kāi)發(fā)被CMM的核心視為一個(gè)過(guò)程,并根據(jù)這一核心原則對(duì)其進(jìn)行過(guò)程監(jiān)控與研究,目的是更加科學(xué)化、標(biāo)準(zhǔn)化,在監(jiān)督過(guò)程中發(fā)現(xiàn)影響項(xiàng)目的關(guān)鍵問(wèn)題并予以解決,使企業(yè)能夠更好地實(shí)現(xiàn)商業(yè)目標(biāo)。軟件開(kāi)發(fā)人員開(kāi)發(fā)和維護(hù)軟件及相關(guān)產(chǎn)品的一套行為、方法、實(shí)踐及變換過(guò)程被定義為軟件過(guò)程,它包括軟件開(kāi)發(fā)過(guò)程和軟件管理過(guò)程。CMM把軟件開(kāi)發(fā)機(jī)構(gòu)按照不同開(kāi)發(fā)水平劃分為5個(gè)級(jí)別,每個(gè)等級(jí)被分解為幾個(gè)KPA(關(guān)鍵過(guò)程域),KPA是指在某個(gè)成熟度等級(jí)應(yīng)重點(diǎn)關(guān)注的區(qū)域,也是達(dá)到此成熟度等級(jí)必須解決的關(guān)鍵點(diǎn)。在CMM中成熟度第二等級(jí)有6個(gè)關(guān)鍵過(guò)程域,主要涉及建立軟件項(xiàng)目管理控制方面的內(nèi)容。即:需求管理(RM)、軟件項(xiàng)目計(jì)劃(SPP)、軟件項(xiàng)目跟蹤與監(jiān)控(SPTO)、軟件子合同管理(SSM)、軟件質(zhì)量保證(SQA)、軟件配置管理(SCM)。
軟件項(xiàng)目管理中還有一個(gè)非常關(guān)鍵的步驟——需求管理。對(duì)于計(jì)算機(jī)系統(tǒng)的認(rèn)識(shí),很多用戶有很多盲區(qū),對(duì)于系統(tǒng)的具體需求往往也比較模糊,經(jīng)常出現(xiàn)疏漏或者是錯(cuò)誤的問(wèn)題,隨著項(xiàng)目的進(jìn)展,凸現(xiàn)的會(huì)愈發(fā)明顯。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),軟件產(chǎn)品的部分內(nèi)容必須重新開(kāi)發(fā),這就意味著需求的變更。而對(duì)于整個(gè)軟件項(xiàng)目管理而言,勢(shì)必要重新分配資源、調(diào)整計(jì)劃、估算成本等等。需求分析的完整與否可以控制軟件質(zhì)量、決定項(xiàng)目周期、增減項(xiàng)目成本。故而:需求管理工程越來(lái)越成為熱點(diǎn)。
需求獲取的正確性和有效性要求很高:角色的專業(yè)化、業(yè)務(wù)創(chuàng)新的復(fù)雜、交付速度等等。有時(shí)缺少特定需求的某些信息。在解決這個(gè)不確定性之前,可能必須與客戶商議,檢查與另一個(gè)系統(tǒng)的接口或者定義另一個(gè)需求。使用“待確定”符號(hào)作為標(biāo)準(zhǔn)指示器來(lái)強(qiáng)調(diào)軟件需求規(guī)格說(shuō)明中的這些需求的缺陷。
設(shè)計(jì)一個(gè)軟件應(yīng)用系統(tǒng)的起點(diǎn)與基本依據(jù)是需求分析。對(duì)用戶來(lái)講最重要的是有效性,高效性,靈活性,完整性,互操作性,可靠性,健壯性,可用性。對(duì)開(kāi)發(fā)者來(lái)說(shuō)最重要的是可維護(hù)性,可移植性,可重用性,可測(cè)試性。在屬性取舍方面,用戶和開(kāi)發(fā)者必須確定屬性優(yōu)先級(jí),做決策時(shí)始終遵照優(yōu)先級(jí),為了達(dá)到產(chǎn)品特性的最佳平衡,必須在需求獲取階段識(shí)別,確定相關(guān)的質(zhì)量屬性并為之確定優(yōu)先級(jí)。當(dāng)為項(xiàng)目定義重要屬性時(shí)利用屬性間正負(fù)關(guān)系圖可防止發(fā)生與目標(biāo)沖突的行為。通常一個(gè)軟件項(xiàng)目合同的簽訂,體現(xiàn)的可能是整個(gè)系統(tǒng)的目標(biāo)需求,面向用戶的需求往往被忽略,對(duì)于這種情況一定要注意需求更改的可控性。任何一個(gè)需求分析因客觀原因可能存在著需求更改的現(xiàn)象,要使受需求變化影響的產(chǎn)品與需求變更一致,就要建立需求的基準(zhǔn)版本和更改版本,真正了解用戶想要解決的實(shí)際問(wèn)題,即使需求的變更比較頻繁,也要注重需求的穩(wěn)定性。直接影響到軟件過(guò)程的改進(jìn)因素離不開(kāi)需求分析的完整性和變更可控性,它不僅可以決定軟件的質(zhì)量、開(kāi)發(fā)成本的高低、甚至是導(dǎo)致項(xiàng)目成敗的關(guān)鍵。
需求管理員是軟件工程組(SEG)中要明確定義的一個(gè)角色。具體操作步驟有幾點(diǎn):
第一:多角度全方位的對(duì)項(xiàng)目進(jìn)行分析并且對(duì)項(xiàng)目的可行性進(jìn)行論證;
第二:對(duì)客戶進(jìn)行需求調(diào)研,整理客戶需求,負(fù)責(zé)編寫(xiě)用戶需求說(shuō)明書(shū);
第三:負(fù)責(zé)將完成的項(xiàng)目模塊給客戶做演示,并收集完成模塊的意見(jiàn);
第四:協(xié)助系統(tǒng)架構(gòu)師、系統(tǒng)分析師對(duì)需求進(jìn)行理解。
有了上述鋪墊,毋庸置疑的一個(gè)角色也要出場(chǎng)了,那就是——需求工程師。再好的軟件如果沒(méi)有做好需求分析也將失去市場(chǎng)意義,失去生存活力。需求工程師是溝通用戶與開(kāi)發(fā)人員的橋梁,做好需求分析是一個(gè)產(chǎn)品是否能夠適應(yīng)用戶要求的關(guān)鍵所在。需求工程師們?cè)诹私庥脩粲至私饧夹g(shù)的基礎(chǔ)上掌控項(xiàng)目發(fā)展的風(fēng)向標(biāo)。
計(jì)算機(jī)軟件工程中的需求分析要解決的任務(wù)是\"做什么\"的問(wèn)題,全面地理解用戶和開(kāi)發(fā)人員的各項(xiàng)要求,準(zhǔn)確表達(dá)所接受的需求。之所以重要,是因?yàn)樗哂袥Q策性、方向性、策略性的作用,從某種程度上說(shuō),它的作用可能并不小于程序設(shè)計(jì),而且是提高軟件質(zhì)量的基礎(chǔ),也是決定一個(gè)軟件項(xiàng)目成敗的關(guān)鍵。
參考文獻(xiàn):
[1]孫琦龍.一種加強(qiáng)軟件項(xiàng)目管理的實(shí)踐模式[J].科技信息,2008.
[作者簡(jiǎn)介]王一帆,大連交通大學(xué)09級(jí)日語(yǔ)和軟件工程二班。