700 likes | 856 Views
資訊系統 民國百年年序 問題因應. 行政院主計處電子處理資料中心 宣導團隊 (02)2380-3878 anne0105@dgbas.gov.tw 宣導網址 http://y100.dgbas.gov.tw. 目錄. 壹、前言 貳、釋疑 參、工作時程規劃 肆、因應步驟 伍、委外考量 陸、 緊急應變 處理 柒、結論. 附錄. 各資訊系統 原始碼 清查表. 各程式語言 之日期關鍵 字詞一覽表. 資料庫 的清查. 搜尋關鍵 字詞的工具. 壹、前言. 國人環境因素考量,以民國年份顯示紀年 或可 能 仍以 2 位數規劃與設計民國年欄位,導致
E N D
資訊系統民國百年年序問題因應 行政院主計處電子處理資料中心 宣導團隊 (02)2380-3878 anne0105@dgbas.gov.tw 宣導網址http://y100.dgbas.gov.tw
目錄 壹、前言 貳、釋疑 參、工作時程規劃 肆、因應步驟 伍、委外考量 陸、緊急應變處理 柒、結論
附錄 各資訊系統 原始碼 清查表 各程式語言 之日期關鍵 字詞一覽表 資料庫 的清查 搜尋關鍵 字詞的工具
壹、前言 • 國人環境因素考量,以民國年份顯示紀年 • 或可能仍以2位數規劃與設計民國年欄位,導致 • 錯誤顯示依程式文數字右靠的邏輯,民國100年呈現「00」 • 錯誤計算如民國100年有人退休年資(00年-70年=-70年),再乘以退休基數,依會計常識,負數的金額代表負債! • 此即所謂的「資訊民國百年問題」
解說百年蟲 Dim iYear, iMonth, iDay iYear = CInt(Left(dtNow, 2))+1911 iMonth = Month(dtNow) iDay = Day(dtNow) dtNow char(06) 舊型電腦的記憶體及儲存空間有限 撰寫程式時為了節省空間,把日期記成"YYMMDD"
實例 ○○ ○○ ○○ 005123458 00/08/01 00/09/30 00/09/17 00/09/18 00/09/18 00/09/18 00/09/18 民國100年查詢銀行帳戶之交易明細,會發生什麼情形?
貳、釋疑 極少例子與硬體或軔體有關,亦宜檢視 民國年欄位資訊的用途資料的儲存(如出生欄位)、計算(如程式中的公式)、顯示(如螢幕)、印表(如証明單、收費單…等) 民國百年問題只發生在資訊系統它不像Y2K(千禧年危機)涉及硬體設計、操作系統OS、程式語言、與業務資訊應用系統,甚至發生於嵌入式設備 民國百年問題只發生在我國百年問題雖比千禧年的問題簡單許多,衝擊性亦輕,但卻也不容等閒視之。因為百業電腦化,且涉及國情習慣 Y2K時未「一併處理民國百年」問題人事更迭,或許在電腦年序可能的問題上沒有特別留意欄位長度的陷阱,仍或可能習慣性地使用2位數
可能的風險 社會觀感、民眾權益 司法系統 電信系統 醫療系統 金融系統 稅務系統 工廠程控
如何面對 • 需要處理的問題 • 只是一件小事但涵蓋範圍可是很龐大 • 認為是一樁危機但如期完成則是轉機 • 成立專案小組 • 確定業務與資訊單位合作,尤其要高階主管支持 • 專案成員中最好有熟悉系統、程式和業務者 • 決定清倉重點優先序 • 確實執行清倉、風險評估、修正與測試 • 需要擔心的事情 • 規劃適當時程,及早因應 • 事先擬定緊急應變處理,降低風險
參、工作時程規劃 委外 自行維護 or 專 案 管 理 清倉 測試 上線 影響評估 修正 緊急應變處理
規劃工作時程之原則 視業務系統之多寡與繁複、業務影響大小等因素,建議時程可按後續說明之處理程序步驟,採日期倒推法規劃 最好有2至3個月的緩衝期作為測試後的觀察期,以處理遺漏部分 最好在民國99年9月底前全部完成 辦理完成委外作業
肆、因應步驟 建議各機關必須針對個別軟體環境分類,搜集所使用的各種軟體語言工具的日期年份的習慣性程式寫法;找出關鍵字詞,彙成關鍵字詞庫,以之當key進行原始碼的搜尋,找出有民國年的欄位,然後修正、測試和取代舊程式 資訊技術演進神速,2000年以前,應用系統平台多屬傳統主機型態,程式語言多集中於COBOL、FORTRAN等,因應方法單純 今日歷經Client-Server、Web-Base、Web2.0等規劃或設計風潮演化,使用軟體語言工具很多
因應步驟 (接續) • 針對程式及資料庫,其步驟說明如下: 一、清查 二、分類 三、搜尋 四、修正 五、測試 六、正式上線
一、清查工作內容 1.原碼程式,分:(1)需編譯者(2)直譯者 按「各資訊系統原始碼清查表」全面清查 2.資料(庫)
二、分類工作內容 1.將各資訊系統原始碼依程式語言工具歸類 2.搜集有關民國年的各資訊系統,及該程式語言工具寫法,擬出關鍵字詞(含運算的公式) 3.彙總各資訊系統關鍵字詞成關鍵字詞檔 4.可參考「各程式語言之日期關鍵字詞一覽表」
三、搜尋工作內容 搜尋方式有二途徑: 1.從原碼找起 (1)逐步以一個資訊系統的原碼檔為對象 (2)依關鍵字詞搜尋有無民國年的定義或公式 2.從結果異常找起 (1)建立一個測試環境,系統年份設定為2011 (2)按功能或系統分類,測試民國年份是否正 常顯示100年
四、修正工作內容 建議於測試環境執行 1.執行修正前,務必先作好原始程式碼完整備份及擬妥回復程序;避免修正或測試失敗 2.執行修正與測試的日期宜選在假日;避免失敗而影響正常作業 3.team work狀況下,宜妥善分配team member負責修正之程式群,避免重覆修正,免除版本控制之問題 4.修正原始程式碼,並應記錄 5.若原碼程式檔非直譯語言,需重新編譯執行檔至原執行檔所在之目錄夾
五、測試工作內容 1.建立測試環境為之(與正式作業分開為宜) 2.檢視相關的儲存、計算、顯示、印表…等功能是否無誤
六、正式上線工作內容 資料庫部份:HOW使用關鍵字詞搜尋資料庫! 1.確認測試成功後,上線至正式系統,完成原始程式碼修正作業
Ps:常見的困難 無工具可用,如何有系統地搜尋: 建議仿windows檔案搜尋方式;先設定Source置放之程式目錄夾為尋找範圍,再以keyword一一搜尋(閱讀時需在適當的編輯器) 或寫一簡單程式,以關鍵字詞檔表列搜尋產出對應的原碼檔名和關鍵字,再從原碼檔名逐檔修正(較麻煩)。EX:檢查檔案字串程式(免費的、IMC開發) 或如使用有料的UltraEdit、或免費的編輯器NOTEPAD++搜尋關鍵字詞。 版本落差: 原始碼已遺失,或維護版本已經沒有記錄 或可由儲存、計算、顯示、印表…等功能逆推回去 或使用反組譯工具還原(麻煩,不保證100%,且需專業) 建議先利用測試環境,從結果異常找起的方法搜尋 完全委外: 建議仿版本落差方式,瞭解可能的民國年呈現的業務資訊作業,與委外廠商確認或只好再專案委外辦理。此外,與各委外的廠商連繫,瞭解該系統的民國年設計模式,以為奧援。
伍、委外考量 尋求委外服務之考量 委外參考事項 如何因應委外經費問題
尋求委外服務之考量 現有資訊人員 人員充足 已培養其他部門同仁 時間足夠 系統不大 自行維護 加派人手 或 部份委外 委外 原委外開發 原廠商有能力、人力支援修正作業 另委請其他信譽良好的廠商修正 經費足夠 排擠其他業務經費支應 已於99年編列預算
委外參考事項(1/2) 委外廠商是否有充裕的支援? 充裕的人力 瞭解該項業務的能力與經驗 充足的時間 純熟的技術能力 後勤支援能力 委外廠商是否能協助解決民國百年問題? 委外服務之專案管理能力 執行專案能力 承包專案的經歷 委外服務供應商之替代方案 如期完成與保證 超過時程的應變方案
委外參考事項(2/2) 如何篩選委外廠商 熟悉本系統架構、程式語言的廠商 具備專案能力的廠商 具有經驗且尚有餘力的廠商 負責且風評佳(實績) 收費合理項目清楚 建議書徵求文件應包含哪些項目? 完全更正責任 範圍的釐定 評估、檢視、更正、測試哪些系統? 限時完成與罰則 工具的應用及費用的涵蓋 本身所能提供之機器設備、人力時間配合等等 廠商資格 廠商提出具體解決程序與處理方法的計畫
如何因應委外經費問題(1/2) 是否有維護合約? 是 否 建議於今年底,提早 辦理明(99)年的維護, 並將百年序問題列維護 合約中,且要求於99年 04月之前完成檢視、更 正及測試 則只能在既有經費中 調整優先順序,以辦 理委外
如以委外處理本案,如何計價? 依據採購法計價規定,或採總價法或採按件數計價,以所費的人月計價 建議單位先了解廠商處理步驟、方法,然後估算人月,會有清楚且合理的計價方式 個人認為這純是清查和修改的工作,工具使用恰當,則只是人力使用,技術門檻不高,計價不宜太高 如何因應委外經費問題(2/2)
陸、緊急應變處理 • 目的 • 減少百年蟲風險,以確保正常運作 再完備的測試也可能有疏漏 • 一旦發生危機進行替代作業 • 緊急因應處理 • 在日期資料顯示或印出之前,寫一可檢查民國年的API程式,以轉換欄位位數暫時因應 • 僅為治標不治本的緊急因應方法,且時間不宜拖延太久 • 因為尚有儲存民國年欄位資訊的資料檔或資料庫需要更正,若直接於程式中引用計算,仍會出現百年問題
柒、結論 民國百年問題只發生在國內基於國情,政府機關提供民眾的資訊係採民國記年,國際資訊業者不一定會關注這個課題 及早正視,速謀動員改正政府資訊多少具有公文書特質,必須為民眾所信賴,自然必須正確無誤
End • 敬請指教 • Q & A • 相關資料下載處 https://itschool.dgbas.gov.tw/epaper/980702/index2.htm
各資訊系統原始碼清查表 檢測項目:民國年欄位長度 檢測期限: 修正期限: 負責同仁:
資料庫的清查 先確認儲存「日期」所採用之資料類型為何,及欄位長度是否足夠 配合擴充欄位長度
各程式語言之日期關鍵字詞一覽表 Java、JSP程式語言之日期關鍵字詞 ASP、VB程式語言之日期關鍵字詞 ASP.NET程式語言之日期關鍵字詞 DELPHI程式語言之日期關鍵字
搜尋關鍵字詞的工具 檢查檔案字串 UltraEdit Notepad++
壹、使用「檢查檔案字串」搜尋關鍵字詞 簡介: • 行政院主計處電子處理資料中心開發 • 專用於搜尋資料夾中搜尋檔案是否有百年問題的關鍵字 • 需配合其他編輯器使用(預設使用Notepad++編輯器) • 搜尋到的檔案及關鍵字配對會以清單顯示 • 可雙點搜尋結果,直接開啟編輯器進行檢視或修改
Step 1: • 開啟「檢查檔案字串」工具 • 選擇欲檢查的目錄所在的磁碟 • 在「檢查目錄」區選擇欲檢查的目錄 • 在「檢查檔案的檔名」區輸入或選擇欲檢查的檔案的檔名的樣式(預設*.*) • 使用加入字串及移除字串按鈕來增刪欲「比對的字串」清單 • 確認(或選擇)編輯器的絕對路徑 • 按「開始檢查」按鈕,開始檢查 利用「檢查檔案字串」工具
Step 2: • 滑鼠雙點清單中某筆結果,對該筆檔案進行檢視或編輯 找到的字串 利用「檢查檔案字串」工具
貳、使用UltraEdit搜尋關鍵字詞 簡介 文書編輯器 提供超強的文字檔或任何原始程式檔編輯、預視、列印功能 提供直接編輯十六進位碼功能 可編輯 HTML 檔案,以彩色顯示HTML標記,方便網頁編輯 可同時開啟多個檔案編輯 提供編譯java原始程式檔功能 提供多重檔案搜尋及多重檔案取代,一併搜尋目錄夾下所有子目錄夾 非免費軟體
Step 1、開啟UltraEdit工具,選擇「搜尋」-「多重檔案搜尋」 利用UltraEdit搜尋
Step 2、輸入搜尋關鍵字,如:「Calendar」,選擇source置放之程式目錄夾,按「搜尋」按鈕 利用UltraEdit搜尋
Step 3、搜尋完成,搜尋之結果在下方窗格 利用UltraEdit搜尋
Step 4、下方窗格右邊之捲軸,拉至最尾端,顯示共找到之次數及檔案個數 利用UltraEdit搜尋
Step 5、點選搜尋到「Calendar」之某一程式檔 「BackupQ.java」, 上方窗格會自動開啟 「BackupQ.java」原始程式檔,即可開始修正程式碼 利用UltraEdit搜尋
參、使用Notepad++搜尋關鍵字詞 簡介: 文書編輯器 程式語法高亮度顯示及語法摺疊功能 高亮度括號及縮排輔助 強大的搜尋及取代功能 若有彩色印表機,可以把原始碼以多種顏色列印出來(列印所見即所得) 可以同時開啟多頁面來編輯(支援同時編輯多重文件) 免費的編輯器 http://notepad-plus.sourceforge.net/tw/site.htm
Step 1、開啟Notepad++工具,選擇「尋找」-「搜尋目錄」 利用Notepad++搜尋
Step 2、在尋找目標欄輸入搜尋關鍵字,如:「PF_ADMINISTRATOR」 利用Notepad++搜尋
Step 3、在資料夾欄選擇欲搜尋之目標資料夾 按一下 按鈕即跳出瀏覽資料夾的視窗 利用Notepad++搜尋