圖中有三個次元:時間(瞬時的角度、周期的角度),編碼(構造開發階段、運作階段),(代碼層級、子產品層級)
目錄
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(時間日志):系統的調用、使用情況