軟件體系結(jié)構(gòu)SoftwareArchitecture_第1頁
軟件體系結(jié)構(gòu)SoftwareArchitecture_第2頁
軟件體系結(jié)構(gòu)SoftwareArchitecture_第3頁
軟件體系結(jié)構(gòu)SoftwareArchitecture_第4頁
軟件體系結(jié)構(gòu)SoftwareArchitecture_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、軟件體系結(jié)構(gòu)SoftwareArchitecture建筑的例子狗舍一個(gè)人搭建,需要最小化建模簡(jiǎn)單的過程簡(jiǎn)單的工具軟件體系結(jié)構(gòu)SoftwareArchitecture建筑的例子住房一個(gè)團(tuán)隊(duì)高效和適時(shí)地建造,需要仔細(xì)的建模良好定義的過程良好的工具軟件體系結(jié)構(gòu)SoftwareArchitecture建筑的例子摩天大樓軟件體系結(jié)構(gòu)SoftwareArchitecture 從軟件危機(jī)談起 軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題1968年國(guó)際軟件工程會(huì)議提出,并被人們廣泛認(rèn)識(shí)到軟件危機(jī)的表現(xiàn) 軟件成本日益增長(zhǎng) 開發(fā)進(jìn)度難以控制軟件質(zhì)量差軟件維護(hù)困難軟件體系結(jié)構(gòu)SoftwareArc

2、hitecture軟件危機(jī)的表現(xiàn)軟件成本日益增長(zhǎng) 20世紀(jì)50年代,軟件成本在整個(gè)計(jì)算機(jī)系統(tǒng)成本中所占的比例為10%-20%。到20世紀(jì)60年代中期,軟件成本在計(jì)算機(jī)系統(tǒng)中所占的比例已經(jīng)增長(zhǎng)到50%左右。而且,該數(shù)字還在不斷地遞增,下面是一組來自美國(guó)空軍計(jì)算機(jī)系統(tǒng)的數(shù)據(jù):1955年,軟件費(fèi)用約占總費(fèi)用的18%,1970年達(dá)到60%,1975年達(dá)到72%,1980年達(dá)到80%,1985年達(dá)到85%左右。軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的表現(xiàn)開發(fā)進(jìn)度難以控制 由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。在軟件開發(fā)過程中,用戶需

3、求變化等各種意想不到的情況層出不窮,令軟件開發(fā)過程很難保證按預(yù)定的計(jì)劃實(shí)現(xiàn),給項(xiàng)目計(jì)劃和論證工作帶來了很大的困難。盲目增加軟件開發(fā)人員并不能成比例地提高軟件開發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問題將更為嚴(yán)重軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的表現(xiàn)軟件質(zhì)量差 軟件項(xiàng)目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。1965年至1970年,美國(guó)范登堡基地發(fā)射火箭多次失敗,絕大部分故障是由應(yīng)用程序錯(cuò)誤造成的。在“軟件作坊”里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對(duì)軟件的需求,軟件設(shè)計(jì)帶有隨意性,很多功能只是程

4、序員的“一廂情愿”而已,這是造成軟件不能令人滿意的重要因素。軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的表現(xiàn)軟件維護(hù)困難 由于在軟件設(shè)計(jì)和開發(fā)過程中,沒有嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的真實(shí)反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。特別是在軟件使用過程中,原來的開發(fā)人員可能因各種原因已經(jīng)離開原來的開發(fā)組織,使得軟件幾乎不可維護(hù)。有資料表明,工業(yè)界為維護(hù)軟件支付的費(fèi)用占全部硬件和軟件費(fèi)用的40%-75%。 軟件體系結(jié)構(gòu)SoftwareArchitecture從軟件危機(jī)談起軟件危機(jī)的原因用戶需求不明確 缺乏正確的理論指導(dǎo)軟件規(guī)模越來越大軟件復(fù)雜度越來越高

5、軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的原因用戶需求不明確 在軟件開發(fā)完成之前,用戶不清楚軟件的具體需求;用戶對(duì)軟件需求的描述不精確,可能有遺漏、有二義性、甚至有錯(cuò)誤;在軟件開發(fā)過程中,用戶還提出修改軟件功能、界面、支撐環(huán)境等方面的要求;開發(fā)人員對(duì)用戶需求的理解與用戶本來愿望有差異軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的原因缺乏正確的理論指導(dǎo) 缺乏有力的方法學(xué)和工具方面的支持。由于軟件不同于大多數(shù)其他工業(yè)產(chǎn)品,其開發(fā)過程是復(fù)雜的邏輯思維過程,其產(chǎn)品極大程度地依賴于開發(fā)人員高度的智力投入。由于過分地依靠程序設(shè)計(jì)人員在軟件開發(fā)過程中的技巧和創(chuàng)造性,加劇軟

6、件產(chǎn)品的個(gè)性化,也是發(fā)生軟件危機(jī)的一個(gè)重要原因。 軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的原因軟件規(guī)模越來越大 隨著軟件應(yīng)用范圍的增廣,軟件規(guī)模愈來愈大。大型軟件項(xiàng)目需要組織一定的人力共同完成,而多數(shù)管理人員缺乏開發(fā)大型軟件系統(tǒng)的經(jīng)驗(yàn),而多數(shù)軟件開發(fā)人員又缺乏管理方面的經(jīng)驗(yàn)。各類人員的信息交流不及時(shí)、不準(zhǔn)確、有時(shí)還會(huì)產(chǎn)生誤解。軟件項(xiàng)目開發(fā)人員不能有效地、獨(dú)立自主地處理大型軟件的全部關(guān)系和各個(gè)分支,因此容易產(chǎn)生疏漏和錯(cuò)誤。 軟件體系結(jié)構(gòu)SoftwareArchitecture軟件危機(jī)的原因軟件復(fù)雜度越來越高 軟件不僅僅是在規(guī)模上快速地發(fā)展擴(kuò)大,而且其復(fù)雜性也急劇地增加。軟件

7、產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無力處理“復(fù)雜問題”。所謂“復(fù)雜問題”的概念是相對(duì)的,一旦人們采用先進(jìn)的組織形式、開發(fā)方法和工具提高了軟件開發(fā)效率和能力,新的、更大的、更復(fù)雜的問題又?jǐn)[在人們的面前軟件體系結(jié)構(gòu)SoftwareArchitecture從軟件危機(jī)談起如何克服軟件危機(jī) 人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必然導(dǎo)致失敗 。要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。在技術(shù)上,應(yīng)該采用基于復(fù)用的軟件生產(chǎn)技術(shù);在管理上,應(yīng)該采用多維的工程管理模式。誕生了軟件工程用工程、科學(xué)和數(shù)學(xué)的原則和方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理

8、方法方法:“如何做”的技術(shù)手段工具:為方法提供的自動(dòng)或者半自動(dòng)的軟件支撐環(huán)境過程:將軟件工程的方法和共計(jì)綜合起來以達(dá)到合理、及時(shí)地進(jìn)行計(jì)算機(jī)軟件開發(fā)地目的軟件體系結(jié)構(gòu)是軟件工程學(xué)科的分支軟件體系結(jié)構(gòu)SoftwareArchitecture軟件復(fù)用軟件復(fù)用是指在兩次或多次不同的軟件開發(fā)過程中重復(fù)使用相同或者相近軟件元素的過程軟件元素包括程序代碼、測(cè)試用例、設(shè)計(jì)文檔、設(shè)計(jì)過程、需求分析文檔甚至領(lǐng)域知識(shí)軟件體系結(jié)構(gòu)SoftwareArchitecture軟件復(fù)用軟件系統(tǒng)極少是全新的它們通常是“主旋律的變奏”建造“每類一個(gè)”的系統(tǒng)過于昂貴在任何工程領(lǐng)域都是如此在軟件工程領(lǐng)域,尤其如此針對(duì)“新”問題,有

9、大量現(xiàn)成的解決方案OTS (off-the-shelf)系統(tǒng)可能只提供部分解決方案代碼行不再是基本的軟件構(gòu)造單元模塊/構(gòu)件成為開發(fā)、功能、演化/維護(hù)和復(fù)用的單元類似于土木工程軟件體系結(jié)構(gòu)SoftwareArchitecture復(fù)用的好處減少開發(fā)時(shí)間潛在的“即插即用”增加可靠性通過測(cè)試多重使用改善質(zhì)量可移植性互操作性快速重新配置用戶編程通過構(gòu)件組裝軟件體系結(jié)構(gòu)SoftwareArchitecture軟件復(fù)用的經(jīng)濟(jì)環(huán)境為復(fù)用而設(shè)計(jì)需要更高的前期投資開發(fā)成本增加10%至50%維護(hù)可復(fù)用資產(chǎn)庫的附加成本可復(fù)用構(gòu)件的維護(hù)當(dāng)一個(gè)構(gòu)件被復(fù)用時(shí),這些成本將得到補(bǔ)償成本節(jié)省 2倍 至 20倍需要遠(yuǎn)見 管理層的支

10、持是必須的OTS復(fù)用伴隨著一定的風(fēng)險(xiǎn)缺乏信任被復(fù)用軟件未知的可靠性被復(fù)用軟件不充分的理解 成本和預(yù)算超支的可能軟件體系結(jié)構(gòu)SoftwareArchitecture復(fù)用的技術(shù)困難OTS系統(tǒng)沒有包含可清晰辨識(shí)的構(gòu)件OTS構(gòu)件粒度過大或過小OTS構(gòu)件沒有正好提供所要求的功能集OTS構(gòu)件的規(guī)約和集成不可預(yù)見地復(fù)雜復(fù)用一個(gè)構(gòu)件的附加成本可能比重新開發(fā)更高定位/選取理解提取評(píng)估/適應(yīng)性改造集成軟件體系結(jié)構(gòu)SoftwareArchitecture軟件復(fù)用的實(shí)情Krueger 1992復(fù)用技術(shù)要想有效,必須縮短系統(tǒng)的初始概念和最終可執(zhí)行實(shí)現(xiàn)之間的距離復(fù)用技術(shù)要想有效,必須使復(fù)用制品的難度低于重新構(gòu)造的難度選擇

11、一個(gè)制品復(fù)用,必須知道它做什么要想有效地復(fù)用一個(gè)軟件制品,必須能夠以比構(gòu)造它更短的時(shí)間內(nèi)發(fā)現(xiàn)它軟件體系結(jié)構(gòu)SoftwareArchitecture軟件復(fù)用的方法(1)高級(jí)語言復(fù)用語言命令模式設(shè)計(jì)和代碼挖掘需要巨大的時(shí)間/精力投入收益不可預(yù)知源代碼構(gòu)件專為復(fù)用開發(fā)的構(gòu)件成功用于小的、易于理解的領(lǐng)域通用構(gòu)件庫傾向于不實(shí)用軟件模式使用抽象的算法和數(shù)據(jù)結(jié)構(gòu),而非源代碼在高于代碼的抽象層次上形式化規(guī)約可能因?yàn)樘珡?fù)雜而難以定位、理解和使用軟件體系結(jié)構(gòu)SoftwareArchitecture軟件復(fù)用的方法(2)應(yīng)用系統(tǒng)生成器類似于程序語言編譯器,但適用于較窄的領(lǐng)域應(yīng)用于非常高層、專用的抽象不適用于廣泛的應(yīng)用

12、甚高級(jí)語言和轉(zhuǎn)換系統(tǒng)使用“可執(zhí)行的規(guī)約語言”典型的數(shù)學(xué)抽象,例如,集合論更通用的應(yīng)用,但不像生成器功能強(qiáng)大(人工引導(dǎo))從規(guī)約到實(shí)現(xiàn)的轉(zhuǎn)換軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)SoftwareArchitecture軟件開發(fā)當(dāng)前所處的位置軟件系統(tǒng)天生是復(fù)雜的某些復(fù)雜性是可控的提高為開發(fā)人員提供的抽象層次努力同開發(fā)人員的思維模式相匹配針對(duì)上述問題,出現(xiàn)的特定技術(shù)描述軟件系統(tǒng)的符號(hào)體系從可復(fù)用的、粗粒度的構(gòu)造塊搭建系統(tǒng)的技術(shù)和工具關(guān)注于整體系統(tǒng)結(jié)構(gòu)還有很長(zhǎng)的路要走!軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的焦點(diǎn)和范圍軟件體系結(jié)構(gòu)是一個(gè)軟件系統(tǒng)的設(shè)計(jì)圖(blueprint)解決復(fù)雜性問題提高

13、復(fù)用和構(gòu)件市場(chǎng)的潛力包含形式化方法兩個(gè)主要焦點(diǎn)系統(tǒng)結(jié)構(gòu)需求和實(shí)現(xiàn)之間的對(duì)應(yīng) 構(gòu)件 + 組裝規(guī)則 + 行為規(guī)則理解系統(tǒng)級(jí)關(guān)注的框架全局流動(dòng)率,通訊模式,執(zhí)行控制機(jī)構(gòu),可升級(jí)性,系統(tǒng)演化路徑,容量,吞吐量,一致性,構(gòu)件兼容性,等軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的發(fā)展史“無體系結(jié)構(gòu)”設(shè)計(jì)階段萌芽階段以匯編語言進(jìn)行小規(guī)模應(yīng)用程序開發(fā)為特征以描述系統(tǒng)的高層抽象結(jié)構(gòu)為中心,不關(guān)心具體的建模細(xì)節(jié),劃分了體系結(jié)構(gòu)模型與傳統(tǒng)軟件結(jié)構(gòu)的界限,該階段以Kruchten提出的“4+1”模型為標(biāo)志出現(xiàn)了從不同側(cè)面描述系統(tǒng)的結(jié)構(gòu)模型,以UML為典型代表。出現(xiàn)了程序結(jié)構(gòu)設(shè)計(jì)主題,以控制流圖和

14、數(shù)據(jù)流圖構(gòu)成軟件結(jié)構(gòu)為特征高級(jí)階段初期階段軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的發(fā)展史Perry和Wolf認(rèn)為未來的年代是研究軟件體系結(jié)構(gòu)的時(shí)代 軟件體系結(jié)構(gòu)SoftwareArchitecture概念起源(1)對(duì)軟件體系結(jié)構(gòu)的研究可以追溯到20世紀(jì)60年代,當(dāng)時(shí)主要是對(duì)軟件結(jié)構(gòu)的研究。1969年,Brooks提出“概念結(jié)構(gòu)”In programming, the term architecture was first used to mean a description of a computer system that applied equally to mo

15、re than one actual system體系結(jié)構(gòu)和實(shí)現(xiàn)被仔細(xì)區(qū)分開來 Architecture tells what happensImplementation tells how it is made to happen體系結(jié)構(gòu)作為“一組系統(tǒng)的公共描述”的想法被保持下來,并成為概念的核心軟件體系結(jié)構(gòu)SoftwareArchitecture概念起源(2)1968年,Edsger Dijkstra提出“層次結(jié)構(gòu)”的想法當(dāng)時(shí),軟件體系結(jié)構(gòu)的研究主要是針對(duì)軟件結(jié)構(gòu),即軟件如何劃分和結(jié)構(gòu)化,而不是簡(jiǎn)單地編程以產(chǎn)生正確的結(jié)果以操作系統(tǒng)為例,Dijkstra首次提出“層次結(jié)構(gòu)”的想法,程序被歸結(jié)

16、到不同的層次,只有相鄰層次的程序可以互相訪問通過上述系統(tǒng)組織所展現(xiàn)出的概念完整性,可以減輕開發(fā)和維護(hù)的負(fù)擔(dān)軟件體系結(jié)構(gòu)SoftwareArchitecture概念起源(3)1970年代初,David Parnas提出一系列重要的思想1972年,信息隱蔽 (information-hiding)1974年,軟件結(jié)構(gòu) (software structures)1975年,程序家族 (program families) 一個(gè)程序家族是一組程序(并非所有這些程序已經(jīng)或?qū)⒈粯?gòu)造),把它們作為一組看待是有益或有用的理論上,一個(gè)程序家族可以通過遍歷一個(gè)決策樹進(jìn)行枚舉,樹的葉節(jié)點(diǎn)代表裝配好的、可執(zhí)行的系統(tǒng)這個(gè)

17、概念支持從現(xiàn)存的家族成員導(dǎo)出新成員的想法,過程是在決策樹上回溯,直到達(dá)到一個(gè)公共的節(jié)點(diǎn)(決策點(diǎn)),然后沿著新的路徑導(dǎo)出希望的成員這個(gè)概念還支持從一個(gè)公共決策點(diǎn)導(dǎo)出多個(gè)家族成員,以此解釋這些成員之間的相似和不同軟件體系結(jié)構(gòu)SoftwareArchitecture概念起源(4)在決策樹上越靠近根節(jié)點(diǎn)的部分,越代表了對(duì)程序家族成員保持穩(wěn)定的那些早期設(shè)計(jì)決策在這樣的上下文中,早期決策代表特定的體系結(jié)構(gòu)后期決策(靠近葉節(jié)點(diǎn))代表瑣細(xì)、易變的決策,例如編譯時(shí)刻、甚至加載時(shí)刻的常量程序家族概念對(duì)軟件體系結(jié)構(gòu)的意義在于,軟件體系結(jié)構(gòu)包含了決策樹根部或靠近根部的那些決策1976年,F(xiàn)rank DeRemer和H

18、ans Kron提出了模塊連接語言MIL75 “Programming-in-large versus programming-in-small”,IEEE Trans. on SE, June 1976軟件體系結(jié)構(gòu)SoftwareArchitecture概念起源(5)以編譯器為例,在19701980年代,編譯器設(shè)計(jì)發(fā)展成為標(biāo)準(zhǔn)的程序?qū)λ芯幾g器公共的決策被復(fù)用,例如,詞法分析器、語法分析器、語義樹、屬性文法、目標(biāo)代碼生成器、優(yōu)化器,等許多其他領(lǐng)域的成員之間,呈現(xiàn)出公共結(jié)構(gòu),互連策略,功能到構(gòu)件的分配,構(gòu)件接口,整體合理化基礎(chǔ)軟件體系結(jié)構(gòu)的工作可被看作一種事后努力為可復(fù)用的家族范圍的設(shè)計(jì)信息提

19、供結(jié)構(gòu)化的倉(cāng)庫試圖整理程序家族各成員之間的共性,從而家族成員內(nèi)在的高層設(shè)計(jì)決策不需要重復(fù)地發(fā)明、驗(yàn)證和描述軟件體系結(jié)構(gòu)SoftwareArchitecture概念起源(6)從1980年代初期開始,人們?cè)谲浖O(shè)計(jì)方面的注意力逐漸集中到面向?qū)ο蠓椒ㄉ?。?jīng)過二十多年的研究和實(shí)踐,人們形成了這樣一個(gè)共識(shí):對(duì)象并不是解決所有設(shè)計(jì)問題的靈丹妙藥,軟件工程必須超越面向?qū)ο蠓椒?,形成以體系結(jié)構(gòu)為中心的新方法面向?qū)ο蠓椒ㄔ谲浖w系結(jié)構(gòu)設(shè)計(jì)中存在的誤區(qū)基本特征:模塊化、封裝、繼承、多態(tài)等OO程序員更多關(guān)注的是低層次,而不是高層次的抽象對(duì)象(類)的粒度過?。黑呄蛴趯?shí)現(xiàn)層次對(duì)象(類)之間的關(guān)系類型過于一般化:依賴(d

20、ependency),泛化(generalization),關(guān)聯(lián)(association)軟件體系結(jié)構(gòu)SoftwareArchitecture發(fā)展現(xiàn)狀(1)真正現(xiàn)在意義上的軟件體系結(jié)構(gòu)的研究始于,Dewayne Perry和Alexander Wolf PW1992, and David Garlan和Mary Shaw GS1993的奠基性工作, and 其他人對(duì)體系結(jié)構(gòu)風(fēng)格的分類和評(píng)價(jià) KBA+1994, and 特定領(lǐng)域軟件體系結(jié)構(gòu) (DSSAs)的研究和應(yīng)用 DSSA1992應(yīng)用現(xiàn)狀體系結(jié)構(gòu)的設(shè)計(jì)是建立在直覺和經(jīng)驗(yàn)、而非堅(jiān)實(shí)的工程原則之上的體系結(jié)構(gòu)的描述是非形式化的和隨意的,經(jīng)常采用框

21、線圖(box-and-line diagram)加文字注釋的方法軟件體系結(jié)構(gòu)SoftwareArchitecture發(fā)展現(xiàn)狀(2)應(yīng)用后果體系結(jié)構(gòu)設(shè)計(jì)只是被開發(fā)人員含糊地理解難以對(duì)體系結(jié)構(gòu)設(shè)計(jì)作出一致性或完整性的分析隨著系統(tǒng)的演化,難以保持同系統(tǒng)原有體系結(jié)構(gòu)的一致,并且難以開發(fā)有效的工具,輔助人們進(jìn)行體系結(jié)構(gòu)的設(shè)計(jì)、性質(zhì)分析和驗(yàn)證軟件體系結(jié)構(gòu)SoftwareArchitecture發(fā)展現(xiàn)狀(3)在“軟件復(fù)用的展望和策略” DoD1992報(bào)告中,美國(guó)國(guó)防部強(qiáng)調(diào)了“以體系結(jié)構(gòu)為中心的復(fù)用”在整個(gè)軟件生存周期中,對(duì)于軟件開發(fā)和支持的重要性。以下是一些同體系結(jié)構(gòu)相關(guān)的研究項(xiàng)目,STARS, DODCA

22、RDS, DODPRISM, DODRAPIDE , Stanford Uni.C2 style and ADL, California Uni.Able (Architecture Based Languages and Environments), CMUACME Architecture Interchange Language, CMU Vitruvius, CMU軟件體系結(jié)構(gòu)SoftwareArchitecture發(fā)展現(xiàn)狀(4)鑒于是否有一個(gè)穩(wěn)定的軟件體系結(jié)構(gòu),對(duì)軟件的質(zhì)量和成本影響很大,因此如何獲得一個(gè)良好的體系結(jié)構(gòu)就成為當(dāng)今軟件界研究的重點(diǎn)。當(dāng)前軟件體系結(jié)構(gòu)研究和實(shí)踐中,一些最活

23、躍的領(lǐng)域包括:各種體系結(jié)構(gòu)風(fēng)格的匯編和總結(jié)體系結(jié)構(gòu)描述語言體系結(jié)構(gòu)的形式化基礎(chǔ)體系結(jié)構(gòu)分析技術(shù)基于體系結(jié)構(gòu)的開發(fā)方法體系結(jié)構(gòu)恢復(fù)和再工程支持體系結(jié)構(gòu)設(shè)計(jì)的工具和環(huán)境特定領(lǐng)域的軟件體系結(jié)構(gòu)(DSSA)軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的定義(1)Perry and Wolf, 1992軟件體系結(jié)構(gòu)(元素,形態(tài),基本理論)軟件體系結(jié)構(gòu)是一組具有特定形式的設(shè)計(jì)元素。這里的設(shè)計(jì)元素被分為三類:處理元素 (processing elements)、數(shù)據(jù)元素 (data elements)和連接元素(connection elements)Kruchten, 1994軟件體系

24、結(jié)構(gòu)涉及軟件高層結(jié)構(gòu)的設(shè)計(jì)和實(shí)現(xiàn),通過組裝一定數(shù)量的具有良好形態(tài)的元素,以滿足主要的功能和性能需求,例如,可擴(kuò)展性和可用性涉及抽象、分解/組裝、風(fēng)格/審美軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的定義(2)Shaw and Garlan, 1996一個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)定義了組成系統(tǒng)的計(jì)算構(gòu)件和構(gòu)件之間相互作用的關(guān)系軟件體系結(jié)構(gòu)層次的設(shè)計(jì)主要包括以下方面: 組成系統(tǒng)的構(gòu)件描述 構(gòu)件之間的交互 指導(dǎo)構(gòu)件交互的模式,以及 施加在模式上的約束Bass, Clements, and Kazman, 1997軟件體系結(jié)構(gòu)是一個(gè)系統(tǒng)的結(jié)構(gòu),包括軟件構(gòu)件、構(gòu)件的外部可見屬性、以及構(gòu)件

25、關(guān)系這里,“外部可見”屬性指的是其他構(gòu)件可以對(duì)該構(gòu)件所做的假定,比如它提供的服務(wù)、性能特性、錯(cuò)誤處理、共享資源的使用等軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的定義(3)Booch, Rumbaugh, and Jacobson, 1999軟件體系結(jié)構(gòu)是一組關(guān)于下述問題的重要決定,軟件系統(tǒng)的組織構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素和它們接口的選擇這些模型元素之間的協(xié)作所描述的行為這些結(jié)構(gòu)化和行為元素的組裝,以形成更大的子系統(tǒng)指導(dǎo)這種組織(靜態(tài)和動(dòng)態(tài)元素,以及它們的接口、協(xié)作和組裝)的體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)不僅關(guān)注結(jié)構(gòu)和行為,也關(guān)注使用、功能、性能、彈性、復(fù)用、可理解性、經(jīng)濟(jì)和技術(shù)約束

26、與折衷、審美考慮軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的定義(4)Design viewDeployment viewImplementation viewProcess viewUse caseviewvocabularyfunctionalitysystem assemblyconfiguration managementsystem topologydistributiondeliveryinstallationperformancescalabilitythroughputbehavior采用UML進(jìn)行軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)SoftwareArchite

27、cture軟件體系結(jié)構(gòu)的定義(5)一個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)定義了組成系統(tǒng)的 構(gòu)件(components), 連接件(connectors),和 它們之間的匹配這里,構(gòu)件用于實(shí)施計(jì)算和保存狀態(tài),連接件用于表達(dá)構(gòu)件之間的關(guān)系,構(gòu)件和連接件之間的匹配表示了系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。A2A1A3B1B2軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)的關(guān)鍵概念三類基本的“積木(building blocks)”構(gòu)件(components)連接件(connectors)配置(configurations)理想地,“積木”應(yīng)該獨(dú)立定義支持在不同上下文環(huán)境中的復(fù)用支持沒有被當(dāng)初的開發(fā)者預(yù)料到的互連軟件體系結(jié)

28、構(gòu)SoftwareArchitecture構(gòu)件構(gòu)件是計(jì)算或數(shù)據(jù)儲(chǔ)存的單元Perry & Wolf定義中的處理元素和數(shù)據(jù)元素構(gòu)件是計(jì)算和狀態(tài)的場(chǎng)所客戶(clients)服務(wù)器(servers)數(shù)據(jù)庫(databases)過濾器(filters)層次(layers)抽象數(shù)據(jù)類型(ADTs)構(gòu)件可以是簡(jiǎn)單的或復(fù)合的復(fù)合構(gòu)件描述了一個(gè)(子)系統(tǒng)軟件體系結(jié)構(gòu)SoftwareArchitecture連接件連接件是對(duì)以下內(nèi)容進(jìn)行建模的體系結(jié)構(gòu)元素構(gòu)件之間的交互指導(dǎo)這些交互的規(guī)則簡(jiǎn)單交互過程調(diào)用共享變量訪問復(fù)雜和語義豐富的交互客戶/服務(wù)器協(xié)議數(shù)據(jù)庫訪問協(xié)議異步事件廣播管道數(shù)據(jù)流軟件體系結(jié)構(gòu)SoftwareAr

29、chitecture連接件傳統(tǒng)方法中,構(gòu)件之間的連接關(guān)系通常并不獨(dú)立存在,而是從屬于構(gòu)件,且表達(dá)能力較弱由于以下原因,表達(dá)構(gòu)件之間關(guān)系的連接件應(yīng)該從中分離出來,作為同構(gòu)件平等的第一類實(shí)體:連接件可能要表達(dá)構(gòu)件之間相當(dāng)復(fù)雜的關(guān)系語義,需要詳細(xì)的定義和復(fù)雜的規(guī)約復(fù)雜連接件的定義應(yīng)當(dāng)局部化,而不是分散定義在多個(gè)構(gòu)件中,以保證系統(tǒng)具有良好的結(jié)構(gòu)構(gòu)件之間的關(guān)系并非是固定不變的,有可能隨著系統(tǒng)的運(yùn)行需要?jiǎng)討B(tài)改變,這種改變應(yīng)封裝在連接件中 連接件和構(gòu)件一樣,都應(yīng)該是獨(dú)立的和各有分工的。構(gòu)件應(yīng)該只定義它的能力(包括功能和非功能兩個(gè)方面);連接件應(yīng)該規(guī)定構(gòu)件之間的交互 系統(tǒng)開發(fā)時(shí)常常復(fù)用已有的連接件,例如過濾器

30、、客戶服務(wù)器協(xié)議、數(shù)據(jù)庫訪問協(xié)議等軟件體系結(jié)構(gòu)SoftwareArchitecture配置/拓?fù)潴w系結(jié)構(gòu)的配置或拓?fù)涫菢?gòu)件和連接件的連接圖(connected graph),描述了系統(tǒng)結(jié)構(gòu) 適當(dāng)?shù)倪B接并發(fā)和分布特性符合設(shè)計(jì)啟發(fā)式規(guī)則和風(fēng)格規(guī)則復(fù)合構(gòu)件本身就是配置軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件模型及實(shí)現(xiàn)構(gòu)件的定義 構(gòu)件是指語義完整、語法正確和有可復(fù)用價(jià)值的單位軟件,是軟件復(fù)用過程中可以明確辨識(shí)的元素;結(jié)構(gòu)上,它是語義描述、通訊接口和實(shí)現(xiàn)代碼的復(fù)合體。軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件模型及實(shí)現(xiàn)構(gòu)件模型的三個(gè)主要流派 OMG(Object Manag

31、ement Group,對(duì)象管理集團(tuán))的CORBA(Common Object Request Broker Architecture,通用對(duì)象請(qǐng)求代理結(jié)構(gòu))Sun的EJB(Enterprise Java Bean)Microsoft的DCOM(Distributed Component Object Model,分布式構(gòu)件對(duì)象模型)。 軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件模型及實(shí)現(xiàn)青鳥構(gòu)件模型軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件模型及實(shí)現(xiàn)構(gòu)件獲取從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或作適應(yīng)性修改,得到可復(fù)用的構(gòu)件;通過遺留工程,將具有潛在復(fù)用價(jià)值的

32、構(gòu)件提取出來,得到可復(fù)用的構(gòu)件;從市場(chǎng)上購(gòu)買現(xiàn)成的商業(yè)構(gòu)件,即COTS(Commercial Off-The-Shell)構(gòu)件;開發(fā)新的符合要求的構(gòu)件。 軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件模型及實(shí)現(xiàn)構(gòu)件管理構(gòu)件描述 構(gòu)件分類與組織人員及權(quán)限管理軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件模型及實(shí)現(xiàn)構(gòu)件描述構(gòu)件模型是對(duì)構(gòu)件本質(zhì)的抽象描述,主要是為構(gòu)件的制作與構(gòu)件的復(fù)用提供依據(jù);從管理角度出發(fā),也需要對(duì)構(gòu)件進(jìn)行描述,例如:實(shí)現(xiàn)方式、實(shí)現(xiàn)體、注釋、生產(chǎn)者、生產(chǎn)日期、大小、價(jià)格、版本和關(guān)聯(lián)構(gòu)件等信息,它們與構(gòu)件模型共同組成了對(duì)構(gòu)件的完整描述。軟件體系結(jié)構(gòu)Softwar

33、eArchitecture構(gòu)件管理構(gòu)件分類與組織 關(guān)鍵字分類法刻面分類法超文本組織方法 軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件管理關(guān)鍵字分類法軟件體系結(jié)構(gòu)SoftwareArchitecture刻面分類法使用環(huán)境應(yīng)用領(lǐng)域功能層次表示方法軟件體系結(jié)構(gòu)SoftwareArchitecture超文本組織法軟件體系結(jié)構(gòu)SoftwareArchitecture人員及權(quán)限管理 一般來講,構(gòu)件庫系統(tǒng)可包括五類用戶,即注冊(cè)用戶、公共用戶、構(gòu)件提交者、一般系統(tǒng)管理員和超級(jí)系統(tǒng)管理員。 軟件體系結(jié)構(gòu)SoftwareArchitecture構(gòu)件復(fù)用檢索與提取構(gòu)件 理解與評(píng)價(jià)構(gòu)件修改構(gòu)件構(gòu)件組裝軟件

34、體系結(jié)構(gòu)SoftwareArchitecture檢索與提取構(gòu)件 基于關(guān)鍵字的檢索刻面檢索法超文本檢索法其他檢索方法軟件體系結(jié)構(gòu)SoftwareArchitecture理解與評(píng)價(jià)構(gòu)件 構(gòu)件的功能與行為相關(guān)的領(lǐng)域知識(shí)可適應(yīng)性約束條件與例外情形可以預(yù)見的修改部分及修改方法軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的意義體系結(jié)構(gòu)是風(fēng)險(xiǎn)承擔(dān)者進(jìn)行交流的手段 軟件體系結(jié)構(gòu)代表了系統(tǒng)的公共的高層次的抽象。這樣,系統(tǒng)的大部分有關(guān)人員(即使不是全部)能把它作為建立一個(gè)互相理解的基礎(chǔ),形成統(tǒng)一認(rèn)識(shí),互相交流。 體系結(jié)構(gòu)提供了一種共同語言來表達(dá)各種關(guān)注和協(xié)商,進(jìn)而對(duì)大型復(fù)雜系統(tǒng)能進(jìn)行理智的管理

35、。這對(duì)項(xiàng)目最終的質(zhì)量和使用有極大的影響。 軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的意義體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn) 軟件體系結(jié)構(gòu)明確了對(duì)系統(tǒng)實(shí)現(xiàn)的約束條件軟件體系結(jié)構(gòu)決定了開發(fā)和維護(hù)組織的組織結(jié)構(gòu)軟件體系結(jié)構(gòu)制約著系統(tǒng)的質(zhì)量屬性通過研究軟件體系結(jié)構(gòu)可能預(yù)測(cè)軟件的質(zhì)量軟件體系結(jié)構(gòu)使推理和控制更改更簡(jiǎn)單軟件體系結(jié)構(gòu)有助于循序漸進(jìn)的原型設(shè)計(jì)軟件體系結(jié)構(gòu)可以作為培訓(xùn)的基礎(chǔ)軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的意義軟件體系結(jié)構(gòu)是可傳遞和可復(fù)用的模型軟件體系結(jié)構(gòu)級(jí)的復(fù)用意味著體系結(jié)構(gòu)的決策能在具有相似需求的多個(gè)系統(tǒng)中發(fā)生影響,這比代碼級(jí)的復(fù)用要有更大的

36、好處軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的應(yīng)用現(xiàn)狀軟件體系結(jié)構(gòu)描述語言體系結(jié)構(gòu)描述構(gòu)造與表示體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證體系結(jié)構(gòu)發(fā)現(xiàn)、演化與復(fù)用基于體系結(jié)構(gòu)的軟件開發(fā)方法特定領(lǐng)域的體系結(jié)構(gòu)框架軟件體系結(jié)構(gòu)支持工具軟件產(chǎn)品線體系結(jié)構(gòu)建立評(píng)價(jià)軟件體系結(jié)構(gòu)的方法軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的應(yīng)用現(xiàn)狀軟件體系結(jié)構(gòu)描述語言ADL提供了具體的語法與刻畫體系結(jié)構(gòu)的概念框架。ADL使得系統(tǒng)開發(fā)者能夠很好地描述他們?cè)O(shè)計(jì)的體系結(jié)構(gòu),以便與他人交流,能夠用提供的工具對(duì)許多實(shí)例進(jìn)行分析。 軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的應(yīng)用

37、現(xiàn)狀體系結(jié)構(gòu)描述構(gòu)造與表示(1) 按照一定的描述方法,用體系結(jié)構(gòu)描述語言對(duì)體系結(jié)構(gòu)進(jìn)行說明的結(jié)果則稱為體系結(jié)構(gòu)的表示,而將描述體系結(jié)構(gòu)的過程稱為體系結(jié)構(gòu)構(gòu)造 軟件體系結(jié)構(gòu)SoftwareArchitecture軟件體系結(jié)構(gòu)的應(yīng)用現(xiàn)狀體系結(jié)構(gòu)描述構(gòu)造與表示(2) Kruchten提出的“4+1”模型。Booch從UML的角度給出了一種由設(shè)計(jì)視圖、過程視圖、實(shí)現(xiàn)視圖和部署視圖,再加上一個(gè)用例視圖構(gòu)成的體系結(jié)構(gòu)描述模型。IEEE于1995年成立了體系結(jié)構(gòu)工作組,起草了體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)IEEE P1471。Rational從資產(chǎn)復(fù)用的角度提出了體系結(jié)構(gòu)描述的規(guī)格說明框架。 軟件體系結(jié)構(gòu)Softwa

38、reArchitecture軟件體系結(jié)構(gòu)的應(yīng)用現(xiàn)狀體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(1) 體系結(jié)構(gòu)分析的內(nèi)容可分為結(jié)構(gòu)分析、功能分析和非功能分析。非功能分析:定量分析方法、推斷分析方法。Kazman等人提出了一種非功能分析的體系結(jié)構(gòu)分析方法SAAM,并運(yùn)用場(chǎng)景技術(shù),提出了基于場(chǎng)景的體系結(jié)構(gòu)分析方法,而Barbacci等人提出了多質(zhì)量屬性情況下的體系結(jié)構(gòu)質(zhì)量模型、分析與權(quán)衡方法ATAM。軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(2) 生成一個(gè)滿足軟件需求的體系結(jié)構(gòu)的過程即為體系結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)設(shè)計(jì)過程的本質(zhì)在于:將系統(tǒng)分解成相應(yīng)的組成成分(如構(gòu)件、連接件),并將這些

39、成分重新組裝成一個(gè)系統(tǒng)。軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(3) 體系結(jié)構(gòu)設(shè)計(jì)有兩大類方法:過程驅(qū)動(dòng)方法和問題列表驅(qū)動(dòng)方法?;谶^程驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法適用范圍廣,易于裁減,具備動(dòng)態(tài)特點(diǎn),通用性與實(shí)踐性強(qiáng)。問題列表驅(qū)動(dòng)法的基本思想是枚舉設(shè)計(jì)空間,并考慮設(shè)計(jì)維的相關(guān)性,以此來選擇體系結(jié)構(gòu)的風(fēng)格。該方法適用于特定領(lǐng)域,是靜態(tài)的,并可以實(shí)現(xiàn)量化體系結(jié)構(gòu)設(shè)計(jì)空間。 軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(4) 體系結(jié)構(gòu)設(shè)計(jì)研究的重點(diǎn)內(nèi)容之一就是體系結(jié)構(gòu)風(fēng)格或模式,體系結(jié)構(gòu)模式在本質(zhì)上反映了一些特定的元素、按照特定的方式組

40、成一個(gè)特定的結(jié)構(gòu),該結(jié)構(gòu)應(yīng)有利于上下文環(huán)境下的特定問題的解決。軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(5) 體系結(jié)構(gòu)模式分為兩個(gè)大類:固定術(shù)語和參考模型。已知的固定術(shù)語類的體系結(jié)構(gòu)模型包括管道過濾器、客戶/服務(wù)器、面向?qū)ο蟆⒑诎?、分層、?duì)等模式、狀態(tài)轉(zhuǎn)換、一些派生的固定術(shù)語類的體系結(jié)構(gòu)模式,包括Gen Voca,C2和REST等;而參考模型則相對(duì)較多,常常與特定領(lǐng)域相關(guān)。軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(6)體系結(jié)構(gòu)測(cè)試著重于仿真系統(tǒng)模型,解決體系結(jié)構(gòu)層的主要問題。由于測(cè)試的抽象層次不同,體系結(jié)構(gòu)測(cè)試策略可以分為

41、單元/子系統(tǒng)/集成/驗(yàn)收測(cè)試等階段的測(cè)試策略。在體系結(jié)構(gòu)集成測(cè)試階段,Debra等人提出了一組針對(duì)體系結(jié)構(gòu)的測(cè)試覆蓋標(biāo)準(zhǔn),Paola Inveradi提出了一種基于CHAM的體系結(jié)構(gòu)語義驗(yàn)證技術(shù)。軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)發(fā)現(xiàn)、演化與復(fù)用(1)體系結(jié)構(gòu)發(fā)現(xiàn)解決如何從已經(jīng)存在的系統(tǒng)中提取軟件的體系結(jié)構(gòu),屬于逆向工程范疇。Waters等人提出了一種迭代式體系結(jié)構(gòu)發(fā)現(xiàn)過程,即由不同的人員對(duì)系統(tǒng)進(jìn)行描述,然后對(duì)這些描述進(jìn)行分類并融合,發(fā)現(xiàn)并解除沖突,將體系結(jié)構(gòu)新屬性加入到已有的體系結(jié)構(gòu)模型中,并重復(fù)該過程直至體系結(jié)構(gòu)描述充分。 軟件體系結(jié)構(gòu)SoftwareArchit

42、ecture體系結(jié)構(gòu)發(fā)現(xiàn)、演化與復(fù)用(2)由于系統(tǒng)需求、技術(shù)、環(huán)境、分布等因素的變化而最終導(dǎo)致軟件體系結(jié)構(gòu)的變動(dòng),稱之為軟件體系結(jié)構(gòu)演化。軟件系統(tǒng)在運(yùn)行時(shí)刻的體系結(jié)構(gòu)變化稱為體系結(jié)構(gòu)的動(dòng)態(tài)性,而將體系結(jié)構(gòu)的靜態(tài)修改稱為體系結(jié)構(gòu)擴(kuò)展。體系結(jié)構(gòu)擴(kuò)展與體系結(jié)構(gòu)動(dòng)態(tài)性都是體系結(jié)構(gòu)適應(yīng)性和演化性的研究范疇。軟件體系結(jié)構(gòu)SoftwareArchitecture體系結(jié)構(gòu)發(fā)現(xiàn)、演化與復(fù)用(3)體系結(jié)構(gòu)復(fù)用屬于設(shè)計(jì)復(fù)用,比代碼復(fù)用更抽象。由于軟件體系結(jié)構(gòu)是系統(tǒng)的高層抽象,反映了系統(tǒng)的主要組成元素及其交互關(guān)系,因而較算法更穩(wěn)定,更適合于復(fù)用。體系結(jié)構(gòu)模式就是體系結(jié)構(gòu)復(fù)用研究的一個(gè)成果,而體系結(jié)構(gòu)參考模型則是特定域軟件體系結(jié)構(gòu)的復(fù)用的成熟的象征。軟件體系結(jié)構(gòu)SoftwareArchitecture基于體系結(jié)構(gòu)的軟件開發(fā)方法(1)在引入了體系結(jié)構(gòu)的軟件開發(fā)之后,應(yīng)用系統(tǒng)的構(gòu)造過程變?yōu)椤皢栴}定義軟件需求軟件體系結(jié)構(gòu)軟件設(shè)計(jì)軟件實(shí)現(xiàn)”,可以認(rèn)為軟件體系結(jié)構(gòu)架起了軟件需求與軟件設(shè)計(jì)之間的一座橋梁。 軟件體系結(jié)構(gòu)SoftwareArchitecture基于體

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論