【software construction】第一章第二節 軟件開發的質量屬性
阿新 • • 發佈:2018-03-01
平臺 大小 模型 規格 很多 版本 jpeg b- topo
?軟件構造第一章第二節 軟件開發的質量屬性
OutLine
-
軟件系統的質量屬性
- 外部與內部質量因素
- 重要的外部質量因素
- 質量因素之間的權衡
-
軟件構建的五個關鍵質量目標
- 了解有哪些質量目標
- 違反有什麽後果
- 每種質量因素需要研究的施工技術
Notes
【外部和內部質量屬性】- 外部質量屬性是指正確性、外觀、速度等影響客戶的屬性
- 內部屬性是指易於理解、可讀性等影響開發人員和軟件自身的屬性
- 二者關系:外部受內部制約
# 外部質量屬性
【正確性】- 在規格說明書描述範圍之內滿足正確性
- 保證正確性的技術
- 有限制的正確:只保證自己層面正確,假設調用的都是正確的
- 測試與調試
- 防禦性編程
- 形式化編程(采用很多數學技術)
- 碰到異常情況進行適當的響應
- 出現規格說明書說明之外的情況由健壯性處理
- 響應異常情況
- 給出錯誤提示
- 正常退出或降級
- 軟件產品適應規格變化的容易程度
- 傳統方法通過固化需求(瀑布模型)進行編程
- 兩個基本策略
- 設計簡潔
- 離散化:低耦合
- 軟件模塊能否被其他程序很方便地使用
- 例子:開發備註、封裝
- 能夠與其他人員進行交互
- 跨平臺、跨軟件
- 實現方法:一致性和標準化(一致的方法和標準)
- 標準文件格式
- 標準數據結構
- 標準用戶接口
- 最通用:標準協議
- 程序運行中對CPU、硬盤的占用帶寬;
- 實現效率是不能犧牲正確性,要再多指標之間權衡
- 實現方法:
- 好的算法
- I/O技術
- 內存管理
- 功能問題都可以加一層抽象進行處理;性能問題都可以去掉一層抽象來解決
- 是否容易由一個環境轉移到另一個環境
- 由於訪問OS本地類庫、插件等問題導致的移植後無法正常運行
- 用戶是否容易使用,不影響專業人員的使用情況下,方便初學者
- 方法:
- 結構清晰的設置
- UI設計:理解用戶需求
- 蠕變特征(不好的現象:開發者開發越來越多的功能,造成程序的復雜和不靈活)
- 原則:在保證整體質量不降低的情況下進行更新
- 策略:增量式模型
- 在規定時間內完成:時間效率高
- 可驗證性:如管理系統的效果難以驗證
- 完整性:不會被非法訪問幹擾修改,防止數據不一致(如使用private)
- 可修改性
- 資金
# 內部質量屬性
- 從LOC(line of code)到圈復雜度:用來衡量一個模型判定結構的復雜程序
- 耦合度和內聚度
- 代碼是否可讀、可理解、簡潔
- 完整性
- 大小
- 完整性與易用性沖突
- 經濟性與功能性沖突
- 性能與可復用、可移植性沖突
- 及時性與可延展性沖突
#五個關鍵的質量屬性
- 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】第一章第二節 軟件開發的質量屬性