① 編譯器採用什麼軟體體系結構風格
軟體架構:整個軟體系統的各個模塊之間的結構設計,是軟體工程范疇的概念,就象設計一棟房子由幾個什麼樣的板塊組成一樣。
軟體體系結構:是軟體編程風格範疇的一個通俗概念,比如說用C++、PoworBuild、Delphi等來進行軟體設計是面向對象的編程語言體系結構,而Basic、C、Foxbase的軟體體系結構特點是面向任務流程的(不是面向對象的編程語言)。
② 軟體工程中:體系結構和體系結構框架區別,體系結構框架和設計模式的區別.
簡單說吧,體系結構指的是構成系統的組成元素及其之間的關系,是形而上的東西。體系結構框架相對於體系結構更加務實,有些時候已經是一個半成品,可以在此基礎上進行定製開發或二次開發。設計模式不同於體系結構(甚至可以說沒有可比性,雖然定義上有些容易混淆),因為它更加通用,是設計的通用解決方案和經驗總結。舉個例子來說,你可以說我們討論一下某個系統的體系結構,但不能說討論一下某個系統的設計模式,最多隻能說其中用到了多少種設計模式及其變體。
③ 請問:關於軟體架構風格和架構模式之間的區別,有什麼論文、文獻進行闡述和剖析中英文均可。
你這個問題可以在《軟體工程》教材或者 軟體工程師,軟體架構設計師教材中得到完整的解釋。下面做簡單的解釋,並附上關於軟體體系風格和架構模式的PPT
體系結構風格:是描述某一特定應用領域中系統組織方式的慣用模式。
體系結構模式:是具體軟體體系結構的模板,表示軟體系統的基本結構化組織方式。它提供了一套預定義的子系統,規定他們的職責,並包含用於組織它們之間關系的規則和指南。
④ 請問軟體架構與軟體體系結構有什麼關系
軟體架構:整個軟體系統的各個模塊之間的結構設計,是軟體工程范疇的概念,就象設計一棟房子由幾個什麼樣的板塊組成一樣。
軟體體系結構:是軟體編程風格範疇的一個通俗概念,比如說用C++、PoworBuild、Delphi等來進行軟體設計是面向對象的編程語言體系結構,而Basic、C、Foxbase的軟體體系結構特點是面向任務流程的(不是面向對象的編程語言)。
⑤ 軟體工程中的主要體系結構有哪些,並說明區別
20世紀60年代的軟體危機使得人們開始重視軟體工程的研究。起初,人們把軟體設計的重點放在數據結構和演算法的選擇上,然而隨著軟體系統規模越來越大,對總體的系統結構設計和規格說明變得異常重要。隨著軟體危機程度的加劇,軟體體系結構(software architecture)這一概念應運而生。軟體體系結構著眼於軟體系統的全局組織形式,在較高層次上把握系統各部分之間的內在聯系,將軟體開發的焦點從成百上千的代碼上轉移到粒度較大的體系結構元素及其交互的設計上。與傳統軟體技術相比,軟體體系結構理論的提出不僅有利於解決軟體系統日益增加的規模和復雜度的問題,有利於構件的重用,也有利於軟體生產率的提高。面向方面軟體開發(AOSD)認為系統是由核心關注點(corn concern)和橫切關注點(cross-cutting concern)有機地交織在一起而形成的。核心關注點是軟體要實現的主要功能和目標,橫切關注點是那些與核心關注點之間有橫切作用的關注點,如系統日誌、事務處理和許可權驗證等。AOSD通過分離系統的橫切關注點和核心關注點,使得系統的設計和維護變得容易很多。
Extremara大學的Navasa等人[1]在2002年提出了將面向方面軟體開發技術引入到軟體體系結構的設計中,稱之為面向方面軟體體系結構(aspect oriented software architecture,AO-SA),這樣能夠結合兩者的優點,但是並沒有給出構建面向方面軟體體系結構的詳細方法。
盡管目前對於面向方面軟體體系結構這個概念尚未形成統一的認識,但是一般認為面向方面軟體體系結構在傳統軟體體系結構基礎上增加了方面構件(aspect component)這一新的構成單元,通過方面構件來封裝系統的橫切關注點。目前國內外對於面向方面軟體體系模型的研究還相對較少,對它的構成單元模型的研究更少,通常只關注方面構件這一構成單元。方面構件最早是由Lieberherr等人[2]提出的,它是在自適應可插拔構件(adaptive plug and play component,APPC)基礎之上通過引入面向方面編程(AOP)思想擴展一個可更改的介面而形成的,但它關於請求介面和服務介面的定義很模糊,未能給出一個清晰的方面構件模型。Pawlak等人[3]提出了一個面向方面的框架,該框架主要包含了一個方面構件模型———Java方面構件(Java aspect component,JAC),但該方面構件模型僅包含了切點(pointcut),並把AOP中裝備(advice)集成到了切點的表達式中,它主要從實現的角度進行了闡述,並沒有給出詳細的方面構件模型。本文沒有隻關注面向方面軟體體系結構中方面構件這一構成單元模型,還詳細分析了它的另外兩個構成單元,即構件和連接件,因為面向方面軟體體系結構各部分之間是相互關聯的。
1面向方面軟體體系結構相關概念
面向方面軟體體系結構涉及諸多概念,以下將分別介紹。軟體體系結構在軟體工程領域有著廣泛的影響,但當前仍未形成一個統一的、標準的定義。目前國內外普遍認可的看法是軟體體系結構包含構件、連接件和約束[4]。其中約束描述了體系結構配置和拓撲的要求,確定了體系結構的構件與連接件的連接關系。這樣就可以把軟體體系結構寫成
軟體體系結構(software architecture)=構件(components)+
連接件(connectors)+約束(constraints)
構件是軟體體系結構的基本元素之一。一般認為,構件是指具有一定功能、可明確辨識的軟體單位,並且具備語義完整、語法正確、有可重用價值的特點,然而目前對於構件的具體結構及構成並沒有一個統一的標准[5],而且一些主要的構件技術也沒有使用相同的構件類型。另外,當前被廣泛接受的構件定義並不包含具體的軟體構件模型(software component model)。例如,Szyperski等人[6]給出了軟體構件一個很有名的定義:軟體構件是一個僅帶特定契約介面和顯式語境依賴的結構單位,它可以獨立部署,易於第三方整合。但是關於軟體構件模型有一個被普遍接受的觀點是:軟體構件是一個具有服務提供和服務請求功能的軟體單元[7]。
連接件是軟體體系結構另一個基本的構成元素,是用來建立構件間交互以及支配這些交互規則的構造模塊。連接件最先是由Shaw[8]提出來的,她建議把連接件作為軟體體系結構中第一類實體,用來表示普通構件之間的交互關系。目前對於連接件尚未形成統一的認識,盡管在軟體體系結構中強調了連接件存在的必要性,但是關於連接件模型的研究還很少,連接件的實際應用還不成熟。
面向方面軟體體系結構在傳統軟體體系結構的基礎上增加了方面構件單元。通常認為,方面構件是封裝了系統橫切關注點的一類特殊的構件。目前關於方面構件模型的研究還處於起步階段。
2面向方面軟體體系結構模型
由於傳統軟體體系結構模型包含構件、連接件和約束,而面向方面軟體體系結構是在傳統軟體體系結構的基礎之上擴展了方面構件,所以面向方面軟體體系模型結構包含構件、連接件、方面構件和約束。其中約束描述了面向方面體系結構配置和拓撲的要求,確定了體系結構的構件、連接件和方面構件之間的連接關系,而構件、連接件、方面構件是它的三個基本的構成單元。以下對這三個構成單元的模型進行詳細的設計。
⑥ 軟體體系結構 內涵
軟體體系結構(software architecture) : 軟體總體結構的抽象表示,或以此為研究對象的學科。軟體體系結構具有如下幾種含義。
規定性含義軟體體系結構由結構元集、結構形以及結構理三部分組成,即軟體體系結構≡(結構元集,結構形,結構理) 其中,結構元集為一組構成軟體的結構元。結構元有三類,即處理元、信息元和連接元。處理元為對信息元施行處理的構件,信息元為處理元的處理對象,連接元負責構件間的連接。結構形包括特性、聯系以及權重。特性用以約束結構元的選取,聯系則約束結構元間的交互與組織,權重表示特性及聯系的重要程度。結構理刻畫體系結構人員選取體系結構風格、結構元、結構形的動因與根據。體系結構風格是各種特定體系結構中結構元與結構形的抽象,它不如特定體系結構約束嚴格,亦不如特定體系結構完備。例如,有分布式風格,多進程風格等,它們強調的只是特定體系結構的某些方面。描述性含義軟體體系結構由構件集、連件集、模式以及約束集四部分組成,即軟體體系結構≡(構件集,連件集,模式,約束集) 其中,構件集表示構成軟體的一組組成元素,連件集為一組連件,用以刻畫各構件間的交互,模式為軟體設計風格的描述,反映由構件及連件構成軟體的構成原則,約束集中的約束表示對模式所加的限制條件。例如,在客戶一伺服器系統中,客戶與伺服器均為構件,構件間交互的描述(如過程調用、事件廣播等)為連件,客戶一伺服器模式為模式,具體系統中對模式所加條件為約束。多視面含義軟體體系結構為軟體的一個或多個結構,每一結構反映一種視面,即軟體體系結構;結構集結構≡(構件集,外部可見特性集,聯系集) 其中,構件集表示構成軟體的一組組成元素,外部可見特性反映為其他構件可利用該構件所作的假定,聯系用以溝通相關構件。由於軟體體系結構可有多個結構,從而可有多類構件、多種聯系,故在定義中並不指明何類構件與何種聯系。常用的結構類型有模塊結構、進程結構和概念結構等。常用的視面有代碼視面、模塊視面、執行視面以及概念視面。其中慣常理解的軟體體系結構反映了概念視面。學科含義以前述各種含義的軟體體系結構為研究對象的學科或謂在研究與開發前述各種含義的軟體體系結構中所涉及的理論、原則、方法、技術所形成的學科。軟體體系結構發展不久,迄今未見被普遍接受的單一定義,然而,它對軟體的後續開發過程以及品質量的影響舉足輕重,已成為軟體工程的重要研究方面,且其重要性將與日俱增。