




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
高級(jí)軟件工程
SoftwareEngineering軟件架構(gòu)設(shè)計(jì)軟件架構(gòu)設(shè)計(jì)軟件架構(gòu)是一系列重要決策的集合,這些決策關(guān)于:軟件系統(tǒng)的組織;組成系統(tǒng)的結(jié)構(gòu)元素和它們之間的接口,以及當(dāng)這些元素相互協(xié)作時(shí)所體現(xiàn)的行為;如何組合這些些元素,使它們逐漸合成為更大的子系統(tǒng);架構(gòu)風(fēng)格;這些元素以及它們的接口、協(xié)作和組合。Architecturedecisionsarethemostfundamentaldecisions,andchangingthemwillhavesignificanteffects.ArchitectureDesignImplementationCode2軟件架構(gòu)的主要建模方法文本語(yǔ)言建模方法基于非規(guī)范的圖形表示的建模方法該圖形表示不具有嚴(yán)格的標(biāo)準(zhǔn),較為隨意,具有一定方便交流的作用。如:盒線圖(Box-LineDiagram)、PowerPoint風(fēng)格圖形等基于UML/SysML的建模方法
半形式化方法,UML/SysML
作為一個(gè)工業(yè)化標(biāo)準(zhǔn)的軟件建模語(yǔ)言,支持多角度、多層次、多方面的建模需求,支持?jǐn)U展,并有強(qiáng)大的工具支持基于AADL的建模方法半形式化方法,AADL是一個(gè)實(shí)時(shí)嵌入式軟件系統(tǒng)的架構(gòu)建模語(yǔ)言,適用于航天航空、汽車、自動(dòng)化、醫(yī)療、核能等領(lǐng)域基于形式化的建模方法例如Petri-Net3軟件架構(gòu)設(shè)計(jì)的內(nèi)容架構(gòu)設(shè)計(jì)的內(nèi)容:設(shè)計(jì)軟件架構(gòu)的多個(gè)視圖物理視圖、邏輯視圖、進(jìn)程視圖、開(kāi)發(fā)視圖、技術(shù)視圖、數(shù)據(jù)視圖等選擇軟件質(zhì)量屬性的設(shè)計(jì)策略性能、可靠性、安全性、可移植性、可擴(kuò)展性等架構(gòu)設(shè)計(jì)的目標(biāo):使得軟件系統(tǒng)在架構(gòu)層面的設(shè)計(jì)上滿足擬建軟件的功能性和非功能性需求402-質(zhì)量因素的架構(gòu)設(shè)計(jì)戰(zhàn)術(shù)01-軟件架構(gòu)的多個(gè)視圖邏輯視圖部署視圖進(jìn)程視圖開(kāi)發(fā)視圖技術(shù)視圖數(shù)據(jù)視圖03-軟件架構(gòu)的質(zhì)量5SoftwareArchitecture:The“4+1View”ModelProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammers
Softwaremanagement
PerformanceScalabilityThroughput
SystemintegratorsSystemtopology
Delivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure
6LogicalView(邏輯視圖)ProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammers
Softwaremanagement
PerformanceScalabilityThroughput
SystemintegratorsSystemtopology
Delivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure
7Example1:Logicalview缺陷預(yù)測(cè)系統(tǒng)8基于非規(guī)范的圖形表示的建模方法Example2:LogicalviewMiddleware<<layer>>BaseReuseglobalApplication<<layer>>BusinessServices<<layer>>NecessarybecausetheApplicationLayermusthaveaccesstothecoredistributionmechanismsprovidedwithJavaRMI.選課系統(tǒng)9基于UML的建模方法SecurityGUIFrameworkSecureInterfacesApplication<<layer>>BusinessServices<<layer>><<layer>>Application<<layer>>BusinessServicesExample:ApplicationLayerUniversityArtifactsRegistrationExternalSystemInterfaces10Middleware<<layer>>BusinessServices<<layer>>Example:BusinessServicesLayerContextjava.sqlcom.odi<<layer>>
MiddlewareBillingSystem<<subsystem>>CourseCatalogSystem<<subsystem>>ExternalSystemInterfacesUniversityArtifactsObjectStoreSupport<<layer>>
BusinessServicesGUIFrameworkSecureInterfacesSecurity<<subsystem>>SecurityManager11Example3:Logicalview12基于AADL的建模方法Example:飛行控制系統(tǒng)AADL架構(gòu)13如何才能設(shè)計(jì)出好的軟件架構(gòu)?14復(fù)用現(xiàn)有的成功設(shè)計(jì)方案──設(shè)計(jì)模式(DesignPattern)的復(fù)用!軟件設(shè)計(jì)模式1987年,模式的思想被引入軟件工程方法學(xué)中。1995年,以ErichGamma為首的四人組(GangofFour,GoF)歸納發(fā)表了23種在軟件開(kāi)發(fā)中使用頻率較高的設(shè)計(jì)模式,出版了《DesignPatterns:ElementsofReusableObject-OrientedSoftware》一書(shū)。軟件設(shè)計(jì)的模式分類架構(gòu)風(fēng)格Architecturalstyle例如分層架構(gòu)風(fēng)格、MVC風(fēng)格設(shè)計(jì)模式Designpattern例如Facade模式、工廠模式、單例模式編程慣用Idiom例如Java多線程編程模式15基于邏輯架構(gòu)風(fēng)格進(jìn)行邏輯視圖的設(shè)計(jì)表現(xiàn)層分離風(fēng)格:MVC數(shù)據(jù)流風(fēng)格(Dataflow):批處理序列、管道-過(guò)濾器風(fēng)格(Pipe-and-Filter)調(diào)用/返回風(fēng)格:主程序/子程序、面向?qū)ο箫L(fēng)格(ADT)、多層(Layer)分布計(jì)算風(fēng)格:多層(Tier)、代理、C/S、P2P獨(dú)立構(gòu)件風(fēng)格:事件響應(yīng)、消息總線、服務(wù)和微服務(wù)虛擬機(jī)風(fēng)格:解釋器、基于規(guī)則的系統(tǒng)倉(cāng)庫(kù)風(fēng)格:數(shù)據(jù)庫(kù)系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)自適應(yīng)風(fēng)格:微內(nèi)核、反射、控制反饋……161)MVC
模型Model:管理系統(tǒng)中存儲(chǔ)的數(shù)據(jù)和業(yè)務(wù)規(guī)則,并執(zhí)行相應(yīng)的計(jì)算功能。視圖View:根據(jù)模型生成提供給用戶的交互界面,不同的視圖可以對(duì)相同的數(shù)據(jù)產(chǎn)生不同的界面??刂破鰿ontrol:接收用戶輸入,通過(guò)調(diào)用模型獲得響應(yīng),并通知視圖進(jìn)行用戶界面的更新。172)管道和過(guò)濾器(PipesandFilters)Inthisstyle,eachcomponenthasasetofinputsandasetofoutputs.Acomponentreadsstreamsofdataonitsinputsandproducesstreamsofdataonitsoutput.18舉例Linux的Shell程序可以看做是典型的管道與過(guò)濾器架構(gòu)的例子例如下面的Shell腳本:$catTestResults|sort|grepGood
會(huì)將TestResults文件的文本進(jìn)行排序,然后找出其中包含單詞Good的行,并顯出在屏幕上。Shell命令cat、sort和grep依次執(zhí)行,就構(gòu)成了一個(gè)管道-過(guò)濾器架構(gòu)。19舉例203)面向?qū)ο箫L(fēng)格這種風(fēng)格建立在數(shù)據(jù)抽象和面向?qū)ο蟮幕A(chǔ)上,數(shù)據(jù)的表示方法和它們的相應(yīng)操作封裝在一個(gè)抽象數(shù)據(jù)類型或?qū)ο笾?。這種風(fēng)格的構(gòu)件是對(duì)象,或者說(shuō)是抽象數(shù)據(jù)類型的實(shí)例。對(duì)象是一種被稱作管理者的構(gòu)件,因?yàn)樗?fù)責(zé)保持資源的完整性。對(duì)象是通過(guò)函數(shù)和過(guò)程的調(diào)用來(lái)交互的。214)層次架構(gòu)(layeredarchitecture)風(fēng)格GeneralfunctionalitySpecificfunctionalityDistinctapplicationsubsystemsthatmakeupanapplication—containsthevalueaddingsoftwaredevelopedbytheorganization.Businessspecific—containsanumberofreusablesubsystemsspecifictothetypeofbusiness.Middleware—offerssubsystemsforutilityclassesandplatform-independentservicesfordistributedobjectcomputinginheterogeneousenvironmentsandsoon.Systemsoftware—containsthesoftwarefortheactualinfrastructuresuchasoperatingsystems,interfacestospecifichardware,devicedrivers,andsoon.ApplicationSubsystemsBusiness-SpecificMiddlewareSystemSoftware上一層依賴下一層22不斷提取共性!沉淀成為一層軟件保持應(yīng)用軟件的復(fù)雜性相對(duì)穩(wěn)定應(yīng)用軟件應(yīng)用軟件操作系統(tǒng)DBMS操作系統(tǒng)應(yīng)用軟件中間件操作系統(tǒng)應(yīng)用軟件DBMS中間件23中間件的分類1)數(shù)據(jù)訪問(wèn)中間件允許應(yīng)用程序和本地或者異地的數(shù)據(jù)庫(kù)進(jìn)行通信,并提供一系列的應(yīng)用程序接口(如ODBC、JDBC等)。該類中間件技術(shù)上最成熟,但局限于與數(shù)據(jù)庫(kù)相關(guān)的應(yīng)用。2)消息中間件可以屏蔽平臺(tái)和協(xié)議上的差異進(jìn)行遠(yuǎn)程通信,實(shí)現(xiàn)應(yīng)用程序之間的協(xié)同,如IBM的MQSeries、BEA的MessageQ、SUN的JMS和微軟的MSMQ等,其優(yōu)點(diǎn)在于提供高可靠的同步和異步通信,缺點(diǎn)在于不同的消息中間件產(chǎn)品之間不能互操作。3)遠(yuǎn)程過(guò)程調(diào)用RPC中間件解決了平臺(tái)異構(gòu)的問(wèn)題,但編程復(fù)雜且不支持異步操作。24中間件的分類(2)4)事務(wù)中間件是在分布、異構(gòu)環(huán)境下提供保證事務(wù)完整性和數(shù)據(jù)完整性的一種平臺(tái),如BEA的TUXEDO、IBM的CICS、微軟的MTS。其優(yōu)勢(shì)在于對(duì)關(guān)鍵業(yè)務(wù)的支持,但機(jī)制復(fù)雜、對(duì)用戶要求較高。5)分布對(duì)象中間件在分布、異構(gòu)的網(wǎng)絡(luò)計(jì)算環(huán)境中,可以將各種分布對(duì)象有機(jī)地結(jié)合在一起,完成系統(tǒng)的快速集成。主流標(biāo)準(zhǔn)有Microsoft的DNA/COM+、OMG的OMA/CORBA、Sun的J2EE/EJB。Weblogic,Websphere,Jboss,.Net等應(yīng)用服務(wù)器都包含了分布對(duì)象中間件,也有如Orbix、HPORB等獨(dú)立產(chǎn)品。6)分布式服務(wù)中間件通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的業(yè)務(wù)服務(wù)進(jìn)行分布式部署、組合和使用。Web服務(wù)中間件,其標(biāo)準(zhǔn)是SOA,應(yīng)用服務(wù)器都包含了Web服務(wù)中間件,也有AXIS2、HPWebServicesPlatform等獨(dú)立產(chǎn)品。微服務(wù)中間件,例如Dubbo。25層次架構(gòu)實(shí)例26數(shù)字出納員ATM出納員付款開(kāi)發(fā)票應(yīng)用系統(tǒng)現(xiàn)金管理帳戶管理發(fā)票管理特定業(yè)務(wù)銀行客戶管理ApplicationServerHPORBPlus中間件NTWorkstationMSSQLServer系統(tǒng)軟件5)3Tiers表示層:負(fù)責(zé)向用戶呈現(xiàn)界面,并接收用戶請(qǐng)求發(fā)送給業(yè)務(wù)邏輯層;業(yè)務(wù)邏輯層:負(fù)責(zé)執(zhí)行業(yè)務(wù)邏輯以處理用戶請(qǐng)求,并調(diào)用數(shù)據(jù)訪問(wèn)層提供的持久性操作;數(shù)據(jù)訪問(wèn)層:負(fù)責(zé)執(zhí)行數(shù)據(jù)庫(kù)持久性操作。27表示層業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層數(shù)據(jù)庫(kù)舉例286)基于事件的隱式調(diào)用構(gòu)件不直接調(diào)用另一個(gè)構(gòu)件,而是觸發(fā)或廣播一個(gè)或多個(gè)事件。系統(tǒng)中的其它構(gòu)件訂閱一個(gè)或多個(gè)事件,當(dāng)一個(gè)事件被觸發(fā),系統(tǒng)自動(dòng)調(diào)用訂閱這個(gè)事件的所有構(gòu)件,這樣,一個(gè)事件的觸發(fā)就導(dǎo)致了另一構(gòu)件的調(diào)用。這種風(fēng)格的主要特點(diǎn)是事件的觸發(fā)者并不知道哪些構(gòu)件會(huì)被這些事件影響。29舉例IDE:編輯器和變量監(jiān)視器可以登記相應(yīng)Debugger的斷點(diǎn)事件。當(dāng)Debugger在斷點(diǎn)處停下時(shí),它聲明該事件,由系統(tǒng)自動(dòng)調(diào)用處理程序,如編輯器可以卷屏到斷點(diǎn),變量監(jiān)視器刷新變量數(shù)值。而Debugger本身只聲明事件,并不關(guān)心哪些過(guò)程會(huì)啟動(dòng),也不關(guān)心這些過(guò)程做什么處理。307)消息總線系統(tǒng)的連接件,負(fù)責(zé)消息的分派、傳遞和過(guò)濾以及處理結(jié)果的返回。各個(gè)構(gòu)件(或系統(tǒng)、服務(wù)等)掛在消息總線上,向總線訂閱感興趣的消息類型。構(gòu)件根據(jù)需要發(fā)布消息,由消息總線把該消息分派到系統(tǒng)中所有對(duì)此感興趣的消息類型,消息是構(gòu)件之間通信的唯一方式。31舉例328)基于容器的微服務(wù)風(fēng)格33服務(wù)架構(gòu)風(fēng)格服務(wù)的抽象性(基于接口的編程)服務(wù)的自治性(實(shí)現(xiàn)分布式應(yīng)用)服務(wù)間的松耦合式綁定,基于消息進(jìn)行通信單體架構(gòu)VS微服務(wù)架構(gòu)MonolithicapplicationVs.
Microservices34舉例:?jiǎn)误w架構(gòu)(網(wǎng)絡(luò)訂餐系統(tǒng))
35將應(yīng)用程序構(gòu)建為單個(gè)可執(zhí)行和可部署組件隨著業(yè)務(wù)的擴(kuò)張,代碼倉(cāng)庫(kù)急劇膨脹,構(gòu)建和部署變慢,敏捷開(kāi)發(fā)和快速交付很難實(shí)現(xiàn)。舉例:微服務(wù)架構(gòu)(網(wǎng)絡(luò)訂餐系統(tǒng))
36通過(guò)API網(wǎng)關(guān)對(duì)來(lái)自移動(dòng)應(yīng)用的服務(wù)請(qǐng)求進(jìn)行路由圍繞業(yè)務(wù)能力組織服務(wù)服務(wù)數(shù)據(jù)私有基于輕量級(jí)通信協(xié)議的服務(wù)APISpringCloud微服務(wù)開(kāi)發(fā)相關(guān)組件
37Zuul為外部的客戶端應(yīng)用訪問(wèn)后臺(tái)服務(wù)提供了統(tǒng)一的接入點(diǎn),實(shí)現(xiàn)了反向代理和服務(wù)端負(fù)載均衡,同時(shí)還實(shí)現(xiàn)了認(rèn)證、鑒權(quán)、限流等網(wǎng)關(guān)管理功能Eureka服務(wù)端以服務(wù)的形式提供服務(wù)注冊(cè)和發(fā)現(xiàn)功能,客戶端以一種透明的方式為每個(gè)服務(wù)實(shí)例實(shí)現(xiàn)與Eureka服務(wù)端的交互,包括服務(wù)注冊(cè)、心跳消息發(fā)送以及服務(wù)注冊(cè)信息的拉取和本地緩存Ribbon實(shí)現(xiàn)了客戶端負(fù)載均衡,提供了隨機(jī)選擇、輪詢等不同的負(fù)載均衡算法,同時(shí)還實(shí)現(xiàn)了服務(wù)調(diào)用超時(shí)和重試等機(jī)制Hystrix為服務(wù)調(diào)用方實(shí)現(xiàn)了服務(wù)調(diào)用的熔斷降級(jí)功能SpringCloudSecurityOAuth2為客戶端提供認(rèn)證和授權(quán)服務(wù)SpringCloudConfig為微服務(wù)應(yīng)用提供了統(tǒng)一的配置數(shù)據(jù)管理服務(wù)微服務(wù)架構(gòu)風(fēng)格微服務(wù)架構(gòu)風(fēng)格是一種使用一套小服務(wù)來(lái)開(kāi)發(fā)單個(gè)應(yīng)用的方式途徑,每個(gè)服務(wù)運(yùn)行在自己的進(jìn)程中,通過(guò)輕量的通訊機(jī)制聯(lián)系,經(jīng)常是基于HTTP資源API,這些服務(wù)基于業(yè)務(wù)能力構(gòu)建,能夠通過(guò)自動(dòng)化部署方式獨(dú)立部署,這些服務(wù)自己有一些小型集中化管理,可以是使用不同的編程語(yǔ)言編寫(xiě)。和SOA不同:SOA倡導(dǎo)粗粒度服務(wù),而它是細(xì)粒度服務(wù)。同時(shí),微服務(wù)采用“智能終端和啞管道”,它們擁有自己的領(lǐng)域邏輯,以類似Unix管道過(guò)濾方式運(yùn)行,接受到一個(gè)請(qǐng)求,使用相應(yīng)的邏輯,產(chǎn)生一個(gè)響應(yīng),這些都可以使用RESTful方式編排,而不是使用復(fù)雜的協(xié)議如WS-Choreography或BPEL或ESB指揮控制。和構(gòu)件不同:它從內(nèi)存方法調(diào)用轉(zhuǎn)換到RPC遠(yuǎn)程方法調(diào)用,每個(gè)服務(wù)運(yùn)行在自己的進(jìn)程。優(yōu)點(diǎn):易于敏捷的開(kāi)發(fā)、更新與部署,高度可擴(kuò)展和可靠性38容器微服務(wù)的管理問(wèn)題:因?yàn)榉?wù)通常部署在多個(gè)主機(jī)上,很難持續(xù)跟蹤指定服務(wù)究竟運(yùn)行在某臺(tái)主機(jī)上。因?yàn)槲⒎?wù)架構(gòu)使用的主機(jī)容量往往小于Monolithic架構(gòu),隨著微服務(wù)架構(gòu)不停的橫向擴(kuò)展,主機(jī)數(shù)量將以一個(gè)非??植赖乃俣仍鲩L(zhǎng)。解決方案:容器不同容器共享相同的內(nèi)核,容器的共享和發(fā)布非常簡(jiǎn)單容器之間進(jìn)行了完全的隔離,簡(jiǎn)易了不同語(yǔ)言開(kāi)發(fā)的微服務(wù)代碼部署例如:Docker等39微服務(wù)容器鏡像構(gòu)建及實(shí)例創(chuàng)建
40鏡像描述(如Docker容器的Dockerfile)指定了基礎(chǔ)容器鏡像(其中包含基礎(chǔ)運(yùn)行環(huán)境,例如Java運(yùn)行時(shí)環(huán)境JRE),同時(shí)描述了一些軟件安裝和容器配置指令及容器實(shí)例創(chuàng)建時(shí)的初始化腳本在運(yùn)行階段,每臺(tái)虛擬機(jī)實(shí)例上的容器運(yùn)行時(shí)根據(jù)指令從容器鏡像倉(cāng)庫(kù)中拉去不同服務(wù)的容器鏡像(一般還需要指定版本)然后創(chuàng)建相應(yīng)的容器實(shí)例(其中運(yùn)行著對(duì)應(yīng)的服務(wù)實(shí)例)倉(cāng)庫(kù)中可以包含同一服務(wù)的不同版本的鏡像B容器編排與集群管理
微服務(wù)的容器化部署經(jīng)常需要容器編排和集群管理工具的支持服務(wù)之間經(jīng)常會(huì)存在依賴關(guān)系,同時(shí)服務(wù)還有可能依賴于消息代理和數(shù)據(jù)庫(kù)等基礎(chǔ)服務(wù),因此僅僅以單個(gè)服務(wù)為單位進(jìn)行實(shí)例創(chuàng)建和管理經(jīng)常是不夠的需要將一組相關(guān)的容器作為一個(gè)整體進(jìn)行編排和管理容器編排與集群管理系統(tǒng)DockerCompose:可以在單個(gè)服務(wù)器或主機(jī)上創(chuàng)建并管理多個(gè)容器DockerSwarm:可以在多個(gè)服務(wù)器或主機(jī)上創(chuàng)建并管理容器集群Kubernetes:使用最廣泛的大規(guī)模Docker編排和集群管理工具419)倉(cāng)庫(kù)風(fēng)格和黑板風(fēng)格倉(cāng)庫(kù)風(fēng)格是以數(shù)據(jù)為中心的系統(tǒng)架構(gòu),它細(xì)分為:數(shù)據(jù)庫(kù)系統(tǒng)以數(shù)據(jù)庫(kù)為核心,各個(gè)構(gòu)件存取數(shù)據(jù)。超文本系統(tǒng)用超鏈接的方法,將各種不同空間的文字、圖片等信息組織在一起的網(wǎng)狀文本黑板系統(tǒng)
為參與問(wèn)題解決的知識(shí)源提供了共享的數(shù)據(jù)表示,這些數(shù)據(jù)表示是與應(yīng)用相關(guān)的。在黑板系統(tǒng)中,控制流是由黑板數(shù)據(jù)的狀態(tài)決定的,而并非按照某個(gè)固定的順序執(zhí)行。42黑板系統(tǒng)黑板系統(tǒng)專門針對(duì)沒(méi)有確定的解決方法的問(wèn)題,例如信號(hào)處理和模式識(shí)別,它通過(guò)多個(gè)知識(shí)源的協(xié)作來(lái)解決問(wèn)題,而這種協(xié)作完全是狀態(tài)驅(qū)動(dòng)的,因此各個(gè)知識(shí)源具有公平的機(jī)會(huì)獲取并更新黑板中的狀態(tài)數(shù)據(jù)。黑板系統(tǒng)主要由三部分組成:知識(shí)源。知識(shí)源中包含獨(dú)立的、與應(yīng)用程序相關(guān)的知識(shí),知識(shí)源之間不直接進(jìn)行通訊,它們之間的交互只通過(guò)黑板來(lái)完成。黑板數(shù)據(jù)結(jié)構(gòu)。黑板數(shù)據(jù)是按照與應(yīng)用程序相關(guān)的層次來(lái)組織的解決問(wèn)題的數(shù)據(jù),知識(shí)源通過(guò)不斷地改變黑板數(shù)據(jù)來(lái)解決問(wèn)題??刂?。控制完全由黑板的狀態(tài)驅(qū)動(dòng),黑板狀態(tài)的改變決定使用的特定知識(shí)。43舉例撞擊地球后產(chǎn)生的爆炸當(dāng)量數(shù)據(jù);第三類專家Expert3在看到新的數(shù)據(jù)后,根據(jù)自己的知識(shí)計(jì)算出了爆炸造成的破壞程度的數(shù)據(jù),以此類推,最終所有的專家在一起得到了小行星撞擊地球的應(yīng)對(duì)方案。在整個(gè)過(guò)程中,控制流完全由黑板中的數(shù)據(jù)驅(qū)動(dòng),這就是黑板架構(gòu)的特點(diǎn)。舉例2:Siri系統(tǒng)最核心部分就是“黑板系統(tǒng)”,驅(qū)動(dòng)調(diào)用大部分其他數(shù)據(jù)、模型和功能。類似于人的記憶系統(tǒng)的“工作記憶”,提供當(dāng)前分析內(nèi)容相關(guān)激活的本體等信息的臨時(shí)存儲(chǔ)以及集成調(diào)用各種模塊進(jìn)行處理。舉例1:在系統(tǒng)中當(dāng)黑板中初始數(shù)據(jù)是第一類專家Expert1根據(jù)自己的知識(shí)計(jì)算的有關(guān)小行星的質(zhì)量、速度和運(yùn)行軌跡等數(shù)據(jù);第二類專家Expert2在看到這些數(shù)據(jù)后,根據(jù)自己的知識(shí)計(jì)算出了小行星4410)解釋器架構(gòu)解釋器架構(gòu)用于仿真當(dāng)前不具備的計(jì)算環(huán)境,通常包含四個(gè)組成部分:用來(lái)解釋偽碼程序的解釋引擎、包含待解釋程序的內(nèi)存、解釋引擎的控制狀態(tài),以及被仿真程序的當(dāng)前狀態(tài):45Example:JVM46基于規(guī)則的架構(gòu)基于規(guī)則的架構(gòu)是一種解釋器架構(gòu)風(fēng)格,它將人類專家的問(wèn)題解決知識(shí)編碼成規(guī)則,這些規(guī)則在系統(tǒng)執(zhí)行計(jì)算滿足指定的條件時(shí)被執(zhí)行或激活,通過(guò)規(guī)則不斷地被執(zhí)行和激活,最終使得問(wèn)題被解決。由于這些規(guī)則不能被計(jì)算機(jī)系統(tǒng)直接執(zhí)行,因此需要通過(guò)解釋器來(lái)解釋它們。4711)微內(nèi)核風(fēng)格微內(nèi)核概念來(lái)源與操作系統(tǒng)領(lǐng)域。微內(nèi)核是提供了操作系統(tǒng)核心功能的內(nèi)核,它只需占用很小的內(nèi)存空間即可啟動(dòng),并向用戶提供了標(biāo)準(zhǔn)接口,以使用戶能夠按照模塊化的方式擴(kuò)展其功能?,F(xiàn)在大多數(shù)操作系統(tǒng)都采用了微內(nèi)核架構(gòu)。4812)開(kāi)環(huán)和閉環(huán)控制風(fēng)格49舉例50DeploymentView(部署視圖)TheDeploymentViewisan“architecturallysignificant”sliceoftheDeploymentModel.ProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammers
Softwaremanagement
PerformanceScalabilityThroughput
SystemintegratorsSystemtopology
Delivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure
51又稱為物理視圖部署架構(gòu)風(fēng)格Client/Server3-tierFatClientFatServerDistributedClient/ServerServerlessPeer-to-peer(P2P)52Thinnerclient,thickerserverDatabaseServer(s)ApplicationBusinessObjectServicesClientABusinessObjectEngineClientCWWWBrowserClientBApplicationWebServerHTMLCGIASPJavaBusinessObjectServicesBusinessObjectEngineBusinessObjectServicesBusinessObjectEngineBusinessObjectServerDCOMADO/RCORBABeansCOMMTSBeansETS1)Client/ServerArchitectures53Example1:DeploymentDiagraminUML<<legacyRDBMS>>CourseCatalog<<CampusLAN>><<CampusLAN>><<CampusLAN>><<applicationserver>>RegistrationServer<<clientworkstation>>PCBillingSystem<<legacy>>0..200011111選課系統(tǒng)C/S54Example2:B/S和C/S混搭應(yīng)用實(shí)例:B/S結(jié)構(gòu)和C/S結(jié)構(gòu)組合——“內(nèi)外有別”模型55應(yīng)用實(shí)例:B/S結(jié)構(gòu)和C/S結(jié)構(gòu)組合——“查改有別”模型56Example3:DeploymentDiagram環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)57Example4:物聯(lián)網(wǎng)的云邊端一體化架構(gòu)58云是指位于核心網(wǎng)中具有高可擴(kuò)展的強(qiáng)大算力的計(jì)算中心;邊緣側(cè)是在移動(dòng)網(wǎng)絡(luò)邊緣部署的服務(wù)器,它們靠近產(chǎn)生數(shù)據(jù)的移動(dòng)終端,具備一定的數(shù)據(jù)存儲(chǔ)和處理能力;端通常是指移動(dòng)終端,它們具有更為受限的存儲(chǔ)和計(jì)算能力,但是會(huì)產(chǎn)生大量的數(shù)據(jù)和數(shù)據(jù)處理任務(wù)。2)Serverless架構(gòu)風(fēng)格Serverless是一種基于互聯(lián)網(wǎng)的技術(shù)架構(gòu),采用FAAS(FunctionasaService)架構(gòu),通過(guò)功能組合來(lái)實(shí)現(xiàn)應(yīng)用程序邏輯。同時(shí),Serverless架構(gòu)能夠讓開(kāi)發(fā)者在構(gòu)建應(yīng)用的過(guò)程中無(wú)需關(guān)注計(jì)算資源的獲取和運(yùn)維,由平臺(tái)來(lái)按需分配計(jì)算資源并保證應(yīng)用執(zhí)行的SLA,按照調(diào)用次數(shù)進(jìn)行計(jì)費(fèi),有效節(jié)省應(yīng)用成本。Serverless特點(diǎn):彈性伸縮、按需付費(fèi)、事件驅(qū)動(dòng)、無(wú)需運(yùn)維59一個(gè)典型的C/S三層應(yīng)用程序轉(zhuǎn)變?yōu)?0基于無(wú)服務(wù)器架構(gòu)的應(yīng)用在無(wú)服務(wù)器架構(gòu)中,沒(méi)有單一的傳統(tǒng)后端。通過(guò)API網(wǎng)關(guān),應(yīng)用程序的前端直接與服務(wù)、數(shù)據(jù)庫(kù)或計(jì)算函數(shù)進(jìn)行聯(lián)系。613)P2PArchitecture所有計(jì)算機(jī)節(jié)點(diǎn)都是對(duì)等的,可相互調(diào)用。多種風(fēng)格的混搭?B/S架構(gòu),Server端用P2P架構(gòu)62ProcessView(進(jìn)程視圖)TheProcessViewisan“architecturallysignificant”sliceoftheprocessesandthreadsoftheDesignModelProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammers
Softwaremanagement
PerformanceScalabilityThroughput
SystemintegratorsSystemtopology
Delivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure
63Example1:ModelingProcesses64composition<<process>>CourseCatalogSystemAccess<<thread>>CourseCache<<process>>CourseRegistrationProcess<<thread>>OfferingCachedependency1111<<process>>StudentApplicationExample2:ModelingProcessesinUML選課系統(tǒng)65進(jìn)程間交互進(jìn)程交互關(guān)系可以使用時(shí)序圖(SequenceDiagram)來(lái)描述交互的參與方激活狀態(tài)(即交互參與方在此期間處于激活狀態(tài))同步請(qǐng)求消息異步請(qǐng)求消息請(qǐng)求返回消息66ImplementationView(開(kāi)發(fā)視圖)ProcessViewDeploymentViewLogicalViewUse-CaseViewImplementationViewEnd-userFunctionalityProgrammers
Softwaremanagement
PerformanceScalabilityThroughput
SystemintegratorsSystemtopology
Delivery,installationcommunicationSystemengineeringAnalysts/DesignersStructure
TheImplementationViewisan“architecturallysignificant”sliceoftheComponentModel.67WhatIsaComponentDiagram?AdiagramthatshowstheorganizationsanddependenciesamongcomponentsCourse68Howmanyviews?SimplifiedmodelstofitthecontextNotallsystemsrequireallviews:Singleprocessor:dropdeploymentviewSingleprocess:dropprocessviewVerySmallprogram:dropimplementationviewAddingviews:Technicalview,Dataview,securityview69技術(shù)視圖Technicalview技術(shù)選型:編程語(yǔ)言操作系統(tǒng)數(shù)據(jù)庫(kù)框架中間件庫(kù)....70技術(shù)視圖描述方式:文本技術(shù)視圖在邏輯視圖上標(biāo)注在物理視圖上標(biāo)注....選擇合適的編程語(yǔ)言命令式(imperative)語(yǔ)言馮.諾伊曼C,Ada,Fortran…面向?qū)ο骃malltalk,Eiffel,C++,Java…腳本式Perl,Python,PHP…說(shuō)明式(declarative)語(yǔ)言函數(shù)式Lisp/Scheme,ML,Haskell,Clean,Erlang,Miranda…數(shù)據(jù)流Id,Val…邏輯式或基于約束的Prolog,spreedsheets…基于模板的XSLT…量子編程語(yǔ)言Q#,Quipper,Sliq…71編程語(yǔ)言的排名TIOBEProgrammingCommunityIndex(/tiobe-index/)72選擇合適的框架/中間件/庫(kù)1.MVC框架SpringMVC、Struts2、JSF、Grails、GoogleWebToolkit(GWT)2.ORM框架MybatisHibernate、SpringDataJPA3.Web前端框架CSS框架:Bootstrap,F(xiàn)undationJS框架:VUE.JS,React.js,AngularJS,Ember.js4.并行計(jì)算框架
Hadoop,Spark,MapReduce5.服務(wù)與微服務(wù)框架
JAX-RS1.0+Jersey/CXF,SpringCloud,Dubbo6.深度學(xué)習(xí)框架
PyTorch,TensorFlow,Caffe等等73數(shù)據(jù)視圖DataViewItisoptional.IftherearesomepersistentobjectsthatrequirepersistentstorageStorageMechanismsObjectdatabasesRelationaldatabasesNoSQLdatabasesOtherflatfilesXMLstructuresPalmOSPDBfileshierarchicaldatabasesandsoon74RelationalDataModelGenerateRelationalDataModel(conceptualdatamodelorphysicaldatamodel)fromObjectOrientedModelThenimproveitNote:Youcanalsogenerateitduringobjectorientedanalysisphase.75Example:RelationalDataModelERDiagram76O-RMappingTheProblem:Aswithrelationaldatabases,arepresentationmismatchexistsbetweenobjectsandthesenon-object-orientedformats.TheSolution:O-RMappingserviceapersistenceservicetranslateobjectsintorecordsandsavetheminadatabase,andtranslaterecordsintoobjectswhenretrievingfromadatabaseO-RMappingMiddlewareorPersistenceFrameworkSuchasHibernate,iBatis7702-質(zhì)量因素的架構(gòu)設(shè)計(jì)戰(zhàn)術(shù)01-軟件架構(gòu)的多個(gè)視圖03-軟件架構(gòu)的質(zhì)量78質(zhì)量因素的架構(gòu)設(shè)計(jì)戰(zhàn)術(shù)可用性和可靠性戰(zhàn)術(shù)可維護(hù)性戰(zhàn)術(shù)性能戰(zhàn)術(shù)安全性戰(zhàn)術(shù)可測(cè)試性戰(zhàn)術(shù)易用性戰(zhàn)術(shù)79可用性(availability)戰(zhàn)術(shù)刺激響應(yīng)戰(zhàn)術(shù)80錯(cuò)誤檢測(cè)查錯(cuò)方法被動(dòng)式查錯(cuò)在程序中需要進(jìn)行檢查的部位設(shè)置監(jiān)測(cè)點(diǎn),若實(shí)際執(zhí)行結(jié)果滿足接收判斷,則判定程序運(yùn)行正常,否則則出錯(cuò)。主動(dòng)式查錯(cuò)設(shè)計(jì)一個(gè)檢測(cè)監(jiān)視器,在規(guī)定時(shí)間或規(guī)定的時(shí)間間隔內(nèi),或者是在系統(tǒng)處于閑置或等待的狀態(tài)下,主動(dòng)對(duì)系統(tǒng)進(jìn)行檢測(cè)。查錯(cuò)技術(shù)命令/響應(yīng):ping/echo一個(gè)組件發(fā)送ping,期望在預(yù)期時(shí)間內(nèi)收到被審查組件的響應(yīng)心跳:heartbeat組件定期發(fā)送消息(心跳),如果另一個(gè)組件沒(méi)有收到,則通知糾錯(cuò)組件。異常:exceptions異常處理的程序接收判斷:judgment日志和監(jiān)控:logging/monitoring81被動(dòng)式查錯(cuò)原則零信任原則在設(shè)計(jì)任何一個(gè)單元或者模塊時(shí),需要假設(shè)和它相互關(guān)聯(lián)的單元或者模塊存在錯(cuò)誤。當(dāng)該單元或者模塊接收到數(shù)據(jù)時(shí),首先假設(shè)該數(shù)據(jù)是一個(gè)出錯(cuò)數(shù)據(jù),無(wú)論該數(shù)據(jù)來(lái)源于何處,然后盡力去證實(shí)該假設(shè)是否成立。對(duì)硬件錯(cuò)誤進(jìn)行檢測(cè)設(shè)計(jì)例如電源失效、電磁干擾、系統(tǒng)不穩(wěn)定、接口故障、干擾信號(hào)以及錯(cuò)誤操作等的設(shè)計(jì)。數(shù)據(jù)檢測(cè)設(shè)計(jì)按照已知的數(shù)據(jù)極限,檢查數(shù)據(jù)范圍。82錯(cuò)誤恢復(fù)——修復(fù)接收表決,即N版本程序(NVP)技術(shù)冗余處理器的每個(gè)進(jìn)程都有相同的輸入,它們計(jì)算并發(fā)送給表決者一個(gè)輸出值。(如果檢測(cè)到某個(gè)錯(cuò)誤,就停止該處理器)表決規(guī)則可以是“多數(shù)規(guī)則”或“首選組件”等注意多樣性問(wèn)題——冗余組件運(yùn)行不同算法主動(dòng)冗余(熱重啟)所有冗余組件都以并行的方式對(duì)事件做出反應(yīng)(僅用其一)發(fā)生錯(cuò)誤,就切換到某一個(gè)組件利用可靠傳輸協(xié)議,將傳遞給任何一個(gè)冗余組件的消息,都傳遞給其他所有組件被動(dòng)冗余(暖重啟/多重冗余)由一個(gè)組件負(fù)責(zé)對(duì)事件作出響應(yīng),并通知其他組件更新?tīng)顟B(tài)出錯(cuò)后,在繼續(xù)提供服務(wù)之前,確保備用狀態(tài)是最新的可以經(jīng)常切換“主組件”,保持新?tīng)顟B(tài)備件(冷重啟)替換各種的出現(xiàn)故障的組件定期對(duì)備件進(jìn)行備份、設(shè)定檢查點(diǎn),出錯(cuò)后重新初始化?;謴?fù)時(shí)間可能稍長(zhǎng)冗余技術(shù)83示例:航空控制軟件的N版本程序(NVP)設(shè)計(jì)要求
根據(jù)系統(tǒng)安全評(píng)估,軟件級(jí)別分為:A級(jí)軟件:軟件的失效或故障可能導(dǎo)致災(zāi)難性事故發(fā)生;B級(jí)軟件:軟件的失效或故障可能導(dǎo)致危險(xiǎn)性事故發(fā)生;C級(jí)軟件:軟件的失效或故障不會(huì)導(dǎo)致人身安全問(wèn)題,但會(huì)對(duì)機(jī)組造成較大影響;D級(jí)軟件:對(duì)飛行安全的影響已降低到較小的程度;E級(jí)軟件:無(wú)安全影響。NVP設(shè)計(jì)A級(jí)軟件,推薦的失效容限為2,要進(jìn)行5版本程序設(shè)計(jì);B級(jí)軟件,推薦的失效容限為1,要進(jìn)行3版本程序設(shè)計(jì);C和D級(jí),無(wú)需軟件冗余。84錯(cuò)誤恢復(fù)——重新引入影子Shadow以前出現(xiàn)故障的物體,在恢復(fù)之前,模仿工作組件的內(nèi)容狀態(tài)再同步組件重新提供服務(wù)之前,需要更新其狀態(tài)檢查點(diǎn)/回滾使用上一個(gè)一致的檢查點(diǎn)85錯(cuò)誤預(yù)防軟件運(yùn)維時(shí)運(yùn)行監(jiān)測(cè)利用監(jiān)視進(jìn)程檢查進(jìn)程中存在的錯(cuò)誤,監(jiān)視進(jìn)程可以刪除沒(méi)有在運(yùn)行的進(jìn)程。從服務(wù)中刪除執(zhí)行某些活動(dòng),防止預(yù)期可能發(fā)生的錯(cuò)誤重啟,防止內(nèi)存泄露軟件研發(fā)時(shí)減少和控制軟件的程序復(fù)雜度模塊化設(shè)計(jì)冗余設(shè)計(jì)提高數(shù)據(jù)傳遞和轉(zhuǎn)換的精確性改善信息傳遞方式軟件健壯性設(shè)計(jì)事務(wù):將一些有序的步驟綁定為事務(wù)86可維護(hù)性戰(zhàn)術(shù)刺激響應(yīng)戰(zhàn)術(shù)87局部化變更維持語(yǔ)義一致性語(yǔ)義,指的是模塊內(nèi)各責(zé)任之間的關(guān)系要確保這些責(zé)任能夠協(xié)調(diào)一致地工作,而不過(guò)多地依賴其他模塊耦合、內(nèi)聚的程度是度量一致性的一個(gè)指標(biāo)同時(shí)還應(yīng)該根據(jù)是否支持預(yù)期的變更,來(lái)判斷一致性程度預(yù)期可能的變更在實(shí)踐中,往往很難預(yù)期所有重要的變更(經(jīng)驗(yàn))泛化該模塊使模塊能根據(jù)輸入計(jì)算更廣泛的功能可以把輸入看作是為該模塊定義了一種語(yǔ)言,對(duì)其進(jìn)行解釋限制可能的選擇實(shí)際中可選范圍往往很大,可能會(huì)影響很多模塊例如,處理器的變更,可以限制使用相同家族的成員正交88防止連鎖反應(yīng)信息隱藏信息隱藏,就是把某個(gè)實(shí)體的責(zé)任分解為更小的部分,并選擇使哪些信息成為公有的,哪些私有,目的是使變更被隔離在一個(gè)模塊內(nèi)維持現(xiàn)有接口創(chuàng)建抽象接口,與具體實(shí)現(xiàn)相分離添加接口:提供最新的服務(wù)或數(shù)據(jù)添加適配器:給A添加適配器,把A包裝起來(lái),提供原始A的信息限制通信路徑限制與給定模塊A共享數(shù)據(jù)的模塊。即減少兩類模塊的數(shù)量,1,使用由A生產(chǎn)的數(shù)據(jù)的模塊數(shù)量。2,給A提供數(shù)據(jù)的模塊的數(shù)量仲裁者的使用對(duì)于非語(yǔ)義型的依賴,可以在A、B間插入一個(gè)仲裁者,管理與該依賴相關(guān)的活動(dòng)89推遲綁定時(shí)間支持部署時(shí)(變更)及非開(kāi)發(fā)人員的修改運(yùn)行時(shí)注冊(cè)即插即用。但需要額外的管理注冊(cè)的開(kāi)銷配置文件在開(kāi)機(jī)啟動(dòng)時(shí),根據(jù)其設(shè)置參數(shù)多態(tài)允許方法調(diào)用的后期綁定組件更換允許載入時(shí)綁定遵守已定義的協(xié)議允許各個(gè)獨(dú)立進(jìn)程在運(yùn)行時(shí)綁定90性能戰(zhàn)術(shù)刺激響應(yīng)戰(zhàn)術(shù)91資源需求提高計(jì)算效率改進(jìn)關(guān)鍵算法。用一種資源換取另一種資源減少計(jì)算開(kāi)銷例如刪除一些仲裁者管理事件速率降低對(duì)環(huán)境監(jiān)視的強(qiáng)度控制采樣頻率限制執(zhí)行時(shí)間限制隊(duì)列的大小92資源管理引入并發(fā)不同的線程上處理不同的事件流維持?jǐn)?shù)據(jù)或計(jì)算的多個(gè)副本(注意一致性)例:高速緩存。增加可用資源提供額外的處理器、內(nèi)存、速度更快的網(wǎng)絡(luò)等。93資源仲裁:對(duì)競(jìng)爭(zhēng)的資源進(jìn)行調(diào)度常見(jiàn)的調(diào)度策略FIFO:適用于相同優(yōu)先級(jí)固定優(yōu)先級(jí)調(diào)度:可能使低優(yōu)先級(jí)請(qǐng)求等待過(guò)多時(shí)間。常見(jiàn)優(yōu)先級(jí)策略為:語(yǔ)義重要性時(shí)限時(shí)間:時(shí)限短(到期)的請(qǐng)求優(yōu)先級(jí)高速率單調(diào):對(duì)于周期任務(wù),選擇周期短的優(yōu)先級(jí)高動(dòng)態(tài)優(yōu)先級(jí)輪轉(zhuǎn)時(shí)限優(yōu)先靜態(tài)(脫機(jī))調(diào)度系統(tǒng)執(zhí)行前,基于被調(diào)度任務(wù)的時(shí)間參數(shù)來(lái)安排調(diào)度適用具有確定性時(shí)間要求的系統(tǒng),例如空管。94示例:實(shí)時(shí)嵌入式軟件的性能戰(zhàn)術(shù)跳過(guò)操作系統(tǒng)直接訪問(wèn)硬件軟硬件協(xié)同,利用硬件來(lái)實(shí)現(xiàn)軟件的功能,例如進(jìn)程間通信發(fā)揮硬件性能計(jì)算和IO的并行化用空間換時(shí)間,例如cache內(nèi)存池進(jìn)程池、線程池……95示例:淘寶的性能和可用性戰(zhàn)術(shù)應(yīng)用服務(wù)器微服務(wù)架構(gòu)容器、集群和彈性擴(kuò)容負(fù)載均衡和無(wú)狀態(tài)服務(wù)CDN數(shù)據(jù)庫(kù)讀寫(xiě)分離分庫(kù)分表集群內(nèi)存數(shù)據(jù)庫(kù)NoSQL數(shù)據(jù)庫(kù)設(shè)計(jì)戰(zhàn)術(shù)多級(jí)緩存消息隊(duì)列、異步處理和限流異地多活熔斷和降級(jí)……96安全性戰(zhàn)術(shù)刺激響應(yīng)戰(zhàn)術(shù)97抵抗攻擊對(duì)用戶身份進(jìn)行驗(yàn)證確保用戶或計(jì)算機(jī)是它所聲稱的用戶或計(jì)算機(jī)密碼、數(shù)字證書(shū)對(duì)用戶進(jìn)行授權(quán)經(jīng)過(guò)身份驗(yàn)證的用戶,有什么樣的訪問(wèn)權(quán)限訪問(wèn)控制維護(hù)數(shù)據(jù)的機(jī)密性加密數(shù)據(jù),VPN,SSL維護(hù)完整性限制暴露信息限制訪問(wèn)防火墻根據(jù)消息源或目的端口,來(lái)限制訪問(wèn)98檢測(cè)攻擊將網(wǎng)絡(luò)通信模式與數(shù)據(jù)庫(kù)中的進(jìn)行對(duì)比檢測(cè)攻擊的“傳感器”將各傳感器進(jìn)行融合記錄日志分析工具和控制臺(tái)99100從攻擊中恢復(fù)恢復(fù)狀態(tài)(防守性)維持重要副本數(shù)據(jù)識(shí)別攻擊者(懲罰性)維持審計(jì)追蹤示例:平安銀行系統(tǒng)的安全性戰(zhàn)術(shù)101可測(cè)試性戰(zhàn)術(shù)刺激響應(yīng)戰(zhàn)術(shù)102可測(cè)試性戰(zhàn)術(shù)管理輸入輸出記錄/回放:捕獲跨接口的信息,將其作為測(cè)試專用軟件的輸入將接口和實(shí)現(xiàn)分離占位程序可以使得系統(tǒng)剩余部分得到檢測(cè)特化訪問(wèn)路線/接口測(cè)試工具獨(dú)立地捕獲某些變量值內(nèi)部監(jiān)視內(nèi)置監(jiān)視器103易用性戰(zhàn)術(shù)刺激響應(yīng)戰(zhàn)術(shù)104易用性戰(zhàn)術(shù)運(yùn)行時(shí)用戶主動(dòng):撤銷混合主動(dòng):提供進(jìn)展指示器系統(tǒng)主動(dòng):預(yù)測(cè)與用戶相關(guān)的某些信息維持任務(wù)的一個(gè)模型維持用戶的一個(gè)模型維持系統(tǒng)的一個(gè)模型設(shè)計(jì)時(shí)將用戶接口(可能頻繁改變)與應(yīng)用的其余部分分離開(kāi)支持該戰(zhàn)術(shù)的架構(gòu)模式:MVC、PAC、Seeheim、Arch/Slinky105多目標(biāo)權(quán)衡不同質(zhì)量屬性之間往往存在沖突,例如:性能VS.安全性可靠性VS.靈活性可維護(hù)性VS.高效性……排出優(yōu)先級(jí),進(jìn)行多目標(biāo)權(quán)衡106討論你的大作業(yè)項(xiàng)目中哪個(gè)非功能需求(質(zhì)量因素)最重要?采用哪些設(shè)計(jì)戰(zhàn)術(shù)?10702-質(zhì)量因素的架構(gòu)設(shè)計(jì)戰(zhàn)術(shù)01-軟件架構(gòu)的多個(gè)視圖03-軟件架構(gòu)的質(zhì)量108CharacteristicsofaGoodArchitectureResilientSimpleApproac
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)鏈經(jīng)濟(jì)效益評(píng)價(jià)方法試題及答案
- 2024年CPMM競(jìng)爭(zhēng)策略試題及答案
- 2024年CPMM新生入門試題及答案
- CPSM考試技巧與試題及答案心得
- 肺結(jié)核防治知識(shí)講座課件
- 數(shù)學(xué) 第四冊(cè)(五年制高職) 課件 第一章 邏輯代數(shù)初步
- 2024年SCMP高頻考點(diǎn)試題及答案
- 備考CPSM的高效策略試題及答案
- 2024年國(guó)際物流師考試注意事項(xiàng)試題與答案
- 深度解析CPMM考試的思維考點(diǎn)及試題及答案
- 護(hù)士延續(xù)注冊(cè)申請(qǐng)審核表
- 粵教版二年級(jí)下冊(cè)科學(xué)25《我們離不開(kāi)蔬菜》教學(xué)課件
- 駕駛員心理健康培訓(xùn)
- 人力資源類崗位級(jí)別評(píng)定表
- 養(yǎng)生學(xué)中華藥膳
- 【典型案例】馬頭琴的傳說(shuō)
- 2022年全國(guó)交通運(yùn)輸行業(yè)城市軌道交通列車司機(jī)職業(yè)技能大賽參考題庫(kù)
- 3d3s門式鋼架 入門教程
- 儲(chǔ)能技術(shù)-氫儲(chǔ)能
- 鍋爐爐管“四管泄漏”的原因
- 胃結(jié)石護(hù)理查房課件
評(píng)論
0/150
提交評(píng)論