版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件架構(gòu)設(shè)計指南1.概要設(shè)計和具體設(shè)計析所供給的《需求規(guī)格說明書》,輸出是《概要設(shè)計說明書》和《具體設(shè)計說明書》。在一般狀況下,《概要設(shè)計說明書》由系統(tǒng)設(shè)計師負責(zé)?!毒唧w設(shè)計說明書》則由高級程序員負責(zé)。這兩種設(shè)計說明書的差異是:《概要設(shè)計說明書》既要掩蓋《需求規(guī)格說明書》的全部內(nèi)容,又是要作為指導(dǎo)具體設(shè)計的依據(jù)。因此,它留意于框架上的設(shè)計,包括軟件系統(tǒng)的總體構(gòu)造設(shè)列表。假設(shè)為C/S或B/A/S構(gòu)造設(shè)計,則要說明部件運行在網(wǎng)絡(luò)中的哪一個節(jié)點上?!毒唧w設(shè)計說明書》既要掩蓋《概要設(shè)計說明書》的全部內(nèi)容,又要作為指導(dǎo)部接口實現(xiàn)設(shè)計、部門角色授權(quán)設(shè)計、其他具體設(shè)計等部件。其他設(shè)計包括:登錄數(shù)據(jù)處理模塊設(shè)計、數(shù)據(jù)傳輸與接收模塊設(shè)計等。對于簡潔或生疏的系統(tǒng),概要設(shè)計和具體設(shè)計可以合二而一,形成一份文檔兩個里程碑,確立兩條基線。2.軟件架構(gòu)設(shè)計(軟件概要設(shè)計)當(dāng)對象、類、構(gòu)件、組件等概念消滅并成熟之后,傳統(tǒng)意義上的軟件概要設(shè)計統(tǒng)全局分析設(shè)計和實施、負責(zé)軟件構(gòu)架和關(guān)鍵技術(shù)決策的角色,他的具體職責(zé)為:領(lǐng)導(dǎo)與協(xié)調(diào)整個工程中的技術(shù)活動(分析、設(shè)計入實施等)(2)推動主要的技術(shù)決策,并最終表達為軟件構(gòu)架描述計、實施和部署等“視圖”確定設(shè)計元素的劃分以及這些主要分組之間的接口證相關(guān)打算被有效傳達和貫徹1、軟件架構(gòu)定義系統(tǒng)是部件的集合,完成一個特定的功能或完成一個功能集合。架構(gòu)是系統(tǒng)的計和深化的原則。系統(tǒng)架構(gòu)是實體、實體屬性以及實體關(guān)系的集合。件系統(tǒng)的根本屬性和限制條件。2、軟件架構(gòu)建模計、開發(fā)和部署,對后期維護和演化也有很大的影響。捕獲軟件運行時的環(huán)境。為底層實現(xiàn)供給限制條件。為開發(fā)團隊的構(gòu)造組成供給依據(jù)。設(shè)計系統(tǒng)滿足牢靠性、可維護性以及性能等方面的要求。便利開發(fā)團隊之間的溝通。各種角色的人員都可以使用架構(gòu),如工程經(jīng)理、開發(fā)經(jīng)理、技術(shù)總監(jiān)、系統(tǒng)架具體程度也不同。統(tǒng)和部件,而不是類和對象。軟件架構(gòu)應(yīng)描述以下問題:軟件系統(tǒng)中包含了哪些子系統(tǒng)和部件。每個子系統(tǒng)和部件都完成哪些功能。子系統(tǒng)和部件對外供給或使用外部的哪些子系統(tǒng)和部件間的依靠關(guān)系,以及對實現(xiàn)和測試的影響。系統(tǒng)是如何部署的。需要的各種環(huán)境,而不是具體描述整個系統(tǒng)。3、軟件架構(gòu)視圖架構(gòu)視圖是指從一個特定的視角對系統(tǒng)或系統(tǒng)的一局部進展的描述。架構(gòu)可以統(tǒng)并發(fā),物理視圖用于描述系統(tǒng)部署。用架構(gòu)視圖。架構(gòu)視圖概念見以下圖和下表4-1RUP4+1.4-1RUP4+1視圖名稱視圖內(nèi)容靜態(tài)表現(xiàn)動態(tài)表現(xiàn)觀看角度活動圖測試員UseCaseView案的術(shù)語詞匯活動圖LogicView吞吐量活動圖ProcessView活動圖ImplementationView付、安裝活動圖DeploymentView軟件架構(gòu)設(shè)計步驟1、確定影響整體技術(shù)方案的因素:考察用戶界面簡單度用戶界面的簡單度可概括為以下幾種:simpledatainput(例如登入界面)staticview(例如商品報價列表)可定制視圖dynamicviewCAD考察用戶界面部署約束用戶界面的部署約束可概括為以下幾種:-常常要離線工作的移動電腦PDA、javaInternet-支持內(nèi)部網(wǎng)上的較版本掃瞄器-支持內(nèi)部網(wǎng)上的特定掃瞄器(3)考察用戶的數(shù)量和類型用戶的數(shù)量和類型可概括為以下幾種:形制作系統(tǒng)的用戶量的愛好者:對系統(tǒng)的功能有執(zhí)著的興趣,有意愿抑制使用時遇到的的各種困難,包括軟件本身的缺陷,例如玩耍軟件的用戶。(4)考察系統(tǒng)接口類型系統(tǒng)接口類型可概括為以下幾種:EDI口、數(shù)據(jù)庫同步等soap(webservice)協(xié)議等RPC/RMI/Corba(5)考察性能和可伸縮性性能和可伸縮性方面可概括為以下幾種:---只讀:只有對數(shù)據(jù)掃瞄和查詢操作,例如股票行情分析系統(tǒng)不存在任何潛在的沖突,例如網(wǎng)上商店各顧客對自己帳單的治理數(shù)據(jù),例如多個用戶同時使用航班預(yù)定系統(tǒng)預(yù)定同一航班的座位對于eGov電子政務(wù)系統(tǒng),它的主要特性如下:用戶界面的簡單度:數(shù)據(jù)的靜態(tài)顯示/可定制視圖(customizableview)面的部署約束:基于獨立的桌面電腦或?qū)S霉ぷ髡镜膾呙槠饔脩舻臄?shù)量和類型:組織內(nèi)的日常使用者,總共幾百人SOAPSOA主要是獨立的數(shù)據(jù)更,有少量并發(fā)處理2、選擇軟件構(gòu)架樣式(風(fēng)格)所謂軟件構(gòu)架樣式(風(fēng)格),是指關(guān)于一組軟件元素及其關(guān)系的元模型(meta-統(tǒng)本身。(component)和連接器(connection),而它們之間的關(guān)系則表達為如何組合構(gòu)件、連接器的約束條件。傳統(tǒng)的軟件構(gòu)架風(fēng)格可概括為以下幾種:DataflowSystems---BatchSequential批處理---Pipesandfilters管道過濾器Call—and---ReturnSystems調(diào)用與返回系統(tǒng):---MainProgramandsubroutine主程序與子程序---00System對象系統(tǒng)---HierarchicallayersIndependentcomponents獨立的構(gòu)件:---CommunicatingProcesses通訊交互的進程---Eventsystems大事(驅(qū)動)系統(tǒng)---Capsule—Port—ProtocoleGov的元素只信任于當(dāng)前層和之下的相鄰層中的其它元素(留意這并非確定的要求)規(guī)律LayerLayer(支持協(xié)同開發(fā))2TierTier(OperationalRequirement)----治理、安全等要求的標準配置,各構(gòu)件部署在這些配置下將獲得最優(yōu)的性能。eGov4(PresentationLayer)、長久層(PersistenceLayer)、業(yè)務(wù)層(BusinessLayser)和域模塊層(domainmodelLayer)。每個層在功能上都應(yīng)當(dāng)是格外明確的,而不應(yīng)當(dāng)與其他層混合。每個層要相互獨立,通過接口而相互聯(lián)系。3、利用可重用資產(chǎn)任何軟件架構(gòu)設(shè)計都不會從頭開頭,我們要盡量利用可重用資產(chǎn)。資產(chǎn)類型包括:領(lǐng)域模型,需求規(guī)格,構(gòu)件、模式、webserviceseGov4、設(shè)計模式(DesignPatterns)1)設(shè)計模式概念不提到設(shè)計模式(DesignPattern)了。什么是模式(Pattern)呢,并沒有一個很嚴格的定義。一般說來,模式是指一種背景,從而需要應(yīng)用一樣的模式來解決。模式的概念最開頭的時候是消滅在城市建筑領(lǐng)域的。Alexander的。這本書就是:DesignPatterns:ElementsofReusableObject-OrientedSoftwareGoFGofGangsofFour,四人幫)。設(shè)計模式指的是在軟件的建模和設(shè)計的過程中運用到的模式。設(shè)計模式中很多種方法其實很早就消滅了,并且應(yīng)用的也比較多。但是直到GoF的書出來之前,并僅是處在閱歷階段,并沒有能夠被系統(tǒng)的整理,形成一種理論。每一個設(shè)計模式都系統(tǒng)的命名,解釋和評價了面對對象系統(tǒng)中的一個重要的和這可以省去你很多的工作。2)常用設(shè)計模式:23面對對象系統(tǒng)建模方法賜予了解析和指導(dǎo),幾乎可以說的上包羅萬象了.之后,有很多模式間續(xù)消滅,比方分析模式,體系構(gòu)造模式等等。主要的23個設(shè)計模式概述如下:AbstractFractory(Adapter將一個類的接口轉(zhuǎn)換成客戶期望的另外一個接口。Adapter接口不兼容而不能一起工作的那些類可以一起工作BridgeBuilderChainofResponsibility。將這些對象連接成一條鏈來傳遞該懇求,直到有一個對象處理它。Command懇求排隊或者記錄懇求日志,以及支持取消操作CompositeComposite對單個對象和復(fù)合對象的使用具有全都性。DecoratorFa?adeFactoryMethodFlyweight運用共享技術(shù)有效地支持大量細粒度(finegrained)的對象。Interpreter來解釋語言中的句子IteratorMediatorMemento個狀態(tài)。Observer依靠它PrototypeProxy為其他對象供給一個代理以掌握對這個對象的訪問。Singleton保證一個類僅有一個實例,并供給一個訪問它的全局訪問點。State允許一個對象在其內(nèi)部狀態(tài)轉(zhuǎn)變時轉(zhuǎn)變它的行為。StrategyTemplateMethod定義一個操作中的算法框架,而將一些步驟延遲到子類中。Visitor表示一個作用于某對象構(gòu)造中的各元素的操作。我們重點介紹常用的三個設(shè)計模式:1)簡介Java見。new,我們ClassAa=newA工廠模式也是用來創(chuàng)立實例new做,可能多做一些工作,但會給你系統(tǒng)帶來更大的可擴展性和盡量少的修改量。SampleSamplesample=newSample;sample賦值、查詢數(shù)據(jù)庫等。SampleSamplesample=newSample(參數(shù));可能是很長一段代碼,假設(shè)也寫入構(gòu)造函數(shù)中,那你的代碼很難看了。為什么說代碼很難看,初學(xué)者可能沒有這種感覺,我們分析一下,初始化工作(Encapsulation)和分派只要更改每段,不會再發(fā)生牽一動百的事情。SampleFactorynewSampleMySample,SampleSampleMySample和HisSample.我們要實例化他們時,如下:Samplemysample=newMySample;Samplehissample=newHisSample;這在傳統(tǒng)程序中是無法避開的.2)工廠模式分類:(FactoryMethod)和抽象工廠(AbstractFactory).(1)工廠方法你會建立一個特地生產(chǎn)Sample實例的工廠:publicclassFactory{publicstaticSamplecreator(intwhich){一般可使用動態(tài)類裝載裝入類。if(which==1)returnnewSampleA;elseif(which==2)returnnewSampleB;}}那么在你的程序中,假設(shè)要實例化Sample時.就使用Sample子類,到達封裝效果,也就削減錯誤修改的時機.(2)抽象工廠法變得簡單了,如上面工廠方法中是創(chuàng)立一個對象Sample,假設(shè)我們還有的產(chǎn)品Sample2.(concrete)SampleASamleB,Sample2concreteSample2ASample2BFactorypublicabstractclassFactory{publicabstractSamplecreator;public}abstractSample2creator(Stringname);publicclassSimpleFactoryextendsFactory{publicSamplecreator{.........returnnewSampleA;}publicSample2creator(Stringname){.........returnnewSample2A;}}publicclassTestFactoryextendsFactory{publicSamplecreator{......returnnewSampleB;}publicSample2creator(Stringname){......returnnewSample2B;}}SampleSample2,或許你會疑問,為什SampleSample2?這是由于抽象工廠SimpleFactorySampleSample2SimpleFactoryb(Singleton(單態(tài)/單點/單例)模式定義:JavaClass例存在很多操作中,比方建立名目、數(shù)據(jù)庫連接都需要這樣的單線程操作。在。還有,singleton能夠被狀態(tài)化;這樣,多個單態(tài)類在一起就可以作為一個狀synchronize1,假設(shè)你要把這個數(shù)字永久保存到數(shù)據(jù)庫,你可以在不修改單態(tài)接口的狀況下便利的做到。另一方面,SingletonSingletonSingletonJava(garbagecollection)。(classloader)Singleton的,由于被裝入的類實際也屬于資源。如何使用?一般Singleton模式通常有幾種形式:第一種形式:publicclassSingleton{privateSingleton{}//在自己內(nèi)部定義自己一個實例,是不是很驚異,//private只供內(nèi)部調(diào)用privatestaticSingletoninstance=newSingleton;//classpublicstaticSingletongetInstance{returninstance;}}其次種形式:publicclassSingleton{privatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance{//這個方法比上面有所改進,不用每次都進展生成對象,只是第一次~if(instance==null)instance,newSingleton;returninstance;}}使用Singleton.getInstance可以訪問單態(tài)類。上面其次中形式是惰性初始化(lazyinitialization),也就是說第一次調(diào)用Singleton,以后就不用再生成了。lazyinitializationsynchronized,synchronizedsynchronizedgetInstance是有可能得到多個SingletonlazyinitializationSingletondouble-checkedlocking(DCL)的爭論,有興趣者可以參考其他資料進一步爭論。一般認為第一種形式要更加安全些。5、.MVC(Model-View-Controller)設(shè)計模式Model-View-Controller(MVC)模式是一個著名的設(shè)計架構(gòu)模式。如下圖:。模型包含完成任務(wù)所需要的全部的行為和數(shù)據(jù)。模型一般由很多類組成并且使用面對對象的技術(shù)來創(chuàng)立滿足設(shè)計目標的程序。界面(View):一個界面就是一個程序的可視化元素,如對話框、選單、工具條一個單一的程序或模型一般有兩種界面行為。掌握器(Controller):掌握器將模型映射到界面中。掌握器處理用戶的輸入,將修改在界面中表達出來的狀態(tài)。掌握器在需要時還負責(zé)創(chuàng)立其它的界面和掌握器。和處理用戶的輸入,來自用戶輸入的任何變化都被從掌握器送到模型。Web有兩種方法來對界面進展更。在第一種方法中,界面可以告知模型它正在監(jiān)視哪些對象。當(dāng)這些對象中有任界面顯示。其次個方法并不直接將界面連接到模型中,它的掌握器負責(zé)在模型變化時更法不用2)MVC第一,掌握器通過一個狀態(tài)機跟蹤和處理面對操作的用戶大事。這允許掌握器計隔離開來。這個隔離有助于防止面對對象的設(shè)計走向歧途。其次,MVC面就可以跨應(yīng)用再使用。最終,MVC修改的。格外留神,由于可視化接口的面對操作的拓撲構(gòu)造可以大大增加設(shè)計的簡單性。MVC不需要對相應(yīng)的模型進展修改(2)軟件框架接下來我們介紹軟件框架概念。在介紹軟件框架(Framework)之前,我們首先要明HighAvailability確什么是框架和為什么要使用框架。這要從企業(yè)面臨的挑1-1:CostEffectiveScalabilityTimetoMarketSecureGoodPerformanceAbilitytointegrateMulti-channel01020304050607080901001-1企業(yè)級軟件工程面臨的挑戰(zhàn)面的挑戰(zhàn)。依據(jù)優(yōu)先級排序,主要包括高牢靠性(HighAvailability),低本錢(CostEffective),可擴展性(Scalability),投放市場快速性(TimetoMarket),安全性(Secure),性能(GoodPerformance),可集成性(Abilitytointegrate),以及多平臺支持(Multi-channel)等。那么,我們?nèi)绾蚊鎸Σ⑶医鉀Q這些挑戰(zhàn)呢,這需要承受通用的、敏捷的、開放1-2:1-2框架和應(yīng)用的關(guān)系這種基于框架的軟件開發(fā)方式和傳統(tǒng)的汽車生產(chǎn)方式是很類似的,圖1-31-3那么到底什么是軟件框架呢,框架(Framework)的定義如下:使可以是抽大大縮短并簡潔測框架具有以下特點:(1)的類集合,通過相互協(xié)作為應(yīng)用系統(tǒng)供給效勞和預(yù)制行為(3)框架中的變化局部(應(yīng)用中的共性):一個好的框架定義了開發(fā)和集成組件的標準。為了利用、定制或擴展框架服務(wù),通常需要框架的使用者從已有框架類繼承相應(yīng)的子類;以及通過執(zhí)行子類的重1-4需工作量(以人*月來衡量)的影響進展了比照。1-4Mandays,即人*Businessfunction,即業(yè)務(wù)功能來衡量)以幾何級數(shù)遞增,而對于使用框架的工程而言,開發(fā)所需工作量會隨著3-5個月。eGovStruts-Spring-Hibernate框架,StrutsStrutsStruts,治理用戶的懇求,做出相應(yīng)的響應(yīng),供給一個流程掌握器,委派調(diào)用業(yè)務(wù)規(guī)律和其他上層處理,處理特別,為顯示供給一個數(shù)據(jù)模型,用戶界面的驗證數(shù)據(jù)庫直接通信,與應(yīng)用程序相關(guān)聯(lián)的業(yè)務(wù)規(guī)律及校驗,事務(wù)處理在表示層引入這些代碼,則會帶來高耦合和難以維護的后果。HibernateWeb之變得難以掌握。這是長久層的通病。幸運的是,有幾個對象/關(guān)系映射(Object/RelationMapping,ORM)開源框架很好地解決了這類問題,尤其是。HibernateJavaSQLJDBCAPIJavaHibernatePOJO(PlainOldJavaObject)JavaHibernateIDE(IntegratedDevelopmentEnviroment)。下面是Hibernate所負責(zé)的:,如何查詢對象的相關(guān)信息。(HQL)APIHQLSQL,SQLtablecolumnsObjectfieldsHQLHQL然語言,很簡潔就能學(xué)會它。,如何存儲、更、刪除數(shù)據(jù)庫記錄。ORM/子表(Parent/child)關(guān)系、事務(wù)處理、繼承和多態(tài)。3)SpringWeb推移,這些代碼將很難維護。幸好,針對這一問題有好幾種框架(Framework)存(microcontainer),它能讓你很好地把對象搭配起來。這里我們將關(guān)注于Spring的依靠注入和面對方面編程。另外,Spring(DataAccessObjects——transactionmanagementhandler(事務(wù)治理掌握)、serviceobjects(XML聯(lián)系起來。下面是Spring所負責(zé)的:,處理應(yīng)用程序的業(yè)務(wù)規(guī)律和業(yè)務(wù)校驗,治理事務(wù),供給與其他層相互作用的接口,治理業(yè)務(wù)層級別的對象的依靠(Context)來得到業(yè)務(wù)規(guī)律(businessservices)4、子系統(tǒng)的劃分和接口定義(1)為什么要劃分子系統(tǒng)和設(shè)計模型組織構(gòu)造設(shè)計模型組織構(gòu)造的最終目標是支持個人或團隊進展獨立的開發(fā)層次、包的劃分,為團隊的分工協(xié)作供給最直接的依據(jù)(便利構(gòu)建)(2)使用子系統(tǒng)的好處子系統(tǒng)可以用來將系統(tǒng)劃分成相互獨立的部件,它們將可以:orderedconfigureddelivered--在接口保持不變的狀況下,被獨立開發(fā)它局部子系統(tǒng)也可以用來:--將系統(tǒng)中訪問關(guān)鍵資源而需要有安全限制的局部分割出來成為獨立掌握的單元(3)識別系統(tǒng)的接口Interface1)目標:基于職責(zé)來識別系統(tǒng)的接口2)步驟--為全部的子系統(tǒng)識別一組候選的接口--考察接口間的相像性--定義接口間的依靠關(guān)系--將接口對應(yīng)到子系統(tǒng)--定義接口規(guī)定的行為--將接口打包(4)Interface1)2)、描述接口:接口描述要傳達職責(zé)信息結(jié)果5、優(yōu)化設(shè)計,包括去冗余和提高可重用性(1)最小
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四氯化鈦建設(shè)項目可行性研究報告申請立項備案
- 道路交通監(jiān)控施工方案
- 2025商鋪店面裝修合同范文
- 二零二五版墓地所有權(quán)轉(zhuǎn)讓與維護協(xié)議3篇
- 二零二五年度木材產(chǎn)業(yè)園區(qū)建設(shè)與運營合作協(xié)議3篇
- 二零二四年度新能源儲能信息保密與市場合作合同3篇
- 2025版木雕工藝品產(chǎn)業(yè)鏈上下游企業(yè)合作框架協(xié)議4篇
- 2025版牧業(yè)廢棄物處理技術(shù)合作協(xié)議3篇
- 二零二五版智慧城市10千伏電力施工項目合同范本2篇
- 2025年度食品產(chǎn)品貨款抵押與質(zhì)量安全保證合同4篇
- 2025水利云播五大員考試題庫(含答案)
- 中藥飲片驗收培訓(xùn)
- DB34T 1831-2013 油菜收獲與秸稈粉碎機械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 創(chuàng)傷處理理論知識考核試題及答案
- 稅前工資反算表模板
- 2019級水電站動力設(shè)備專業(yè)三年制人才培養(yǎng)方案
- 肝素誘導(dǎo)的血小板減少癥培訓(xùn)課件
- 抖音認證承諾函
- 高等數(shù)學(xué)(第二版)
- 四合一體系基礎(chǔ)知識培訓(xùn)課件
- ICD-9-CM-3手術(shù)與操作國家臨床版亞目表
評論
0/150
提交評論