D3 - 先想清楚再動手:系統需求規劃

更新於 發佈於 閱讀時間約 8 分鐘

到了第三篇~!,我們準備進一步進入正題!

上一篇,我們已經選定了要開發的專案:「個人財務管理系統」。不過,開始寫程式之前,千萬別急著衝一波,咱們得先做點規劃。因為需求與系統規劃這一步,就像是開車前要先設定導航。沒有路線圖,你只會繞來繞去,最後迷路在代碼的荒野中。

別擔心,這篇文章將會帶你從需求確認到系統規劃,逐步理清接下來的開發路線。我們會分階段進行,從環境建置、需求確認到每一個開發步驟,一步步來。順序很重要,千萬別跳步,跳步只會導致「debug 全家桶」。


系統架構:選擇合適的技術

接下來,讓我們看看要用哪些技術來實現這些需求。每個選擇都是基於開發效率、可擴展性與實用性來考量的,這樣能讓系統既能快速開發,又能維護與擴展。

  • 後端:
    • 語言與框架:PHP + Laravel,讓我們可以快速搭建 API,處理資料邏輯。
    • 資料庫:MariaDB,輕量且適合處理財務資料。
    • 伺服器:Nginx,處理靜態資源與 API 請求的好夥伴。
  • 前端:
    • 框架:Nuxt,Vue 的全能選手,幫我們快速搭建一個高效的 SPA。
    • UI 框架(可選):Tailwind CSS 或 Bootstrap,讓畫面不那麼對不起自己。Tailwind 比較彈性、客製化強,而 Bootstrap 上手快、組件豐富,選擇看個人愛好。
  • 開發環境:
    • 容器化:Docker,用 Docker 把所有服務包在一起,讓環境配置不再頭痛,保證開發、測試與生產環境一致。

什麼是適合? 你自己理解並結合別人的經驗,直覺會告訴你,就是它!

需求確認與規劃

在寫一行程式碼前,先讓我們花點時間確認需求。不管專案大小,需求確認絕對是不可或缺的一步。這次的專案,我們聚焦於打造一個「個人財務管理系統」,所以需求必須簡單且可行,別一次想要做太多。MVP,你們懂的,能跑就行,後續再說。


需求確認與規劃

  1. 用戶基本操作:
    • 新增、編輯、刪除財務記錄(收入與支出)。
    • 每月財務總結報表(至少顯示每月收入支出統計)。
  2. 前後端交互需求:
    • 前端用表單收集數據,後端用 API 接收並處理。
    • 前端需提供報表 UI,透過 API 從後端獲取數據來呈現。

一開始千萬不要搞太複雜,簡單到位的功能最重要。過度設計通常會導致功能失控,做不完。不要問我是怎麼知道的……



一、環境建置:開發前的第一步

說到環境建置,這通常是整個開發過程中最枯燥的一環。但相信我,環境建置是日後順利開發的基石。若是這部分馬馬虎虎,接下來可能會陷入一堆奇怪的錯誤,像是「Why does Nginx hate me?」這類情況。

環境建置目標

建立一個可用的開發環境,確保所有工具都能正常運作。

  • 安裝 Docker:確保你的電腦上有 Docker,容器化管理一切工具。
  • 設定 Docker Compose:編寫 docker-compose.yml,配置好 Laravel、MariaDB、Nginx、Nuxt 等服務。
    • 把每個服務都放在不同的容器中,避免未來部署時因為環境不同產生錯誤。
    • 重點是一次配置後,無論在本機還是伺服器都能無痛運行。
  • 啟動容器:使用 docker-compose up,檢查所有服務是否正常啟動。
  • 測試環境:在瀏覽器中訪問預設頁面,檢查 Laravel 和 Nuxt 是否正常運作。

這一步雖然無聊,但踩過的坑,將來都會變成你處理問題的超能力。

二、第一階段確認:看到畫面的興奮

當我們完成相關的配置之後,當然是要來看看,搭載出來的內容是否有正常運作,不然搞了老半天,掛在環境沒有Run起來,也是蠻苦的。

  • 確認 Laravel 和 Nuxt 可以正常運作。
  • 測試 Laravel 與 MariaDB 是否已經進行連線
  • 測試當Docker 重新執行時是否同樣正常

三、後端開發:穩固基礎

進入後端部分,我們會使用 Laravel 來處理所有數據邏輯與 API 開發。後端是整個系統的「大腦」,所以要穩紮穩打,特別是數據流與資料庫設計,這關係到日後系統的穩定性與擴展性。

具體步驟

  1. 資料庫設計:
    • 設計「財務記錄」資料表,包含收入與支出金額、類別、日期等欄位。
    • 使用 Laravel 的 migration 工具來管理資料庫變更,未來資料庫需要升級時,也能輕鬆應對。
  2. API 開發:
    • 開發 API 來處理前端傳來的數據,包含新增、編輯、刪除記錄的請求。
    • 確保 API 能正確地與資料庫互動,成功存入與取出數據。
  3. 測試 API:
    • 別等到前端整合才來測試後端 API!利用 Postman 或 curl 工具來測試 API 確認數據流正常。

四、第二階段確認:後端測試與驗收

這裡進行後端的第二次確認,確保 API、數據庫與資料邏輯一切都在預期內,才能進入前端的開發。如果後端不穩,接下來的開發只會是一場災難,真的。

  • 確認 API 可以正確處理各種請求。
  • 測試數據庫是否能正確存取資料。
  • 檢查 Laravel 日誌,看是否有潛在錯誤未處理。

五、前端開發:展示資料的舞台

有了後端 API 之後,我們可以進入前端開發。這次會使用 Nuxt 來打造一個簡單且直觀的 UI,幫助使用者操作系統並查看財務報表。前端是用戶的第一印象,所以 UI 的易用性相當關鍵。

具體步驟

  1. 設計 UI:
    • 基本表單:用來輸入收入與支出記錄。
    • 財務報表頁面:顯示每月的財務數據總結。
  2. 前後端交互:
    • 使用 Axios 向 Laravel API 發送請求,實現新增、編輯、刪除財務記錄的操作。
    • 在報表頁面從 API 獲取數據,並用表格或圖表呈現。
  3. 前端測試:
    • 確認每個按鈕、表單與報表都能正確運作。
    • 測試 API 回應是否正常,數據是否能成功顯示在前端。

六、第三階段確認:全面測試與驗收

到了這裡,我們已經完成了前後端的開發,接下來就是進行全面的測試與驗收。這部分就是找問題的時刻了,別怕!每個錯誤都會讓你的系統更堅固。

測試項目:

  1. 功能測試:確認所有核心功能(新增、編輯、刪除記錄、查看報表)都能正常運作。
  2. 整合測試:確認前後端數據交互順暢,API 沒有錯誤回應。
  3. 用戶體驗測試:測試表單的易用性,確保 UI 簡單直觀。

最後…待辦清單

最後,這裡給大家整理了一個開發的待辦清單大前提,讓你在進行開發的過程中有個清晰的步驟。

  • 安裝 Docker 並設置 Docker Compose與相關的nginx、laravel、nuxt、mariadb的環境
  • 建立 Laravel 專案並配置資料庫
  • 設計並實作後端 API
  • 確認 API 測試通過
  • 開發前端頁面並整合 API
  • 測試所有功能,確保系統運作正常
  • 優化 UI,讓使用者操作更加順暢

最後的小囉唆…每日 Stand-up 和週回顧

即便是獨立開發,仍然建議你每天進行每日 Stand-up,確認每日的工作進度與問題,內容包括:

  • 今天完成了什麼?
  • 有哪些遇到的困難?
  • 明天計劃做什麼?

小結:系統規劃是成功的關鍵

需求與系統規劃這一步可能看起來不太酷,但這是任何成功專案的基礎。隨著專案的進行,規劃的思維會讓你少走很多冤枉路,也讓整個開發過程更有條理。

規劃好流程,接下來的開發會像拆積木一樣,簡單且有成就感!接下來,就讓我們就讓我們逐步完成,看是簡單,細節滿滿的專案吧!

希望這篇文章能幫助你更好地理解如何從需求確認到系統規劃,並且讓整個開發過程更加順暢。別忘了,環境建置雖然很無聊,但越無聊的事越要做得好,這樣才能讓後面的開發更順暢。加油,繼續前進!

留言
avatar-img
留言分享你的想法!
普普文創-avatar-img
2024/10/11
看到這篇很感動!寫得很清楚!也寫得很明白!只是做這麼多,如果只給你自己一個人用,我覺得有點浪費。或者可以朝另外一個方向去想,給所有人都適用的一種東西,也就是"財務管理"這樣會來的有效果的多。
Rewrite-avatar-img
發文者
2024/10/12
普普文創 非常感謝您的支持~,這套財務管理系統,止步於「自用」確實是浪費了,在這次參加ithome鐵人賽的過程,已經是完成大部分的基礎架構。 您的建議很不錯,後續我也有意要把它發展成一套可以對大眾服務的系統,時程上是希望明年第一季末可以推上線~
avatar-img
詹姆士的軟體易開罐
26會員
86內容數
這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
Vue 筆記,Nuxt 簡介
Thumbnail
Vue 筆記,Nuxt 簡介
Thumbnail
Vue3 學習筆記,專案建立與基礎響應式篇
Thumbnail
Vue3 學習筆記,專案建立與基礎響應式篇
Thumbnail
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
Thumbnail
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
Thumbnail
什麼是 Frontend Infrastructure (Infra) ? 提到前端網頁開發,可能很多人聯想到的都是 UI 畫面切版、動畫特效,甚至認為前端開發者的工作內容「離不開畫面」。但其實前端開發是一個非常廣的領域,同樣身為前端工程師,每個人專注開發的領域可能都不一樣,所打造出的技能樹...
Thumbnail
什麼是 Frontend Infrastructure (Infra) ? 提到前端網頁開發,可能很多人聯想到的都是 UI 畫面切版、動畫特效,甚至認為前端開發者的工作內容「離不開畫面」。但其實前端開發是一個非常廣的領域,同樣身為前端工程師,每個人專注開發的領域可能都不一樣,所打造出的技能樹...
Thumbnail
其實要為專案建立操作介面的方式很多,除了網頁之外,還能另外寫個專門的手機 APP 連線,或是乾脆升級算法,讓我們能隨口喊一聲「嘿OO!」就搞定,不過⋯
Thumbnail
其實要為專案建立操作介面的方式很多,除了網頁之外,還能另外寫個專門的手機 APP 連線,或是乾脆升級算法,讓我們能隨口喊一聲「嘿OO!」就搞定,不過⋯
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
Thumbnail
Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
Environment: GCP Linux version: CentOS 7 Laradock的初衷原是為了將Laravel環境容器化,但隨著時間的演進,慢慢包含了各種常用的工具了,如php-fpm, apache, nginx, mysql, phpmyadmin, redis等等這些常用的東
Thumbnail
Environment: GCP Linux version: CentOS 7 Laradock的初衷原是為了將Laravel環境容器化,但隨著時間的演進,慢慢包含了各種常用的工具了,如php-fpm, apache, nginx, mysql, phpmyadmin, redis等等這些常用的東
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News