A. 什麼是軟體架構
當你去了解一個東東的時候,第一步要做的,就應該去知道這個東東的定義,對於軟體架構也是如此,經過網上查詢和書籍的幫助,我大概理清了一個輪廓。
軟體行業是一個熱衷於製造‘名詞’的行業,如果退回15年,估計沒幾個人知道‘軟體架構’是什麼,在上個世紀80年代,隨著軟體開發的規模不斷擴大,軟體開發成為一個行業,初期,隨之而來的是越來越多的軟體項目的失敗,造成項目失敗的原因很多,但主要集中在開發過程,所以軟體工程應運而生,CMMI等流程標准也是一茬接著一茬的冒個不停。
在軟體工程初具規模的時候,軟體開發還是以數據結構+演算法的形式存在,進入20世紀最後10年,隨著面向對象技術、設計模式等在開發過程中的成功應用,軟體架構也走進了大家的視野。
軟體架構在定義上分為‘組成派’和‘決策派’兩大陣營,分別描述如下:
’組成派‘認為軟體架構是將系統描述成計算組件及組件之間的交互
。它有兩個非常明顯的特點:
關注架構實踐的客體——軟體,以軟體本身作為描述對象。
分析了軟體的組成,說明軟體不是一個‘原子’意義上的整體,而是有不同的部分經過特定的介面進行連接組成的一個整體,這對軟體開發來說很重要。
‘決策派’認為
軟體架構包含了一系列的決策
,主要包括:
軟體系統的組織
選擇組成系統的結構元素和它們之間的介面,以及當這些元素相互協作時所體現的行為
用於指導這個系統組織的架構風格:這些元素以及它們的介面、協作和組合
軟體架構並不僅僅關注軟體本身的結構和行為,還注重其他特性:使用、功能性、性能、彈性、重用、可理解、經濟以及技術的限制和權衡等。
‘決策派’有以下兩個顯著的特點:
關注軟體架構中的實體——人,以人的決策為描述對象。
歸納了軟體架構決策的類型,指出架構決策不僅包括關於軟體系統的組織、元素、子系統和架構風格等幾類決策,還包括關於眾多非功能性需求的決策。
按照‘組成派’的觀點,軟體架構關注的是軟體整體的分割和交互,之所以分割,是因為不同的部分在邏輯或物理上相對獨立,通過‘分而治之’的原則進行分割可以更好的理解整個系統,把握用戶的需求,但是雖然整個軟體可以分割成多個模塊或子系統,但是模塊和子系統之間的通信和交互也是很重要的,我想按照這種觀點,架構師的主要任務是將軟體分割成不同的模塊,並定義模塊之間的介面。
按照‘決策派’的觀點,軟體是一個在很多限制下產生的產品,這些限制包括用戶和技術兩方面,用戶方麵包括功能需求、性能需求、硬體需求等,技術方麵包括技術選擇、可擴展性、可重用性、可維護性等。我想按照這中觀點,架構師的主要任務就是作出上述個各種限製作出選擇或決策。《軟體架構設計》 溫昱
B. 1、軟體架構有什麼我們目前的軟體開發架構是基於什麼的
軟體架構是指在一定的設計原則基礎上,從不同角度對組成系統的各部分進行搭配和安排,形成系統的多個結構而組成架構,它包括該系統的各個組件,組件的外部可見屬性及組件之間的相互關系。組件的外部可見屬性是指其他組件對該組件所做的假設。
軟體架構設計就是從宏觀上說明一套軟體系統的組成與特性。
軟體架構設計是一系列有層次的決策,比如:功能與展現的決策;技術架構的決策;自主研發還是合作;商業軟體還是開源軟體。
業務需求層出不窮;軟體系統越來越復雜;參與的人越來越多;共性和特殊性的問題越來越多;技術發展日異月新。
C. 什麼是軟體架構
軟體結構)是指一種層次表況,由軟體組成成分構造軟體的過程、方法和表示。軟體結構主要包括程序結構和文檔結構。程序結構有兩層含義,一是指程序的數據結構和控制結構;另一是指由比程序低一級的程序單位(模塊)組成程序的過程、方法和表示。
D. 什麼是軟體架構有沒有具體解釋
軟體架構
軟體架構(software architecture)是一系列相關的抽象模式,用於指導大型軟體系統各個方面的設計。 軟體架構是一個系統的草圖。軟體架構描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向對象領域中,組件之間的連接通常用介面_(計算機科學)來實現。
軟體體系結構是構建計算機軟體實踐的基礎。與建築師設定建築項目的設計原則和目標,作為繪圖員畫圖的基礎一樣,一個軟體架構師或者系統架構師陳述軟體構架以作為滿足不同客戶需求的實際系統設計方案的基礎。
軟體構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。
在「軟體構架簡介」中,David GArlan 和 Mary Shaw 認為軟體構架是有關如下問題的設計層次:「在計算的演算法和數據結構之外,設計並確定系統整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。」[GS93]
但構架不僅是結構;IEEE Working Group on Architecture 把其定義為「系統在其環境中的最高層概念」[IEEE98]。構架還包括「符合」系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified ProcESs 中,軟體系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過介面與不斷減小的構件與介面所組成的構件進行交互。
從和目的、主題、材料和結構的聯繫上來說,軟體架構可以和建築物的架構相比擬。一個軟體架構師需要有廣泛的軟體理論知識和相應的經驗來事實和管理軟體產品的高級設計。軟體架構師定義和設計軟體的模塊化,模塊之間的交互,用戶界面風格,對外介面方法,創新的設計特性,以及高層事物的對象操作、邏輯和流程。
是一般而言,軟體系統的架構(ArchitECture)有兩個要素:
·它是一個軟體系統從整體到部分的最高層次的劃分。
一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。
詳細地說,就是要包括架構元件(Architecture Component)、聯結器(Connector)、任務流(TASk-flow)。所謂架構元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項需求。
·建造一個系統所作出的最高層次的、以後難以更改的,商業的和技術的決定。
在建造一個系統之前會有很多的重要決定需要事先作出,而一旦系統開始進行詳細設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關系統設計成敗的最重要決定,必須經過非常慎重的研究和考察。
歷史
早在1960年代,諸如E·W·戴克斯特拉就已經涉及軟體架構這個概念了。自1990年代以來,部分由於在 Rational Software Corporation 和MiCROSoft內部的相關活動,軟體架構這個概念開始越來越流行起來。
卡內基梅隆大學和加州大學埃爾文分校在這個領域作了很多研究。卡內基·梅隆大學的Mary Shaw和David Garlan於1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟體架構中的很多概念,例如軟體組件、連接器、風格等等。 加州大學埃爾文分校的軟體研究院所做的工作則主要集中於架構風格、架構描述語言以及動態架構。
計算機軟體的歷史開始於五十年代,歷史非常短暫,而相比之下建築工程則從石器時代就開始了,人類在幾千年的建築設計實踐中積累了大量的經驗和教訓。建築設計基本上包含兩點,一是建築風格,二是建築模式。獨特的建築風格和恰當選擇的建築模式,可以使一個獨一無二。
下面的照片顯示了中美洲古代瑪雅建築,Chichen-Itza大金字塔,九個巨大的石級堆壘而上,九十一級台階(象徵著四季的天數)奪路而出,塔頂的神殿聳入雲天。所有的數字都如日歷般嚴謹,風格雄渾。難以想像這是石器時代的建築物。
圖1、位於墨西哥Chichen-Itza(在瑪雅語中chi意為嘴chen意為井)的古瑪雅建築。(攝影:作者)
軟體與人類的關系是架構師必須面對的核心問題,也是自從軟體進入歷史舞台之後就出現的問題。與此類似地,自從有了建築以來,建築與人類的關系就一直是建築設計師必須面對的核心問題。英國首相丘吉爾說,我們構造建築物,然後建築物構造我們(We shape our buildings, and afterwaRDS our buildings shape us)。英國下議院的會議廳較狹窄,無法使所有的下議院議員面向同一個方向入座,而必須分成兩側入座。丘吉爾認為,議員們入座的時候自然會選擇與自己政見相同的人同時入座,而這就是英國政黨制的起源。Party這個詞的原意就是"方"、"面"。政黨起源的關鍵就是建築物對人的影響。
在軟體設計界曾經有很多人認為功能是最為重要的,形式必須服從功能。與此類似地,在建築學界,現代主義建築流派的開創人之一Louis Sullivan也認為形式應當服從於功能(FORMs follows function)。
幾乎所有的軟體設計理念都可以在浩如煙海的建築學歷史中找到更為遙遠的歷史回響。最為著名的,當然就是模式理論和XP理論。
架構的目標是什麼
正如同軟體本身有其要達到的目標一樣,架構設計要達到的目標是什麼呢?一般而言,軟體架構設計要達到如下的目標:
·可靠性(Reliable)。軟體系統對於用戶的商業經營和管理來說極為重要,因此軟體系統必須非常可靠。
·安全行(Secure)。軟體系統所承擔的交易的商業價值極高,系統的安全性非常重要。
·可擴展性(SCAlable)。軟體必須能夠在用戶的使用率、用戶的數目增加很快的情況下,保持合理的性能。只有這樣,才能適應用戶的市場擴展得可能性。
·可定製化(CuSTomizable)。同樣的一套軟體,可以根據客戶群的不同和市場需求的變化進行調整。
·可擴展性(Extensible)。在新技術出現的時候,一個軟體系統應當允許導入新技術,從而對現有系統進行功能和性能的擴展
·可維護性(MAIntainable)。軟體系統的維護包括兩方面,一是排除現有的錯誤,二是將新的軟體需求反映到現有系統中去。一個易於維護的系統可以有效地降低技術支持的花費
·客戶體驗(Customer Experience)。軟體系統必須易於使用。
·市場時機(Time to Market)。軟體用戶要面臨同業競爭,軟體提供商也要面臨同業競爭。以最快的速度爭奪市場先機非常重要。
架構的種類
根據我們關注的角度不同,可以將架構分成三種:
·邏輯架構、軟體系統中元件之間的關系,比如用戶界面,資料庫,外部系統介面,商業邏輯元件,等等。
比如下面就是筆者親身經歷過的一個軟體系統的邏輯架構圖
圖2、一個邏輯架構的例子
從上面這張圖中可以看出,此系統被劃分成三個邏輯層次,即表象層次,商業層次和數據持久層次。每一個層次都含有多個邏輯元件。比如WEB伺服器層次中有HTML服務元件、Session服務元件、安全服務元件、系統管理元件等。
·物理架構、軟體元件是怎樣放到硬體上的。
比如下面這張物理架構圖描述了一個分布於北京和上海的分布式系統的物理架構,圖中所有的元件都是物理設備,包括網路分流器、代理伺服器、WEB伺服器、應用伺服器、報表伺服器、整合伺服器、存儲伺服器、主機等等。
圖3、一個物理架構的例子
·系統架構、系統的非功能性特徵,如可擴展性、可靠性、強壯性、靈活性、性能等。
系統架構的設計要求架構師具備軟體和硬體的功能和性能的過硬知識,這一工作無疑是架構設計工作中最為困難的工作。
此外,從每一個角度上看,都可以看到架構的兩要素:元件劃分和設計決定。
首先,一個軟體系統中的元件首先是邏輯元件。這些邏輯元件如何放到硬體上,以及這些元件如何為整個系統的可擴展性、可靠性、強壯性、靈活性、性能等做出貢獻,是非常重要的信息。
其次,進行軟體設計需要做出的決定中,必然會包括邏輯結構、物理結構,以及它們如何影響到系統的所有非功能性特徵。這些決定中會有很多是一旦作出,就很難更改的。
根據作者的經驗,一個基於資料庫的系統架構,有多少個數據表,就會有多少頁的架構設計文檔。比如一個中等的資料庫應用系統通常含有一百個左右的數據表,這樣的一個系統設計通常需要有一百頁左右的架構設計文檔。
構架描述
為了討論和分析軟體構架,必須首先定義構架表示方式,即描述構架重要方面的方式。在 Rational Unified Process 中,軟體構架文檔記錄有這種描述。
構架視圖
我們決定以多種構架視圖來表示軟體構架。每種構架視圖針對於開發流程中的涉眾(例如最終用戶、設計人員、管理人員、系統工程師、維護人員等)所關注的特定方面。
構架視圖顯示了軟體構架如何分解為構件,以及構件如何由連接器連接來產生有用的形式 [PW92],由此記錄主要的結構設計決策。這些設計決策必須基於需求以及功能、補充和其他方面的約束。而這些決策又會在較低層次上為需求和將來的設計決策施加進一步的約束。
典型的構架視圖集
構架由許多不同的構架視圖來表示,這些視圖本質上是以圖形方式來摘要說明「在構架方面具有重要意義」的模型元素。在 Rational Unified Process 中,您將從一個典型的視圖集開始,該視圖集稱為「4+1 視圖模型」[KRU95]。它包括:
用例視圖:包括用例和場景,這些用例和場景包括在構架方面具有重要意義的行為、類或技術風險。它是用例模型的子集。
邏輯視圖:包括最重要的設計類、從這些設計類到包和子系統的組織形式,以及從這些包和子系統到層的組織形式。它還包括一些用例實現。它是設計模型的子集。
實施視圖:包括實施模型及其從模塊到包和層的組織形式的概覽。 同時還描述了將邏輯視圖中的包和類向實施視圖中的包和模塊分配的情況。它是實施模型的子集。
進程視圖:包括所涉及任務(進程和線程)的描述,它們的交互和配置,以及將設計對象和類向任務的分配情況。只有在系統具有很高程度的並行時,才需要該視圖。在 Rational Unified Process 中,它是設計模型的子集。
配置視圖:包括對最典型的平台配置的各種物理節點的描述以及將任務(來自進程視圖)向物理節點分配的情況。只有在分布式系統中才需要該視圖。它是部署模型的一個子集。
構架視圖記錄在軟體構架文檔中。您可以構建其他視圖來表達需要特別關注的不同方面:用戶界面視圖、安全視圖、數據視圖等等。對於簡單系統,可以省略 4+1 視圖模型中的一些視圖。
構架重點
雖然以上視圖可以表示系統的整體設計,但構架只同以下幾個具體方面相關:
模型的結構,即組織模式,例如分層。
基本元素,即關鍵用例、主類、常用機制等,它們與模型中的各元素相對。
幾個關鍵場景,它們表示了整個系統的主要控制流程。
記錄模塊度、可選特徵、產品線狀況的服務。
構架視圖在本質上是整體設計的抽象或簡化,它們通過舍棄具體細節來突出重要的特徵。在考慮以下方面時,這些特徵非常重要:
系統演進,即進入下一個開發周期。
在產品線環境下復用構架或構架的一部分。
評估補充質量,例如性能、可用性、可移植性和安全性。
向團隊或分包商分配開發工作。
決定是否包括市售構件。
插入范圍更廣的系統。
構架模式
構架模式是解決復發構架問題的現成形式。構架框架或構架基礎設施(中間件)是可以在其上構建某種構架的構件集。許多主要的構架困難應在框架或基礎設施中進行解決,而且通常針對於特定的領域:命令和控制、MIS、控制系統等等。
構架模式示例
[BUS96] 根據構架模式最適用的系統的特徵將其分類,其中一個類別處理更普遍的結構問題。下表顯示了 [BUS96] 中所提供的類別和這些類別所包含的模式。
類別 模式
結構 層
管道和過濾器
黑板
分布式系統 代理
交互系統 模型-視圖-控制器
表示-抽象-控制
自適應系統 反射
微核
軟體構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。
在「軟體構架簡介」中,David Garlan 和 Mary Shaw 認為軟體構架是有關如下問題的設計層次:「在計算的演算法和數據結構之外,設計並確定系統整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。」[GS93]
但構架不僅是結構;IEEE Working Group on Architecture 把其定義為「系統在其環境中的最高層概念」[IEEE98]。構架還包括「符合」系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified Process 中,軟體系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過介面與不斷減小的構件與介面所組成的構件進行交互。
為闡明其含義,下面將詳述其中的兩個;完整說明請參見 [BUS96]。模式以下列廣泛使用的形式來表示:
模式名
環境
問題
影響,描述應考慮的不同問題方面
解決方案
基本原理
結果環境
示例
模式名
層
環境
需要進行結構分解的大系統。
問題
必須處理不同抽象層次的問題的系統。例如:硬體控制問題、常見服務問題和針對於不同領域的問題。最好不要編寫垂直構件來處理所有抽象層次的問題。否則要在不同的構件中多次處理相同的問題(可能會不一致)。
影響
系統的某些部分應當是可替換的
構件中的變化不應波動
相似的責任應歸為一組
構件大小 -- 復雜構件可能要進行分解
解決辦法
將系統分成構件組,並使構件組形成層疊結構。使上層只使用下層(決不使用上層)提供的服務。盡量不使用非緊鄰下層提供的服務(不跳層使用服務,除非中間層只添加通過構件)。
示例:
1. 通用層
嚴格的分層構架規定設計元素(類、構件、包、子系統)只能使用下層提供的服務, 服務可以包括事件處理、錯誤處理、資料庫訪問等等。 相對於記錄在底層的原始操作系統級調用,它包括更明顯的機制。
2. 業務系統層
上圖顯示了另一個分層示例,其中有垂直特定應用層、水平層和基礎設施層。注意:此處的目標是採用非常短的業務「煙囪」並實現各種應用程序間的通用性。 否則,就可能有多個人解決同一問題,從而導致潛在的分歧。
有關該模式的深入討論,請參見指南:分層。
模式名
黑板
環境
沒有解決問題的確定方法(演算法)或方法不可行的領域。例如 AI 系統、語音識別和監視系統。
問題
多個問題解決顧問(知識顧問)必須通過協作來解決他們無法單獨解決的問題。各顧問的工作結果必須可以供所有其他顧問訪問,使他們可以評估自己是否可以參與解決方案的查找並發布其工作結果。
影響
知識顧問參與解決問題的順序不是確定的,這可能取決於問題解決策略
不同顧問的輸入(結果或部分解決方案)可能有不同的表示方式
各顧問並不直接知道對方的存在,但可以評估對方發布的工作
解決辦法
多名知識顧問都可訪問一個稱為「黑板」的共享資料庫。黑板提供監測和更新其內容的介面。控制模塊/對象激活遵循某種策略的顧問。激活後,顧問查看黑板,以確定它是否能參與解決問題。如果顧問決定它可以參與,控制對象就可以允許顧問將其部分(或最終)解決方案放置於黑板上。
示例:
以上顯示了使用 UML 建模的結構或靜態視圖。 它將成為參數化協作的一部分,然後會綁定到實參上對模式進行實例化。
構架風格
軟體構架(或僅是構架視圖)可以具有名為構架風格的屬性,該屬性減少了可選的形式,並使構架具有一定程度的一致性。樣式可以通過一組模式或通過選擇特定構件或連接器作為基本構件來定義。對給定系統,某些樣式可作為構架描述的一部分記錄在構架風格指南(Rational Unified Process 中設計指南文檔的一部分)中。樣式在構架的可理解性與完整性方面起著主要的作用。
構架設計圖
構架視圖的圖形描述稱為構架設計圖。對於以上描述的各種視圖,設計圖由以下統一建模語言圖組成 [UML99]:
邏輯視圖:類圖、狀態機和對象圖。
進程視圖:類圖與對象圖(包括任務 - 進程與線程)。
實施視圖:構件圖。
部署視圖:配置圖。
用例視圖:用例圖描述用例、主角和普通設計類;順序圖描述設計對象及其協作關系。
構架設計流程
在 Rational Unified Process 中,構架主要是分析設計工作流程的結果。當項目再次進行此工作流程時,構架將在一次又一次迭代中不斷演化、改進、精煉。由於每次迭代都包括集成和測試,所以在交付產品時,構架就相當強壯了。構架是精化階段各次迭代的重點,構架的基線通常會在此階段結束時確定。
架構師
軟體設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔軟體系統的架構設計,也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用,以及系統中邏輯的、物理的、系統的重要決定的作出。
這樣的人就是所謂的架構師(Architect)。在很多公司中,架構師不是一個專門的和正式的職務。通常在一個開發小組中,最有經驗的程序員會負責一些架構方面的工作。在一個部門中,最有經驗的項目經理會負責一些架構方面的工作。
但是,越來越多的公司體認到架構工作的重要性,並且在不同的組織層次上設置專門的架構師位置,由他們負責不同層次上的邏輯架構、物理架構、系統架構的設計、配置、維護等工作。
E. 短視頻軟體開發,軟體架構是什麼樣的
你好,很高興為你解答這個問題。關於短視頻軟體開發,軟體架構應該包含這些:
短視頻app的架構:整套短視頻APP主要由安卓端,iOS 端,Web 管理後台四端組成;
主要涉及的開發語言有:PHP,objective-c,Java;
主要涉及到的服務有:Redis和Mysql;Redis 主要用於數據緩存,存儲小視頻系統運行中常用的動態數據(如點贊時的效果)Mysql 主要用於系統數據的存儲如存儲圖片、視頻等
短視頻app的視頻產生端:首先要進行音視頻數據內容採集(拍攝視頻),然後進行視頻編輯(加美顏、萌顏、特效和音樂),合成視頻,編碼視頻並上傳到雲存儲中;
服務端:雲存儲把視頻存起來,對視頻進行統一轉碼、管理、分析、視頻審核;
播放端: 用戶觀看短視頻時,終端會向服務端發起請求,請求播放短視頻,服務端收到請求後迅速響應並加速視頻的傳輸,將視頻呈現在用戶眼前。
希望這個答案能夠幫助到你。
F. 什麼是軟體構架
軟體架構
軟體架構(software architecture)是一系列相關的抽象模式,用於指導大型軟體系統各個方面的設計。 軟體架構是一個系統的草圖。軟體架構描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向對象領域中,組件之間的連接通常用介面_(計算機科學)來實現。
軟體體系結構是構建計算機軟體實踐的基礎。與建築師設定建築項目的設計原則和目標,作為繪圖員畫圖的基礎一樣,一個軟體架構師或者系統架構師陳述軟體構架以作為滿足不同客戶需求的實際系統設計方案的基礎。
軟體構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。
在「軟體構架簡介」中,David GArlan 和 Mary Shaw 認為軟體構架是有關如下問題的設計層次:「在計算的演算法和數據結構之外,設計並確定系統整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。」[GS93]
但構架不僅是結構;IEEE Working Group on Architecture 把其定義為「系統在其環境中的最高層概念」[IEEE98]。構架還包括「符合」系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified ProcESs 中,軟體系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過介面與不斷減小的構件與介面所組成的構件進行交互。
從和目的、主題、材料和結構的聯繫上來說,軟體架構可以和建築物的架構相比擬。一個軟體架構師需要有廣泛的軟體理論知識和相應的經驗來事實和管理軟體產品的高級設計。軟體架構師定義和設計軟體的模塊化,模塊之間的交互,用戶界面風格,對外介面方法,創新的設計特性,以及高層事物的對象操作、邏輯和流程。
是一般而言,軟體系統的架構(ArchitECture)有兩個要素:
·它是一個軟體系統從整體到部分的最高層次的劃分。
一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。
詳細地說,就是要包括架構元件(Architecture Component)、聯結器(Connector)、任務流(TASk-flow)。所謂架構元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項需求。
·建造一個系統所作出的最高層次的、以後難以更改的,商業的和技術的決定。
在建造一個系統之前會有很多的重要決定需要事先作出,而一旦系統開始進行詳細設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關系統設計成敗的最重要決定,必須經過非常慎重的研究和考察。
歷史
早在1960年代,諸如E·W·戴克斯特拉就已經涉及軟體架構這個概念了。自1990年代以來,部分由於在 Rational Software Corporation 和MiCROSoft內部的相關活動,軟體架構這個概念開始越來越流行起來。
卡內基梅隆大學和加州大學埃爾文分校在這個領域作了很多研究。卡內基·梅隆大學的Mary Shaw和David Garlan於1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟體架構中的很多概念,例如軟體組件、連接器、風格等等。 加州大學埃爾文分校的軟體研究院所做的工作則主要集中於架構風格、架構描述語言以及動態架構。
計算機軟體的歷史開始於五十年代,歷史非常短暫,而相比之下建築工程則從石器時代就開始了,人類在幾千年的建築設計實踐中積累了大量的經驗和教訓。建築設計基本上包含兩點,一是建築風格,二是建築模式。獨特的建築風格和恰當選擇的建築模式,可以使一個獨一無二。
下面的照片顯示了中美洲古代瑪雅建築,Chichen-Itza大金字塔,九個巨大的石級堆壘而上,九十一級台階(象徵著四季的天數)奪路而出,塔頂的神殿聳入雲天。所有的數字都如日歷般嚴謹,風格雄渾。難以想像這是石器時代的建築物。
圖1、位於墨西哥Chichen-Itza(在瑪雅語中chi意為嘴chen意為井)的古瑪雅建築。(攝影:作者)
軟體與人類的關系是架構師必須面對的核心問題,也是自從軟體進入歷史舞台之後就出現的問題。與此類似地,自從有了建築以來,建築與人類的關系就一直是建築設計師必須面對的核心問題。英國首相丘吉爾說,我們構造建築物,然後建築物構造我們(We shape our buildings, and afterwaRDS our buildings shape us)。英國下議院的會議廳較狹窄,無法使所有的下議院議員面向同一個方向入座,而必須分成兩側入座。丘吉爾認為,議員們入座的時候自然會選擇與自己政見相同的人同時入座,而這就是英國政黨制的起源。Party這個詞的原意就是"方"、"面"。政黨起源的關鍵就是建築物對人的影響。
在軟體設計界曾經有很多人認為功能是最為重要的,形式必須服從功能。與此類似地,在建築學界,現代主義建築流派的開創人之一Louis Sullivan也認為形式應當服從於功能(FORMs follows function)。
幾乎所有的軟體設計理念都可以在浩如煙海的建築學歷史中找到更為遙遠的歷史回響。最為著名的,當然就是模式理論和XP理論。
架構的目標是什麼
正如同軟體本身有其要達到的目標一樣,架構設計要達到的目標是什麼呢?一般而言,軟體架構設計要達到如下的目標:
·可靠性(Reliable)。軟體系統對於用戶的商業經營和管理來說極為重要,因此軟體系統必須非常可靠。
·安全行(Secure)。軟體系統所承擔的交易的商業價值極高,系統的安全性非常重要。
·可擴展性(SCAlable)。軟體必須能夠在用戶的使用率、用戶的數目增加很快的情況下,保持合理的性能。只有這樣,才能適應用戶的市場擴展得可能性。
·可定製化(CuSTomizable)。同樣的一套軟體,可以根據客戶群的不同和市場需求的變化進行調整。
·可擴展性(Extensible)。在新技術出現的時候,一個軟體系統應當允許導入新技術,從而對現有系統進行功能和性能的擴展
·可維護性(MAIntainable)。軟體系統的維護包括兩方面,一是排除現有的錯誤,二是將新的軟體需求反映到現有系統中去。一個易於維護的系統可以有效地降低技術支持的花費
·客戶體驗(Customer Experience)。軟體系統必須易於使用。
·市場時機(Time to Market)。軟體用戶要面臨同業競爭,軟體提供商也要面臨同業競爭。以最快的速度爭奪市場先機非常重要。
架構的種類
根據我們關注的角度不同,可以將架構分成三種:
·邏輯架構、軟體系統中元件之間的關系,比如用戶界面,資料庫,外部系統介面,商業邏輯元件,等等。
比如下面就是筆者親身經歷過的一個軟體系統的邏輯架構圖
圖2、一個邏輯架構的例子
從上面這張圖中可以看出,此系統被劃分成三個邏輯層次,即表象層次,商業層次和數據持久層次。每一個層次都含有多個邏輯元件。比如WEB伺服器層次中有HTML服務元件、Session服務元件、安全服務元件、系統管理元件等。
·物理架構、軟體元件是怎樣放到硬體上的。
比如下面這張物理架構圖描述了一個分布於北京和上海的分布式系統的物理架構,圖中所有的元件都是物理設備,包括網路分流器、代理伺服器、WEB伺服器、應用伺服器、報表伺服器、整合伺服器、存儲伺服器、主機等等。
圖3、一個物理架構的例子
·系統架構、系統的非功能性特徵,如可擴展性、可靠性、強壯性、靈活性、性能等。
系統架構的設計要求架構師具備軟體和硬體的功能和性能的過硬知識,這一工作無疑是架構設計工作中最為困難的工作。
此外,從每一個角度上看,都可以看到架構的兩要素:元件劃分和設計決定。
首先,一個軟體系統中的元件首先是邏輯元件。這些邏輯元件如何放到硬體上,以及這些元件如何為整個系統的可擴展性、可靠性、強壯性、靈活性、性能等做出貢獻,是非常重要的信息。
其次,進行軟體設計需要做出的決定中,必然會包括邏輯結構、物理結構,以及它們如何影響到系統的所有非功能性特徵。這些決定中會有很多是一旦作出,就很難更改的。
根據作者的經驗,一個基於資料庫的系統架構,有多少個數據表,就會有多少頁的架構設計文檔。比如一個中等的資料庫應用系統通常含有一百個左右的數據表,這樣的一個系統設計通常需要有一百頁左右的架構設計文檔。
構架描述
為了討論和分析軟體構架,必須首先定義構架表示方式,即描述構架重要方面的方式。在 Rational Unified Process 中,軟體構架文檔記錄有這種描述。
構架視圖
我們決定以多種構架視圖來表示軟體構架。每種構架視圖針對於開發流程中的涉眾(例如最終用戶、設計人員、管理人員、系統工程師、維護人員等)所關注的特定方面。
構架視圖顯示了軟體構架如何分解為構件,以及構件如何由連接器連接來產生有用的形式 [PW92],由此記錄主要的結構設計決策。這些設計決策必須基於需求以及功能、補充和其他方面的約束。而這些決策又會在較低層次上為需求和將來的設計決策施加進一步的約束。
典型的構架視圖集
構架由許多不同的構架視圖來表示,這些視圖本質上是以圖形方式來摘要說明「在構架方面具有重要意義」的模型元素。在 Rational Unified Process 中,您將從一個典型的視圖集開始,該視圖集稱為「4+1 視圖模型」[KRU95]。它包括:
用例視圖:包括用例和場景,這些用例和場景包括在構架方面具有重要意義的行為、類或技術風險。它是用例模型的子集。
邏輯視圖:包括最重要的設計類、從這些設計類到包和子系統的組織形式,以及從這些包和子系統到層的組織形式。它還包括一些用例實現。它是設計模型的子集。
實施視圖:包括實施模型及其從模塊到包和層的組織形式的概覽。 同時還描述了將邏輯視圖中的包和類向實施視圖中的包和模塊分配的情況。它是實施模型的子集。
進程視圖:包括所涉及任務(進程和線程)的描述,它們的交互和配置,以及將設計對象和類向任務的分配情況。只有在系統具有很高程度的並行時,才需要該視圖。在 Rational Unified Process 中,它是設計模型的子集。
配置視圖:包括對最典型的平台配置的各種物理節點的描述以及將任務(來自進程視圖)向物理節點分配的情況。只有在分布式系統中才需要該視圖。它是部署模型的一個子集。
構架視圖記錄在軟體構架文檔中。您可以構建其他視圖來表達需要特別關注的不同方面:用戶界面視圖、安全視圖、數據視圖等等。對於簡單系統,可以省略 4+1 視圖模型中的一些視圖。
構架重點
雖然以上視圖可以表示系統的整體設計,但構架只同以下幾個具體方面相關:
模型的結構,即組織模式,例如分層。
基本元素,即關鍵用例、主類、常用機制等,它們與模型中的各元素相對。
幾個關鍵場景,它們表示了整個系統的主要控制流程。
記錄模塊度、可選特徵、產品線狀況的服務。
構架視圖在本質上是整體設計的抽象或簡化,它們通過舍棄具體細節來突出重要的特徵。在考慮以下方面時,這些特徵非常重要:
系統演進,即進入下一個開發周期。
在產品線環境下復用構架或構架的一部分。
評估補充質量,例如性能、可用性、可移植性和安全性。
向團隊或分包商分配開發工作。
決定是否包括市售構件。
插入范圍更廣的系統。
構架模式
構架模式是解決復發構架問題的現成形式。構架框架或構架基礎設施(中間件)是可以在其上構建某種構架的構件集。許多主要的構架困難應在框架或基礎設施中進行解決,而且通常針對於特定的領域:命令和控制、MIS、控制系統等等。
構架模式示例
[BUS96] 根據構架模式最適用的系統的特徵將其分類,其中一個類別處理更普遍的結構問題。下表顯示了 [BUS96] 中所提供的類別和這些類別所包含的模式。
類別 模式
結構 層
管道和過濾器
黑板
分布式系統 代理
交互系統 模型-視圖-控制器
表示-抽象-控制
自適應系統 反射
微核
軟體構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。
在「軟體構架簡介」中,David Garlan 和 Mary Shaw 認為軟體構架是有關如下問題的設計層次:「在計算的演算法和數據結構之外,設計並確定系統整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。」[GS93]
但構架不僅是結構;IEEE Working Group on Architecture 把其定義為「系統在其環境中的最高層概念」[IEEE98]。構架還包括「符合」系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified Process 中,軟體系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過介面與不斷減小的構件與介面所組成的構件進行交互。
為闡明其含義,下面將詳述其中的兩個;完整說明請參見 [BUS96]。模式以下列廣泛使用的形式來表示:
模式名
環境
問題
影響,描述應考慮的不同問題方面
解決方案
基本原理
結果環境
示例
模式名
層
環境
需要進行結構分解的大系統。
問題
必須處理不同抽象層次的問題的系統。例如:硬體控制問題、常見服務問題和針對於不同領域的問題。最好不要編寫垂直構件來處理所有抽象層次的問題。否則要在不同的構件中多次處理相同的問題(可能會不一致)。
影響
系統的某些部分應當是可替換的
構件中的變化不應波動
相似的責任應歸為一組
構件大小 -- 復雜構件可能要進行分解
解決辦法
將系統分成構件組,並使構件組形成層疊結構。使上層只使用下層(決不使用上層)提供的服務。盡量不使用非緊鄰下層提供的服務(不跳層使用服務,除非中間層只添加通過構件)。
示例:
1. 通用層
嚴格的分層構架規定設計元素(類、構件、包、子系統)只能使用下層提供的服務, 服務可以包括事件處理、錯誤處理、資料庫訪問等等。 相對於記錄在底層的原始操作系統級調用,它包括更明顯的機制。
2. 業務系統層
上圖顯示了另一個分層示例,其中有垂直特定應用層、水平層和基礎設施層。注意:此處的目標是採用非常短的業務「煙囪」並實現各種應用程序間的通用性。 否則,就可能有多個人解決同一問題,從而導致潛在的分歧。
有關該模式的深入討論,請參見指南:分層。
模式名
黑板
環境
沒有解決問題的確定方法(演算法)或方法不可行的領域。例如 AI 系統、語音識別和監視系統。
問題
多個問題解決顧問(知識顧問)必須通過協作來解決他們無法單獨解決的問題。各顧問的工作結果必須可以供所有其他顧問訪問,使他們可以評估自己是否可以參與解決方案的查找並發布其工作結果。
影響
知識顧問參與解決問題的順序不是確定的,這可能取決於問題解決策略
不同顧問的輸入(結果或部分解決方案)可能有不同的表示方式
各顧問並不直接知道對方的存在,但可以評估對方發布的工作
解決辦法
多名知識顧問都可訪問一個稱為「黑板」的共享資料庫。黑板提供監測和更新其內容的介面。控制模塊/對象激活遵循某種策略的顧問。激活後,顧問查看黑板,以確定它是否能參與解決問題。如果顧問決定它可以參與,控制對象就可以允許顧問將其部分(或最終)解決方案放置於黑板上。
示例:
以上顯示了使用 UML 建模的結構或靜態視圖。 它將成為參數化協作的一部分,然後會綁定到實參上對模式進行實例化。
構架風格
軟體構架(或僅是構架視圖)可以具有名為構架風格的屬性,該屬性減少了可選的形式,並使構架具有一定程度的一致性。樣式可以通過一組模式或通過選擇特定構件或連接器作為基本構件來定義。對給定系統,某些樣式可作為構架描述的一部分記錄在構架風格指南(Rational Unified Process 中設計指南文檔的一部分)中。樣式在構架的可理解性與完整性方面起著主要的作用。
構架設計圖
構架視圖的圖形描述稱為構架設計圖。對於以上描述的各種視圖,設計圖由以下統一建模語言圖組成 [UML99]:
邏輯視圖:類圖、狀態機和對象圖。
進程視圖:類圖與對象圖(包括任務 - 進程與線程)。
實施視圖:構件圖。
部署視圖:配置圖。
用例視圖:用例圖描述用例、主角和普通設計類;順序圖描述設計對象及其協作關系。
構架設計流程
在 Rational Unified Process 中,構架主要是分析設計工作流程的結果。當項目再次進行此工作流程時,構架將在一次又一次迭代中不斷演化、改進、精煉。由於每次迭代都包括集成和測試,所以在交付產品時,構架就相當強壯了。構架是精化階段各次迭代的重點,構架的基線通常會在此階段結束時確定。
架構師
軟體設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔軟體系統的架構設計,也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用,以及系統中邏輯的、物理的、系統的重要決定的作出。
這樣的人就是所謂的架構師(Architect)。在很多公司中,架構師不是一個專門的和正式的職務。通常在一個開發小組中,最有經驗的程序員會負責一些架構方面的工作。在一個部門中,最有經驗的項目經理會負責一些架構方面的工作。
但是,越來越多的公司體認到架構工作的重要性,並且在不同的組織層次上設置專門的架構師位置,由他們負責不同層次上的邏輯架構、物理架構、系統架構的設計、配置、維護等工作。
參考資料:http://www.itise.com/phrase/200602281452595.html
G. 架構類型以及軟體架構邏輯詳解
架構類型:分布式、SOA架構、單體式。
分布式架構
分布式應用架構中,相互獨立,代碼獨立開發,獨立部署,通過API介面互相通信。通訊協議一般使用HTTP,數據格式是JSON(是一種輕量級的數據交換格式),應用集成方式比較簡化。
優點: 應用內部高內聚,獨立開發、測試和部署,應用之間松耦合,業務邊界清晰,業務依賴明確,支持大項目並行開發。
缺點: API介面需求變化,應用就需要重新部署,通信可靠性和數據的封裝性相對於進程內調用比較差。
SOA架構[現在也流程SAAS服務模式架構也稱雲架構]
SOA也是分布式應用架構一種。
SOA架構提供配套的服務治理,包括服務注冊、服務路由、服務授權、服務降級、服務監控等等。
SOA架構既體現業務的拆分,又體現業務的整合,更多地從業務整體上考慮系統拆分。
優點:以服務層為主,聚焦核心業務,同時以提供整個系統共享,服務作為獨立的應用,獨立部署,介面清晰,很容易做自動化測試和部署,服務是無狀態的,很容易做水平擴展;通過容器虛擬化技術,實現故障隔離和資源高效利用。
缺點:系統依賴復雜,給開發/測試/部署帶來不便,分布式數據一致性和分布式事務支持困難,一般通過最終一致性簡化解決。
單體式應用
系統只有一個應用、打包成一個應用;部署在一台機器;在一個DB里存儲數據.
單體式應用採用分層架構,一般為表示層、業務層、數據訪問層、DB層,表示層負責用戶體驗,業務層負責業務邏輯,數據訪問層負責DB層的數據存取
優點:開發、編譯、調試一站式、一個應用程序包含所有功能點,容易測試和部署
缺點:系統逐漸龐大時,代碼復雜度高,難以維護,應用擴展水平低,業務和模塊職責區分不清晰。
軟體架構
一、 微服務架構
微服務架構(microservices architecture)是服務導向架構(service-oriented architecture,縮寫 SOA)的升級。
每一個服務就是一個獨立的部署單元(separately deployed unit)。這些單元都是分布式的,互相解耦,通過遠程通信協議(比如REST、SOAP)聯系。
微服務架構分成三種實現模式。
RESTful API 模式 :服務通過 API 提供,雲服務就屬於這一類
RESTful 應用模式 :服務通過傳統的網路協議或者應用協議提供,背後通常是一個多功能的應用程序,常見於企業內部
集中消息模式 :採用消息代理(message broker),可以實現消息隊列、負載均衡、統一日誌和異常處理,缺點是會出現單點失敗,消息代理可能要做成集群
優點
擴展性好,各個服務之間低耦合
容易部署,軟體從單一可部署單元,被拆成了多個服務,每個服務都是可部署單元
容易開發,每個組件都可以進行持續集成式的開發,可以做到實時部署,不間斷地升級
易於測試,可以單獨測試每一個服務
缺點
由於強調互相獨立和低耦合,服務可能會拆分得很細。這導致系統依賴大量的微服務,變得很凌亂和笨重,性能也會不佳。
一旦服務之間需要通信(即一個服務要用到另一個服務),整個架構就會變得復雜。典型的例子就是一些通用的 Utility 類,一種解決方案是把它們拷貝到每一個服務中去,用冗餘換取架構的簡單性。
分布式的本質使得這種架構很難實現原子性操作,交易回滾會比較困難。
二、 事件驅動架構
事件(event)是狀態發生變化時,軟體發出的通知。
事件驅動架構(event-driven architecture)就是通過事件進行通信的軟體架構。它分成四個部分。
事件隊列(event queue):接收事件的入口。
分發器(event mediator):將不同的事件分發到不同的業務邏輯單元。
事件通道(event channel):分發器與處理器之間的聯系渠道。
事件處理器(event processor):實現業務邏輯,處理完成後會發出事件,觸發下一步操作
對於簡單的項目,事件隊列、分發器和事件通道,可以合為一體,整個軟體就分成事件代理和事件處理器兩部分。
優點
分布式的非同步架構,事件處理器之間高度解耦,軟體的擴展性好;適用性廣,各種類型的項目都可以用;性能較好,因為事件的非同步本質,軟體不易產生堵塞;事件處理器可以獨立地載入和卸載,容易部署
缺點
涉及非同步編程(要考慮遠程通信、失去響應等情況),開發相對復雜難以支持原子性操作,因為事件通過會涉及多個處理器,很難回滾分布式和非同步特性導致這個架構較難測試。
三、分層架構。
分層架構(layered architecture)是最常見的軟體架構,也是事實上的標准架構。如果你不知道要用什麼架構,那就用它。
這種架構將軟體分成若干個水平層,每一層都有清晰的角色和分工,不需要知道其他層的細節。層與層之間通過介面通信。
雖然沒有明確約定,軟體一定要分成多少層,但是四層的結構最常見。
表現層(presentation):用戶界面,負責視覺和用戶互動。
業務層(business):實現業務邏輯。
持久層(persistence):提供數據,SQL 語句就放在這一層。
資料庫(database) :保存數據。
有的軟體在邏輯層和持久層之間,加了一個服務層(service),提供不同業務邏輯需要的一些通用介面。
用戶的請求將依次通過這四層的處理,不能跳過其中任何一層。
優點
1、結構簡單,容易理解和開發。
2、不同技能的程序員可以分工,負責不同的層,天然適合大多數軟體公司的組織架構
3、每一層都可以獨立測試,其他層的介面通過模擬解決
缺點
1、一旦環境變化,需要代碼調整或增加功能時,通常比較麻煩和費時
2、部署比較麻煩,即使只修改一個小地方,往往需要整個軟體重新部署,不容易做持續發布
軟體升級時,可能需要整個服務暫停
3、擴展性差。用戶請求大量增加時,必須依次擴展每一層,由於每一層內部是耦合的,擴展會很困難。
五、 微核架構。
微核架構(microkernel architecture)又稱為"插件架構"(plug-in architecture),指的是軟體的內核相對較小,主要功能和業務邏輯都通過插件實現。
內核(core)通常只包含系統運行的最小功能。插件則是互相獨立的,插件之間的通信,應該減少到最低,避免出現互相依賴的問題。
優點
1、良好的功能延伸性(extensibility),需要什麼功能,開發一個插件即可
2、功能之間是隔離的,插件可以獨立的載入和卸載,使得它比較容易部署,
3、可定製性高,適應不同的開發需要
4、可以漸進式地開發,逐步增加功能
缺點
1、擴展性(scalability)差,內核通常是一個獨立單元,不容易做成分布式
2、開發難度相對較高,因為涉及到插件與內核的通信,以及內部的插件登記機制。
五、 雲架構。
雲結構(cloud architecture)主要解決擴展性和並發的問題,是最容易擴展的架構。
它的高擴展性,主要原因是沒使用中央資料庫,而是把數據都復制到內存中,變成可復制的內存數據單元。然後,業務處理能力封裝成一個個處理單元(prcessing unit)。訪問量增加,就新建處理單元;訪問量減少,就關閉處理單元。由於沒有中央資料庫,所以擴展性的最大瓶頸消失了。由於每個處理單元的數據都在內存里,最好要進行數據持久化。
這個模式主要分成兩部分:處理單元(processing unit)和虛擬中間件(virtualized middleware)。
處理單元:實現業務邏輯
虛擬中間件:負責通信、保持sessions、數據復制、分布式處理、處理單元的部署。
H. 什麼是軟體架構模式
軟體架構模式有以下幾點:(1)管道/過濾器模式:其典型應用包括批處理系統。(2)面向對象模式:其典型應用是基於組件的軟體開發CBD。(3)事件驅動模式:其典型應用包括各種圖形界面應用。(4)分層模式:其典型應用是分層通信協議,如ISO/OSI的七層網路模型。(5)客戶/伺服器模式(Client/Server,C/S):為了解決C/S模式中客戶端的問題,發展形成了瀏覽器/伺服器(B/S)模式:為了解決C/S模式中伺服器端的問題,發展形成了三層(多層)C/S模式,即多層應用架構。軟體架構模式有以下幾點:(1)管道/過濾器模式:其典型應用包括批處理系統。(2)面向對象模式:其典型應用是基於組件的軟體開發CBD。(3)事件驅動模式:其典型應用包括各種圖形界面應用。(4)分層模式:其典型應用是分層通信協議,如ISO/OSI的七層網路模型。(5)客戶/伺服器模式(Client/Server,C/S):為了解決C/S模式中客戶端的問題,發展形成了瀏覽器/伺服器(B/S)模式:為了解決C/S模式中伺服器端的問題,發展形成了三層(多層)C/S模式,即多層應用架構。
I. 軟體架構有哪些,軟體架構有哪些知識
軟體架構(softwarearchitecture)是一系列相關的抽象模式,用於指導大型軟體系統各個方面的設計。 軟體架構是一個系統的草圖。軟體體系結構是構建計算機軟體實踐的基礎。