系列文章目錄
系統架構設計專業技能 · 網絡規劃與設計(三)【系統架構設計師】
系統架構設計專業技能 · 系統安全分析與設計(四)【系統架構設計師】
系統架構設計高級技能 · 軟件架構設計(一)【系統架構設計師】
系統架構設計高級技能 · 系統質量屬性與架構評估(二)【系統架構設計師】
系統架構設計高級技能 · 軟件可靠性分析與設計(三)【系統架構設計師】
現在的一切都是為將來的夢想編織翅膀,讓夢想在現實中展翅高飛。
Now everything is for the future of dream weaving wings, let the dream fly in reality.
系統架構設計專業技能 · 軟件工程之軟件測試與維護(六)
- 系列文章目錄
- 一、軟件測試
- 1.1 測試類型
- 1.2 測試階段
- 1.3 軟件調試
- 1.4 軟件度量
- 二、軟件維護
- 2.1、遺留系統演化策略
- 2.2、新舊系統的轉換策略
- 2.3、數據轉換和遷移
- 2.4、影響軟件可維護性的因素
- 2.5、軟件維護類型
一、軟件測試
盡早、不斷的進行測試
程序員避免測試自己設計的程序
既要選擇有效、合理的數據,也要選擇無效、不合理的數據
修改后應進行回歸測試
尚未發現的錯誤數量與該程序已發現錯誤數成正比
1.1 測試類型
1.2 測試階段
1.3 軟件調試
測試是發現錯誤,調試是找出錯誤的代碼和原因。
調試需要確定錯誤的準確位置;確定問題的原因并設法改正;改正后要進行回歸測試。
調試的方法有:蠻力法、回溯法(從出錯的地方開始,向回找)、原因排除法(找出所有可能的原因,逐一進行排除,具體包括演繹法、歸納法、二分法)。
1.4 軟件度量
軟件的兩種屬性:外部屬性指面向管理者和用戶的屬性,可直接測量,一般為性能指標。內部屬性指軟件產品本身的的屬性,如可靠性等,只能間接測量。
McCabe度量法:又稱為環路復雜度,假設有向圖中有向邊數為m,節點數為n,則此有向圖的環路復雜度為m-n+2。
注意m和n代表的含義不能混淆,可以用一個最簡單的環路來做特殊值記憶此公式,另外,針對一個程序流程圖,每一個分支邊(連線)就是一條有向邊,每一條語句(語句框)就是一個頂點。
二、軟件維護
2.1、遺留系統演化策略
遺留系統(Legacy System)是指任何基本上不能進行修改和演化以滿足新的變化了的業務需求的信息系統。
對遺留系統評價的目的是為了獲得對遺留系統的更好的理解,這是遺留系統演化的基礎,是任何遺留系統演化項目的起點。主要評價方法包括度量系統技術水準、商業價值和與之關聯的企業特征,其結果作為選擇處理策略的基礎。
- 改造策略,高水平、高價值區,即遺留系統的技術含量較高,本身還有極大的生命力。系統具有較高的業務價值,基本上能夠滿足企業業務運作和決策支持的需要。這種系統可能建成的時間還很短,稱這種遺留系統的演化策略為改造。改造包括系統功能的增強和數據模型的改造兩個方面。系統功能的增強是指在原有系統的基礎上增加新的應用要求,對遺留系統本身不做改變;數據模型的改造是指將遺留系統的舊的數據模型向新的數據模型的轉化。
- 繼承策略,低水平、高價值區,即遺留系統的技術含量較低,已經滿足企業運作的功能或性能要求,但具有較高的商業價值,目前企業的業務尚緊密依賴該系統。稱這種遺留系統的演化策略為繼承。在開發新系統時,需要完全兼容遺留系統的功能模型和數據模型。為了保證業務的連續性,新老系統必須并行運行一段時間,再逐漸切換到新系統上運行。
- 集成策略,高水平、低價值區,即遺留系統的技術含量較高,但其業務價值較低,可能只完成某個部門(或子公司)的業務管理。這種系統在各自的局部領域里工作良好,但對于整個企業來說,存在多個這樣的系統,不同的系統基于不同的平臺、不同的數據模型,形成了一個個信息孤島,對這種遺留系統的演化策略為集成。
- 淘汰策略,低水平、低價值區,即遺留系統的技術含量較低,且具有較低的業務價值。對這種遺留系統的演化策略為淘汰,即全面重新開發新的系統以代替遺留系統。完全淘汰是一種極端性策略,一般是企業的業務產生了根本變化,遺留系統已經基本上不再適應企業運作的需要;或者是遺留系統的維護人員、維護文檔資料都丟失了。經過評價,發現將遺留系統完全淘汰,開發全新的系統比改造舊系統從成本上考慮更合算。
2.2、新舊系統的轉換策略
在實施新舊系統轉換時,轉換的策略通常有三種:
- 直接轉換策略,適用于新系統不太復雜或現有系統完全不能使用的場合,新系統在轉換之前必須經過詳細而嚴格的測試。
- 并行轉換策略,新系統和現有系統并行工作一段時間,經過這段時間的試運行后,再用新系統正式替換下現有系統。
- 分段轉換策略,分段轉換策略也稱為逐步轉換策略,這種轉換方式是直接轉換方式和并行轉換方式的結合,采取分期分批逐步轉換。一般比較大的系統采用這種方式較為適宜,它能保證平穩運行,費用也不太高;或者現有系統比較穩定,能夠適應自身業務發展需要,或新舊系統轉換風險很大(例如,在線訂票系統、銀行的中間業務系統等),也可以采用分段轉換策略。分段轉換策略的優點是,新舊系統的轉換震動比較小,用戶容易接受。但由于是采用漸進方式,導致新舊系統的轉換周期過長,同時由于需求的變化,給新系統的穩定造成比較大的影響。而且,分段轉換策略對系統的設計和實現都有一定的要求,在轉換過程中,需要開發新舊系統之間的接口,還需要制訂階段性的轉換目標和計劃。
2.3、數據轉換和遷移
數據遷移的主要方法大致有三種,分別是系統切換前通過工具遷移、系統切換前采用手工錄入和系統切換后通過新系統生成。
數據遷移的實施可以分為三個階段,分別是數據遷移前的準備、數據轉換與遷移和數據遷移后的校驗。其中準備工作要做好以下7個方面的工作:
(1)待遷移數據源的詳細說明,包括數據的存放方式、數據量和數據的時間跨度。
(2)建立新舊系統數據庫的數據字典,對現有系統的歷史數據進行質量分析,以及新舊系統數據結構的差異分析。
(3)新舊系統代碼數據的差異分析。
(4)建立新舊系統數據庫表的映射關系,對無法映射字段的處理方法。
(5)開發或購買、部署ETL工具。
(6)編寫數據轉換的測試計劃和校驗程序。
(7)制定數據轉換的應急措施。
在數據遷移完成后,需要對遷移后的數據進行校驗。數據遷移后的校驗是對遷移質量的檢查,同時數據校驗的結果也是判斷新系統能否正式啟用的重要依據。可以通過以下兩種方式對遷移后的數據進行校驗:
(1)對遷移后的數據進行質量分析。
(2)新舊系統查詢數據對比檢查。
2.4、影響軟件可維護性的因素
- 【可理解性】是指通過閱讀源代碼和相關文檔,了解軟件的功能和如何運行的容易程度。
- 【可修改性】是指修改軟件的難易程度。
- 【可測試性】是指驗證軟件程序正確的難易程度。
可測試性好的軟件,通常意味著軟件設計簡單,復雜性低。因為軟件的復雜性越大,測試的難度也就越大。 - 【可靠性】一個軟件的可靠性越高,需要維護的概率就會越低。
- 【可移植性】是指將軟件從一個環境移植到新的的環境下正確運行的難易程度。
軟件運行環境的變化是軟件維護的一種常見情形,可移植性好的軟件會降低維護的概率
2.5、軟件維護類型
軟件的維護并不只是修正錯誤,為了滿足用戶提出的增加新功能,修改現有功能以及一般性的改進要求和建議,需要進行完善性維護,他是軟件維護的重要組成部分。
- 改正性維護【修BUG】:也稱正確性維護,指改正在系統開發階段已發生而系統測試階段尚未發現的錯誤【修正bug、錯誤】。
- 適應性維護【應變】:指使應用軟件適應環境變化【外部環境、數據環境】而進行的修改。
- 完善性維護【新需求】:擴充功能和改善性能而進行的修改。
- 預防性維護【針對未來】:為了適應未來的軟硬件環境的變化,應主動增加預防性的新的功能,以使系統適應各類變化而不被淘汰。如將專用報表功能改成通用報表生成功能,以適應將來報表格式的變化。