




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程軟件工程第8章進行體系結構設計第8章進行體系結構設計主要內容軟件體系結構數據設計體系結構風格和模式體系結構設計評估可選的體系結構設計映射數據流到軟件體系結構小結主要內容軟件體系結構進行體系結構設計體系結構設計描述了建立計算機系統(tǒng)所需的數據結構和程序構件。它需要考慮系統(tǒng)采取的體系結構風格,系統(tǒng)組成構件的結構、性質,以及所有體系結構構件之間的相互關系。進行體系結構設計體系結構設計描述了建立計算機系統(tǒng)所需的數據結進行體系結構設計盡管軟件工程師能夠設計數據和體系結構,但是在建造大型復雜系統(tǒng)的時候,數據和體系結構的設計往往由專家來完成。數據庫或者數據倉庫設計者為系統(tǒng)創(chuàng)建數據體系結構。”系統(tǒng)體系結構設計師“為系統(tǒng)工程和軟件需求分析中導出的需求選擇合適的體系結構風格。進行體系結構設計盡管軟件工程師能夠設計數據和體系結構,但是在進行體系結構設計人們不能在沒有圖紙的情況下建房子,同樣也不能通過勾畫出房子的管道布局而開始繪制房屋的藍圖。在開始考慮細節(jié)之前,需要關注整體視圖——房子本身。這就是體系結構設計需要做的事情——它為你提供整體的視圖并保證得到正確的理解。進行體系結構設計人們不能在沒有圖紙的情況下建房子,同樣也不進行體系結構設計體系結構設計始于數據設計,然后導出系統(tǒng)體系結構的一個或者多個表示。對可選的體系結構風格或模式進行分析,以導出最適合于客戶需求和質量屬性的結構。一旦選定,使用體系結構設計方法對體系結構進行精化。在體系結構設計過程中,將創(chuàng)建一個包括數據架構和程序結構的體系結構模型。此外,還需描述構件的性質以及交互關系。進行體系結構設計體系結構設計始于數據設計,然后導出系統(tǒng)體系結進行體系結構設計設計通常被描述為一個多步過程,其主要任務是從需求信息中綜合出數據的表示、程序結構、接口特征和過程細節(jié)。設計是由信息驅動的。軟件設計方法都是通過仔細考慮分析模型的三個域而得到的。因此,信息、功能和行為三個域是創(chuàng)建軟件設計的指南。體系結構設計是構建軟件的初始藍圖。進行體系結構設計設計通常被描述為一個多步過程,其主要任務是從軟件體系結構從第一個程序被劃分成模塊開始,軟件系統(tǒng)就有了體系結構。同時,程序員已經開始負責模塊間的交互和模塊裝配的全局屬性。從歷史的觀點看,體系結構隱含了很多內容——實現的偶然事件或先前遺留系統(tǒng)。好的軟件開發(fā)人員經常采用一個或者多個體系結構模式作為系統(tǒng)組織策略,但是他們只是非正式地使用這些模式,并且在最終系統(tǒng)中沒有將這些模式清楚地體現出來。軟件體系結構從第一個程序被劃分成模塊開始,軟件系統(tǒng)就有了體系什么是體系結構一個程序和計算系統(tǒng)軟件體系結構是指系統(tǒng)的一個或者多個結構。結構中包括軟件的構件,構件的外部可見屬性以及它們之間的相互關系。體系結構并非可運行軟件。它是一種表達,使軟件工程師能夠:(1)分析設計在滿足規(guī)定需求方面的有效性;(2)在設計變更相對容易的階段,考慮體系結構可能的選擇方案;(3)降低與軟件構造相關聯(lián)的風險。什么是體系結構一個程序和計算系統(tǒng)軟件體系結構是指系統(tǒng)的一個或什么是體系結構在體系結構設計的環(huán)境中,軟件構件可以簡單到程序模塊或者面向對象的類,也可以擴充到包含數據庫和能夠完成客戶與服務器網絡配置的“中間件”。本教材中,軟件體系結構的設計考慮了設計金字塔中的兩個層次——數據設計和體系結構設計。數據設計使我們表示出傳統(tǒng)系統(tǒng)中體系結構的數據構件和面向對象系統(tǒng)中類的定義,體系結構設計則主要關注軟件構件的結構、屬性和交互作用。什么是體系結構在體系結構設計的環(huán)境中,軟件構件可以簡單到程序為什么體系結構如此重要[BAS03]給出了軟件體系結構之所以重要的三個關鍵原因:軟件體系結構的表示有助于對計算機系統(tǒng)開發(fā)感興趣的各方開展交流。體系結構突出了早期設計決策,這些決策對隨后的所有軟件工程工作有深遠的影響,同時對系統(tǒng)作為一個可運行實體的最后成功有重要作用。體系結構“構建了一個相對小的,易于理解的模型,該模型描述了系統(tǒng)如何構成以及其構件如何一起工作”。體系結構設計模型和包含在其中的體系結構模式都是可以傳遞的,即體系結構的風格和模式可以被應用于其他系統(tǒng)的設計中,并且表示了一組使軟件工程師能以可預見的方式描述體系結構的抽象。為什么體系結構如此重要[BAS03]給出了軟件體系結構之所以數據設計數據設計是把在分析模型中定義的數據對象轉化成軟件構件級的數據結構,并且在必要時轉化為應用程序級的數據庫體系結構。在某些情況下,必須為一個新系統(tǒng)專門設計和建立數據庫。數據設計數據設計是把在分析模型中定義的數據對象轉化成軟件構件體系結構級的數據設計當今,大大小小的業(yè)務均充斥著數據,甚至一個中型規(guī)模企業(yè)擁有為多個應用系統(tǒng)提供服務的幾十個數據庫。問題在于如何從這樣龐大的數據環(huán)境中提取有用的信息,特別當需要的信息是功能交叉時。IT界開發(fā)出了數據挖掘技術,也稱為數據庫中的知識發(fā)現,該技術遍歷現有的數據庫以試圖抽取出合適的業(yè)務級信息。另一種可選的解決方案稱為數據倉庫,它是一個獨立的數據環(huán)境,但包含了某業(yè)務使用的所有數據。體系結構級的數據設計當今,大大小小的業(yè)務均充斥著數據,甚至一構件級的數據設計構件級的數據設計關注于那些被一個或者多個軟件構件直接訪問的數據結構的表示。[WAS80]提出了以下數據規(guī)格說明原則:1.應用于功能和行為的系統(tǒng)分析原則也可應用于數據。同樣應該開發(fā)和評審數據流和數據內容的表示,標識數據對象,還應該考慮其他可選的數據組織結構,評估數據模型對軟件設計的影響。2.標識所有數據結構及其完成的操作。設計一個高效的數據結構,必須考慮其上的操作。把屬性和操作封裝在一個類中滿足這個原則。構件級的數據設計構件級的數據設計關注于那些被一個或者多個軟件構件級的數據設計3.應該建立定義數據對象內容的機制,并且用于定義數據及其操作。類圖定義包含在類中的數據項和應用到這些數據項上的方法。4.低層的數據設計決策應該延遲到設計過程的后期。數據設計可以采用逐步求精的過程,所有的數據組織可以在需求分析階段定義,在數據設計工作中精化,在構件級設計階段刻畫細節(jié)。構件級的數據設計3.應該建立定義數據對象內容的機制,并且用于構件級的數據設計5.只有那些直接使用數據結構內部數據的模塊才能夠看到該數據結構的表示。信息隱蔽概念以及相關的耦合概念為軟件設計質量的評估提供了依據。6.應該開發(fā)一個由有用的數據結構及其操作組成的庫。類庫即可實現這個目標。7.軟件設計和程序設計語言應該支持抽象數據類型的規(guī)格說明和實現。如果沒有辦法對所選用于實現的編程語言中的結構進行直接說明,那么復雜數據結構的實現將變得非常困難。構件級的數據設計5.只有那些直接使用數據結構內部數據的模塊才體系結構風格和模式建筑師使用體系結構(建筑風格)作為描述機制,將該房子和其他風格的房子區(qū)分開來。但更重要的是,體系結構風格也是建筑的樣板。必須進一步規(guī)定房子的細節(jié),具體說明它的最終尺寸,進一步給出定制的特征,確定建筑材料等。實際上是建筑風格指導了建筑師的工作。體系結構風格和模式建筑師使用體系結構(建筑風格)作為描述機制體系結構風格和模式為計算機系統(tǒng)建造的軟件也展示了眾多體系結構風格中的一種。每種風格描述一種系統(tǒng)類別,包括:(1)一組構件完成系統(tǒng)需要的某種功能;(2)一組連接器,它們能使構件間實現“通信、合作和協(xié)調”;(3)約束,定義構件如何集成為一個系統(tǒng);(4)語義模型,它能使設計者通過分析系統(tǒng)的構成成分的性質來理解系統(tǒng)的整體性質。體系結構風格和模式為計算機系統(tǒng)建造的軟件也展示了眾多體系結構體系結構風格和模式一種體系結構風格就是一種在整個系統(tǒng)設計上面的變換。它的目的就是為系統(tǒng)的所有構件建立一個結構。在對已有體系結構進行再工程時,強制采用一種體系結構風格會導致軟件結構的根本性改變,包括對構件功能的再分配。體系結構風格和模式一種體系結構風格就是一種在整個系統(tǒng)設計上面體系結構風格和模式體系結構模式也對體系結構的設計施加一種變換。然而,體系結構模式與體系結構風格在許多基本方面存在不同:(1)體系結構模式涉及的范圍要小一些,它更多集中在體系結構的某一局部而不是體系結構的整體;(2)模式在體系結構上施加規(guī)則,描述了軟件是如何在基礎設施層次上處理某些功能性方面的問題;(3)體系結構模式傾向于在系統(tǒng)結構的環(huán)境中處理特定的行為問題。模式可以與體系結構風格結合起來,用于建立整個系統(tǒng)結構的外形。體系結構風格和模式體系結構模式也對體系結構的設計施加一種變換體系結構風格的簡單分類以數據為中心的體系結構。數據存儲駐留在這種體系結構的中心,其他構件會經常訪問數據存儲,并對存儲中的數據進行更新、增加、刪除或者修改。圖8-1描述了一個典型的以數據為中心的體系結構風格。在某些情況下存儲庫是被動的,即客戶軟件獨立于數據的任何變化或其他客戶軟件的動作而訪問數據。該方法的一個變種是將中心存儲庫變換成“黑板”,當用戶感興趣的數據發(fā)生變化時,它將通知客戶軟件。體系結構風格的簡單分類以數據為中心的體系結構。數據存儲駐留在體系結構風格的簡單分類圖8-1以數據為中心的體系結構體系結構風格的簡單分類圖8-1以數據為中心的體系結構體系結構風格的簡單分類以數據為中心的體系結構提升了可集成性,即現有的構件可以被修改而且新的客戶構件可以加入到系統(tǒng)結構之中,而無需考慮其他的客戶。另外,數據可以在客戶間通過“黑板”機制傳送,客戶構件獨立地執(zhí)行過程。體系結構風格的簡單分類以數據為中心的體系結構提升了可集成性,體系結構風格的簡單分類數據流體系結構。當輸入數據經過一系列的計算和操作構件的變換形成輸出數據時,可以應用這種體系結構。管道和過濾器結構(如圖8-2)擁有一組被稱為過濾器的構件,這些構件通過管道連接,管道將數據從一個構件傳送到下一個構件。每個過濾器獨立于其上游和下游的構件而工作,過濾器的設計要針對某種形式的數據輸入,并且產生某種特定形式的數據輸出。然而,過濾器沒有必要了解與之相鄰的過濾器的工作。如果數據流退化成單線的變換,則稱為批序列。這種結構接收一批數據,然后應用一系列連續(xù)的構件(過濾器)變換它。體系結構風格的簡單分類數據流體系結構。當輸入數據經過一系列的體系結構風格的簡單分類圖8-2數據流體系結構體系結構風格的簡單分類圖8-2數據流體系結構體系結構風格的簡單分類調用和返回體系結構。該體系結構風格能夠讓軟件設計師設計出一個相對易于修改和擴展的程序結構。存在兩種子風格:主程序/子程序體系結構。這種傳統(tǒng)的程序結構將功能分解為一個控制層次,其中“主”程序調用一組程序構件,這些程序構件又去調用別的程序構件。圖8-3描述了該種系統(tǒng)結構。遠程過程調用體系結構。主程序/子程序體系結構的構件分布在網絡的多個計算機上。面向對象體系結構。系統(tǒng)的構件封裝了數據和必須應用到該數據上的操作,構件間通過信息傳遞進行通信與合作。體系結構風格的簡單分類調用和返回體系結構。該體系結構風格能夠體系結構風格的簡單分類圖8-3主程序/子程序體系結構體系結構風格的簡單分類圖8-3主程序/子程序體系結構體系結構風格的簡單分類層次體系結構。層次體系結構的基本結構如圖8-4所示。其中定義了一系列不同的層次,每個層次各自完成操作,這些操作不斷接近機器的指令集。在最外層,構件完成用戶界面的操作;在最內層,構件完成與操作系統(tǒng)的連接;中間層提供各種實用程序服務和應用軟件功能。這些體系結構風格僅僅是軟件設計師可用風格中的一小部分。一旦需求工程提示了待構建系統(tǒng)的特征和約束,就可以選擇最適合這些特征和約束的體系結構風格或者風格的組合。在很多情況下,會有多種風格是適合的,需要對可選的體系結構風格進行設計和評估。體系結構風格的簡單分類層次體系結構。層次體系結構的基本結構如體系結構風格的簡單分類圖8-4層次體系結構體系結構風格的簡單分類圖8-4層次體系結構體系結構模式如果建筑工人決定建構一個“殖民式中廳”,那么只能應用一種體系結構風格。風格的細節(jié)內容是可以酌情變動的,但是一旦確定了房子的整體體系結構,這個風格就會影響設計。體系結構的模式有所不同。例如,房子采用一種Kitchen模式,這種Kitchen模式規(guī)定了廚房基本用具的放置、水池、櫥柜等要求,如果可能的話,也規(guī)定了房間中與完成做飯流程相關的這些廚具的布置規(guī)則。另外,該模式還可能指明柜臺面、燈、墻上的插座、中心島、地板等要求。顯然對廚房有不止一種的設計,但是每種設計都應該在Kitchen模式提供的解決方案環(huán)境下來構思完成。體系結構模式如果建筑工人決定建構一個“殖民式中廳”,那么只能體系結構模式軟件的體系結構模式定義了處理系統(tǒng)某些行為特征的方法。[BOS00]定義了一系列的體系結構模式域:并發(fā)性:很多應用系統(tǒng)必須以一種模擬并行的方式來操作多個任務。在一個應用系統(tǒng)中有很多不同的方法處理并發(fā)性,而且每種方法都可以由不同的體系結構模式來呈現。例如,一種方法是使用“操作系統(tǒng)進程管理”模式,該模式提供了一些內置的操作系統(tǒng)特征,這些特征允許構件并發(fā)執(zhí)行。這個模式同時還結合了操作系統(tǒng)中那些管理進程通信、調度的功能以及其他完成并發(fā)所需要的功能。還有一種方法是在應用層上定義一個任務調度器?!叭蝿照{度器”模式包括一組含有tick()操作的活動對象。調度器定期喚醒每個對象的tick()操作,該操作在控制權返回調度器之前完成它負責的功能,接著調度器喚醒下一個并發(fā)對象的tick()操作。體系結構模式軟件的體系結構模式定義了處理系統(tǒng)某些行為特征的方體系結構模式持久性:如果數據從創(chuàng)建它的進程執(zhí)行以來一直存在,則該數據是持久性存在的數據。持久數據被存儲在數據庫中或者文件里,并且可以在稍后的時間里被其他進程讀取和修改。在面向對象的環(huán)境中,持久對象的概念對持久性概念做了一些擴展,所有對象屬性的值、對象的狀態(tài)以及其他的附加信息都被存儲起來,以備今后的存取和使用。一般說來,可以采用兩種體系結構模式獲得持久性:一個是數據庫管理系統(tǒng)模式,該模式將DBMS的存儲和存取能力用于應用系統(tǒng)的體系結構中;另一個是應用級的持久模式,此種模式在應用體系結構中建立了持久性特征。體系結構模式持久性:如果數據從創(chuàng)建它的進程執(zhí)行以來一直存在,體系結構模式分布性:分布性問題強調系統(tǒng)或系統(tǒng)中構件在一個分布的環(huán)境中相互通信的方式。分布性問題有兩個元素:(1)實體間連接方式;(2)實體間通信的特性。解決分布性問題最普遍的體系結構模式是代理模式。代理在客戶端構件和服務器構件之間充當“中間人”??蛻舳讼虼戆l(fā)出一條信息(包含所有使通信有效的信息),代理完成(與服務器的)連接。在選擇一種體系結構模式之前,必須評估其對于應用和整個體系結構風格的適應性,即它的可維護性、可靠性、安全性和性能。體系結構模式分布性:分布性問題強調系統(tǒng)或系統(tǒng)中構件在一個分布組織和求精設計過程經常給軟件工程師留下一系列可供選擇的體系結構,建立一組用于評估所導出的體系結構設計的設計標準是非常重要的。[BAS98]提出的下面問題有助于對導出的體系結構風格提供深層次的考察。組織和求精設計過程經常給軟件工程師留下一系列可供選擇的體系結組織和求精控制:在體系結構中如何管理控制?是否存在一個不同的控制層次?如果是,構件在控制層次中擔當什么角色?構件如何在系統(tǒng)中傳遞控制?構件間如何共享控制?控制拓撲結構(即控制呈現的幾何形狀)是什么樣?控制是否同步或構件是否異步操作?組織和求精控制:在體系結構中如何管理控制?是否存在一個不同的組織和求精數據:構件間如何進行數據通信?數據流是否是連接的,或數據對象是否是零散地傳遞給系統(tǒng)?數據傳遞的模式是什么(即,數據是從一個構件傳遞到另一個構件,還是系統(tǒng)中構件可以全局共享數據)?是否存在數據構件(如黑板或中心存儲庫)?如果存在,它們的角色是什么?功能構件如何和數據構件交互?數據構件是被動的還是主動的(即數據構件是否主動地和系統(tǒng)中其他構件交互)?數據和控制如何在系統(tǒng)中交互?組織和求精數據:構件間如何進行數據通信?數據流是否是連接的,體系結構設計在體系結構設計開始的時候,軟件必須放在所處環(huán)境進行開發(fā),即,設計應該定義與軟件交互的外部實體(其他系統(tǒng)、設備、人)和交互的特性。一般在分析模型階段可以獲得這些信息,而所有其他的信息都是在需求工程階段獲得的。一旦建立了軟件的環(huán)境模型,并且描述出所有的外部軟件接口,那么設計師就可以通過定義和求精實現體系結構的構件來描述系統(tǒng)的結構。這個過程不停地迭代,直到獲得一個完善的體系結構。體系結構設計在體系結構設計開始的時候,軟件必須放在所處環(huán)境進系統(tǒng)的環(huán)境表示系統(tǒng)環(huán)境圖通過描述系統(tǒng)的出入信息流、用戶界面和相關的支持處理等來實現對環(huán)境的建模。在體系結構設計層,軟件架構師用體系結構環(huán)境圖對軟件與外部實體交互方式進行建模。圖8-5給出了體系結構環(huán)境圖的通用結構。系統(tǒng)的環(huán)境表示系統(tǒng)環(huán)境圖通過描述系統(tǒng)的出入信息流、用戶界面和系統(tǒng)的環(huán)境表示圖8-5體系結構環(huán)境圖系統(tǒng)的環(huán)境表示圖8-5體系結構環(huán)境圖系統(tǒng)的環(huán)境表示與目標系統(tǒng)交互的系統(tǒng)可以表示為:上級系統(tǒng):這些系統(tǒng)把目標系統(tǒng)作為某些高層處理方案的一部分。下級系統(tǒng):這些系統(tǒng)被目標系統(tǒng)使用,并為了完成目標系統(tǒng)的功能提供必要的數據和處理。同級系統(tǒng):這些系統(tǒng)在對等的基礎上相互作用。參與者:是指那些通過產生和消耗必不可少的處理所需的信息,實現與目標系統(tǒng)交互的實體(人、設備)。每個外部實體都通過某一接口(帶陰影的小矩形)與目標系統(tǒng)進行通信。系統(tǒng)的環(huán)境表示與目標系統(tǒng)交互的系統(tǒng)可以表示為:SAFEHOME實例[32]9-69-6SAFEHOME實例[32]9-69-6SAFEHOME實例[33]圖8-6SafeHome安全功能的體系結構環(huán)境圖SAFEHOME實例[33]圖8-6SafeHome安全功定義原始模型原始模型是一個類或者一個模式,描述了一個目標系統(tǒng)體系結構設計的核心抽象。一般來講,只需要設計相對較小的原始模型集合,即使系統(tǒng)相對比較復雜。目標系統(tǒng)的體系結構由這些原始模型組成,這些原始模型表示體系結構中穩(wěn)定的元素,但是這些元素基于系統(tǒng)行為可用多種方式加以說明。定義原始模型原始模型是一個類或者一個模式,描述了一個目標系統(tǒng)SAFEHOME實例[34]SAFEHOME實例[34]SAFEHOME實例[35]圖8-7SafeHome安全功能原始模型的UML關系圖SAFEHOME實例[35]圖8-7SafeHome安全功將體系結構精化為構件當軟件體系結構精化為構件時,系統(tǒng)的結構開始顯現。但是,如何選擇這些構件呢?體系結構設計師先從分析模型中所描述的類開始。這些分析類表示那些軟件體系結構中必定涉及的應用(業(yè)務)領域內的實體。因此,應用領域是導出和精化構件的一個源泉。另一源泉是基礎設施域。體系結構必須容納很多基礎設施構件使應用構件能夠運作,但是這些基礎設施構件與應用領域沒有業(yè)務聯(lián)系,例如,內存管理構件、通信構件、數據庫構件和任務管理構件往往歸并到軟件體系結構中。將體系結構精化為構件當軟件體系結構精化為構件時,系統(tǒng)的結構開將體系結構精化為構件體系結構環(huán)境圖中描述的接口隱含著一個或者多個特定的構件,這些構件處理穿過接口的數據。在某些情況下,需要設計一個完整的包含眾多構件的子系統(tǒng)體系結構。將體系結構精化為構件體系結構環(huán)境圖中描述的接口隱含著一個或者SAFEHOME實例[36]SAFEHOME實例[36]SAFEHOME實例[37]圖8-8帶有高層構件的SafeHome整體體系結構SAFEHOME實例[37]圖8-8帶有高層構件的Safe描述系統(tǒng)實例至此所建立起來的體系結構設計依然處于比較高的層次。系統(tǒng)的環(huán)境已經表示出來了,預示問題域中重要抽象的原始模型也被定義出來,系統(tǒng)的整個結構已經顯現出來,并且主要的軟件構件也都定義出來了,然而,更進一步的精化仍然是必要的。為了完成體系結構設計,要開發(fā)一個體系結構的實際實例,用意是將體系結構應用到一個特定的問題上,目的是證明結構和構件都是合理的。描述系統(tǒng)實例至此所建立起來的體系結構設計依然處于比較高的層次SAFEHOME實例[38]SAFEHOME實例[38]評估可選的體系結構設計設計會導致多種可供選擇的候選體系結構,其中每一種候選體系結構都需要評估,以確定哪種體系結構最適合要解決的問題。評估可選的體系結構設計設計會導致多種可供選擇的候選體系結構,體系結構權衡分析方法SEI開發(fā)了一種體系結構權衡分析方法,該方法建立了一個迭代的軟件體系結構評估過程。1、收集場景。2、誘導需求、約束和環(huán)境描述。3、描述那些已經被選用于解決場景和需求的體系結構風格/模式。4、通過孤立地考慮每個屬性來評估質量屬性。5、針對特定的體系結構風格,弄清質量屬性對各種體系結構屬性的敏感性。6、使用在第5步中進行的敏感性分析鑒定候選體系結構。這6個步驟描述了第一次ATAM迭代。基于第5步和第6步的結果,某些候選體系結構可能被刪除,剩余的一個或多個體系結構可能被修改和進一步細化,然后,ATAM步驟被再次應用。體系結構權衡分析方法SEI開發(fā)了一種體系結構權衡分析方法,該體系結構復雜性對體系結構的整體復雜性進行評估,一種很有用的技術是考慮體系結構中構件間的依賴關系,這些依賴關系是由系統(tǒng)中的信息/控制流驅動的。[ZHA98]建議了三種類型的依賴:共享依賴表示在使用相同資源的消費者間或為相同消費者生產的生產者之間的依賴關系。流依賴表示資源的生產者和消費者間的依賴關系。約束依賴表示在一組活動間相關控制流上的約束。體系結構復雜性對體系結構的整體復雜性進行評估,一種很有用的技體系結構描述語言體系結構描述語言ADL為描述軟件體系結構提供一套語義和語法。[HOF01]建議ADL應該使得設計者具有分解體系結構構件、將單獨構件組合成大的體系結構塊,以及描述構件之間的接口的能力。一旦體系結構設計使用的描述的、基于語言的技術被建立起來,那么很有可能隨著設計的進化而建立起體系結構的有效評估方法。體系結構描述語言體系結構描述語言ADL為描述軟件體系結構提供映射數據流到軟件體系結構體系結構風格描述了本質上不同的體系結構,因此,并不存在一種能夠實現從分析模型到各種體系風格轉換的全面映射。為了描述體系結構映射的方法,考慮“調用和返回”體系結構的映射技術——這種體系結構是非常常見的結構。這種映射技術使得設計者能夠從分析模型的數據流圖中導出相當復雜的“調用和返回”體系結構,這種技術也稱為結構化設計。結構化設計經常被刻畫為面向數據流的設計方法,它提供了方便的從數據流圖到軟件體系結構的變換。信息流的類型決定了映射方法。映射數據流到軟件體系結構體系結構風格描述了本質上不同的體系結DFD的兩種類型為了實現從DFD到體系結構的映射(需求模型設計模型),需要仔細區(qū)分DFD中數據流的性質,并分別學習相應的映射方法。DFD的兩種類型為了實現從DFD到體系結構的映射(需求模型變換型結構(變換流)變換型結構(變換流)變換型結構(變換流)變換型結構(變換流)事務型結構(事務流)事務型結構(事務流)事務型結構(事務流)事務型結構(事務流)變換映射變換映射是一組設計步驟,可以將具有變換流特征的DFD映射為某個特定的體系結構風格。變換映射變換映射是一組設計步驟,可以將具有變換流特征的DFD步驟1:評審基本系統(tǒng)模型基本系統(tǒng)模型或者環(huán)境圖把安全功能描述為一個單一的變換,描述了流入和流出安全功能的數據的生產者和消費者。圖8-11刻畫了一個0層模型,圖8-12描述了初步精化后的安全功能數據流。步驟1:評審基本系統(tǒng)模型基本系統(tǒng)模型或者環(huán)境圖把安全功能描述SAFEHOME實例[39]圖8-11SafeHome的環(huán)境級DFDSAFEHOME實例[39]圖8-11SafeHome的環(huán)SAFEHOME實例[40]圖8-12SafeHome安全功能的第一層DFDSAFEHOME實例[40]圖8-12SafeHome安全步驟2:評審和精化軟件的數據流圖對從分析模型獲得的信息進行精化,以獲得更多的細節(jié)。例如,檢查第2層監(jiān)控傳感器的DFD(如圖8-13),并導出第3層數據流圖(如圖8-14)。在第3層,數據流圖中的每個變換都展示了高內聚性,即變換所包含的過程完成單一的、清楚的功能,該功能可被實現為SafeHome軟件中的一個構件。圖8-14中的DFD包含了設計監(jiān)控傳感器子系統(tǒng)體系結構所需的細節(jié)信息,不需要再進一步精化。步驟2:評審和精化軟件的數據流圖對從分析模型獲得的信息進行精SAFEHOME實例[41]圖8-13精化“監(jiān)控傳感器”變換的第2層DFDSAFEHOME實例[41]圖8-13精化“監(jiān)控傳感器”變SAFEHOME實例[42]圖8-14具有流邊界的監(jiān)控傳感器的第3層DFDSAFEHOME實例[42]圖8-14具有流邊界的監(jiān)控傳感步驟3:確定DFD是否含有變換流或事務流特征通過評估DFD(圖8-14),可以看出,數據通過一條輸入路徑進入軟件,沿三條輸出路徑流出,沒有明顯的事務中心。信息流將呈現出一個從頭到尾的變換特征。步驟3:確定DFD是否含有變換流或事務流特征通過評估DFD(步驟4:通過確定輸入和輸出流的邊界,分離出變換中心輸入流被描述為信息從外部形式變換為內部形式的路徑,而輸出流是信息從內部形式變換為外部形式的路徑。不同的設計人員在選擇流邊界時可能不盡相同。事實上,不同的流邊界選擇會導致不同的設計方案。盡管在選擇流邊界時要加以注意,但沿流路徑若有一個泡泡的差異對最終程序結構的影響并不會太大。步驟4:通過確定輸入和輸出流的邊界,分離出變換中心輸入流被描步驟5:完成“第一級分解”使用這個映射導出的程序體系結構導致了自頂向下的控制分布。分解的作用是得到一個程序結構,其中頂層模塊做決策;低層模塊完成大多數輸入、計算和輸出工作;中層模塊既完成一部分控制,又完成適量的工作。當遇到變換流時,DFD將被映射成一個能為信息的輸入、變換和輸出處理提供控制的特定結構。圖8-15給出了對監(jiān)控傳感器子系統(tǒng)進行第一級分解的結果,主控制器(圖中稱為監(jiān)控傳感器輸入控制器)位于程序結構的頂端,負責協(xié)調從屬控制功能。步驟5:完成“第一級分解”使用這個映射導出的程序體系結構導致SAFEHOME實例[43]圖8-15監(jiān)控傳感器的第一級分解SAFEHOME實例[43]圖8-15監(jiān)控傳感器的第一級分步驟5:完成“第一級分解”輸入信息處理控制器負責協(xié)調所有輸入數據的接收。變換流控制器負責管理內部形式的數據上的所有操作。輸出流信息處理控制器負責管理輸出信息的產生。雖然圖8-15蘊涵了三叉結構,但是,大型系統(tǒng)的復雜數據流圖可能會要求為上述每個類屬控制功能提供兩個或多個模塊。第一層模塊的數量應限定在既能完成控制功能又能維持良好的獨立特征所要求的最少模塊數。步驟5:完成“第一級分解”輸入信息處理控制器負責協(xié)調所有輸入步驟6:完成“第二級分解”第二級分解是將DFD中的每個變換映射到程序結構中的相應模塊。從變換中心的邊界開始,沿輸入路徑和輸出路徑向外,將變換依次映射到軟件結構的從屬層。圖8-16描述了第二級分解的一般方法。步驟6:完成“第二級分解”第二級分解是將DFD中的每個變換映SAFEHOME實例[44]圖8-16監(jiān)控傳感器的第二級分解SAFEHOME實例[44]圖8-16監(jiān)控傳感器的第二級分步驟6:完成“第二級分解”雖然圖8-16描述了DFD變換和軟件模塊間的一對一映射,但其他的映射方式也經常采用。兩個甚至三個變換可以合并在一起表示為一個構件,或者一個單獨的變換也可以擴展成兩個或者多個構件?,F實考慮和設計質量的權衡決定著第二級分解的輸出結果。評審和精化可能會導致這個結構的改變,但這個結構仍然應作為第一次迭代設計。步驟6:完成“第二級分解”雖然圖8-16描述了DFD變換和軟步驟6:完成“第二級分解”對于輸入流的第二級分解遵循同樣的方式,從輸入流一側的變換中心邊界開始向外移動。變換中心映射略有不同,DFD變換部分的每個代表數據轉換或計算的變換都被映射為變換控制器的從屬模塊。圖8-17給出了一個完整的第一次迭代的體系結構。按以上方法映射出來的構件描述了軟件體系結構的一個初始設計。雖然構件的名字已經可以體現其功能,但我們仍然需要為每個構件提供簡要的處理敘述。步驟6:完成“第二級分解”對于輸入流的第二級分解遵循同樣的方SAFEHOME實例[45]圖8-17監(jiān)控傳感器第一次迭代后的結構SAFEHOME實例[45]圖8-17監(jiān)控傳感器第一次迭代步驟7:使用提高軟件質量的設計啟發(fā)式方法,精化第一次迭代得到的體系結構應用功能獨立性概念,能夠精化第一次迭代得到的體系結構。對構件進行外爆或內爆,可以得到合理的分解、好的內聚性、低的耦合性,最重要的是獲得易于實現、可系統(tǒng)性測試和易于維護的程序結構。求精是在前述的分析和評估方法以及現實考慮和常識等指導之下進行的。例如,有時輸入數據流的控制器完全沒有必要,有時需要在一個從屬于變換控制器的構件中完成輸入處理,有時全局數據的存在使得高耦合性不可能避免,有時不能達到優(yōu)化結構特征,軟件需求加人工判斷是最終依據。步驟7:使用提高軟件質量的設計啟發(fā)式方法,精化第一次迭代得到SAFEHOME實例[46]圖8-18監(jiān)控傳感器精化后的程序結構SAFEHOME實例[46]圖8-18監(jiān)控傳感器精化后的程事務映射在許多軟件應用中,單獨的數據項會觸發(fā)多條信息流中的一條,這些數據流將實現該數據項隱含的功能。這個數據項被稱為事務。考慮SafeHome安全功能的用戶交互子系統(tǒng)。該子系統(tǒng)的第1層數據流如圖8-12所示。對此圖數據流進行精化,得到第2層數據流圖,如圖8-19所示。數據對象“用戶命令”流入系統(tǒng),沿三條動作路徑之一產生其他信息流,單個數據項“命令類型”引發(fā)數據流從中心向外扇出,因此,整個數據流的特征是面向事務的。值得注意的是,沿著三個動作路徑中的兩條路徑上的信息流可以滿足額外的輸入流。每個動作路徑都流入單個變換“顯示消息和狀態(tài)”。事務映射的設計步驟與變換映射的步驟相類似,甚至在某些情況下是相同的。主要區(qū)別在于DFD到軟件體系結構的映射。事務映射在許多軟件應用中,單獨的數據項會觸發(fā)多條信息流中的一SAFEHOME實例[47]圖8-19用戶交互子系統(tǒng)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現代企業(yè)管理戰(zhàn)略在教育行業(yè)的應用
- 科技企業(yè)創(chuàng)新管理與市場開拓
- 知識產杈保護與商業(yè)秘密的維護措施
- 社交網絡中的個人信息保護策略研究
- 蝦池施工合同范本
- 直播營銷在網紅經濟中的價值體現
- 2025江西吉安市吉水縣吉瑞農貿有限公司招聘2人筆試參考題庫附帶答案詳解
- 瀝青購買合同范本
- 煤礦清煤工職業(yè)技能理論考試題庫150題(含答案)
- 班級管理中的環(huán)保教育與思政教育的結合
- 社會階層與教育選擇行為分析-深度研究
- 社會工作行政(第三版)課件匯 時立榮 第6-11章 項目管理- 社會工作行政的挑戰(zhàn)、變革與數字化發(fā)展
- 學校小賣部承包合同范文
- 2025年湘潭醫(yī)衛(wèi)職業(yè)技術學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南鐵道職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- DB 63- T993-2011 三江源生態(tài)監(jiān)測技術規(guī)范
- 北京市東城區(qū)2025年公開招考539名社區(qū)工作者高頻重點提升(共500題)附帶答案詳解
- 2025福建福州地鐵集團限公司運營分公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 2025至2030年中國電子護眼臺燈數據監(jiān)測研究報告
- 兒童睡眠障礙治療
- 2025年浙江省溫州樂清市融媒體中心招聘4人歷年高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論