【正文】
而且也定義了體系結(jié)構(gòu)特定類的約束 ? SADL的一個獨(dú)特方面是對體系結(jié)構(gòu)層次的表示和推理 ? MetaH ? MetaH主要支持實(shí)時、容錯、安全、多處理和嵌入式軟件系統(tǒng)的分析、驗(yàn)證以及開發(fā) ? MetaH不僅能夠使用文本方式的語法來表示體系結(jié)構(gòu),還能以圖形方式來描述體系結(jié)構(gòu) ? 在 MetaH規(guī)格說明中,實(shí)體種類分為低層實(shí)體和高層實(shí)體,低層實(shí)體描述了源代碼模塊 (例如:子程序和包 )和硬件元素 (諸如:內(nèi)存和處理器 ),高層實(shí)體說明了如何利用已定義的實(shí)體來組合形成新實(shí)體 (例如:宏、系統(tǒng)和應(yīng)用程序 ) ? Rapide ? Rapide是一種可執(zhí)行的 ADL,其目的在于:通過定義模擬基于事件的行為,來對分布式并發(fā)系統(tǒng)進(jìn)行建模 ? 通過事件偏序集來刻畫系統(tǒng)的行為 ? 構(gòu)件計(jì)算由構(gòu)件接收的事件來觸發(fā),并進(jìn)一步產(chǎn)生事件傳送到其它構(gòu)件,由此觸發(fā)了其它計(jì)算 ? Rapide模型的執(zhí)行結(jié)果是一個事件集合,其中的事件滿足一定的因果和時序關(guān)系 ? C2 ? 在 C2語言中,連接件負(fù)責(zé)構(gòu)件之間的消息傳遞 ? 構(gòu)件維持狀態(tài),執(zhí)行操作,通過 top和 bottom端口和其它構(gòu)件進(jìn)行信息交互 ? 構(gòu)件之間的消息交換不能直接進(jìn)行,只能通過連接件來完成 ? 每個構(gòu)件端口最多只能和一個連接件相連,而連接件可以和任意數(shù)目的構(gòu)件和連接件相連 ?使用 C2來描述會議安排系統(tǒng),其體系結(jié)構(gòu)如下所示: M e e t i ng I n i t i a t o r M a i n C onn e c t o r A t t e nd ee C onn e c t o r I m po r t a n t A t t e nd ee C onn e c t o r A t t e nd e e 1 A t t e nd e e MN … I m po r t a n t A t t e nd e e 1 I m po r t a n t A t t e nd e e N … ? ADL的優(yōu)點(diǎn): ? 能為軟件建立精確和無二義性的模型,有效地支持體系結(jié)構(gòu)的求精和驗(yàn)證 ? ADL的缺點(diǎn): ? 研究尚處于初級階段, ADL自身所能提供的技術(shù)支持還很有限 ? 沒有統(tǒng)一可用的形式化描述規(guī)范和集成開發(fā)工具,還不能對軟件工程生命周期的各個階段提供全面的支持 ? 易用性比 UML差,不利于開發(fā)人員的溝通和理解,作為新興技術(shù),發(fā)展比較緩慢 ? 每種 ADL都有各自的適用領(lǐng)域,還沒有找到一種普遍適用的體系結(jié)構(gòu)描述語言 ? 基于體系結(jié)構(gòu)的軟件開發(fā)過程如下圖所示: 構(gòu)件評估入庫 用戶需求 功能需求 非功能性需求 體系結(jié)構(gòu) 設(shè)計(jì)方案庫 生成類圖 類分組形成構(gòu)件 分析構(gòu)件相互關(guān)系 體系結(jié)構(gòu)設(shè)計(jì) 分析 組裝與測試 分析 構(gòu)件庫 構(gòu)件選擇與修改 目標(biāo)系統(tǒng) 構(gòu)件實(shí)現(xiàn) 體系結(jié)構(gòu)模型 分析 體系結(jié)構(gòu)評估入庫 ?分析需求規(guī)格說明書,獲取系統(tǒng)的功能需求和非功能性需求 ? 功能需求和非功能性需求使用用例和場景來進(jìn)行描述 ? 確定系統(tǒng)的邊界,識別出所有的參與者和用例 ?分析需求規(guī)格說明書,提取所有的術(shù)語 ? 根據(jù)功能需求和非功能性需求,對術(shù)語進(jìn)行判斷和篩選,從中選出對象 ? 將具有相同或相似屬性和方法的一類對象,抽象為一個類,比較各個類的屬性和方法,確定不同類之間的關(guān)系 ?根據(jù)類之間的關(guān)系,生成類圖,將密切相關(guān)的類劃分為一組,形成構(gòu)件 ? 某幾個類是否劃分為一組,主要是根據(jù)類之間的關(guān)聯(lián)程度來進(jìn)行判斷 ? 從邏輯上看,若某幾個類是完成一項(xiàng)任務(wù)的相關(guān)步驟,則應(yīng)該劃為一組 ? 若某幾個類的耦合性很高,則應(yīng)該考慮將它們歸為一組,在形成構(gòu)件時,可以降低該構(gòu)件與其它構(gòu)件之間的關(guān)聯(lián)程度,提高構(gòu)件自身的獨(dú)立性 ? 若某幾個類分為一組形成的構(gòu)件,在構(gòu)件庫中可以找到對應(yīng)的實(shí)現(xiàn)構(gòu)件,則這幾個類應(yīng)該劃為一組,以提高構(gòu)件的復(fù)用效率 ? 類分組不是絕對的,各種劃分方法都有一定的道理,主觀性很強(qiáng),同時,分組的界線也不是很清晰,很多時候需要體系結(jié)構(gòu)設(shè)計(jì)人員的經(jīng)驗(yàn) ? 分析構(gòu)件與外界環(huán)境之間的交互點(diǎn),確定該構(gòu)件的所有端口 ?根據(jù)構(gòu)件端口,確定構(gòu)件之間的關(guān)聯(lián)關(guān)系 ?根據(jù)功能需求和非功能性需求,確定系統(tǒng)應(yīng)該采用的體系結(jié)構(gòu)風(fēng)格 ?在體系結(jié)構(gòu)設(shè)計(jì)方案庫中,若存在相同或相似的解決方案,將直接進(jìn)行復(fù)用,或經(jīng)過簡單的修改之后再復(fù)用,如果沒有,則需要進(jìn)行重新設(shè)計(jì) ?體系結(jié)構(gòu)設(shè)計(jì)師、系統(tǒng)分析人員、客戶和相關(guān)技術(shù)實(shí)現(xiàn)人員將對體系結(jié)構(gòu)設(shè)計(jì)結(jié)果進(jìn)行評審,確定所提出的解決方案是否能夠滿足用戶的要求,是否能夠提高資源的復(fù)用效率 ?選擇一種合適的 ADL或表示方法,來描述解決方案,獲得軟件體系結(jié)構(gòu)模型 ?分析體系結(jié)構(gòu)模型,評估模型的適用范圍和有效性 ? 經(jīng)過分析與評估,將其中有復(fù)用價值的部分提取出來,加入體系結(jié)構(gòu)設(shè)計(jì)方案庫中,為今后的開發(fā)提供基礎(chǔ) ?在構(gòu)件庫中,根據(jù)體系結(jié)構(gòu)模型中構(gòu)件的屬性進(jìn)行檢索 ? 若檢索到相應(yīng)的構(gòu)件,則直接進(jìn)行復(fù)用,若沒有,則需要根據(jù)模型中構(gòu)件的需求說明,來開發(fā)新的構(gòu)件 ?在獲得了所有實(shí)現(xiàn)構(gòu)件之后,按照體系結(jié)構(gòu)模型進(jìn)行組裝,集成應(yīng)用系統(tǒng) 本章講授內(nèi)容已結(jié)束 謝謝