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