軟體維護概述


現在軟體維護是SDLC的一部分。它代表了所有的修改和軟體產品的交付之後更新完成。有原因,為什麼修飾是必需的,其中一些在下面進行簡要提到數:

  • 市場條件 - 政策,這改變了的時候,如稅收和新引入的約束一樣,如何保持記賬,可能會觸發需要進行修改.

  • 客戶要求 - 客戶可能會要求在軟體的新特性或功能.

  • 主機修改 - 如果任何目標主機中的硬體和/或平台(如作業系統)的,需要修改軟體,以保持適應性。.

  • 組織的變化 - 如果有任何業務層面的變化,在用戶端,比如減少組織的實力,收購另一家公司,機構進軍新的業務,需要在原有的軟體可能會出現修改.

維修的型別

在軟體生命週期,維護型別可以根據其性質不同而不同。它可能只是一個例行的維護任務,一些使用者發現了一些bug或者基於維護規模或性質,它可能是一個大的事件本身。以下是一些型別基於其特性的維護:

  • 糾正性維護 - 這包括修改和升級換代,以便糾正或解決問題,這是任一發現使用者或由使用者錯誤的報告得出的結論進行.

  • 自適應維護 - 這包括修改和升級應用,以保持軟體產品最多,更新和調整,以技術和業務環境的不斷變化的世界.

  • 完成式維護 - 這包括修改和升級換代,以便保持該軟體在長時間週期可用做。它包括的新功能,為完善軟體,提高其可靠性和效能的新的使用者需求.

  • 預防性維護 - 這包括修改和級換代,以防止該軟體的未來的問題。它的目的是出席的問題,這是不能在這一刻顯著但在將來可能會導致嚴重的問題.

維護成本

報告表明,維護成本高。在估算軟體維護的一項研究發現,維修費用更是高達67%,整個軟體流程週期的成本.

維修費用表

上的平均,軟體維護的成本是所有SDLC階段的50%以上。有各種因素,其中觸發維護成本變高,如:

影響維護成本的現實世界中的因素

  • 任何軟體的標準的年齡被認為是長達10至15年。.
  • 舊的軟體,這是為了工作,慢的機器較少的記憶體和儲存容量不能保持自己對現代新的硬體來增強軟體的挑戰.
  • 隨著技術的進步,它變得代價高昂的維護舊軟體.
  • 大多數維修的工程師都是新手,使用試錯法來糾正問題.
  • 通常情況下,取得了很容易傷害到軟體的原始結構,使其難以在任何後續的更改.
  • 化往往留下無證可能導致未來更多的衝突.

軟體月底因素維修費用

  • 軟體程式的結構
  • 程式設計語言
  • 依賴於外部環境
  • 員工的可靠性和可用性

維護活動

IEEE規定的順序維護過程活動的框架。它可以在疊代的方式被使用,並且可以被擴充套件以便客製化產品和過程可以包括在內

維護活動

這些活動去手牽手,每個以下階段:

  • I識別與跟蹤 - 它涉及到有關鑑定的修改或維修要求的活動。它是由使用者或系統產生的本身可能通過紀錄檔或錯誤資訊報告。這裡,維護型別分類也.

  • 分析方法 - 修改了其對系統的影響,包括安全和安全的影響進行分析。如果可能的影響是嚴重的,可替代的解決方案是找。一組需要修改,然後兌現成要求的規格。修改/維護的成本進行了分析和估算得出.

  • 設計 - 新模組,這需要被替換或修改時,被設計針對在前一階段設定的要求規格。測試用例的驗證和確認建立.

  • 實施 - 新的模組編碼??在設計階段建立結構化設計的幫助。每個程式員應該做單元測試.

  • 系統測試 - 整合測試新建立的模組中完成的。整合測試也進行了新的模組和系統之間。最後,系統進行測試作為一個整體,下面的回歸測試程式.

  • 驗收測試 - 內部測試系統後,它是接受使用者的幫助下進行測試。如果在這種狀態下,使用者的投訴,他們正在解決或一些問題指出,在接下來的疊代來解決.

  • 交付 - 在驗收測試,系統部署各地組織無論是小更新包或全新安裝的系統。最後的測試發生在用戶端軟體到底交付後.

    訓練設施,如果需要提供,除了使用者手冊的硬拷貝.

  • 維護管理 - 組態管理是系統維護的重要組成部分。它是輔助版本控制工具,版本控制,半版或修補程式管理.

軟體再工程

當我們需要更新的軟體,它保持目前的市場,而不會影響其功能,它被稱為軟體再工程。這是一個全面的過程,軟體設計變更和程式重新寫入.

傳統的軟體跟不上調整與市場上現有的最新技術。作為硬體已經過時,軟體更新成為一個頭疼的問題。即使軟體衰老隨著時間的推移,它的功能沒有.

例如,最初的Unix是用組合語言開發的。當C語言應運而生,Unix的重新設計在C中,由於在組合語言中的工作是困難的.

除此之外,有時程式員會注意到的軟體幾個部分需要比其他人更維護和它們還需要重新設計。.

再造的過程

重新設計流程

  • 決定要重新設計 - 它是整個軟體或其中的一部分?

  • 執行反向工程 - 以獲得現有的軟體規範.

  • 重組計劃 - 如果需要的話。例如,改變功能為導向的課程為物件導向的程式.

  • 重新構造資料 - 據需要.

  • 應用正向工程 - 的概念,以獲得重新設計的軟體.

還有在軟體再工程中幾個重要術語

逆向工程

這是一個過程,深入分析,了解現有的系統來實現系統的規範。這個過程可以看作是反向的SDLC模式,即我們試圖通過分析較低的抽象層次,以獲得更高的抽象水平.

現有系統是以前設計的實現。設計師然後做逆向工程通過檢視程式碼,並試圖讓設計並嘗試總結規範.

逆向工程

重組計劃

它是一個過程,以重新構造和重新構造的現有軟體。這是所有關於重新編排的原始碼,無論是在相同的程式設計語言,或者從一個程式設計語言不同的一個。重組可以有程式碼,重組和資料重組或兩者兼而有之.

重新構築不會影響軟體的功能,但提高可靠性和可維護性。程式元件,從而導致錯誤發生非常頻繁是可以改變的,或者更新了重組.

軟體的過時硬體平台的可靠性可通過重組被刪除.

正向工程

正向工程是從中通過逆向工程的方式被放倒在手的規格得到所希望的軟體的過程。它假定有一些軟體工程在過去已經完成.

正向工程是一樣的,只有一點區別的軟體工程過程 - 它反向工程之後進行總.

正向工程

元件的可重用性

元件是軟體的程式程式碼,它執行系統中的一個獨立的任務的一部分。它可以是一個小的模組或子系統本身.

範例

登入程式在網路上使用可被視為元件,在軟體的列印系統可以被看作是該軟體的一個元件.

元件具有功能性高內聚和耦合率較低,也就是說,它們相互獨立,可以不依賴於其他模組執行任務.

在物件導向的,被設計的目的是非常特定的關注,並有較少的機會在其它一些軟體的使用.

在模組化程式設計,這些模組被編碼以執行其可以跨越其他軟體程式號被用於特定的任務.

有一個全新的垂直,這是基於再利用的軟體元件,以及被稱為基於元件的軟體工程(CBSE).

組件

再利用可以在各個層次進行

  • 應用層 - 如果整個應用程式被用作新的軟體子系統.

  • 元件級 - 當應用程式的子系統被使用.

  • 模組級 - 當被重新使用的功能模組.

    軟體元件提供的介面,其可以用於建立不同的元件之間的通訊.

再利用過程

可以採用兩種方法:一是通過保持相同的要求和調整部件或元件保持不變,修改的要求.

再利用過程
  • 需求規格 - 功能性和非功能性需求被指定,軟體產品必須符合其中,與現有的系統中,使用者輸入或兩者的幫助.

  • 設計 - 這也是一種標準的SDLC過程步驟,其中要求在軟體中用語的定義。系統的基本架構作為一個整體,其子系統中建立的.

  • 指定元件 - 通過對軟體的設計,設計師隔離整個系統分成較小的元件或子系統。一個完整的軟體設計,變成了一組組巨大的協同工作的集合.

  • 搜尋合適的元件 - 軟體構件庫是由設計師稱為搜尋匹配元件,功能的基礎上,擬軟體要求上.

  • 整合元件 - 所有匹配元件打包在一起,塑造他們作為完整的軟體.