宋勇強(qiáng)
(山西大眾電子信息產(chǎn)業(yè)集團(tuán)有限公司,山西 太原 030024)
UML是軟件和系統(tǒng)開發(fā)的標(biāo)準(zhǔn)建模語言。任何大規(guī)模的系統(tǒng)設(shè)計都是相當(dāng)困難的。從簡單的桌面應(yīng)用程序到完整的多層企業(yè)系統(tǒng),任何系統(tǒng)都可以分解為成百上千乃至成千上萬的軟件和硬件組成。如何確定需要哪些組件?每個組件的職責(zé)及其如何滿足客戶的需求?再進(jìn)一步,如何與同事共享設(shè)計,以確保各個部件能夠無縫地協(xié)作?在開發(fā)復(fù)雜系統(tǒng)時,如何缺乏相應(yīng)的幫助,容易曲解或遺忘的技術(shù)細(xì)節(jié)實在太多,而這正是UML出現(xiàn)的原因。軟件需求規(guī)格說明是對分析和綜合過程的結(jié)果描述,它包含了軟件的功能、性能、接口、有效性等需求的描述信息。在軟件需求規(guī)格說明中充分應(yīng)用UML用例,有利于在各個環(huán)節(jié)間確立溝通的標(biāo)準(zhǔn),便于系統(tǒng)文檔的制定和項目的管理[1]。
下面以某設(shè)備管理軟件的需求規(guī)格說明分析為例描述UML在需求分析中的應(yīng)用,以下簡稱上位機(jī)軟件,本軟件主要功能為接收顯示四個上裝設(shè)備(包括兩個車載設(shè)備、兩個便攜式設(shè)備)的測量信息,能夠查詢和設(shè)置設(shè)備的參數(shù),能夠?qū)υO(shè)備進(jìn)行控制,能夠手動對設(shè)備進(jìn)行自檢以及設(shè)備開機(jī)自動上報自檢結(jié)果,設(shè)備能夠自動上報故障以及工作狀態(tài)。軟件和不同設(shè)備之間有共性功能,也有獨立功能,軟件對收到的測量結(jié)果分析處理后,需打包發(fā)送給上級測量軟件,本軟件需求見表1。
表1 軟件需求表
明確了軟件功能以后,就要分析軟件的外部接口,以便于接下來區(qū)分主執(zhí)行者、輔助執(zhí)行者以及區(qū)分用例。本軟件外部接口主要是設(shè)備和上級。軟件接口圖如圖1。
圖1 軟件外部接口圖
軟件接口的詳細(xì)數(shù)據(jù)描述如表2。
表2 接口數(shù)據(jù)圖
當(dāng)軟件的功能以及接口都確定以后,就可以根據(jù)功能以及接口詳細(xì)劃分用例,用例在UML建模中是最重要的一個因素。官方文檔對用例的定義是:用例定義了一組用例實例,其中每個實例都是系統(tǒng)所執(zhí)行的一系列操作,這些操作生成特定主角可以觀測的值,這個如果不容易理解的話,我們可以換個說法,一個用例就是與參與者交互的,并且給參與者提供可觀測意義的結(jié)果的一系列活動的組合。這個說話應(yīng)當(dāng)更清楚一些。所謂的用例就是一件事情,要完整這件事情,需要做一系列活動。而做一件事情可以有很多不同的方法和步驟,也可能會遇到各種各樣的意外情況,因此這件事是由很多種不同情況的集合構(gòu)成的。在UML中稱之為用例場景,一個場景就是一個用例的實例[1]。
一般一個軟件往往只畫一個用例圖,用例圖用一個矩形框包含所有用例,左邊為主執(zhí)行者、右邊為輔助執(zhí)行者,空箭頭表示包含,本軟件的用例圖如圖2所示。
圖2 軟件用例圖
查詢光譜儀測量結(jié)果用例是指軟件向光譜儀發(fā)送測量結(jié)果命令,光譜儀收到命令以后向軟件上報測量結(jié)果,用例要從用戶和軟件自身角度去考慮問題,而不是用程序員的思維去考慮具體如何實現(xiàn),對于此用例,明確參與者,即主執(zhí)行者是操作員,操作員點擊查詢測量結(jié)果后,激發(fā)一系列的操作,其中光譜儀必定是輔助執(zhí)行者,而完成的用例就是查詢光譜儀測量結(jié)果,用用例表表示如表3。
表3 查詢光譜儀測量結(jié)果用例表
發(fā)送自檢命令用例是指軟件向設(shè)備發(fā)送自檢命令,設(shè)備收到命令以后向軟件上報自檢結(jié)果,對于此用例,明確參與者,即主執(zhí)行者是操作員,操作員點擊軟件自檢命令后,激發(fā)一系列的操作,其中設(shè)備是輔助執(zhí)行者,而完成的用例就是發(fā)送自檢命令用例
設(shè)置設(shè)備參數(shù)用例是指軟件向設(shè)備發(fā)送設(shè)置參數(shù)命令,設(shè)置收到命令對參數(shù)進(jìn)行設(shè)置,其中主執(zhí)行者為操作員,輔助執(zhí)行者為設(shè)備。
查詢設(shè)備參數(shù)用例是指軟件向設(shè)備發(fā)送參數(shù)查詢命令,設(shè)備收到命令以后向軟件上報所查詢的參數(shù),軟件收到參數(shù)進(jìn)行顯示,主執(zhí)行者是操作員,輔助執(zhí)行者為設(shè)備。
控制升氣象用例是指軟件向氣象儀發(fā)送升氣象控制命令,氣象儀收到命令以后按照指令進(jìn)行升氣象操作,主執(zhí)行者是操作員,輔助執(zhí)行者為氣象儀。
處理測量結(jié)果用例是指軟件接收處理設(shè)備發(fā)送的測量結(jié)果,這個用例比較特殊,主執(zhí)行者是設(shè)備,而因為要向上級上報數(shù)據(jù),所以上級為輔助執(zhí)行者。
接收自檢結(jié)果用例是指設(shè)備開機(jī)向軟件上報自檢結(jié)果,軟件顯示自檢結(jié)果。雖然都是完成自檢功能,但是因為主執(zhí)行者不同,所以要和命令自檢用例進(jìn)行區(qū)分。此用例主執(zhí)行者為設(shè)備,無輔助執(zhí)行者。
通過UML用例圖來表示軟件需求,不僅能夠把軟件的真正需求表達(dá)的更加清晰,而且能夠從用戶角度真正的表達(dá)用戶到底想要什么,需要軟件做什么,達(dá)到什么功能,一個好的需求設(shè)計文檔有助于開發(fā)人員根據(jù)需求進(jìn)行下一步的詳細(xì)設(shè)計工作,更有利于測試人員直接按用例表編寫測試用例,所以UML用例圖在需求規(guī)格說明文檔中的作用是必不可少的。