架構設計 Architectural Design

66
架架架架 Architectural Design

description

架構設計 Architectural Design. 大綱. 軟體架構 資料設計 架構的型態與模式 架構的設計 評估可供選擇的架構設計 將資料流向映對成軟體架構. 軟體架構. 什麼是架構 ( architecture) 架構設計表示建立一個以電腦為基礎系統所必須要的資料結構與程式元件。它考慮系統所採取的架構型態、建構系統元件的結構與性質,和發生於系統的所有架構元件之間的交互關係。 組合軟體元件、元件外部可見的性質、它們之間的關係 軟體的整體架構,和其內結構所提供系統概念整合的方式。. 軟體架構 (con’t). - PowerPoint PPT Presentation

Transcript of 架構設計 Architectural Design

Page 1: 架構設計 Architectural Design

架構設計 Architectural Design

Page 2: 架構設計 Architectural Design

大綱• 軟體架構• 資料設計• 架構的型態與模式• 架構的設計• 評估可供選擇的架構設計• 將資料流向映對成軟體架構

Page 3: 架構設計 Architectural Design

軟體架構 什麼是架構 (architecture)architecture)

架構設計表示建立一個以電腦為基礎系統所必須要的資料結構與程式元件。它考慮系統所採取的架構型態、建構系統元件的結構與性質,和發生於系統的所有架構元件之間的交互關係。

組合軟體元件、元件外部可見的性質、它們之間的關係

軟體的整體架構,和其內結構所提供系統概念整合的方式。

Page 4: 架構設計 Architectural Design

軟體架構 (con’t)• The architecture is not the operational soft

ware. Rather, it is a representation that enables a software engineer to: 1. analyze the effectiveness of the design in m

eeting its stated requirements, 2. consider architectural alternatives at a sta

ge when making design changes is still relatively easy, and

3. reduce the risks associated with the construction of the software.

Page 5: 架構設計 Architectural Design

軟體架構 (con’t) 為何重要,有三大理由

溝通 早期決策 構成易於掌握的模型

提供你大的圖,並確保你得到對的東西"four bedrooms, three baths,lots of glass ..."

customer requirements

architectural design

Page 6: 架構設計 Architectural Design

資料設計 設計金字塔(圖9.1)•資料設計 (data design) :•讓我們在物件導向的系統中,表示傳統系統與類別定義 (包括屬性與操作 )中架構的資料元件。

•架構設計 (architectural design) :•聚焦於軟體元件的結構、及它們的性質和互動的表示。

Page 7: 架構設計 Architectural Design

資料設計 (Con’t) 資料設計的原則:

1. 應用到功能與行為的系統化分析原則也應該能應用於資料上。2. 所有的資料結構和其所要實行的操作都應該確認。3. 應該建立定義每個資料物件內容的機制,並用來定義應用於它的資料

與操作。4. 低層級的資料設計決策應該延遲到設計流程的後期。5. 資料結構的表示只有對那些必須準備直接使用包含於結構裡的資料模

組,才應該要知道。6. 有用的資料結構程式庫和可能應用它們的操作應該被發展。7. 軟體設計與程式語言應該支援抽象資料型態的規格與實現 (rea

lization) 。

Page 8: 架構設計 Architectural Design

架構的型態與模式 架構的型態 (Styles)

(Data以資料為中心的架構 -centered architecture) (Data資料流向的架構 -flow architecture) (Call呼叫與返回架構 and return architecture)

/ (Main主程式 副程式架構 program/subprogram architecture)

遠端程序呼叫架構 (Remote procedure architecture) 主程式/副程式架構的元件分散跨越於網路上的多部電腦中。

物件導向的架構 (Object-oriented architecture)• 系統的元件將資料和應用於操縱資料的操作封裝起來。• 通訊與協調經由訊息傳遞(message passing)而完成。

(Layered層級架構 architecture)

Page 9: 架構設計 Architectural Design

架構的型態與模式 (Con’t) 架構型態的選擇

•這些架構型態只是對軟體設計者可以利用的小型子集合。•一旦需求工程揭開所要建造系統的特性與侷限時,最適合此特性與侷限的架構型態或型態的組合可被選擇。

•許多情形中,超過一種以上的型態可能是較為恰當的,且可供選舉的方案可被設計與評估。•例如,在許多資料庫的應用程式中,階層的型態 (適用於大多數的系統 )能結合以資料為中心的架構。

簡單的說可以選擇一個或結合多種架構

Page 10: 架構設計 Architectural Design

架構的型態與模式 (Con’t) 架構的模式

• 房屋建造者決定建構一棟殖民地式的中央大廳殖民地式的中央大廳。形態• 架構的模式則有一些不同。

•例如,廚房模式。定義基本的廚房家電、水槽、廚櫃的定義基本的廚房家電、水槽、廚櫃的安置安置。廚房的設計是超過一種以上,但每一種設計能藉由廚房模式所建議的「解決方案」環境中構想出。模式

Page 11: 架構設計 Architectural Design

架構的型態與模式 (Con’t) 軟體的架構模式定義特別的方式以處理某些系統的行為特性。 架構的模式

併行 (Concurrency) 模擬平行的方式處理多重的任務 例如:作業系統行程管理 (operating system process management)、任務排程器 (task scheduler)

持續 (Persistence) 執行後資料要持續 例如:資料庫管理系統 (Database management system)

分散 (Distribution) 在分散式環境中元件彼此通訊

實體間彼此相連接的方法 通訊的性質

例如:經紀人 (broker)模式,如 CORBA• 前面所提及的任何一種架構模式都是可以選擇的,它必須對應用程式與整體

架構型態的合適性,和它的可維護性 (maintainability) 、可靠性 (reliability) 、安全與效能進行評估。

Page 12: 架構設計 Architectural Design

架構的型態與模式 (Con’t)•組織與改進

•資料 (Data) •資料如何在元件之間通訊?資料的流向是連續的,或資料物件偶爾零星地傳給系統?資料轉移的模式是什麼(即資料由一個元件傳到另一個元件,或在系統的元件之間資料是全體所共享的)?資料元件 (即一個黑板或倉庫)存在嗎?如果是,它們的角色是什麼?功能元件如何與資料元件互動?資料元件是被動或主動的(即資料元件主動地與其他系統中的元件互動)?資料與控制如何在系統中互動?

•這些問題提供設計者早期評估設計品質,並立下更為詳細的架構分析基礎。

Page 13: 架構設計 Architectural Design

架構的設計• 當架構的設計開始,所要發展的軟體必須被置入環境中,即設計應該定義軟體所互動的外部實體 ( 其他的系統、裝置、人 ) 和互動的性質。

• 此資訊通常可由分析模型和需求工程期間所蒐集的所有其他資訊中獲得。

• 一旦環境被塑模完成且所有外部軟體的介面也被描述,設計者藉由定義與改進實作架構的軟體元件詳細說明系統的結構。此流程將反覆地繼續,直到導出完整架構的結構。

Page 14: 架構設計 Architectural Design

架構的設計 (Con’t) 一位系統工程師必須要塑模環境,環境中系統的表示

(architectural使用架構環境圖 context diagram, ACD)塑模軟體與外部實體互動的情形

與目標系統 (target system)相互操作的系統 上級系統 (Superordinate systems)

• 使用目標系統做為某些較高層級處理方案一部分的那些系統。 下級系統 (Subordinate systems)

• 那些由目標系統所使用並提供完成目標系統功能性所必需的資料或處理的系統。 同儕層級系統 (Peer-level systems)

• 那些在以點對點基礎上互動的系統 ( 即資訊要不是被同儕和目標系統產生,要不就是消耗 ) 。

參與者 (Actors)• 藉由產生或消耗對必要處理所需要的資訊與目標系統互動的那些實體 ( 人、裝置 ) 。

• 每個外部實體經由一個介面 ( 小的陰影長方形 )與目標系統通訊。 實例:『安全家』安全功能的架構環境圖

Page 15: 架構設計 Architectural Design

架構的設計 (Con’t) 定義原型 (archetype)

•原型 (archetype) 是一種類別或模式,它表示核心的抽象化,這對目標系統架構的設計必定是不可少的。

•通常,對於設計或甚至相對複雜的系統,相對小的原型是必需的。目標系統架構是由這些原型所組成,此呈現出架構的穩定元素,但可以基於系統的行為,以許多不同的方法舉列。

以『安全家』居家安全功能為例(使用UML)

Page 16: 架構設計 Architectural Design

架構的設計 (Con’t) 改進架構成為元件

系統的結構會開始浮現 元件如何選擇?

由分析類別開始 元件有三個來源:

應用程式領域 基礎建設領域 介面領域

以『安全家』為例

Page 17: 架構設計 Architectural Design

架構的設計 (Con’t) 進一步的細化 顯示更多的細節

以『安全家』為例

Page 18: 架構設計 Architectural Design

評估評估可供選擇的架構設計 架構權衡分析方法 (Architecture Trade-Off Analysis Method,ATAMATAM)

軟體架構分析方法 (Software Architecture Analysis Method, SAAM)

架構的複雜性架構的複雜性

Page 19: 架構設計 Architectural Design

評估可供選擇的架構設計 (Con’t) 架構權衡分析方法 (Architecture Trade-Off Analysis Method,ATAM)• 一旦架構的敏感點架構的敏感點已經決定,尋找權衡點就只是簡單地對多個敏感的屬性架構元件的辨識。

• 例如,主從式架構的效能可能對伺服器的數量是高度敏感的(在某個範圍內,藉由增加伺服器的數量來增加效能 )……。•伺服器的數量是有關於此架構的一個權衡點

Page 20: 架構設計 Architectural Design

評估可供選擇的架構設計 (Con’t) 架構的複雜性

評估複雜性的方法是考慮元件之間的相依性(dependencies),有三種型態

共享相依性 (sharing dependencies) 兩元件都參考到同一全域資料

流向相依 (flow dependencies) 若在控制流進入 v之前, u必須先完成

侷限的相依性 (constrained dependencies) 兩元件不能同時執行 (互斥 )

Page 21: 架構設計 Architectural Design

評估可供選擇的架構設計 (Con’t) 架構的描述語言 (Architectural Description Language, ADL)

提供語意與語法以描述軟體架構• 雖然軟體架構師可以利用 UML 標記、其他的圖表型態和一些相關的工具,但對於架構設計的規格還是需要更為正規需要更為正規的方式的方式。

• 一旦架構設計的描述、以語言為基礎的技術已建立後,當設計演進時,對架構的有效評估方法將更為可能地被建立。

Page 22: 架構設計 Architectural Design

將資料流向映對成軟體架構 以資料流向為導向的設計方法 從資料流向圖 轉換成架構設計 Flow Characteristics

Transform flow(轉換流向 )

Transaction flow( 交易流向 )

Transform flow

Transactionflow

Page 23: 架構設計 Architectural Design

將資料流向映對成軟體架構 (Con’t) 轉換流向 (Transform flow)

資訊必須要以「外部世界」的形態進入與離開進入與離開軟體。例如:

在鍵盤上所鍵入的資料、電話線路的音調,和在多媒體應用程式中的視訊影像都是外部世界資訊的形式。

此種外部化 (externalized) 的資料必須要轉換成內部的形式以進行處理。

進入流向 (incoming flow)--資訊由外部進入 轉換中心 (transform center)--發生轉換 輸出流向 (outgoing flow)

• 整體的資料流向跟隨著一個或少許的「直線 (straight line)」徑路,以連續的方式發生。

Page 24: 架構設計 Architectural Design

將資料流向映對成軟體架構 (Con’t) 交易流向 (Transaction flow)

資訊流向經常藉由交易 (transaction) 觸發沿著許多路徑之一的其他資料流向。

如圖10.10 大系統的 DFD 中,轉換與交易流向兩者都可能存在兩者都可能存在。

例如,在以交易為導向的流動,沿著動作路徑的資訊流向可能會有轉換流向的特性。

Page 25: 架構設計 Architectural Design

將資料流向映對成軟體架構 (Con’t) (transform轉換應對 mapping)

一組設計步驟,使具備轉換流向特性的 DFD被mapping到特定的架構型態內。

相關名詞 (factoring分解 ) 第一層級分解 第二層級分解

以『安全家』的安全功能為例,步驟如下:

Page 26: 架構設計 Architectural Design

將資料流向映對成軟體架構 (Con’t) 轉換應對 (transform mapping)

步驟一:檢討基本的系統模型 圖10.11層級0,圖10.12改進後的

步驟二:檢視與改進軟體的資料流向圖 圖10.13監控感測器層級2 圖10.14層級3

步驟三:決定 DFD是否有轉換和交易流向的特性 圖10.14層級3

步驟四:藉由明確指定進入或流出的流向界限隔離出轉換中心 圖10.14層級3

步驟五:執行『第一層級分解 (factoring)』 圖10.15 第一層級分解

步驟六:實行『第二層級的分解』 圖10.16 第二層級分解,圖10.17第一次的反覆架構

步驟七:使用改善軟體品質的設計經驗法則 (heuristics)以改進第一次的反覆架構

Page 27: 架構設計 Architectural Design

將資料流向映對成軟體架構 (Con’t) 交易應對(Transaction Mapping)

整體資料流向的特性以交易交易為導向 步驟類似轉換應對,最大差異在於最大差異在於 DFDDFD到軟體結構的映到軟體結構的映對對。

以『安全家』的安全功能為例,步驟如下

Page 28: 架構設計 Architectural Design

將資料流向映對成軟體架構 (Con’t) 交易應對 (Transaction Mapping)

步驟一:檢視基本的系統模型

步驟二:檢視與改進軟體的資料流向圖

步驟三:決定 DFD是否有轉換或交易流向的特性

圖10.19

步驟四:沿著每個活動路徑確認交易中心與流向特性

圖10.19

步驟五:映對 DFD於程式結構中以服膺交易處理 圖10.20,圖10.21

步驟六:分解和改進交易結構與每條動作路徑的結構 圖10.22

步驟七:使用設計經驗法則改進第一次反覆式架構以改善軟體的品質

Page 29: 架構設計 Architectural Design

Q&A• 報告結束• Q&A

• Q1有什麼軟體可以協助我們作架構設計嗎?• Q2架構、模式和框架這些術語有什麼不一樣?• Q3可否介紹幾種『架構的描述語言』?• Q4有沒有其他的架構型態與模式 ?

Page 30: 架構設計 Architectural Design

圖 9.1 轉換分析模型成為設計模型

Page 31: 架構設計 Architectural Design

圖 10.1 以資料為中心的架構以資料為中心的架構促進可整合性 (integrability)

Page 32: 架構設計 Architectural Design

圖 10.2 資料流向的架構 當輸入的資料經過一連串的計算或操縱的元件而轉換成為輸出資料時,會應用這個架構。

Page 33: 架構設計 Architectural Design

呼叫與返回架構 (Call and return architecture)

Page 34: 架構設計 Architectural Design

圖 10.3 主程式 /副程式架構

Page 35: 架構設計 Architectural Design

圖 10.4 層級的架構• 許多不同的層級被定義,每個所完成的操作逐漸地趨近於機器指令集。

1.在外部的層級,元件提供使用者介面操作的服務。

2.在內部的層級,元件實行作業系統的介面呼叫。

3.中間的層級提供公共程式服務與應用軟體功能。

Page 36: 架構設計 Architectural Design

圖 10.5 架構環境圖

Page 37: 架構設計 Architectural Design

圖 10.6 「安全家」安全功能的架構環境圖

Page 38: 架構設計 Architectural Design

圖 10.7 「安全家」安全功能原型的 UML關係

Page 39: 架構設計 Architectural Design

圖 10.8 「安全家」頂層元件的整體架構的結構

Page 40: 架構設計 Architectural Design

圖 10.9 元件細化的安全功能實例

Page 41: 架構設計 Architectural Design

圖 10.10 交易流向•交易被評估,流向動作路徑 (action paths)之一。•交易中心 (transaction center)。

Page 42: 架構設計 Architectural Design

圖 10.11「安全家」的環境層級 DFD

層級 0的模型:基本的系統模型或環境圖

Page 43: 架構設計 Architectural Design

圖 10.12「安全家」安全功能層級 1的 DFD

描述安全功能改進後的資料流向

Page 44: 架構設計 Architectural Design

圖 10.13層級 2的 DFD改進監控感測器轉換

檢查,獲得如圖 10.14所示層級 3的資料流向圖

Page 45: 架構設計 Architectural Design

圖 10.14 具有流向界線的監控感測器層級 3的 DFD

圖中的 DFD對監控感測器子系統在架構設計的「初步版本」中已含括充分的細節。

Page 46: 架構設計 Architectural Design

圖 10.14 具有流向界線的監控感測器層級 3的 DFD

•一條進入路徑,三條流出的路•沒有明顯的交易中心轉換流向

Page 47: 架構設計 Architectural Design

圖 10.14 具有流向界線的監控感測器層級 3的 DFD

Page 48: 架構設計 Architectural Design

圖 10.15 監控感測器的第一層級分解

•最高層級 (top-level)元件實行決策,而低層級 (low-level)元件實行大多數的輸入、計算和輸出工作。中間層級元件則實行某些控制,並執行適度的工作。

Page 49: 架構設計 Architectural Design

圖 10.16 監控感測器的第二層級分解

•轉換個別的圓圈成架構中適當的模組。•由轉換中心界限開始,並沿著進入路徑,然後流出路徑以向外移動,轉換被映對到軟體結構中的從屬(subordinate)層級內。

Page 50: 架構設計 Architectural Design

圖 10.17 監控感測器的第ㄧ次反覆結構

Page 51: 架構設計 Architectural Design

圖 10.18監控感測器所改進的程式結構

Page 52: 架構設計 Architectural Design

圖 10.19使用者互動子系統的第二層級DFD

•從召喚指令處理所發散的二個活動路徑的流動,顯示出具有轉換流向的特性。•必須為此兩種流動型態建立流向界限。

Page 53: 架構設計 Architectural Design

圖 10.19使用者互動子系統的第二層級DFD

• 召喚指令處理即是交易中心。

• 進入路徑和所有動作路徑必須被隔離。每個活動路徑必須要評估它的個別流向特性。例如,「密碼」路徑 (在圖中被陰影區域所含括 )有轉換的特性。

• 進入、轉換與流出的流向以界限指示。

Page 54: 架構設計 Architectural Design

圖 10.20 交易映對

•交易流向被映對到包含進入分支與發送分支的架構中。•進入分支結構的發展與轉轉換映對換映對很類似

Page 55: 架構設計 Architectural Design

圖 10.21使用者互動第一層級子系統的分解•讀取使用者指令與啟動 /解除系統直接映對到架構中而不需要中介控制模組。•在交易中心裡,啟動指令處理直接映對到一個相同名稱的發送器模組。•系統組態與密碼處理控制器的產生如圖所示。

Page 56: 架構設計 Architectural Design

圖 10.22使用者互動子系統的第一次反覆架構

Page 57: 架構設計 Architectural Design

從資料流向圖轉換成架構設計

ProgramProgramArchitectureArchitecture

Page 58: 架構設計 Architectural Design

Transform Mapping

data flow model

"Transform" mapping

ab

c

d e fg h

ij

x1

x2 x3 x4

b c

a

d e f g i

h j

Page 59: 架構設計 Architectural Design

Factoring

typical "worker" modules

typical "decision making" modules

direction of increasing decision making

Page 60: 架構設計 Architectural Design

First Level Factoring

main

program

controller

input

controller

processing

controller

output

controller

Page 61: 架構設計 Architectural Design

Second Level Mapping

D

C

B A

A

C

B

Dmapping from the flow boundary outward

main

control

Page 62: 架構設計 Architectural Design

Transaction Mapping

data flow model

ab

t

de f

gh

i

j

kl

mn Mapping

b

a

x1

t

x2

d e f

x3

g h x3.1

i j

k

x4

l m n

Page 63: 架構設計 Architectural Design

Q1有什麼軟體可以協助我們作架構設計嗎?

• Adalon 由 Synthis 公司 (www.synthis.com)所開發,是為了設計以網頁為基礎的元件架構的建構設計的工具

• Objecti 由 microTOOL mbH(www.microtool.com)所開發,以 UML為基礎的工具,他導致架構 (例如, Coldfusion、 J2EE、 Fusebox)可接受以元件為基礎的軟體工程

• Rational Rose 由 Rational(www.rational.com) 所開發,也是以 UML為基礎的工具,支援所有架構設計面向的設計工具

Page 64: 架構設計 Architectural Design

Q2架構、模式和框架這些術語有什麼不一樣?

• difference between architecture /pattern /framework

• architecture 提供你大的圖,並確保你得到對的東西

• Patterns• similar problems led to similar designs

• They give us a common vocabulary for common designs.

• Frameworks • Unlike a design pattern, a framework is not a general

design rule. It consists of classes that provide functionality in a particular domain. Typically, a framework uses multiple patterns.

Page 65: 架構設計 Architectural Design

Q3可否介紹幾種『架構的描述語言』?• Architecture description languages (ADLs)

• Rapide(poset.stanford.edu/rapide/)建構於偏序集(partial ordered set)的概念上

• UniCon(www.cs.cmu.edu/~UniCon)根據設計者發現有用的抽象化概念定義軟體架構

• Aesop(www.cs.cmu.edu/~able/aesop/)針對型態重複使用的問題

• Wright(www.cs.cmu.edu/~able/wright/)使用述語(predicates)而使架構的型態正式化,因此允許靜態核查已決定一個架構的穩定和完整性

• Acme(www.cs.cmu.edu/~acme/)是一種第二代的 ADL• UML(www.uml.org/)包括許多需要作為架構描述的製品,但並不像

其他的 ADL一樣完整• AADL 、 xADL、 Darwin 、 DAOP-ADL

• Common elements of an ADL are component, connector and configuration

Page 66: 架構設計 Architectural Design

Q4 還有沒有其他的架構型態與模式 ?• There are many common ways of designing computer software modules

and their communications, among them: • Blackboard • Client-server • Database-centric architecture • Distributed computing • Event Driven Architecture • Implicit invocation • Monolithic application • Peer-to-peer • Pipes and filters • Plugin • Representational State Transfer • Structured (module-based but usually monolithic within modules) • Software componentry (strictly module-based, usually object-

oriented programming within modules, slightly less monolithic) • Service-oriented architecture • Search-oriented architecture • Space based architecture • Shared nothing architecture • Three-tier model • Rule evaluation