摘要:統(tǒng)一建模語言(UML)是一個通用的可視化語言,它是隨著面向對象的發(fā)展建立起來,具有很寬的應用領域。知識管理也漸漸應用到軟件工程中,在軟件開發(fā)團隊對客戶潛在需求挖掘、融合、創(chuàng)新的過程中起到重要作用。本文首先對UML建模作了簡要概述,探討了建模過程中的問題,最后將UML建模與知識管理結合起來分析軟件需求中產生的問題。
關鍵詞:軟件需求 UML 知識管理
引言
軟件需求是整個軟件開發(fā)項目的最原始最關鍵的一個輸入元素。需求是產品的根源,如果項目范圍描述不清楚,將直接導致項目成本增加、產品質量下降、項目交付日期推后,甚至項目徹底失敗。UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它融入了軟件工程領域的新思想、新方法和新技術。UML提供了9種圖,其中用例圖最為適合需求分析的建模表示,用例圖可視化地表達系統(tǒng)的需求,以用例表達系統(tǒng)需求具備的直觀、規(guī)范等優(yōu)點,克服了系統(tǒng)需求的純文字性說明的不足之處,是面向對象開發(fā)方法中系統(tǒng)需求表達的一種有效手段。
1. UML需求建模的基本內容
1.1 行為者和用例
行為者是指所有與系統(tǒng)交互的人或事物,行為者只代表一種角色,并不特指某個人或事物,同樣,一個人或事物可在不同的行為下成為不同的行為者。行為者的作用是與用例交換信息,激活用例,從而實現(xiàn)某個操作功能。用例代表系統(tǒng)所完成的一種功能是用戶與計算機之間為達到某個目的的一次典型交互,它用來描繪系統(tǒng)外在的可見情況。基于用例的軟件需求建模是以用例為主導線索捕獲和描述軟件需求的過程,它提供了收集需求的框架和表達需求的方法。
1.2 UML建模概念及過程
軟件需求建模是指用清晰、簡明的方式將需求分析獲得的信息記錄下來的過程,建模的結果通常是一個邏輯模型。需求建模的方法不同,所獲得的邏輯模型亦不同。UML軟件需求建模是基于用例的建模,建模的結果一般包括一組用例模型及其相關描述等。
一般來說,建模過程要經過三個階段:需求獲取,需求分析,需求描述。
(1)需求的獲取階段主要工作是由領域專家、需求分析師、用戶等各方面人員對企業(yè)的業(yè)務過程進行標準化與規(guī)范化的定義,去粗取精,創(chuàng)建功能需求的集合,描述系統(tǒng)的行為,形成概要的需求說明。
(2)需求分析的主要任務是確定系統(tǒng)邊界,領導協(xié)調需求,抽取用例,定義什么是系統(tǒng)該做的,什么是不該做的,同時確定非功能需求,設計用戶界面,從而對需求調研結果達成一致。
(3)當獲得詳細的需求分析結果之后,必須把這些信息記錄下來,并使用相關符號來表達它們,這個過程稱為需求描述。使用符號和文字的描述,可以創(chuàng)建許多不同類型的模型,以用例為基礎的需求建模創(chuàng)建的是一個用例模型,它指明了系統(tǒng)的主要功能。需求建模的持續(xù)過程可能會依據特定的開發(fā)過程不同而異,在迭代開發(fā)過程中,需要不斷地迭代;在瀑布開發(fā)過程中,則會持續(xù)一個較長、較完整的階段。
2. 建模過程中的問題
建模過程中需求獲取是最困難,也是最容易出錯的地方。一般情況下,客戶不熟悉軟件工程和軟件建模的知識,對所提出的問題往往是模糊的,有些甚至是不可能實現(xiàn)的。同時,系統(tǒng)分析員雖然擁有計算機的知識及軟件建模技術,但是對客戶領域知識不勝了解,往往對同一問題的描述有不同的理解,導致需求模型的建立失敗。另外,對有關的需求分析和需求描述的不詳盡、不確切導致系統(tǒng)設計的困難增加,有時必須返回軟件需求階段。
3. 解決問題
UML建模開始是從用例分析開始的,用例轉變了需求開發(fā)的角度,傳統(tǒng)的需求獲取方式是詢問用戶他們需要用系統(tǒng)做什么,而現(xiàn)在則是討論用戶需要實現(xiàn)什么。用例法的目標是描述用戶需要通過系統(tǒng)執(zhí)行的所有工作。用例圖提供了對用戶需求的高級可視化表示,讓用戶清楚、直觀地明白系統(tǒng)是否完成所需要的功能。因此,用例的獲取是關鍵。
3.1 用例獲取是與顧客的溝通過程,需要領域專家,客戶負責人,系統(tǒng)分析員三方的參加。
領域專家:豐富的領域知識,熟悉本行業(yè)的業(yè)務流程及安全性要求,能夠提供完整領域知識,對需求分析結果的正確性進行驗證,提出更改的合理建議,并能夠對業(yè)務流程的優(yōu)化提出合理的建議。
客戶負責人:熟悉本企業(yè)的業(yè)務流程,具有一定的決斷權和較強的協(xié)調能力,能夠提供基本的業(yè)務流程和需求,協(xié)調各部門提供必要的、專業(yè)的業(yè)務操作過程;提供基本的業(yè)務流程和需求,協(xié)調各部門與系統(tǒng)分析員的關系,使其提供更加具體的需求及業(yè)務流程,和領域專家一起對需求分析結果的正確性進行驗證。
系統(tǒng)分析員:熟悉UML中的各種視圖,具有豐富的建模經驗和較強的溝通能力,引導用戶積極參與到系統(tǒng)需求分析的全過程中來,充分挖掘需求,對用戶需求從多角度進行分析建模,得到完整的需求模型。
用例獲取及建模是多方交流的過程,要想建立一個好的需求模型就需要充分挖掘用戶的潛在需求,這實際也是一個知識流動從隱性到顯性的過程。多數軟件研究領域和從事軟件開發(fā)的專家認為,需求獲取只有通過有效的客戶——開發(fā)者的合作才能成功,減少合作中的障礙,客戶的參與直接與需求獲取的結果有關,沒有參與就沒有結果,而被動參與會產生不良結果。事實上,這是挖掘客戶的潛在與需求相關知識的過程,再與各類軟件開發(fā)人員的經驗、專業(yè)知識相融合,從而產生出客戶真正期望的需求,這樣可以減少軟件開發(fā)過程中的需求更換,提高客戶的滿意度及項目成功率。知識庫的建立對軟件需求的復用有著重要的影響,用戶所提出的要求中往往有很多是類似的,這時從知識庫中提取相應的解決方案將節(jié)省很多時間,同時對用戶所描述模糊的問題,可以從知識庫中找出與用戶相關的業(yè)務領域流程進行分析對比,從而明確用戶的問題要求,因此,我們可以在建立知識庫的基礎上進行用例獲取。在建立知識庫中要注意知識的表達與存儲、知識的分類與檢索、知識分析和知識應用。這里不作過多的分析,我們主要應用用戶的業(yè)務領域的知識,通過建立業(yè)務領域的工作流程知識庫可以幫助系統(tǒng)分析員更加有效地理解用戶需求,分析用戶所需要的東西。知識庫的建立是一個逐漸累加的過程,需要知識和經驗的積累,可以通過領域專家和分析員合作對用戶業(yè)務領域工作流程加以分類、分析、整理,逐步加入到知識庫中去。
3.2 在對業(yè)務流程進行分析時我們可以將知識分為以下幾類:
業(yè)務背景:每個行業(yè)都有不同的特點對產品的要求也不相同,對業(yè)務所處的環(huán)境、歷史等等進行描述。
業(yè)務需求:業(yè)務需求描述客戶和開發(fā)組織希望從產品中獲得的商業(yè)利益,如財務收入、市場份額。
業(yè)務規(guī)則:特定用戶在特定條件下才能執(zhí)行某一動作,也就是對業(yè)務某個方面進行定義或約束的語句。業(yè)務規(guī)則用于聲明業(yè)務結構,或者控制影響業(yè)務的行為。

3.3 上圖詳盡地描述了用例獲取的方法,我們這里在對關鍵步驟進行一下詳細說明:
1. 用戶提出想要實現(xiàn)的基本功能,交給分析員和領域專家。系統(tǒng)分析員通過和領域專家商討結合知識庫中已有的業(yè)務流程挖掘出用戶想要實現(xiàn)的隱含功能,形成一個總體框架反饋給用戶,由用戶進行確認。同時,領域專家對用戶提出的要求分類整理,充實知識庫。用戶、分析員、領域專家結合知識庫反復論證以確定用戶的業(yè)務流程所真正要實現(xiàn)的功能。
2. 確定用戶所要表達的真正業(yè)務流程,對它進行分析,一般情況下用特定的場景來描述業(yè)務流程,分析有哪些行為者參與到了哪些場景中,提取出行為者。并且確定出行為者有哪些行為、場景之間的相互關聯(lián),做出必要的文檔和圖形描述。
3. 在前兩步的基礎上通過行為者的必要行為描述,確定哪些外部行為是系統(tǒng)必須響應的,將參與的行為者和特定的用例關聯(lián)起來。初步建立出用例的集合,得到系統(tǒng)的用例圖模型。首先必須劃清系統(tǒng)的邊界。任何構成系統(tǒng)的部件都作為該系統(tǒng)的內部要素,而與之存在交互的其他子系統(tǒng),或者要求該系統(tǒng)提供服務,或者向該系統(tǒng)提供服務。
4. 在得出系統(tǒng)得用例圖模型后,對每個用例進行描述,分析功能性需求,驗證通過后反饋給用戶,由用戶進行確認,反復修改。
總結
需求分析是整個軟件工程的基礎,只有在確切了解客戶到底需要些什么后才有可能寫出高質量的軟件,這需要客戶和軟件設計人員充分地溝通。知識庫的加入為客戶和設計人員之間搭起一座橋梁,同時UML作為一種強大的圖形化建模語言,是理想的需求描述和建模分析工具,對大規(guī)模的、復雜的、不斷變化的用戶需求有著很強的控制力。兩者有效地結合起來對客戶要求和軟件功能的設計起到良好的效果。
參考文獻:
[1]Benjamin L.Kovitz Practical Software Requirements AManual of ContentStyle 機械工業(yè)出版社,2005-1.
[2]KarlE.Wiegers.軟件需求.清華大學出版社,2004.
[3]盧瀟.軟件工程.清華大學出版社.
[4]李曉明.基于知識管理的軟件需求研究.研究與發(fā)展管理,第17卷第2期,2005-4.
[5]邸強等.企業(yè)知識庫的構建和管理研究.情報科學,第23卷第7期,2005-7.
[6]徐建民等.一種基于UML的信息系統(tǒng)需求分析方法.河北大學學報,第25卷第2期.2005-3.