朱明英,邢 豫,王海霞,張金娟
(中國電信股份有限公司廣東研究院 廣州510630)
需求是支撐系統建設的起點。從廣義的分析來看,需求來源于客戶的一些“需要”,這些“需要”被分析、確認后形成完整的文檔,該文檔詳細地說明了產品“必須或應當”做什么。業界對“需求”的主流定義主要分兩類。
(1)IEEE定義
IEEE的軟件工程標準詞匯表(1990年)中將需求定義為:
A.用戶解決問題或達到目標所需的條件或能力(capability);
B.系統或系統部件要滿足合同、標準、規范或其他正式規定文檔所需具有的條件或能力;
C.一種反映上面A或B所描述的條件或能力的文檔說明。
IEEE公布的定義既體現了用戶對需求的看法 (系統的外部行為),又代表了開發人員的觀點(一些深層的特性)。
(2)其他定義
著名軟件工程專家Jones于1994年給出這樣的定義:需求是“用戶所需要的并能觸發一個程序或系統開發工作的說明”。需求分析專家Alan Davis(1993年)對IEEE的需求概念進行了拓展:“需求是從系統外部能發現系統所具有的滿足于用戶的特點、功能及屬性等”。這些定義強調的是產品是什么樣的,而并非產品是怎樣設計、構造的。Sommerville and Sawyer(1997年)認為:需求是對應該實現什么功能的說明。它描述了系統的行為、特征或屬性,是在開發過程中對系統的約束。
綜上所述,業界并沒有一個清晰、毫無二義性的“需求”術語存在,真正的“需求”實際上在人們的腦海中。任何文檔形式的需求(如需求規格說明)僅是一個模型,一種敘述,以確保所有項目風險承擔者在描述需求的名詞的理解上達成共識。
在系統開發項目中,好的需求是至關重要的。Glass R提出:“項目需求無疑是在軟件項目前期造成麻煩的一個最大原因。一個又一個的研究已經發現,當項目失敗時,需求問題通常正是核心問題。”Standish集團公司的研究報告也稱,項目失敗的10個重要原因中有5個與需求相關,其權重占整個失敗因素的51.7%。這5個需求原因主要有:不完整的需求、缺乏用戶參與、不切實際的客戶期望、需求變更頻繁、提供了不必要的功能。因此,在軟件開發過程中,必須及早、有效地發現和解決與需求相關的問題。
需求分析是制定需求的一種有效方法。需求分析實際上是業務分析,也就是選擇一種業務導向的線索將零散的需求串起來,形成一個體系完整、內容清晰的框架,以指導后續的設計、開發工作。需求分析的任務是先分解,再提煉,在這個過程中消除矛盾。建模是需求分析的主要手段,通過簡化、強調來幫助需求分析人員理清思路,達成共識。
需求建模是需求分析中的重要工作。需求建模是根據待開發軟件系統的需求,利用某種建模方法來建立該系統的邏輯模型,以幫助軟件開發人員檢測軟件需求的一致性、完全性、二義性和錯誤等。
需求建模方法的要素有以下兩方面。
(1)提供描述手段
需求建模方法應該規定描述模型的手段,包括要記錄什么內容及用什么符號來表達。在目前的需求建模方法中,主要使用自然語言、圖形符號和形式語言作為需求模型的描述手段。
(2)提供基本步驟
需求建模方法需要規定基本的實施步驟,確定每一步的目的,要產生什么樣的結果,每步中要注意哪些概念以及完成該步工作需要掌握哪些必要的信息和哪些輔助性的工作等。
根據需求建模方法關注重點的差異,業界主要將需求建模方法分為兩大類:面向過程的需求建模方法和面向對象的需求建模方法。
面向過程的需求建模通常是采用結構化的分析方法(SA)。SA方法是由美國Yourdon公司和密歇根大學在開發ISDOS工具系統時提出的,是20世紀70年代中期以來比較流行和普及的需求分析技術之一。SA方法主要用于數據處理,用于分析系統的功能,是一種直接根據數據流劃分功能層次的分析方法。
SA方法描述手段由以下3部分組成。
·一套分層的數據流圖,主要說明系統由哪些部分組成以及各部分之間的聯系。
·一本詞典,對數據流圖中出現的每個元素提供詳細的說明。
·其他補充材料:具體的補充和修改文檔的說明。
為簡單起見,將現實中已存在的人工系統稱為當前系統,把待開發的軟件系統稱為目標系統。SA方法的分析步驟如下。
·理解和分析當前的現實環境,以獲得當前系統的具體模型。具體模型必須忠實地反映當前系統的實際情況。
·建立當前系統的邏輯模型,從系統的具體模型中抽象出當前系統的邏輯模型,當前系統的邏輯模型應反映當前系統必須滿足的性質,即當前系統“做什么”。此步的作用在于除去具體模型中非本質因素或一些具體因素。
·建立目標系統的邏輯模型。此步的主要工作是分析目標系統與當前系統在邏輯模型的差別,并建立目標系統的邏輯模型。
·進一步完善目標系統的邏輯模型,包括對尚未說明的處理細節的完善,如:出錯處理、系統的啟動和結束方式;某些需要的輸入輸出格式或用戶界面的說明;增加性能需求和其他的一些約束限制等。
面向對象需求建模方法是面向對象的開發方法在需求建模過程中的一種應用,它屬于軟件工程的范疇。面向對象的需求建模方法主要有:OMT方法、Booch方法、OOSE方法、UM(unified method)方法等。
面向對象的需求建模方法主要使用一些描述模型的圖形工具來進行建模。在市場上已有一些公司,如Rationa1、Cayenne、Platinum等開始提供商品化的建模工具,即通常所謂的Case工具,使得建模過程實現了一定的自動化和標準化,并逐步走向實用。
面向對象需求建模方法的建模步驟如下介紹。
(1)建立對象模型
建立對象模型是在分析獲得的所有需求信息的基礎上,首先確定對象和類以及它們之間的靜態關聯。然后給類和關聯增添屬性,并利用類和對象的繼承關系等,對初步建立的對象模型進行修改和完善。建立對象模型主要包括分析需求信息、確定類與對象、確定實體間靜態關系、劃分主題、確定屬性、簡化對象模型等6個環節。對象模型的建立過程是一個反復修改、逐漸完善的過程。在建立起對象模型后,有必要對該模型進行修改,以使對象模型更加簡單和清晰。
(2)構建動態模型
動態模型用于表達類或對象間所發生的動態時序關系。構建動態模型主要包括編寫場景、設計用戶界面、建立序列圖、構建動態模型等4個環節。
(3)構建功能模型
功能模型主要表達系統內部數據流的傳遞和處理的過程。
(4)定義類和對象中的操作
確定類和對象中的操作主要取決于該類和對象在問題中的實際作用。
從關注重點和建模要點兩方面進行分析,面向過程的需求建模方法和面向對象的需求建模方法的差異見表1。
根據上面對需求建模方法的分析,在實際工作中,需要選取適當的需求建模方法,按需要的樣式對系統進行可視化,給出一個指導系統構造的模板以及將建模的內容進行文檔化。
在需求建模的實際應用中,提取了關鍵的幾個建模環節進行分析。這些環節主要有以下兩個。
·業務建模:業務主題域分析、上下文關系分析、業
務流程建模等。
·系統建模:系統用例建模、界面建模等。
下面對需求建模的幾個關鍵點進行舉例說明。
業務建模的第一步是對目標系統的主題域進行分析。TMF(電信管理論壇)所提出的eTOM(擴展的電信運營模型)中,對主題域進行了劃分,如圖1所示。

表1 兩種需求建模方法的比較


根據中國電信提出的CTG-MBOSS體系,其功能和系統架構由管理支撐系統(MSS)、業務支撐系統(BSS)、運營支撐系統(OSS)和企業數據模型(EDA)等部分構成。其中,業務支撐系統主要包含CRM和計費兩大核心主題功能域。在中國電信的CTG-MBOSS規范中明確了CRM系統在eTOM中的定位,即CRM系統包含eTOM模型中的下列模塊;
·客戶關系管理中的運營支持與就緒、服務開通與服務保障和部分的服務計費功能(收費前端);
·供應商/合作伙伴關系管理中的運營支持與就緒、服務開通和服務保障部分;
·營銷與提供管理中產品生命周期管理部分。
確定了CRM主題域之后,就可以確定CRM系統的上下文關系,劃分出CRM系統與其他系統的功能邊界,確定CRM系統和其他系統的交互關系,進而設計CRM系統和其他系統之間的接口方案。
對關鍵業務進行業務流程建模,是業務建模的重要環節之一。下面以固定電話類產品的新裝業務為例,采用UML序列圖建模工具,建立固定電話新裝業務的流程,如圖2所示。
系統建模主要包括界面建模和系統用例建模。界面建模主要是對信息在界面表達方式以及系統與用戶交互方式的建模。界面建模對于用戶及開發團隊來講更直觀、更容易理解。業界有很多專用工具可以用來進行界面建模 , 如Balsamiq mockups、Pencil project、Axure RP pro、DENIM等。
系統用例建模主要包括系統用例以及用例描述。系統用例建模是根據業務用例建模結果,分離出與系統相關的業務角色,即系統角色。對系統角色與其所使用的功能進行關聯,就可以得出系統用例模型。在用例模型的基礎上,對每個系統用例進行詳細的用例描述。下面針對固定電話新裝業務流程,完成系統用例建模,用例描述見表2。
本文通過對業界兩種主流需求建模方法的分析,根據電信支撐系統的特點,提取了適合于在電信支撐系統中進行需求建模的關鍵要素,并給出了在電信支撐系統中進行需求建模的具體步驟,并列舉了實際需求分析工作中的應用范例。通過需求建模方法在支撐系統需求分析中的廣泛應用,提升了支撐系統的需求分析水平,為系統的快速開發提供了指導意義。

表2 系統用例描述模板
1毋國慶,梁正平,袁夢霆,等.軟件需求工程.北京:機械工業出版社,2008
2(美)Alistair Cockburn.王雷,張莉譯.編寫有效用例.北京:機械工業出版社,2002
3(美)Philippe Kruchten著.Rational統一過程引論.北京:機械工業出版社,2002
4中國電信CTG-MBOSS系列規范集
5 Business process framework(eTOM)Release 8.0,http://www.tmforum.org