軟件維護概述

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

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

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

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

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

維修的類型

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

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

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

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

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

維護成本

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

維修費用表

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

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

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

軟件月底因素維修費用

  • 軟件程序的結構
  • 編程語言
  • 依賴於外部環境
  • 員工的可靠性和可用性

維護活動

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

維護活動

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

  • I識別與跟蹤 - 它涉及到有關鑑定的修改或維修要求的活動。它是由用戶或系統產生的本身可能通過日誌或錯誤信息報告。這裏,維護類型分類也.

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

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

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

  • 系統測試 - 集成測試新創建的模塊中完成的。集成測試也進行了新的模塊和系統之間。最後,系統進行測試作爲一個整體,下面的迴歸測試程序.

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

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

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

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

軟件再工程

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

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

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

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

再造的過程

重新設計流程

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

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

  • 重組計劃 - 如果需要的話。例如,改變功能爲導向的課程爲面向對象的程序.

  • 重新構造數據 - 據需要.

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

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

逆向工程

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

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

逆向工程

重組計劃

它是一個過程,以重新構造和重新構造的現有軟件。這是所有關於重新編排的源代碼,無論是在相同的編程語言,或者從一個編程語言不同的一個。重組可以有代碼,重組和數據重組或兩者兼而有之.

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

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

正向工程

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

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

正向工程

組件的可重用性

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

示例

登錄程序在網絡上使用可被視爲組件,在軟件的打印系統可以被看作是該軟件的一個組件.

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

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

在模塊化編程,這些模塊被編碼以執行其可以跨越其他軟件程序號被用於特定的任務.

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

組件

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

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

  • 組件級 - 當應用程序的子系統被使用.

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

    軟件組件提供的接口,其可以用於建立不同的組件之間的通信.

再利用過程

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

再利用過程

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

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

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

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

  • 集成組件 - 所有匹配組件打包在一起,塑造他們作爲完整的軟件.