软件工程之软件维护与再工程
文章鏈接:https://codemouse.online/archives/2020-05-29183056
軟件維護
國標GB/T 11457-95定義:在一軟件產品交付使用后對其進行修改,以糾正故障、改進其性能和其它屬性,或使產品適應改變了的環境。
軟件維護分類
新開發活動:強調要在一定的約束條件下從頭開始實施。
軟件維護:強調必須在現有系統的限定和約束條件下實施。
兩種錯誤認識:
分類:
- 糾錯性維護:為了改正軟件系統中的錯誤,使軟件能夠滿足預期正常運行狀態要求而進行維護。
- 預防性維護:為了提高軟件的可維護性、可靠性等,為以后進一步改進軟件打下良好基礎而修改軟件的活動。
- 適應性維護:為了使軟件適應內部或外部環境變化而去修改軟件的過程。
- 改善性維護:滿足使用過程中用戶提出增加新功能或修改已有功能的建議維護。
軟件維護方法
- 結構化維護:采用軟件工程的方法進行軟件開發,保證每個階段都有完整詳細文檔。
- 非結構化維護:不采用軟件工程方法開發軟件,軟件只有程序而欠缺文檔,則維護工作將十分困難。
軟件維護問題
- 理解別人的代碼通常非常困難
- 需要維護的軟件沒有文檔、或資料嚴重不足
- 不能指望原來的開發人員來完成或提供解釋
- 絕大多數軟件在設計時沒有考慮到將來的修改
- 軟件維護這項工作毫無吸引力
軟件維護成本
軟件維護除費用外的無形代價包括:
- 占用了其他軟件開發可用的資源,使資源利用率降低。
- 一些修復或修改請求得不到及時安排,使得客戶滿意率下降。
- 引入新的潛在的錯誤,降低了軟件質量。
- 將軟件人員抽調到維護工作中,使其它軟件開發過程受到干擾。
影響軟件維護因素
影響維護工作量的因素主要有以下六種:
軟件維護組織
維護組織結構圖
軟件維護過程
對工作安排隊列中的任務,由修改負責人依次從隊列中取出任務,按照軟件工程方法學規劃、組織、實施工程。
非糾錯性維護:首先判斷維護類型,對適應性維護,按照評估后的優先級放入隊列。
改善性維護:要考慮是否采取行動,如果接受申請,按照評估后得到的優先級放入隊列,如果拒絕申請,通知請求者,并說明原因。
每種維護請求都要進行同樣的一系列技術工作:
- 修改軟件需求說明
- 修改軟件設計
- 設計評審
- 必要時重新編碼
- 單元測試、集成測試( 包括回歸測試)、確認測試等
維護工作最后一步是復審:
- 依照當前狀態,在設計、編碼和測試的哪些方面還能用其他方法進行?
- 哪些維護資源可用但未用?
- 這次維護活動中主要(或次要)的障礙有哪些?
- 在維護請求中有預防性維護嗎?
軟件維護記錄
- 維護申請報告
- 軟件修改報告
軟件可維護性
可維護性:指理解、改正、調整和改進軟件的難易程度。
- 可理解性
- 可移植性
- 可修改性
- 可測試性
軟件可維護性-可理解性
可理解性:指理解軟件的結構、接口、功能和內部過程的難易程度。
提高軟件可理解性的措施有:
- 采用模塊化的程序結構;
- 書寫詳細正確的文檔;
- 采用結構化程序設計;
- 書寫源程序的內部文檔;
- 使用良好的編程語言;
- 具有良好的程序設計風格等
軟件可維護性-可測試性
可測試性:指測試和診斷軟件(主要指程序)中錯誤的難易程度。
提高軟件可測試性的措施有:
- 采用良好的程序結構;
- 書寫詳細正確的文檔;
- 使用測試工具和調試工具;
- 保存以前的測試過程和測試用例等
軟件可維護性-可修改性(主要影響因素)
可修改性:指修改軟件(主要指程序)的難易程度。
在修改軟件時經常會發生這樣的情況:
- 修改了程序中某個錯誤的同時又產生新的錯誤(由程序的修改引起的);
- 或者在程序中增加了某個功能后,導致原先的某些功能不能正常執行。
軟件可維護性-可移植性(主要影響因素)
可移植性:指程序轉移到一個新的計算環境的難易程度。
影響軟件可移植性的因素有:
- 信息隱蔽原則;
- 模塊獨立;模塊化;
- 高內聚低耦合;
- 良好的程序結構;
- 不用標準文本以外的語句等
提高可維護性的方法
通常采用的方法有:
- 確定質量管理目標和優先級
- 規范化程序設計風格
- 選擇可維護性高的程序設計語言
- 改進程序文檔
- 保證軟件質量審查方法
再工程技術
- 逆向工程:在軟件生存周期中,將軟件的某種形式描述轉換成更抽象形式的活動。
- 重構:在同一抽象級別上轉換系統的描述形式。
- 設計恢復:借助工具從已有程序中抽象出有關數據結構設計、總體結構設計和過程設計的信息。
再工程的概念
-
再工程:指在逆向工程所獲信息的基礎上修改或重構已有的系統,產生系統的一個新版本。
-
再工程的主要目的:為遺留系統轉化為可演化系統提供一條現實可行的途徑 。
-
再工程是一個工程過程,它將逆向工程、重構和正向工程組合起來,將現存系統重新構造為新的形式。
-
通常再工程包含:業務過程再工程、軟件再工程 。
業務過程再工程定義業務目標、標示評估現有業務過程以及修訂業務過程以更好滿足業務目標。
軟件再工程包含庫存目錄分析、文檔重構、逆向工程、程序和數據重構以及正向工程。這一部分通常由軟件工程師完成 。
再工程的原因
- 維護一行源代碼的代價可能是最初開發該行源代碼代價的14-20倍。
- 重新設計軟件體系結構時使用了現代設計概念,它對將來的維護會有很大的幫助。
- 用戶具有較多使用該軟件的經驗。
- 利用逆向工程和再工程的工具,可以使一部分工作自動化。
業務過程再工程
- 每個系統都是由不同的子系統構成,而子系統還可以再細分為更細的子系統,從而整個業務呈現一種層次結構
- 讓那些使用過程結果的人來執行流程;
- 將信息處理工作合并到生產原始信息的現實工作中;
- 將地理分散的資源視為它們是集中的;
- 連接并行的活動以代替集成它們的結果;
- 在工作完成的地方設置決策點,并將控制加入過程中;
- 在其源頭一次性獲取數據。
- 業務過程再工程是迭代的,沒有開始和結束,只有不斷的演化。
- 在業務過程被分析清楚后,可以對軟件實施再工程,整個軟件再工程過程模型如下
逆向工程
- 用戶界面:理解舊軟件的用戶界面。
- 數據:底層數據庫和外部文件
- 理解:系統,程序,部件,模式和語句
總結
以上是生活随笔為你收集整理的软件工程之软件维护与再工程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML网页设计期末课程大作业~旅游住宿
- 下一篇: 5G通信的一些关键技术