軟件需求分析與設計-框架設計與部署.ppt_第1頁
軟件需求分析與設計-框架設計與部署.ppt_第2頁
軟件需求分析與設計-框架設計與部署.ppt_第3頁
軟件需求分析與設計-框架設計與部署.ppt_第4頁
軟件需求分析與設計-框架設計與部署.ppt_第5頁
已閱讀5頁,還剩74頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

軟件需求分析與設計 框架設計與部署,2019/9/4,2,框架設計與部署,使用模式設計持久性框架 UML部署圖和構件圖 架構的文檔化:UML和N+1視圖模型,2019/9/4,3,使用模式設計持久性框架,目標 使用模板方法 狀態和命令模式來設計部分框架 介紹對象關系映射中的一些問題 使用虛代理實現的滯后具體化,2019/9/4,4,持久性,持久性對象(persistent object) 是指需要持久性存儲的對象 存儲機制 對象數據庫 關系數據庫 其他存儲格式 XML, Palm OS PDB文件、層次結構數據庫 持久性框架(persistent framwork) 是一組通用的,可復用的可擴展的類型,它提供支持持久性對象的功能 持久性服務 由框架創建 與關系數據庫結合使用O-R映射服務,2019/9/4,5,框架,一組相關的類和接口相互協作,為邏輯子系統的核心和不變部分提供服務 包含具體和抽象類,這些類定義了需要遵循的接口,需要參與的對象交互以及其他不變式 通常(但不是必須)要求框架的使用者去定義已有框架的子類來利用、定制或擴展框架服務 包含即有抽象方法又有具體方法的抽象類 依賴于好萊塢原則,即“不要給我們打電話,我會給您打電話的”,用戶定義的類將從預定義的框架類接收消息,這通常使通過實現超類的抽象方法來實現的 框架是可重用的,2019/9/4,6,持久性服務和框架的需求,從持久存儲裝置中存儲和提取對象 提交和回滾事務,2019/9/4,7,關鍵思想,映射(mapping) 在類和持久性存儲之間,對象屬性和記錄的域之間必須有某種映射關系 對象標識(Object identity) 為了方便將記錄域對象關聯起來,確保沒有不適當的重復,記錄和對象必須有唯一的對象標識 數據庫映射器(database mapper) 負責具體化和虛化的純虛構數據庫映射器 具體化和虛化(materialization and Dematerialization) 具體化是指將持久性存儲中數據的非對象表示轉換為對象 虛化是指與具體化相反的動作,2019/9/4,8,關鍵思想,緩存(cache) 持久性服務為提高性能緩存具體化后的對象 對象的事務狀態(transation state of Object) 就對象與當前事務而言,了解對象狀態是有用的, 事務操作(transaction operation) 提交和回滾操作 滯后具體化(lazy materialization ) 并非一開始就具體化所有對象,只有當需要時才具體化特定實例 虛代理(virtual proxy) 滯后具體化可以通過使用稱為虛代理的智能引用來實現,2019/9/4,9,模式:將對象表示為表,對象和表的映射,2019/9/4,10,UML數據建模簡檔,2019/9/4,11,模式:對象標識符OID,對象表示符連接了對象和記錄,2019/9/4,12,通過外觀訪問持久服務,PersistenceFacade,2019/9/4,13,基于元數據的數據庫映射器,2019/9/4,14,在GUI框架中使用模板方法模式,2019/9/4,15,使用模板方法模式的具體化,用于映射器對象的模板方法,2019/9/4,16,使用模板方法模式的具體化,復寫鉤子方法,2019/9/4,17,使用模板方法模式的具體化,再次使用模板方法強化代碼,2019/9/4,18,使用模板方法模式的具體化,持久性框架,2019/9/4,19,UML中的安全方法,2019/9/4,20,使用MapperFactory配置Mapper,class MappperFactory public Map getAllMappers() class persisitenceFacde private java.utile.Map mappers = MapperFactory.getInstance().getAllMappers(); 工廠能夠通過讀取系統屬性找到需要初始化的IMapper類,2019/9/4,21,模式:緩存管理,由數據庫映射器負責維護緩存。如果每個持久性對象使用不同的映射器,那么每個映射器可以維護自己的緩存 當對象被具體化時,對象被置入緩存,以OID為鍵,2019/9/4,22,在一個類中合并和隱藏 SQL語句,將所有的SQL操作合并到一個單獨的純虛構類RDOperations RDB映射器類與該類協作獲取數據庫記錄或記錄集 RDBOperation類的接口: class RDBOperaons public ResultSet getProductionData(OID oid) pubic ResultSet getSaleData(OID oid) 優點 易于維護,并且有利于專家進行性能調優 封裝了訪問數據的方法和細節,2019/9/4,23,示例,class RDBOperaons public ResultSet getProductionData(OID oid) pubic ResultSet getSaleData(OID oid) class ProductionDescriptionRDBMapper extends AbstractPersistenceMapper Protected Object getObjectFromStorage(OID oid) resultSet rs = RDBOperations.getInstance().getProductDescriptionData(oid); ProductionDescription ps = new ProductionDescription(); ps.setPrice(rs.getDouble(“PRICE”); ps.setOID(oid); return ps; ,2019/9/4,24,事務狀態和狀態模式,PersistentObject的狀態圖,持久性對象可以被插入、刪除和修改 對持久性對象的操作,不會立即導致數據庫的更新,必須要明確的進行提交操作 對操作的行營以來于對象的事務狀態,2019/9/4,25,持久對象,2019/9/4,26,持久對象,2019/9/4,27,狀態模式,語境/問題 對象的行為依賴于它的狀態,而它的方法中包含能夠反映依賴狀態的條件動作的case邏輯。是否存在替代條件邏輯的方法 解決方案 給每一個狀態創建狀態類,并實現一個公共的接口。將語境對象中的依賴于狀態的操作委派給其當前的狀態對象。確保語境對象總是指向反映其當前狀態的狀態對象,2019/9/4,28,應用狀態模式,2019/9/4,29,使用命令模式設計事務,事務數據庫任務的順序可以影響其成敗 假設數據庫中有參照完整性約束,當表A的一條記錄被更新時,則數據庫要求表中的記錄已經存在 假設事務包含表B中插入記錄的任務和一個更新表A中記錄的任務,如果更新任務在插入前執行,將會引起參照完整性錯誤,2019/9/4,30,命令模式,語境/問題 如何處理需要諸如排序(優先級)、排隊、延遲、記錄日志或重做等功能的請求或任務? 解決方案 為每一個任務創建一個類,并實現共同的接口,2019/9/4,31,用于數據庫操作的命令,2019/9/4,32,使用虛代理實現滯后具體化,滯后具體化 推遲“子”對象的具體化被稱為滯后具體化 可以通過虛代理來實現滯后具體化 虛代理 是其他對象的代理,當它第一次被引用時具體化該對象,這樣就實現了滯后具體化 虛代理是輕量級對象,代表了被具體化或尚未被具體化的“真實對象”,2019/9/4,33,使用虛代理實現之后具體化,Manufacture的虛代理,2019/9/4,34,非滯后具體化解決方法,/MANUFACTUTER的滯后具體化 Class ProductDesriptionRDBMapper externs AbstractPersisitenceMapper Protected Object getObjectFromStorage(OID oid) ResultSet rs = RDBOperation.getInstance().getProductDescriptionData(oid); productDescription ps = new productDescription(); ps.setPrice(rs.getDouble(“PRICE”); /這里是本質 String manufactureForeignKey = rs.getString(“MANU_OID”); OID manuOID = new OID(manufactureerForeignKey); ps.setManufacturer(IManufaturer)PersistenceFacade.getinstance().get(ManuOID, Manufaturwe.class); ,2019/9/4,35,滯后具體化解決方法,/MANUFACTUTER的滯后具體化 Class ProductDesriptionRDBMapper externs AbstractPersisitenceMapper Protected Object getObjectFromStorage(OID oid) ResultSet rs = RDBOperation.getInstance().getProductDescriptionData(oid); productDescription ps = new productDescription(); ps.setPrice(rs.getDouble(“PRICE”); /這里是本質 String manufactureForeignKey = rs.getString(“MANU_OID”); OID manuOID = new OID(manufactureerForeignKey); ps.setManufacturer(new ManufacturerProxy(manuOID); ,2019/9/4,36,虛代理的實現,2019/9/4,37,如何在表中表示關系,一對一關聯 在一個或者兩個表中放入OID外鍵,表示關系中的對象 一對多關聯 創建關聯表來記錄關系中的每一個對象的OID 多對多關聯 創建關聯表來記錄關系中的每個對象的OID,2019/9/4,38,PersistentObject超類和關注分離,問題:創建抽象技術服務超類Persistent,所有持久性對象都要集成于此。該類通常為持久性定義了諸如唯一OID這樣的屬性,以及向數據庫保存的方法,2019/9/4,39,UML部署圖和構件圖,部署圖 構件圖,2019/9/4,40,部署圖,最基本的元素是節點 設備節點,具有處理和存儲能力,可執行軟件的物理計算資源 執行環境節點(EEN),在外部節點中運行的軟件計算資源,其自身可以容納和執行其他可執行軟件元素 操作系統 虛擬機 數據庫引擎 Web瀏覽器 工作流引擎 Servlet容器或EJB容器,2019/9/4,41,UML部署圖,節點之間的一般連接表示一種通信路徑,上面可以標記協議 節點可以包含并顯示制品,具體物理元素 部署圖中通常顯示的是一組實例的示例,具體實例的名稱帶有下劃線,2019/9/4,42,部署圖,2019/9/4,43,構件圖,構件 表示封裝了其內容的系統模塊,它在其環境中的表現形式可以被替代 構件通過所提供的和所需要的接口定義了其行為 如果構件作為類型,那么它的一致性是通過這些所提供的和所需要的接口來定義的 構件建模思想 接口是重要的 它是自包容的和可替換的模塊,2019/9/4,44,UML構件,2019/9/4,45,架構的文檔化:UML和N+1視圖模型,目標 基于N+1視圖模型創建有用的架構文檔 使用各種類型的UML圖,2019/9/4,46,SAD和架構視圖,軟件架構文檔SAD 描述有關架構的總體想法,包含架構分析的關鍵決策 可以幫助開發人員理解系統的基本概念 架構視圖 定義 從制定視角出發的系統架構視圖;其主要關注結構、模塊性、基本構件和主要控制流等方面 架構視圖也應該解釋架構為何如此 架構視圖是從某個角度觀察系統的窗口,只強調關鍵信息或想法,忽略其他 架構視圖是交流、教育和思考的工具,2019/9/4,47,SAD和架構視圖,創建架構視圖 在系統創建之后,作為總結和面向未來開發者的學習輔助材料 在某個迭代里程碑之后進行創建,作為當前開發團隊和新成員的學習輔助材料 在早期迭代階段,預測地創建架構視圖,這樣能夠對創造性的設計工作產生幫助 N+1(41)視圖模型 邏輯 進程 部署 數據 (“1”)用例視圖,2019/9/4,48,架構視圖的細節,邏輯視圖 最重要的層、子系統、包、框架、類、接口等概念性組織。概括了主要軟件元素的功能 展示了描述系統關鍵方面的重要用例場景 UP設計模型的視圖,是使用UML包、類和交互圖的可視化 進程視圖 進程和線程。描述了他們的職責、協作以及分配給他們的邏輯元素 UP設計模型的視圖,是使用UML類圖和交互圖的可視化,其中使用了UML進程和線程表示法,2019/9/4,49,架構視圖的細節,部署視圖 進程和構件在處理節點上的物理部署以及節點之間的網絡配置 UP部署模型的視圖,使用UML部署的可視化 數據視圖 數據流、持久性數據模式、對象與持久性數據之間的模式映射,對象到數據庫、存儲過程以及觸發器的映射機制 UP數據模型的部分視圖,使用UML類圖的可視化用于描述數據模型 用UML活動圖表示數據流,2019/9/4,50,架構視圖的細節,安全視圖 概述了安全模式和架構中實施安全的控制點 可以作為UP部署模型的視圖,使用UML部署圖的可視化,突出了關鍵安全控制點和相關文件 實現視圖 實現模型 包含源代碼、可執行文件等。其中有兩部分: 可執行文件 用于創建可執行文件的制品 實現模型包括Web頁面、DLL、可執行文件、源代碼等 UP實現模型的視圖,用文字或者UML包圖和構件圖表示,2019/9/4,51,架構視圖的細節,開發視圖 此視圖概括開發者創建開發環境時需要知道的信息 用例視圖 概括了架構上最為重要的用例和他們的非功能性需求,也就是說,通過其實現,那些用例闡述了與重要架構相關的事物,或大量架構元素的實現 UP用例模型的視圖,用文字或者UML用例圖來表達。也可以包含用UML交互圖表示的用例實現,2019/9/4,52,軟件架構文檔,架構表示 (概括介紹文檔中如何描述架構,例如:使用技術備忘錄和架構視圖,對于技術備忘錄或視圖不熟悉的人有用,注意并非所有視圖都是必要的) 架構因素 (參考補充性規格說明) 架構決策 (概括決策的一組技術備忘錄) 邏輯視圖 (主要元素的UML包圖和類圖),對主要構件的大尺度結構和功能的解說) 部署視圖 (UML部署圖顯示了節點以及進程和構件的分配。有關網絡的注解) 進程視圖 (解釋系統進程和線程的UML類圖和交互圖,基于交互的線程和進程對此進行組織,有關進程間的通訊如何工作的解釋) 用例視圖 (簡要概括了構架上最重要的用例,某些構架上重要的用例實現或場景的UML交互圖,以及在圖中解釋如何描述主要構架元素的注釋) 其他視圖 ,2019/9/4,53,軟件架構文檔:Nextgen POS項目,簡介:架構表示 本SAD從多個視圖描述構架,包括 邏輯視圖:簡要的定義 數據視圖: 進程視圖: 除此以外,SAD引用了補充規格說明,您可以在其中發現記錄于因素表中的具有重要架構意義的需求,同時,SAD也以稱為技術備忘錄的形式概括了關鍵架構的決策,技術備忘錄的篇幅為一頁,描述了決策及其動機 注意,每一個視圖都有相關動機的討論,當需要修改架構時,這些討論對您會有幫助 架構因素 參見33.6節補充規格說明書中重要架構需求的因素表 架構決策(技術備忘錄),2019/9/4,54,可靠性從遠程服務失敗中恢復,解決方案概要:使用服務查找以實現其位置的透明性,使用本地服務失敗中恢復 因素 從遠程服務失敗中的健壯恢復(稅金計算機,庫存等) 從遠程產品(例如描述和定價)數據庫訪問失敗中的健壯恢復 解決方案 使用在ServicesFactory中創建的適配器以實現關于服務位置的防止變異。如果可能,提供遠程服務的本地實現,該實現通常只具備簡化的和受限的行為。例如,本地稅金計算器可能使用固定稅率。本地產品信息數據庫緩存了部分最常用的產品信息。重新連接時將進行庫存的更新 參見“第三方服務的適應性”技術備忘錄,其中記錄了本解決方案的可適應性方面,因為遠程服務的實現對于每個安裝都可能有所不同 為了滿足盡快重新連接遠程服務的質量場景,對該服務使用智能代理對象,即在每個服務調用時,測試遠程服務是否恢復,如果可能則重定向這些調用,2019/9/4,55,可靠性從遠程服務失敗中恢復,動機 零售上不想停止銷售!因此,如果NextGen POS提供了這一程度的可靠性和可恢復性,它將會是很具有吸引力的產品,因為目前沒有一個競爭對手可以體供這一能力。客戶端僅有很少的資源,因此,只能存在少量的產品信息緩存,因此實際上無法在客戶端復制第三方稅金計算器。當將來客戶希望并能夠永久復制服務時,該解決方案也支持這樣的進化點,例如在每個客戶端安裝稅金計算器 未解決問題 無 其他可供選擇的方案 購買遠程信用卡授權服務的“金牌”質量服務協議來提高可靠性。可行,但關于昂貴。,2019/9/4,56,邏輯視圖,討論和動機 使用了經典的分層架構,由于系統操作比較簡單,沒有過多的工作流協作,因此在UI層和領域層之間沒有加入會話對象的應用層 Register類是接收來自UI層的系統操作請求的首要控制者,2019/9/4,57,邏輯視圖中的包圖,2019/9/4,58,部署視圖,討論和動機 為了提高效率和可能性,產品數據庫,庫存系統,稅金計算器被部署在不同的計算機上 考慮到高額的許可費,稅金計算器以集中方式實現,而不是復制在每個POS終端本地復制服務。,2019/9/4,59,部署視圖,2019/9/4,60,數據視圖,討論和動機 使用Hibernate O-R映射系統把從產品數據庫中讀取的數據轉換為Java對象 使用定制的NextGen適配器對銷售數據進行轉換并寫入ERP數據庫,通常ERP系統需要XML格式 使用定制的NextGen適配器將發往外部支付授權服務的支付請求數據轉換為廣為適應的VISA格式(和協議),2019/9/4,61,處理銷售場景的數據流視圖,2019/9/4,62,用例視圖,討論和動機 處理銷售是架構上的最重要的用例,通過此用例,可以解決大部分關鍵架構問題,2019/9/4,63,處理銷售場景的部分實現,2019/9/4,64,與Struts相關的重要層和包,2019/9/4,65,struts中的MVC角色,2019/9/4,66,Struts框架的熱點,2019/9/4,67,人機交互的設計,人機交互部分的需求分析 人機界面的設計準則 人機界面的OO設計 可視化編程環境下的人機界面設計,2019/9/4,68,人機交互部分的需求分析,分析活動者與系統交互的人 列舉所有的人員活動者 調查研究 區分人員類型 熟練程度 職業 與系統的關系 年齡 統計各類人員的比例 了解使用者的主觀需求,2019/9/4,69,人機交互部分的需求分析,從Use case 分析人機交互 在書寫方式上強調明確區分活動的行為和系統的行為,活動者的行為向左對其,系統的行為向右對齊 引入控制語句,括號等結構成分 對Use case用例程度,要求活動者與系統交互過程中的每一個回合都不要省略,收銀員收款 輸入開始本次收款的命令: 輸出提示信息: For 顧客選購的每種商品do 輸入商品編號: if 此種商品多余一件 then 輸入商品數量 End if 打印商品編號、名稱、 數量、單價、總價 輸入顧客交來的款數 打印交款數及找回款數,2019/9/4,70,人機交互部分的需求分析,人機交互的細化 輸入的細化 輸入步驟的細化 輸入設備的選擇 輸入信息表現形式的選擇 輸出的細化 信息類型 提示信息 計算結果 反饋信息 輸入步驟的細化 輸入設備的選擇 輸入信息表現形式的選擇 分析異常事件的人機交互,2019/9/4,71,命令的組織,命令類型 基本命令,使用一項獨立的系統功能命令 命令步,在執行一項獨立的系統功能的命令過程種所包含的具體輸入步驟 高層命令,如果一條命令是在另一條命令的引導下被選中的,則后者稱作前者的高層命令 組織措施 把復雜命令進行分解成一系列子命令 把一組相關命令組成一個命令組,2019/9/4,72,命令的組織,基本命令結構 線性結構 樹性結構 網狀結構 組合命令結構 按功能 按所屬子系統 多人機界面的命令組織 異常命令的組織 輸出信息的組織結構,2019/9/4,73,人機界面的設計準則,使用簡便 一致性 啟發性 減少人腦記憶的負擔 減少重復的輸入 容錯性 及時反饋 其他,2019/9/4,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論