軟體構造筆記 第一章 軟體構建的質量目標

2021-09-24 11:52:46 字數 1823 閱讀 9695

1.內部質量和外部質量的區別:

最重要的是外部質量,因為它是使用者直接可以感受到的;而對其起著決定性作用的是內部質量。

2.正確性和健壯性:取決於規格說明。

符合規格說明的即為正確,異常即為規格說明沒有涉及的部分,而錯誤是不符合規格說明。

3.可拓展性:軟體的體系結構越簡單,模組的自治性越強就越容易適應外部變化(可拓展性)

4.可復用性與相容性:

可復用性類似於庫的功能;

相容性強調程式之間的資訊互動(如不同作業系統中的檔案格式不同,導致另乙個作業系統中不能直接閱讀另乙個系統上傳輸過來的檔案,這就涉及到相容性);

解決不相容問題的關鍵:標準化協議(檔案格式、資料結構、使用者互動介面(作業系統型別相關))

5.效率:軟體對硬體盡可能少的需求能力;

注意:效率是以正確性為前提的,而其他可拓展性、可復用性則可以和它進行折中;

提高效率可進行極致優化的方面:演算法、i/o、記憶體管理;

6.可移植性不僅僅包括物理上的硬體環境,還包括軟硬體環境;

7.易用性:包括安裝、執行、監控的容易性;

8.功能性:過多的功能造成質量目標一致性的缺失,影響易用性;

解決方式:通過質量提公升技術保證增加功能時,其他質量不變、debug來提高質量;在開發過程中,保證最先選擇的質量目標的優先地位不變;

9.時效性 可驗證性、完整性、可修復性

10.經濟性:不超過預算。

效能折中

完整性 vs 易用性 (完整性防止資訊的非法訪問、篡改)

經濟性 vs 功能性 (經濟性 和預算相關)

效率性 vs 可移植性 (高效要求與特定硬體環境完美契合)

效率性 vs 可復用性 (可復用性要求解決問題更具有普遍性,而不是針對某一特定問題)

經濟性 vs 可復用性

時效性 vs 可拓展性 (為了短時間內滿足客戶需要,常使用可變性較低的快速應用開發技術)

小結:效率性與特定軟硬體環境有關,效率越高,耦合越緊(利用某環境的特性優勢)

可靠性包括正確性、健壯性;模組化可以解決可拓展性與可復用性問題。

提高oop質量的方法,這裡只給出容易忽略的地方。

1.正確性:封裝 簡化每個模組的功能

2.健壯性:封裝 錯誤處理

3.可拓展性:資訊隱藏 模組封裝

4.可復用性:模組化 使用設計模式(就是後面學的啦)

5.相容性:標準化模組與介面

6.可移植性:資訊隱藏 抽象

7.易用性:gui元件 框架

8.效率:復用元件(對特定系統有封裝後的標準化介面,既滿足了效率,有具有通用性)

9.經濟性:復用

10.功能性:增強可拓展性

在我們實際軟體開發中,要提高下列質量目標,實際可行的措施有:

1.可理解性:

**層面:新增注釋,為方法增加specification,變數的命名、**風格等

元件層面:包、檔案、工作空間的組織、命名

在執行過程中,使用log、trace等。

2.可復用性:

**層面:adt、oop的實現與介面分離,類的繼承,引數泛型化,使用設計模式,成員物件之間的組合、**關係,方法的過載、重寫等等。

元件層面:類庫、框架的使用。

3.健壯性的保證:

**層面:錯誤異常處理,斷言的使用,防禦性程式設計,測試優先程式設計

元件:單元測試

開發的乙個階段:進行回退形測試

執行時:通過觀察堆疊進行debug,檢視某個階段的logging,或者tracing

4.執行時的效能保證:

**層面:使用設計模式;

執行時的時間空間複雜度進行調優,某一階段對**進行效能調優;

執行時,元件:分布式系統,多執行緒程式。

第一章 軟體構建

1.軟體構建是程式開發活動中必不可少的活動。2.軟體構建包括 設計,編碼,除錯,整合,測試,維護。3.軟體構建之外的活動 架構的設計,需求的分析。4.軟體構建對產品的質量起著至關重要的作用。5.乙個程式設計師對於軟體構建了解的程度決定了優秀的程度。6.軟體構建的具體任務 task 驗證有關的基礎工作...

軟體構造第一章

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

軟體構造第一章總結

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