freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

面向方面的實(shí)時(shí)系統(tǒng)開發(fā)方法碩士學(xué)位終稿畢業(yè)論文-文庫吧資料

2025-07-04 23:07本頁面
  

【正文】 成一個(gè)系統(tǒng)。如果系統(tǒng)要加入風(fēng)格檢查功能,可以在功能特征上新加這個(gè)關(guān)注點(diǎn),然后單獨(dú)開發(fā)這個(gè)關(guān)注點(diǎn),最后把它與別的功能特征組合即可。 功能特征(Feature):核心AST,包括實(shí)際的表達(dá)式;每個(gè)工具都是一種特征。Hyperspace把系統(tǒng)多維分解為不同種類的關(guān)注點(diǎn)(每一種中又有很多關(guān)注點(diǎn)),單獨(dú)開發(fā)這些關(guān)注點(diǎn),然后按照組合規(guī)則(可以有多種組合規(guī)則)把這些關(guān)注點(diǎn)組合在一起形成一個(gè)組件或系統(tǒng)。Hypermodule由hyperslice組成,hyperslice封裝了關(guān)注點(diǎn),并滿足聲明完整性要求,即用到別的hyperslice里的單元都需要聲明,這樣一個(gè)hyperslice就是一個(gè)自包含實(shí)體。一個(gè)單元與多個(gè)關(guān)注點(diǎn)相關(guān),它可以映射到維中關(guān)注點(diǎn),一個(gè)關(guān)注點(diǎn)也可能與多個(gè)單元相關(guān),即用多個(gè)單元來實(shí)現(xiàn)某個(gè)關(guān)注點(diǎn)。 M是關(guān)注點(diǎn)矩陣。 關(guān)注點(diǎn)空間(concern space)組織領(lǐng)域內(nèi)的單元以分離所有重要的關(guān)注點(diǎn)。 軟件是由制品組成的,每種制品有它自己的描述或?qū)崿F(xiàn)方法,每種方法有它自己的語法單元(unit),如方法,類,狀態(tài)圖等等。 Hyperspace Hyperspace[21]是一個(gè)支持多維關(guān)注點(diǎn)分離的模型。 問題就在于主分解專制。顯然它需要侵入已有的設(shè)計(jì)和代碼中進(jìn)行修改,支持緩存的代碼與其它代碼交織在了一起,降低了了可理解性和功能的演進(jìn)。它把表達(dá)式表示成抽象語法樹(ASTs),每個(gè)AST結(jié)點(diǎn)都由一個(gè)類表示,類定義了訪問和修改方法,以及實(shí)現(xiàn)計(jì)算工具的eval()方法,實(shí)現(xiàn)顯示工具的display()方法,實(shí)現(xiàn)檢查工具的check()方法。包括計(jì)算表達(dá)式的值并顯示結(jié)果的計(jì)算(evaluation)工具,顯示工具和檢查語法和語義的檢查工具。這個(gè)例子是構(gòu)建和演進(jìn)一個(gè)簡單的軟件工程環(huán)境(software engineering environment,SEE)來處理程序的表達(dá)式。多維關(guān)注點(diǎn)分離(multidimensional separation of concerns,MDSOC)要求支持任意多的關(guān)注點(diǎn)維數(shù),能同時(shí)沿著這些方向分解關(guān)注點(diǎn),能動(dòng)態(tài)處理新的關(guān)注點(diǎn)新的分解方向,能處理重疊交互的關(guān)注點(diǎn)[20]。即問題原因在于“主分解專制”(tyranny of the dominant deposition)[19]。雖然在這些領(lǐng)域進(jìn)行了很好的研究與應(yīng)用,但這些問題仍然存在,這主要是由于當(dāng)前軟件開發(fā)方法一次僅支持一種關(guān)注點(diǎn)的分離。 Hyperspace 多維關(guān)注點(diǎn)分離為了控制軟件的復(fù)雜性,提高軟件的可理解性,軟件開發(fā)需要把系統(tǒng)分解為小的可管理的模塊,然后組合這些開發(fā)好的模塊得到完整的系統(tǒng)。由于過濾器的語義也是正交的,它們的組合可以解決這個(gè)問題。由于過濾器有匹配的能力,所以可以在過濾器處為多個(gè)匹配的方法集中添加時(shí)間約束,而不用在方法里申明時(shí)間,這樣消除了非多態(tài)實(shí)時(shí)反常。這樣滿足了新的時(shí)間約束,并且重用了父類代碼,消除了時(shí)間需求與應(yīng)用代碼混雜在一起時(shí)帶來的繼承反常。圖26 FastDistributionNode的接口定義fastTimeSpec過濾器給FastDistributionNode的消息設(shè)置最早截至?xí)r間tconsumerNew,然后消息分發(fā)到其內(nèi)部對(duì)象myNode(這是CF模型實(shí)現(xiàn)繼承的方法,稱為基于委托的繼承)。(5) filters(6) fastTimeSpec: RealTime = { True = self.* | (tconsumerNew) | }(7) invoke: Dispatch = {True = myNode.* }。 最后添加了時(shí)間約束的消息由invoke分發(fā)過濾器分發(fā)。如果消息與DistributionNode提供的方法匹配,則接受該消息,如果新的時(shí)間屬性小于消息的當(dāng)前截至?xí)r間,則過濾器為消息設(shè)置新的截至?xí)r間。 giveTimeSpec過濾器的接受集合只有一個(gè)元素,“=》”左邊是狀態(tài)(條件),右邊是方法的名字,是s,m的另一種寫法。消息的時(shí)間屬性用time對(duì)象表示,time有start(消息的最早開始時(shí)間)和end(消息的截至?xí)r間)屬性。圖25 DistributionNode的接口定義[18]過濾器類RealTime的輸入過濾器用來影響與過濾器匹配消息的時(shí)間屬性。(12) invoke: Dispatch = { True = mySwitch.*, True = inner.* }。(8) inputfilters(9) giveTimeSpec: RealTime = { True = self.* | ( tconsumer ) | }。(5) methods(6) productionLineDisconnected returns nil。當(dāng)子類的時(shí)間約束改變后,新的時(shí)間約束放到子類的過濾器中,當(dāng)調(diào)用子類的方法時(shí)(繼承自父類),子類過濾器給接受的消息加上新的時(shí)間約束,如圖26。但是由于實(shí)時(shí)需求與應(yīng)用代碼混和在一起,子類需要重新定義消費(fèi)線的斷開方法,以使用新的時(shí)間約束,這樣父類的斷開方法無法重用,出現(xiàn)了第一種反常。結(jié)點(diǎn)可以看成時(shí)一個(gè)電磁開關(guān),用ElMagneticSwitches定義,這個(gè)類里為每條線定義了連接和斷開方法。結(jié)點(diǎn)控制電流從生產(chǎn)線流向消費(fèi)線。類DistributionNode代表一個(gè)電力分配網(wǎng)中的一個(gè)結(jié)點(diǎn)。在實(shí)時(shí)系統(tǒng)中,繼承以前經(jīng)過驗(yàn)證的模塊很重要,但是實(shí)時(shí)需求的改變往往會(huì)導(dǎo)致過多的重新設(shè)計(jì),這種情況稱為實(shí)時(shí)需求繼承反常,即子類時(shí)間需求改變導(dǎo)致在子類里出現(xiàn)過多的重新設(shè)計(jì)而不是繼承父類的已有實(shí)現(xiàn)。 Meta過濾器:如果拒絕消息,消息傳遞到下一個(gè)過濾器;否則根據(jù)這個(gè)消息生成一個(gè)對(duì)象,并把這個(gè)對(duì)象作為參數(shù)傳到新的消息(接受集合元素的第二部分)中。 Error過濾器:如果拒絕消息,產(chǎn)生異常;否則傳遞到下一個(gè)過濾器。當(dāng)通過最后的過濾器后,消息被分發(fā)。圖24 檢查接受的消息算法[17]消息要被所有的過濾器檢查,過濾器用它的接受集合檢查消息,如果滿足接受集合里的一個(gè)元素,那么通過當(dāng)前過濾器的檢查,然后轉(zhuǎn)到下一個(gè)過濾器。16) dispatch(m, dest)。12) if accept13) then handler(f).acceptMessage(m)14) else handler(f).rejectMessage(m)。10) end。8) dest := target(mj)。消息必須被過濾器集合檢查,檢查的算法如圖24:1) algorithm pass_filters(m, F)2) forall f in F = [f1, ..., fn] do3) accept := false。A(f)被稱為接受集合(accept set function),是一個(gè)有序的集合A。狀態(tài)可以看成一個(gè)用proposition表示布爾函數(shù),用id可以引用這個(gè)狀態(tài)。接口對(duì)象的申明方式是為objectName:ClassName。接口部分包括接口對(duì)象I聲明(被封裝了的內(nèi)部對(duì)象和被引用了的外部對(duì)象),狀態(tài)S(state, condition)聲明,類方法M聲明和過濾器F;實(shí)現(xiàn)部分包括實(shí)例變量聲明,類方法和狀態(tài)的實(shí)現(xiàn),以及初始化方法。因?yàn)閷?duì)象之間的通信的機(jī)制是消息,這個(gè)模型通過過濾器來操控進(jìn)入或出去的消息來改變對(duì)象的行為,圖23 描述了這個(gè)模型的組成部分。圖22 TraceShape方面 組合過濾器(Composition Filters,CF)CF是語言獨(dú)立的模型,它以模塊化和正交化(orthogonal)的方式擴(kuò)展了面向?qū)ο竽P汀nt TraceShape::m_created=0。 advice execution(% main(...)) : after(){ printf(shape created:%d,destroyed:%d,m_created,m_destroyed)。} ~Helper(){TraceShape::m_destroyed++。 pointcut shapes()=derived(Shape)。圖22顯示了TraceShape 方面來記錄Shape類型的對(duì)象的構(gòu)造和析構(gòu)。對(duì)于代碼切入點(diǎn),通知在切入點(diǎn)影響系統(tǒng)的行為。在AspectC++中也有兩類連接點(diǎn),名字連接點(diǎn)用來形成名字切入點(diǎn),如程序中的類名;代碼連接點(diǎn)用來形成代碼切入點(diǎn),如程序中的函數(shù)調(diào)用和執(zhí)行。代碼切入點(diǎn)要調(diào)用AspectC++定義的函數(shù)且以名字切入點(diǎn)為參數(shù)來形成,如:call(“void draw()”)描述了一系列的函數(shù)draw調(diào)用。在AspectC++中,有兩種切入點(diǎn):名字切入點(diǎn)(name pointcut)和代碼切入點(diǎn)(code pointcut)。在AspectC++中以“::”代替AspectJ中的“.”來表示作用域解析。 AspectC++ AspectC++[13,14]對(duì)C++進(jìn)行擴(kuò)展以支持面向方面編程,它參考AspectJ所使用的方法來對(duì)另一種編程語言進(jìn)行擴(kuò)展,所以它們的模型基本相同,語法上有些不同。AspectJ編譯器是一個(gè)編織器(weaver),它可以將方面織入到它所影響的其他方面或類里,以改變系統(tǒng)的結(jié)構(gòu)和行為。}}圖21 Timing方面[12]它給每個(gè)連接引入一個(gè)計(jì)時(shí)器,給每個(gè)用戶引入一個(gè)保存全部連接時(shí)間的變量。().totalConnectTime += getTimer(c).getTime()。call(void ())。}pointcut endTiming(Connection c): target(c) amp。amp。public Timer getTimer(Connection conn) { return 。public long getTotalConnectTime(Customer cust) {return 。圖21是一個(gè)電信模擬的計(jì)時(shí)方面。同一個(gè)連接點(diǎn)可以被多個(gè)方面或一個(gè)方面里的多個(gè)通知影響,AspectJ定義了這些方面和通知的優(yōu)先關(guān)系。在方面里可以聲明其他類型擁有的成員(成員變量、成員函數(shù)、構(gòu)造函數(shù)),也可以聲明一些類型實(shí)現(xiàn)一個(gè)新的接口或繼承一個(gè)新的類。通知有多種類型,before通知在指定連接點(diǎn)抵達(dá)但與該連接點(diǎn)相連的程序運(yùn)行前執(zhí)行;after returning通知在指定連接點(diǎn)處的程序成功返回后執(zhí)行;after throwing通知在指定連接點(diǎn)處程序拋出Throwable對(duì)象后執(zhí)行;after通知在指定連接點(diǎn)程序執(zhí)行后執(zhí)行,不論成功返回還是拋出異常;around通知在指定連接點(diǎn)處執(zhí)行,只有在around通知體里顯式調(diào)用proceed,該連接點(diǎn)處的程序才能執(zhí)行??梢杂猛ㄅ浞麃硎占喾N連接點(diǎn),如“call(void *(..))”,表示調(diào)用Point的以set開頭且返回值為void的函數(shù),不論這些函數(shù)的參數(shù)類型和個(gè)數(shù)。amp。切入點(diǎn)主要用于通知,通知在切入點(diǎn)改變系統(tǒng)行為。方面可以在這些點(diǎn)改變系統(tǒng)的行為。AspectJ引入了連接點(diǎn)(join point)這個(gè)概念,以及切入點(diǎn)(pointcut)、通知(advice)、類型間聲明(intertype declaration)和方面(aspect)的構(gòu)造塊。如AspectJ、組合過濾器、多維關(guān)注點(diǎn)分離和自適應(yīng)編程等。第二章 分離關(guān)注點(diǎn)的方法系統(tǒng)中的非功能需求往往橫切整個(gè)系統(tǒng),傳統(tǒng)的結(jié)構(gòu)化方法以及現(xiàn)代流行的面向?qū)ο蠓椒o法很好地模塊化這些非功能需求,導(dǎo)致了實(shí)現(xiàn)非功能需求代碼的分散和與功能代碼糾纏在一起,造成代碼量急劇增加,開發(fā)效率低,可讀性差,極易引起不一致等問題,所以需要分離這些非功能關(guān)注點(diǎn)。 第四章分析介紹了面向方面社區(qū)對(duì)面向方面建模的研究。 第二章介紹了典型的分離關(guān)注點(diǎn)的方法。 研究內(nèi)容 本文比較完整地分析介紹了分離和模塊化關(guān)注點(diǎn)的方法,以及面向方面社區(qū)對(duì)面向方面建模的研究;闡述了實(shí)時(shí)系統(tǒng)中實(shí)時(shí)需求的主要概念和建模方法;提出了一個(gè)新的通過擴(kuò)展UML進(jìn)行面向方面建模的方法,并將這個(gè)方法應(yīng)用于實(shí)時(shí)系統(tǒng)開發(fā)。分布式實(shí)時(shí)系統(tǒng)中的非功能需求可以用方面來表達(dá),這篇文章給出了一個(gè)把分布性、時(shí)間要求和容錯(cuò)方面加入到一個(gè)簡單的日志組件里的方法。因?yàn)樵趯?shí)時(shí)操作系統(tǒng)里有許多橫切的特征,為了滿足日益增長的對(duì)實(shí)時(shí)操作系統(tǒng)快速定制的要求,需要面向方面編程技術(shù),這里把函數(shù)看成一系列的基本塊,基本塊的功能代碼可由不同的方面提供,這樣橫切了函數(shù),且這些基本塊可視,提供了圖形表示的開發(fā)框架;支持類的組裝,不同方面里的相同的類可以組成一個(gè)大類。[6]提出了一個(gè)對(duì)嵌入式系統(tǒng)進(jìn)行面向方面的環(huán)境建模方法。(3)組合方面。另外把方面分為三類:(1)應(yīng)用程序方面。(2)運(yùn)行時(shí)系統(tǒng)依賴部分。使用ACCORD開發(fā)實(shí)時(shí)系統(tǒng)的過程是:第一階段把把實(shí)時(shí)系統(tǒng)按功能和低耦合高內(nèi)聚的要求分解為一系列的組件;第二階段把實(shí)時(shí)系統(tǒng)分解為一系列的方面,方面橫切組件和整個(gè)系統(tǒng),這個(gè)階段處理非功能需求和橫切關(guān)注點(diǎn);最后按RTCOM實(shí)現(xiàn)組件和方面。在實(shí)時(shí)系統(tǒng)和嵌入式系統(tǒng)中建立了一些模型[5,6]。根據(jù)上述實(shí)時(shí)系統(tǒng)特點(diǎn)和面向方面開發(fā)的特點(diǎn),可以得出把面向方面技術(shù)應(yīng)用到實(shí)時(shí)系統(tǒng)開發(fā)中很有必要。分別編寫功能部件和非功能方面,然后把它們組合在一起。另外為了提高系統(tǒng)性能,需要對(duì)內(nèi)存進(jìn)行管理,這些管理策略會(huì)彌漫在整個(gè)功能部件里。實(shí)時(shí)嵌入式系統(tǒng)也有安全上的需求,以防止非授權(quán)用戶的進(jìn)入,同樣這些非功能性代碼也會(huì)彌漫在整個(gè)系統(tǒng)中。實(shí)時(shí)系統(tǒng)是高可靠性的系統(tǒng),軟實(shí)時(shí)系統(tǒng)(soft realtime system)任務(wù)的失敗會(huì)使系統(tǒng)性能降低,但是有些安全關(guān)鍵(safetycritical)的硬實(shí)時(shí)系統(tǒng)(hard realtime system)的失敗將會(huì)帶來災(zāi)難性的后果,如核反應(yīng)堆控制系統(tǒng),武器控制系統(tǒng)等,這些系統(tǒng)的失敗將會(huì)有生命的代價(jià)。在實(shí)時(shí)系統(tǒng)中關(guān)鍵的就是時(shí)間要求了,如果系統(tǒng)沒有在給定的時(shí)間里完成任務(wù),任務(wù)是失敗的,這些時(shí)間要求散布在整個(gè)系統(tǒng)的功能部件里
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1