TL;DR — 根據 Standish Group CHAOS Report,約三分之一的 IT 專案能在時程與預算內達成目標,其餘三分之二,很多問題可以追溯到一開始的合約沒寫清楚。本文拆解 8 個關鍵議題:委任 vs 承攬、SOW、IP 邊界、驗收標準、CR 流程、原始碼保管、爭議解決,以及合約真正能保護你什麼。

引言

軟體開發合約,是台灣外包市場爭議最多、範本最多,但真正被讀懂的最少的一種合約。

問題不在於懶得讀。而是,軟體開發的標的物本來就難以在簽約前完整定義,你要把「一套系統」寫進合約,卻連系統長什麼樣都還不確定。語言的模糊不一定是失誤,有時是結構性的困難。但這讓甲乙雙方都暴露在高度不確定性下。

如何選擇合適的合作夥伴是第一步,但再好的合作夥伴,沒有一份設計得當的合約,雙方都走在風險上。這 8 件事搞清楚了再簽。

合約文件與開發協作場景

一、委任還是承攬?選錯法律定性,後果差很大

根據 Standish Group 多年 CHAOS Report,約 31–37% 的 IT 專案能按時按預算交付。多數失敗案件中,法律框架選錯是一個被嚴重低估的風險來源,它決定了當事情出錯時,你能用什麼規則處理。

台灣《民法》下,軟體開發合約可能落入「委任」或「承攬」兩種截然不同的框架。選哪個,影響的不只是條文措辭,而是任意終止權、報酬請求時機、違約責任的整套邏輯。

多數人簽合約時沒意識到這個選擇。等到案子中途出問題,才發現雙方對「能不能喊停」的預期完全不同。

面向委任(民法 §528)承攬(民法 §490)
雙方能否任意終止?均可(§549),可約定通知期業主可(§511);廠商原則上不行
報酬請求時機依約定完成後(§505)
著作歸屬預設受任人(廠商)持有承攬人(廠商)持有
適合情境敏捷開發、顧問合作、長期維護固定需求、一次性交付

敏捷開發專案建議明示採「委任」關係,但必須在合約中限制任意終止的條件,例如「需提前 30 個工作日書面通知,且應支付終止前已完成工作的報酬」。

二、工作範圍(SOW):模糊定義是所有爭議的源頭

PMI 的研究指出,35% 的專案失敗直接源自需求蒐集不準確(PMI, Workamajig 引用)。這個數字在軟體外包場景下更高,因為需求在一開始本來就沒辦法完整定義。

不是廠商想偷懶,是因為自然語言描述功能本來就是誤會的起點。「系統需要快速回應」這句話,業主想的是「像 Google 一樣快」,廠商理解的是「不會 timeout 就好」。

SOW 三要素:

  1. 功能清單:以用戶故事(User Story)格式定義,例如「身為會員,我可以在 30 秒內完成購物車結帳流程」
  2. 技術規格:量化非功能需求,「首頁載入時間 ≤ 2 秒(Lighthouse Performance ≥ 80)」
  3. 排除事項:明列「不包含什麼」,這是最常被遺漏、也最容易引發爭議的部分

SOW 建議作為合約附件,版本控制(v1.0, v1.1…),每次變更需雙方簽署新版本。

建議條款方向:「任何本合約附件一未列明之功能需求,均視為本合約範圍外之額外工作,須另行簽署補充協議並附加報酬。」

三、付款條款:保護雙方的結構,以及廠商不說的現實

Dun & Bradstreet 的調查顯示,25% 的外包合作關係在兩年內失效,50% 在五年內失效。付款條款設計不良,是加速這個失效的關鍵因素之一,廠商墊款墊到撐不下去,或業主付了錢卻拿不到預期的東西。

付款結構的選擇,決定的是風險由誰承擔:

模式適合情境業主風險廠商風險
固定報價需求明確、範圍不變低高(超工時自吸收)
時間與材料(T&M)敏捷迭代、需求仍在演化高(可能超預算)低
里程碑付款多數外包案件中中

里程碑付款是台灣外包市場最常見的結構。業界慣例:預付款 20–30%,每期款項與驗收掛鉤,尾款 5–10% 在保固期結束後付清。

廠商不說、但你需要知道的現實:

台灣外包市場有一個結構性問題。廠商為了接案,往往接受低預付款甚至無預付款的條件。等案子開始,人力成本全部墊在前面。客戶若在開發過程中消失,電話不接、訊息已讀不回,廠商面對的局面是:合約有里程碑設計,但客戶不回應驗收;走法律途徑,訴訟成本往往超過欠款金額。

比合約條款更重要的商業結構設計:

  • 預付款比例越高越好,30% 是最低防線
  • 每個里程碑的付款金額應覆蓋該階段的人力成本
  • 加入停工條款:「乙方收款逾期超過 X 個工作日,有權暫停工作直至付款完成,且不承擔因此導致的延誤責任」

四、IP 與 Know-how 邊界:業主能要求什麼,廠商應保護什麼

這個議題在台灣中文文章中幾乎沒人完整討論,但它是外包關係中最常引發不滿的灰色地帶,業主擔心商業模式外洩,廠商擔心技術資產被沒收,雙方在合約桌上陷入拉鋸。

業主的擔憂是合理的:廠商了解了我的業務邏輯,如果拿去服務競業怎麼辦?但有些要求超出了合理範圍。

項目合理歸業主合理歸廠商
業務流程、商業邏輯設計✅ 業主帶來的需求
客製化程式碼(依此專案開發)✅ 付費買斷
廠商底層框架、通用模組✅ 廠商資產,僅授權使用
系統架構設計、技術選型方法✅ 廠商技術能力
行業 know-how 的技術實現方式✅ 廠商可複用

業主說「我的業務流程獨特,廠商不能拿去服務競業」是合理訴求,但這應該透過 NDA 加上競業條款來保護,而不是著作權全包。要求「所有程式碼、框架、工具著作權全部歸我」,等於要求廠商把工具箱沒收,廠商就無法繼續做這個行業了。

正確的保護機制組合:

  • NDA:廠商不得揭露業主的業務邏輯、客戶資料、系統架構細節
  • 競業條款:合約期間及結束後 X 個月內,不得直接服務業主的直接競業
  • 著作財產權:客製程式碼歸業主,通用框架採授權(非移轉)方式使用

2026 年 AI 程式碼新風險:

目前大量開發者使用 AI 工具輔助撰碼(GitHub Copilot、Cursor 等)。台灣著作權法目前不承認非人類著作人,AI 生成程式碼的著作權歸屬尚無明確法院判決。

建議在合約中加入:「乙方保證交付之程式碼若含 AI 工具生成內容,均已確認不侵害任何第三方著作權,相關合規責任由乙方承擔,並應在業主要求時揭露使用的 AI 工具清單。」

IP 邊界示意圖:業主資產(業務邏輯、客製程式碼)與廠商資產(框架、架構方法)的區分

五、驗收標準:「完成」的定義決定最後一筆款能不能收

驗收條款缺失的後果很具體:廠商說交付了,業主說不對,雙方各說各話,最後一筆款就卡在那裡,沒有人拿得走。在我們觀察過的外包案件中,這是最常見的卡關點,也是最容易在一開始就處理好的問題。

驗收分兩個維度,兩個都要寫清楚:

功能性驗收:

  • 以 User Story 逐項核對,每個功能點標記「通過 / 不通過 / 待修正」
  • 附上截圖或測試記錄作為書面依據

非功能性驗收:

  • 效能:首頁載入 ≤ 2 秒、API 回應 ≤ 500ms
  • 安全性:OWASP Top 10 漏洞掃描報告
  • 相容性:指定瀏覽器版本、行動裝置規格

驗收期限設計:

建議條款方向:「甲方於收到乙方書面通知後 10 個工作日內完成驗收。期限內未以書面提出具體異議者,視為驗收通過。」這個條款對雙方都公平,廠商不會被業主拖著無限期不驗收,業主也有足夠時間測試。

六、變更請求(CR)流程:需求擴張的正式處理

根據 PMI 的研究,52% 的專案受到 scope creep(需求範圍蔓延)影響,這幾乎是每兩個專案就有一個(PMI Pulse of the Profession, 2018)。問題不在變更本身,而在於沒有正式流程處理變更,廠商被拖著加功能,加到一半原始預算全部燒完。

標準 CR 流程(四步):

  1. 提出:業主以書面提出,含功能描述與背景
  2. 評估:廠商於 5 個工作日內回覆工時、費用、對現有進度的影響
  3. 確認:雙方書面簽署 CR 單
  4. 執行:納入下一個開發週期

「不簽 CR 單就不執行」是廠商最重要的自保原則。業主說「先做,之後再說」,廠商答應了,之後再說就變成「不是說好免費的嗎?」

建議條款:「所有變更請求須以書面提出,乙方於收到後 5 個工作日內提供工時與費用評估。未經雙方書面確認之變更請求,乙方不承擔執行義務。」

這個紀律在系統現代化或數位轉型專案中尤為重要,需求演變速度快,沒有 CR 流程的合約幾乎必然失控。

七、原始碼保管與終止條款:客戶跑了,你能取回什麼?

這一段,從業主和廠商兩個視角都很重要。

對業主:廠商倒閉或終止合作時的保護

台灣中小型外包廠商有一定的財務風險。若開發期間廠商倒閉,業主能否取得原始碼,完全取決於合約有沒有寫清楚。

建議做法:

  • 要求廠商使用 GitHub/GitLab 等版本控制平台,業主帳號需有 co-owner 或 fork 權限
  • 合約明定:「乙方應於每個里程碑結束後,將當前版本原始碼及部署文件上傳至甲方指定之程式庫」

對廠商:客戶消失時的停損

客戶不付款、不回應驗收、電話不接,這是台灣接案市場的真實情境。廠商在這種情況下的唯一籌碼,是原始碼。

建議條款方向:「甲方付款逾期超過 15 個工作日,乙方有權暫停交付原始碼及部署作業,直至付款完成,且不因此承擔任何違約責任。」

這個條款的目的不是報復,而是創造談判空間。

知識轉移(Knowledge Transfer)

合約終止時,不論原因,建議明訂以下移交項目(參考 ncube.com 業界實務):

  • 技術文件(系統架構圖、API 文件、資料庫 schema)
  • 部署說明與環境設定
  • 帳號密鑰清單

移交期限建議 20 個工作日,費用獨立計算。

八、合約的邊界:它能保護你什麼,不能保護你什麼

這是所有文章都不說、但最重要的一件事。

合約能告訴你「你有理」。但無法告訴你「你能拿回錢」。

台灣小額民事訴訟上限是 10 萬元。超過 10 萬的案件走一般民事,從起訴到拿到判決,一審通常需要 1–2 年。如果對方在判決前就把資產轉移或公司清算,勝訴也是空判。

爭議解決方式比較:

方式費用時間拘束力適合情境
協商幾乎免費1–4 週無(達成合意才有)雙方仍有合作意願
調解低1–3 個月調解成立後有金額中等、求快速結案
仲裁中6–12 個月有(終局)不想公開訴訟、求確定性
訴訟高1–3 年有金額大、需要判例

台灣可用的仲裁機構:中華民國商務仲裁協會(CAAI)。建議合約中指定「先行調解,調解不成提付仲裁」,跳過漫長的法院程序。

比合約更有效的前期保護:

合約是最後防線,不是第一道防線。真正的保護在於:

  1. 業主信用評估:接案前了解對方背景,查詢公司設立狀況
  2. 預付款結構:收到款項才開始工作,不接受「做完再給」
  3. 里程碑顆粒度:拆得越細,每次曝險越小
  4. 原始碼作為籌碼:未付款前不交付完整原始碼

合約如果設計得當,最大的價值不是在打官司時搬出來,而是在簽約前的談判過程中,讓雙方把模糊的期待說清楚。很多糾紛在起草 SOW 的過程中就暴露出雙方認知差距,然後在簽約前就拆夥了。這比拿著合約打官司要好得多。

如果你正在評估雲端架構的合作夥伴選擇,合約設計同樣是評估廠商誠意的重要指標。

FAQ

軟體開發合約一定要找律師審閱嗎?

金額超過 50 萬元或合作期間超過 6 個月的專案,建議至少諮詢一次法律意見。費用通常在數千元以內。更重要的是,合約條款要雙方都讀懂,看不懂的條款比沒有條款更危險,因為雙方對它的解讀可能完全不同。

沒有書面合約、只有 LINE 截圖,法院會認嗎?

LINE 訊息在台灣法院實務中可以作為證據,但舉證複雜度高,你必須能完整呈現對話脈絡且截圖未遭竄改。書面合約的優勢不在於法院認不認,而在於它讓雙方在當下就必須把條件說清楚,減少事後各說各話的空間。

業主要求所有技術 know-how 歸屬自己,這合理嗎?

部分合理、部分不合理。業主的業務邏輯和商業流程應透過 NDA 和競業條款保護。但廠商的底層框架和通用模組屬於廠商的技術資產,要求著作權移轉不合理也難以執行。正確做法:客製程式碼買斷 + 通用框架授權使用 + NDA 保護業務機密。

AI 工具寫的程式碼,著作權屬於誰?

台灣著作權法目前不承認非人類著作人,AI 生成程式碼的著作權歸屬尚無明確判決。實務上,廠商應在合約中聲明 AI 生成程式碼不侵害第三方著作權,相關合規責任由廠商承擔。業主則應要求廠商揭露使用的 AI 工具清單。

客戶不付款、失去聯繫,廠商能怎麼辦?

首先確認合約是否有停工條款,暫停原始碼交付並發出書面催告(存證信函)。若催告無效,評估金額決定下一步:10 萬以下走小額民事,更大金額考慮仲裁。務實面說,前期的預付款比例和里程碑結構設計,比事後追訴重要得多。

結論

一份好的軟體開發合約,不是為了在打官司時搬出來,而是為了在簽約前讓雙方把模糊的期待說清楚。

8 個關鍵議題整理:

  1. 委任 vs 承攬:選對法律定性,任意終止權才不會成為地雷
  2. SOW 工作範圍:用量化語言定義,「排除事項」一定要寫
  3. 付款結構:里程碑付款 + 停工條款,廠商不要全部墊前
  4. IP 與 Know-how:NDA 保護業務機密,著作財產權保護程式碼,競業條款防止技術外流
  5. 驗收標準:量化驗收條件,設定逾期視同通過的期限
  6. CR 流程:不簽 CR 單不執行,是廠商最重要的自保原則
  7. 原始碼保管:業主要有 co-owner 權限,廠商要有停交籌碼
  8. 合約的邊界:合約不是護身符,真正的保護在於前期商業結構設計

合約談判本身就是一個過濾機制,願意認真討論每一條細節的對方,通常是認真想合作的夥伴。想進一步了解如何挑選合適的開發夥伴,可參考如何選擇軟體開發公司完整指南。有任何合約設計或外包規劃的問題,也歡迎直接聯繫我們。