外部質量和內部質量:外部質量影響使用者,內部質量影響軟體本身和他的開發者,外部 質量取決於內部質量。最後只有外部質量起作用。
外部質量:
1.正確性(按照預先定義的「規約」執行,最重要的質量指標),健壯性(針對異 常情況的處理,出現異常時不要「崩潰」,未被 specification 覆蓋的情況即為「異常情況」);
2.可擴充套件性(規模越大,擴充套件起來越不容易,為什麼要擴充套件:應對變化,簡約、分離);
3.可復用 性(一次開發,多次使用);
4. 相容性(不同的軟體系統之間相互可容易的整合,保持設計的 同構性)
5. 效能(效能毫無意義,除非有足夠的正確性,對效能的關注要與其他質量屬性進行折中,過度的優化導致軟體不再適應變化和復用),
6. 可移植性(軟體可方便的在不同的技 術環境之間移植,硬體、作業系統)
7. 易用性((容易學、安裝、操作、監控,給使用者提供詳 細的指南)
8. 功能性
9. 及時性
內部質量:可讀性,易於看懂,簡約性,大小。
正確的軟體開發過程中,開發者應該將不同質量因素之間如何做出折中的設計決策和標 準明確的寫下來,雖然需要折中,但「正確性」絕不能與其他質量因素折中。
(srp) the single responsibility principle 單一責任原則:不應該有多於 1 個原因讓你的 adt 發生變化,否則就拆分開。乙個類,乙個責任。最簡單的原則,卻是最難做好的原則。
(ocp) the open-closed principle 開放-封閉原則:對擴充套件性的開放(模組的行為應是 可擴充套件的,從而該模組可表現出新的行為以滿足需求的變化)、對修改的封閉(但模組自身 的**是不應被修改的,擴充套件模組行為的一般途徑是修改模組的內部實現,如果乙個模組不 能被修改,那麼它通常被認為是具有固定的行為)關鍵的解決方案:抽象技術。用繼承和委
託修改類的行為。
(lsp) the liskov substitution principle liskov 替換原則:子型別必須能夠替換其基型別、
派生類必須能夠通過其基類的介面使用,客戶端無需了解二者之間的差異。
(isp) the inte***ce segregation principle 介面聚合原則:不能強迫客戶端依賴於它們不 需要的介面:只提供必需的介面。客戶端不應依賴於它們不需要的方法。「胖」介面具有很多 缺點,胖介面可分解為多個小的介面,不同的介面向不同的客戶端提供服務,客戶端只訪問
自己所需要的埠。
(dip) the dependency inversion principle 依賴轉置原則:抽象的模組不應依賴於具體
的模組,具體的模組應依賴於抽象的模組。上層 client 的**中直接嵌入了對下層具體實現 機制的呼叫,上層 client 的**面向抽象介面程式設計,隔離對下層具體實現機制的直接接觸。 delegation 的時候,要通過 inte***ce 建立聯絡,而非具體子類。
軟體構造複習 設計模式2
產品 工廠都是介面,具體產品 具體工廠實現介面,每個工廠只生產乙個產品 抽象工廠和工廠類似,只是乙個工廠可以生產一系列配套的元件,比如windows的視窗 按鈕等等,不再贅述 當載入物件代價較大時,可用 快取,避免重複載入 另一方面,也可用作 防火牆 將內外部資料隔離 類似新聞推送,明星維護觀察者佇...
軟體構造複習
1.3.1 瀑布式開發過程 基本活動 制定計畫 需求分析 軟體設計 程式編寫 軟體測試 執行維護 問題 階段劃分僵硬,每個階段不能預設,而且產生大量文件,增加了工作量 開發是線性的,只有等到整個過程的末期才能見到開發成果 可執行軟體,不利於快速響應變化的需求 早期的錯誤要等到開發後期的測試階段才能發...
軟體構造複習3 5
vs equals 對於基本資料型別,使用 非基本資料型別,其值表示的是位址,類似指標。物件型別使用equals,使用的是overload,因此要注意好引數的型別,不同的型別會導致對比的依據不同 對於inreger,使用 要求範圍在 128 127之間,可以直接比較 overload vs over...