軟體開發簡介

歡迎!在本章中,我們將探討軟體究竟是如何被創造出來的。這不僅僅是坐在電腦前敲打程式碼那麼簡單。就像蓋房子需要藍圖、地基和定期維修一樣,專業軟體開發遵循一個特定的過程,稱為程式開發生命週期 (Program Development Life Cycle, PDLC)。別擔心步驟看起來很多——我們會將其拆解成簡單、合乎邏輯的部分,讓你輕鬆理解!


12.1 程式開發生命週期 (PDLC)

程式開發生命週期 (PDLC) 是開發人員用來創建高品質軟體的一套循序漸進的過程。你可以把它想像成軟體工程師的「待辦事項清單」。

五大主要階段

每個軟體專案通常都會經歷以下五個階段:

1. 分析 (Analysis):精確找出使用者的需求。開發人員會與客戶溝通,並建立一份「需求規格說明書」。

2. 設計 (Design):建立「藍圖」。這包括規劃使用者介面、資料結構以及演算法(使用流程圖或虛擬碼)。

3. 編碼 (Coding):使用 Python、VB 或 Java 等語言編寫程式的實際過程。

4. 測試 (Testing):檢查程式中的錯誤(Bug),並確保其符合分析階段所設定的需求。

5. 維護 (Maintenance):在軟體發布給使用者後,確保其持續順暢運作。

開發模型

不同的專案需要不同的處理方式。以下是你需要了解的三種模型:

1. 瀑布模型 (Waterfall Model)
這是一種「線性」模型。你必須完全完成一個階段,才能進入下一個階段。就像真正的瀑布一樣,你很難逆流而上!例子:要求極其嚴格的大型政府專案。

2. 迭代模型 (Iterative Model)
開發人員先建立軟體的一個小版本,進行測試,然後「迭代」(重複)循環以增加更多功能。例子:開發手機應用程式時,先發布「1.0 版本」,然後再於「2.0 版本」中加入更多功能。

3. 快速應用程式開發 (RAD)
這種方法專注於快速構建原型 (Prototypes)(早期且簡單的版本)以獲取使用者的回饋。它涉及大量的溝通與交流。例子:初創公司試圖測試一個全新的想法,看看大眾是否喜歡。

快速回顧:PDLC 模型

瀑布式:嚴格、按步就班、難以變更。
迭代式:以「循環」或版本形式構建軟體。
RAD:快速的原型製作與持續的使用者回饋。


12.2 程式設計

在編碼之前,我們必須先進行規劃。兩種主要的工具可以幫助我們在寫下第一行程式碼之前,「預見」程式的運作方式。

結構圖 (Structure Charts)

結構圖用於分解 (Decomposition)——將一個棘手的大問題拆解成較小、易於管理的小任務(模組)。它展示了這些模組如何互動,以及模組之間傳遞了什麼資料(參數)。

類比:如果「做晚餐」是個大任務,那麼「切菜」、「煮水」和「擺餐具」就是子任務。

狀態轉換圖 (State-Transition Diagrams)

這些圖表顯示系統如何根據特定事件從一個「狀態」轉換到另一個「狀態」。
例子:自動販賣機。它的「狀態」可以是等待投幣選擇商品出貨。當你投入硬幣時,狀態便會從「等待」轉換為「選擇」。


12.3 程式測試與維護

即使是最優秀的程式設計師也會犯錯!測試就是我們尋找並修復這些錯誤(缺陷)的方法。

錯誤類型

1. 語法錯誤 (Syntax Errors):就像程式碼中的「文法錯誤」。程式甚至無法啟動。例子:將 "print" 寫成 "prnt"。

2. 邏輯錯誤 (Logic Errors):程式可以運行,但結果是錯的。例子:你想將兩個數字相加,卻不小心用了減號:\( Result = A - B \) 而非 \( Result = A + B \)。

3. 執行階段錯誤 (Run-time Errors):程式啟動了,但在運行過程中崩潰。例子:嘗試將數字除以零 \( (x / 0) \)。

測試方法

我們如何找到這些錯誤?我們使用不同的測試策略:

人工執行 / 逐步演練 (Dry Run / Walkthrough):人腦使用「追蹤表 (Trace Table)」用紙筆模擬程式碼的執行。不使用電腦!

黑箱測試 (Black-box Testing):只測試輸入輸出。你不看內部的程式碼,只檢查結果是否正確。

白箱測試 (White-box Testing):測試程式碼的內部邏輯。你檢查所有可能的執行路徑(迴圈、if 判斷式),確保它們都能正常運作。

Alpha 測試 (Alpha Testing):由開發人員在「內部」進行的測試。

Beta 測試 (Beta Testing):將軟體發布給一小群真實使用者,以在現實環境中找出 Bug。

存根測試 (Stub Testing):使用「虛擬」程式碼作為尚未編寫完成之模組的佔位符。

選擇測試資料

要制定一個好的測試計劃,你需要三種資料:

1. 正常資料 (Normal Data):應該能順利運作的資料。例子:如果程式接受 1-100 的年齡,"25" 就是正常資料。

2. 異常資料 (Abnormal Data):顯然錯誤的資料。例子:在年齡欄輸入 "香蕉" 或 "-5"。程式應該拒絕這些輸入。

3. 極端(邊界)資料 (Extreme / Boundary Data):位於允許範圍邊緣的資料。例子:針對 1-100 的年齡,"1" 和 "100" 就是極端資料。很多 Bug 就隱藏在這裡!

關鍵重點:維護

軟體完成後,便進入維護階段。維護分為三種:
1. 更正性 (Corrective):修復測試期間未發現的 Bug。
2. 適應性 (Adaptive):更改軟體以使其能在新的作業系統上運作(例如:為 Windows 11 更新應用程式)。
3. 完善性 (Perfective):改進軟體(例如:提升速度或加入「深色模式」)。


摘要檢查清單

✓ PDLC 階段:分析、設計、編碼、測試、維護。
✓ 模型:瀑布式(線性)、迭代式(迴圈)、RAD(原型)。
✓ 設計工具:結構圖(分解任務)與狀態轉換圖。
✓ 錯誤:語法(文法)、邏輯(數學/邏輯失敗)、執行階段(崩潰)。
✓ 測試:白箱(內部)、黑箱(外部)、Alpha(開發人員)、Beta(使用者)。
✓ 資料:正常、異常、極端。

小撇步:在考試中,如果題目問你如何修復邏輯錯誤,請記住,使用追蹤表 (Trace Table) 進行人工執行 (Dry Run) 是找出數學邏輯出錯位置的最佳方法!