天天看點

【軟體構造筆記】1.軟體的多元視圖1.構造階段(Build-time Views)2 運作階段(Runtime Views)(運作時:程式被載入目标機器,開始執行)3.軟體視圖之間的轉換:

【軟體構造筆記】1.軟體的多元視圖1.構造階段(Build-time Views)2 運作階段(Runtime Views)(運作時:程式被載入目标機器,開始執行)3.軟體視圖之間的轉換:

圖中有三個次元:時間(瞬時的角度、周期的角度),編碼(構造開發階段、運作階段),(代碼層級、子產品層級)

目錄

1.構造階段(Build-time Views)

1.1Build-time,moment,and code-level view構造階段,瞬時視角,編碼層面

1.2 Build-time ,period,and code-level view(關注在編碼的時候代碼随時間的變化)

1.3 Build-time,moment,and component-level view(開發階段、瞬時角度、子產品化視圖)

1.4 Build-time,period,and component-level view

2 運作階段(Runtime Views)(運作時:程式被載入目标機器,開始執行)

2.1 Run-time,moment,and code-level view

2.2 Run-time,period,and code-level view

2.3 Run-time,moment,and component-level view

2.4 Run-time,period,and component-level view

3.軟體視圖之間的轉換:

1.構造階段(Build-time Views)

Code-level view(編碼階段):代碼的邏輯組織

Component-level view(結構角度):代碼的實體組織

Moment view(瞬時角度):特定時刻的軟體形态

Period view(周期角度):軟體形态随時間的變化

1.1Build-time,moment,and code-level view構造階段,瞬時視角,編碼層面

(在某個時間點上建構代碼的時候,代碼呈什麼樣的展現形式)

三個層面:

詞彙層面:面向詞彙的源代碼(Lexical-oriented source code)——半結構化,代碼+注釋

文法層面:面向文法的程式結構,AST(Syntax-oriented program structure: e.g., Abstract Syntax Tree)——AST:徹底結構化,将源代碼變為一棵樹,對樹做各種操作==對源代碼的修改

語義層面:向語義的程式結構,(Semantics-oriented program structure: e.g., Class Diagram )——程式中有多少類以及類與類之間的關系。                                                                       

Interface(接口)-Class(類)-Attribute(屬性)-Method (方法)(Class Diagram)

1.2 Build-time ,period,and code-level view(關注在編碼的時候代碼随時間的變化)

Code churn(代碼變化)——版本控制工具

1.3 Build-time,moment,and component-level view(開發階段、瞬時角度、子產品化視圖)

Package, File, Static Linking, Library, Test Case, Build Script (Component Diagram)

(代碼的組織情況)關注如何組織程式檔案

利用子產品化形式組織,例如把功能類似的放入一個包(Package),把完成某一功能的類或者檔案放入一個包裡

調用第三方庫檔案(Library),連結庫檔案(Static Linking與Dynamic Linking)

靜态連結(Static Linking)發生在構造階段,庫被拷貝進入代碼形成整體,執行的時候無需提供庫檔案。友善程式的建構(優點),難以更新(缺點)

Component Diagram in UML,程式的子產品圖

1.4 Build-time,period,and component-level view

 Configuration Item(配置項), Version(版本)

(代碼的改變情況)在某個階段,對代碼做了什麼樣的變化——版本控制工具(VSC,Version Control System,支援協同開發)

2 運作階段(Runtime Views)(運作時:程式被載入目标機器,開始執行)

Code-level view(代碼層面):邏輯實體在記憶體中如何呈現

Component-level view(構件層面):實體實體在實體硬體環境中如何呈現

Moment view(瞬時角度):邏輯/實體實體在記憶體/硬體環境中特定時刻的形态如何

Period view(周期角度):邏輯/實體實體在記憶體/硬體環境中的形态随時間如何變化

可執行程式(Executable Programs):一次性編譯将程式編譯為機器碼(可移植性差,但是非常友善簡單);程式完全解釋執行(執行一行代碼,編譯一行)将程式檔案轉換為解釋性位元組碼;

動态連結(Dynamic Linking):庫檔案不會在構造階段被加入可執行檔案,僅做标記;程式運作時,根據标記裝載庫到記憶體中;釋出軟體時,記得将程式所依賴的所有動态庫都複制給使用者。       優點:易于更新;

配置檔案(Configuration and Data Files)通過配置檔案,告知程式讀取不同檔案資源的時候采取不同的方式

分布式程式(Distributed Programs)需要多個運作程式,分别部署于多個計算機實體環境

2.1 Run-time,moment,and code-level view

(Code Snapshot, Memory dump)

(關注程式運作過程中,有多少個對象以及每個對象的值是什麼)

代碼快照圖(Snapshot diagram),記憶體資訊轉儲(Memory dump)

2.2 Run-time,period,and code-level view

(Execution stack trace, Concurrent multi-threads)

執行跟蹤(Execution tracing)用日志的方式記錄程式執行的調用次序

2.3 Run-time,moment,and component-level view

Package, Library, Dynamic linking, Configuration, Database, Middleware, Network,

(運作階段,在某個時刻下從結構性或者子產品化的角度看代碼的情況)

2.4 Run-time,period,and component-level view

Event log, Multi-processes, Distributed processes

Event log(時間日志):系統的調用、使用情況

3.軟體視圖之間的轉換:

【軟體構造筆記】1.軟體的多元視圖1.構造階段(Build-time Views)2 運作階段(Runtime Views)(運作時:程式被載入目标機器,開始執行)3.軟體視圖之間的轉換: