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

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.運行時的性能保證:
代碼層面:使用設計模式;
運行時的時間空間複雜度進行調優,某一階段對代碼進行性能調優;
運行時,組件:分佈式系統,多線程程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章