軟體構造 第一章第一節 軟體構造的多維視角

2022-06-29 13:39:07 字數 4018 閱讀 3496

從八個維度解釋軟體構造的物件是什麼,並簡單介紹在每個維度的刻畫技術。

不同視角間的轉換

notes

【軟體的構成要素】- 軟體=演算法+資料結構

- 軟體=程式+資料+文件(80年代)

- 軟體=modules(components)+data/control flow 模組(元件)+資料流/控制流

【軟體系統的組成】software system =

programs(ui,演算法,utilities(實用工具 function),apis,test cases)

+ data(files,database)

+ documents(srs(需求規格宣告),sdd(設計規格宣告),user manuals)

+ users(誰來使用)

+ business objective(為什麼使用它)

+ social environment(法規)

+ technological environement(如何部署)

+ hardware / network(硬體)

(前三個是主要)【軟體構造的多維視角】1.階段:構建 || 執行

2.動態:時刻 || 週期

3.級別:** || 元件

## buildtime概述

想法 -> 需求 -> 設計 -> ** -> 可安裝可執行的包

- **是如何組建起來的?(依賴關係)

- 體系架構 源**如何組成檔案

- 時間角度 源**在特定的時間什麼樣,隨著時間如何變化【code-level;build-time;moment】三種相互關聯的形式

- 面向詞法 半結構化源**

- 面向語法 (ast抽象語法樹)半結構化的源**變成語法樹(編譯器能夠處理)

- 面向語義 uml(參考軟體工程課程內容)

【code-level;build-time;period——code churn(**變化)】- churn trends

- **變化包括新增、修改、刪除【component-level ;build-time;moment】- 源**如何組織成檔案——通過類庫

- 檔案被壓縮進package,邏輯上進入components(元件)and sub-systems(子系統)

- 鏈結技術(動態 / 靜態)【類庫(library)】**

- 作業系統自帶

- 語言自帶的sdk

- 第三方

- 自己編寫

鏈結到類庫

- 編譯器形成關於外部庫的鍊錶,編譯器找到庫的目標檔案,複製加到程式中

【component-level ;build-time;period】- 版本控制(git、svn)

- 版本演化圖(sci)

- software configuration item(軟體生命週期各個階段活動的產物,經審核後可稱為軟體配置項)

- version:major.minor.patch

- software evolution(軟體演化)## runtime概述

【執行時軟體的高階概念】- 可執行程式:cpu能直接理解執行的指令序列(二進位制檔案)

- 庫檔案:可復用的**,庫檔案本身不能執行【可執行程式的四種形式】

【本地機器碼】- 載入記憶體——os呼叫機器碼

- 優點:cpu直接執行,速度快;

- 缺點:可移植性差;【完全解釋】- basic與unix中的shell

- 作業系統提供解析器,一邊解析,一邊執行

【自解碼】- 源**編譯為自解碼,然後通過jvm變為機器碼

- 或自解碼通過解析器進行邊解析邊執行

- 優點:跨平台

- 缺點:速度慢

【靜態鏈結】

- 類庫就像是特別的物件檔案的集合

- 編譯前就需要知道方法對應的檔案

- 構建時,從類庫中提取檔案並複製到可執行檔案中

【動態鏈結】- 作業系統為應用程式提供了豐富的函式呼叫,這些函式呼叫都包含在動態鏈結庫中。在可執行檔案裝載時或執行時,由作業系統的裝載程式載入庫。   

- 優點:多個程式可以共享同乙個副本,減少記憶體占用;打包方便,方便庫公升級。

更多關於動態鏈結與靜態鏈結

【配置檔案和資料檔案】- 程式呼叫作業系統,來請求將資料讀入記憶體;

- configuration:儲存程式的引數

- data:儲存程式中如位圖圖形影象、數位化波形音訊等檔案【分布式程式】- 多埠或者多執行緒

- 如:qq通過客戶端訪問伺服器(client & server)

- 健壯性要求很高【code level;run-time;moment】- 快照圖:著眼於目標計算機記憶體中的變數級執行狀態,體現某時刻記憶體中變數的情況。

- 記憶體轉儲(memory dump):常發生在異常退出時,把記憶體中資訊寫到檔案中(常用來除錯)

【code level;run-time;period】- uml時序圖(類之間的段落關係)

- 執行跟蹤:根據跟蹤日誌裡的資訊進行除錯或診斷軟體問題

【component level;run-time;moment】- uml部署圖:程式中的各個模組在物理上如何分布;表明客戶端、伺服器之間的關係。

【component level;run-time;period】- 事件日誌:每個事件有唯一編號

- 比較「執行跟蹤」和「事件日誌」

【transformations between views】- 從無到有:

- adt/oop

- 可理解性

- 從**變為元件:

- design

- build

- 構建階段到執行階段

- inatall

軟體構造第一章

軟體構造第一章 1 構建時,時刻和 級檢視 源 如何通過基本程式塊 如函式,類,方法,介面等 以及它們之間的依賴關係進行邏輯組織。三種相互關聯的形式 面向詞彙的源 面向語法的程式結構 例如,抽象語法樹 ast 面向語義的程式結構 例如,類圖 1.1軟體構建的多維檢視 源 軟體開發中最重要的資產 基於...

sparql第一章第一節

第2章對rdf提供了一些背景,語義網,並在sparql 適合,但在進入之前,讓我們從動手實踐開始。執行sparql查詢,把背景部分過於理論。但首先,sparql是什麼?這個名字是乙個遞迴的縮寫和sparql協議 rdf查詢語言,它是由w3c的一組規範描述的。w3c或全球資訊網聯盟是同乙個標準機構。負...

軟體構造第一章總結

軟體構造的實質 影響軟體質量的因素 從階段層面看 構造vs執行 build vs run 從動態層面看 時刻vs週期 moment vs period 從級別層面看 vs模組化 code vs component build time,moment and code level view 關注詞彙層...