王勇,姜懿芮,徐志穎,姜俊
(1.駐馬店市農(nóng)業(yè)科學(xué)院,河南駐馬店 463000;2.鄭州大學(xué)信息工程學(xué)院,河南鄭州 450002;3.鄭州大學(xué)國際學(xué)院,河南鄭州 450002)
20 世紀(jì)90 年代以來,設(shè)施農(nóng)業(yè)在我國發(fā)展迅速,特別是節(jié)能日光溫室蔬菜種植面積一直在擴(kuò)大。隨著智能農(nóng)業(yè)信息技術(shù)在溫室蔬菜生產(chǎn)中的應(yīng)用,設(shè)施農(nóng)業(yè)現(xiàn)代化步伐加快[1-2]。對日光溫室蔬菜生產(chǎn)系統(tǒng)進(jìn)行智能化建模管理,建立統(tǒng)一建模語言(UML)模型,能夠?qū)崿F(xiàn)對蔬菜從種到收的全程智能化控制,為智能化農(nóng)業(yè)生產(chǎn)開辟新的路徑,推動精準(zhǔn)設(shè)施農(nóng)業(yè)的發(fā)展[3-6]。
溫室系統(tǒng)結(jié)構(gòu)復(fù)雜,主要由蔬菜數(shù)據(jù)采集系統(tǒng)、溫室大棚視頻監(jiān)控系統(tǒng)、溫室大棚遠(yuǎn)程控制系統(tǒng)等組成[7-8],且在智能化建模過程中,不同的子模塊中存在不一致的問題,因此探究溫室蔬菜系統(tǒng)智能化建模存在的問題,對模型進(jìn)行檢測,處理模型中的一致性問題顯得尤為重要,目前這方面的研究較少[10-12],這對現(xiàn)代農(nóng)業(yè)發(fā)展極為不利。鑒于此,本文研究了日光溫室蔬菜系統(tǒng)的模型檢測原理,利用抽象規(guī)則實(shí)現(xiàn)了溫室蔬菜系統(tǒng)的檢測,以期解決日光溫室蔬菜系統(tǒng)建模中出現(xiàn)的各類問題,使得模型建立更加高效、便捷。
模型檢測研究基于統(tǒng)一建模語言(UML),在一個項(xiàng)目下的不同UML 圖中的相關(guān)信息應(yīng)該是一致的。在模型驅(qū)動工程(MDE)中,需要檢測圖表以及圖與圖之間的一致性。對于給定的軟件項(xiàng)目提出要求,在日光溫室蔬菜系統(tǒng)模型中,設(shè)計出兩個不同溫室嵌入式系統(tǒng)的UML 用例圖(見圖1)和UML 活動圖(見圖2)。在溫室用例圖1 中,用于描述蔬菜R 的信息(INFO1);在溫室活動圖2 中,控制模塊(CMod)用于描述R 的信息傳遞(INFO1)。
智能化的模型中,各種模塊系統(tǒng)出現(xiàn)的內(nèi)容不一致,需要檢測這些不一致的內(nèi)容,并且力爭減少這些不一致。如果一個系統(tǒng)是龐大而復(fù)雜的,圖表可能會非常大。模型轉(zhuǎn)換是MDE 的重要組成部分。UML 類圖的抽象規(guī)則是將低級類圖轉(zhuǎn)換為高級類圖。大多數(shù)現(xiàn)有模型抽象方法適用于用戶決定的幾個關(guān)鍵場景。根據(jù)對模型中實(shí)體重要性的理解,利用這些關(guān)鍵實(shí)體表示其他實(shí)體,然后通過關(guān)系抽象實(shí)現(xiàn)模型的抽象。
在日光溫室蔬菜系統(tǒng)中,得到兩個環(huán)境參數(shù)數(shù)據(jù)之間的直接關(guān)系,需要通過抽象規(guī)則分析這兩組數(shù)據(jù)之間的路徑。日光溫室蔬菜系統(tǒng)UML 模型圖使用分類器抽象的方法,利用關(guān)系抽象規(guī)則抽象類圖中的關(guān)系,發(fā)現(xiàn)兩種關(guān)系之間的聯(lián)系,將兩種關(guān)系抽象為一種關(guān)系。關(guān)系抽象使用規(guī)則抽象類圖,將低層類圖抽象為高層類圖。
關(guān)系抽象和分類器抽象的語法。分類器抽象的語法如P1:[類×(關(guān)系)×類→類]。例如,如果在日光溫室蔬菜數(shù)據(jù)采集系統(tǒng)和溫室傳感器節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)中,根據(jù)語法的關(guān)系,可以將場景抽象為類(蔬菜數(shù)據(jù)A)。關(guān)系抽象的語法是P2:[(關(guān)系)×類×(關(guān)系)→關(guān)系]。根據(jù)溫室傳感器節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng),如果在情景中環(huán)境溫度數(shù)據(jù)和光照數(shù)據(jù)有關(guān)系,蔬菜大棚管理人員和種植戶有關(guān)系。描述蔬菜、溫室蔬菜和日光溫室蔬菜之間的關(guān)系,日光溫室蔬菜是一種溫室蔬菜,溫室蔬菜是一種蔬菜。日光溫室蔬菜系統(tǒng)的場景描述為S1:[蔬菜×(泛化)×溫室蔬菜×(泛化)×日光溫室蔬菜]。在圖3 中,通過使用分類器語法:[日光溫室蔬菜×(泛化)×溫室蔬菜→蔬菜],抽象了日光溫室蔬菜系統(tǒng)的場景S1,得到了描述日光溫室蔬菜和溫室蔬菜的抽象場景,根據(jù)關(guān)系抽象規(guī)則:[(泛化)×類×(泛化)→泛化],我們得到泛化關(guān)系。最后將可以得到描述人類和動物的抽象場景,根據(jù)關(guān)系抽象規(guī)則:[蔬菜×(泛化)×溫室蔬菜],關(guān)系抽象意味著模型通過關(guān)系抽象規(guī)則而不是分類器抽象規(guī)則進(jìn)行抽象。關(guān)系抽象用于獲得類圖的高級抽象,而分類器抽象用于抽象路徑。
圖4 中的上半部分表示了日光溫室蔬菜系統(tǒng)分類器抽象的輸入和輸出。圖4 中上部匹配了日光溫室蔬菜系統(tǒng)分類器抽象P1 的語法:[類蔬菜溫度數(shù)據(jù)×(關(guān)聯(lián))×類蔬菜光照數(shù)據(jù)→類]。圖中下半部分表示關(guān)系的輸入和輸出,與日光溫室蔬菜系統(tǒng)下部匹配關(guān)系抽象語法P2:[(關(guān)聯(lián))×蔬菜溫度數(shù)據(jù)×(關(guān)聯(lián))→關(guān)聯(lián)],如果輸入[(關(guān)聯(lián)1)×類蔬菜溫度數(shù)據(jù)×(關(guān)聯(lián)2)],輸出是關(guān)聯(lián)1 或關(guān)聯(lián)2。關(guān)系抽象輸出依賴于關(guān)系抽象規(guī)則。
在日光溫室蔬菜系統(tǒng)中以迭代的方法應(yīng)用規(guī)則,得到最終的可能性不是最大的,因此需要找出新的允許順序獲得最大的可靠性,在允許的兩個規(guī)則后,有兩個執(zhí)行命令。首先運(yùn)行第一個規(guī)則或第二個規(guī)則,導(dǎo)致兩個不同的執(zhí)行命令,不同的執(zhí)行順序可能導(dǎo)致不同的結(jié)果,圖5中顯示了兩個執(zhí)行命令,下半部分顯示了第一個執(zhí)行順序,圖5 中的執(zhí)行規(guī)則:[(關(guān)聯(lián)A)×溫室蔬菜數(shù)據(jù)×(關(guān)聯(lián)B)equals 關(guān)聯(lián)D1],完成規(guī)則[(關(guān)聯(lián)D1)×溫室蔬菜數(shù)據(jù)×(關(guān)聯(lián)C)equals 關(guān)聯(lián)E1],其次是類溫室蔬菜光照數(shù)據(jù)和類溫室蔬菜溫度數(shù)據(jù)的最終關(guān)系是關(guān)聯(lián)E1,關(guān)聯(lián)E1 的可靠性是FinalReliabilitya。圖的上半部分顯示了第二個執(zhí)行順序,執(zhí)行應(yīng)用順序[(關(guān)聯(lián)B)×溫室蔬菜數(shù)據(jù)×(關(guān)聯(lián)C)equals 關(guān)聯(lián)D2],應(yīng)用規(guī)則是[(關(guān)聯(lián)A)×溫室蔬菜數(shù)據(jù)×(關(guān)聯(lián)D2)equals 關(guān)聯(lián)E2]。溫室溫度數(shù)據(jù)和光照數(shù)據(jù)之間的執(zhí)行順序是關(guān)聯(lián)E2,可靠性是FinalReliabilityb,關(guān)聯(lián)E1 和E2 是不同的,如果關(guān)聯(lián)E1關(guān)聯(lián)E2,則路徑包含關(guān)系不一致,如果Final Reliability a≠Final Reliability b,則路徑包含可靠性不一致。
日光溫室蔬菜系統(tǒng)智能化模型中,各種模塊系統(tǒng)出現(xiàn)內(nèi)容不一致,需要檢測這些不一致的內(nèi)容,并且需要減少不一致的存在。首先對模型抽象進(jìn)行分析,然后構(gòu)建抽象規(guī)則,對UML 靜態(tài)圖和動態(tài)圖進(jìn)行實(shí)體一致性檢測。并利用關(guān)系抽象規(guī)則,實(shí)現(xiàn)關(guān)系的檢測。本文首先介紹模型檢測的原理,對UML 模型進(jìn)行分類,分析模型抽象。針對UML 模型中出現(xiàn)的不一致問題,提出基于抽象規(guī)則的UML 模型一致性檢測的方法,定義了關(guān)系抽象的規(guī)則,發(fā)現(xiàn)UML 圖中的循環(huán)經(jīng)常導(dǎo)致問題,循環(huán)問題包含關(guān)系不一致、完整性問題和關(guān)系冗余。研究了如何檢測關(guān)系不一致、關(guān)系完整性和關(guān)系冗余等問題以及如何解決這些問題。理論分析和驗(yàn)證試驗(yàn)表明,本文提出的基于抽象規(guī)則的UML 模型檢測的方法,能準(zhǔn)確識別UML 模型中存在的不一致問題,具有較高的檢測效率。