論壇文章
使軟體系統有效維運應依循之過程與建議(上)

林泰龍【經濟部標準檢驗局國家標準技術委員會資訊與通訊分組委員】

從內政部移民署入出境管制電腦系統當機事件談起

前言

在本(2009)年初,桃園機場二期航站境管電腦系統,發生了持續36小時的當機事件,形成國門洞開,對國家安全與人員出入境管制造成極大的影響,震驚國人。此事件同時也暴露出,長期以來國內資訊技術產業界與資訊技術服務獲取者(acquirer),在資訊相關系統維運觀念與作法上的問題。為避免類似事件於未來再次上演,並且提升應用系統的服務品質,國內IT業界與系統維運服務的獲取者、供應者等,實應致力尋求改進作法。而其中最佳的方式,就是大幅地朝向國際IT業界的最佳實務上修正。

事件經過

扮演台灣國家大門角色的桃園國際機場,其二期航站中內政部移民署所屬的入出境管制電腦系統,於1月3日上午發生當機,事件發生後,甫於2008年12月31日得標接手負責該系統維運之廠商M公司,在沒有完成簽約及責任交接程序情況下,旋即派員前往處理。根據媒體的報導,維修人員更換了三個硬碟及一塊主機板,惟其中一顆硬碟之規格不符(延至1月5日始更換完成);之後,二期航站所有查驗系統電腦在轉換至一期航站主機後,始恢復運作。1月5日早晨5時至1月6日中午,一期航站主機亦發生當機(疑似二航站電腦硬碟更換後,準備將一期航站正常運作電腦中的資料,重建於二期航站電腦磁碟的傳輸、重建轉換過程發生錯誤,導致一期航站電腦無法運作),維運廠商全力進行搶救無效;1月6日13時,在內政部廖部長的指示下,移民署派遣原該系統建立人員--資深高級電腦分析師章毅昌進駐機場指揮搶救,至14時50分,一期航站電腦恢復;一、二期航站入出境管制電腦系統並先後於16:46及16:58恢復正常。境管電腦,包括外站機場、港口,自17時起運作全面正常。

儘管本事件存在許多想像空間,但本文之目的並不在於本事件的報導或評論。而是想藉由此事件,探討與系統維運有關的過程與作法,這也是以往在系統與軟體生命週期過程與活動的相關討論中,較少觸及的部分。同時,在我國政府採購法裡已明文規定,獲取者在辦理資訊業務委外時,應遵從有關產品與服務交付或提供準則之國際標準(例如ISO/IEC 15288:2008與ISO/IEC 12207:2008)與國家標準(CNS 15008與CNS 14837),因此所提出的作法與建議,亦將以國家標準與國際標準為依歸。

系統維運既有做法

以往系統/軟體工程從業人員,在面對系統建置時,系統之架構決策,多半是圍繞在來自硬體廠商所提的架構方案。例如,面對任務關鍵(Mission- Critical)多會建議HA(High-Availability)架構,但系統建置商工程人員對於HA架構其他的問題則咸少觸碰,甚至從未真正地深入思考。與系統維運有關的議題,則有賴獲取者(acquirer)建議徵求書(Request for Proposal)中所列的需要與需求,若獲取者沒有系統/軟體工程的全般經驗,RFP中的需求規格亦是到處抄抄寫寫而來,則對於新建系統未來五至十年,甚至於更久之維運問題,多是欠缺考慮的。

當系統驗收後進入維運階段,在面對電腦系統運作與維護的問題時,系統/軟體工程從業人員乃至於獲取者與使用者所認同的作法,通常是被動的「見招拆招」。此種應對方式雖然可以快速地解決問題,但是有可能造成後續更難解的後遺症,因為這類的解決方案,有可能是使用了不恰當的替代品,而造成系統往後更容易當機。或者,軟體因為缺乏有效的設計文件,除錯人員在無法理解原設計者的想法下,放棄原有元件,另外撰寫程式,從而使得衍生出其他問題的可能性升高。

系統要能有效地維運,其維運體系絕對不會是自然天成的,所有運作程序、維護週期、維護的程序等等,均必須著眼於系統任務的達成而建立,而這些工作必須配合系統建置的過程逐步產生。

系統維運是設計出來的

有效的系統維運應是設計出來的,而且維運的活動、程序、方法等,都是使系統達成其目標或完成其任務的重要部分,應列入系統需求中,利用系統/軟體工程分析與設計,將之設計於整個系統運作的體系當中。此種所謂Design-in Maintenance觀念普遍見於硬體設備的開發設計中,而且屬於系統工程的重要部分。但是由於現今國內各級學校的軟體工程課程,著重在程式語言的教學,以及透過專題的製作,展現學生學習程式語言的成果。因此,即使在學程當中談及部分的軟體分析設計,多半也是著眼於學生可以在專題中運用的部分。例如,會談及統一塑模語言(Unified Modeling Language, UML)與物件導向分析與設計(Object-Oriented Analysis and Design),但所述僅是UML及SA/SD方法本身,較缺乏具有教育意義的系統分析與設計經驗傳承。其實,從所謂教育與訓練觀念層次而言,學校教育裡做的,多半是軟體開發技術的訓練,而非軟體工程的教育。

由於,目前在市面上已有相當優異的系統開發工具[1]出現,系統在經過良好的系統分析與設計之後,運用自動化的程式開發工具,任何人均可以根據設計文件,以簡單的滑鼠拖曳、點擊(clicks)及設定的動作,即可完成系統的實作。期間不涉及任何一行程式碼的撰寫。因此,未來在學校教育中,應該可以將軟體工程的核心,重新置於系統分析與設計的教育上,將完整且重要的系統觀念灌輸給學生,相信這對於未來軟體產業的競爭力提升,將有莫大的助益。

由於系統維運是設計出來的,因此系統維運的相關要求與作法,應該在系統獲取過程(Acquisition Process,參閱ISO/IEC 15288與ISO/IEC 12207之獲取過程)中即予決定。在獲取過程中,所律定的系統需要、需求不應只是系統功能層面而已,尚需包括系統未來如何運作與維護,而且,系統執行任務的能力與維運需求亦應是相互搭配的。吾人必須了解,硬體會面臨老化的問題,當硬體老化或受高溫影響時,即有可能造成應用軟體運作不正常;而軟體在長期運作下,也可能因為作業系統裡的小狀況,而造成記憶體分配不當或遭遇其他服務鎖定未能釋放的問題,進而產生不預期的結果。這些問題都需要依靠計畫性的保養與維護予以修正。因此,即使是提供7x24小時服務的系統,其軟硬體均須有備援或替換的機制,讓系統適時地停機保養與維護,以延長系統運作的壽命,並確保系統運作的可靠性。而所謂「適時地停機保養與維護」,絕對是需要在功能、服務、硬體壽限與容量等等之間,相互協調且經過設計的,而這也構成了所謂的系統服務等級協議(Service Level Agreement, SLA)的基礎。而在系統發展階段所設計的SLA基礎,亦成為未來系統維運時,確保能持續符合系統服務品質的基準。

系統的需求應是由利害相關者(包括使用者、獲取者、發展者、供應者、運作者與維護者等)透過各種管道提出的,但在系統概念形成之初期,利害相關者可能對於自己的需要與需求,並不甚了解。因此,吾人可以參照ISO/IEC 15288與CNS 15008(系統生命週期過程標準)、ISO/IEC 12207與CNS 14837(軟體生命週期過程標準)、ISO/IEC 9126-1 [ISO/IEC 25010]與CNS14948-1(軟體品質模型)、ISO/IEC 25030(軟體產品品質需求與評估(SQuaRE)-品質需求)、ISO/IEC 27001與CNS 27001(資訊安全管理系統)、ISO/IEC 13335與CNS 14929(資訊技術安全管理指導綱要)標準系列及ISO/IEC 14598與CNS 15014(軟體產品評估)標準系列等,協助系統的利害相關者提出其需求(該等需求應該是以量化方式呈現,並且是可以量測的[2]),並做為後續系統分析設計與產生系統服務等級協議的指導。

結語

系統維運單靠維運服務提供廠商能力與容量(capacity),並不足以確保成功,既有系統要能有效維運,獲取者應在系統生命週期的初期,即有全面而週全之規劃與考慮。各種國際標準與國家標準(例如,ISO/IEC 15288、ISO/IEC 12207、CNS 15008、與CNS14837等標準),具有許多有助於系統有效維運之最佳實務(best practices),能對獲取者在系統維運服務獲取時,提供指導與協助。而在國內,政府部門基於政府採購法的規定,亦應遵循國家標準與國際標準的實務與規定,發展、運作與維護應用系統。

系統維運能力與要求,係由獲取者與發展者,在其生命週期的獲取與建置階段中,透過設計手段使之成為系統整體的一部分。當系統進入生命週期的維運階段後,即應根據該等維運設計,實踐系統維運的各項活動。

附註:
[1] 例如OeasyWeb,http://www.hibloc.com/,為國內廠商所開發,以Java語言所發展,能為系統實作自動產生程式碼,而不需程式設計師撰寫任何程式,可避免因為人為原因造成的程式錯誤,並可以大幅縮短系統發展之時間,讓開發單位將注意力專注於系統的分析與設計工作上。該工具提供免費線上體驗。

[2] ISO/IEC 12207:2008第6.1.1.3.1.2節、ISO/IEC 15288:2008第6.4.1.3.(1)節(b)項及ISO/IEC 12207:2008第6.4.1.3.2.1節。

※下篇作者將更深入為大家解說應用系統在運行與維護的實務上有關:「維運服務之獲取與責任交接、系統維運之執行與控管、組織內的組態管理機制」等議題。

作者簡介  林泰龍
現任:
經濟部標準檢驗局國家標準技術委員會(資訊與通訊分組)委員
中華民國資訊軟體品質協會理事
貝司特科技有限公司顧問
台積典科技有限公司顧問

學歷:
海軍軍官學校75年班
南非普勒托利亞大學系統工程管理碩士(主修系統維護)

經歷:
國防部國防資訊中心資訊系統設計官
中華民國資訊軟體品質協會秘書長
景華管理顧問公司顧問(諮詢師)
印度QAI公司顧問(諮詢師)