110 中華郵政招考營運職 系統分析 資訊系統規劃開發 考古題詳解
第 第一題 題25 分
系統分析與設計階段常採用不同的方式來進行,而系統開發過程中,進行完系統分析與程式設計階段後,收尾的步驟也包含測試與轉換階段,請回答下列問題:
(一)請說明物件導向(Object-Oriented)開發方法的設計與塑模概念。(6 分)
(二)請說明計畫評核技術(Project Evaluation & Review Technical Chart, PERT),並說明其主要用途為何?(10 分)
(三)請舉例說明三種常見的轉換階段策略。(9 分)
登入後即可作答並保存紀錄。
核心觀念
本題綜合考查系統開發生命週期中三個重要主題:
- 物件導向分析與設計:以「物件」為核心,描述資料與行為,並透過模型表達系統結構與互動。
- PERT:以網路圖與三點時間估計,規劃具有不確定性的專案時程,找出關鍵路徑。
- 系統轉換策略:將舊系統轉換至新系統時,選擇適當的上線方式,以降低風險並確保業務持續運作。
(一)物件導向開發方法的設計與塑模概念
1. 物件導向的基本概念
物件導向(Object-Oriented)方法是將系統視為許多彼此互動的物件所組成。每一個物件同時包含:
- 狀態(State):物件所保存的資料或屬性。
- 行為(Behavior):物件可以執行的操作或方法。
- 識別(Identity):用以區別不同物件的特性。
例如,在郵局寄件系統中,「客戶」、「包裹」、「郵資計算」都可視為物件:
- 客戶具有姓名、地址等屬性;
- 包裹具有重量、尺寸、目的地等屬性;
- 包裹可執行計算郵資、建立託運單等方法。
2. 物件導向設計的主要特性
(1)封裝(Encapsulation)
將物件的資料與操作資料的方法包裝在一起,並隱藏內部實作細節,只透過公開介面與其他物件溝通。
例如,外部只需呼叫「計算郵資」方法,不必知道內部的費率判斷與計算程序。
(2)繼承(Inheritance)
子類別可以繼承父類別的屬性與方法,並依需求增加或改寫功能。
例如,「國內包裹」與「國際包裹」可繼承「包裹」類別的基本資料,再分別增加國內或國際寄送所需的功能。
(3)多型(Polymorphism)
相同的操作名稱,因物件類型不同而產生不同的執行結果。
例如,不同包裹物件都可執行「計算郵資」,但國內包裹與國際包裹的計算規則不同。
(4)抽象化(Abstraction)
只保留與問題領域有關的重要特性,忽略不必要的細節,以降低系統複雜度。
3. 物件導向塑模
物件導向塑模是將真實世界的問題領域轉換成可分析、設計與實作的模型,通常使用 UML(Unified Modeling Language)表示。
常見塑模內容包括:
- 使用案例圖(Use Case Diagram):描述使用者與系統功能之間的關係。
- 類別圖(Class Diagram):描述類別、屬性、方法及類別間的關係。
- 循序圖(Sequence Diagram):描述物件依時間順序傳遞訊息的過程。
- 活動圖(Activity Diagram):描述流程、活動與決策。
- 狀態圖(State Diagram):描述物件在不同事件下的狀態變化。
4. 解題方法
作答時應先說明「物件包含資料與行為」,再列出物件導向的核心特性,最後補充 UML 塑模工具與用途。此種寫法可同時涵蓋「設計」與「塑模」兩部分,不會只回答物件導向的定義而遺漏塑模概念。
5. 解題技巧與常見陷阱
- 不可只寫「以物件為基礎」,必須說明物件包含狀態與行為。
- 「封裝、繼承、多型、抽象化」是最常見的得分關鍵字。
- UML 是塑模語言,不是單一圖形;若能舉出類別圖、使用案例圖及循序圖,答案較完整。
- 類別是物件的抽象描述,物件則是類別的實例。
(二)計畫評核技術 PERT
1. PERT 的定義
PERT(Project Evaluation and Review Technique)是用於專案規劃、排程與控制的網路分析技術,特別適合工作時間具有不確定性的專案。
PERT 將專案拆解為多項活動,依照活動間的先後關係建立網路圖,再估算各活動時間與整體專案完成時間。
題目中的英文正式名稱通常寫作 Project Evaluation and Review Technique。
2. PERT 的基本構成
(1)活動(Activity)
代表需要花費時間與資源完成的工作,例如「建立資料庫」、「撰寫程式」或「進行使用者測試」。
(2)事件(Event)
代表某一階段的開始或完成,通常不消耗時間與資源。
(3)網路圖(Network Diagram)
用箭線或節點表示活動與活動間的先後關係,以呈現專案流程。
3. 三點時間估計
PERT 不只使用單一工期,而是針對每項活動估計三種時間:
- 樂觀時間 (Optimistic Time):工作進行順利時所需的最短時間。
- 最可能時間 (Most Likely Time):正常情況下最可能發生的時間。
- 悲觀時間 (Pessimistic Time):工作遭遇不利情況時所需的最長時間。
活動的預期時間為:
其中最可能時間權重最高,表示正常情況對預期工期的影響最大。
活動時間的變異數為:
標準差為:
4. 關鍵路徑
將各活動的預期時間計算後,依網路圖找出所有可能路徑,將每條路徑上的活動時間加總。
總工期最長的路徑稱為關鍵路徑(Critical Path):
關鍵路徑上的活動通常具有:
- 總浮時(Slack)為 ;
- 任一活動延遲,可能造成整個專案延遲;
- 必須優先監控與配置資源。
活動浮時可表示為:
其中:
- :最早開始時間;
- :最早完成時間;
- :最晚開始時間;
- :最晚完成時間。
5. PERT 的主要用途
(1)估計專案完成時間
透過各活動的預期時間,估算整體專案可能完成的日期。
(2)找出關鍵活動與關鍵路徑
找出對專案工期影響最大的工作,作為管理與監控重點。
(3)處理專案的不確定性
使用樂觀、最可能及悲觀三種時間估計,適合系統開發等工期不易精確預估的工作。
(4)進行專案排程與進度控制
協助管理者安排工作先後順序,追蹤實際進度並及早發現延遲。
(5)協助資源配置
將人力、經費及設備優先配置於關鍵活動,必要時可透過增加資源縮短工期。
第 第二題 題25 分
請列舉四項敏捷(Agile)軟體開發與瀑布式(Waterfall)軟體開發模式的差異比較,並說明之。(25 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查敏捷式與瀑布式軟體開發生命週期的基本差異。作答時應以「開發流程、需求變更、交付方式、客戶與測試參與」等面向進行比較,並說明兩種模式的管理思想與適用情境。
- 瀑布式開發(Waterfall):依需求分析、系統設計、程式設計、測試、部署、維護等階段,按順序逐步完成。前一階段完成並核准後,才進入下一階段。
- 敏捷式開發(Agile):將系統拆分為多個短週期的迭代(Iteration)或衝刺(Sprint),每一週期完成一部分可運作功能,並透過持續回饋逐步調整產品。
敏捷並非沒有規劃,而是採取「持續規劃、持續交付、持續回饋」的方式;瀑布式則較強調前期完整規劃與階段性控管。
解題方法
本題要求「列舉四項差異並說明」,宜採用表格或分項方式作答。每一項應包含:
- 比較面向;
- 瀑布式的作法;
- 敏捷式的作法;
- 對專案管理或成果的影響。
四項差異可選擇最具代表性的面向,避免只列出名詞而缺乏說明。
差異一:開發流程與生命週期
瀑布式
瀑布式採取線性、階段性的流程,典型順序如下:
每個階段通常具有明確的輸入、產出文件與審查程序。前一階段若尚未完成,後續階段通常不會正式展開。
敏捷式
敏捷將完整系統切割為多個短週期,每一週期均包含部分需求的分析、設計、開發與測試,形成反覆進行的迭代循環:
每次迭代完成的成果稱為增量(Increment),逐步累積成完整系統。
影響
瀑布式流程清楚、文件完整,適合需求穩定且受法規或契約嚴格管制的專案;敏捷則能較早產出可運作功能,適合需求快速變動、需要持續驗證的專案。
差異二:需求處理與變更管理
瀑布式
瀑布式通常在專案初期進行完整需求分析,並形成需求規格書。需求一旦確認,後續變更需經過正式的變更申請、影響評估、核准與文件修改。
由於前後階段具有相依性,後期變更可能造成設計、程式、測試文件甚至時程與成本的連鎖修改,因此變更成本通常較高。
敏捷式
敏捷承認需求可能隨市場、使用者回饋或業務環境變化而調整,通常以產品待辦清單(Product Backlog)管理需求,並在每次迭代開始前重新排序優先順序。
需求變更可以納入後續迭代,但正在進行中的短期迭代通常維持目標穩定,以避免團隊頻繁中斷。
影響
瀑布式重視「事前定義與變更控制」;敏捷重視「適應變化與持續交付」。敏捷的彈性較高,但仍須透過待辦清單、優先順序與迭代範圍控管,否則容易產生需求蔓延。
差異三:交付方式與成果產出
瀑布式
瀑布式通常在大部分開發工作完成後,才進行整體系統測試與正式部署,因此客戶往往要到專案後期才能看到完整成果。
其交付形式通常是一次性或少數幾次的正式交付,專案時程與預算較常在初期即固定。
敏捷式
敏捷採取分批、增量式交付,每次迭代結束時,應產出具備一定功能且可展示、測試或使用的產品增量。
第 第三題 題25 分
JAVA 程式片段如下,請依(一)~(四)方格中的需求說明,分別以程式中已提供的副程式搭配適當的 JAVA 指令達成需求。(提示:利用 regular expression)(25 分)
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(正規表示式)進行文字搜尋。
程式已提供副程式:
private static void SUB1(StringBuilder html, String regularExp)
其功能為:
- 將傳入的正規表示式編譯成
Pattern。 - 建立
Matcher,搜尋整份 HTML 內容。 - 透過
m.find逐一尋找符合的字串。 - 以
m.group輸出每一個搜尋結果。
因此,各小題只需完成兩件事:
- 先用
System.out.println輸出題目指定的標示文字。 - 再呼叫
SUB1(htmlContent, 正規表示式)。
Java 字串中的反斜線必須跳脫,因此正規表示式中的 \d、\.、\b,在 Java 程式碼中須分別寫成 \\d、\\.、\\b。
解題方法
(一)搜尋 IP address
IPv4 位址由四組數字組成,中間以句點分隔,例如:
192.168.1.10
基本正規表示式可寫成:
"\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b"
說明如下:
\\b:單字邊界,避免從較長數字中擷取部分內容。\\d{1,3}:代表 1 至 3 位數字。\\.:代表真正的句點。(?:\\d{1,3}\\.){3}:前三組「數字加句點」。- 最後的
\\d{1,3}:第四組數字。
若要嚴格限制每一組數字必須介於 至 ,可使用較完整的 IPv4 表示式:
"\\b(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\b"
考試作答時,採用嚴格版本可避免將 999.999.999.999 誤判為合法 IP address。
(二)搜尋 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
URL 通常以 或 開頭,後面接網域、連接埠、路徑或參數。
可使用:
"(?i)\\b(?:https?|ftp)://[^\\s<>\"']+"
說明如下:
(?i):忽略英文字母大小寫。(?:https?|ftp):符合http、https或ftp。://:URL 通常具有的分隔符號。[^\\s<>\"']+:擷取後續非空白、非 HTML 標記符號的內容。\\b:限制 URL 的起始位置。
此寫法可搜尋下列形式:
(四)搜尋 Html tag
HTML tag 通常由 < 與 > 包住,例如:
<html>
<body>
<a href="index.html">首頁</a>
</body>
</html>
可使用:
"</?[A-Za-z][^>]*>"
說明如下:
<:HTML tag 起始符號。/?:可有可無的/,因此同時符合開始標籤與結束標籤。[A-Za-z]:標籤名稱以英文字母開始。[^>]*:擷取直到>前的所有內容,包括屬性。
第 第四題 題25 分
請回答下列問題:
(一)開放式系統互連(OSI)分層模型包含七層,請比較第 2 層資料鍵結層(data link layer)與第 3 層網路層(network layer)的功能差異。(12 分)
(二)交易(Transaction)是資料庫的邏輯工作單元,由一或多個運算所構成。交易有四個基本特性,統稱為 ACID 特性。請寫出這四個基本特性的名稱,並且分別說明這四個基本特性。(13 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查兩組基礎觀念:
- OSI 模型第 2 層與第 3 層的分工。
- 資料庫交易的 ACID 四項特性。
回答時應掌握「服務範圍、處理對象、識別方式、主要功能」四個比較面向。第 2 層處理同一網路鏈路上的資料傳輸;第 3 層則負責跨越不同網路的封包傳遞。
本題為申論題,沒有選項分析問題。
解題方法
(一)資料鍵結層與網路層的比較
可先利用資料傳輸單位區分:
- 第 2 層:資料框(Frame)
- 第 3 層:封包(Packet)
再從下列方向說明:
- 是否只限於相鄰節點。
- 使用何種位址。
- 是否負責路由選擇。
- 如何處理錯誤、流量與媒介存取。
- 對應的網路設備與協定。
1. 資料鍵結層的功能
資料鍵結層位於實體層之上,主要負責在「直接相連的兩個節點」間,將第 3 層封包封裝成資料框並傳送。
其主要功能如下:
(1)成框
將上層交付的封包加入標頭與尾端控制資訊,形成資料框,使接收端能辨識資料的開始與結束。
(2)實體位址識別
資料鍵結層通常使用 MAC 位址識別同一區域網路中的網路介面卡,判斷資料框應送往哪一個直接連接的設備。
(3)媒介存取控制
當多個設備共用同一傳輸媒介時,資料鍵結層負責規範設備何時可以傳送資料。例如乙太網路的媒介存取控制機制,即屬於此層的重要內容。
(4)錯誤偵測
接收端可利用檢查碼、循環冗餘檢查(CRC)等方式,判斷資料框在傳輸過程中是否發生錯誤。
(5)流量控制與傳輸控制
部分資料鍵結層協定可處理相鄰節點間的傳送速度協調,避免接收端來不及處理而造成資料框遺失。
(6)局部鏈路的可靠傳輸
某些資料鍵結層協定提供確認、重傳等機制,使同一鏈路上的資料傳輸更可靠。但並非所有資料鍵結層協定都保證可靠傳輸。
2. 網路層的功能
網路層負責將封包從來源主機經由一個或多個中間網路,傳遞至目的主機,重點在於「跨網路傳輸」。
其主要功能如下:
(1)邏輯位址
網路層使用 IP 位址等邏輯位址辨識來源與目的主機。邏輯位址具有階層性,可表示網路部分與主機部分,適合進行路由判斷。
(2)路由選擇
網路層根據目的 IP 位址、路由表與路由協定,選擇封包前往目的地的路徑。
(3)封包轉送
路由器依據網路層資訊,將封包從一個網路介面轉送至另一個網路介面,逐跳接近目的網路。
(4)網際網路互連
網路層可將不同類型、不同範圍的網路互相連接,使封包能跨越多個區域網路與廣域網路傳送。
(5)封包分割與重組
當封包大小超過某段鏈路所允許的最大傳輸單位(MTU)時,部分網路層協定可將封包分割,並在目的端重組。
(6)壅塞與服務品質支援
網路層可配合流量管理、壅塞控制及服務品質機制,改善封包在大型網路中的傳輸效率。
3. 綜合比較
| 比較項目 | 第 2 層:資料鍵結層 | 第 3 層:網路層 |
|---|---|---|
| 主要傳輸範圍 | 同一鏈路或相鄰節點間 | 跨越多個網路至遠端主機 |
| 資料單位 | 資料框(Frame) | 封包(Packet) |
| 位址類型 | MAC 實體位址 | IP 邏輯位址 |
| 主要工作 | 成框、媒介存取、錯誤偵測 | 路由選擇、封包轉送、網際網路互連 |
| 是否負責路由 | 通常不負責跨網路路由 | 負責路由與轉送 |
| 對應設備 | 網路交換器、網路橋接器 | 路由器 |
| 錯誤處理範圍 | 主要針對單一鏈路 | 主要處理跨網路傳遞 |
| 常見協定 | Ethernet、PPP、HDLC | IP、ICMP、OSPF、BGP |
4. 作答重點
第 2 層的核心是「同一鏈路上的資料框傳送」,第 3 層的核心是「跨網路的封包路由」。可用下列句子作為結論:
資料鍵結層解決的是「資料如何在相鄰設備間正確傳送」;網路層解決的是「封包如何經由不同網路抵達遠端目的地」。
(二)交易的 ACID 特性
1. 原子性(Atomicity)
原子性表示一個交易所包含的多個運算必須被視為不可分割的整體。
交易只有兩種結果:
- 全部運算成功,交易完成。
- 任一部分失敗,整個交易全部取消,資料庫回復至交易開始前的狀態。
例如銀行轉帳包含: