




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件架構設計主講:周榮輝1/59軟件開發(fā)技術發(fā)展第一批計算機誕生~50年代初:由0、1機器指令編程。50年代早期:用匯編語言編程最早軟件抽象
50年代中期:出現(xiàn)高級語言—FORTRAN。使用算術、邏輯運算,過程調用,循環(huán)和條件等編程—編程高級抽象
監(jiān)控程序系統(tǒng)最早對硬件軟件抽象。60年代:以過程為基礎塊構造編程—ALGOL語言
70年代:PASCAL、C語言出現(xiàn)構造化程序設計自定義數(shù)據(jù)類型、數(shù)據(jù)構造數(shù)據(jù)抽象操作系統(tǒng)出現(xiàn)軟件開發(fā)平臺抽象數(shù)據(jù)庫管理系統(tǒng)出現(xiàn):數(shù)據(jù)管理抽象80年代:面向對象程序設計抽象數(shù)據(jù)類型封裝、繼承、多態(tài)
90年代:WINDOWS操作系統(tǒng)、可視化編程、Internet、分布式計算、分布式數(shù)據(jù)庫、組件技術、代理、……2/59新發(fā)展趨勢1、WebService
依靠SOAP(簡單對象訪問協(xié)議)消息,借助于XML強大描述能力,以及渙散藕合協(xié)議體系,各個WebService端點能夠無障礙通訊,這些端點大到能夠是IBM390大型機,小到PDA手持設備,甚至是智能手表,通訊能夠跨越硬件、操作系統(tǒng)、虛擬機平臺等等。2、網格計算(GridComputing)利用互聯(lián)網把分散在不一樣地理位置電腦組織成一種“虛擬超級計算機”,其中每一臺參與計算計算機就是一種“節(jié)點”,而整個計算是由成千上萬個“節(jié)點”組成“一張網格”,因此這種計算方式叫網格計算。這樣組織起來“虛擬超級計算機”有兩個優(yōu)勢,一種是數(shù)據(jù)處理能力超強;另一種是能充足利用網上閑置處理能力。3/59軟件抽象層次對軟件開發(fā)影響軟件開發(fā)抽象層次提升發(fā)展趨勢是以關注軟件開發(fā)技術問題向關注顧客應用問題傾斜。匯編語言出現(xiàn),使開發(fā)人員能夠用一組便于理解和記憶符號來表達計算機可進行基本運算。高級語言出現(xiàn),能夠用常規(guī)體現(xiàn)式表達形式和人們處理問題思維過程來表達對問題求解。構造化軟件設計關鍵是以模塊作為程序設計基本單位,能夠用模塊及模塊間構造來體現(xiàn)問題求解方案。面向對象軟件開發(fā)技術用對象作為最基本元素,采取繼承、封裝、多態(tài)等機制,使軟件重用成為也許。軟件組件技術實現(xiàn)了對軟件最后形式—可執(zhí)行二進制代碼復用,使軟件構件組裝成為也許。4/59軟件對環(huán)境依賴性23年前,一種軟件就是一種獨立EXE文獻,除了需要操作系統(tǒng)環(huán)境支持外,不再需要其他環(huán)境支持。所有程序模塊都是自己編寫,模塊之間調用關系清清楚楚。WINDOWS操作系統(tǒng)和可視化編程出現(xiàn)后,對環(huán)境依賴性顯著增加,程序員很難說清楚模塊間調用關系,但大多數(shù)程序都在一臺計算機上完成運算。Internet出現(xiàn)后,一種顧客應用功能實現(xiàn),誰也說不清楚使用了哪些硬軟件資源,在哪臺設備上完成了什么任務。一種軟件及其數(shù)據(jù)也許布署在多臺計算機設備上,需要Web服務器、需要安裝瀏覽器軟件,需要對應通信協(xié)議支持。軟件只有邏輯概念。在WebService和計算網格環(huán)境下,軟件概念將變得更含糊。
5/59軟件開發(fā)重點轉移面向對象技術、可視化編成技術、組件技術,以及強大軟件工具支持,使得本來實現(xiàn)起來很復雜、很花費精力軟件實現(xiàn)技術變得非常簡單,并且在某些環(huán)境下,能夠不編程序代碼,或編很少程序代碼,就可實現(xiàn)一種界面美觀、可靠性高軟件。另一方面,軟件規(guī)模和復雜性越來越大,軟件運行環(huán)境越來越復雜,使得軟件開發(fā)主要精力放在了軟件運行基礎環(huán)境考慮、軟件開發(fā)環(huán)境配備、軟件開發(fā)總體方案制定、軟件架構模式選擇、不一樣環(huán)境中軟件元素間通信實現(xiàn)、軟件安裝及運行環(huán)境配備等事關全局問題上。即軟件設計已經從關懷基本構造和算法轉移到了對宏觀構造結識上;從關注功能實現(xiàn)轉移到了對綜合性能要求上,軟件架構設計成了關注重點。6/59軟件體系構造概念軟件體系構造和軟件架構對應英文單詞都是“Softwarearchitecture”,即它們是意義完全相同兩個漢字單詞用語。在使用它們時往往帶有一種習慣上差異,一般學術上用“軟件體系構造”較多,在軟件系統(tǒng)設計上用“軟件架構”較多,如在軟件公司里,有“軟件架構師”職位,但很難聽到“軟件體系構造師”說法。
7/59軟件架構概念在軟件架構概念理解上一般分為兩大流派:●組成派:軟件系統(tǒng)架構將系統(tǒng)描述為計算組件及組件之間交互?!駴Q策派:軟件架構是一系列主要決策集合。8/59與決策派有關軟件架構定義Booch、Rumbaugh、Jacobson定義:架構是一系列主要決策集合,這些決策與下列內容有關:軟件組織、組成系統(tǒng)構造元素及其接口選擇,這些元素在互相協(xié)作中明確體現(xiàn)出行為,這些構造元素和行為深入組合所組成更大規(guī)模子系統(tǒng),以及指導這一組織—包括這些元素及其接口、它們協(xié)作和它們組合—架構格調。Woods觀點:軟件架構是一系列設計決策,假如作了不正確決策,你項目也許最后會被取消。9/59與組成派有關軟件架構定義Garlan和Shaw定義:軟件架構包括構件、連接件和約束三大要素。構件能夠是一組代碼(如程序模塊),也能夠是獨立程序(如數(shù)據(jù)庫服務器)。連接件能夠是過程調用、管道和消息等,用于表達組件之間互相關系。“約束”一般為組件連接條件。DewaynePerry和AlexWolf定義:軟件體系構造是一組具有一定形式體系構造元素。這組元素分為3類:負責完成數(shù)據(jù)加工處理元素,作為被加工信息數(shù)據(jù)元素和連接元素。連接元素用于把架構不一樣部分組合連接在一起。
IEEE610.12-1990軟件工程標準詞匯定義:體系構造是以構件、構件之間關系、構件與環(huán)境之間關系為內容某一系統(tǒng)基本組織構造以及指導上述內容設計與演化原理。10/59與軟件架構有關概念—構件廣義上,構件是軟件系統(tǒng)構造塊單元,是軟件功能和承載體。因此,從系統(tǒng)組成上看,任何在系統(tǒng)中承當一定功能、發(fā)揮一定作用軟件體都能夠當作是構件。構件能夠分為計算構件、數(shù)據(jù)構件和連接構件。狹義上,把組成軟件系統(tǒng)構造塊分為構件和連接件,而構件與連接件在一種軟件系統(tǒng)中扮演角色是可辨別。因此,狹義構件指與系統(tǒng)設計目標(業(yè)務功能需求)對應構造塊(處理單元和數(shù)據(jù)單元),為狹義構件之間協(xié)同運行穿針引線構造塊稱為連接件。構件與連接件主線區(qū)分是:構件有領域業(yè)務處理功能,連接件只起業(yè)務構件之間中介作用11/59與軟件架構有關概念—構件構件有不一樣粒度。一種構件能夠小到只有一種過程(或函數(shù)),也能夠大到包括整個應用程序。函數(shù)、例程、對象、類庫、數(shù)據(jù)包、服務器、文獻等都能夠作為一種構件。對應一種軟件架構實例來說,用什么粒度構件來描述軟件架構呢?應當從軟件“系統(tǒng)”層面上能夠把軟件提成多少個邏輯上相對獨立計算單元(子系統(tǒng))。每一種相對獨立計算單元就是一種構件。假如每個子系統(tǒng)又是一種高度獨立系統(tǒng),又能夠以它作為觀測“系統(tǒng)”對象,將其分解為若干個邏輯上相對獨立計算單元,每個計算單元就是一種構件。在不一樣設計環(huán)境中,構件可體現(xiàn)為控件、組件、表、實體、包、設計模式、框架等。12/59與軟件架構有關概念—連接件連接是構件和構件之間建立和維持行為關聯(lián)和信息傳遞途徑。連接包括:實現(xiàn)機制和信息交換協(xié)議。1、實現(xiàn)機制硬件層:過程調用、中斷、存放、棧等基礎控制描述層:過程調用、中斷/事件、流、文獻、網絡等。資源管理調度層:進程、線程、共享、同步、并行、事件、異常、遠程調用等。高級抽象層:管道、解釋器、轉換器、瀏覽器、組件/中間件、C/S、B/S、ODBC等。2、信息交換協(xié)議信息交換協(xié)議是連接規(guī)約,是實現(xiàn)故意義連接確保。最簡單連接是過程調用,過程調用實現(xiàn)也有協(xié)議,如接口參數(shù)次序和類型、如何把參數(shù)放到取得數(shù)據(jù)一方能夠取得到地方等。13/59與軟件架構有關概念—連接件連接件作用是構件交互實現(xiàn)。構件之間交互包括消息或信號量傳遞,功能或辦法調用,數(shù)據(jù)傳送和轉換,構件之間同步關系、依賴關系等。在最簡單情況下,構件之間能夠直接完成交互,如C語言中函數(shù)調用,這時體系構造中連接件就退化為直接連接語句(沒有物理存在形式,只有概念上連接件)。在復雜情況下,構件間交互需要物理連接件來實現(xiàn)。常見連接件有管道(管道過濾器體系構造)、通信協(xié)議和通信機制(客戶服務器體系構造)等。14/59與軟件架構有關概念—連接件連接件體現(xiàn)形式是多種多樣,如一種事先商定,A構件把數(shù)據(jù)以事先商定文獻名和存放格式放到事先商定位置,B構件就按事先商定讀取數(shù)據(jù)進行處理。A構件按事先商定實現(xiàn)文獻就是連接件。在系統(tǒng)功能構造方面,構件是更多是體現(xiàn)為功能實體,連接件是“使用”什么數(shù)據(jù)或傳遞數(shù)據(jù)。在系統(tǒng)代碼構造方面,構件也許是包、類、對象、過程、函數(shù)、辦法等不一樣粒度軟件元素。連接件包括“傳遞控制到……”、“傳遞數(shù)據(jù)到……”、“和……共享數(shù)據(jù)”、“是……實例”、調用、使用等。15/59與軟件架構有關概念—連接件連接件設計已經成為軟件開發(fā)關鍵技術。連接件設計要考慮原因包括不一樣涉眾需求、構件形式、系統(tǒng)性能、系統(tǒng)可維護性、系統(tǒng)安全性、系統(tǒng)可靠性等。構件能夠以多種形式出現(xiàn)。對于集中數(shù)據(jù)管理分布式應用系統(tǒng),共享后臺數(shù)據(jù)庫不一樣構件之間連接件?;ハ嗒毩孟到y(tǒng)之間交互能夠用WebService組件、消息中間件實現(xiàn)連接是目前廣泛采取技術。分布式系統(tǒng)采取選定機制和協(xié)議實現(xiàn)連接。與第三方認證連接、與銀行交費系統(tǒng)連接、與稅務系統(tǒng)連接,都與系統(tǒng)安全性、涉眾利益直接有關,技術非常復雜。C/S、B/S模式構件之間連接,都是通過中間件和協(xié)議實現(xiàn)。16/59兩種架構設計區(qū)分和聯(lián)系組成派和決策派有關軟件架構概念區(qū)分在于從不一樣角度來描述對軟件架構概念結識。組成派是從軟件架構最后形態(tài)角度來描述軟件架構,決策派是從軟件架構形成過程來描述軟件架構。軟件架構最后要用構件、連接件及其約束來描述,這既是決策主要內容和決策成果,也是軟件架構最后體現(xiàn)形式。這就是他們共同點。決策內容范圍更廣,軟件架構不但重視軟件本身構造和行為,還重視可用性、功能性、性能、重用、可理解性、經濟和技術限制等。任何一項決策都是屬于軟件架構內容,有決策也許與構件、連接件選擇無關。一種軟件項目開發(fā)也許包括到多套方案,對方案選擇也許包括到復雜原因,需要高層決策者做出有遠見決策這樣決策對系統(tǒng)開發(fā)產生主線性影響,軟件系統(tǒng)最后體現(xiàn)構件、連接件及其約束選擇是這些決策造成產物。17/59實例—一種考試系統(tǒng)設計決策(1)對于一種考試系統(tǒng),考試公正性、可用性、系統(tǒng)性能是考試系統(tǒng)關鍵質量屬性。1、對公正性考慮:避免剽竊是主要措施。方案:同一份母卷,產生不一樣考試試卷。考生登錄后,直接生成考試試卷。2、可用性考慮:考生年紀差異大、工作崗位特殊、有考生計算機應用水平很低,也許無法輸漢字。方案:①考生登錄只輸數(shù)字型考號,登錄后顯示考生信息進行核實;②客觀題機考,主觀題可機考,也可筆試(通過投影儀顯示主觀題)3、系統(tǒng)性能不影響考試進度和考生情緒。前面1、2條方案屬于軟件架構內容,由于它是考試系統(tǒng)設計必須遵循標準。性能問題難以估計,將逐漸處理。18/59實例—一種考試系統(tǒng)設計決策(2)1、生成試卷存在問題:當超出50人考試時,生成試卷遇到性能瓶頸:等候時間長,甚至產生試卷不完整。原因:生成試卷是對母卷進行隨機大題交換、小題交換、備選答案交換等一系列復雜運算實現(xiàn),運行時間長,并發(fā)操作不能太多。處理方案:將試卷生成功能獨立,提前一種時間量先生成考試試卷,考生登錄后直接取試卷。2、考生登錄遇到問題:當一次考試超出300人后,考生登錄輸入考號后不能如考生所盼望那樣立即顯示有關信息,需要等候一會兒,盡管只有幾秒鐘,但會影響考生情緒。原因:盡管考生身份驗證簡單,但并發(fā)操作太多同樣影響性能。處理方案:將考生提成不一樣邏輯班,不一樣邏輯班將考試時間錯開一種小時間間隔(如5分鐘)。19/59實例—一種考試系統(tǒng)架構設計(3)3、網絡環(huán)境對考試影響:有地域網絡環(huán)境差,難以確??荚図樌M行;考生范圍局限在某個地域,將考生集中到某個地方參與考試成本大。處理方案:通過考試系統(tǒng)下載與安裝、考試數(shù)據(jù)下載、上傳、裝載等功能,輔之其他措施確??荚囉行?。該方案將影響考試系統(tǒng)物理架構,即系統(tǒng)是一種分布式架構,交互機制是通過網絡進行文獻下載、上傳進行。一種軟件系統(tǒng)設計,首先要對需求中提出多種問題提出合理處理方案。這些處理方案反應是設計過程,代表是高層設計決策。對這些設計決策詳細化,綜合化,就組成了以構件、連接件等形式表達軟件架構??荚囍行目键c文獻下載上傳20/59軟件架構設計關注點軟件設計首要任務是實現(xiàn)系統(tǒng)功能需求,功能不能滿足顧客需求軟件無論如何也算不上好軟件。同步軟件設計必須對軟件非功能要求提出處理方案,使開發(fā)軟件滿足那些非功能要求,不能滿足非功能要求軟件也不是一種好軟件。簡單地說,不能滿足功能要求軟件是一種不能用軟件(不能處理顧客關注業(yè)務問題),不能滿足非功能要求軟件是一種不好用軟件。在以計算機網絡和Internet為計算環(huán)境今天,僅僅滿足軟件功能要求是遠遠不夠。能夠構想,假如學生學籍管理系統(tǒng)只由一臺微機來實現(xiàn),或者只能由連接相鄰幾個房間局域網來實現(xiàn),將是什么場景?軟件體系構造設計關注點是顧客非功能需求。軟件非功能需求是軟件構造設計驅動力。21/59軟件質量特性有關軟件設計從設計角度考慮,功能容易確保,也容易驗證。最基本質量要求還應當考慮:●安全性:基本安全要求包括:系統(tǒng)只允許合法顧客使用,合法顧客就是系統(tǒng)主要參與者;合法顧客只允許使用與自己有關功能和數(shù)據(jù)。●可用性:最后顧客容易使用程度,主要體目前顧客與系統(tǒng)交互方面?!窨煽啃裕很浖\行故障少,具有可恢復性?!裥阅埽喊憫獣r間、吞吐量、精確性、有效性、資源利用率?!窨尚薷男裕喊删S護性、可重用性、可移植性、系統(tǒng)配備靈活性等。。22/59系統(tǒng)安全性設計系統(tǒng)安全性包括到系統(tǒng)環(huán)境安全性、系統(tǒng)本身安全性。軟件系統(tǒng)本身安全性是只允許合法顧客使用系統(tǒng),并且只允許合法顧客做它份內事?;谟嬎銠C網絡軟件系統(tǒng)必須同步考慮環(huán)境安全和系統(tǒng)本身安全。環(huán)境安全是軟件系統(tǒng)安全基礎。從設計角度考慮,網絡架構選擇、鏈接方式、通信方式、網絡中資源訪問方式等都與環(huán)境安全有關。必須從架構、技術等多種方面入手來確保。與系統(tǒng)安全有關架構設計目標是系統(tǒng)安全總體策略和實行方案。系統(tǒng)安全總體策略是系統(tǒng)安全思緒抽象。對安全機制和安全規(guī)則謀求技術處理方案,從而組成安全實行方案。第三方認證是系統(tǒng)安全主要伎倆,數(shù)架構設計主要內容。23/59系統(tǒng)可用性設計
可用性在軟件質量特性中占有主要位置??捎眯允桥c功能性、可靠性并列關鍵軟件質量特性。軟件產品最后為顧客所接收,可用性起到決定性作用??捎眯远x:軟件被顧客學習、操作、準備輸入和理解輸出所作努力程度,包括安裝簡單方便、容易使用、界面友好,并能適用于不一樣特點顧客。計算機已經成為人們工作基本工具,軟件可用性具有更廣泛含義,它首先是也許用,然后才是能夠用,即軟件能夠能夠方便地布署到人們工作環(huán)境中,在人們需要它時候,就能夠方便地使用它。
與軟件可用性設計有關架構設計處理是人們在需要它地方和需要它時候能夠方便地使用上軟件,即處理也許用問題。軟件人機交互設計重點是處理即處理能夠用問題。一種用例實現(xiàn)界面設計及表達層設計,屬于此類設計。24/59系統(tǒng)可靠性
軟件可靠性定義:軟件產品在要求條件下合要求時間內完成要求功能能力,其無端障概率度量程為可靠度。與可靠性有關質量指標包括:●成熟性:一種軟件系統(tǒng)成熟程度
●可恢復性:當某個功能失效發(fā)生時,系統(tǒng)在目前環(huán)境下能實現(xiàn)故障自動轉移,重新自動配備、繼續(xù)執(zhí)行能力。
●強健性:多種惡劣環(huán)境(大數(shù)量、大量顧客同步訪問)下系統(tǒng)能正常工作能力。
●“系統(tǒng)分布性”也作為其質量指標,即把軟件系統(tǒng)某些子系統(tǒng)或部分定位于不一樣處理主機或存放設備上,能夠正常運行能力。分布性包括網絡構造分布性、系統(tǒng)接口分布性、系統(tǒng)功能分布性和數(shù)據(jù)分布性、顧客操作分布性。在不一樣設備上運行相同關鍵功能或對數(shù)據(jù)存取和復制是處理單點失效問題有效辦法。25/59系統(tǒng)可靠性設計
為了確保軟件系統(tǒng)可恢復性,需要在系統(tǒng)硬件配備、系統(tǒng)備份與恢復機制、數(shù)據(jù)備份/恢復機制、雙機熱備份等架構設計方面進行精心設計。只有做到有備,才能做到無患。為了確保系統(tǒng)強健性,需要在數(shù)據(jù)庫服務器集群、運行服務器集群、分布服務器系統(tǒng)及負載平衡、雙機熱備份等架構設計方面進行精心設計。為使系統(tǒng)滿足系統(tǒng)分布性要求,需要在軟件架構模式(C/S或B/S—顧客操作分布性、通信方式與通信協(xié)議、外部系統(tǒng)調用方式(如何應對外部系統(tǒng)位置和接口變化)、系統(tǒng)功能調用方式(通過架構設計,確保功能調用與功能模塊所處位置無關,以及功能模塊獨立性)、數(shù)據(jù)庫訪問方式(通過架構設計和模式選擇,使應用程序對數(shù)據(jù)庫訪問與數(shù)據(jù)庫物理位置無關、與數(shù)據(jù)庫管理系統(tǒng)無關)等多種方面進行精心設計。系統(tǒng)可靠性主要通過設計達成,是架構設計主要內容。26/59與性能有關設計
性能表達系統(tǒng)響應性,也稱有效性,一般用對事件響應時間或單位時間內處理事件數(shù)目來度量。從宏觀上,系統(tǒng)性能與資源利用率有關,性能達不到要求往往是受資源約束影響,尤其是硬件資源約束影響,假如能夠根據(jù)系統(tǒng)性能要求配備充足資源,處理性能問題就變得很容易。但一種系統(tǒng)開發(fā)往往是受硬件資源約束。一種系統(tǒng)設計在合適成本和資源約束條件下處理性能問題。其設計準則是在資源能夠充足利用前提下,確保系統(tǒng)必要響應時間。要使系統(tǒng)性能滿足顧客要求,首先必須從大局著眼,從系統(tǒng)架構入手,謀求一種更全面處理方案。如分布式應用系統(tǒng)、分布式數(shù)據(jù)庫等都是處理性能問題。
27/59系統(tǒng)可修改性設計系統(tǒng)可修改性將作為系統(tǒng)設計重點考慮內容,也是論文在系統(tǒng)設計方面研究主要內容。與軟件設計有關理論、辦法、技術,主要集中在軟件可修改性方面。設計模式重點處理軟件可修改性問題。系統(tǒng)設計關注點是系統(tǒng)可變性,如顧客業(yè)務流程可變性、業(yè)務規(guī)則可變性(多種促銷活動)、數(shù)據(jù)庫管理系統(tǒng)可變性、運行環(huán)境可變性(網絡環(huán)境)外部系統(tǒng)(組件)可變性(引發(fā)系統(tǒng)接口修改)等。
系統(tǒng)如何適應這些可變性,是架構設計必須考慮問題。在系統(tǒng)設計中,必須充足地識別這些可變性,精確地抽象出這些可變性,在設計中選擇合適架構模式,減少模塊耦合性,提升模塊內聚等,使增加功能、替代對應模塊等不會修改程序代碼,增強系統(tǒng)地能力和靈活性。對于局部可變性,利用先進設計技術(如設計模式)建立穩(wěn)定內部接口,以不變應萬變,增強系統(tǒng)可修改性。28/59系統(tǒng)設計要考慮問題(1)在軟件需求分析階段,重點關注顧客業(yè)務方面向系統(tǒng)需求,包括功能需求和非功能需求。需求分析階段不考慮與軟件實現(xiàn)有關問題。在軟件設計階段,所有顧客需求都要通過設計,用對應軟件元素來體現(xiàn)。1、需要增加功能:需求分析只考慮了顧客業(yè)務功能需求,假如一種系統(tǒng)只有獨立業(yè)務功能,不能確保系統(tǒng)安全、有序、有效地確保業(yè)務功能運行。系統(tǒng)還必須提供許多輔助功能來支持業(yè)務功能有效實行。其中,最主要功能是顧客管理功能。2、系統(tǒng)交互設計:界面設計已經成為軟件設計最主要內容。一種設計成功操作界面能夠為顧客提供一種優(yōu)雅工作環(huán)境,能夠激發(fā)顧客工作激情,是軟件系統(tǒng)易用性詳細體現(xiàn)。29/59系統(tǒng)設計要考慮問題(2)3、數(shù)據(jù)存放設計:數(shù)據(jù)持久化設計是主要設計內容,包括與數(shù)據(jù)持久化有關對象數(shù)據(jù)初始化時機,與對象數(shù)據(jù)存放操作事務設計及其策略,數(shù)據(jù)持久化機制(如何保持與領域對象低耦合性),數(shù)據(jù)持久化實現(xiàn)辦法(如引入第三方組件)等。數(shù)據(jù)庫設計和數(shù)據(jù)庫存取機制是數(shù)據(jù)存放主要設計內容。4、系統(tǒng)接口設計:一種軟件系統(tǒng)也許是一種更大系統(tǒng)子系統(tǒng),或者需要與其他系統(tǒng)協(xié)同工作。通過系統(tǒng)間接口實現(xiàn)不一樣信息系統(tǒng)間數(shù)據(jù)共享、同步等是最有效辦法。建立于其他信息系統(tǒng)之間交互系統(tǒng)接口設計是系統(tǒng)設計又一主要任務。接口設計要考慮可擴展性和靈活性,能夠適應外部系統(tǒng)變化。30/59軟件架構設計顧客管理模型、系統(tǒng)交互模型、數(shù)據(jù)存放模型、系統(tǒng)接口模型,以及系統(tǒng)領域模型,如何組織起來,組成一種邏輯上完整系統(tǒng),既滿足系統(tǒng)功能性和約束要求,又滿足可用性、可靠性、性能和可維護性要求,這就是軟件系統(tǒng)構架設計任務。架構設計成果也許不是一種模型,而是一系列模型,如邏輯架構、物理架構、開發(fā)架構等?!熬哂腥忠饬x設計決策”指這些決策決定了將來系統(tǒng)基本形態(tài),對其他設計具有指導意義,有也許決定了其他設計必須遵循基本標準。如C/S、B/S架構。既然是“設計決策”,不一定都能夠用現(xiàn)有專門術語來描述,即有可用軟件架構中專門術語來描述,有些難以用專門術語來描述,但其決策抽象性更高,指導意義更強。31/59軟件框架基于框架軟件開發(fā)目前已經成為一種時尚。目前軟件開發(fā)越來越倚重框架使用,選擇何種框架、每個框架在整個架構中處于什么位置,都成為軟件架構設計中主要步驟??蚣芗夹g有助于把通用專注點和專用關注點分離出來,使系統(tǒng)具有更加好易修改性和可重用性。與軟件架構有關尚有軟件架構模式、軟件架構格調和軟件架構框架。軟件架構模式是從具有共性多系統(tǒng)中精練出來能夠再現(xiàn)好設計方案。軟件架構格調是對軟件架構模式深入提煉,形成處理方案框架。軟件架構格調比軟件架構模式更具有應用價值,如客戶服務器格調、管道過濾器格調。但有時不加辨別地使用軟件構造模式和軟件架構格調,并且軟件架構模式術語使用更廣發(fā),我們一般說C/S模式、B/S模式,但很少說C/S格調。32/59框架定義框架是一種已部分完成,需要擴充或豐滿骨架?;颍嚎蚣苁悄軌蛲ㄟ^某種回調機制進行擴展軟件系統(tǒng)或子系統(tǒng)半成品。該定義強調三點:1、框架是半成品。這是框架與其他軟件元素本質區(qū)分??蚣芤呀泴崿F(xiàn)了軟件系統(tǒng)或子系統(tǒng)通用部分代碼。2、使用框架進行軟件開發(fā)基本思想是:將特定應用部分(容易變化部分)封裝成擴展點,以某種回調機制將顧客擴展部分納入框架控制范圍之內。3、采取“回調”機制將框架擴展成軟件系統(tǒng)或子系統(tǒng)。所謂回調就是反過來調用。C語言中將另一種函數(shù)指針作為函數(shù)調用語句參數(shù)傳遞給被調用函數(shù),被調用函數(shù)又反過來調用由參數(shù)傳過來函數(shù)(反調用)完成部分功能。在面向對象編程語言中,利用抽象辦法支持回調機制,開發(fā)人員通過抽象辦法實現(xiàn)來實現(xiàn)擴展。33/59框架定義從設計模式看,框架是一種軟件系統(tǒng)模式,是大粒度可復用部件??蚣芸商岢衫潼c和熱點。冷點定義軟件系統(tǒng)完整構造,包括它基本構件和構件之間關系,它們在應用框架實例化過程中保持不變。熱點描述了應用框架中那些隨詳細應用需求不一樣部分。當使用一種框架創(chuàng)建一種詳細軟件系統(tǒng)時,主要工作是根據(jù)顧客尤其需求,對框架熱點進行專門化。34/59框架與架構區(qū)分本質區(qū)分是:框架是軟件,架構不是軟件??蚣苁且环N特殊軟件,它并不提供完整處理方案,而是為開發(fā)人員處理方案實現(xiàn)提供參照模版或支持基礎(或平臺)??蚣苁前氤善?,框架中服務(類和辦法)能夠被最后應用系統(tǒng)直接調用,而框架中擴展點是供應用開發(fā)人員定制可變點。軟件架構不是軟件,而是軟件如何被設計主要決策。通過完整開發(fā)過程之后,這些架構決策將體目前最后開發(fā)軟件系統(tǒng)中。我們不能指著某些代碼說它是軟件架構。架構勢必被代碼所體現(xiàn)和遵循。。35/59框架與架構聯(lián)系框架技術和架構技術所體現(xiàn)是處理復雜問題“分而治之”思維方式—先大局后局部(架構)先通用后專用(框架)。架構是問題抽象處理方案,框架是半成品,需要根據(jù)詳細需求深入定制開發(fā)才能變成應用系統(tǒng)。從系統(tǒng)設計角度看,一種軟件系統(tǒng)總是根據(jù)需求先進行架構設計形成抽象處理方案,再根據(jù)架構模型選擇框架得到系統(tǒng)半成品,最后在框架擴展點加入特定業(yè)務處理部分得到最后完整處理方案。這說明一種框架往往是系統(tǒng)架構或系統(tǒng)架構某一部分實現(xiàn)半成品。從實現(xiàn)角度看,先構建通用半成品(框架),再實現(xiàn)特定部分。在管理信息系統(tǒng)開發(fā)中,廣泛使用struts、spring等都是部分實現(xiàn)半成品,struts主要是處理體現(xiàn)層與業(yè)務邏輯層之間松耦合問題。36/59軟件架構模型為了指導軟件體系架構設計,許多學者總結出了多種體系架構模型,其中著名體系架構某些有“4+1”模型、“5視圖法”。“4+1”模型如下列圖所示。邏輯視圖開發(fā)視圖過程視圖物理視圖場景“5視圖法”包括:邏輯視圖、開發(fā)視圖、運行視圖、物理視圖和數(shù)據(jù)視圖。運行視圖就是過程視圖。37/59邏輯視圖軟件架構邏輯架構關注功能,不但包括顧客可見功能(與業(yè)務有關功能),還包括實現(xiàn)顧客功能必須提供輔助功能,如某顧客對數(shù)據(jù)訪問時必須驗證其權限,為滿足需求約束需要提供輔助功能等。邏輯架構用邏輯元素和邏輯元素之間交互來描述。邏輯元素也許是子系統(tǒng)、邏輯層(功能邏輯劃分)、功能模塊和類等。子系統(tǒng)劃分、邏輯層劃分、系統(tǒng)功能模塊,以及類模型等,從邏輯建模角度看,都是邏輯架構設計內容。邏輯架構關注是組成系統(tǒng)軟件元素及其關系—構件及其連接。38/59開發(fā)視圖軟件架構開發(fā)架構關注是軟件系統(tǒng)程序組成及其關系,重點考慮開發(fā)期質量,如可擴展性、可重用性、可移植性、易理解性、易測試性等。其關注點是在軟件開發(fā)環(huán)境中軟件模塊實際組織方式,即軟件系統(tǒng)由那些程序包組成,以及它們之間關系。開發(fā)架構是軟件開發(fā)組織進行分工主要根據(jù)。三層構造就是典型開發(fā)架構。39/59運行視圖軟件架構運行架構設計重點考慮軟件運行期質量,如性能、可伸縮性、連續(xù)可用性、性能等。運行架構關注進程、線程、對象等運行時概念,以及有關并發(fā)、同步、通信等問題。系統(tǒng)部件運行控制方式,如客戶/服務器模式,屬于運行架構設計范圍。40/59物理視圖軟件架構物理架構設計重點考慮軟件運行期質量,即通過軟件系統(tǒng)“安裝和布署”來滿足軟件系統(tǒng)可靠性、易用性、安全性、性能、連續(xù)可用性等要求。它描述是運行軟件計算機、網絡、硬件設施等情況,關注目標程序及其依賴運行庫和系統(tǒng)軟件如何安裝或布署到物理機器上,以及運行時配備情況。網絡配備及拓撲構造、軟件模塊布署、數(shù)據(jù)庫布署,以及各部件之間通信實現(xiàn)等是物理架構設計主要內容。41/59數(shù)據(jù)視圖軟件架構
數(shù)據(jù)架構關注持久化數(shù)據(jù)存放方案,不但包括實體及實體關系數(shù)據(jù)存放格式,并且包括數(shù)據(jù)傳輸、數(shù)據(jù)復制和數(shù)據(jù)同步等策略。數(shù)據(jù)架構關注是數(shù)據(jù)需求、數(shù)據(jù)安全性、系統(tǒng)可靠性。42/59基于視圖軟件架構設計選擇針對一種詳細軟件系統(tǒng)架構設計,從架構設計視圖考慮,并不一定要按照“5視圖法”進行軟件架構設計,而是根據(jù)需要有選擇地進行設計。假如不包括數(shù)據(jù)持久化問題,就不需要進行數(shù)據(jù)架構設計;假如不包括分布式應用問題,就不需要進行物理架構設計;假如業(yè)務邏輯非常簡單,邏輯架構和開發(fā)構造就能夠合二為一。假如需要,還能夠引入新架構,如能夠針對系統(tǒng)安全問題引入系統(tǒng)安全架構。43/59軟件架構設計內容始終記?。?、軟件架構是一系列主要決策集合。2、軟件架構=構件+連接件+約束3、基于視圖架構模型具有指導作用。凡是與軟件設計有關主要決策都是軟件架構設計內容,也許不一定用構件或連接件體現(xiàn)出來,但會影響最后產生構件或連接件內容。44/59架構設計過程分析階段需求分析領域建模架構設計階段確定關鍵需求概念性架構設計細化架構驗證架構概念性架構實際架構45/59關鍵需求決定架構關鍵需求決定架構,其余需求驗證架構,是架構設計應遵循基本策略。影響軟件架構設計關鍵需求包括功能需求、質量(屬性)需求、商業(yè)需求三類。關鍵功能指影響系統(tǒng)成敗功能。如考試系統(tǒng)在線考試功能是最關鍵功能,其它功能無論多么完善,假如在線考試功能過不了關,就是一種不合格考試系統(tǒng)。有系統(tǒng)圍繞關鍵性能進行架構設計。電信系統(tǒng)、考試系統(tǒng)性能是最關鍵質量特性。7*二十四小時不間斷運行系統(tǒng),短暫停機就也許對生產造成重大影響。商業(yè)需求指軟件系統(tǒng)開發(fā)和應用方面商業(yè)考慮,它關注從客戶群、公司現(xiàn)狀、未來發(fā)展、預算、立項、開發(fā)、運行、維護在內整個軟件生命周期包括到商業(yè)原因,包括了商業(yè)層面目標、盼望和限制。系統(tǒng)開發(fā)預算會影響對技術選擇??蛻羧簩軜嬘绊?,法律法規(guī)會影響系統(tǒng)可擴展性、可修改性、可維護性。46/59概念架構設計一種系統(tǒng)架構設計首先進行概念架構設計。概念架構設計是對系統(tǒng)設計最初構想,是對系統(tǒng)戰(zhàn)略規(guī)劃,它決定了系統(tǒng)最關鍵設計要素和交互機制,使系統(tǒng)設計作出最關鍵決策,決定了實際架構設計必須遵循設計標準。
概念性架構不包括詳細技術,其設計成果是系統(tǒng)最后展現(xiàn)宏觀概貌。制造公司管理信息系統(tǒng)零部件采購管理汽車銷售管理售后服務管理第三方軟件平臺零部件采購協(xié)作汽車銷售協(xié)作售后服務協(xié)作數(shù)據(jù)下載與上傳供應商經銷商服務商采購部經銷部服務部47/59基于J2EE應用系統(tǒng)概念性架構ApplicationClieentDynamicHTMLPagesClientTierJSPPagesWebTierEnterpriseBeansEnterpriseBeansBusinessTierDatabaseDatabaseEISTierClientMavhineJavaEEServerDatabaseServer48/59概念性架構概念性架構設計也許也不是一種設計決策,也許是多種設計決策,這些設計決策也許包括到多種方面,如基于應用分布式架構,基于集成分布式架構、基于中介分布式架構、分布式數(shù)據(jù)庫架構、B/S或C/S架構、三層架構、基于SOA架構等,這些都是從概念層面上來討論系統(tǒng)架構,與實現(xiàn)技術無關,都屬于概念性架構內容。一種系統(tǒng)概念性架構也許包括其中幾項內容。為了避免對數(shù)據(jù)庫管理系統(tǒng)依賴性,采取ORMapping框架。這些都是系統(tǒng)設計最初決策,都是軟件開發(fā)時必須遵循設計標準,都屬于概念性架構設計范圍。凡是與關鍵功能需求、關鍵質量屬性需求和關鍵商業(yè)需求有關主要設計決策都應當首先從概念架構上進行規(guī)劃。碩士論文中給出架構都是概念性架構。49/59概念性架構設計參照辦法1、假如待開發(fā)系統(tǒng)對其他系統(tǒng)有依賴關系,則第一種概念性架構決策是確定本系統(tǒng)與待開發(fā)系統(tǒng)交互機制,即必須處理好帶開發(fā)系統(tǒng)與其他系統(tǒng)溝通渠道問題。該決策中,待開發(fā)系統(tǒng)作為一種構件,其他每個外部系統(tǒng)作為一種構件,其連接件完成系統(tǒng)之間交互。2、假如待開發(fā)系統(tǒng)存在對原有系統(tǒng)集成應用,則系統(tǒng)集成策略應當成為優(yōu)先概念性架構設計決策。待開發(fā)系統(tǒng)和每個被集成系統(tǒng)各作為一種構件。3、看待開發(fā)系統(tǒng),能夠根據(jù)業(yè)務邏輯提成若干個子系統(tǒng),確定子系統(tǒng)間交互內容和交互機制,以此確定概念性邏輯架構和概念性數(shù)據(jù)架構。每個子系統(tǒng)作為一種構件。子系統(tǒng)之間交互及機制確實定需要多方權衡。4、根據(jù)公司機構分布、應用人員工作地點分布,以及業(yè)務流量與性能要求,確定系統(tǒng)概念性物理架構和概念性運行架構。50/59實際架構設計概念性架構設計確定了最為關鍵設計要素和交互機制,但不可直接用于實現(xiàn),由于實現(xiàn)與技術有關,概念性架構與實現(xiàn)技術無關。軟件開發(fā)人員最為關懷軟件架構方案中有關模塊劃分決定、模塊之間接口如何定義、選用現(xiàn)成框架、已經決定采取開發(fā)技術等。同步在“如何構建軟件”方面,也許包括到邏輯層(Layer)、物理層(Tier)、子系統(tǒng)、模塊、接口、進程、線程、消息、協(xié)議等概念。這些都是軟件開發(fā)中不可回避問題。實際軟件架構設計將利用更多詳細技術,為軟件實際開發(fā)提供更多指導和限制。軟件系統(tǒng)關鍵技術就是實際架構中實現(xiàn)技術。大量設計模式主要利用在實際架構實現(xiàn)技術方面??蚣芗夹g也主要用于實際架構實現(xiàn)技術方面。實際架構設計主要利用5視圖法進行架構細化。51/59實際架構設計—邏輯架構設計邏輯架構關懷是如何將系統(tǒng)分為不一樣部分以及各部分之間如何交互。但系統(tǒng)劃分為不一樣單元后,必須考慮這些邏輯單元之間是如何協(xié)作。確定子系統(tǒng)接口和交互機制是實際邏輯架構設計主要內容。
識別協(xié)作,并將具有共性協(xié)作抽象成通用機制,是邏輯架構設計重點和難點。在大型軟件系統(tǒng)中不一樣子系統(tǒng)之間協(xié)作,在分布式集成系統(tǒng)中不一樣系統(tǒng)之間協(xié)作,不是編程時根據(jù)局部需要去考慮,都是通過通用機制來綜合考慮,避免子系統(tǒng)/系統(tǒng)之間緊耦合。
通用機制發(fā)覺也許抽象出新連接件邏輯單元。
數(shù)據(jù)庫共享、WebService、消息棧、分布數(shù)據(jù)庫與同步機制等都是某些通用機制。邏輯架構設計工具有:子系統(tǒng)劃分,系統(tǒng)功能邏輯層次圖,類與對象模型,包圖,以及時序圖、協(xié)作圖、狀態(tài)圖和活動圖等52/59實際架構設計—開發(fā)架構設計開發(fā)架構設計關注軟件開發(fā)環(huán)境中軟件模塊實際組織方式,即軟件系統(tǒng)由那些程序包組成,以及它們之間關系。程序包不但包括要編寫源程序,并且包括直接使用第三方SDK和現(xiàn)存框架、類庫,支持系統(tǒng)運行操作系統(tǒng)或中間件。開發(fā)架構設計重點考慮開發(fā)期質量,設計中關鍵技術主要體現(xiàn)軟件開發(fā)期質量有關設計,如設計模式利用,框架選擇等。開發(fā)架構設計主要工作是:●確定要開發(fā)程序包或直接利用程序包(如函數(shù)庫)之間依賴關系?!癫扇〖夹g,包之間采取什么技術實現(xiàn)連接,以確保必要開發(fā)期質量,如有依賴關系包之間松耦合?!翊_定采取框架。假如實現(xiàn)連接技術有對應框架,采取框架是值得推薦選擇。53/59實際架構設計—開發(fā)架構設計分層模型是開發(fā)架構設計主要工具
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 組織領導力的多維度研究計劃
- 如何有效管理生活部的日常事務計劃
- 準確預測倉庫需求的方法計劃
- 保安工作總結計劃金融行業(yè)保安工作的技術改進
- 社區(qū)個人工作計劃改善社區(qū)停車設施
- 《貴州新恒基礦業(yè)有限公司興仁市太平洞金礦(新建)礦產資源綠色開發(fā)利用方案(三合一)》評審意見
- 《貴州畢節(jié)百礦大能煤業(yè)有限責任公司水城縣玉舍鄉(xiāng)中寨煤礦(變更)礦產資源綠色開發(fā)利用方案(三合一)》評審意見
- 腦梗死靜脈溶栓護理后護理
- 統(tǒng)編版小學語文二年級下冊第9課《楓樹上的喜鵲》精美課件
- 2025年長春貨運員初級考試題庫
- 腮腺腫瘤(小講課)
- 西師大版四年級數(shù)學下冊 (平均數(shù))教學課件
- (二級)農業(yè)經理人復習備考題庫及答案(含理論和實操)
- 畢業(yè)設計(論文)-汽車多向調節(jié)電動座椅設計
- 六年級下冊綜合實踐活動教學設計-志愿服務我能行 全國通用
- 腎康注射液+栓課件
- 醫(yī)院檢驗科迎檢匯報課件
- 全民族抗戰(zhàn)山西記憶教學課件
- 青蛙賣泥塘話劇稿子
- 化學中常用的實驗方法(第一課時物質的制備)課件 【核心知識精講精研】 上學期高一滬科版(2020)必修第一冊
- 江西省宜春市高職單招2022-2023學年醫(yī)學綜合真題及答案
評論
0/150
提交評論