Hayward Lu (Hayward)
  • NEW!
    NEW!  Connect Ideas Across Notes
    Save time and share insights. With Paragraph Citation, you can quote others’ work with source info built in. If someone cites your note, you’ll see a card showing where it’s used—bringing notes closer together.
    Got it
      • Create new note
      • Create a note from template
        • Sharing URL Link copied
        • /edit
        • View mode
          • Edit mode
          • View mode
          • Book mode
          • Slide mode
          Edit mode View mode Book mode Slide mode
        • Customize slides
        • Note Permission
        • Read
          • Only me
          • Signed-in users
          • Everyone
          Only me Signed-in users Everyone
        • Write
          • Only me
          • Signed-in users
          • Everyone
          Only me Signed-in users Everyone
        • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invite by email
        Invitee

        This note has no invitees

      • Publish Note

        Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

        Your note will be visible on your profile and discoverable by anyone.
        Your note is now live.
        This note is visible on your profile and discoverable online.
        Everyone on the web can find and read all notes of this public team.

        Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Explore these features while you wait
        Complete general settings
        Bookmark and like published notes
        Write a few more notes
        Complete general settings
        Write a few more notes
        See published notes
        Unpublish note
        Please check the box to agree to the Community Guidelines.
        View profile
      • Commenting
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Suggest edit
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
      • Emoji Reply
      • Enable
      • Versions and GitHub Sync
      • Note settings
      • Note Insights New
      • Engagement control
      • Make a copy
      • Transfer ownership
      • Delete this note
      • Save as template
      • Insert from template
      • Import from
        • Dropbox
        • Google Drive
        • Gist
        • Clipboard
      • Export to
        • Dropbox
        • Google Drive
        • Gist
      • Download
        • Markdown
        • HTML
        • Raw HTML
    Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Engagement control Make a copy Transfer ownership Delete this note
    Import from
    Dropbox Google Drive Gist Clipboard
    Export to
    Dropbox Google Drive Gist
    Download
    Markdown HTML Raw HTML
    Back
    Sharing URL Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Customize slides
    Note Permission
    Read
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Write
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 什麼是 SDLC?軟體開發的 6 大必經之路 開發軟體就像「蓋房子」,不能直接拿起磚頭就開始砌牆。SDLC 是一套標準流程,確保軟體能高品質地完成,並且符合使用者的需求。 ## 一、 SDLC 流程拆解:從想法到產品 軟體開發通常分為以下六個階段,我們可以用 **SA、SD、PG** 等職位代稱來快速記憶: ### 1. 需求分析與規劃 (System Analysis, SA) - **白話文:** 搞清楚「要做什麼」。搞清楚「誰」要用「什麼」功能,以及業務的「邏輯」為何。 - **核心任務:** 收集客戶的想法,評估這個功能做不做得到?需要花多少錢?多久會做好?釐清功能邊界、梳理複雜的業務規則。 - **關鍵產出:** * **需求單:** 客戶最初始的想法。 - **隨意記錄/會議記錄:** 討論過程中的細節與共識。 - **SRS (需求規格說明書):** 將模糊的想法變成具體的軟體功能清單。 - UML: - **使用案例圖 (Use Case Diagram):** - **用途:** 畫出有哪些使用者(Actor)以及他們能操作的功能(Use Case)。 - **對 PG 的價值:** 讓開發者一眼看出系統的服務對象與功能範圍。 - **活動圖 (Activity Diagram):** * **用途:** 類似流程圖,描述業務的邏輯流向(例如:結帳時餘額不足要跳轉到哪一步)。 * **對 PG 的價值:** 這是寫 `if-else` 邏輯最精確的參考依據。 ### 2. 系統設計 (System Design, SD) - **白話文:** 畫出「設計圖」。決定「怎麼做」。將 SA 的規格轉化為程式結構與資料關聯。 - **核心任務:** 決定軟體的外觀(UI/UX)、資料庫怎麼存資料(設計資料庫結構)、定義程式類別、規劃 API 呼叫順序、系統整體的架構。 - **關鍵產出:** * **DDS (系統設計說明書):** 給工程師看的施工藍圖。 - **資料庫關聯圖 (ER Diagram)**、**介面原型 (Wireframe)**。 - UML: - **類別圖 (Class Diagram):** - **用途:** 定義物件的屬性、方法以及彼此間的關係(繼承、關聯)。 - **對 PG 的價值:** 最重要的一張圖。工程師可直接據此建立資料庫 Table 與程式中的類別架構。 - **循序圖 (Sequence Diagram):** * **用途:** 描述物件之間在時間軸上的互動(例如:前端 call API,後端如何查資料庫再回傳)。 * **對 PG 的價值:** 讓開發者知道程式執行的先後順序,避免邏輯斷層。 * **狀態圖 (State Machine Diagram):** * **用途:** 描述物件狀態的轉換(例如:訂單從「待付款」轉為「已發貨」)。 * **對 PG 的價值:** 確保狀態變更符合邏輯,避免出現「未付款卻已發貨」的 Bug。 ### 3. 程式開發 (Programmer/Coding, PG) - **白話文:** 正式「動工蓋房子」。 - **核心任務:** 工程師根據設計圖寫出程式碼。根據 SA/SD 提供的圖表與文件,產出高品質的原始碼。 - **關鍵產出:** * **程式原始碼 (Source Code)**。 - **API 文件:** 告訴不同模組之間如何溝通的說明書。 ### 4. 測試驗證 (Testing/QA) - **白話文:** 檢查有沒有「漏水或裂縫」。 - **核心任務:** 由測試工程師 (QA) 尋找 Bug,確保軟體跑起來跟當初 SA 寫的規格書一模一樣。 - **關鍵產出:** * **測試報告 (Test Report)**、**缺陷報告 (Bug Report)**。 ### 5. 部署與發布 (Deployment) - **白話文:** 「交屋」讓使用者入住。 - **核心任務:** 將程式放到伺服器(正式環境),讓全世界或公司內部員工可以使用。 - **關鍵產出:** * **發布說明 (Release Notes)**、**使用者操作手冊**。 ### 6. 維運與更迭 (Maintenance) - **白話文:** 「售後服務」與房屋修繕。 - **核心任務:** 修復上線後才發現的小問題,或是根據使用者回饋進行微調。 - **關鍵產出:** * **維護單、工作記錄單**。 --- ## 二、 快速對照表:任務與文件一覽 | **階段名稱** | **核心角色** | **關鍵任務** | **產出文件 (初學者必知)** | 核心 UML 工具 | 給 PG 的主要訊息 | | ----------- | -------------- | ---------- | ------------------- | --------- | ------------ | | **1. 需求分析** | **SA** (系統分析師) | 訪談、談判、收斂需求 | **SRS** (需求規格說明書) | 使用案例圖、活動圖 | 「要做哪些功能?」 | | **2. 系統設計** | **SD** (系統設計師) | 規畫架構、資料結構 | **DDS** (設計說明書) | 類別圖、循序圖 | 「程式與資料庫怎麼寫?」 | | **3. 開發實作** | **PG** (程式設計師) | 撰寫程式碼 | **API 文件**、原始碼 | | 實作功能 | | **4. 測試階段** | **QA** (測試工程師) | 找 Bug、壓力測試 | **測試報告**、Bug Report | | 「有沒有寫錯?」 | | **5. 部署發布** | **OP/DEVOPS** | 上線部署 | **使用者手冊** | | 「如何讓大家使用?」 | | **6. 維護更迭** | Maintenance | 備份、修復、微調 | **維護單、工作記錄單** | | | **初學者小撇步:** 並非每個專案都要畫完所有的 UML 圖。 - 如果你是**後端開發**,請務必看懂 **類別圖** 與 **循序圖**。 - 如果你是**前端開發**,**活動圖** 與 **使用案例圖** 對理解操作流程最有幫助。 - **小專案:** 活動圖 + 簡單的類別圖(或資料庫 Schema)就足夠了。 - **複雜專案:** 務必加入循序圖,因為這能最有效地減少 PG 在處理多物件互動時的混亂。 --- ## 三、 常見 Q&A **Q:為什麼需要這麼多文件?直接寫程式不是比較快嗎?** > **A:** 軟體開發最怕「雞同鴨講」。文件是為了讓 SA、SD、PG 之間有共同的語言。如果沒有文件,開發到一半發現需求理解錯誤,打掉重練的成本會是原本的數十倍。 **Q:開發模型有哪些?** > **A:** 常見的有2種類: > - **瀑布流 (Waterfall):** 一步一腳印,做完第一步才做第二步(適合大型且需求明確的政府專案)。 > - **敏捷式 (Agile):** 快速開發、快速修錯,每兩週就出一個小版本(適合市場變化快的新創產品)。

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully