国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)問題分類和排除方法分析優(yōu)化大師win10能用嗎

網(wǎng)站建設(shè)問題分類和排除方法分析,優(yōu)化大師win10能用嗎,浙江網(wǎng)站制作公司,東莞網(wǎng)站建設(shè) 信科網(wǎng)絡(luò)1 軟件架構(gòu)的概念 一個程序和計算系統(tǒng)軟件體系結(jié)構(gòu)是指系統(tǒng)的一個或者多個結(jié)構(gòu)。結(jié)構(gòu)中包括軟件的構(gòu)件,構(gòu)件 的外部可見屬性以及它們之間的相互關(guān)系。 體系結(jié)構(gòu)并非可運行軟件。確切地說,它是一種表達(dá),使軟件工程師能夠: (1)分…

1 軟件架構(gòu)的概念

一個程序和計算系統(tǒng)軟件體系結(jié)構(gòu)是指系統(tǒng)的一個或者多個結(jié)構(gòu)。結(jié)構(gòu)中包括軟件的構(gòu)件,構(gòu)件
的外部可見屬性以及它們之間的相互關(guān)系。
體系結(jié)構(gòu)并非可運行軟件。確切地說,它是一種表達(dá),使軟件工程師能夠
  • (1)分析設(shè)計在滿足所規(guī)定的需求方面的有效性:
  • (2)在設(shè)計變更相對容易的階段,考慮體系結(jié)構(gòu)可能的選擇方案;
  • (3)降低與軟件構(gòu)造相關(guān)聯(lián)的風(fēng)險。
上面的定義強(qiáng)調(diào)在任意體系結(jié)構(gòu)的表述中“軟件構(gòu)件”的角色。軟件構(gòu)件簡單到可以是程序模塊或者面向?qū)ο蟮念?#xff0c;也可以擴(kuò)充到包含數(shù)據(jù)庫和能夠完成客戶與服務(wù)器網(wǎng)絡(luò)配置的“中間件”。
??
軟件體系結(jié)構(gòu)的設(shè)計兩個層次數(shù)據(jù)設(shè)計和體系結(jié)構(gòu)設(shè)計。
  • 數(shù)據(jù)設(shè)計?主要關(guān)注于系統(tǒng)中數(shù)據(jù)的組織和存儲方式,包括數(shù)據(jù)庫、數(shù)據(jù)文件和全局?jǐn)?shù)據(jù)結(jié)構(gòu)的定義。數(shù)據(jù)設(shè)計體現(xiàn)傳統(tǒng)系統(tǒng)中體系結(jié)構(gòu)的數(shù)據(jù)構(gòu)件和面向?qū)ο笙到y(tǒng)中類的定義(封裝了屬性和操作)。數(shù)據(jù)設(shè)計是軟件體系結(jié)構(gòu)設(shè)計中非常重要的一部分,因為它直接影響到系統(tǒng)的數(shù)據(jù)處理能力和效率
  • 體系結(jié)構(gòu)設(shè)計主要關(guān)注軟件構(gòu)件的結(jié)構(gòu)、屬性和交互作用。確定各子系統(tǒng)模塊間的數(shù)據(jù)傳遞與調(diào)用關(guān)系,以及模塊間、系統(tǒng)與外部系統(tǒng)的接口關(guān)系。體系結(jié)構(gòu)設(shè)計是軟件架構(gòu)的核心,它決定了軟件系統(tǒng)的整體結(jié)構(gòu)和行為,對系統(tǒng)的性能、可靠性、安全性和易維護(hù)性等方面有著直接的影響

軟件架構(gòu)設(shè)計與生命周期

1.需求分析階段。
需求分析SA設(shè)計(系統(tǒng)設(shè)計)面臨的是不同的對象:一個是問題空間;另一個是解空間
??
軟件需求模型向SA模型的轉(zhuǎn)換主要關(guān)注兩個問題:如何根據(jù)需求模型 構(gòu)建SA模型 。如何保證模型轉(zhuǎn)換的 可追蹤性
?
2.設(shè)計階段。
是SA 研究關(guān)注的最早和最多的階段,這一階段的SA研究主要包括
  • SA 模型描述、
  • SA 模型設(shè)計與分析方法,
  • 以及對 SA設(shè)計經(jīng)驗總結(jié)與復(fù)用等。
有關(guān)SA 模型描述的研究分為3個層次:
  • SA的基本概念(構(gòu)件和連接子)-------一層次主要涉及SA模型由哪些元素組成,以及這些組成元素之間按照何種原則組織。SA模型的基本構(gòu)成元素包括構(gòu)件和連接子,這些元素是構(gòu)建系統(tǒng)架構(gòu)的基礎(chǔ)。
  • 體系結(jié)構(gòu)描述語言ADL-------ADL是一種支持構(gòu)件、連接子及其配置的描述語言。它提供了標(biāo)準(zhǔn)化和形式化的方式來描述系統(tǒng)架構(gòu),使得不同背景的開發(fā)者能夠更容易地理解和交流。常見的ADL包括UniCon、Rapide、Darwin、Wright、C2 SADL、Acme、xADL、XYZ/ADL和ABC/ADL等
  • SA模型的多視圖表示-------從不同的視角描述特定系統(tǒng)的體系結(jié)構(gòu),從而得到多個視角,并將這些視圖組織起來用來描述整體的SA模型。這種多視圖表示方法能夠全面地反映系統(tǒng)的各個方面,確保在設(shè)計過程中不會遺漏任何重要的信息或功能
3.實現(xiàn)階段
最初 SA 研究往往只關(guān)注較高層次的系統(tǒng)設(shè)計、描述和驗證。為了有效實現(xiàn) SA設(shè)計向?qū)崿F(xiàn)的轉(zhuǎn)換實現(xiàn)階段的體系結(jié)構(gòu)研究表現(xiàn)在以下幾個方面。
  • (1)研究基于SA 的開發(fā)過程支持,如項目組織結(jié)構(gòu)、配置管理等。
  • (2)尋求從 SA 向?qū)崿F(xiàn)過渡的途徑,如將程序設(shè)計語言元素引入 SA 階段、模型映射、構(gòu)件組裝、復(fù)用中間件平臺等。
  • (3)研究基于 SA 的測試技術(shù)。
4.構(gòu)件組裝階段。
在SA設(shè)計模型的指導(dǎo)下,可復(fù)用構(gòu)件的組裝可以在較高層次上實現(xiàn)系統(tǒng),并能夠提高系統(tǒng)實現(xiàn)效率。在構(gòu)件組裝的過程中,SA 設(shè)計模型起到了系統(tǒng)藍(lán)圖的作用。研究內(nèi)容包括如下兩個方面。
  • (1)如何支持可復(fù)用構(gòu)件的互聯(lián),即對 SA 設(shè)計模型中規(guī)約的連接子的實現(xiàn)提供支持。
  • (2)在組裝過程中,如何檢測并消除體系結(jié)構(gòu)失配問題。
在構(gòu)件組裝階段的失配問題主要包括
構(gòu)件引起的失配、由連接子引起的失配、由于系統(tǒng)成分對全局體系結(jié)構(gòu)的假設(shè)存在沖突引起的失配等。
5.部署階段。
SA 對軟件部署作用如下。
  • (1)提供高層的體系結(jié)構(gòu)視圖描述部署階段的軟硬件模型。
  • (2)基于SA 模型可以分析部署方案的質(zhì)量屬性,從而選擇合理的部署方案。
6.后開發(fā)階段。
是指軟件部署安裝之后的階段。這一階段的 SA 研究主要圍繞維護(hù)、演化、復(fù)用等方面來進(jìn)行。典型的研究方向包括動態(tài)軟件體系結(jié)構(gòu)、體系結(jié)構(gòu)恢復(fù)與重建等。
(1)動態(tài)軟件體系結(jié)構(gòu)?,F(xiàn)實中的軟件具有動態(tài)性,體系結(jié)構(gòu)會在運行時發(fā)生改變。
運行時變化包括兩類:軟件內(nèi)部執(zhí)行所導(dǎo)致的體系結(jié)構(gòu)改變;軟件系統(tǒng)外部的請求對軟件進(jìn)行的
重配置。
包括兩個部分的研究:體系結(jié)構(gòu)設(shè)計階段的支持、運行時刻基礎(chǔ)設(shè)施的支持。
?
(2)體系結(jié)構(gòu)恢復(fù)與重建。對于現(xiàn)有系統(tǒng)在開發(fā)時候沒有考慮 SA的情況,這些系統(tǒng)中恢復(fù)或重購體系結(jié)構(gòu)。從已有的系統(tǒng)中獲取體系結(jié)構(gòu)的重建方法分為4類:手工體系結(jié)構(gòu)重建、工具支持的手工重建、通過查詢語言來自動建立聚集、使用其他技術(shù)(如數(shù)據(jù)挖掘等)。
?

架構(gòu)設(shè)計概述

從需求分析到軟件設(shè)計之間的過渡過程稱為軟件架構(gòu) 。只要軟件架構(gòu)設(shè)計好了,整個軟件就不會出現(xiàn)坍塌性的錯誤,即不會崩潰。
?
架構(gòu)設(shè)計就是需求分配,將滿足需求的職責(zé)分配到組件上 。
?
軟件架構(gòu)為軟件系統(tǒng)提供了一個 結(jié)構(gòu)、行為和屬性的高級抽象 ,由 構(gòu)件 描述 、構(gòu)件的 相互作用 (連接件)、指導(dǎo)構(gòu)件 集成的模式 以及這些模式的 約束 組成。
?
軟件架構(gòu)不僅指定了系統(tǒng)的 組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu) ,并且顯示了系統(tǒng) 需求和構(gòu)件 之間的 對應(yīng)關(guān)系 提供了一些 設(shè)計決策的基本原理
?
解決好軟件的復(fù)用、質(zhì)量和維護(hù)問題,是研究軟件架構(gòu)的根本目的。
?
軟件架構(gòu)設(shè)計包括 提出 架構(gòu) 模型 產(chǎn)生 架構(gòu) 設(shè)計 和進(jìn)行 設(shè)計評審 等活動,是一個迭代的過程。架構(gòu)設(shè)計主要關(guān)注軟件組件的結(jié)構(gòu)、屬性和交互作用,并通過多種視圖全面描述特定系統(tǒng)的架構(gòu)。
補(bǔ)充

迭代和?演化的定義??

?迭代?是一種軟件開發(fā)過程,它通過一系列的迭代周期來逐步構(gòu)建軟件。每個迭代周期包括需求分析、設(shè)計、實現(xiàn)、測試和集成等階段,通過反饋和調(diào)整來不斷完善軟件。?演化?模型也是一種全局的軟件生存周期模型,屬于迭代開發(fā)方法的一種。它通過快速分析構(gòu)造出軟件的初始版本,根據(jù)用戶反饋進(jìn)行改進(jìn),最終得到滿意的軟件產(chǎn)品。

?迭代和演化的區(qū)別?

迭代和演化在軟件開發(fā)過程中有所不同。迭代更注重每個階段的逐步完善通過多次迭代來達(dá)到最終目標(biāo)。而演化則更注重從用戶反饋中不斷改進(jìn)通過快速原型構(gòu)建和使用反饋來逐步完善軟件

?實例說明?

例如,在一個軟件開發(fā)項目中,如果需求不明確,可以使用?演化模型來快速構(gòu)建原型,通過用戶反饋來逐步明確需求并進(jìn)行調(diào)整。如果需求已經(jīng)明確,但需要逐步完善功能,則可以使用迭代模型,通過多次迭代來逐步實現(xiàn)每個功能模塊。

迭代和?遞歸是兩種常見的解決問題的方法,它們在實現(xiàn)和思維方式上有一些區(qū)別。以下是迭代和遞歸的主要區(qū)別:

  1. ?定義和結(jié)構(gòu)?:

    • ?迭代?:通過循環(huán)結(jié)構(gòu)重復(fù)執(zhí)行一段代碼每次迭代的結(jié)果會作為下一次迭代的初始值,直到滿足結(jié)束條件。迭代是環(huán)結(jié)構(gòu),從初始狀態(tài)開始,每次迭代都遍歷這個環(huán),并更新狀態(tài),多次迭代直到到達(dá)結(jié)束狀態(tài)。?
    • ?遞歸?:函數(shù)直接或間接調(diào)用函數(shù)自身,直到滿足終止條件再逐層回歸。遞歸是樹結(jié)構(gòu),從字面可以理解為重復(fù)“遞推”和“回歸”的過程,當(dāng)“遞推”到達(dá)底部時就會開始“回歸”,其過程相當(dāng)于樹的深度優(yōu)先遍歷。?
  2. ?時間復(fù)雜度?:

    • ?迭代?:迭代的時間復(fù)雜度可以通過查找循環(huán)內(nèi)重復(fù)的周期數(shù)來發(fā)現(xiàn)。在實際應(yīng)用中,迭代的效率通常高于遞歸,尤其是在循環(huán)次數(shù)較大時。?
    • ?遞歸?:遞歸的時間復(fù)雜度可以通過根據(jù)前面的調(diào)用查找第n個遞歸調(diào)用的值來查找。遞歸的時間復(fù)雜度可能會呈指數(shù)級增長,尤其是在有大量遞歸調(diào)用時。?
  3. ?效率?:

    • ?迭代?:通常在循環(huán)次數(shù)較大時,迭代的效率明顯高于遞歸,因為遞歸涉及函數(shù)調(diào)用的開銷。?
    • ?遞歸?:雖然代碼長度較小,但由于函數(shù)調(diào)用的開銷,當(dāng)遞歸調(diào)用次數(shù)較多時,效率較低。
  4. ?應(yīng)用場景?:

    • ?迭代?:適用于當(dāng)問題可以通過簡單的循環(huán)結(jié)構(gòu)解決的情況,如數(shù)組遍歷、累加等。
    • ?遞歸?:適用于問題可以分解為多個相似子問題的情況,如樹的遍歷、圖的搜索等。
  5. ?無限重復(fù)的后果?:

    • ?迭代?:如果終止條件設(shè)置不當(dāng),可能導(dǎo)致無限循環(huán)。
    • ?遞歸?:如果基本情況設(shè)置不當(dāng),可能導(dǎo)致無限遞歸調(diào)用,最終可能導(dǎo)致系統(tǒng)崩潰。

綜上所述,選擇迭代還是遞歸取決于具體問題的性質(zhì)和需求。迭代通常適用于簡單的循環(huán)任務(wù),而遞歸適用于可以分解為多個相似子問題的任務(wù)。在實際應(yīng)用中,應(yīng)根據(jù)問題的特點和需求來選擇合適的方法

??

架構(gòu)設(shè)計作用

軟件架構(gòu)能夠在設(shè)計變更相對容易的階段考慮系統(tǒng)結(jié)構(gòu)的可選方案便于技術(shù)人員與非技術(shù)人員就軟件設(shè)計進(jìn)行交互,能夠展現(xiàn)軟件的結(jié)構(gòu)、屬性與內(nèi)部交互關(guān)系。
?
軟件架構(gòu)是項目干系人進(jìn)行交流的手段,明確了對系統(tǒng)實現(xiàn)的約束條件,決定了開發(fā)和維護(hù)組織的組織結(jié)構(gòu),制約著系統(tǒng)的質(zhì)量屬性。
?
軟件架構(gòu)使推理和控制的更改更加簡單有助于循序漸進(jìn)的原型設(shè)計,可以作為培訓(xùn)的基礎(chǔ)。
?
軟件架構(gòu)是可傳遞和可復(fù)用的模型,通過研究軟件架構(gòu)可能預(yù)測軟件的質(zhì)量。

構(gòu)件

構(gòu)件是一個獨立可交付的功能單元,外界通過接口訪問其提供的服務(wù)。
?
構(gòu)件由一組通常需要同時部署的原子構(gòu)件組成一個原子構(gòu)件是一個模塊和一組資源。原子構(gòu)件是部署、版本控制和替換的基本單位。原子構(gòu)件通常成組地部署,但是它也能夠被單獨部署。
?
構(gòu)件和原子構(gòu)件之間的區(qū)別在于,大多數(shù)原子構(gòu)件永遠(yuǎn)都不會被單獨部署,盡管它們可以被單獨部署。相反,大多數(shù)原子構(gòu)件都屬于一個構(gòu)件家族,一次部署往往涉及整個家族。
?
個模塊是不帶單獨資源的原子構(gòu)件(在這個嚴(yán)格定義下,Java 包不是模塊——在 Java 中部署的原子單元是類文件。一個單獨的包被編譯成多個單獨的類文件——每個公共類都有一個)。
模塊是一組類和可能的非面向?qū)ο蟮慕Y(jié)構(gòu)體,比如過程或者函數(shù)。
??

構(gòu)件和對象

構(gòu)件的特性是:
  • (1)獨立部署單元
  • (2)作為第三方的組裝單元
  • (3)沒有(外部的)可見狀態(tài)。一個構(gòu)件可以包含多個類元素,但是一個類元素只能屬于一個構(gòu)件。將一個類拆分進(jìn)行部署通常沒什么意義。
?
對象的特性是:
  • (1)一個實例單元具有唯一的標(biāo)志。
  • (2)可能具有狀態(tài),此狀態(tài)外部可見。
  • (3)封裝了自己的狀態(tài)和行為

構(gòu)件接口

接口標(biāo)準(zhǔn)化是對接口中消息的格式、模式和協(xié)議的標(biāo)準(zhǔn)化。它不是要將接口格式化為參數(shù)化操作的 集合,而是關(guān)注輸入輸出的消息的標(biāo)準(zhǔn)化,它強(qiáng)調(diào)當(dāng)機(jī)器在網(wǎng)絡(luò)中互連時,標(biāo)準(zhǔn)的消息模式、格式、協(xié)議的重要性。

面向構(gòu)件的編程(COP)

關(guān)注于如何支持建立面向構(gòu)件的解決方案。面向構(gòu)件的編程需要下列基本的支持
  • ——多態(tài)性(可替代性);
  • ——模塊封裝性(高層次信息的隱藏);
  • ——后期的綁定和裝載(部署獨立性);
  • ——安全性(類型和模塊安全性)。

2 基于架構(gòu)的軟件開發(fā)方法

ABSD 方法是架構(gòu)驅(qū)動強(qiáng)調(diào)由業(yè)務(wù)、質(zhì)量和功能需求的組合驅(qū)動架構(gòu)設(shè)計。它強(qiáng)調(diào)采用視角和
視圖來描述軟件架構(gòu),采用用例和質(zhì)量屬性場景來描述需求。進(jìn)一步來說,用例描述的是功能需求質(zhì)量屬性場景描述的是質(zhì)量需求(或側(cè)重于非功能需求)。
總結(jié):
-- ABSD就叫基于架構(gòu)的軟件開發(fā)方法,當(dāng)然是架構(gòu)驅(qū)動的,架構(gòu)設(shè)計呢在這里又是由業(yè)務(wù)、質(zhì)量和功能需求的組合來驅(qū)動的。
-- 用視角和視圖來描述軟件的架構(gòu),用用例和質(zhì)量屬性場景來描述需求。
-- 用例描述功能,質(zhì)量屬性場景描述質(zhì)量。
?
使用 ABSD方法,設(shè)計活動可從項目總體功能框架明確就開始,這意味著需求獲取和分析還沒
有完成,就開始了軟件設(shè)計。-- 意味著需求分析還沒完成就可以開始了,提前到需求分析了。
??
ABSD 方法有三個基礎(chǔ)。
  • 第一個基礎(chǔ)是功能的分解使用已有的基于模塊的內(nèi)聚和耦合技術(shù);
  • 第二個基礎(chǔ)是通過選擇架構(gòu)風(fēng)格實現(xiàn)質(zhì)量和業(yè)務(wù)需求
  • 第三個基礎(chǔ)是軟件模板的使用,軟件模板利用了一些軟件系統(tǒng)的結(jié)構(gòu)。
ABSD的實現(xiàn)需要由3個基礎(chǔ)/前提:
使用內(nèi)聚和耦合技術(shù)進(jìn)行功能的分解,功能模塊化;選擇合適的架構(gòu)風(fēng)格,要照顧到業(yè)務(wù)(功能)需求和質(zhì)量(性能)需求;利用一些現(xiàn)成的軟件模板,里面有現(xiàn)成的系統(tǒng)的結(jié)構(gòu)可利用。
ABSD 方法是 遞歸的且迭代的每一個步驟都是清晰定義的 。因此, 不管設(shè)計是否完成,架構(gòu)總
是清晰的 ,有助于降低架構(gòu)設(shè)計的隨意性。
?

開發(fā)過程

架構(gòu)設(shè)計是在需求分析之后,概要設(shè)計之前,是為了解決需求分析和軟件設(shè)計之間的鴻溝問題
基于架構(gòu)的軟件開發(fā)過程可分為下列六步:

基于ABSD的開發(fā)過程:
  • 需求是第一步,獲取、整理、分析需求,得把需求確定了;
  • 第二步是設(shè)計,提出模型,設(shè)計各功能模塊(構(gòu)件)及相互聯(lián)系(連接件)等等;
  • 第三步是文檔化,前面的設(shè)計的功能模塊(構(gòu)件、連接件)畢竟不是真正實現(xiàn)的代碼,只是文檔上的內(nèi)容,所以要把這些東西以及架構(gòu)相關(guān)的所有信息文檔化;
  • 第四步復(fù)審:文檔化后還要拉一群人來開會,一起討論這些設(shè)計是否合理和存在不足等等。復(fù)審不合格的打回去重新設(shè)計,修改文檔,再復(fù)審,直到大家意見一致。
  • 第五步實現(xiàn):復(fù)審都通過那就著手實現(xiàn)吧,根據(jù)文檔來分析設(shè)計構(gòu)件以及他們之間的調(diào)用關(guān)系,有現(xiàn)成的就用,沒現(xiàn)成的就開發(fā),測試。
  • 第六步演化:上一步已經(jīng)實現(xiàn)了并測試完成了,但是后期需要維護(hù)的,比如提出新需求,環(huán)境變化,業(yè)務(wù)改變,這就需要演化來滿足這些變化。演化是從需求開始重新走一遍。

架構(gòu)需求:重在掌握標(biāo)識構(gòu)件的三步,如下左圖。

架構(gòu)需求過程詳細(xì)步驟:

1.獲取需求:從庫里獲取還是用戶獲取都可以,整理合并,分類、形成文檔(SRS)。

---------------------------------------------標(biāo)識構(gòu)件過程---------------------------------------------------------

2.生成類圖:根據(jù)整理后的需求文檔,用一些CASE工具生成類圖,ABSD使用類圖來描述系統(tǒng)結(jié)構(gòu)。

3.對類進(jìn)行分組:生成了類圖,根據(jù)耦合和內(nèi)聚程度還需要把類分組,這樣簡化類圖結(jié)構(gòu),使其更加清晰可讀。

4.把類打包成構(gòu)件:把類簇打包成構(gòu)件,這些構(gòu)件可以分組合并。這一過程實現(xiàn)了構(gòu)件級的重用,構(gòu)件和構(gòu)件又可以打包成更大的構(gòu)件。

---------------------------------------------標(biāo)識構(gòu)件過程---------------------------------------------------------

5.需求評審:需求也是要拉一批人開會討論需求是否合理有效的,不符合打回去重新獲取再走一遍。

架構(gòu)設(shè)計:將需求階段的標(biāo)識構(gòu)件映射成構(gòu)件,進(jìn)行分析,如下右圖。

架構(gòu)設(shè)計過程詳細(xì)步驟:
1.提出架構(gòu)模型:選擇一個合適的架構(gòu)風(fēng)格(沒有就自己造),該模型為將來的實現(xiàn)和演化建立了目標(biāo)。
2.映射構(gòu)件:把已標(biāo)識的構(gòu)件映射到架構(gòu)中,將產(chǎn)生一個中間結(jié)構(gòu),它只包含適合架構(gòu)模型的構(gòu)件。
3.分析構(gòu)件相互作用:研究構(gòu)件之間的交互方式,確保它們能夠正確地協(xié)同工作,滿足系統(tǒng)的功能和性能要求。
4.產(chǎn)生架構(gòu):當(dāng)決定了關(guān)鍵構(gòu)件之間的相互作用后,就可以在中間結(jié)構(gòu)的基礎(chǔ)上進(jìn)行精化,得到軟件架構(gòu)
5.設(shè)計評審:拉一人開會討論產(chǎn)生的這個架構(gòu)是否有不合理的地方,有就打回去重新選擇構(gòu)件映射再走一遍,直到大家意見一致。

架構(gòu)(體系結(jié)構(gòu))文檔化:

主要產(chǎn)出兩種文檔,即 架構(gòu)(體系結(jié)構(gòu))規(guī)格說明 測試架構(gòu)(體系結(jié)構(gòu))需求的質(zhì)量設(shè)計說明書 。文檔是至關(guān)重要的,是所有人員通信的手段,關(guān)系開發(fā)的成敗。

文檔的完整性質(zhì)量是軟件架構(gòu)成功的關(guān)鍵因素。

關(guān)于文檔的三大注意事項:

(1)文檔要從使用者的角度進(jìn)行編寫。

(2)必須分發(fā)給所有與系統(tǒng)有關(guān)的開發(fā)人員 。

(3)且必須保證開發(fā)者手上的文檔是最新的。

架構(gòu)復(fù)審:

外部人員(獨立于開發(fā)組織之外的人,如用戶代表和領(lǐng)域?qū)<业?參加的復(fù)審,復(fù)審架構(gòu)是否滿足需求,質(zhì)量問題,構(gòu)件劃分合理性等。若復(fù)審不過,則返回架構(gòu)設(shè)計階段進(jìn)行重新設(shè)計、文檔化,再復(fù)審。
架構(gòu)復(fù)審【架構(gòu)評估】的目的是 標(biāo)識潛在的風(fēng)險,及早發(fā)現(xiàn)架構(gòu)設(shè)計中的缺陷和錯。

架構(gòu)實現(xiàn):用實體來顯示出架構(gòu)。實現(xiàn)構(gòu)件,構(gòu)件組裝成系統(tǒng),如下左圖:

架構(gòu)實現(xiàn)過程:

1.分析與設(shè)計:根據(jù)文檔(架構(gòu)規(guī)格說明、測試架構(gòu)需求的質(zhì)量設(shè)計說明數(shù))來實現(xiàn),?在架構(gòu)說明書中,已經(jīng)定義了系統(tǒng)中構(gòu)件與構(gòu)件之間的關(guān)系,構(gòu)件接口約束對外唯一代表了構(gòu)件,所以可以從構(gòu)件庫中直接查找符合接口約束的構(gòu)件。

2.構(gòu)件實現(xiàn):必要時開發(fā)新的滿足要求的構(gòu)件。

?

3.構(gòu)件組裝:按照設(shè)計文檔的要求進(jìn)行組裝,形成系統(tǒng)的基本結(jié)構(gòu)

?

4.系統(tǒng)測試:包括單個構(gòu)件的功能性測試和被組裝應(yīng)用的整體功能和性能測試。

架構(gòu)演化:對架構(gòu)進(jìn)行改變,按需求增刪構(gòu)件,使架構(gòu)可復(fù)用,如下右圖:

架構(gòu)演化詳細(xì)過程:
?
1.需求變化歸類:既然是演化那么肯定是需求發(fā)生了變化或者提出了新的,那么這些需求首先要分類,比如有些需求修改構(gòu)件就行,有些需要需要重新開發(fā)構(gòu)件,有些需要刪除構(gòu)件等等。
2.演化計劃:演化的是一個完整的實現(xiàn)了架構(gòu)的系統(tǒng)了,甚至在使用當(dāng)中,這就需要做一個計劃來操作演化,不能盲目的進(jìn)行。
3.構(gòu)件變動:修改,增加或刪除構(gòu)件,要對修改和增加的構(gòu)件進(jìn)行功能性測試。
4.更新構(gòu)件間相互作用:構(gòu)件變化了,受影響的構(gòu)件及它們間作用也跟著修改,比如調(diào)用關(guān)系的改變,順序調(diào)整,新增刪除等等。
5.構(gòu)件組裝與測試:對修改后的構(gòu)件進(jìn)行重新組裝,并進(jìn)行測試,以確保系統(tǒng)的功能和性能滿足要求。
6.技術(shù)評審:檢查架構(gòu)演化后的系統(tǒng)是否滿足所有需求,以及是否存在潛在的問題或缺陷。 如果喲問題打回去重新修改演化計劃,再走一遍。
7.得到演化后架構(gòu)。

3 軟件架構(gòu)風(fēng)格

軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。架構(gòu)風(fēng)格定義一個系統(tǒng)家族,即一個架構(gòu)定義一個詞匯表和一組約束。詞匯表中包含一些構(gòu)件和連接件類型,而這組約束
出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。
?
架構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導(dǎo)如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。對軟件架構(gòu)風(fēng)格的研究和實踐促進(jìn)對設(shè)計的重用,一些經(jīng)過實踐證實的解
決方案也可以可靠地用于解決新的問題。
?
架構(gòu)設(shè)計的一個核心問題是能否達(dá)到架構(gòu)級的軟件復(fù)用。
?
架構(gòu)風(fēng)格定義了用于描述系統(tǒng)的術(shù)語表和一組指導(dǎo)構(gòu)建系統(tǒng)的規(guī)則。
?

3.1 基本架構(gòu)風(fēng)格

  • 數(shù)據(jù)流風(fēng)格:面向數(shù)據(jù)流,按照一定的順序從前向后執(zhí)行程序,代表的風(fēng)格有 批處理序列、管道-過濾器。
  • 調(diào)用/返回風(fēng)格:構(gòu)件之間存在互相調(diào)用的關(guān)系,一般是顯式的調(diào)用,代表的風(fēng)格有 主程序/子程序、面向?qū)ο?、層次結(jié)構(gòu)(C/s 架構(gòu)風(fēng)格本質(zhì)屬于層次風(fēng)格)。
  • 獨立構(gòu)件風(fēng)格:構(gòu)件之間是互相獨立的,不存在顯式的調(diào)用關(guān)系,而是通過某個事件觸發(fā)、異步的方式來執(zhí)行,代表的風(fēng)格有 進(jìn)程通信、事件驅(qū)動系統(tǒng)(隱式調(diào)用)。
  • 虛擬機(jī)風(fēng)格:自定義了一套規(guī)則供使用者使用,使用者基于這個規(guī)則來開發(fā)構(gòu)件,能夠跨平臺適,代表的風(fēng)格有 解釋器、基于規(guī)則的系統(tǒng)。
  • 倉庫風(fēng)格:以數(shù)據(jù)位中心,所有的操作都是圍繞建立的數(shù)據(jù)中心進(jìn)行的,代表的風(fēng)格有數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)。

數(shù)據(jù)流風(fēng)格

批處理序列:構(gòu)件為一系列固定順序的計算單元,構(gòu)件之間只通過數(shù)據(jù)傳遞交互。每個處理步驟是一個獨立的程序,每一步必須在其前一步結(jié)束后才能開始,數(shù)據(jù)必須是完整的,以整體的方式傳遞。
管道-過濾器:每個構(gòu)件都有一組輸入和輸出,構(gòu)件讀取輸入的數(shù)據(jù)流,經(jīng)過內(nèi)部處理,產(chǎn)生輸出數(shù)據(jù)流。前一個構(gòu)件的輸出作為后一個構(gòu)件的輸入,前后數(shù)據(jù)流關(guān)聯(lián)。過濾器就是構(gòu)件,連接件就是管道。
早期編譯器就是采用的這種架構(gòu),要一步一步處理的,均可考慮此架構(gòu)風(fēng)格。
?
二者區(qū)別 在于批處理前后構(gòu)件不一定有關(guān)聯(lián),并且是作為整體傳遞,即必須前一個執(zhí)行完才能執(zhí)行下一個。管道-過濾器是前一個輸出作為后一個輸入,前面執(zhí)行到部分可以開始下一個的執(zhí)行。
?

調(diào)用/返回風(fēng)格

主程序/子程序:單線程控制,把問題劃分為若干個處理步驟,構(gòu)件即為主程序和子程序,子程序通??珊铣蔀槟K。過程調(diào)用作為交互機(jī)制,充當(dāng)連接件的絕色。調(diào)用關(guān)系具有層次性其語義邏輯表現(xiàn)為主程序的正確性取決于它調(diào)用的子程序的正確性
?
面向?qū)ο?/strong>:構(gòu)件是對象,對象是抽象數(shù)據(jù)類型的實例。在抽象數(shù)據(jù)類型中,數(shù)據(jù)的表示和它們的相應(yīng)操作被封裝起來,對象的行為體現(xiàn)在其接受和請求的動作。連接件即使對象間交互的方式,對象是通過函數(shù)和過程的調(diào)用來交互的。
?
層次結(jié)構(gòu)構(gòu)件組成一個層次結(jié)構(gòu)連接件通過決定層間如何交互協(xié)議來定義。每層為上一層
提供服務(wù),使用下一層的服務(wù),只能見到與自己鄰接的層。通過層次結(jié)構(gòu),可以將大的問題分解為若干個漸進(jìn)的小問題逐步解決,可以隱藏問題的復(fù)雜度。修改某一層,最多影響其相鄰的兩層(通常只能影響上層)。
  • 層次結(jié)構(gòu)優(yōu)點:
  1. 支持基于可增加抽象層的設(shè)計,允許將一個復(fù)雜問題分解成一個增量步驟序列的實現(xiàn)。
  2. 不同的層次處于不同的抽象級別,越靠近底層,抽象級別越高;越靠近頂層,抽象級別越低。
  3. 由于每一層最多只影響兩層,同時只要給相鄰層提供相同的接口,允許每層用不同的方法實現(xiàn),同樣為軟件復(fù)用提供了強(qiáng)大的支持。
  • 缺點:
  1. 并不是每個系統(tǒng)都可以很容易的劃分為分層的模式。
  2. 很難找到一個合適的、正確的層次抽象方法。

獨立構(gòu)件風(fēng)格

進(jìn)程通信構(gòu)件是獨立的進(jìn)程連接件是消息傳遞。構(gòu)件通常是命名過程,消息傳遞的方式可以是點對點、異步或同步方式,以及遠(yuǎn)程過程(方法)調(diào)用等。
??
事件驅(qū)動系統(tǒng)(隱式調(diào)用):構(gòu)件不直接調(diào)用一個過程,而是觸發(fā)或廣播一個或多個事件。構(gòu)件中的過程在一個或多個事件中注冊,當(dāng)某個事件被觸發(fā)時,系統(tǒng)自動調(diào)用在這個事件中注冊的所有過程。一個事件的觸發(fā)就導(dǎo)致了另一個模塊中的過程調(diào)用。這種風(fēng)格中的構(gòu)件是匿名的過程,它們之間交互的連接件往往是以過程之間的隱式調(diào)用來實現(xiàn)的。
?
主要優(yōu)點是為軟件復(fù)用提供了強(qiáng)大的支持,為構(gòu)件維護(hù)和演化帶來了方便缺點是構(gòu)件放棄了
對系統(tǒng)計算的控制。
?

虛擬機(jī)風(fēng)格

解釋器:通常包括一個完成解釋工作的解釋引擎、一個包含將被解釋的代碼的存儲區(qū)、一個記錄解釋引擎當(dāng)前工作狀態(tài)的數(shù)據(jù)結(jié)構(gòu),以及一個記錄源代碼被解釋執(zhí)行的進(jìn)度的數(shù)據(jù)結(jié)構(gòu)。具有解釋器風(fēng)格的軟件中含有一個虛擬機(jī),可以仿真硬件的執(zhí)行過程和一些關(guān)鍵應(yīng)用,缺點是執(zhí)行效率低。
解釋器風(fēng)格的一般組成:
  • 解釋引擎:解釋工作
  • 存儲區(qū):存要解析代碼
  • 數(shù)據(jù)結(jié)構(gòu):記錄解釋引擎當(dāng)前工作狀態(tài)
  • 數(shù)據(jù)結(jié)構(gòu):記錄代碼被解釋執(zhí)行的進(jìn)度
??
基于規(guī)則的系統(tǒng):包括規(guī)則集、規(guī)則解釋器、規(guī)則/數(shù)據(jù)選擇器和工作內(nèi)存,一般用在人工智能
領(lǐng)域和 DSS、專家系統(tǒng)中。
基于規(guī)則風(fēng)格的一般組成:
  • 規(guī)則集:可多個,規(guī)則的集合
  • 規(guī)則解釋器:負(fù)責(zé)解析和執(zhí)行這些規(guī)則,確保系統(tǒng)能夠根據(jù)預(yù)定義的規(guī)則進(jìn)行操作。
  • 規(guī)則/數(shù)據(jù)選擇器:扮演著關(guān)鍵角色,它決定了哪些數(shù)據(jù)應(yīng)該被應(yīng)用到哪些規(guī)則上。
  • 工作內(nèi)存:用來存儲當(dāng)前狀態(tài)和中間結(jié)果的地方。
?

倉庫風(fēng)格(數(shù)據(jù)共享風(fēng)格,以數(shù)據(jù)為中心)

數(shù)據(jù)庫系統(tǒng):構(gòu)件主要有兩大類,一類是中央共享數(shù)據(jù)源 保存當(dāng)前系統(tǒng)的數(shù)據(jù)狀態(tài) ;另一類是多個獨立處理單元,處理單元 對數(shù)據(jù)元素進(jìn)行操作 。
?個人理解:這兩大類構(gòu)件一個是數(shù)據(jù)庫服務(wù)端,另一個是類似客戶端;連接件就是它們之間的互聯(lián)的方式、協(xié)議等等這些。
??
黑板系統(tǒng):包括知識源、黑板和控制三部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識。知識源響應(yīng)黑板的變化,也只修改黑板;黑板是一個全局?jǐn)?shù)據(jù)庫,包含問題域解空間的全部狀態(tài),是知識源相互作用的唯一媒介;知識源響應(yīng)式通過黑板狀態(tài)的變化來控制的。黑板系統(tǒng)通常應(yīng)用在對于解決問題沒有確定性算法的軟件中(信號處理、問題規(guī)劃和編譯器優(yōu)化等)。
黑板系統(tǒng):
  • 知識源:包含若干獨立計算的不同單元,以及獨立的、與應(yīng)用程序相關(guān)的知識,知識源之間不直接進(jìn)行通訊,它們之間的交互只通過黑板來完成。--獨立計算單元和知識。
  • 黑板:全局?jǐn)?shù)據(jù)庫,包含問題域解空間的全部狀態(tài),按照與應(yīng)用程序相關(guān)的層次來組織并解決問題的數(shù)據(jù),知識源通過不斷地改變黑板數(shù)據(jù)來解決問題。-- 全局?jǐn)?shù)據(jù)庫,問題域和解空間全部狀態(tài),根據(jù)與應(yīng)用程序相關(guān)的層次來解決問題。
  • 控制:完全由黑板的狀態(tài)驅(qū)動,黑板狀態(tài)的改變決定了需要使用的特定知識。--黑板狀態(tài)驅(qū)動

與數(shù)據(jù)庫系統(tǒng)相比,黑板相當(dāng)于中央共享數(shù)據(jù)源(服務(wù)端,中央數(shù)據(jù)結(jié)構(gòu)),知識源相當(dāng)于獨立處理單元(客戶端,獨立構(gòu)件)

??
超文本系統(tǒng):構(gòu)件網(wǎng)狀鏈接方式相互連接,用戶可以在構(gòu)件之間進(jìn)行按照人類的聯(lián)想思維方式任意跳轉(zhuǎn)到相關(guān)構(gòu)件。是一種非線性的網(wǎng)狀信息組織方法,它以節(jié)點為基本單位鏈作為節(jié)點之間的聯(lián)想式關(guān)聯(lián)。通常應(yīng)用在互聯(lián)網(wǎng)領(lǐng)域。
??
現(xiàn)代編譯器的集成開發(fā)環(huán)境一般采用數(shù)據(jù)倉儲(即以數(shù)據(jù)為中心的架構(gòu)風(fēng)格)架構(gòu)風(fēng)格進(jìn)行開發(fā),
其中心數(shù)據(jù)就是程序的語法樹。
?

閉環(huán)控制架構(gòu)(過程控制)

當(dāng)軟件被用來操作一個物理系統(tǒng)時,軟件與硬件之間可以粗略的表示為一個反饋循環(huán),這個反饋
循環(huán)通過接受一定的輸入,確定一系列的輸出,最終使環(huán)境達(dá)到一個新的狀態(tài),適合于嵌入式系統(tǒng),涉及連續(xù)的動作與狀態(tài)。
??

C2 架構(gòu)風(fēng)格

C2 體系結(jié)構(gòu)風(fēng)格可以概括為:通過連接件綁定在一起的按照一組規(guī)則運作的并行構(gòu)件網(wǎng)絡(luò)
C2風(fēng)格中的系統(tǒng)組織規(guī)則如下:
  • (1)系統(tǒng)中的構(gòu)件和連接件都有一個頂部和一個底部;
  • (2)構(gòu)件的頂部應(yīng)連接到某連接件的底部,構(gòu)件的底部則應(yīng)連接到某連接件的頂部,而構(gòu)件與構(gòu)件之 間的直接連接是不允許的
  • (3)一個連接件可以和任意數(shù)目的其它構(gòu)件和連接件連接;
  • (4)當(dāng)兩個連接件進(jìn)行直接連接時必須由其中一個的底部到另一個的頂部。

必背:

3.2 層次結(jié)構(gòu)風(fēng)格

兩層C/S?架構(gòu)

客戶端和服務(wù)器都有處理功能,相比較于傳統(tǒng)的集中式軟件架構(gòu),還是有不少優(yōu)點的,但是現(xiàn)在已經(jīng)不常用,原因有:開發(fā)成本較高、客戶端程序設(shè)計復(fù)雜、信息內(nèi)容和形式單一、用戶界面風(fēng)格不一、軟件移植困難、軟件維護(hù)和升級困難、新技術(shù)不能輕易應(yīng)用、安全性問題、服務(wù)器端壓力大難以復(fù)用。

三層 C/S?架構(gòu)

處理功能獨立出來,表示層和數(shù)據(jù)層都變得簡單。表示層在客戶機(jī)上,功能層在應(yīng)用服務(wù)器上,數(shù)據(jù)層在數(shù)據(jù)庫服務(wù)器上。即將兩層 C/S 架構(gòu)中的數(shù)據(jù)從服務(wù)器中獨立出來了。其優(yōu)點下面四點:
  • 各層在邏輯上保持相對獨立,整個系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性
  • 允許靈活有效的選用相應(yīng)的平臺和硬件系統(tǒng),具有良好的可升級性和開放性
  • 各層可以并行開發(fā),各層也擇各自最適合的開發(fā)語言
  • 功能層有效的隔離表示層與數(shù)據(jù)層,為嚴(yán)格的安全管理奠定了堅實的基礎(chǔ),整個系統(tǒng)的管理層次也更加合理和可控制
三層 C/S 架構(gòu)設(shè)計的關(guān)鍵在于各層之間的通信效率,要慎重考慮三層間的通信方法、通信頻度和
數(shù)據(jù)量,否則即使分配給各層的硬件能力很強(qiáng),性能也不高。

三層 B/S 架構(gòu)

是三層C/S 架構(gòu)的變種,將客戶端變?yōu)橛脩艨蛻舳松系臑g覽器,將應(yīng)用服務(wù)器變?yōu)榫W(wǎng)絡(luò)上的 WEB服務(wù)器,又稱為0客戶端架構(gòu),雖然不用開發(fā)客戶端,但有很多缺點,主要是數(shù)據(jù)處理能力差:
  • B/S架構(gòu)缺乏對動態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功能
  • 安全性難以控制
  • 在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)低于C/S 架構(gòu);
  • 數(shù)據(jù)提交一般以頁面為單位,數(shù)據(jù)的動態(tài)交互性不強(qiáng)不利于 OLTP應(yīng)用

混合架構(gòu)風(fēng)格

內(nèi)外有別模型:企業(yè)內(nèi)部使用C/S,外部人員訪問使用 B/S。
查改有別模型:采用 B/S 查詢,采用 C/s修改。
混合架構(gòu)實現(xiàn)困難,且成本高。

富互聯(lián)網(wǎng)應(yīng)用 RIA

彌補(bǔ)三層 B/S架構(gòu)存在的問題,RIA是一種用戶接口,比用HTML實現(xiàn)的接口更加健壯,且有可
視化內(nèi)容,本質(zhì)還是網(wǎng)站模式,其優(yōu)點如下:
  • RIA結(jié)合C/S 架構(gòu)反應(yīng)速度快、交互性強(qiáng)的優(yōu)點與 B/S 架構(gòu)傳播范圍廣容易傳播的特性
  • RIA 簡化并改進(jìn)了B/S架構(gòu)的用戶交互;
  • 數(shù)據(jù)能夠被緩存在客戶端,從而可以實現(xiàn)一個比基于 HTML的響應(yīng)速度更快且數(shù)據(jù)往返于服務(wù)器的次數(shù)更少的用戶界面。
本質(zhì)還是0客戶端,借助于高速網(wǎng)速實現(xiàn)必要插件在本地的快速緩存,增強(qiáng)頁面對動態(tài)頁面的支
持能力,典型的如小程序。--- 其實是利用高速的網(wǎng)絡(luò)在現(xiàn)搭建一個客戶端。

MVC

用戶操作->View(負(fù)責(zé)接收用戶的輸入操作)->Controller(業(yè)務(wù)邏輯處理)->Model(數(shù)據(jù)持久化)->View(將結(jié)果反饋給View)。經(jīng)典 MVC架構(gòu)如下圖所示:

MVP

MVP是把 MVC中的 Controller換成了 Presenter(呈現(xiàn)),目的就是為了完全切斷 View跟Model 之間的聯(lián)系,由 Presenter 充當(dāng)橋梁,做到 View-Model之間通信的完全隔離。

MVVM

如果說MVP是對 MVC的進(jìn)一步改進(jìn),那么 MVVM 則是思想的完全變革。它是將“數(shù)據(jù)模型數(shù)據(jù)雙向綁定”的思想作為核心,因此在 View和 Model之間沒有聯(lián)系,通過ViewModel 進(jìn)行交互,而且 Model 和 ViewModel 之間的交互是雙向的,因此視圖的數(shù)據(jù)的變化會同時修改數(shù)據(jù)源,而數(shù)據(jù)源數(shù)據(jù)的變化也會立即反應(yīng)到View上。-- View和Model之間不直接聯(lián)系,通過ViewModel來交互,ViewModel和Model雙向交互。

3.3 面向服務(wù)的架構(gòu) SOA

概念

SOA是一種粗粒度、松耦合服務(wù)架構(gòu) ,服務(wù)之間通過簡單、精確定義接口進(jìn)行通信,不涉及底層編程接口和通信模型。
?
在 SOA 中,服務(wù)是一種為了滿足某項業(yè)務(wù)需求的操作、規(guī)則等的邏輯組合,它包含一系列有序活動的交互,為實現(xiàn)用戶目標(biāo)提供支持。
??
SOA并不僅僅是一種開發(fā)方法,還具有管理上的優(yōu)點,管理員可直接管理開發(fā)人員所構(gòu)建的相同
服務(wù)。多個服務(wù)通過企業(yè)服務(wù)總線提出服務(wù)請求,由應(yīng)用管理來進(jìn)行處理,如下:
?
實施 SOA的關(guān)鍵目標(biāo)是實現(xiàn)企業(yè)IT資產(chǎn)重用的最大化。
在實施 SOA過程中要牢記以下特征
  • 可從企業(yè)外部訪問隨時可用(服務(wù)請求能被及時響應(yīng))、
  • 粗粒度接口(粗粒度提供一項特定的業(yè)務(wù)功能,而細(xì)粒度服務(wù)代表了技術(shù)構(gòu)件方法)、
  • 服務(wù)分級、
  • 松散耦合(服務(wù)提供者和服務(wù)使用者分離)、
  • 重用的服務(wù)及服務(wù)接口設(shè)計管理、
  • 標(biāo)準(zhǔn)化的接口(WSDL、SOAP、XML是核心)、
  • 支持各種消息模式、
  • 精確定義的服務(wù)接口。

總結(jié):

外部訪問、可用及時、粗粒度、服務(wù)分級、松耦合(提/使)、可重用、標(biāo)準(zhǔn)化、消息模式多,接口精確定義

XML是一種描述語言,WSDL是基于XML的描述服務(wù)的,SOAP是簡單對象訪問協(xié)議,用于交換數(shù)據(jù)的

從基于對象到基于構(gòu)件再到基于服務(wù),架構(gòu)越來越松散耦合,粒度越來越粗,接口越來越標(biāo)準(zhǔn)。
基于服務(wù)的構(gòu)件與傳統(tǒng)構(gòu)件的區(qū)別有四點:
  • 服務(wù)構(gòu)件粗粒度傳統(tǒng)構(gòu)件細(xì)粒度居多;
  • 服務(wù)構(gòu)件的接口時標(biāo)準(zhǔn)的,主要是WSDL接口,而傳統(tǒng)構(gòu)件常以具體 API形式出現(xiàn);
  • 服務(wù)構(gòu)件的實現(xiàn)與語言是無關(guān)的,而傳統(tǒng)構(gòu)件常綁定某種特定的語言
  • 服務(wù)構(gòu)件可以通過構(gòu)件容器提供QoS的服務(wù),而傳統(tǒng)構(gòu)件完全由程序代碼直接控制。

總結(jié):

服務(wù)構(gòu)件粗粒度,傳統(tǒng)細(xì)粒度;服務(wù)構(gòu)件接口標(biāo)準(zhǔn),傳統(tǒng)API;服務(wù)構(gòu)件實現(xiàn)語言無關(guān),傳統(tǒng)正相反;服務(wù)構(gòu)件有容器QoS,傳統(tǒng)代碼保證。

關(guān)鍵技術(shù)

SOA 中應(yīng)用的關(guān)鍵技術(shù)如下表。
發(fā)現(xiàn)服務(wù)
UDDI:用于 Web服務(wù)注冊和服務(wù)查找,描述了服務(wù)的概念,定義了編程的接口,供其他企業(yè)來
調(diào)用。
DISCO:發(fā)現(xiàn)公開服務(wù)的功能及交互協(xié)議。
描述服務(wù)
WSDL(WEB服務(wù)描述語言)協(xié)議:用于描述 Web服務(wù)的接口和操作功能,描述網(wǎng)絡(luò)服務(wù)。
消息格式層
SOAP建立 Web服務(wù)和服務(wù)請求之間通信提供支持
REST (Representational State Transfer,表述性狀態(tài)轉(zhuǎn)移)是一種只使用HTTP和 XML進(jìn)行基于 Web 通信的技術(shù),可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。
編碼格式層
擴(kuò)展標(biāo)記語言(Extensible Markup Language, XML),用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。

SOA的實現(xiàn)方式

WEB Service
服務(wù)提供者、服務(wù)注冊中心(中介,提供交易平臺,可有可無)、服務(wù)請求者。服務(wù)提供者將服務(wù)描述發(fā)布到服務(wù)注冊中心,供服務(wù)請求者查找,查找到后,服務(wù)請求者將綁定查找結(jié)果。如下圖:
分為六層:
  • 底層傳輸層:負(fù)責(zé)底層消息的傳輸,采用HTTP、JMS、SMTP協(xié)議
  • 服務(wù)通信協(xié)議層描述并定義服務(wù)間通信的技術(shù)標(biāo)準(zhǔn),采用 SOAP和 REST協(xié)議
  • 服務(wù)描述層:采用WSDL協(xié)議
  • 服務(wù)層:對企業(yè)應(yīng)用系統(tǒng)進(jìn)行包裝,通過WSDL定義的標(biāo)準(zhǔn)進(jìn)行調(diào)用
  • 業(yè)務(wù)流程層:支持服務(wù)發(fā)現(xiàn)服務(wù)調(diào)用點到點的服務(wù)調(diào)用,采用WSDPEL標(biāo)準(zhǔn)
  • 服務(wù)注冊層:采用UDDI協(xié)議

補(bǔ)充:

JMS是Java消息服務(wù),Java中面向消息中間件API

底層是傳輸層,消息傳輸模塊;通信層用一些SOAP和REST協(xié)議來封裝一下底層消息;描述層采用WSDL協(xié)議描述服務(wù);服務(wù)層是包裝各系統(tǒng),并采用WSDL標(biāo)準(zhǔn)調(diào)用;業(yè)務(wù)流程層,來提供發(fā)現(xiàn)、調(diào)用的方式、標(biāo)準(zhǔn);注冊層,用UDDI協(xié)議,用于注冊。

服務(wù)注冊表
  • 服務(wù)注冊:應(yīng)用開發(fā)者(服務(wù)提供者)在注冊表中公布服務(wù)的功能。
  • 服務(wù)位置:服務(wù)使用者(服務(wù)應(yīng)用開發(fā)者),幫助他們查詢注冊服務(wù),尋找符合自身要求的服務(wù)。
  • 服務(wù)綁定:服務(wù)使用者利用檢索到的服務(wù)接口來編寫代碼,所編寫的代碼將與注冊的服務(wù)綁定,調(diào)用注冊的服務(wù),以及與它們實現(xiàn)互動。
本質(zhì)與WEB Service類似,只是使用一個注冊表來代替服務(wù)注冊中心。
企業(yè)服務(wù)總線 ESB
客戶端(服務(wù)請求者)、基礎(chǔ)架構(gòu)服務(wù)(中間件)、核心集成服務(wù)(提供服務(wù))。本質(zhì)也是通過網(wǎng)絡(luò),有下列六點功能:
  • 提供位置透明性的消息路由和尋址服務(wù)
  • 提供服務(wù)注冊命名的管理功能;
  • 支持多種消息傳遞范型
  • 支持多種可以廣泛使用的傳輸協(xié)議
  • 支持多種數(shù)據(jù)格式及其相互轉(zhuǎn)換
  • 提供日志和監(jiān)控功能。

4 軟件架構(gòu)復(fù)用

軟件產(chǎn)品線是指一組軟件密集型系統(tǒng),它們共享一個公共的、可管理的特性集,滿足某個特定市場或任務(wù)的具體需要,是以規(guī)定的方式用公共的核心資產(chǎn)集成開發(fā)出來的。即圍繞核心資產(chǎn)庫進(jìn)行管理、復(fù)用、集成新的系統(tǒng)
??
軟件架構(gòu)復(fù)用的類型包括機(jī)會復(fù)用和系統(tǒng)復(fù)用。機(jī)會復(fù)用是指開發(fā)過程中,只要發(fā)現(xiàn)有可復(fù)用的資產(chǎn),就對其進(jìn)行復(fù)用。系統(tǒng)復(fù)用是指在開發(fā)之前,就要進(jìn)行規(guī)劃,以決定哪些需要復(fù)用
??
可復(fù)用的資產(chǎn)包括:需求、架構(gòu)設(shè)計、元素、建模與分析、測試、項目規(guī)劃、過程方法和工具、人員、樣本系統(tǒng)、缺陷消除。
??
復(fù)用的基本過程主要包括3個階段首先構(gòu)造/獲取可復(fù)用的軟件資產(chǎn),其次管理這些資產(chǎn)(構(gòu)件庫),最后針對特定的需求,從這些資產(chǎn)中選擇可復(fù)用的部分,以開發(fā)滿足需求的應(yīng)用系統(tǒng)。

5 特定領(lǐng)域軟件架構(gòu) DSSA

DSSA 就是專用于一類特定類型的任務(wù)(領(lǐng)域)的、在整個領(lǐng)域中能有效地使用的、為成功構(gòu)造應(yīng)用 系統(tǒng)限定了標(biāo)準(zhǔn)的組合結(jié)構(gòu)的軟件構(gòu)件的集合
-- 它是一個構(gòu)件集合,只是這個集合的構(gòu)件都是適應(yīng)于特定的領(lǐng)域,在這個領(lǐng)域中比較通用,或者比較標(biāo)準(zhǔn)。
??
DSSA 就是一個特定的問題領(lǐng)域中支持一組應(yīng)用的領(lǐng)域模型、參考需求、參考架構(gòu)等組成的開發(fā)基礎(chǔ),其目標(biāo)就是支持在一個特定領(lǐng)域中多個應(yīng)用的生成
?
垂直域:在一個特定領(lǐng)域中通用的軟件架構(gòu),是一個完整的架構(gòu)。
水平域:多個不同的特定領(lǐng)域之間的相同的部分的小工具(如購物和教育都有收費系統(tǒng),收費
系統(tǒng)即是水平域)。
?

DSSA的三個基本活動

領(lǐng)域分析:這個階段的主要目標(biāo)是獲得領(lǐng)域模型(領(lǐng)域需求)。識別信息源,即整個領(lǐng)域工程過程中信息的來源,可能的信息源包括現(xiàn)存系統(tǒng)、技術(shù)文獻(xiàn)、問題域和系統(tǒng)開發(fā)的專家、用戶調(diào)查和市場分析、領(lǐng)域演化的歷史記錄等,在此基礎(chǔ)上就可以分析領(lǐng)域中系統(tǒng)的需求,確定哪些需求是領(lǐng)域中的系統(tǒng)廣泛共享的,從而建立領(lǐng)域模型。
??
領(lǐng)域設(shè)計:這個階段的目標(biāo)是獲得 DSSADSSA描述在領(lǐng)域模型中表示的需求的解決方案,它不是單個系統(tǒng)的表示,而是能夠適應(yīng)領(lǐng)域中多個系統(tǒng)的需求的一個高層次的設(shè)計。建立了領(lǐng)域模型之后,就可以派生出滿足這些被建模的領(lǐng)域需求 DSSA。
??
領(lǐng)域?qū)崿F(xiàn):這個階段的主要目標(biāo)是依據(jù)領(lǐng)域模型和 DSSA開發(fā)和組織可重用信息。這些可重用信息可能是從現(xiàn)有系統(tǒng)中提取得到,也可能需要通過新的開發(fā)得到。
??
以上過程是一個反復(fù)的、逐漸求精的過程。在實施領(lǐng)域工程的每個階段中,都可能返回到以前的步驟,對以前的步驟得到的結(jié)果進(jìn)行修改和完善,再回到當(dāng)前步驟,在新的基礎(chǔ)上進(jìn)行本階段的活動。
??

參與 DSSA的四種角色人員

領(lǐng)域?qū)<?/strong>:包括該領(lǐng)域中系統(tǒng)的有經(jīng)驗的用戶、從事該領(lǐng)域中系統(tǒng)的需求分析、設(shè)計、實現(xiàn)以及項目管理的有經(jīng)驗的軟件工程師等。提供關(guān)于領(lǐng)域中系統(tǒng)的需求規(guī)約和實現(xiàn)的知識,幫助組織規(guī)范的、一致的領(lǐng)域字典,幫助選擇樣本系統(tǒng)作為領(lǐng)域工程的依據(jù),復(fù)審領(lǐng)域模型、DSSA 等領(lǐng)域工程產(chǎn)品,等等。
??
領(lǐng)域分析人員:由具有知識工程背景的有經(jīng)驗的系統(tǒng)分析員來擔(dān)任。控制整個領(lǐng)域分析過程,進(jìn)行知識獲取,將獲取的知識組織到領(lǐng)域模型中。
??
領(lǐng)域設(shè)計人員:由有經(jīng)驗的軟件設(shè)計人員來擔(dān)任。根據(jù)領(lǐng)域模型和現(xiàn)有系統(tǒng)開發(fā)出DSSA,并對DSSA的準(zhǔn)確性和一致性進(jìn)行驗證。
??
領(lǐng)域?qū)崿F(xiàn)人員:由有經(jīng)驗的程序設(shè)計人員來擔(dān)任。根據(jù)領(lǐng)域模型和 DSSA,開發(fā)構(gòu)件。
??

建立 DSSA的過程

(1)定義領(lǐng)域范圍:領(lǐng)域中的應(yīng)用要滿足用戶一系列的需求。
(2)定義領(lǐng)域特定的元素:建立領(lǐng)域的字典,歸納領(lǐng)域中的術(shù)語識別出領(lǐng)域中相同和不相同的元素。
(3)定義領(lǐng)域特定的設(shè)計和實現(xiàn)需求的約束識別領(lǐng)域中的所有約束,這些約束對領(lǐng)域的設(shè)計和實現(xiàn)會造成什么后果。
(4)定義領(lǐng)域模型和架構(gòu)產(chǎn)生一般的架構(gòu),并描述其構(gòu)件說明。
(5)產(chǎn)生、搜集可復(fù)用的產(chǎn)品單元:為 DSSA增加復(fù)用構(gòu)件,使可用于新的系統(tǒng)。
??
以上過程是并發(fā)的、遞歸的、反復(fù)的、螺旋型的。該過程的目的是將用戶的需求映射為基于實現(xiàn)限制集合的軟件需求,這些需求定義了 DSSA。
定范圍-->定元素-->識別約束-->產(chǎn)生架構(gòu)-->產(chǎn)生構(gòu)件。? 這些過程并發(fā)、遞歸、反復(fù)、螺旋的
??

DSSA的三層次系統(tǒng)模型

領(lǐng)域開發(fā)環(huán)境:領(lǐng)域架構(gòu)師決定核心架構(gòu),產(chǎn)出參考結(jié)構(gòu)、參考需求、架構(gòu)、領(lǐng)域模型、開發(fā)工具。
?
領(lǐng)域特定的應(yīng)用開發(fā)環(huán)境:應(yīng)用工程師根據(jù)具體環(huán)境來將核心架構(gòu)實例化
?
應(yīng)用執(zhí)行環(huán)境:操作員實現(xiàn)實例化后的架構(gòu)。
????????
?

6 系統(tǒng)質(zhì)量屬性與架構(gòu)評估

6.1 軟件系統(tǒng)質(zhì)量屬性

軟件系統(tǒng)的質(zhì)量就是“軟件系統(tǒng)與明確地和隱含地定義的需求相一致的程度”。
-- 明確提出的(SRS),以及隱含的期望,這些都是需求,軟件系統(tǒng)表現(xiàn)與這些需求一致的程度就用軟件系統(tǒng)的質(zhì)量來表達(dá)。

可以將軟件系統(tǒng)的質(zhì)量屬性分為開發(fā)期質(zhì)量屬性和運行期質(zhì)量屬性2個部分。

1.開發(fā)期質(zhì)量屬性主要指在軟件開發(fā)階段所關(guān)注的質(zhì)量屬性,主要包含6個方面。
  • (1)易理解性:指設(shè)計被開發(fā)人員理解的難易程度。
  • (2)可擴(kuò)展性:軟件因適應(yīng)新需求或需求變化而增加新功能的能力,也稱為靈活性。
  • (3)可重用性:指重用軟件系統(tǒng)或某一部分的難易程度。
  • (4)可測試性:對軟件測試以證明其滿足需求規(guī)范的難易程度。
  • (5)可維護(hù)性:當(dāng)需要修改缺陷、增加功能、提高質(zhì)量屬性時,識別修改點并實施修改的難易程度。
  • (6)可移植性:將軟件系統(tǒng)從一個運行環(huán)境轉(zhuǎn)移到另一個不同的運行環(huán)境的難易程度。

???????理解、擴(kuò)展、重用、測試、維護(hù)、移植的難易程度。

2.運行期質(zhì)量屬性主要指在軟件運行階段所關(guān)注的質(zhì)量屬性,主要包含7個方面。
  • (1)性能:性能是指軟件系統(tǒng)及時提供相應(yīng)服務(wù)的能力,如速度、吞吐量和容量等的要求。
  • (2)安全性:指軟件系統(tǒng)同時兼顧向合法用戶提供服務(wù),以及阻止非授權(quán)使用的能力。
  • (3)可伸縮性:指當(dāng)用戶數(shù)和數(shù)據(jù)量增加時,軟件系統(tǒng)維持高服務(wù)質(zhì)量的能力。例如,通過增加服務(wù)器來提高能力。
  • (4)互操作性:指本軟件系統(tǒng)與其他系統(tǒng)交換數(shù)據(jù)和相互調(diào)用服務(wù)的難易程度。
  • (5)可靠性:軟件系統(tǒng)在一定的時間內(nèi)持續(xù)無故障運行的能力。
  • (6)可用性:指系統(tǒng)在一定時間內(nèi)正常工作的時間所占的比例。可用性會受到系統(tǒng)錯誤,惡意攻擊,高負(fù)載等問題的影響。
  • (7)魯棒性:是指軟件系統(tǒng)在非正常情況(如用戶進(jìn)行了非法操作、相關(guān)的軟硬件系統(tǒng)發(fā)生了故障等)下仍能夠正常運行的能力,也稱健壯性或容錯性。

性能、安全、伸縮、互操作、可靠、可用、魯棒

?

伸縮:能屈能伸,用戶量訪問量上來能及時調(diào)整資源保持系統(tǒng)運行快速,質(zhì)量不打折扣。

互操作:跟其他系統(tǒng)或人、設(shè)備打交道的難易程度

可靠:盡量長時間運行不發(fā)生故障

可用:不發(fā)生故障運行所占比例(要盡量高)? ?--? 可用可靠都出現(xiàn)首選可用

魯棒:健壯,容錯,比如發(fā)生非法操作,意外故障能容錯,甚至恢復(fù)(比如云服務(wù)就有容錯機(jī)制),這樣更健壯。

面向架構(gòu)評估的質(zhì)量屬性

1、性能:指系統(tǒng)的響應(yīng)能力,即要經(jīng)過多長時間才能對某個事件做出響應(yīng),或者在某段時間內(nèi)系統(tǒng)所能處理的事件的個數(shù)。如響應(yīng)時間、吞吐量。
設(shè)計策略優(yōu)先級隊列、增加計算資源、減少計算開銷、引入并發(fā)機(jī)制、采用資源調(diào)度等。
?
2、可靠性:是軟件系統(tǒng)在應(yīng)用或系統(tǒng)錯誤面前,在意外或錯誤使用的情況下維持軟件系統(tǒng)的功能特性的基本能力。如 MTTF、MTBF。
設(shè)計策略心跳、Ping/Echo、冗余、選舉。包括容錯和健壯性。
?
3、可用性:是系統(tǒng)能夠正常運行的時間比例,經(jīng)常用兩次故障之間的時間長度或在出現(xiàn)故障時系統(tǒng)能夠恢復(fù)正常的速度來表示。如故障間隔時間。
設(shè)計策略心跳、Ping/Echo、冗余、選舉。
?
4、安全性:是指系統(tǒng)在向合法用戶提供服務(wù)的同時能夠阻止非授權(quán)用戶使用的企圖或拒絕服務(wù)的能力。如保密性、完整性、不可抵賴性、可控性。
設(shè)計策略入侵檢測、用戶認(rèn)證、用戶授權(quán)、追蹤審計。
?
5、可修改性:指能夠快速的以較高的性能價格比對系統(tǒng)進(jìn)行變更的能力。通常以某些具體的變更為基準(zhǔn),通過考察這些變更的代價衡量。包括可維護(hù)性、可擴(kuò)展性、結(jié)構(gòu)重組、可移植性。
設(shè)計策略接口-實現(xiàn)分類、抽象、信息隱藏。
?
6、功能性:是系統(tǒng)所能完成所期望的工作的能力。一項任務(wù)的完成需要系統(tǒng)中許多或大多數(shù)構(gòu)件的相互協(xié)作。
?
7、可變性:指體系結(jié)構(gòu)經(jīng)擴(kuò)充或變更而成為新體系結(jié)構(gòu)的能力。這種新體系結(jié)構(gòu)應(yīng)該符合預(yù)先定義的規(guī)則,在某些具體方面不同于原有的體系結(jié)構(gòu)。當(dāng)要將某個體系結(jié)構(gòu)作為一系列相關(guān)產(chǎn)品的基礎(chǔ)時,可變性是很重要的。
?
8、互操作性:作為系統(tǒng)組成部分的軟件不是獨立存在的,經(jīng)常與其他系統(tǒng)或自身環(huán)境相互作用。
為了支持互操作性,軟件體系結(jié)構(gòu)必須為外部可視的功能特性和數(shù)據(jù)結(jié)構(gòu)提供精心設(shè)計的軟件入口。程序和用其他編程語言編寫的軟件系統(tǒng)的交互作用就是互操作性的問題,也影響應(yīng)用的軟件體系結(jié)構(gòu)。
?
前面的開發(fā)期屬性和運行期屬性綜合一下,針對架構(gòu)進(jìn)行評估的質(zhì)量屬性提煉就是這些: 性能、可靠、可用、安全、可修改、功能、可變、互操作。
?
重點記憶錢5個及設(shè)計策略。
針對每個質(zhì)量屬性構(gòu)造質(zhì)量屬性場景,來衡量這個屬性對架構(gòu)的影響程度,就是以下質(zhì)量屬性場景的應(yīng)用。

質(zhì)量屬性場景是一種面向特定質(zhì)量屬性的需求。它由6 部分組成:

· 刺激源(Source):這是某個生成該刺激的實體(人、計算機(jī)系統(tǒng)或者任何其他刺激器)。
?
· 刺激(Stimulus):該刺激是當(dāng)刺激到達(dá)系統(tǒng)時需要考慮的條件。
?
·環(huán)境(Environment):該刺激在某些條件內(nèi)發(fā)生。當(dāng)激勵發(fā)生時,系統(tǒng)可能處于過載、運行或者其他情況。
?
· 制品(Artifact):某個制品被激勵。這可能是整個系統(tǒng),也可能是系統(tǒng)的一部分。
?
· 響應(yīng)(Response):該響應(yīng)是在激勵到達(dá)后所采取的行動。
?
· 響應(yīng)度量(Measurement):當(dāng)響應(yīng)發(fā)生時,應(yīng)當(dāng)能夠以某種方式對其進(jìn)行度量,以對需求進(jìn)行測試。
?
?
可修改性質(zhì)量屬性場景描述實例:

6.2 系統(tǒng)架構(gòu)評估

<系統(tǒng)架構(gòu)評估>是在對架構(gòu)分析、評估的基礎(chǔ)上,對架構(gòu)策略的選取進(jìn)行決策。-- 系統(tǒng)架構(gòu)評估是在架構(gòu)分析和架構(gòu)評估基礎(chǔ)上(可理解為分析之后內(nèi)部評估分析結(jié)果),再對架構(gòu)選取的策略評估。
??
<軟件架構(gòu)評估>在架構(gòu)設(shè)計之后系統(tǒng)設(shè)計之前,因此與設(shè)計、實現(xiàn)、測試都沒有關(guān)系。評估的目的是為了評估所采用的架構(gòu)是否能解決軟件系統(tǒng)需求,但不是單純的確定是否滿足需求。
??

三種常用的評估方式

基于調(diào)查問卷(檢查表)的方式:類似于需求獲取中的問卷調(diào)查方式,只不過是架構(gòu)方面的問卷,要求評估人員對領(lǐng)域熟悉。
??
基于度量的方式:制定一些定量來度量架構(gòu),如代碼行數(shù)等。要制定質(zhì)量屬性和度量結(jié)果之間的映射,要求評估人員對架構(gòu)熟悉。涉及3個基本活動,首先需要建立質(zhì)量屬性和度量之間的映射原則,然后從軟件架構(gòu)文檔中獲取度量信息最后根據(jù)映射原則分析推導(dǎo)出系統(tǒng)的質(zhì)量屬性。
??
基于場景的方式:主要方法。首先要確定應(yīng)用領(lǐng)域的功能和軟件架構(gòu)的結(jié)構(gòu)之間的映射然后要設(shè)計用于體現(xiàn)待評估質(zhì)量屬性的場景(即 4+1視圖中的場景),最后分析軟件架構(gòu)對場景的支持程度
要求評估人員即對領(lǐng)域熟悉,也對架構(gòu)熟悉。
??
三種評估方式的比較:
由上表可知,場景最不通用,度量要求對構(gòu)架精確了解,調(diào)查問卷實施階段最早,度量最客觀。
其中,基于場景的方式是主流。

架構(gòu)評估中的重要概念

敏感點:是指為了實現(xiàn)某種特定的質(zhì)量屬性,一個或多個構(gòu)件所具有的特性。
?
權(quán)衡點:是影響多個質(zhì)量屬性的特性,是多個質(zhì)量屬性的敏感點。
?
風(fēng)險點與非風(fēng)險點不是以標(biāo)準(zhǔn)專業(yè)術(shù)語形式出現(xiàn)的,只是一個常規(guī)概念,即可能引起風(fēng)險的因素,
可稱為風(fēng)險點。某個做法如果有隱患,有可能導(dǎo)致一些問題,則為風(fēng)險點;而如果某件事是可行的 可接受的,則為非風(fēng)險點。
??
從三個方面對場景進(jìn)行設(shè)計
  • 刺激(事件)
  • 環(huán)境(事件發(fā)生的環(huán)境)
  • 響應(yīng)(架構(gòu)響應(yīng)刺激的過程)。
??

6.3 基于場景的評估方法

基于場景的架構(gòu)分析方法SAAM

SAAM是 一種非功能質(zhì)量屬性的架構(gòu)分析方法 ,是最早形成文檔并得到廣泛應(yīng)用的軟件架構(gòu)分析方法。
??
特定目標(biāo)。SAAM的 目標(biāo) 對描述應(yīng)用程序?qū)傩缘奈臋n,驗證基本的架構(gòu)假設(shè)和原則。
??
質(zhì)量屬性。這一方法的 基本特點 把任何形式的質(zhì)量屬性都具體化為場景,但可修改性是 SAAM
分析的主要質(zhì)量屬性
??
架構(gòu)描述。SAAM用于架構(gòu)的最后版本,但早于詳細(xì)設(shè)計。架構(gòu)的描述形式應(yīng)當(dāng)被所有參與者理解。
????????
功能、結(jié)構(gòu)和分配被定義為描述架構(gòu)的3個主要方面
??
方法活動。SAAM的 主要輸入 問題描述、需求說明和架構(gòu)描述。下圖描繪了SAAM分析活動的相關(guān)輸入及評估過程。
包括5個步驟,即場景開發(fā)、架構(gòu)描述、單個場景評估、場景交互總體評估。
開發(fā)場景,架構(gòu)描述,先單個場景,然后多個場景交互,最后總體評估。
?

架構(gòu)權(quán)衡分析法 ATAM

讓架構(gòu)師明確如何權(quán)衡多個質(zhì)量目標(biāo),參與者有評估小組、項目決策者和其他項目相關(guān)人。
??
ATAM被分為四個主要的活動領(lǐng)域,分別是場景和需求收集、體系結(jié)構(gòu)視圖和場景實現(xiàn)、屬性模
型構(gòu)造和分析折中。整個評估過程強(qiáng)調(diào)以屬性作為架構(gòu)評估的核心概念。主要針對性能、可用性、安全性和可修改性,在系統(tǒng)開發(fā)之前,對這些質(zhì)量屬性進(jìn)行評價和折中
??
ATAM方法采用效用樹(Utility tree)這一工具來對質(zhì)量屬性進(jìn)行分類和優(yōu)先級排序。效用樹的結(jié)構(gòu)包括:樹根-質(zhì)量屬性-屬性分類-質(zhì)量屬性場景(葉子節(jié)點)。需要注意的是,ATAM/主要關(guān)注 4 類質(zhì)量屬性:性能、安全性、可修改性和可用性,這是因為這4個質(zhì)量屬性是利益相關(guān)者最為關(guān)心的。
?

ATAM方法架構(gòu)評估實踐

注意:這個內(nèi)容選擇案例不會考。但是可用于寫論文的步驟,建議寫這個主題論文的,重點看
一下第二版教材第8.3節(jié),第289 頁,書上給出了胡佛事件架構(gòu)、銀行事件架構(gòu)這兩個具體架構(gòu)的詳細(xì)描述,可作為大家寫論文時的素材參考,不過書上寫的比較多比較復(fù)雜,大家也要有選擇性的參考。當(dāng)然也可以直接聽文老師論文直播里這塊的講解來構(gòu)思。

成本效益分析法 CBAM

用來對架構(gòu)建立的成本來進(jìn)行設(shè)計和建模,讓決策者根據(jù)投資收益率來選擇合適的架構(gòu),可以看
做對 ATAM的補(bǔ)充,在 ATAM確定質(zhì)量合理的基礎(chǔ)上,再對效益進(jìn)行分析。有下列步驟:
  • (1)整理場景(確定場景,并確定優(yōu)先級,選擇三分之一優(yōu)先級最高的場景進(jìn)行分析);
  • (2)對場景進(jìn)行細(xì)化(對每個場景詳細(xì)分析,確定最好、最壞的情況);
  • (3)確定場景的優(yōu)先級(項目干系人對場景投票,根據(jù)投票結(jié)果確定優(yōu)先級);
  • (4)分配效用(對場景響應(yīng)級別確定效用表,建立策略、場景、響應(yīng)級別的表格);
  • (5)形成“策略-場景-響應(yīng)級別的對應(yīng)關(guān)系”;
  • (6)確定期望的質(zhì)量屬性響應(yīng)級別的效用(根據(jù)效用表確定所對應(yīng)的具體場景的效用表);
  • (7)計算各架構(gòu)策略的總收益;
  • (8)根據(jù)受成本限制影響的投資報酬率選擇架構(gòu)策略(估算成本,用上一步的收益減去成本,得出收益,并選擇收益最高的架構(gòu)策略)。

其他評估方法(僅了解)

1.SAEM 方法。將軟件架構(gòu)看作一個最終產(chǎn)品以及設(shè)計過程中的一個中間產(chǎn)品,從外部質(zhì)量屬性
和內(nèi)部質(zhì)量屬性兩個角度來闡述它的評估模型,旨在為軟件架構(gòu)的質(zhì)量評估創(chuàng)建一個基礎(chǔ)框架。
外部屬性指用戶定義的質(zhì)量屬性,而內(nèi)部屬性指開發(fā)者決定的質(zhì)量屬性。該軟件架構(gòu)評估模型包
含以下幾個流程。
  • (1)對待評估的質(zhì)量屬性進(jìn)行規(guī)約建模。
  • (2)為外部和內(nèi)部的質(zhì)量屬性創(chuàng)建度量準(zhǔn)則,先從評估目的(如軟件架構(gòu)比較、最終產(chǎn)品的質(zhì)量預(yù)測),評估角度(如開發(fā)者、用戶、維護(hù)者),評估環(huán)境(架構(gòu)作為最終產(chǎn)品或設(shè)計中間產(chǎn)品)出發(fā)來定義架構(gòu)評估的目標(biāo),再根據(jù)目標(biāo)相關(guān)的屬性來提出問題,然后回答每個問題并提出相應(yīng)的度量準(zhǔn)則。
  • (3)評估質(zhì)量屬性,包括數(shù)據(jù)收集、度量和結(jié)果分析3個活動。
2.SAABNet方法。是一種用來表達(dá)和使用定性知識以輔助架構(gòu)的定性評估。該方法來源于人工智
能,允許不確定、不完整知識的推理。該方法使用 BBN 來表示和使用開發(fā)過程中的知識,包含定性和定量的描述,其中定性的描述是所有結(jié)點的圖,定量的描述是每個結(jié)點狀態(tài)相關(guān)的條件概率。
其中的變量可分為3 類,即架構(gòu)質(zhì)量屬性變量(如可維護(hù)性、靈活性等)、質(zhì)量屬性的度量準(zhǔn)則
變量(如容錯性、響應(yīng)性等)和架構(gòu)特征變量(如繼承深度、編程語言等),高層抽象的質(zhì)量屬性變
量分解為低層抽象的度量準(zhǔn)則變量,度量準(zhǔn)則變量則分解為更低層抽象的架構(gòu)特征變量。
3.SACMM方法。是一種軟件架構(gòu)修改的度量方法。
4.SASAM方法。通過對預(yù)期架構(gòu)(架構(gòu)設(shè)計階段的相關(guān)描述材料)和實際架構(gòu)(源代碼中執(zhí)行的
架構(gòu))進(jìn)行映射和比較來靜態(tài)地評估軟件架構(gòu)。
5.ALRRA方法。是一種軟件架構(gòu)可靠性風(fēng)險評估方法,該方法使用動態(tài)復(fù)雜度準(zhǔn)則和動態(tài)耦合度
準(zhǔn)則來定義組件和連接件的復(fù)雜性因素,其中,動態(tài)復(fù)雜度準(zhǔn)則在某個場景的執(zhí)行中分析組件的動態(tài)行為來度量組件的復(fù)雜性,動態(tài)耦合度準(zhǔn)則在某個場景的執(zhí)行中分析連接件的消息傳遞協(xié)議來度量連接件的復(fù)雜性。利用失效模式和影響分析(FMEA)技術(shù)。
6.AHP(層次分析法)方法。是對定性問題進(jìn)行定量分析的一種簡便、靈活而又實用的多準(zhǔn)則決
策方法。AHP方法的特點是把復(fù)雜問題中的各種因素通過劃分為相聯(lián)系的有序?qū)哟问怪畻l理化,并在一般情況下通過兩兩對比,根據(jù)一定客觀現(xiàn)實的主觀判斷結(jié)構(gòu),把專家意見和分析者的客觀判斷結(jié)果直接、有效地結(jié)合起來,將一定層次上元素的某些重要性進(jìn)行定量描述,之后利用數(shù)學(xué)方法計算反映每一層次元素的相對重要性次序的權(quán)值,井最后通過所有層次之間的總排序計算所有元素的相對權(quán)重及對權(quán)重進(jìn)行排序。
7.COSMIC+UML方法?;诙攘磕P蛠碓u估軟件架構(gòu)可維護(hù)性的方法。針對不同表達(dá)方式的軟件
架構(gòu),采用統(tǒng)一的軟件度量 COSMIC 方法來進(jìn)行度量和評估。該方法主要是為了輔助分析軟件架構(gòu)的演化方案是否可行,并在開源軟件 DCMMS 的軟件架構(gòu) UML 組件圖上得以驗證。

7 中間件技術(shù)

中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,可以幫助分布式應(yīng)用軟件在不同的技術(shù)之間共享資源。

中間件特點

  • 負(fù)責(zé)客戶機(jī)與服務(wù)器之間的連接和通信,以及客戶機(jī)與應(yīng)用層之間的高效率通信機(jī)制。
  • 提供應(yīng)用層不同服務(wù)之間的互操作機(jī)制,以及應(yīng)用層與數(shù)據(jù)庫之間的連接和控制機(jī)制。
  • 提供多層架構(gòu)的應(yīng)用開發(fā)和運行的平臺,以及應(yīng)用開發(fā)框架,支持模塊化的應(yīng)用開發(fā)。
  • 屏蔽硬件、操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫的差異。
  • 提供應(yīng)用的負(fù)載均衡和高可用性、安全機(jī)制與管理功能,以及交易管理機(jī)制,保證交易的一致性。
  • 提供一組通用的服務(wù)去執(zhí)行不同的功能,避免重復(fù)的工作和使應(yīng)用之間可以協(xié)作。

按照中間件在分布式系統(tǒng)中承擔(dān)的職責(zé)不同,可以劃分以下幾類中間件產(chǎn)品。

1)通信處理(消息)中間件
在分布式系統(tǒng)中,要建網(wǎng)和制定出通信協(xié)議,以保證系統(tǒng)能在不同平臺之間通信,實現(xiàn)分布式系統(tǒng)中可靠的、高效的、實時的跨平臺數(shù)據(jù)傳輸,這類中間件稱為消息中間件,也是市面上銷售額最大的中間件產(chǎn)品。
2)事務(wù)處理(交易)中間件
在分布式事務(wù)處理系統(tǒng)中,經(jīng)常要處理大量事務(wù),特別是OLTP 中,每項事務(wù)常常要多臺服務(wù)器上的程序按順序協(xié)調(diào)完成,一旦中間發(fā)生某種故障,不但要完成恢復(fù)工作,而且要自動切換系統(tǒng)保證系統(tǒng)永不停機(jī),實現(xiàn)高可靠性運行。要使大量事務(wù)在多臺應(yīng)用服務(wù)器上能實時并發(fā)運行,并進(jìn)行負(fù)載平衡的調(diào)度,實現(xiàn)與昂貴的可靠性機(jī)和大型計算機(jī)系統(tǒng)的同等功能,為了實現(xiàn)這個目標(biāo),要求中間件系統(tǒng)具有監(jiān)視和調(diào)度整個系統(tǒng)的功能。
3)數(shù)據(jù)存取管理中間件
在分布式系統(tǒng)中,重要的數(shù)據(jù)都集中存放在數(shù)據(jù)服務(wù)器中,它們可以是關(guān)系型的、復(fù)合文檔型、具有各種存放格式的多媒體型,或者是經(jīng)過加密或壓縮存放的,該中間件將為在網(wǎng)絡(luò)上虛擬緩沖存取、格式轉(zhuǎn)換、解壓等帶來方便。
4) Web 服務(wù)器中間件
瀏覽器圖形用戶界面己成為公認(rèn)規(guī)范,然而它的會話能力差,不擅長做數(shù)據(jù)的寫入任務(wù),受HTTP
協(xié)議的限制多等,就必須對其進(jìn)行修改和擴(kuò)充,因此出現(xiàn)了Web 服務(wù)器中間件。
5)安全中間件
一些軍事、政府和商務(wù)部門上網(wǎng)的最大障礙是安全保密問題,而且不能使用國外提供的安全措施(如防火墻、加密和認(rèn)證等),必須用國產(chǎn)產(chǎn)品。產(chǎn)生不安全因素是由操作系統(tǒng)引起的,但必須要用中間件去解決,以適應(yīng)靈活多變的要求。
6)跨平臺和架構(gòu)的中間件
當(dāng)前開發(fā)大型應(yīng)用軟件通常采用基于架構(gòu)和構(gòu)件技術(shù),在分布式系統(tǒng)中,還需要集成各結(jié)點上的不同系統(tǒng)平臺上的構(gòu)件或新老版本的構(gòu)件,由此產(chǎn)生了架構(gòu)中間件。功能最強(qiáng)的是CORBA ,可以跨
任意平臺,但是其過于龐大; JavaBeans 較靈活簡單,很適合用于瀏覽器,但運行效率有待改善;COM十模型主要適合Windows 平臺,已在桌面系統(tǒng)廣泛使用。由于國內(nèi)新建系統(tǒng)多基于 UNIX(包括 Linux)和 Windows ,因此,針對這兩個平臺建立相應(yīng)的中間件市場相對要大得多。
?
7)專用平臺中間件
專用平臺中間件為特定應(yīng)用領(lǐng)域設(shè)計領(lǐng)域參考模式,建立相應(yīng)架構(gòu),配置相應(yīng)的構(gòu)件庫和中間件,為應(yīng)用服務(wù)器開發(fā)和運行特定領(lǐng)域的關(guān)鍵任務(wù)(如電子商務(wù)、網(wǎng)站等)。
?
8)網(wǎng)絡(luò)中間件
它包括網(wǎng)管、接入、網(wǎng)絡(luò)測試、虛擬社區(qū)和虛擬緩沖等,也是當(dāng)前最熱門的研發(fā)項目。

軟件構(gòu)件

軟件構(gòu)件構(gòu)件又稱為組件,是一個自包容、可復(fù)用的程序集。構(gòu)件是一個程序集,或者說是一組程序的集合。構(gòu)件的兩個最重要的特性是自包容與可重用。
構(gòu)件組裝模型的一般開發(fā)過程:設(shè)計構(gòu)件組裝、建立構(gòu)件庫、構(gòu)建應(yīng)用軟件、測試與發(fā)布。

商用構(gòu)件標(biāo)準(zhǔn)規(guī)范-CORBA(公共對象請求代理體系結(jié)構(gòu))

公共對象請求代理架構(gòu)(CORBA)主要分為3 個層次:對象請求代理、公共對象服務(wù)和公共設(shè)施。
最底層的對象請求代理(ORB)規(guī)定了分布對象的定義(接口)和語言映射,實現(xiàn)對象間的通信和互操作,是分布對象系統(tǒng)中的“軟總線”;
在 ORB 之上定義了很多公共服務(wù),可以提供諸如并發(fā)服務(wù)、名字服務(wù)、事務(wù)(交易)服務(wù)、安全服務(wù)等各種各樣的服務(wù);
最上層的公共設(shè)施則定義了構(gòu)件框架,提供可直接為業(yè)務(wù)對象使用的服務(wù),規(guī)定業(yè)務(wù)對象有效協(xié)作所需的協(xié)定規(guī)則。
COREA CCM 構(gòu)件模型是OMG 組織制定的一個用于開發(fā)和配置分布式應(yīng)用的服務(wù)器端構(gòu)件模型規(guī)范,它主要包括如下3 項內(nèi)容。
(1)抽象構(gòu)件模型:用以描述服務(wù)器端構(gòu)件結(jié)構(gòu)及構(gòu)件間互操作的結(jié)構(gòu)。
(2)構(gòu)件容器結(jié)構(gòu):用以提供通用的構(gòu)件運行和管理環(huán)境,并支持對安全、事務(wù)、持久狀態(tài)等系統(tǒng)服務(wù)的集成。
(3)構(gòu)件的配置和打包規(guī)范:CCM 使用打包技術(shù)來管理構(gòu)件的二進(jìn)制、多語言版本的可執(zhí)行代碼和配置信息,井制定了構(gòu)件包的具體內(nèi)容和文檔內(nèi)容標(biāo)準(zhǔn)。
對象管理組織(OMG)基于 CORBA基礎(chǔ)設(shè)施定義了四種構(gòu)件標(biāo)準(zhǔn)。
實體(Entity)構(gòu)件需要長期持久化并主要用于事務(wù)性行為,由容器管理其持久化。
加工(Process)構(gòu)件同樣需要容器管理其持久化,但沒有客戶端可訪問的主鍵。
會話(Session)構(gòu)件不需要容器管理其持久化,其狀態(tài)信息必須由構(gòu)件自己管理。
服務(wù)(Service)構(gòu)件是無狀態(tài)的。
CORBA對象可看作是一個具有對象標(biāo)識、對象接口及對象實現(xiàn)的抽象實體。之所以稱為抽象的, 是因為并沒有硬性規(guī)定 CORBA 對象的實現(xiàn)機(jī)制一個 CORBA 對象的引用又稱可互操作的對象引用
(Interoperable Object Reference)。從客戶程序的角度看,IOR 中包含了對象的標(biāo)識、接口類型及其他信息以查找對象實現(xiàn)。
對象標(biāo)識(Object ID)是一個用于在POA中標(biāo)識一個CORBA對象的字符串。它既可由程序員指派,也可由對象適配器自動分配,這兩種方式都要求對象標(biāo)識在創(chuàng)建它的對象適配器中必須具有唯一
性。
POA(便攜式對象適配器)是對象實現(xiàn)與 ORB其它組件之間的中介,支持由 Object Id 標(biāo)識的對象的名稱空間,它將客戶請求傳送到伺服對象,按需創(chuàng)建子 POA,提供管理伺服對象的策略。
伺服對象(servant)是指具體程序設(shè)計語言的對象或?qū)嶓w,通常存在于一個服務(wù)程序進(jìn)程之中。
客戶程序通過對象引用發(fā)出的請求經(jīng)過 ORB 擔(dān)當(dāng)中介角色,轉(zhuǎn)換為對特定的伺服對象的調(diào)用。在一個 CORBA 對象的生命期中,它可能與多個伺服對象相關(guān)聯(lián),因而對該對象的請求可能被發(fā)送到不同的伺服對象。

7.1 典型的應(yīng)用架構(gòu)-J2EE

分布式多層應(yīng)用程序

客戶層(客戶應(yīng)用或 WEB瀏覽器動態(tài)網(wǎng)頁)對應(yīng)客戶機(jī);
WEB層(可省略,是WEB瀏覽器)和業(yè)務(wù)層(業(yè)務(wù)處理邏輯,包括會話 Bean,實體 Bean和消息驅(qū)動 Bean)對應(yīng)J2EE 服務(wù)器;
企業(yè)信息系統(tǒng)層對應(yīng)數(shù)據(jù)存儲服務(wù)器。

JAVA企業(yè)應(yīng)用框架

Structs 框架:是一個基于 J2EE 平臺的 MVC(模型、視圖、控制器)框架,采用 Servelet和 JSP技術(shù)實現(xiàn)。M 由實現(xiàn)業(yè)務(wù)邏輯的 javaBean構(gòu)成,C由 ActionServlet和 Action來實現(xiàn),V由一組JSP文件構(gòu)成。
Spring 框架:通過RMI或 Web Servic遠(yuǎn)程訪問業(yè)務(wù)邏輯,允許自由選擇和組裝各部分功能,還提供和其他軟件集成的接口。Spring 本身是個容器,管理構(gòu)件的生命周期、構(gòu)件的組態(tài)、依賴注入等,并可以控制構(gòu)件在創(chuàng)建時是以原型或單例模式來創(chuàng)建。
Hibernate 框架:是一個對象關(guān)系映射框架,提供了java 對象到數(shù)據(jù)庫表之間的直接映射,它對JDBC 進(jìn)行了非常輕量級的對象封裝,使得 java 程序員可以使用對象編程思維來操作數(shù)據(jù)庫。在
Hibernate 中,ORM機(jī)制的核心是一個XML文件,該文件描述了數(shù)據(jù)庫模式是怎么與一組 java類綁定在一起的。
表示層由 Structs 實現(xiàn),管理用戶請求;業(yè)務(wù)層由 Spring實現(xiàn),處理業(yè)務(wù)邏輯中的業(yè)務(wù)處理情況,提供一個控制器的代碼;數(shù)據(jù)庫層由 Hibernate 實現(xiàn),通過面向?qū)ο蟮牟樵冋Z言 HQL來實現(xiàn)數(shù)據(jù)的增刪改查。這樣組合可以搭建一個輕量級的J2EE 架構(gòu)。

重量級與輕量級之爭

重量級與輕量級之爭重量級框架占用資源過多,在開發(fā)的過程中效率很低;大部分時間花在配置、運行的過程上,修改復(fù)雜;單元測試也比較麻煩。但在大量運行過程中會表現(xiàn)出優(yōu)異的效果,也即開發(fā)麻煩,運行性能高。
輕量級框架提高了開發(fā)的速度;立即可以看到結(jié)果;做單元測試非常簡單;大量線程可供參考的開源代碼。開發(fā)簡單,但運行性能低。

7.2 典型的應(yīng)用架構(gòu)-.NET

.NET框架處于操作系統(tǒng)和.NET應(yīng)用語言之間,只適用于微軟系統(tǒng),而J2EE 支持跨平臺,任何安
裝了JVM的平臺。

.NET和J2EE 之爭

JVM(將所有 JAVA代碼都編譯為字節(jié)碼,由 JVM 解釋執(zhí)行)和 CLR(.NET 核心技術(shù),類似于JVM,生成中間代碼 CLR,編譯執(zhí)行)。
對多層分布式應(yīng)用的支持,二者都支持多層分布式應(yīng)用程序的開發(fā):在表示層的平臺支持上, J2EE 客戶端支持多個平臺,.NET 只能在微軟系統(tǒng)上運行,也正是因此,.NET 會對微軟系統(tǒng)上的應(yīng)用進(jìn)行優(yōu)化;在業(yè)務(wù)層,J2EE 占優(yōu)勢,因為有許多開源的項目和代碼供參考,開發(fā)就變得簡單;在數(shù)據(jù)層,二者都支持多種數(shù)據(jù)庫,都非常優(yōu)秀。
安全性,由于 JAVA在.NET之后出來,借鑒了.NET優(yōu)點,JAVA在運行時動態(tài)驗證,.NET是靜態(tài)全面驗證,二者都非常優(yōu)秀,不分上下。
應(yīng)用程序的部署,J2EE 的部署相對來說較復(fù)雜,針對不同的系統(tǒng)要特別布置。
可移植性,顯然 J2EE 占優(yōu)勢,一次開發(fā),到處運行。
外部支持:J2EE 占優(yōu)勢,得到了很多廠家的支持,.NET只是微軟一家。
http://m.aloenet.com.cn/news/38485.html

相關(guān)文章:

  • 外貿(mào)建站上海成都seo工程師
  • 微信手機(jī)網(wǎng)頁登錄入口站長工具seo診斷
  • 網(wǎng)站開發(fā)即時聊天源碼百度搜索指數(shù)排行榜
  • 濟(jì)南wordpress 建站線上營銷推廣方式有哪些
  • 門戶網(wǎng)站系統(tǒng)有哪些平臺seo優(yōu)化方法網(wǎng)站快速排名推廣渠道
  • 網(wǎng)站的技術(shù)解決方案長沙seo網(wǎng)站推廣
  • wordpress加sliderwin7怎么優(yōu)化最流暢
  • wordpress會員地址石家莊百度快照優(yōu)化
  • 做企業(yè)網(wǎng)站用哪個軟件長沙大型網(wǎng)站建設(shè)公司
  • 網(wǎng)站開發(fā)的功能需求怎么寫最新的即時比分
  • 溫州網(wǎng)站建設(shè)推廣百度小說排行榜2021
  • 用word做旅游網(wǎng)站新聞危機(jī)公關(guān)
  • 未來做那些網(wǎng)站能致富推廣方案怎么做
  • 做網(wǎng)站 需要多少錢邯鄲seo營銷
  • wordpress英文版如何變成中文版網(wǎng)站seo標(biāo)題優(yōu)化技巧
  • 單位網(wǎng)站建設(shè)方案如何優(yōu)化關(guān)鍵詞
  • 北京網(wǎng)站建設(shè)設(shè)計公司哪家好如何做好關(guān)鍵詞的優(yōu)化
  • 個人網(wǎng)站展示免費的網(wǎng)頁設(shè)計成品下載
  • 網(wǎng)站建設(shè)程序結(jié)構(gòu)免費推廣的預(yù)期效果
  • wordpress多用戶后臺windows10優(yōu)化大師
  • 原來做網(wǎng)站后來跑國外了教育機(jī)構(gòu)排名
  • wordpress站點版權(quán)設(shè)置大數(shù)據(jù)比較好的培訓(xùn)機(jī)構(gòu)
  • 百度站長平臺申請?zhí)峤绘溄雍蟬eo服務(wù)
  • 柳州疫情最新通知seo經(jīng)典案例
  • 電子商務(wù)營銷模式有哪些長沙網(wǎng)站seo推廣公司
  • 青浦手機(jī)網(wǎng)站建設(shè)網(wǎng)站推廣排名公司
  • php網(wǎng)站后臺模板推廣app最快的方法
  • 貴陽 網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷主要內(nèi)容
  • 做旅行網(wǎng)站的依據(jù)及意義國內(nèi)十大搜索引擎網(wǎng)站
  • 福州專業(yè)網(wǎng)站建設(shè)友鏈交易網(wǎng)