-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
什么是軟件體系結(jié)構(gòu)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于什么是軟件體系結(jié)構(gòu)的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、為什么要研究軟件體系結(jié)構(gòu)
軟件體系結(jié)構(gòu)為軟件系統(tǒng)提供了一個(gè)結(jié)構(gòu) •行為和屬性的高級(jí)抽象,由構(gòu)成系統(tǒng)的元素的描述。這些元素的相互作用 。
指導(dǎo)元素成的模式以及這些模式的約束組成。不僅指定了系
統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),而且顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對(duì)應(yīng)關(guān)系,提供了
一些設(shè)計(jì)決策的基本原理。根據(jù)軟件體系結(jié)構(gòu)的定義,你認(rèn)為軟件體系結(jié)枸的模型應(yīng)該有哪
些部分組成?
構(gòu)件:可以是一組代碼,如程序的模塊也可以是一個(gè)獨(dú)立的程序 如數(shù)據(jù)庫(kù) 的sQL服務(wù)器;連接件:是關(guān)系的抽象,用以表示構(gòu)件之間的相互作用。如過(guò)程調(diào)用、管道、遠(yuǎn)程過(guò)程調(diào)用等:限制:用于對(duì)構(gòu)件和連接件的語(yǔ)義說(shuō)明。
二、軟件體系結(jié)構(gòu)的影響
軟件體系結(jié)構(gòu)貫穿于軟件研發(fā)的整個(gè)生命周期內(nèi),具有重要的影響。這主要從以下三個(gè)方面來(lái)進(jìn)行考察:
利益相關(guān)人員之間的交流
:軟件體系結(jié)構(gòu)是一種常見(jiàn)的對(duì)系統(tǒng)的抽象,代碼級(jí)別的系統(tǒng)抽象僅僅可以成為程序員的交流工具,而包括程序員在內(nèi)的絕大多數(shù)系統(tǒng)的利益相關(guān)人員都借助軟件體系結(jié)構(gòu)來(lái)進(jìn)行彼此理解、協(xié)商、達(dá)成共識(shí)或者相互溝通的基礎(chǔ)。
系統(tǒng)設(shè)計(jì)的前期決策
:軟件體系結(jié)構(gòu)是我們所開(kāi)發(fā)的軟件系統(tǒng)最早期設(shè)計(jì)決策的體現(xiàn),而這些早期決策對(duì)軟件系統(tǒng)的后續(xù)開(kāi)發(fā)、部署和維護(hù)具有相當(dāng)重要的影響。這也是能夠?qū)λ_(kāi)發(fā)系統(tǒng)進(jìn)行分析的最早時(shí)間點(diǎn)。
可傳遞的系統(tǒng)級(jí)抽象
:軟件體系結(jié)構(gòu)是關(guān)于系統(tǒng)構(gòu)造以及系統(tǒng)各個(gè)元素工作機(jī)制的相對(duì)較小、卻又能夠突出反映問(wèn)題的模型。由于軟件系統(tǒng)具有的一些共通特性,這種模型可以在多個(gè)系統(tǒng)之間傳遞,特別是可以應(yīng)用到具有相似質(zhì)量屬性和功能需求的系統(tǒng)中,并能夠促進(jìn)大規(guī)模軟件的系統(tǒng)級(jí)復(fù)用。
三、什么是動(dòng)態(tài)軟件體系結(jié)構(gòu)
百度百科:軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組組合連接起來(lái)。這一定義注重區(qū)分處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件,這一方法在其他的定義和方法中基本上得到保持。
四、幾種常見(jiàn)的軟件體系結(jié)構(gòu)及特點(diǎn)分析
20世紀(jì)60年代的軟件危機(jī)使得人們開(kāi)始重視軟件工程的研究。起初,人們把軟件設(shè)計(jì)的重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)和算法的選擇上,然而隨著軟件系統(tǒng)規(guī)模越來(lái)越大,對(duì)總體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和規(guī)格說(shuō)明變得異常重要。隨著軟件危機(jī)程度的加劇,軟件體系結(jié)構(gòu)(software architecture)這一概念應(yīng)運(yùn)而生。軟件體系結(jié)構(gòu)著眼于軟件系統(tǒng)的全局組織形式,在較高層次上把握系統(tǒng)各部分之間的內(nèi)在聯(lián)系,將軟件開(kāi)發(fā)的焦點(diǎn)從成百上千的代碼上轉(zhuǎn)移到粒度較大的體系結(jié)構(gòu)元素及其交互的設(shè)計(jì)上。與傳統(tǒng)軟件技術(shù)相比,軟件體系結(jié)構(gòu)理論的提出不僅有利于解決軟件系統(tǒng)日益增加的規(guī)模和復(fù)雜度的問(wèn)題,有利于構(gòu)件的重用,也有利于軟件生產(chǎn)率的提高。面向方面軟件開(kāi)發(fā)(AOSD)認(rèn)為系統(tǒng)是由核心關(guān)注點(diǎn)(corn concern)和橫切關(guān)注點(diǎn)(cross-cutting concern)有機(jī)地交織在一起而形成的。核心關(guān)注點(diǎn)是軟件要實(shí)現(xiàn)的主要功能和目標(biāo),橫切關(guān)注點(diǎn)是那些與核心關(guān)注點(diǎn)之間有橫切作用的關(guān)注點(diǎn),如系統(tǒng)日志、事務(wù)處理和權(quán)限驗(yàn)證等。AOSD通過(guò)分離系統(tǒng)的橫切關(guān)注點(diǎn)和核心關(guān)注點(diǎn),使得系統(tǒng)的設(shè)計(jì)和維護(hù)變得容易很多。
Extremadura大學(xué)的Navasa等人[1]在2002年提出了將面向方面軟件開(kāi)發(fā)技術(shù)引入到軟件體系結(jié)構(gòu)的設(shè)計(jì)中,稱之為面向方面軟件體系結(jié)構(gòu)(aspect oriented software architecture,AO-SA),這樣能夠結(jié)合兩者的優(yōu)點(diǎn),但是并沒(méi)有給出構(gòu)建面向方面軟件體系結(jié)構(gòu)的詳細(xì)方法。
盡管目前對(duì)于面向方面軟件體系結(jié)構(gòu)這個(gè)概念尚未形成統(tǒng)一的認(rèn)識(shí),但是一般認(rèn)為面向方面軟件體系結(jié)構(gòu)在傳統(tǒng)軟件體系結(jié)構(gòu)基礎(chǔ)上增加了方面構(gòu)件(aspect component)這一新的構(gòu)成單元,通過(guò)方面構(gòu)件來(lái)封裝系統(tǒng)的橫切關(guān)注點(diǎn)。目前國(guó)內(nèi)外對(duì)于面向方面軟件體系模型的研究還相對(duì)較少,對(duì)它的構(gòu)成單元模型的研究更少,通常只關(guān)注方面構(gòu)件這一構(gòu)成單元。方面構(gòu)件最早是由Lieberherr等人[2]提出的,它是在自適應(yīng)可插拔構(gòu)件(adaptive plug and play component,APPC)基礎(chǔ)之上通過(guò)引入面向方面編程(AOP)思想擴(kuò)展一個(gè)可更改的接口而形成的,但它關(guān)于請(qǐng)求接口和服務(wù)接口的定義很模糊,未能給出一個(gè)清晰的方面構(gòu)件模型。Pawlak等人[3]提出了一個(gè)面向方面的框架,該框架主要包含了一個(gè)方面構(gòu)件模型———Java方面構(gòu)件(Java aspect component,JAC),但該方面構(gòu)件模型僅包含了切點(diǎn)(pointcut),并把AOP中裝備(advice)集成到了切點(diǎn)的表達(dá)式中,它主要從實(shí)現(xiàn)的角度進(jìn)行了闡述,并沒(méi)有給出詳細(xì)的方面構(gòu)件模型。本文沒(méi)有只關(guān)注面向方面軟件體系結(jié)構(gòu)中方面構(gòu)件這一構(gòu)成單元模型,還詳細(xì)分析了它的另外兩個(gè)構(gòu)成單元,即構(gòu)件和連接件,因?yàn)槊嫦蚍矫孳浖w系結(jié)構(gòu)各部分之間是相互關(guān)聯(lián)的。
1面向方面軟件體系結(jié)構(gòu)相關(guān)概念
面向方面軟件體系結(jié)構(gòu)涉及諸多概念,以下將分別介紹。軟件體系結(jié)構(gòu)在軟件工程領(lǐng)域有著廣泛的影響,但當(dāng)前仍未形成一個(gè)統(tǒng)一的、標(biāo)準(zhǔn)的定義。目前國(guó)內(nèi)外普遍認(rèn)可的看法是軟件體系結(jié)構(gòu)包含構(gòu)件、連接件和約束[4]。其中約束描述了體系結(jié)構(gòu)配置和拓?fù)涞囊螅_定了體系結(jié)構(gòu)的構(gòu)件與連接件的連接關(guān)系。這樣就可以把軟件體系結(jié)構(gòu)寫成
軟件體系結(jié)構(gòu)(software architecture)=構(gòu)件(components)+
連接件(connectors)+約束(constraints)
構(gòu)件是軟件體系結(jié)構(gòu)的基本元素之一。一般認(rèn)為,構(gòu)件是指具有一定功能、可明確辨識(shí)的軟件單位,并且具備語(yǔ)義完整、語(yǔ)法正確、有可重用價(jià)值的特點(diǎn),然而目前對(duì)于構(gòu)件的具體結(jié)構(gòu)及構(gòu)成并沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)[5],而且一些主要的構(gòu)件技術(shù)也沒(méi)有使用相同的構(gòu)件類型。另外,當(dāng)前被廣泛接受的構(gòu)件定義并不包含具體的軟件構(gòu)件模型(software component model)。例如,Szyperski等人[6]給出了軟件構(gòu)件一個(gè)很有名的定義:軟件構(gòu)件是一個(gè)僅帶特定契約接口和顯式語(yǔ)境依賴的結(jié)構(gòu)單位,它可以獨(dú)立部署,易于第三方整合。但是關(guān)于軟件構(gòu)件模型有一個(gè)被普遍接受的觀點(diǎn)是:軟件構(gòu)件是一個(gè)具有服務(wù)提供和服務(wù)請(qǐng)求功能的軟件單元[7]。
連接件是軟件體系結(jié)構(gòu)另一個(gè)基本的構(gòu)成元素,是用來(lái)建立構(gòu)件間交互以及支配這些交互規(guī)則的構(gòu)造模塊。連接件最先是由Shaw[8]提出來(lái)的,她建議把連接件作為軟件體系結(jié)構(gòu)中第一類實(shí)體,用來(lái)表示普通構(gòu)件之間的交互關(guān)系。目前對(duì)于連接件尚未形成統(tǒng)一的認(rèn)識(shí),盡管在軟件體系結(jié)構(gòu)中強(qiáng)調(diào)了連接件存在的必要性,但是關(guān)于連接件模型的研究還很少,連接件的實(shí)際應(yīng)用還不成熟。
面向方面軟件體系結(jié)構(gòu)在傳統(tǒng)軟件體系結(jié)構(gòu)的基礎(chǔ)上增加了方面構(gòu)件單元。通常認(rèn)為,方面構(gòu)件是封裝了系統(tǒng)橫切關(guān)注點(diǎn)的一類特殊的構(gòu)件。目前關(guān)于方面構(gòu)件模型的研究還處于起步階段。
2面向方面軟件體系結(jié)構(gòu)模型
由于傳統(tǒng)軟件體系結(jié)構(gòu)模型包含構(gòu)件、連接件和約束,而面向方面軟件體系結(jié)構(gòu)是在傳統(tǒng)軟件體系結(jié)構(gòu)的基礎(chǔ)之上擴(kuò)展了方面構(gòu)件,所以面向方面軟件體系模型結(jié)構(gòu)包含構(gòu)件、連接件、方面構(gòu)件和約束。其中約束描述了面向方面體系結(jié)構(gòu)配置和拓?fù)涞囊?,確定了體系結(jié)構(gòu)的構(gòu)件、連接件和方面構(gòu)件之間的連接關(guān)系,而構(gòu)件、連接件、方面構(gòu)件是它的三個(gè)基本的構(gòu)成單元。以下對(duì)這三個(gè)構(gòu)成單元的模型進(jìn)行詳細(xì)的設(shè)計(jì)。
以上就是關(guān)于什么是軟件體系結(jié)構(gòu)相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
抖推貓會(huì)員有必要開(kāi)嗎(抖推貓開(kāi)通會(huì)員有什么好處)
小紅書kol和koc的區(qū)別(小紅書的kol是什么意思)
線上直播課需要什么資質(zhì)(線上直播課需要什么資質(zhì)和證書)
景觀設(shè)計(jì)快題任務(wù)書(景觀設(shè)計(jì)快題任務(wù)書怎么寫)
松江庭院景觀設(shè)計(jì)工作室(松江庭院景觀設(shè)計(jì)工作室電話)
問(wèn)大家
張家港大眾熟知的中英文域名正規(guī)什么價(jià)格?路過(guò)的大俠們幫回答下
濟(jì)南,選擇什么樣的征婚相親機(jī)構(gòu)才能更好脫單呢?再婚交友求推薦
大通業(yè)內(nèi)數(shù)得著的MV視頻直播拍攝制作需要關(guān)注什么問(wèn)題?各位大仙們給個(gè)建議
有什么渠道能靠賣一些自己的設(shè)計(jì)或者小作品之類賺錢的嘛?
濟(jì)南有什么正規(guī)、靠譜的婚戀紅娘平臺(tái)嗎?同城征婚機(jī)構(gòu)哪家好?
龍巖稱心的網(wǎng)站建設(shè)設(shè)計(jì)現(xiàn)在什么價(jià)格?諸位同學(xué)們給個(gè)意見(jiàn)
濟(jì)南相親會(huì),哪里有呢?濟(jì)南千佛山相親會(huì) 什么時(shí)間舉辦呢?
淮安值得信賴的申請(qǐng)中英文域名正規(guī)什么價(jià)格?在座的同學(xué)們跪求回答
邯鄲專業(yè)制作出名的候車廳有什么好的推薦嗎?麻煩大家指點(diǎn)一下
蠔油的瓶子設(shè)計(jì)為什么一直不改進(jìn)?
深圳心心相印策劃有限公司在沙井舞臺(tái)設(shè)備租賃行業(yè)服務(wù)好嗎?在座的大哥大姐們請(qǐng)回復(fù)下