如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2012年1月12日

如何維護老舊程式

編著: Fred Wang 日期: 2007/11/14

超過十年歷史的企業,其應用系統開發人員,有超過60%的時間會花在維護既有的系統,而經常需要維護所謂的老舊程式,所謂老舊程式通常有下列三點現象: (1)目前的人員中,沒有人參與過這些程式的開發,(2)這些程式的開發未採取適當的開發方法,因此設計不佳,缺乏註解且文件說明不明確與完整,或經過維護人員的輪替,多人修改後,原來的文件已經無法參考,(3)結構缺乏模組化的觀念,例如相同的程式複製多處等。通常在維護此類的程式常遭遇到許多的挫折,對軟體工作者而言常視此類工作為低價值的苦差事。

對程式控制流程像義大利通心麵般複雜,一個副程式長達上千行,而註解只有三行,且找不到文件說明,維護人員遇到使用者提出需求,需要修改這種程式時,這種狀況可以有三種處理方式:

1. 硬著頭皮修改,奮戰到底,直到完成為止
2. 運用軟體工程的方法,將需修改的部分重新設計,撰寫程式和測試
3. 完全重新設計,撰寫程式和測試

通常小幅的修改,尚未考慮重新設計的狀況,如上面第1點,軟體工程界的大師Yourdon提出的十點建議 :

1. 平時應研究這些程式碼,儘可能獲取有關的背景資料
2. 嘗試熟悉程式的整體控制,不要一開始就研究程式的細節,最好能自己畫出高層次的流程圖 (Fred : 可以畫出SOD, ERD, IPO Chart等)
3. 評估既有的文件說明,若有幫助的話,可以在原始程式上加上註解
4. 利用編譯器產生的交互參考表和符號表等
5. 修改程式時千萬要小心,盡量保持程式撰寫的風格,更改地方要需註明原因與時間
6. 除非你非常確定,否則不要刪掉任何陳述
7. 原程式中的暫存變數和工作儲存區,不要用,應自行定義新變數,以避免麻煩
8. 紀錄詳細的維護內容和產生的結果 (留下維護紀錄)
9. 不要沒有理由的拋開一個程式,而重新撰寫一個。
10. 要加入錯誤檢查的功能

除了上面的做法外Martin Fowler的”重構-改善既有程式的設計”,提出漸進式且安全的方法以改善程式的品質,這是近年來我看到最實用與最好的軟體工程書,極力推薦每一程式設計人員熟讀與應用。

有些人會認為重新編寫一個會更好,但是如果這個程式攸關安全,如生命,健康,財務,營收,客戶服務等關鍵流程,錯誤時將造成極大的風險,那麼就不是簡單的重寫就可以的。

就與重新設計開發有關的議題,做預防性的維護可以改善整體的設計,此類的維護就使用者角度,對其功能並無變化,乍看之下,似乎很浪費,但是對IT未來龐大維護成本將可大量減少,下面是Roger Pressman提出的幾點考慮 :

1. 維護一行原始程式的成本為當初開發該行程式所需成本的40倍
2. 以現代的設計方法,重新設計軟體架構,可以大量簡化未來的維護工作
3. 若有較佳的範式(prototype),生產力將提高甚多
4. 使用者對此軟體的使用已經有經驗,因此修正的方向更容易確定

預防性維護可視為軟體的新版本,主要目標在”應用今日的方法與昨日的系統以滿足明日的需求”。

沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)