1. 程式人生 > 其它 >[軟體構造] Views and Quality Objectives of Software Construction

[軟體構造] Views and Quality Objectives of Software Construction

1 Multi-dimensional software views


軟體在計算機中的地位:

下面這張圖非常重要:

這就是多維軟體檢視,下面將圍繞這張圖進行分析。

首先先總括一下:
Moment表示的是特定時刻軟體的狀態、Period表示的是軟體狀態隨時間的變化。
Build-time表示的是程式開發時,Run-time表示的是程式執行時。
Code-level表示的是程式碼的邏輯組織、Componment-level表示的是程式碼的物理組織。


1.Build-time Views


構造階段主要有以下步驟:
idea→需求→設計→程式碼→打包→釋出

a.Build-time, moment, and code-level view

詞彙層面
    半結構化編碼:近乎自然語言的風格+遵循特定的程式設計語法

語法層面
    AST(抽象語法樹):徹底結構化,將原始碼變為一棵樹,對樹做各種操作==對原始碼的修改

語義方面
    使用類圖(UML)來描述介面,類,屬性,方法和關係。

b.Build-time, period, and code-level view

程式碼變化

c.Build-time, moment, and component-level view


    原始碼在被封裝成檔案、檔案被封裝成包,元件和子系統。
    開發者像使用程式語言指令一樣使用庫(library)中的功能

兩種匯入庫(library)的方法:
– Static linking (靜態連結)
– Dynamic linking (動態連結)
靜態連結發生在構造階段,簡單點講就是用哪個庫,直接把這個庫的程式碼copy一份就行。
動態連結發生在執行階段,程式執行時確定呼叫哪些庫,根據標記裝載庫至記憶體。

d.Build-time, period, and component-level view   

版本控制

2.Runtime Views

a.Run-time, moment, and code-level view


    快照圖(Snapshot diagram)[非常重要]
    記憶體資訊轉儲


b.Run-time, period and code-level view


    UML中的序列圖
    執行追蹤


c.Run-time, moment, and component-level view


    UML中的部署圖

d.Run-time, period, and component-level view


    事件日誌

最重要的是將下面這張圖片熟記於心:

檢視之間轉換

3 Quality properties of software 
systems


(1) External quality factors


a.Correctness(正確性)

    最重要的質量指標

b.Robustness(魯棒性)
c.Extendibility(可擴充套件性)
d.Reusability(可重用性)
e.Compatibility(相容性)
f.Efficiency(效能)

    許多質量目標是相互衝突的
    引起衝突的大多都是效能
    過早優化是萬惡之源

g.Portability(可移植性)
h.Ease of use(易用性)
i.Functionality(功能性)

    過度追求功能的增加

j.Timeliness(及時性)


(2) Internal quality factors


內部質量因素通常作為外部質量因素的部分度量
eg 可讀性,複雜性,尺寸


(3) Tradeoff between quality properties


    正確性放在首要地位
    在目前軟體行業,有4個突出:
    – 正確性和魯棒性→可靠性
    – 可擴充套件性和可複用性→模組化


4 Five key quality objectives of software construction


    優雅而美觀的程式碼:易於理解,易懂
   

    設計/重複使用:便於開發
   

    低複雜性:便於變更,易於擴充套件
   

    魯棒性和正確性:不受錯誤的影響,不容易出錯
   


Summary