1. 程式人生 > >【software construction】第一章第二節 軟件開發的質量屬性

【software construction】第一章第二節 軟件開發的質量屬性

平臺 大小 模型 規格 很多 版本 jpeg b- topo

?軟件構造第一章第二節 軟件開發的質量屬性

OutLine

  • 軟件系統的質量屬性

    • 外部與內部質量因素
    • 重要的外部質量因素
    • 質量因素之間的權衡
  • 軟件構建的五個關鍵質量目標

    • 了解有哪些質量目標
    • 違反有什麽後果
    • 每種質量因素需要研究的施工技術

Notes

【外部和內部質量屬性】
  • 外部質量屬性是指正確性、外觀、速度等影響客戶的屬性
  • 內部屬性是指易於理解、可讀性等影響開發人員和軟件自身的屬性
  • 二者關系:外部受內部制約

# 外部質量屬性

【正確性】
  • 在規格說明書描述範圍之內滿足正確性
  • 保證正確性的技術
    • 有限制的正確:只保證自己層面正確,假設調用的都是正確的
    • 測試與調試
    • 防禦性編程
    • 形式化編程(采用很多數學技術)
【健壯性】
  • 碰到異常情況進行適當的響應
  • 出現規格說明書說明之外的情況由健壯性處理
    • 響應異常情況
    • 給出錯誤提示
    • 正常退出或降級
【可擴展性】
  • 軟件產品適應規格變化的容易程度
  • 傳統方法通過固化需求(瀑布模型)進行編程
  • 兩個基本策略
    • 設計簡潔
    • 離散化:低耦合
【可復用性】
  • 軟件模塊能否被其他程序很方便地使用
  • 例子:開發備註、封裝
【兼容性】
  • 能夠與其他人員進行交互
  • 跨平臺、跨軟件
  • 實現方法:一致性和標準化(一致的方法和標準)
    • 標準文件格式
    • 標準數據結構
    • 標準用戶接口
    • 最通用:標準協議
【效率】
  • 程序運行中對CPU、硬盤的占用帶寬;
  • 實現效率是不能犧牲正確性,要再多指標之間權衡
  • 實現方法:
    • 好的算法
    • I/O技術
    • 內存管理
  • 功能問題都可以加一層抽象進行處理;性能問題都可以去掉一層抽象來解決
【可移植性】
  • 是否容易由一個環境轉移到另一個環境
  • 由於訪問OS本地類庫、插件等問題導致的移植後無法正常運行
【應用性】
  • 用戶是否容易使用,不影響專業人員的使用情況下,方便初學者
  • 方法:
    • 結構清晰的設置
    • UI設計:理解用戶需求
【功能性】
  • 蠕變特征(不好的現象:開發者開發越來越多的功能,造成程序的復雜和不靈活)
  • 原則:在保證整體質量不降低的情況下進行更新
  • 策略:增量式模型
【及時性】
  • 在規定時間內完成:時間效率高
【其他質量特性】
  • 可驗證性:如管理系統的效果難以驗證
  • 完整性:不會被非法訪問幹擾修改,防止數據不一致(如使用private)
  • 可修改性
  • 資金

# 內部質量屬性

  • 從LOC(line of code)到圈復雜度:用來衡量一個模型判定結構的復雜程序
  • 耦合度和內聚度
  • 代碼是否可讀、可理解、簡潔
  • 完整性
  • 大小
【均衡決策】
  • 完整性與易用性沖突
  • 經濟性與功能性沖突
  • 性能與可復用、可移植性沖突
  • 及時性與可延展性沖突
以效率為導向,以正確性為最重要 【OOP如何保障質量屬性(一些技術,在後續博客中會有所涉及)】 技術分享圖片

#五個關鍵的質量屬性

  • easy to understand
  • ready for change
  • cheap for develop
  • safe from bugs
  • efficient to run
【可理解性】
  • 在構建時
    • 代碼層要註意
      • 變量 / 子程序 / 語句 的命名與構造標準
      • 代碼布局與風格
      • 註釋
      • 復雜度
    • 組件層要註意構件和項目的可理解性
      • 包的組織
      • 文件的組織
      • 命名空間
    • 在時段中,代碼層註意重構
  • 在運行時,代碼層註意跟蹤日誌
【可復用性】
  • 構建時
    • 代碼層應註意
      • ADT / OOP
      • 接口與實現分離
      • 繼承 / 重載 / 重寫
      • 組合 / 代理
      • 多態
      • 自類型與泛型編程
      • OO設計模式
    • 組件層註意
      • API接口設計
      • 類庫
      • 框架
【可復用性與適當性】
  • 構建時
    • 代碼層可采用
      • 模塊化設計
      • 高內聚,低耦合
      • SOLID原則
      • OO設計模式
      • 面向圖表的編程
      • 面向狀態編程
      • 面向語法編程
    • 組件層除註意SOLID原則外,還應考慮GRASP原則
    • 在時段內使用SCM進行版本控制
【健壯性】
  • Code level-build time-Moment
    • 錯誤處理
    • 異常處理
    • 斷言
    • 防禦型編程
    • 測試優先編程
  • Component level-buildtime-period
    • 單元測試
    • 集成測試
  • Build time-period
    • 回歸測試
  • run time-moment
    • 測試轉儲
  • run time-period
    • 跟蹤日誌
【性能】
  • 構建時,使用指定的設計模式
  • 運行時
    • 在代碼層次
      • 通過內存管理考慮空間復雜度
      • 通過算法性能計算時間復雜度
      • 利用代碼調優生成更高效的目標代碼
      • 在時段內進行性能分析和調整
    • 在組件層次
      • 采用分布式系統
      • 編寫多線程的並行程序

# 思考

…………………………未完待續………………

【software construction】第一章第二節 軟件開發的質量屬性