歡迎來到軟體開發概論!
你有沒有想過 Instagram 或 TikTok 這些大型應用程式是怎麼做出來的?這絕對不是一個人坐在電腦前,不停地敲程式碼直到大功告成那麼簡單。建立軟體就像建設摩天大樓或籌備大型音樂節一樣,是一段包含特定階段的旅程。在本章中,我們將探討軟體開發生命週期(Software Development Life Cycle, SDLC),這是程式設計師用來確保軟體能順利運作且符合預期目標的「路線圖」。
如果這些術語起初看起來很專業或過於「商業化」,別擔心;我們會用簡單的生活實例來為你拆解。讓我們開始吧!
1. 分析(Analysis):定義「做什麼」
在寫下第一行程式碼之前,我們必須先了解要解決的問題。這就是分析階段。
在此階段,開發者會與目標使用者(intended users)密切合作,以確定系統的需求(requirements)。你可以把這看作是「調查」階段。
分析階段的關鍵活動:
- 定義問題:軟體需要解決的具體問題是什麼?
- 確立需求:軟體必須具備哪些功能?(例如:「該應用程式必須允許使用者重設密碼」)。
- 建立資料模型:決定需要儲存哪些資料,以及這些資料之間如何關聯。
- 原型製作(Prototyping):建立功能的簡易初步版本,展示給使用者看並獲取反饋。這通常是敏捷開發(agile approach)的一部分,透過持續的互動來釐清需求。
類比:想像你是一位廚師。在下廚前,你需要先詢問顧客對什麼過敏、喜歡什麼、以及有多餓。如果你沒有先「分析」他們的需求,你可能會端出一份牛排給素食者!
快速回顧:分析
目標:了解問題及使用者需求。
關鍵詞:需求(Requirements)(系統「必須具備」的功能)。
常見錯誤:跳過這個階段!如果你不知道使用者想要什麼,最終成品一定會失敗。
2. 設計(Design):規劃「怎麼做」
當你知道「要做什麼」之後,就必須規劃「如何做」。這就是設計階段。
設計階段的關鍵活動:
- 規劃資料結構:決定要使用陣列(arrays)、列表(lists)還是記錄(records)來儲存資訊。
- 設計演算法:在寫程式碼之前,先擬定邏輯(通常使用虛擬碼或流程圖)。
- 模組化結構:將大型程式拆解成較小、易於管理的區塊,稱為子程式(subroutines)。
- 使用者介面(UI)設計:規劃螢幕、按鈕和選單的外觀,確保人類使用起來方便直覺。
你知道嗎?設計是一個迭代過程(iterative process)。這意味著你可能會先設計某個東西,展示原型給使用者後發現行不通,然後再回去重新設計。這是一個不斷循環的過程!
快速回顧:設計
目標:為解決方案建立藍圖。
關鍵詞:模組化結構(Modular structure)(將程式拆解成較小的部分)。
重點:良好的設計能讓實際的程式編寫過程更輕鬆、更快速。
3. 實作(Implementation):建造階段
這就是鍵盤敲擊聲不斷響起的階段!實作是將設計與演算法轉換為電腦可以處理的實際程式碼(code)與資料結構(data structures)的過程。
實作階段的關鍵概念:
- 編碼(Coding):使用高階語言(如 Python、C# 或 VB.Net)撰寫指令。
- 關鍵路徑(Critical Path):這是專案中其他一切都依賴的部分。例如,如果你正在建立一個線上商店,「支付系統」就在關鍵路徑上。如果支付功能無法運作,商店就無法完成!
- 敏捷/迭代方法:開發者通常不會一次建構整個系統,而是先建構一小部分、進行測試,再建構下一部分。
記憶小撇步:把「實作」想像成「施工」。藍圖(設計)已經完成,現在工人們正準備鋪磚砌牆。
快速回顧:實作
目標:編寫程式碼並建立資料結構。
關鍵詞:關鍵路徑(Critical Path)(解決方案中最關鍵的部分,必須完成才能確保其他部分正常運作)。
4. 測試(Testing):檢查錯誤
沒有程式設計師是完美的。測試的目的是在真實使用者看到之前,先找出程式碼中的「臭蟲」(Bugs)或錯誤。
若要正確測試程式,你必須使用測試資料(test data)。考試中你需要知道以下三種主要類型:
- 正常(典型)資料:程式預期會處理的資料。(例如:如果程式要求輸入年齡,輸入「15」)。
- 邊界資料:處於允許範圍邊緣的資料。(例如:如果年齡限制為 18 到 100 歲,測試「18」和「100」即為邊界測試)。
- 錯誤資料:因為類型錯誤或超出範圍而應被拒絕的資料。(例如:在要求輸入年齡時輸入「香蕉」)。
鼓勵一下:如果你的程式碼有錯誤,別擔心!測試並不是代表你編程能力「差」,這是每一家軟體公司為了確保品質都會進行的專業步驟。
快速回顧:測試
目標:找出並修正錯誤。
測試資料類型:正常(預期內)、邊界(邊緣值)、和錯誤(無效值)。
重點:你必須使用這三種類型進行測試,才能確保你的程式是強健的!
5. 評估(Evaluation):最終判決
程式寫好了也測試過了,但它真的好用嗎?評估階段是我們根據特定標準來評判最終系統的時候。
評估的三大支柱:
- 正確性(Correctness):程式是否真的達到了分析階段中使用者要求的功能?它能給出正確的答案嗎?
- 效率(Efficiency):程式執行速度快嗎?使用的記憶體合理嗎?還是既緩慢又笨重?
- 可維護性(Maintainability):如果另一位程式設計師看你的程式碼,他們看得懂嗎?它是模組化的嗎?有加上註解嗎?如果之後容易更新或修復,代表它的可維護性很高。
類比:想像你買了一輛新車。評估就是檢查:它能開嗎?(正確性)。省油嗎?(效率)。修車師傅好修嗎?(可維護性)。
快速回顧:評估
目標:確定系統是否成功。
關鍵標準:正確性、效率、和可維護性。
總結清單
為了精通本單元,請確保你能按順序說明這五個步驟:
1. 分析:與使用者互動、確立需求及資料模型。
2. 設計:規劃演算法、UI 及模組化結構。
3. 實作:撰寫程式碼並專注於關鍵路徑。
4. 測試:使用正常、邊界及錯誤資料來找出錯誤。
5. 評估:檢查正確性、效率及可維護性。