版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件體系結構及應用(yìngyòng)軟件體系結構及應用(yìngyòng)體系結構風格的選擇共六十三頁體系結構風格(fēnggé)的選擇主要(zhǔyào)內容體系結構風格選擇方法體系結構風格選擇的案例分析:上下文關鍵詞索引系統(tǒng)(KWIC)–Solution1:帶有共享數(shù)據(jù)的主程序-子過程體系結構–Solution2:抽象數(shù)據(jù)類型風格–Solution3:隱式調用風格–Solution4:管道-過濾器風格共六十三頁軟件體系結構及應用(yìngyòng)
體系結構風格選擇(xuǎnzé)方法共六十三頁體系結構風格(fēnggé)的選擇目前(mùqián)最常見的體系結構:分層+OO我們已經學習過了十余種體系結構風格;簡單的判斷某一個具體的應用應該采取何種體系結構是非常困難的,需要借助于豐富的經驗。從目前的趨勢來看:–管道-過濾器風格、批處理風格已經非常少見;–過程控制風格、黑板結構、虛擬機風格往往針對具體的應用領域;–OO的思想已經融合在幾乎所有的體系結構之中,而事件風格、層次化的思想同樣也被廣泛使用;–MVC、基于規(guī)則的系統(tǒng)、B/S、數(shù)據(jù)庫風格也是經常使用的風格。共六十三頁體系結構風格(fēnggé)的選擇體系結構風格(fēnggé)的選擇次序絕大多數(shù)實際運行的系統(tǒng)都是幾種體系結構的復合:–在系統(tǒng)的某些部分采用一種體系結構而在其他的部分采用另外的體系,故而需要將復合幾種基本體系結構組合起來形成復合體系結構。–在實際的系統(tǒng)分析和設計中,首先將整個系統(tǒng)作為一個功能體進行分析和權衡,得到適宜的、最上層的體系結構;–如果該體系結構中的元素較為復雜,可以繼續(xù)進行分解,得到某一部分的局部體系結構。將焦點集中在系統(tǒng)的總體結構的考慮上,而避免較多的考慮使用的語言、具體的技術等實現(xiàn)細節(jié)上。共六十三頁1
體系結構風格的選擇風格選擇的基本思想:由粗到細的分解(fēnjiě)
基本的分析方法:功能和復雜 性的分解–橫向分解(fēnjiě):分層次–縱向分解:子系統(tǒng)、模塊–針對每一個分解后得到的模塊, 根據(jù)該問題領域的特性,選擇行 為模式(具體的體系結構風格)–構件、連接件設計橫向分層2縱向劃分3體系結構風格(行為模式)選擇——從大粒度風格入手,逐漸細化
4構件-連接件劃分共六十三頁
體系結構風格(fēnggé)的選擇SA風格選擇需考慮的因素技術因素:–(1)何種構件、連接件–(2)在運行時,構件之間的控制(kòngzhì)機制是如何被共享、分配和轉移–(3)數(shù)據(jù)如何通訊–(4)數(shù)據(jù)與控制如何交互性能因素:–可修改性
?算法的變化
?數(shù)據(jù)表示方式的變化
?系統(tǒng)功能的可擴展性–性能:?時空復雜性–可復用性共六十三頁軟件體系結構及應用(yìngyòng)基于經驗的SA風格選擇(xuǎnzé)原則共六十三頁體系結構風格(fēnggé)的選擇經驗(jīngyàn)法則(1)層次化的思想在任何系統(tǒng)中都可能得到應用;如果問題可分解為連續(xù)的幾個階段,那么考慮使用順序批處理風格或管道-過濾器風格–如果每個階段是遞增的,從而后序可在前序完成之前開始,那么就要使用管道-過濾器風格–如果問題涉及到連續(xù)數(shù)據(jù)流上的轉換,考慮使用管道-過濾器風格共六十三頁體系結構風格(fēnggé)的選擇經驗(jīngyàn)法則(2)如果核心問題是應用程序中數(shù)據(jù)的理解、管理與表示,那么考慮使用倉庫或者ADT/OO風格如果數(shù)據(jù)格式的表示可能發(fā)生變化,ADT/OO可限制這種變化所影響的范圍如果數(shù)據(jù)是持久存在的,使用倉庫結構–如果使用倉庫風格且輸入數(shù)據(jù)是無序的、執(zhí)行次序無法預先確定,使用黑板結構–如果使用倉庫風格且執(zhí)行次序由請求來決定、數(shù)據(jù)是高度結構化的,適用數(shù)據(jù)庫風格?如果系統(tǒng)存在很多異構的數(shù)據(jù)源,考慮使用聯(lián)邦數(shù)據(jù)庫風格;?如果追求數(shù)據(jù)存取的性能,考慮使用分布式數(shù)據(jù)庫風格。共六十三頁
體系結構風格的選擇經驗(jīngyàn)法則(3)
如果任務之間的控制流可預先設定、無須配置,那么考慮使用主程序-
子過程風格、OO風格 如果任務需要高度的靈活性與可配置性、松散耦合性,或者任務是被 動性的,那么考慮使用事件系統(tǒng)或C/S風格
–如果任務的產生者與接收者之間不能預先綁定在一起,使用基于事件的風格
–如果任務分為生產者與消費者,考慮C/S風格????如果(rúguǒ)追求客戶端的計算效率,考慮胖客戶端的C/S風格如果客戶端頻繁發(fā)生變化,考慮瘦客戶端的C/S風格(或B/S風格)如果服務器端的計算壓力過大,考慮使用服務器的集群風格如果無須中央服務器,使用點對點(P2P)風格共六十三頁體系結構風格(fēnggé)的選擇基于經驗(jīngyàn)的SA風格選擇經驗很重要,沒有不行;經驗的隨意性很大,很難科學地評價各種經驗的正確性;沒經過高度概括和總結的經驗需要后來者花費很長的時間和精力才能繼承,甚至可能失傳;經驗經常限制創(chuàng)新?!l(fā)揮想象力,創(chuàng)造新的體系結構風格共六十三頁軟件體系結構及應用(yìngyòng)案例(ànlì)分析KeyWordinContext(KWIC)共六十三頁題內關鍵詞索引簡稱KWIC,又稱上下文關鍵詞索引。是最早出現(xiàn)的機編索引,首先應用于1960年美國化學文摘社創(chuàng)辦的《化學題錄》。題內關鍵詞索引的標目在款目的中部,左右均為該標目的上下文;索引款目按位于款目中部作為標目的關鍵詞的字順排列。格式如:
KWIC的設計思想是:①文獻題名通常具有揭示文獻主題內容的作用,從題名中抽取的關鍵詞能有效地將用戶指向(zhǐxiànɡ)相關主題的文獻;②保留題名中關鍵詞前后的上下文,有助于說明關鍵詞的含義,可用作限定標目含義的說明語。
KWIC的編制步驟包括:①把經過人工處理的文獻題名(包括增補的關鍵詞)輸入計算機。②計算機用"非用詞表"剔除題名中的介詞、連詞、冠詞等,篩選出有檢索意義的關鍵詞。③將每個關鍵詞依次輪流用作索引標目,同時保留其上下文。若題名過長,可以截斷或移位。④編成索引款目,并進行編排加工,最后交付印刷。上述工序除第一步由人工完成外,其余皆由計算機完成。共六十三頁體系結構風格(fēnggé)的選擇KWIC:FunctionalRequirementsTheKWICindexsystem(KWIC索引(suǒyǐn)系統(tǒng))–接受一些行–每行有若干詞–每個詞由若干字符組成–每行都可以循環(huán)移位。重復地把第一個詞刪除,然后接到行末–
KWIC把所有行的各種移位情況按照字母表順序輸出共六十三頁Athirdwayforstylesto
體系結構風格(fēnggé)的選擇AcaseforKWIC
AthirdwayforstylestothirdwayforstylestoAwayforstylestoAthirdforstylestoAthirdwaystylestoAthirdwayfortoAthirdwayforstylesAthirdwayforstylestobecombinedistocombinedistobeelaborateonelevelofforstylestoAthirdwayistobecombinedbecombinedistoelaborateonelevelof
Input(輸入(shūrù))
becombinedisto combinedistobe istobecombined tobecombinedis
elaborateonelevelof onelevelofelaborate levelofelaborateone ofelaborateonelevelCircularshifts(循環(huán)移位)levelofelaborateoneofelaborateonelevelonelevelofelaboratestylestoAthirdwayforthirdwayforstylestoAtoAthirdwayforstylestobecombinediswayforstylestoAthird
Output(輸出)共六十三頁
體系結構風格(fēnggé)的選擇KWICusecase
GenerateCircularShift產生(chǎnshēng)循環(huán)移位SortOutput
排序ProvidesInput
提供輸入
<uses><uses>
ViewsOutput
產生輸出<uses>UserUser共六十三頁體系結構風格(fēnggé)的選擇KWIC:非功能性需求(xūqiú)可修改性–處理算法的變化?批處理vs.漸增式–數(shù)據(jù)表示方式的變化?行存儲,顯式vs.隱式變化–系統(tǒng)功能的可擴展性?e.g.,從數(shù)據(jù)庫或從UI輸入行?e.g.,對初始行從刪除,修改或增加操作性能–時空復雜性系統(tǒng)構件的可復用性–在何種程度上可以作為可重用的組件實體共六十三頁體系結構風格(fēnggé)的選擇KWIC解決方案Solution1:帶有共享數(shù)據(jù)(shùjù)的主程序-子過程體系結構Solution2:抽象數(shù)據(jù)類型風格Solution3:隱式調用風格Solution4:管道-過濾器風格共六十三頁軟件體系結構及應用(yìngyòng)Solution1:帶有共享數(shù)據(jù)(shùjù)的主程序-
子過程體系結構共六十三頁體系結構風格(fēnggé)的選擇Solution1:主程序-子過程(guòchéng)體系結構采用“主程序-子過程”風格、對系統(tǒng)進行功能分解,是最自然的想法,也是“面向過程的編程”的主要思路。–分為四個基本功能:輸入、移位、排序、輸出–主程序按次序調用這四個模塊–通過共享的數(shù)據(jù)存儲和無約束的讀-寫協(xié)議在模塊之間進行數(shù)據(jù)交換共六十三頁體系結構風格(fēnggé)的選擇Solution1:主程序-子過程(guòchéng)體系結構主程序子過程共享數(shù)據(jù)結構共六十三頁體系結構風格(fēnggé)的選擇過程(guòchéng)算法首先調用input函數(shù)來讀取和解析輸入文件并將其寫在chars_和line_index_數(shù)組中然后調用circularShift函數(shù),產生移位結果并寫入circular_shifts_數(shù)組中然后調用alphabetize函數(shù)對其進行排序,結果寫入alphabetized_數(shù)組中最后調用output函數(shù),輸出結果共六十三頁體系結構風格(fēnggé)的選擇Solution1:主程序-子過程(guòchéng)體系結構Advantages:–模塊之間的數(shù)據(jù)共享–不同的計算功能被隔離在不同的模塊中Disadvantages:–對數(shù)據(jù)存儲格式的變化將會影響幾乎所有的模塊–對處理流程的改變與系統(tǒng)功能的增強也很難適應,依賴于控制模塊內部的調用次序–這種分解也難以支持有效的復用共六十三頁軟件體系結構及應用(yìngyòng)Solution2:抽象數(shù)據(jù)類型共六十三頁體系結構風格(fēnggé)的選擇Solution2:抽象數(shù)據(jù)類型技術(jìshù)發(fā)展:–面向過程的結構化編程面向對象的編程采用OO的思想,數(shù)據(jù)和作用在數(shù)據(jù)上的讀寫操作被封裝為對象,主程序調用這些對象,形成控制流程;–數(shù)據(jù)不再被構件直接共享,而是被封裝在了對象中–每個對象提供了一個接口,允許其他對象通過該接口調用對該對象內封裝的數(shù)據(jù)的操作共六十三頁
體系結構風格(fēnggé)的選擇Solution2:抽象數(shù)據(jù)類型共六十三頁體系結構風格(fēnggé)的選擇Solution2:抽象數(shù)據(jù)類型LineStorageobject(存儲和處理(chǔlǐ)字符、單詞、行)Inputobject(負責從輸入文件中讀取數(shù)據(jù)并將其存儲在LineStorage對象中)CircularShifterobject(負責對LineStorage對象中存儲的數(shù)據(jù)進行循環(huán)移位)Alphabetizerobject(負責對循環(huán)移位后得到的數(shù)據(jù)進行排序)Outputobject(負責打印輸出排序后的數(shù)據(jù))Mastercontrolobject(主控制對象:負責控制其他各對象中方法的調用次序)共六十三頁體系結構風格(fēnggé)的選擇“輸出(shūchū)”對象主控制程序
“排序”對象ClassDiagram:SystemStatics
“行數(shù)據(jù)存儲”
對象共六十三頁
體系結構風格(fēnggé)的選擇SequenceDiagram:SystemDynamics主控制 程序(chéngxù)“輸入”“輸出”
對象對象“排序”
對象“循環(huán)“行數(shù)據(jù)移位”存儲”
對象對象共六十三頁體系結構風格(fēnggé)的選擇ClassKWIC//主對象(duìxiàng)KWIC構造五個對象實例LineStoragelines=newLineStorage();Inputinput=newInput();CircularShiftershifter=newCircularShifter();Alphabetizeralphabetizer=newAlphabetizer();Outputoutput=newOutput();//然后分別調用這五個對象實例的某些方法input.parse(file,lines);shifter.setup(lines);alphabetizer.alpha(shifter);output.print(alphabetizer);共六十三頁體系結構風格(fēnggé)的選擇Solution2:AbstractDataTypesAdvantages:–某一構件的算法(suànfǎ)與數(shù)據(jù)結構的修改不會影響其他構件–構件之間依賴性降低,提高了復用度Disadvantages:–不適合功能的擴展–為了增加新功能,要么修改已有的模塊,要么就加入新的模塊共六十三頁軟件體系結構及應用(yìngyòng)Solution3:隱式調用(diàoyòng)共六十三頁體系結構風格(fēnggé)的選擇Solution3:隱式調用(diàoyòng)為了降低各模塊之間的耦合度,提高復用性能,將模塊之間的“直接調用”改為“隱式調用”——事件驅動的體系結構風格。采用與Solution1相似的方式:–四個功能模塊–共享數(shù)據(jù)不同之處:–共享數(shù)據(jù)并不直接對外暴露數(shù)據(jù)格式,而是借鑒了Solution2中的方式,對數(shù)據(jù)進行封裝,通過接口向外暴露對數(shù)據(jù)的操作;–各功能模塊之間不再通過主程序來控制,而是事件驅動。共六十三頁體系結構風格(fēnggé)的選擇Solution3:隱式調用(diàoyòng)共六十三頁體系結構風格(fēnggé)的選擇回憶:事件系統(tǒng)的兩種實現(xiàn)(shíxiàn)方式SystemswithseparatedispatchermoduleSystemswithoutacentraldispatchermodule共六十三頁體系結構風格(fēnggé)的選擇Solution3:隱式調用(diàoyòng)TwoLineStoragemodules–第一個LineStorage模塊負責保存最初輸入的lines–第二個LineStorage模塊負責保存所有經過循環(huán)移位/排序后得到的linesInput:負責從輸入文件讀取信息并保存在第一個LineStorage模塊中共六十三頁
體系結構風格(fēnggé)的選擇Solution3:隱式調用(diàoyòng)CircularShifter:負責移位并將結果存儲在第二個lineStorage模塊中Alphabetizer:負責對移位結果進行排序Output:負責產生輸出結果Mastercontrol:負責系統(tǒng)的全局控制)共六十三頁
體系結構風格(fēnggé)的選擇事件(shìjiàn)分發(fā)策略該案例中,使用觀察者模式來處理事件兩個LineStorage模塊被實現(xiàn)為“被觀察者”–
CircularShifter和Alphabetizer模塊被實現(xiàn)為“觀察者”–CircularShifter是第一個LineStorage模塊的觀察者,
而Alphabetizer是第二個LineStorage模塊的觀察者。共六十三頁體系結構風格(fēnggé)的選擇運行(yùnxíng)時事件相互作用CircularShifter向第一個LineStorage模塊注冊,以表明興趣當有新行被加入到第一個LineStorage模塊時,它將發(fā)出一個事件CircularShifter模塊接收到該事件作為對該事件的響應,CircularShifter模塊對新加入的行進行循環(huán)移位,并將產生的結果寫入第二個LineStorage模塊中共六十三頁體系結構風格(fēnggé)的選擇運行(yùnxíng)時事件相互作用Alphabetizer模塊向第二個LineStorage模塊注冊,表明興趣當有新的循環(huán)移位行加入到第二個LineStorage模塊時,它發(fā)出事件Alphabetizer模塊接收到該事件作為對該事件的響應,Alphabetizer對這些循環(huán)移位行進行排序共六十三頁體系結構風格(fēnggé)的選擇Solution3:ImplicitInvocationObserverableObserver共六十三頁
體系結構風格(fēnggé)的選擇Solution3:ImplicitInvocation優(yōu)點:功能擴展(kuòzhǎn)比較容易–新模塊可直接被加到系統(tǒng)中,只需將其注冊到事件系統(tǒng)中即可–數(shù)據(jù)通過接口訪問,數(shù)據(jù)格式的變化不會影響其他部分–各模塊之間的調用隱式化,從而復用性提高共六十三頁體系結構風格(fēnggé)的選擇Solution3:ImplicitInvocation難以控制(kòngzhì)各模塊之間的處理次序使用更多的存儲空間共六十三頁軟件體系結構及應用(yìngyòng)Solution4:管道(guǎndào)-過濾器共六十三頁
體系結構風格(fēnggé)的選擇Solution4:管道(guǎndào)-過濾器使用管道-過濾器風格–四個過濾器:輸入、移位、排序、輸出–每個過濾器處理數(shù)據(jù),然后將結果送至下一個過濾器–控制機制是分布式的:只要有數(shù)據(jù)傳入,過濾器即開始工作–過濾器之間的數(shù)據(jù)共享被嚴格限制在管道傳輸共六十三頁體系結構風格(fēnggé)的選擇Solution4:PipesandFilters共六十三頁11體系結構風格(fēnggé)的選擇Solution4:管道(guǎndào)-過濾器Filters:–Inputfilter(“輸入”過濾器:從數(shù)據(jù)源讀取輸入文件,解析格式,將行寫入輸出管道)–CircularShifterfilter(“循環(huán)移位”過濾器)–Alphabetizerfilter(“排序”過濾器)–Outputfilter(“輸出”過濾器)Pipe:–in_cspipe–cs_alpipe–al_oupile共六十三頁體系結構風格(fēnggé)的選擇Solution4:管道(guǎndào)-過濾器過程流非常直觀支持復用–過濾器的功能相互隔離
–新功能容易加入–容易修改共六十三頁11體系結構風格(fēnggé)的選擇Solution4:管道(guǎndào)-過濾器無法支持交互式系統(tǒng)–例如,為了刪除某行,就必須有一些永久共享存儲,但這就違反了這種方法的基本原則空間復雜性高共六十三頁11體系結構風格(fēnggé)的選擇KWIC:ComparisonofSolutions共六十三頁案例(ànlì)2
體系結構風格(fēnggé)的選擇案例2Tektronix公司儀器軟件共六十三頁
體系結構風格(fēnggé)的選擇問題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 原春七年級地理下冊 第八章 第三節(jié) 撒哈拉以南的非洲教學實錄1 (新版)新人教版
- 學業(yè)水平考試的目標要求
- 物流配送信息管理系統(tǒng)
- 土木工程認識實習報告合集9篇
- 紅樓夢讀書心得300字8篇
- 2024-2025學年高中歷史 第一單元 古代中國經濟的基本結構與特點 第3課 古代商業(yè)的發(fā)展新課教學實錄1 新人教版必修2
- 2024年版制造業(yè)臨時工雇傭合同3篇
- 川教版(2024)小學信息技術三年級上冊《跨學科主題活動-在線健康小達人》教學實錄
- 2024年秋七年級歷史上冊 第19課 北魏政治和北方民族大交融教學實錄 新人教版
- 2024年親子教育雜志訂閱與家庭教育指導合同3篇
- 八大浪費及IE七大手法培訓
- 錐形彈簧的計算公式
- 家用電器行業(yè)海信系專題報告系列一:自主品牌+品牌并購出海業(yè)務揚帆遠航
- 普通高校本科招生專業(yè)選考科目要求指引(通用版)
- 中考生物試驗操作評分參考標準
- 國家開放大學電大本科《國際私法》期末試題及答案(n試卷號:1020)
- 2023-2024學年湖北省黃岡市小學數(shù)學五年級上冊期末深度自測試卷
- 房性早搏演示課件
- 2010途觀tiguan轎車維修手冊車身
- YY/T 0698.10-2009最終滅菌醫(yī)療器械包裝材料第10部分:可密封組合袋、卷材和蓋材生產用涂膠聚烯烴非織造布材料要求和試驗方法
- GB/T 11139-1989餾分燃料十六烷指數(shù)計算法
評論
0/150
提交評論