朱明英,邢 豫,王海霞,張金娟
(中國電信股份有限公司廣東研究院 廣州510630)
需求是支撐系統(tǒng)建設的起點。從廣義的分析來看,需求來源于客戶的一些“需要”,這些“需要”被分析、確認后形成完整的文檔,該文檔詳細地說明了產(chǎn)品“必須或應當”做什么。業(yè)界對“需求”的主流定義主要分兩類。
(1)IEEE定義
IEEE的軟件工程標準詞匯表(1990年)中將需求定義為:
A.用戶解決問題或達到目標所需的條件或能力(capability);
B.系統(tǒng)或系統(tǒng)部件要滿足合同、標準、規(guī)范或其他正式規(guī)定文檔所需具有的條件或能力;
C.一種反映上面A或B所描述的條件或能力的文檔說明。
IEEE公布的定義既體現(xiàn)了用戶對需求的看法 (系統(tǒng)的外部行為),又代表了開發(fā)人員的觀點(一些深層的特性)。
(2)其他定義
著名軟件工程專家Jones于1994年給出這樣的定義:需求是“用戶所需要的并能觸發(fā)一個程序或系統(tǒng)開發(fā)工作的說明”。需求分析專家Alan Davis(1993年)對IEEE的需求概念進行了拓展:“需求是從系統(tǒng)外部能發(fā)現(xiàn)系統(tǒng)所具有的滿足于用戶的特點、功能及屬性等”。這些定義強調(diào)的是產(chǎn)品是什么樣的,而并非產(chǎn)品是怎樣設計、構(gòu)造的。Sommerville and Sawyer(1997年)認為:需求是對應該實現(xiàn)什么功能的說明。它描述了系統(tǒng)的行為、特征或?qū)傩?,是在開發(fā)過程中對系統(tǒng)的約束。
綜上所述,業(yè)界并沒有一個清晰、毫無二義性的“需求”術語存在,真正的“需求”實際上在人們的腦海中。任何文檔形式的需求(如需求規(guī)格說明)僅是一個模型,一種敘述,以確保所有項目風險承擔者在描述需求的名詞的理解上達成共識。
在系統(tǒng)開發(fā)項目中,好的需求是至關重要的。Glass R提出:“項目需求無疑是在軟件項目前期造成麻煩的一個最大原因。一個又一個的研究已經(jīng)發(fā)現(xiàn),當項目失敗時,需求問題通常正是核心問題?!盨tandish集團公司的研究報告也稱,項目失敗的10個重要原因中有5個與需求相關,其權(quán)重占整個失敗因素的51.7%。這5個需求原因主要有:不完整的需求、缺乏用戶參與、不切實際的客戶期望、需求變更頻繁、提供了不必要的功能。因此,在軟件開發(fā)過程中,必須及早、有效地發(fā)現(xiàn)和解決與需求相關的問題。
需求分析是制定需求的一種有效方法。需求分析實際上是業(yè)務分析,也就是選擇一種業(yè)務導向的線索將零散的需求串起來,形成一個體系完整、內(nèi)容清晰的框架,以指導后續(xù)的設計、開發(fā)工作。需求分析的任務是先分解,再提煉,在這個過程中消除矛盾。建模是需求分析的主要手段,通過簡化、強調(diào)來幫助需求分析人員理清思路,達成共識。
需求建模是需求分析中的重要工作。需求建模是根據(jù)待開發(fā)軟件系統(tǒng)的需求,利用某種建模方法來建立該系統(tǒng)的邏輯模型,以幫助軟件開發(fā)人員檢測軟件需求的一致性、完全性、二義性和錯誤等。
需求建模方法的要素有以下兩方面。
(1)提供描述手段
需求建模方法應該規(guī)定描述模型的手段,包括要記錄什么內(nèi)容及用什么符號來表達。在目前的需求建模方法中,主要使用自然語言、圖形符號和形式語言作為需求模型的描述手段。
(2)提供基本步驟
需求建模方法需要規(guī)定基本的實施步驟,確定每一步的目的,要產(chǎn)生什么樣的結(jié)果,每步中要注意哪些概念以及完成該步工作需要掌握哪些必要的信息和哪些輔助性的工作等。
根據(jù)需求建模方法關注重點的差異,業(yè)界主要將需求建模方法分為兩大類:面向過程的需求建模方法和面向?qū)ο蟮男枨蠼7椒ā?/p>
面向過程的需求建模通常是采用結(jié)構(gòu)化的分析方法(SA)。SA方法是由美國Yourdon公司和密歇根大學在開發(fā)ISDOS工具系統(tǒng)時提出的,是20世紀70年代中期以來比較流行和普及的需求分析技術之一。SA方法主要用于數(shù)據(jù)處理,用于分析系統(tǒng)的功能,是一種直接根據(jù)數(shù)據(jù)流劃分功能層次的分析方法。
SA方法描述手段由以下3部分組成。
·一套分層的數(shù)據(jù)流圖,主要說明系統(tǒng)由哪些部分組成以及各部分之間的聯(lián)系。
·一本詞典,對數(shù)據(jù)流圖中出現(xiàn)的每個元素提供詳細的說明。
·其他補充材料:具體的補充和修改文檔的說明。
為簡單起見,將現(xiàn)實中已存在的人工系統(tǒng)稱為當前系統(tǒng),把待開發(fā)的軟件系統(tǒng)稱為目標系統(tǒng)。SA方法的分析步驟如下。
·理解和分析當前的現(xiàn)實環(huán)境,以獲得當前系統(tǒng)的具體模型。具體模型必須忠實地反映當前系統(tǒng)的實際情況。
·建立當前系統(tǒng)的邏輯模型,從系統(tǒng)的具體模型中抽象出當前系統(tǒng)的邏輯模型,當前系統(tǒng)的邏輯模型應反映當前系統(tǒng)必須滿足的性質(zhì),即當前系統(tǒng)“做什么”。此步的作用在于除去具體模型中非本質(zhì)因素或一些具體因素。
·建立目標系統(tǒng)的邏輯模型。此步的主要工作是分析目標系統(tǒng)與當前系統(tǒng)在邏輯模型的差別,并建立目標系統(tǒng)的邏輯模型。
·進一步完善目標系統(tǒng)的邏輯模型,包括對尚未說明的處理細節(jié)的完善,如:出錯處理、系統(tǒng)的啟動和結(jié)束方式;某些需要的輸入輸出格式或用戶界面的說明;增加性能需求和其他的一些約束限制等。
面向?qū)ο笮枨蠼7椒ㄊ敲嫦驅(qū)ο蟮拈_發(fā)方法在需求建模過程中的一種應用,它屬于軟件工程的范疇。面向?qū)ο蟮男枨蠼7椒ㄖ饕校篛MT方法、Booch方法、OOSE方法、UM(unified method)方法等。
面向?qū)ο蟮男枨蠼7椒ㄖ饕褂靡恍┟枋瞿P偷膱D形工具來進行建模。在市場上已有一些公司,如Rationa1、Cayenne、Platinum等開始提供商品化的建模工具,即通常所謂的Case工具,使得建模過程實現(xiàn)了一定的自動化和標準化,并逐步走向?qū)嵱谩?/p>
面向?qū)ο笮枨蠼7椒ǖ慕2襟E如下介紹。
(1)建立對象模型
建立對象模型是在分析獲得的所有需求信息的基礎上,首先確定對象和類以及它們之間的靜態(tài)關聯(lián)。然后給類和關聯(lián)增添屬性,并利用類和對象的繼承關系等,對初步建立的對象模型進行修改和完善。建立對象模型主要包括分析需求信息、確定類與對象、確定實體間靜態(tài)關系、劃分主題、確定屬性、簡化對象模型等6個環(huán)節(jié)。對象模型的建立過程是一個反復修改、逐漸完善的過程。在建立起對象模型后,有必要對該模型進行修改,以使對象模型更加簡單和清晰。
(2)構(gòu)建動態(tài)模型
動態(tài)模型用于表達類或?qū)ο箝g所發(fā)生的動態(tài)時序關系。構(gòu)建動態(tài)模型主要包括編寫場景、設計用戶界面、建立序列圖、構(gòu)建動態(tài)模型等4個環(huán)節(jié)。
(3)構(gòu)建功能模型
功能模型主要表達系統(tǒng)內(nèi)部數(shù)據(jù)流的傳遞和處理的過程。
(4)定義類和對象中的操作
確定類和對象中的操作主要取決于該類和對象在問題中的實際作用。
從關注重點和建模要點兩方面進行分析,面向過程的需求建模方法和面向?qū)ο蟮男枨蠼7椒ǖ牟町愐姳?。
根據(jù)上面對需求建模方法的分析,在實際工作中,需要選取適當?shù)男枨蠼7椒?,按需要的樣式對系統(tǒng)進行可視化,給出一個指導系統(tǒng)構(gòu)造的模板以及將建模的內(nèi)容進行文檔化。
在需求建模的實際應用中,提取了關鍵的幾個建模環(huán)節(jié)進行分析。這些環(huán)節(jié)主要有以下兩個。
·業(yè)務建模:業(yè)務主題域分析、上下文關系分析、業(yè)
務流程建模等。
·系統(tǒng)建模:系統(tǒng)用例建模、界面建模等。
下面對需求建模的幾個關鍵點進行舉例說明。
業(yè)務建模的第一步是對目標系統(tǒng)的主題域進行分析。TMF(電信管理論壇)所提出的eTOM(擴展的電信運營模型)中,對主題域進行了劃分,如圖1所示。
表1 兩種需求建模方法的比較
根據(jù)中國電信提出的CTG-MBOSS體系,其功能和系統(tǒng)架構(gòu)由管理支撐系統(tǒng)(MSS)、業(yè)務支撐系統(tǒng)(BSS)、運營支撐系統(tǒng)(OSS)和企業(yè)數(shù)據(jù)模型(EDA)等部分構(gòu)成。其中,業(yè)務支撐系統(tǒng)主要包含CRM和計費兩大核心主題功能域。在中國電信的CTG-MBOSS規(guī)范中明確了CRM系統(tǒng)在eTOM中的定位,即CRM系統(tǒng)包含eTOM模型中的下列模塊;
·客戶關系管理中的運營支持與就緒、服務開通與服務保障和部分的服務計費功能(收費前端);
·供應商/合作伙伴關系管理中的運營支持與就緒、服務開通和服務保障部分;
·營銷與提供管理中產(chǎn)品生命周期管理部分。
確定了CRM主題域之后,就可以確定CRM系統(tǒng)的上下文關系,劃分出CRM系統(tǒng)與其他系統(tǒng)的功能邊界,確定CRM系統(tǒng)和其他系統(tǒng)的交互關系,進而設計CRM系統(tǒng)和其他系統(tǒng)之間的接口方案。
對關鍵業(yè)務進行業(yè)務流程建模,是業(yè)務建模的重要環(huán)節(jié)之一。下面以固定電話類產(chǎn)品的新裝業(yè)務為例,采用UML序列圖建模工具,建立固定電話新裝業(yè)務的流程,如圖2所示。
系統(tǒng)建模主要包括界面建模和系統(tǒng)用例建模。界面建模主要是對信息在界面表達方式以及系統(tǒng)與用戶交互方式的建模。界面建模對于用戶及開發(fā)團隊來講更直觀、更容易理解。業(yè)界有很多專用工具可以用來進行界面建模 , 如Balsamiq mockups、Pencil project、Axure RP pro、DENIM等。
系統(tǒng)用例建模主要包括系統(tǒng)用例以及用例描述。系統(tǒng)用例建模是根據(jù)業(yè)務用例建模結(jié)果,分離出與系統(tǒng)相關的業(yè)務角色,即系統(tǒng)角色。對系統(tǒng)角色與其所使用的功能進行關聯(lián),就可以得出系統(tǒng)用例模型。在用例模型的基礎上,對每個系統(tǒng)用例進行詳細的用例描述。下面針對固定電話新裝業(yè)務流程,完成系統(tǒng)用例建模,用例描述見表2。
本文通過對業(yè)界兩種主流需求建模方法的分析,根據(jù)電信支撐系統(tǒng)的特點,提取了適合于在電信支撐系統(tǒng)中進行需求建模的關鍵要素,并給出了在電信支撐系統(tǒng)中進行需求建模的具體步驟,并列舉了實際需求分析工作中的應用范例。通過需求建模方法在支撐系統(tǒng)需求分析中的廣泛應用,提升了支撐系統(tǒng)的需求分析水平,為系統(tǒng)的快速開發(fā)提供了指導意義。
表2 系統(tǒng)用例描述模板
1毋國慶,梁正平,袁夢霆,等.軟件需求工程.北京:機械工業(yè)出版社,2008
2(美)Alistair Cockburn.王雷,張莉譯.編寫有效用例.北京:機械工業(yè)出版社,2002
3(美)Philippe Kruchten著.Rational統(tǒng)一過程引論.北京:機械工業(yè)出版社,2002
4中國電信CTG-MBOSS系列規(guī)范集
5 Business process framework(eTOM)Release 8.0,http://www.tmforum.org