code-level **的邏輯組織
component-level **的物理組織
moment view 指特定時刻的軟體形態;
period view 指軟體形態隨時間的變化
庫檔案不會在build階段被加入可執行軟體,僅僅做出標記
程式執行時,根據標記裝載庫至記憶體
發布軟體時,將程式所依賴的所有動態庫都複製給使用者
1.不用重新建立可執行檔案,就可以把依賴庫更新到更新的版本
2.作業系統可以優化記憶體使用,只將庫的乙個副本載入到記憶體中,然後與其他需要相同庫的程式共享它
snapshot diagram(
**快照圖:描述程式執行時記憶體裡變數層面的狀態
軟體系統的質量指標包括:外部質量因素和內部質量因素。
外部質量因素:使用是否簡易,速度效能是否優秀等,其影響到
的是使用者。而內部質量因素影響到的是軟體本身和開發者。
外部質量因素的種類:
(1) 正確性(correctness)。
關注有關軟體是否按照預先定義 的「規約」執行。是至高無上的質量指標。
a. 在軟體系統中進行分層,每一層都保證自己的正確性,同時假
設其下層是正確的。其與可復用性密切關聯。
b. 測試和除錯,發現不正確,消除不正確。這與健壯性密切關聯
c. 防禦性程式設計,在寫程式時就確保正確性。其與健壯性相關。
d. 形式化方法:通過形式化驗證發現問題。可通過形式語言
(2) 健壯性(robustness)。針對異常情況進行處理。
-健壯性是對正確性的補充:正確性要求軟體的行為要嚴格地符合
規約中定義的行為。而健壯性要求在出現規約定義之外情形的時
候,軟體要做出恰當的反應。
在程式出現異常時,健壯性要保證程式不「崩潰」。
這就關係到後續學習的異常處理機制。
健壯性所言的「正常」與「不正常」是主觀的而非客觀的。
- 未被規約覆蓋的情況即為「異常情況」
(3) 可擴充套件性(extendibility)。
關注的是:對軟體的規約進行修改,是否足夠容易。
軟體系統的規模越大,擴充套件起來越不容易。當傳統的方法不足以
解決新的,變化的問題時,就要考慮對其進行擴充套件。
增強可擴充套件性的兩個原則:
a. 簡約主義設計(design simplicity)。
b. 分離主義設計(decentralization)。
(4) 可復用性(reusability)關注的是:
關注的是:軟體內容一次開發,多次使用,而適用於不同應用的能力。要從不同軟體系統中發
現共性,提取共性。
(5) 相容性(compatibility)。
關注的是:不同軟體系統之間的相互可容易的整合。乙個軟體系統的開發不可能實在真空中進行
的,其與其他系統一定存在互動和關聯。
要保證相容性,就要保持設計的同構性,即要進行標準化:
a. 標準化檔案格式。
b. 標準化資料結構。
c. 標準化使用者互動。
軟體構造複習2
外部質量和內部質量 外部質量影響使用者,內部質量影響軟體本身和他的開發者,外部 質量取決於內部質量。最後只有外部質量起作用。外部質量 1.正確性 按照預先定義的 規約 執行,最重要的質量指標 健壯性 針對異 常情況的處理,出現異常時不要 崩潰 未被 specification 覆蓋的情況即為 異常情...
軟體構造 Lab2總結
af 抽象函式,代表值到其對應的抽象值的對映。ri 表示不變數,代表某個值必須滿足的條件。safety from rep expose 安全保證,描述adt如何防止表示暴露。checkrep 檢查表示不變數是否始終被滿足。可變型別 提供修改物件值的方法,存在表示暴露的風險,可採用防禦式複製保護可變型...
軟體構造複習 設計模式2
產品 工廠都是介面,具體產品 具體工廠實現介面,每個工廠只生產乙個產品 抽象工廠和工廠類似,只是乙個工廠可以生產一系列配套的元件,比如windows的視窗 按鈕等等,不再贅述 當載入物件代價較大時,可用 快取,避免重複載入 另一方面,也可用作 防火牆 將內外部資料隔離 類似新聞推送,明星維護觀察者佇...