久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

面向Agent的軟件工程的現(xiàn)狀與挑戰(zhàn)探索

時間:2024-08-26 23:41:09 計算機軟件畢業(yè)論文 我要投稿
  • 相關推薦

面向Agent的軟件工程的現(xiàn)狀與挑戰(zhàn)探索

  伴隨軟件構造的延展,新穎的Agent類別軟件,也拓展了采納范疇。Agent整合屬性的軟件技術,含有新框架下的原理及多重工程思維,這就供應了軟件構建的有序路徑。下面是小編搜集整理的面向Agent的軟件工程的現(xiàn)狀與挑戰(zhàn)探索的論文范文,歡迎大家閱讀參考。

  摘要:面向Agent軟件工程是當下軟件工程最前沿的研討方向之一,這種零碎結合了Agent實際和技術,同時將軟件工程的思想、原理和準繩相結合,爲基于Agent零碎的開發(fā)提供工程化手腕。最近幾年,隨著Web使用在Internet上的開展,同時加上軟件開發(fā)社會化的需求,基于Agent的軟件工程在學術界和工業(yè)界惹起了普遍的關注,本文次要論述了面向Agent軟件工程的發(fā)生和開展背景,面向Agent軟件工程的研討內(nèi)容,面向Agent軟件工程的研討現(xiàn)狀,最初討論了存在的成績和面臨的應戰(zhàn)。

  關鍵詞:面向Agent軟件工程;基于Agent零碎;Agent實際;技術

  一、概念

  面向Agent軟件工程,其任務原理是將Agent看作爲模型的構成條件,同時圍繞對應的根本條件有條不紊的展開與零碎相關的系列活動,被以為是目前技術性較強的軟件開發(fā)模型。不論是軟件零碎還是使用零碎,它的外部構成都包括多個Agent,Agent表現(xiàn)出來的特點次要有自發(fā)性、反響性、社會性和自主性,屬于行爲自控的行爲實體。Agent與Agent之間表現(xiàn)出來的構造關系較爲復雜,其作用是由高層互相交流來完成的,在這樣的前提下到達零碎設計的預期目的。面向Agent軟件工程針對零碎研發(fā)來講,不只爲其構建了零碎平臺,同時還完成了實際的提供和技術環(huán)境的提供。它次要經(jīng)過零碎的模塊分解,數(shù)據(jù)建模和籠統(tǒng)實際完成零碎數(shù)據(jù)的論述和管理,到達了零碎設計的根本要求和目的,這樣更可以促進零碎難度的提升和靈敏性的添加,在此根底上還添加了維護性特點和重用性特點。面向Agent軟件工程包括的根本思想與定義在實際論與軟件工程全體規(guī)劃處于同一個軌道線。以往的數(shù)十年間,軟件工程一直在探究一套可以促進其研發(fā)才能的零碎,而這個零碎根本特點要表現(xiàn)出來自然籠統(tǒng)和功用弱小,在迷信管理的前提下協(xié)助零碎建模工程的完成和技術改良。面向Agent軟件工程側重反映出來軟件的籠統(tǒng)特點和研發(fā)技術程度。

  二、研討現(xiàn)狀剖析

  (1)技術方面。面向Agent的需求工程不只交融了Agent同時還交融了Agent零碎定義本身攜帶的特性,這些特性爲零碎的建模及研討發(fā)明了研發(fā)條件。相關范疇的剖析觸及到的學科不只有認知學,同時還兼具有社會與組織兩個學科。罕見的研討內(nèi)容觸及到的框架是i3框架、ALBERT、Tropos、NFR、RoMAS等。最近一段時期以來,研討者找到了少量面向Agent的建模言語其目的是爲Agent零碎描繪提供支持,爲零碎描繪等任務提供協(xié)助,罕見任務內(nèi)容包括AgentUML,AML,MAS2ML,OrgS,CAMLE等。由于軟件Agent具有的特性和外部結構模塊的其他特點,面向Agent軟件惹起研討者關注的側重點是其使用局部。經(jīng)過運用面向Agent的軟件的任務方式,面向Agent軟件開收回現(xiàn)了方式多樣的與其絕對應的零碎模型,所以前提是技術手腕必需具有只要這樣才可以到達零碎規(guī)則的錦上添花的要求。(2)管理方面。以后經(jīng)過運用面向Agent軟件工程停止項目研發(fā)的效果較少,人們對來Agent軟件工程內(nèi)在需求知之尚少,同時也不理解該軟件在適用進程中詳細要求是什麼,所以未深化展開相關的探究。(3)工具方面。處于工具形態(tài)下的面向Agent軟件表現(xiàn)出來的形態(tài)較爲靈敏。不斷到如今使用范疇和研討范疇推向市場的Agent的CASE工具無數(shù)十種之多,在此根底上可以爲面向Agent軟件工程各個研討環(huán)節(jié)發(fā)明更多的研發(fā)條件。

  2.1面向Agent的開發(fā)辦法

  基于Agent以及其他相關概念、借助于面向Agent的軟件開發(fā)思想對零碎停止工程化開發(fā)的辦法學是面向Agent的開發(fā)辦法,包括面向MicrosoftAgent的剖析辦法、面向Agent的設計辦法。它提供了相應的建模言語以及構造化和良定義的進程對基于Agent零碎(包括使用零碎以及軟件零碎)停止全方位的剖析、描繪與建模,支持軟件壽命運用中軟件設計和需求剖析(從群眾化需求的剖析)兩個進程的軟件開發(fā)任務。到如今人們曾經(jīng)提出了近百種面向Agent的開發(fā)辦法,并且陸陸續(xù)續(xù)有新的辦法呈現(xiàn)。大局部辦法是通用的,不限定完成技術平臺和使用范疇;小局部辦法是公用的,專門針對某個平臺、特定的使用和某個完成技術。依照現(xiàn)無方法所需求的差別性和次要技術背景,可以將一切的面向Agent設計辦法和軟件剖析分爲以下三個方面。實踐上基于Agent零碎停止剖析和設計的辦法是以各種技術手腕集成在一同來停止的。(1)基于對象技術。該類別的辦法依托于面向某種軟件開發(fā)辦法,經(jīng)過將Ag-ent視爲一種特殊的對象建模言語(尤其是UML)的擴大以及用現(xiàn)有面向對象軟件開發(fā)辦法來支持對基于Agent零碎停止剖析、建模和設計。(2)基于知識工程。對基于Agent零碎停止建模、剖析和設計的停止依托于知識工程(如人工智能、認知迷信等)范疇的邏輯概念、思想和技術。一種常用的辦法是將Agent視爲由各種認知部件所組成的意向零碎,比方信心、目的、意圖等。代表性任務包括Tropos,DESIRE,MAS2CommonKADS,Styx,AAII等。(3)基于組織思想。這種方法的思想根底就是社會學和組織學,并且用這兩門學科中不詳細的定義來敘說描畫基于,在此前提下再對其停止剖析和建模,這些籠統(tǒng)的定義包括社會角色、社會組織以及組織成員共同恪守的規(guī)則、需求承當?shù)呢熑蔚鹊。該方法的典型性任務有Gaia,AALAADIN,Ro2MAS等。①簡直一切的建模方式對軟件開發(fā)都有著很大的影響,次要是對開發(fā)的進程和水平協(xié)助,但是由于不同的建模方式運用的定義和言語都是不同的,所以這種協(xié)助的水平也不會一樣。關于基于Agent零碎來說,每種建模方式都具有共同的了解看法。②假如用戶面對的是Agent的開發(fā)辦法,那麼就很難片面詳細的掌握一切辦法的優(yōu)劣、之間存在的不同以及合適運用的場所等等。從而招致依據(jù)特點確定適宜的開發(fā)方式的難度大大添加。③雖然每一種方式都有劣勢,但是簡直沒有一種方式能集中一切的劣勢,有劣勢的同時,也必定存在著一定的優(yōu)勢。④軟件開發(fā)者之間和軟件開發(fā)者和用戶之間要想隨時完成即時無效的溝通很難,由于雖然大局部面向Agent的開發(fā)辦法都差不多,可是其本質還具有很大的差別。依據(jù)以上闡述可知,構成一個保準一致、具有很大劣勢,還能被一切相關人員認可的方式,將是整個學術范圍和工業(yè)范圍內(nèi)的努力方向。當然,這也是一個宏大的應戰(zhàn),由于這必需要把各個面向Agent的開發(fā)辦法停止比照研討,集中一切的有點,去掉一切的缺陷。

  2.2面向Agent的順序設計

  面向Agent的順序設計本質上是一種新型的順序設計模型,它的根底是Agent軟件零碎的開發(fā),根本編程是Agent,而設計的目的就是Agent的運轉單元。順序言語關于面向Agent的順序設計來說,是最重要的也是必不可少的一項任務。順序言語是順序員對編程改寫目的零碎軟件的根底。目前來看,相關人員曾經(jīng)研討出了幾十種能協(xié)助面向Agent的順序設計的順序言語。經(jīng)過剖析這些言語技術層面上的不同,的一個必要的、同時也是最根本的工具就是該順序設計的言語。順序設計員可以經(jīng)過它對目的軟件零碎停止編程和改寫。到如今,人們總共提出了數(shù)十種。根據(jù)這些言語技術層面的差別性,可以大致對其停止如下分類:面向Agent的順序設計言語籠統(tǒng)的分爲以下幾類別。(1)以LISP技術爲根底。這種順序言語以運用了LISP的語法方式而得名,它就是采用和LISP語法方式差不多的句子對Agent的組成局部停止表達,也包括對Agent零碎的行爲或許零碎之間相互交流溝通。運用這種實際零碎比擬嚴謹?shù)恼Z法零碎來停止編程和改寫,關于進步Agent零碎的功用性有很大的協(xié)助。運用LISP的語法方式的任務分類有Shoham開發(fā)的AGENT20、還有Thomas開發(fā)的PLACA、以及Davies和Edwards提出的AG-ENT2K1。(2)基于邏輯技術。邏輯零碎包括一階謂詞邏輯以及時序邏輯等等,邏輯零碎也可以作爲Agent的順序設計言語來運用,在順序編寫的時分,就用邏輯零碎來對Agent零碎的各種方式以及外部組成里停止表述和定義,例如相關知識、意圖和信心、原子舉措和規(guī)則等都可以用邏輯技術來表述定義。邏輯技術的實際零碎和語義定義都相當嚴謹。因而運用了邏輯技術的Agent零碎可以作爲定理證明器來運用,Agent零碎的任務進程也可以看做是一個證明定理的進程。它的典型代表有由Fisher提出的并發(fā)METATEM、由Giacomo和Lesperance等人提出的CON-GOLOG、由Hindriks等人提出的3APL等等。(3)基于對象技術。此項面向Agent順序設計的言語是在對拓展原來順序言語的根底上,運用了面向對象的軟件開發(fā)技術和軟部件技術而構成的一種Agent零碎順序言語。它屬于在言語級上對Ag-ent零碎順序言語提供支。通常狀況下,這項技術都是把Agent零碎當成一個特有的對象,用Agent外部功用的預定義軟部件來編程和完成Agent零碎,它的前提是運用的軟部件必需是一組曾經(jīng)封裝的特殊類。運用這種技術,可以應用預編譯生成由面向對象順序設計言語(如Java)所描繪的順序代碼了,也可以把用戶編程間接表述成能運轉的代碼,并且完成其在目的平臺上運轉的目的。最終生成可以運轉的目的代碼,還要用面向對象順序設計言語編譯器對其停止編譯。到2000年爲止,面向Agent零碎順序言語方面的研討閱歷了一個由活潑到寂靜的進程,影響研討現(xiàn)狀的次要要素就是技術成績。到最近幾年,這方面的研討又再次掀起熱潮,由于人們曾經(jīng)清楚順序言語的設計是軟件開發(fā)順利停止的重要保證,而且是不可或缺的一環(huán)。Agent零碎零碎自身功用性和適用性的進步,也必需要樹立在順序言語的不時更新?lián)Q代上。到目前爲止,相關人員研討制定出的Agent零碎順序言語,通常都有上面幾個特征:①原型化。順序言語自身就是曾經(jīng)固化的知識零碎,適用性小。②研討性。順序言語并不能爲人類工業(yè)化詳細效勞,只是用來檢驗一些實際能否正確可行。③非商業(yè)性。順序言語言語目前的開發(fā)零碎環(huán)境都有待改善,其可行水平和簡便水平方面的目標還不高。

  2.3面向Agent的CASE工具和環(huán)境

  我們把協(xié)助軟件開發(fā)者愈加疾速有家高效的完成Agent零碎的一組軟件,稱作面向Agent的CASE工具和環(huán)境。它可以無效支持Agent零碎在原有的定義和技術的根底上,對Agent零碎停止開發(fā),比方它可以爲開發(fā)提供需求剖析、軟件設計、零碎完成和驗證等等。最近幾年年,有關這項技術的研討逐步升溫,到如今爲止,學術范圍和工業(yè)范圍曾經(jīng)發(fā)布了數(shù)十種面向Agent的CASE工具和環(huán)境,而且其品種還正出現(xiàn)不時增多的趨向。雖然其品種單一,特點也各有不同,可是總體來看AgentCASE工具和環(huán)境可以分紅上面這幾類:(1)開發(fā)包和可重用庫。開發(fā)包與可重用庫的運用在很大水平上浪費了軟件開發(fā)本錢。關于Agent軟件開發(fā)也是一樣。關于當下主流的軟件開發(fā)技術,如針關于軟件言語開發(fā)類的Java、C++等。其可以經(jīng)過軟件開發(fā)包和可重用庫如JATLite,MicrosoftAgent完成二次開發(fā)。完成創(chuàng)立Agent的軟件零碎(包括Agent類、Agent接口)的軟件重塑,從而集成可用的軟部件零碎。(2)體系構造框架。面向Agent的體系構造框架隨著計算機軟件的開展是十分普遍的,而針關于CASE工具環(huán)境的構造數(shù)目也是十分多的(如OpenAgentArchitecture,JAFMAS等)這類工具框架的次要作用就是構建軟件運轉機制,完成外部體系的運作,構建疾速通道Agent。(3)開發(fā)工具集。開發(fā)工具集任務環(huán)境通常只要獨立一個,這樣是爲了前期處置零碎的完好性和一致性。次要代表有AgentBuilder,Zeus等,其次要價值是用以支持軟件開發(fā)人員對目的軟件零碎停止剖析、設計、完成、部署和測試等。(4)根底設備戰(zhàn)爭臺。根底設備戰(zhàn)爭臺次要是爲面向Agent的CASE工具和環(huán)境提供效勞,次要包括通訊效勞、平安效勞、目錄效勞、挪動效勞等在類的根底效勞,目前在我國次要盛行的面向Agent的CASE工具和環(huán)境次要有Voyager,ADE,Grasshopper等。綜上所述,在對面向Agent的CASE工具和環(huán)境的實際研討方面我們獲得了久遠的立足,但是就運用價值和運用狀況來說,還是一個未知數(shù)。因而我們就要防止當下基于Agent零碎開發(fā)進程中存在的諸多成績和缺乏。例如①人機交互的困難;②對象混亂,沒有完成一對一的運用形式;③缺乏明白的辦法論支持;④市場通用價值。

  三、成績和應戰(zhàn)

  面向Agent軟件工程遠未成熟,離工業(yè)化、大規(guī)模的使用尚有很大的差距,還不能爲廣闊軟件開發(fā)人員所承受,尤其是要成爲一種主流的軟件工程化開發(fā)技術還面臨著一系列應戰(zhàn)性的成績。

  3.1根底實際

  人們很早以前就看法Agent實際的重要性并于1963年開端萌生了Agent實際研討的研討思想,但是曉得20世紀90年代年先人們才真正意義上上的注重起來并著手開端研討。自從人們看法到Agent實際的重要性當前,少量的科研人員不時對其停止研討,無論是Agent的實際還是詳細的實踐使用人們絲毫不放過任何可以停止研討應用的方面。鑒于整個軟件零碎的質量的好壞受Agent的功能的影響,在我們實踐通訊中就要按不同的要求設計出高功能和高質量的軟件零碎。關于用戶的不同要求的用戶裝置不同大小和功用的零碎。因而,關于Agent實際的根底實際研討必需掌握得十分可靠才行。晚期人們研討的這個Agent實際模型對原理停止了合理詳細的解釋,它次要的根本實際根底就是他把微帶輻射單元看成了一個在程度方向上不會發(fā)生變化的線狀的BDI邏輯和模型,而在長度的方向上,電場停止的時余弦變化。我們這樣就可以把他看做是擁有兩個開路端的原型化言語AGENT20及其解釋器。關于這個等效的解釋器,我們可以把貼片表示爲,且他們做的是相反方向的鼓勵并且都是向空中上方的半空停止輻射的縫隙。不只如此,迷信家還給出了停止這個復雜計算的計算公式,這個公式不需求停止少量的數(shù)據(jù)采集和計算,只適用于工程上的計算,但是只可以運意圖圖實際和自主計算實際這兩品種型。根底實際的研討關于面向Agent軟件工程而言是極爲重要,他們將爲面向Agent的工程理論技術以及工具的研討與開展提供實際指點并奠定扎實的實際根底。

  3.2關鍵技術

  (1)軟件開發(fā)方式。通常狀況,軟件開發(fā)方式次要是言語建模與進程開發(fā)的無機交融的進程。針對建模言語來說,假如技術規(guī)范進一步一致,那麼我們可以完善對應的針對Agent的建模言語。這要在言語表達才能與言語簡潔性之間做出考量,包括方式化以及半方式化的言語表義根底,展露多視角、多非詳細方面的思想,給予適當?shù)难哉Z設備以表示在Agent零碎根底上的特性,比方自然籠統(tǒng)和封裝這兩方面,可以在維持繁瑣Agent零碎根底上停止效果性明顯的建模。針對建模進程來說,必需給予明白的釋義進程以維持針對Agent零碎的軟件開發(fā)項目。特別是由于在軟件開發(fā)中經(jīng)常會呈現(xiàn)非同一籠統(tǒng)層次、非同一視角的該零碎形式,但是眾多零碎形式從內(nèi)在邏輯上講是不可聯(lián)系的,所以必需給予迷信的技術援助以維持形式的轉化,必需針對形式間能否分歧做出抽查測試。(2)軟件體系構造和設計形式。以后,我們對在Agent零碎根底上的軟件形式層次討論還不夠深化。一些針對Agent零碎的軟件開發(fā)方式與Agent類零碎的技術方式的詳細施行是經(jīng)過根底模板來完成的。假如用對象類和對象來比喻Agent類和Agent的話,那麼對象類是Agent類,對象是Agent?梢赃@樣說,在Agent零碎軟件模板和Agent根底之上的兩者關系不但是實踐比例關系,還可以包括靜態(tài)綁定之間的關聯(lián)性,來實在顯露Agent的相關特性、展示Agent技術優(yōu)點和順應非靜態(tài)、非封鎖零碎研發(fā)的需求。除此之外,我們更要經(jīng)過其他迷信辦法以討論、設計規(guī)劃與闡釋在Agent零碎根底上的軟件全體層次,還要凝練和總結出各式各樣的設計規(guī)劃模板。我們在討論設計規(guī)劃模板和軟件重新的時分,必需要立足于Agent軟件開發(fā)建立產(chǎn)業(yè),這樣的普遍運是非常重要的。(3)順序設計思想和言語。目前,針對Agent零碎設計開發(fā)的言語難以滿足用戶的需求,爲數(shù)不多的受眾是實際界的學者和研討員。同時,運用針對Agent順序設計開發(fā)的言語零碎在消費市場上并不多見,遠遠跟不上C++與Java的運用水平,它還是不成熟的技術,因此吸引不了許多軟件任務者的喜愛,也無法打入軟件工程的寬廣開展空間。我們對Agent零碎設計開發(fā)的討論還不夠深化,如今無論是實際界和消費中還沒有呈現(xiàn)針對Agent順序設計開發(fā)理念的零碎,以控制Agent設計言語開發(fā)和編寫后果軟件零碎進的順序。一些零碎設計言語的開發(fā)是依據(jù)人工智能專家的理念發(fā)生的。雖然該言語在詳細運用功用上可以略微順應針對Agent順序設計的需求,但是針對零碎本身的簡易適用性沒有注入很多精神停止研討。針對這方面的實際和理論探求需求盡能夠吸收自主研發(fā)的Agent執(zhí)行機制和該零碎的全體層次的相關經(jīng)歷。

  四、結論和進一步研討

  針對Agent的軟件設計開開展現(xiàn)了和如今不同的次要采用的技術思想辦法。將此用在維持繁瑣零碎的工程設計研發(fā)上,既是軟件開發(fā)技術的全新嘗試和典型形式,同時也爲網(wǎng)格、普適計算與語義Web等相關研討給予了良好的范例。所以,這幾年實際界與其他迷信界非常喜愛針對Agent軟件工程的研討任務。有的人斷言,這是一次全新的工業(yè)技術反動。針對Agent軟件工程設計研發(fā)的實際研討,Agent軟件工程不是一個獨立的研討分支,其次要貫串了其他學科的很多知識。在技術手腕上交融了當下研討最爲搶手的學科。例如社會經(jīng)濟學、組織行爲學、認知迷信等。使得Agent軟件工程復雜的運算零碎失掉了簡易處置。隨著學科之間的聯(lián)絡愈加普遍,Agent軟件工程也顯示出了本人的學科價值劣勢。比方,在虛擬計算機研討范疇,就應用到了Agent的概念和思想。其起到的作用將愈加將計算機的散布資源完成按需整合。這極大的將面向Agent軟件工程的使用價值推向市場化。一方面,計算機等計算與Agent軟件工程的無機交融將會拓寬Agent軟件工程的使用范疇;除此之外,計算之間的搭接顯露了Agent軟件工程的使用缺口和運用價值定向。使得今后的Agent軟件工程研討愈加趨于方向化,目的研討。這將會使得爲面向Agent軟件工程走向大規(guī)模、工業(yè)化使用提供寬廣的使用背景。

  參考文獻:

  [1]潘衛(wèi)華,潘衛(wèi)紅,孫淑琪.挪動Agent技術在散布式數(shù)據(jù)庫零碎中的使用[J].華北電力大學學報,2003(1).

  [2]尹章才.一種新的編程辦法——面向Agent的順序設計[J].信息技術,2002(3).

  [3]王昱,周成平,丁明躍.基于多代理的網(wǎng)絡圖像下載模型的設計研討[J].華中科技大學學報(自然迷信版),2002(1).

  [4]何衛(wèi)平,蔡鴻明,秦忠寶,李冰.面向工業(yè)造型設計的產(chǎn)品設計定位辦法研討[J].計算機工程與使用,2002(4).

  [5]黨辰,王嘉禎,王素貞.基于組件的挪動Agent平臺設計與完成[J].計算機工程與設計,2009(3).

  [6]周文軍,劉斌.面向Agent技術[J].微處置機,2009(1).

  [7]趙少東.面向對象與面向Agent的比擬[J].古代計算機,2005(11).

  [8]劉霞,呂翠麗,趙鑫.Agent軟件技術使用實例[J].中國校外教育,2012(9).

  [9]潘衛(wèi)紅.挪動Agent技術及其在散布式零碎中的使用研討[D].華北電力大學,2002.

  [10]張宇晴.Agent在散布環(huán)境中的工程使用[D].華北電力大學(河北).2004.

  [11]黃達安.基于MobileAgent的K-WebService零碎的設計與完成[D].暨南大學,2006.

  [12]於蓓蓓.溪洛渡水電站場內(nèi)交通零碎層次多代理零碎及其決策成績的研討[D].天津大學,2006.

  [13]庸俗田.基于Agent的油井作業(yè)施工總結智能剖析零碎研討[D].大慶石油學院,2007.

  [14]朱莉麗.基于挪動Agent的散布式電子商務框架研討[D].武漢理工大學,2008.

  [15]代春平.基于Agent的數(shù)據(jù)發(fā)掘模型研討及其在火山巖壓裂方案中的使用[D].大慶石油學院,2008.

【面向Agent的軟件工程的現(xiàn)狀與挑戰(zhàn)探索】相關文章:

我國風險投資的現(xiàn)狀與挑戰(zhàn)03-20

面向航空領域的軟件工程專業(yè)人才培養(yǎng)03-27

關于WTO對我國金融監(jiān)管現(xiàn)狀的挑戰(zhàn)03-02

燃氣行業(yè)信息化的現(xiàn)狀及建設探索03-23

面向卓越工程師計劃的大學英語教學探索及實踐11-27

初中生物科學教導現(xiàn)狀探索12-08

探索管理會計的現(xiàn)狀、問題及對策03-18

淺談高職語文教學與教材體系的現(xiàn)狀與建設探索教育論文11-30

中國建設現(xiàn)代農(nóng)業(yè)的實踐探索、現(xiàn)狀及發(fā)展思路03-21