賈 超
(天津市科技統(tǒng)計與發(fā)展研究中心 天津300051)
軟件項目需求開發(fā)與管理過程方法研究
賈 超
(天津市科技統(tǒng)計與發(fā)展研究中心 天津300051)
軟件需求是軟件開發(fā)項目的基礎(chǔ),與傳統(tǒng)項目相比,軟件開發(fā)項目具有抽象性和復雜性等特點,因此軟件開發(fā)項目的需求開發(fā)和管理顯得尤為重要。根據(jù)研究表明,項目需求的開發(fā)和管理不到位是目前大部分軟件項目失敗的主要原因。就軟件開發(fā)項目的需求開發(fā)和管理過程的方法和工具進行研究,將需求開發(fā)和管理過程分解細化,并對各過程組的活動進行研究和分析,建立可用于指導軟件開發(fā)項目的工作方法。
需求開發(fā) 需求管理 需求變更控制 過程方法 管理工具
隨著科學技術(shù)水平的不斷提高,有關(guān)軟件開發(fā)的知識和技術(shù)也不斷豐富,可利用的工具也越來越多,但仍然存在大量軟件開發(fā)項目失敗的現(xiàn)象。研究發(fā)現(xiàn),諸多項目失敗的最重要原因與項目需求有關(guān)。用戶的需求是整個軟件開發(fā)項目的重中之重,是軟件設(shè)計的基礎(chǔ),決定了項目方向的正確與否。需求開發(fā)的不充分和需求管理的不完善,都會造成后期開發(fā)的不斷修改和變更,造成成本的超值和進度的滯后,最終有可能導致項目失敗。
從目前軟件開發(fā)項目的趨勢來看,軟件開發(fā)組織機構(gòu)和項目經(jīng)理更加重視軟件項目的開發(fā)和管理。規(guī)范化的過程和管理方法成為軟件開發(fā)生命周期的重要組成部分。
按照現(xiàn)代軟件開發(fā)項目的流程,所有與需求直接相關(guān)的活動,統(tǒng)稱為需求工程。需求工程分為需求開發(fā)和需求管理兩個部分,如圖1所示。
1.1 需求開發(fā)過程組
需求開發(fā)是CMMI①中一個重要的過程域,需求開發(fā)過程的質(zhì)量決定了軟件開發(fā)產(chǎn)品的方向,如果需求開發(fā)不充分,有可能導致需求理解偏差,需求的任何細小偏差,都會導致后期無法想象的代價。
圖1 需求工程架構(gòu)圖Fig.1 Structure of Requirement Engineering
需求開發(fā)的主要目的是對尚未形成統(tǒng)一意見的需求進行一系列的過程活動,需求開發(fā)的過程是從需求獲取到需求分析,需求規(guī)約和需求驗證的過程,根據(jù)CMMI的觀點,需求開發(fā)過程是一個循序漸進的過程。
1.1.1 需求獲取
需求獲取是項目需求階段的主要工作,也是需求工程中最復雜的工作。需求獲取是一個確定和理解不同用戶類需要和限制的過程。包括需求來源和需求獲取的技術(shù),是軟件設(shè)計的第一階段,其本質(zhì)就是人的活動,要建立開發(fā)人員和用戶之間的有效溝通機制,采用專業(yè)的需求獲取技術(shù)來盡可能收集用戶的需求。
1.1.2 需求分析
需求分析是建立在需求獲取基礎(chǔ)上的,是對需求獲取成果的技術(shù)分析。需求分析的任務(wù)就是定義系統(tǒng)的目的、范圍和功能的過程。需求分析的具體內(nèi)容可以歸納為6個方面:軟件的功能需求、軟件與硬件或其他外部系統(tǒng)接口、軟件的非功能性需求、軟件的反向需求、軟件設(shè)計和實現(xiàn)上的限制、閱讀支持信息。
1.1.3 需求規(guī)格說明
軟件需求規(guī)約是需求分析任務(wù)的產(chǎn)物,通過建立完整的信息描述、詳細的功能和行為描述、性能需求和設(shè)計約束的說明、合適的驗收標準,給出目標軟件的所有功能需求。按照IEEE/ANSI 830—1993①IEEE/ANSI830—1993:中文標準名稱為:軟件要求規(guī)范推薦實施規(guī)程。標準要求,需求規(guī)約框架包括:引言、信息描述、功能描述、行為描述、檢驗標準、參考書目和附錄。技術(shù)人員必須通過與用戶交流提煉需求,經(jīng)雙方確認后,正式發(fā)布需求規(guī)約。
1.1.4 需求驗證
軟件需求驗證是為了確保軟件需求規(guī)約準確、完整地表達需要的質(zhì)量特點。需求驗證過程的主要內(nèi)容包括審查需求規(guī)約、需求文檔,并以需求規(guī)約為依據(jù)編寫軟件測試用例和用戶手冊,核實驗收標準。
1.2 需求管理過程組
需求管理是完整項目管理模式的一環(huán),完整的需求管理應(yīng)當是對已知的系統(tǒng)需求的約束和管理。
項目需求是漸進明晰的,隨著軟件項目開發(fā)的不斷深入,用戶和開發(fā)者對于變更的理解也會產(chǎn)生變化,需求的定義也會逐漸清晰。需求管理是動態(tài)的管理過程,需要根據(jù)軟件開發(fā)的進展,實時對開發(fā)過程中的項目需求進行管理,支持系統(tǒng)的需求演進。項目需求管理內(nèi)容包括需求確認、需求變更、需求評審和需求跟蹤。
1.2.1 需求確認
系統(tǒng)需求得到顧客和開發(fā)人員的共同認可后,定義需求基線。
1.2.2 需求變更管理
軟件項目需求永遠處于不停的改變狀態(tài),應(yīng)對軟件開發(fā)項目過程中所提出的需求變更,建立正式的需求變更流程加以嚴格控制,防止項目無限制變更所導致的項目范圍蔓延。
1.2.3 需求的評審
對項目干系人提出的需求變更進行評審,評估每一項變更的可能影響從而決定是否實施。
1.2.4 需求跟蹤
對需求變更情況和需求狀態(tài)進行驗證。將每項需求與其對應(yīng)的設(shè)計、源代碼和測試用例等聯(lián)系起來,對項目變更后的執(zhí)行效果進行評價,并對潛在的變更進行預(yù)估。
任何管理的方法和思想都是依托專業(yè)的工具、方法來實現(xiàn)的。需求開發(fā)和管理都是極其復雜的工作,使用的方法也很多,要根據(jù)不同項目的特點選擇最合適的方法來實施項目需求工程。
2.1 需求開發(fā)的過程方法
需求開發(fā)過程不是一個簡單的重復工作,而是建立在上一次分析基礎(chǔ)上的不斷細化和精化,在不斷的循環(huán)過程中,最大限度地理解和分析用戶需求,確保需求開發(fā)的成果最大化。
需求開發(fā)的過程方法包括但不限于以下內(nèi)容,如表1所示。
表1 需求開發(fā)過程方法Tab.1 Approaches for the requirement development process
2.2 需求管理的過程方法
需求管理的目的就是要控制和維持需求事先約定,保證項目開發(fā)過程的一致性。在軟件開發(fā)過程中,不可避免地還會遇到需求變更等情況。應(yīng)加強變更管理,建立有效的需求變更管理制度,采用專業(yè)、正式的項目管理方法。對變更帶來的潛在影響及可能的成本費用進行評估、審批和跟蹤。
2.2.1 需求確認
建立需求基線。需求基線是需求變更的依據(jù)。在開發(fā)過程中,需求確定并經(jīng)過評審后,可以建立第一個需求基線和項目范圍。此后的每次變更經(jīng)評審后,都要重新確定新的需求基線。建立需求基準版本和需求控制版本文檔:確定一個需求基準,這是一致性需求在特定時刻的快照。之后的需求變更遵循變更控制過程即可。每個版本的需求規(guī)格說明都必須是獨立說明,以避免將底稿和基準或新舊版本相混淆。最好的辦法是使用合適的配置管理工具在版本控制下為需求文檔定位。
2.2.2 需求變更管理
建立簡單有效的需求變更控制流程,并形成正式的發(fā)布文檔。在確定需求基線后提出的所有變更都必須遵循這個控制流程進行控制。同時這個流程應(yīng)適合組織結(jié)構(gòu),具有通用性,適用于以后的項目開發(fā)和其他項目的借鑒;建立變更控制委員會(CCB)或類似的職能組織。由該組織審定接受哪些變更和如何執(zhí)行變更。變更控制委員會由項目組各方共同組成,應(yīng)包含對項目具有影響力的決策者。
2.2.3 需求評審
需求變更一定要進行正式的評估,對需求變更的影響進行分析,并根據(jù)影響程度的大小組織同等級別的變更評審。
2.2.4 需求跟蹤,應(yīng)跟蹤影響工作產(chǎn)品的每項變更
需求變更是一個系統(tǒng)性工作。當進行某項需求變更時,參照需求跟蹤能力矩陣找到相關(guān)的其他需求、設(shè)計模板、源代碼和測試用例,這些相關(guān)部分可能也需要修改。這樣能減少因疏忽而不得不變更產(chǎn)品的機會,這種變更在變更需求的情況下是必須進行的。維護需求變更的歷史記錄:記錄變更需求文檔版本的日期以及所做的變更、原因,還包括由誰負責更新和更新的新版本號等。建立數(shù)據(jù)庫,記錄保存每一項功能需求,記錄包括功能需求的重要屬性和狀態(tài)(如已通過、已實施、已驗證等)。衡量需求穩(wěn)定性:記錄基準需求的數(shù)量和每周或每月的變更(添加、修改、刪除)數(shù)量。
2.2.5 衡量需求穩(wěn)定性
定期對需求變更數(shù)量和原始需求數(shù)量進行比較。過多的需求變更“是一個報警信號”,意味著需求開發(fā)不完整,問題沒有真正清楚,應(yīng)重新審定項目需求或者取消項目。
2.3 需求管理的常用工具
在需求管理過程中,利用需求管理工具,可使需求管理工作更加高效。商業(yè)化的需求管理工具能幫助在數(shù)據(jù)庫中存儲不同類型的需求,為每項需求確定屬性,可跟蹤其狀態(tài),并在需求與其他軟件開發(fā)工作中建立跟蹤能力聯(lián)系鏈。目前市場上比較常用的需求管理工具有Rational Requisite Pro①Requisite Pro是一個強大、易用、集成的需求管理產(chǎn)品。通過與Rational系列軟件產(chǎn)品的廣泛集成,大大擴展了Requisite Pro及其他產(chǎn)品的功能。、IBM Rational DOORS②IBM Rational DOORS前身是Telelogic Doors,被IBM收購后更名為IBM Rational DOORS。、青銅器RDM③青銅器RDM是IPD+CMMI+Scrum一體化研發(fā)管理解決方案,針對需求管理,涵蓋需求的全生命周期管理。等。
由于軟件開發(fā)項目的專業(yè)性、復雜性,與一些傳統(tǒng)項目相比,軟件開發(fā)項目更模糊、不確定。軟件開發(fā)項目的需求開發(fā)和管理仍存在很多問題。需求開發(fā)和管理的知識和方法存在缺少實踐,管理方法的執(zhí)行不徹底。
3.1 溝通問題
由于軟件項目屬于專業(yè)行為,在需求收集階段,一般用戶很難清晰地理解開發(fā)人員的理念,所以在描述需求時,很難清晰地表達需求。此外,用戶對系統(tǒng)并不了解,往往在項目開發(fā)深入、功能雛形展現(xiàn)的時候,才真正的清楚自己所需的功能。這就需要項目管理人員和開發(fā)人員在項目需求開發(fā)階段,盡可能深入地挖掘用戶需求,在項目開發(fā)過程中,建立正式的溝通機制和平臺,保持與客戶的溝通協(xié)調(diào)。
3.2 需求基線的控制力不足
缺少需求基線的控制,變更執(zhí)行不是在需求基線基礎(chǔ)上進行的,或者在需求變更后,基線調(diào)整沒有跟上。
3.3 需求管理中對需求的跟蹤和管理的變更不力
目前,國內(nèi)很多項目都缺少對項目需求的跟蹤和效果分析,對于變更的作用如何缺少評價機制,這樣就導致目前很多項目的需求變更控制不力,項目變更失控。
在軟件研發(fā)項目的生命周期的任何階段,需求的開發(fā)和管理都扮演著極其重要的角色,在很大程度上直接決定著項目的最終成敗。因此,在軟件開發(fā)項目研發(fā)過程中,項目管理者要重視需求的管理,根據(jù)所在組織的開發(fā)環(huán)境因素,結(jié)合不斷的管理實踐,摸索出適合各自不同開發(fā)環(huán)境需求管理的實施辦法和方式。
[1] 賁可榮,何智勇. 軟件工程:基于項目的面向?qū)ο笱芯糠椒╗M]. 北京:機械工業(yè)出版社,2009.
[2] 覃征,楊利英,高勇民,等. 軟件項目管理[M]. 北京:清華大學出版社,2004.
[3] 周之英. 現(xiàn)代軟件工程[M]. 北京:科學出版社,2000.
[4] 劉霞,李懷璋,王青,等. 基于ISO9000和CMMs的需求開發(fā)和需求管理平臺框架的研究[J]. 微電子學與計算機,2002(2):50-54.
On Process Approaches for Requirement Development and Management of Software Projects
JIA Chao
(Tianjin Science and Technology Statistics and Development Research Center,Tianjin 300051,China)
The requirement is the basis of a software development project. Owing to the characteristics of abstractness and complexity requirement development and management are particularly important in a software development project. According to studies unqualified development and management of project requirements is the main cause of the most software project failures. This paper mainly studies methods and tools in the process of software project’s requirement development and management. Through decomposition of the development and management process the activities of each process group were studied and work assignments that can guide the requirement development and management were presented.
requirement development;requirement management;change control of requirements;process method;management tool
TP311.5
:A
:1006-8945(2015)12-0049-03
①CMMI:CMMI全稱是Capability Maturity Model Integration,即軟件能力成熟度模型集成。
2015-11-03