110 中華郵政招考營運職 郵儲業務-丁 資訊系統開發 考古題詳解
第 第一題 題25 分
常見的軟體取得方式有套裝軟體、委外開發軟體及自行開發軟體三種方式,請分別列述說明三種不同取得方式之優劣處。
登入後即可作答並保存紀錄。
核心觀念
本題考查資訊系統的三種軟體取得方式,以及各方式在成本、時程、彈性、維護、風險與組織能力上的差異。作答時應先界定三種方式,再分別說明其優點與缺點,最後指出適用情境。
三種方式如下:
- 套裝軟體:直接購買市場上已完成開發、可供多數使用者使用的軟體。
- 委外開發軟體:由外部軟體公司或專業資訊服務廠商,依組織需求進行客製化開發。
- 自行開發軟體:由組織內部資訊人員自行進行需求分析、系統設計、程式撰寫、測試與維護。
解題方法
可採「成本—時間—彈性—控制—維護」五個面向分析:
- 成本:建置及後續維護所需費用。
- 時間:系統導入或完成所需時間。
- 彈性:能否配合組織特殊需求修改。
- 控制:對系統開發、資料與技術的掌握程度。
- 維護:日後修正、升級及故障處理的便利性。
一、套裝軟體
定義
套裝軟體是由軟體廠商事先開發完成,具有標準化功能,再以授權、買斷或訂閱方式提供給多個組織使用。例如財務會計、人力資源、進銷存及客戶關係管理系統。
優點
- 導入時間較短
軟體已經完成開發與測試,組織通常只需進行參數設定、資料轉換及教育訓練,即可上線使用。
- 初期開發成本較低
軟體由多個客戶共同分攤開發成本,單一組織不必負擔完整的分析、設計與程式開發費用。
- 功能成熟、風險較低
成熟套裝軟體通常已在許多組織實際使用,功能及錯誤處理經過一定程度的驗證,開發失敗風險低於全新開發系統。
- 具備廠商支援
軟體廠商通常提供操作手冊、技術支援、版本更新、錯誤修正及教育訓練,有助於降低組織自行維護的負擔。
- 可取得產業標準功能
套裝軟體通常整合該領域的常見作業流程,能協助組織導入較標準化的管理制度。
缺點
- 客製化彈性有限
套裝軟體是以一般市場需求為設計基礎,難以完全配合組織特殊流程、特殊法規要求或既有作業習慣。
- 組織可能必須調整流程
為配合軟體既有功能,組織常需修改原有作業方式,甚至重新設計業務流程。
- 可能產生功能不足或功能過剩
軟體功能不一定完全符合實際需求,可能缺少必要功能,也可能購買許多組織用不到的功能。
- 受制於廠商
系統更新、錯誤修正、技術支援及價格調整多掌握在廠商手中。若廠商停止營運、停止支援或停止產品更新,組織將面臨維運風險。
- 整合與資料移轉可能困難
套裝軟體的資料格式、作業平台及介面規格可能與既有系統不同,導入時可能產生系統整合、資料轉換及資料品質問題。
- 授權費與長期成本不可忽略
雖然初期建置成本較低,但授權費、訂閱費、模組費、升級費及顧問費,可能使長期總持有成本增加。
二、委外開發軟體
定義
委外開發是由組織提出業務需求,再委託外部廠商負責系統分析、設計、程式開發、測試、導入及部分維護工作。
優點
- 可配合組織需求客製化
委外開發可依組織的業務流程、管理制度、資料格式及特殊功能進行設計,彈性高於套裝軟體。
- 可運用外部專業技術
專業廠商通常具備系統開發方法、特定產業經驗、資安技術、資料庫技術及專案管理能力,可補足組織內部人力不足。
- 可縮短自行培養技術人力的時間
組織不必從零開始建立完整開發團隊,能利用廠商現有的人員與技術資源完成系統建置。
- 可由契約明確規範服務內容
透過採購文件及契約,可約定系統功能、開發期限、驗收標準、服務水準、保固期限、維護責任及違約處理方式。
- 適合大型或專業性高的系統
當系統規模大、技術複雜,或涉及高階平台、跨系統整合及特殊資安要求時,委外開發能集中運用專業資源。
缺點
- 成本通常高於直接購買套裝軟體
客製化開發必須負擔需求分析、專案管理、程式開發、測試、導入及後續維護等費用,總成本可能相當可觀。
- 需求溝通不良容易造成成果落差
業務人員與廠商對需求的理解可能不同。若需求文件不完整、驗收標準不明確,完成的系統可能與實際期待不符。
- 容易發生進度延遲與預算超支
系統開發常因需求變更、技術困難、介面整合及測試問題而延後,並增加變更及追加費用。
- 組織對系統的控制程度降低
系統主要由外部廠商掌握,組織內部若缺乏專業人員,可能難以判斷開發品質、技術合理性及維護成效。
- 可能形成廠商依賴
若程式原始碼、系統文件及技術知識未完整移轉,日後維護與修改可能只能繼續委託原廠商,形成供應商鎖定。
- 須重視資訊安全與機密資料風險
廠商可能接觸組織內部資料、系統帳號及網路環境,因此契約應明訂保密義務、資料使用範圍、權限控管、資安責任及服務終止後的資料返還方式。
三、自行開發軟體
定義
自行開發是由組織內部資訊部門或自行聘用的開發人員,負責系統生命週期中的需求分析、設計、開發、測試、導入、教育訓練及維護工作。
優點
- 最能符合組織特殊需求
內部人員熟悉組織的業務流程、管理制度及使用者需求,系統可依實際作業方式設計,客製化程度最高。
- 對系統具有較高控制權
組織可自行決定系統架構、開發優先順序、功能調整、資料處理方式及版本更新時程。
- 有利於累積內部技術與業務知識
第 第二題 題25 分
JAVA 程式片段如下,請依(一)~(四)方格中的需求說明,分別以程式中已提供的副程式搭配適當的 JAVA 指令達成需求。(提示:利用 regular expression)
public class Test { public static void main(String[] args) throws IOException { StringBuilder htmlContent = new StringBuilder(); Path source = Paths.get("src /Exam.html").toAbsolutePath(); Charset cs = Charset.forName("BIG5"); List<String> lines = Files.readAllLines(source, cs); for (String s : lines) { htmlContent.append(s); }
(一)運用提供的副程式 SUB1 找到所指定網頁(Exam.html)內容之 IP address 並輸出,輸出搜尋結果前先輸出「找到的 IP address 有:」文字標示。
(二)運用提供的副程式 SUB1 找到所指定網頁(Exam.html)內容之 mail address 並輸出,輸出搜尋結果時先輸出「找到的 mail address 有:」文字標示。
(三)運用提供的副程式 SUB1 找到所指定網頁(Exam.html)內容之 URL address 並輸出,輸出搜尋結果時先輸出「找到的 URL address 有:」文字標示。
(四)運用提供的副程式 SUB1 找到所指定網頁(Exam.html)內容之 Html tag 並輸出,輸出搜尋結果時先輸出「找到的 Html tag 有:」文字標示。
}
private static void SUB1(StringBuilder html, String regularExp) {
Pattern p = Pattern.compile(regularExp);
Matcher m = p.matcher(html.toString());
while (m.find()) {
System.out.println(m.group());
}
}
}
登入後即可作答並保存紀錄。
核心觀念
本題考查 Java 的 regular expression(正規表示式)與 Pattern、Matcher 的使用方式。
副程式 SUB1 已完成以下工作:
- 將傳入的正規表示式編譯成
Pattern。 - 使用
Matcher對StringBuilder內容進行比對。 - 透過
m.find逐一尋找符合的字串。 - 以
m.group輸出每次找到的完整結果。
因此,主程式只需:
- 先輸出題目指定的文字標示。
- 呼叫
SUB1(htmlContent, 正規表示式)。
Java 字串中的反斜線必須再跳脫一次。例如正規表示式中的 \d,在 Java 字串中要寫成 "\\d"。
解題方法
(一)尋找 IP address
IPv4 位址由四組 至 的數字組成,中間以句點分隔,例如:
192.168.1.10
單一數字欄位的正規表示式為:
25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d
完整 Java 字串如下:
"(?<![\\d.])(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}(?![\\d.])"
其中:
25[0-5]:匹配 ~。2[0-4]\d:匹配 ~。1\d{2}:匹配 ~。[1-9]?\d:匹配 ~。(?:\.(...)){3}:再重複三次,形成四組數字。(?<![\d.])與(?![\d.]):避免從較長的錯誤數字中擷取部分內容。
(二)尋找 mail address
一般電子郵件格式為:
帳號@網域名稱.頂級網域
例如:
[email protected]
可使用:
"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
其中:
[A-Za-z0-9._%+-]+:匹配信箱帳號。@:電子郵件必要符號。[A-Za-z0-9.-]+:匹配網域名稱。\\.:匹配真正的句點。[A-Za-z]{2,}:匹配至少兩個英文字母的頂級網域,例如com、tw、org。
(三)尋找 URL address
本題以常見的 HTTP 或 HTTPS 網址為 URL,例如:
可使用:
"(?i)\\bhttps?://[^\\s<>\"']+"
其中:
(?i):不分大小寫,因此HTTP與http均可匹配。https?:匹配http或https。://:網址的協定分隔符號。[^\\s<>\"']+:持續匹配非空白、非 HTML 標籤括號、非引號的字元。
(四)尋找 HTML tag
HTML 標籤通常以 < 開始、以 > 結束,例如:
<div>
</div>
<img src="logo.png">
可使用:
"</?[A-Za-z][^>]*>"
其中:
</?:匹配開始標籤<,也匹配結束標籤</。[A-Za-z]:要求標籤名稱以英文字母開頭。[^>]*:匹配標籤內的名稱、屬性及其他內容。>:匹配標籤結尾。
此寫法可排除 <!-- comment --> 及 <!DOCTYPE html> 等非一般元素標籤內容。
完整參考程式碼
第 第三題 題25 分
請列舉四項敏捷(Agile)軟體開發與瀑布式(Waterfall)軟體開發模式的差異比較,並說明之。
登入後即可作答並保存紀錄。
核心觀念
本題考查敏捷開發與瀑布式開發的基本管理思想、流程特性與適用情境。答題應掌握兩者在以下面向的差異:
- 開發流程與工作方式
- 需求變更的處理方式
- 交付與使用者回饋
- 測試與風險管理
本題不涉及特定法條或計算公式,應以「比較表+逐項說明」呈現,並明確指出兩種模式的優缺點及適用條件。
解題方法
採用「比較面向法」作答:先列出四個具有區別性的比較面向,再分別說明敏捷與瀑布式的作法,最後補充其管理意義。
作答時不可只寫「敏捷較彈性、瀑布式較固定」等概括語句,必須說明這些特性如何影響需求、交付、測試及專案風險。
四項差異比較
一、開發流程:迭代循環與階段順序
敏捷開發:
敏捷採用短週期、反覆迭代的方式進行開發。團隊將系統拆分為多個小功能或使用者故事,每一個迭代週期都會經歷規劃、分析、設計、實作、測試及檢討等活動。每次迭代完成一部分可運作的產品功能。
瀑布式開發:
瀑布式依序經過需求分析、系統設計、程式開發、測試、部署及維護等階段。前一階段完成並確認後,才進入下一階段,整體流程具有明顯的先後順序。
差異說明:
敏捷是循環式與增量式開發,工作階段可在每次迭代中重複進行;瀑布式則是線性階段式開發,通常必須完成前一階段才能進入下一階段。
二、需求變更:高度適應與變更管制
敏捷開發:
敏捷承認需求可能隨著市場、法規、使用者回饋及商業目標而改變,因此將需求依優先順序排列,於每次迭代開始前調整待辦工作。只要變更能提高產品價值,就可納入後續迭代。
瀑布式開發:
瀑布式通常在前期完成需求規格與文件確認,之後依據既定規格進行設計與開發。若開發中途發生需求變更,通常需要經過正式的變更申請、影響分析、核准及文件更新程序。
差異說明:
敏捷將變更視為正常的開發資訊,強調快速回應;瀑布式則強調需求基準與計畫穩定,變更需受到較嚴格的管理。敏捷較適合需求不確定的專案,瀑布式較適合需求明確且變動較少的專案。
三、交付方式與使用者參與:持續交付與最後交付
敏捷開發:
敏捷在每次迭代結束時交付部分可運作功能,使用者或產品負責人可及早檢視成果並提出意見。使用者參與不只發生在專案初期,而是貫穿整個開發過程。
瀑布式開發:
瀑布式通常在主要開發及測試階段完成後,才交付完整系統供使用者驗收。使用者多在需求確認及最終驗收階段參與,開發過程中的即時回饋相對較少。
差異說明:
第 第四題 題25 分
利用 VB.net 設計一組 排列方式的九九乘法表,該程式中須使用迴圈的方法處理並符合下列二條件:
- 設計一表單內含兩個按鈕及顯示九九乘法表的區域。
- 兩個按鈕分別做執行顯示九九乘法與結束程式。
提供應使用到的物件如【表四】設定值說明:
物件名稱:Form1
屬性:Form
設定:表單名稱
標籤名稱:Form1
物件名稱:ControlBox
屬性:屬性設為 True;MultiLine 的屬性也必須設為 True。
物件名稱:Command2
屬性:CommandButton
設定:結束的按鈕
標籤名稱:結束程式
物件名稱:Command1
屬性:CommandButton
設定:執行的按鈕
標籤名稱:執行九九乘法
物件名稱:Text1
屬性:TextBox
設定:文字方塊
【表四】
Tab:CHAR(9)
換行:CHAR(10)
ENTER:CHAR(13)
登入後即可作答並保存紀錄。
核心觀念
本題考查 VB.NET 的:
- Windows Form 表單與控制項事件處理。
For...Next巢狀迴圈。- 二維排列的索引計算。
TextBox的MultiLine多行顯示。- 使用定位字元與換行字元排版文字。
「 排列方式」表示將 ~ 的九九乘法表分成三列、三欄:
- 第一列:、、 的乘法表。
- 第二列:、、 的乘法表。
- 第三列:、、 的乘法表。
每一個乘法表包含乘數 ~,因此總共會輸出 個小乘法表。
物件與屬性設定
表單及控制項可設定如下:
| 物件名稱 | 類型 | 重要設定 |
|---|---|---|
Form1 | Form | 表單名稱為 Form1,ControlBox=True |
Command1 | Button | Text 設為「執行九九乘法」 |
Command2 | Button | Text 設為「結束程式」 |
Text1 | TextBox | Multiline=True,作為乘法表顯示區域 |
Text1 必須設定為多行,否則無法依照換行字元顯示完整乘法表。
解題方法
每一個小乘法表的起始被乘數為:
其中:
blockRow: 排列中的列索引,範圍為 ~。blockCol: 排列中的欄索引,範圍為 ~。base:目前小乘法表的被乘數,範圍為 ~。
例如:
blockRow=0, blockCol=0,則base=1。blockRow=1, blockCol=2,則base=6。blockRow=2, blockCol=1,則base=8。
每一個小乘法表再利用內層迴圈,讓乘數從 執行到 :
因此必須使用三層迴圈:
- 控制三個區塊列。
- 控制三個區塊欄。
- 控制每個乘法表的乘數 ~。
VB.NET 程式碼