Colorly | 4. 軟體開發生命週期 (Software Development Life Cycle, SDLC)
SDLC(Software Development Life Cycle, 軟體開發生命週期)是一個用來描述開發軟體系統的完整流程與階段的模型。
Generally 涵蓋從規劃、設計、開發、測試、部署到維護, 用於確保開發效率與產出品質。而既然說到 週期, 代表 SDLC 不再是單一流程線,而是一個持續迭代的迴圈。
而 SDLC 也有多種實作的模型, 例如 Waterfall, Agile 等。近年來, 諸多專案藉由引入 Agile 與 DevOps,能在短週期內快速釋出功能,與適應變化, 可謂是強強聯手。我在先前參與信用卡系統開發時, 也強調將 Secure 整合到 SDLC 內, 是為安全軟體發展生命週期 (SSDLC)。
今天將以 Colorly 專案為例,逐步拆解 SSDLC 各階段在實務中如何落地,從點子到產出,從理論到程式, 開發節奏與工具如下:
- 短迭代敏捷開發:4 天為一個 Sprint,快速實作與驗證想法
- Obsidian + Kanban 插件,追蹤 logback
- Markdown 記錄 API 與技術規格
- Mermaid 繪製 API flow、系統架構圖
- Flyway 控制資料庫 schema 版本
- CI/CD 自動化流程
- GitHub Action + Private Runner
- 自動化 Lint、測試
- SonarQube 掃描
- shell script 部署
- 部署驗證與測試
- 功能測試
老實說我覺得這一篇應該要放在第二篇的才對, 但是跑到第 4 週我覺得才比較穩定, 而且今天的文章主要是 Top-down 介紹 SDLC 與各方面的落地, 我想等之後更趨近穩定後再針對上面的內容獨立寫幾篇銀彈好了。
前置作業 (Scrumban, Git Strategy, Pipeline)
Scrumban
工欲善其事, 必先利其器, Sprint 1 & 2 的目標是確認專案管理的方法, 搭建 devops pipeline 並 init-project 到最小可開發的情境。
首先是用 Obsidian + Kanban 插件, 並用 tag 分化出每個卡片的分類, 每個卡片在建立的時候都要註記它的範圍與產出, 其中 #plan 的卡片在完成設計後再拆分成數個子項目。
Sprint 週期是 3 + 1, 做一次 retrospective, 目標是把 WIP 從 Design 走到 release, 最後殘留的 TODO 項目放回 Backlogs 內。
但感覺一邊研究一邊實作, Backlogs 很快就會炸開就是了…

Git Strategy & Pipeline
由於是單人開發, 這裡是先採用 github flow, 也就是從 main 內創建 feature 分支, 在 Sprint retro 時併回 main, 並部署到 uat 環境測試。在 github actions 中設定 on-commit feature-branch 需要通過 Quality Check, (理想中) 當 Code Coverage 未通過時, 是不能被 Merge 回 Main 的, 某方面也是強迫使用 TDD。
概念上和 Will 保哥在使用的分支策略類似。
因為是孤單威廉… 就自己 review 自己吧… (不過最近有導入 AI 跟 SonarQube)

Pipeline 則貫穿四個環境,分別是本地開發的 Dev (我的筆電們), github repo, devops 機(Dell 7040m), 和 sit/uat 機(一台 Am4)。並在早期就把 EFK, Jeager 等觀測元件架設好, 待後續跟 application 連結。
目前剛搭建完 uat 的環境, 等 Prod 環境完成後, 再回來更新一份完整的 Git Branch Strategy
(更新中…)
