HITSC_1_Views and Quality Objectives of Software Construction

Ch1ldKing發表於2024-05-25

軟體視角Views

三維度八檢視
Code-level:程式碼邏輯,函式、方法、類等
component-level:物理組織,包,庫,檔案等
Moment:某一時刻
Period:某一段時間的變化

Build,Code,Moment

一段具體程式碼實現,也可用AST,或者類圖。用它們表示一段程式碼

Build,Code,Period

一段程式碼的變化(Git追蹤)

Build,Component,Moment

某一時刻的專案結構
這部分講解了庫的知識


編譯時,需要告訴編譯器採用了哪些檔案。靜態連結把庫檔案拷入程式碼,

Build,Component,Period

軟體版本管理,SCI(配置項)

VCS

控制版本

Runtime

  1. 可執行程式:編譯後的程式,可以放入記憶體執行
  2. 庫:常用指令,被可執行程式呼叫
  3. 配置和資料檔案:被可執行程式從硬碟中讀取
  4. 分散式程式:多個程式互聯,如客戶端和伺服器端互動

Run,Code,Moment

記憶體裡變數層面的狀態

Run,Code,Period

一段時間內發生的日誌

Run,Component,Moment

UML不同元件之間的互動

Run,Component,Period

系統層面的日誌,元件(程式)執行狀態

視角轉化

比如,程式碼到元件是設計,構建,編譯等
從構建到執行是debug,testing等

質量因素

Correctness、Robustness、Extendibility、Reusability、 Compatibility 、Efficiency、Portability、Ease of use、Functionality、Timeliness、other

Correctness

按照 規約 執行

  1. 測試與除錯
  2. 防禦式程式設計
  3. 形式化方法

Robustness

健壯性:針對異常
未被spec覆蓋的情況就是異常情況

可擴充性

ADT設計

Compatibility

相容性,由保持設計的同構性得到。透過標準化檔案和介面等實現

對質量因素的平衡

我們是一個工程師的工作,需要平衡需求與質量,以實現在有限的資金內實現效益最大化
雖然需要折中,但“正確性”絕不能與其他質量因素折中

OOP

正確性和健壯性:透過spec、testing、checkrep等,實現更可靠的程式
可擴充性和複用性:模組化程式

軟體中五個關鍵因素

  1. 優雅的程式碼
  2. 設計出可複用
  3. 低複雜性,易擴充
  4. 沒有錯誤,安全應對bug(做不到一點bug都沒有)
  5. 高效的執行

可理解性

構建:程式碼可理解性高,並且有spec,設計模式;專案結構可理解性高。一段時間內是程式碼重構和版本控制
執行:日誌格式

可複用性

構建:程式碼上採用ADT/OOP,採用設計模式,分離介面等;元件上採用API和庫實現
執行:動態連結其他庫和元件
image.png

可維護性/易擴充性

構建:程式碼上模組化設計,降低耦合度、SOLID六大設計模式;元件上同樣為SOLID;一段時間是VCS
image.png

健壯性

構建:程式碼上錯誤處理、測試有限、Exception、防禦式程式設計等;一段時間上持續整合並測試
執行:單元;整體測試;Debug和記憶體轉儲;一段時間上日誌輸出
image.png

表現

構建:程式碼調優
執行:程式碼上空間複雜度(記憶體管理)、時間複雜性(IO效能),元件上分散式系統;一段時間內是對效能進行資料收集、分析、調優,元件上多執行緒

相關文章