Hacker News

驗證規範驅動開發 (VSDD)

評論

1 min read Via gist.github.com

Mewayz Team

Editorial Team

Hacker News
以下是有關驗證規範驅動開發 (VSDD) 的原始文章:

為什麼大多數軟體專案仍然失敗 - 以及改變這種情況的方法

2024 年,Standish Group 的 CHAOS 報告顯示,只有 31% 的軟體專案在預算範圍內準時完成。剩下的 69% 要么受到挑戰,要么徹底失敗。根本原因不是糟糕的開發商或資金不足——而是含糊不清。團隊建立了沒有人要求的功能,發布了與業務規則相矛盾的程式碼,並花了幾個月的時間重構基於假設而不是經過驗證的需求構建的系統。驗證規範驅動開發 (VSDD) 是一種新興方法,旨在完全消除這種歧義,確保每一行程式碼在投入生產之前都可以追溯到經過正式驗證的規範。

與傳統的開發方法不同,傳統的開發方法中,規範以鬆散的書面文件形式存在,幾週內就會偏離現實,VSDD 將規範視為可執行、可測試和持續驗證的工件。結果是軟體完全符合利害關係人的預期——不多也不少。對於運行具有數十個互連模組的複雜營運平台的企業來說,其影響是革命性的。

經過驗證的規範驅動開發實際上意味著什麼

VSDD 的核心是一種建立在三個支柱之上的嚴格的工程方法:正式規範、自動驗證和持續可追溯性。開發人員首先編寫機器可讀的規範,這些規範不僅定義軟體應該做什麼,還定義在執行的每個階段都必須成立的精確約束、邊緣情況和不變量。這些不是模糊的使用者故事或明確的要求——它們是系統與其利害關係人之間嚴格、明確的合約。

「經過驗證」的元件是將 VSDD 與舊的規範驅動方法區分開來的。 VSDD 不依賴手動程式碼審查或事後測試來確認合規性,而是使用自動驗證工具(包括基於屬性的測試、合約檢查器以及在某些情況下的正式證明助手)來持續驗證實作是否符合規範。如果程式碼偏離規範,建置就會失敗。如果規範發生變化,對現有程式碼的影響會立即顯現出來。

這創建了從業者所說的「單一事實來源循環」——規範通知實現,實現根據規範進行驗證,對任何一個的更改都會觸發重新驗證。回饋週期是幾分鐘,而不是幾個月。

VSDD 工作流程的五個階段

採用 VSDD 不需要完全放棄現有流程。大多數團隊將其實現為敏捷或迭代工作流程之上的結構化覆蓋。此方法分為五個不同的階段,建立從業務意圖到部署程式碼的不間斷鏈條。

  1. 規範編寫:業務分析師和領域專家與開發人員合作,使用結構化格式(用於 API 的 OpenAPI、用於工作流程的狀態機圖或用於業務邏輯的領域特定語言 (DSL))編寫正式規範。每個規範都包含前置條件、後置條件和不變量。
  2. 規格審查和模擬:在編寫任何程式碼之前,都會根據實際場景模擬規格。利害關係人可以「運行」規範來查看系統的行為方式,在誤解變成代價高昂的錯誤之前發現它們。
  3. 內聯驗證的實作:開發人員編寫帶有規範參考註解的程式碼。自動化工具會不斷檢查每個函數、端點和資料轉換是否滿足其對應的規範限制。
  4. 整合驗證:在組裝模組時,跨規範驗證可確保組件之間的合約得到遵守。開票模組的輸出格式必須與會計模組的規範期望的輸入格式相符。
  5. 持續規範監控:部署後,執行時間監控器可驗證生產行為是否繼續符合規範,即時擷取環境偏差、資料異常和第三方整合故障。

這個五階段循環確保規範永遠不會被視為「寫一次,永遠忘記」文件。它們是活生生的、會呼吸的工件,與程式碼庫一起發展,並且在每一步中都保持可驗證的正確性。

為什麼只靠傳統測驗是不夠的

對 VSDD 的常見反對意見是:「我們已經編寫了測試 - 這還不夠嗎?」誠實的答案是否定的,數據也支持這一點。微軟經驗軟體工程小組的研究發現,即使程式碼覆蓋率超過 80% 的專案也會經常帶來因規範差距而產生的缺陷,即測試通過是因為測試了錯誤的東西,而不是因為軟體是正確的。

傳統的單元和整合測試驗證實作行為,但它們只能檢查開發人員預期的場景。如果開發人員誤解了業務規則,他們就會錯誤地編寫程式碼和測試,但兩者都會通過。 VSDD 透過建立獨立的驗證層打破了這個迴圈。該規範是由領域專家編寫的,而不是由編寫實現的開發人員編寫的,從而創建了一種自然的檢查和平衡,可以及早發現不一致的情況。

<區塊引用>

任何系統中最危險的錯誤都不是導致系統崩潰的錯誤,而是在套件中的每個測試都通過綠色測試時默默地產生錯誤結果的錯誤。 經過驗證的規範驅動開發正是為了捕捉此類故障,確保根據業務意圖而不是開發人員的假設來衡量正確性。

考慮一個必須處理 14 個不同司法管轄區的加班費率的工資計算引擎。開發人員可能會編寫涵蓋他們最熟悉的五個管轄區的測試,而忽略其他九個管轄區的邊緣情況。在 VSDD 下,規範將明確列舉所有 14 個規則集,並且自動驗證將在代碼到達 QA 之前標記任何沒有相應實現的管轄區。

現實世界的影響:從航空航太到商業平台

VSDD 的知識根源在於安全關鍵產業。美國太空總署噴射推進實驗室幾十年來一直在使用正式規範和驗證——好奇號火星車的自主導航系統是根據正式驗證的規範構建的,這些規範保證了車輛永遠不會命令自己進入不可恢復的狀態。空中巴士公司在其電傳飛行控制系統中使用了類似的技術,其中規格差距不僅僅是一個錯誤,而且是一個潛在的災難。

但該方法正在迅速傳播到航空航天和國防領域之外。金融科技公司已採用 VSDD 原則來驗證交易處理引擎同時符合多個司法管轄區的監管要求。醫療保健平台使用規範驗證來確保臨床決策支援工具永遠不會建議違反 FDA 指南的藥物交互作用。越來越多的具有數十個互連工具的模組化業務平台正在轉向 VSDD 來管理跨模組互動的複雜性。

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

在 Mewayz,207 個模組(涵蓋 CRM、發票、薪資、人力資源、車隊管理、分析等)必須為超過 138,000 名用戶無縫協作,VSDD 的原則直接影響平台的工程實踐。當開立發票模組的稅務計算邏輯的更新可能級聯到薪資、會計和分析時,經過驗證的規格可確保在變更發布之前考慮並驗證每個下游相依性。這就是平台如何擴展到數百個模組,而不會出現通常困擾複雜業務系統的整合故障。

在不沸騰的情況下實施 VSDD

關於 VSDD 的最大誤解之一是,它需要進行完整的流程檢修和數月的設定才能交付價值。在實踐中,最成功的採用都是從小規模開始,然後逐漸擴大。試圖在第一天正式指定整個系統的團隊不可避免地會精疲力盡。從風險最高的模組開始並向外擴展的團隊會看到複合回報。

以下是適用於任何規模團隊的務實採用策略:

  • 從整合邊界開始。 模組或服務交換資料的點是規範差距造成最大傷害的地方。首先正式指定您的 API 合約 - 請求/回應架構、錯誤代碼、速率限制和驗證要求。
  • 為您的業務邏輯新增不變量。 確定必須永遠為真的規則 - 帳戶餘額絕不能為負數、預約時間不能重疊、員工記錄必須具有有效的稅號。將這些編碼為可驗證的斷言。
  • 在 CI/CD 中自動進行驗證。 將規範驗證整合到持續整合管道中,以便在合併之前根據規範檢查每個拉取請求。這會建立一個快速回饋循環,而無需開發人員更改其日常工作流程。
  • 使規範具有協作性。 使用工具讓非技術利害關係人可以閱讀規範並為規範做出貢獻。當財務長能夠驗證發票規範是否符合最新的稅務法規時,您就已經縮小了業務意圖和技術實施之間的差距。

關鍵是將 VSDD 視為梯度,而不是二進位。即使是部分採用(僅驗證最關鍵的業務規則)也可以消除整個類別的生產缺陷。一家僅驗證其計費相關規範的 SaaS 公司報告稱,在採用後的第一季內,與計費相關的支援請求減少了 73%。

人工智慧在下一代規範驗證中的作用

VSDD 和人工智慧的交叉點是該方法的未來所在。人工智慧驅動的工具開始自動化 VSDD 工作流程中最耗費人力的部分 - 從現有程式碼庫產生初始規範,透過分析生產錯誤日誌來識別規範差距,甚至根據觀察到的使用者行為模式提出規範改進建議。

大型語言模型現在可以將自然語言業務需求轉換為結構化的、機器可驗證的規範,並且具有極高的準確性,從而減少了規範編寫瓶頸,而這種瓶頸在歷史上使正式方法對於快速移動的團隊來說不切實際。當產品經理寫道「企業計劃的客戶應獲得超過 10,000 美元的訂單 15% 的批量折扣」時,人工智慧工具可以產生相應的正式規範、測試案例和驗證斷言 - 在幾秒鐘而不是幾小時內將句子變成經過驗證的合約。

像 Mewayz 這樣的平台正在其營運模組中利用人工智慧自動化,為日常業務流程帶來這種精確度。當企業配置自訂工作流程(將 CRM 資料連接到發票規則到薪資計算)時,人工智慧輔助驗證可以分析整個工作流程鏈,並在邏輯不一致在實際交易中表現為錯誤之前將其標記出來。這是 VSDD 原則的大規模實際應用:確保複雜的、使用者配置的業務邏輯即使在不斷發展時也保持正確。

規範第一的心態:值得進行的文化轉變

也許 VSDD 最不受重視的方面不是技術,而是文化。採用規範優先思維的團隊報告的改進遠遠超出了減少缺陷的範圍。由於規範提供了一種共享的、明確的語言,因此技術和非技術團隊成員之間的溝通得到了改善。入職時間減少,因為新開發人員可以閱讀規格來了解系統行為,而無需對程式碼庫進行逆向工程。架構決策變得更加深思熟慮,因為更改規範(並透過驗證傳播變更)的成本迫使團隊在增加複雜性之前仔細考慮。

軟體產業花了數十年時間來優化交付速度。 VSDD 不會減慢交付速度 — 它將原本用於調試、修補和向客戶道歉的時間重新定向到預先明確的情況,從而防止這些問題發生。對於跨數十個模組運行關鍵任務操作並為數千用戶提供服務的企業來說,這種權衡不僅值得,而且至關重要。問題不在於您的組織是否有能力採用經過驗證的規範驅動開發。關鍵在於你是否能承受不這麼做的後果。

常見問題

什麼是驗證規範驅動開發 (VSDD)?

VSDD 是一種方法,它要求在編寫任何程式碼之前在經過驗證的規範中捕獲每個功能、業務規則和架構決策,從而消除軟體專案中的歧義。與假設驅動開發的傳統方法不同,VSDD 透過結構化、可測試的規範確保利害關係人和開發人員之間的一致性,從而大大降低了產業報告中確定的 69% 的專案失敗率。

為什麼儘管團隊技術精湛,大多數軟體專案還是失敗了?

主要原因不是人才或預算,而是模糊性。團隊建立沒人要求的功能,發布與業務規則相矛盾的程式碼,並花費數月時間重構基於未經驗證的假設的系統。 VSDD 透過使規範成為單一事實來源來解決這個問題,確保每個利害關係人在開發開始之前就正在建構的內容達成一致,從而防止整個專案生命週期中代價高昂的不一致和範圍漂移。

VSDD 與敏捷或瀑布方法相比如何?

雖然敏捷強調迭代交付,而瀑布遵循嚴格的順序階段,但兩者都經常存在規範差距。 VSDD 透過新增驗證層來補充這些框架 - 在進入任何開發週期之前根據業務需求驗證規格。這意味著無論您是在衝刺還是階段中工作,每項任務都可以追溯到利益相關者明確批准的已確認的、明確的要求。

VSDD 可以應用在使用 Mewayz 等平台的團隊上嗎?

絕對是的。 Mewayz(一款起價 19 美元/月、包含 207 個模組的商業作業系統)等平台已經實現了營運、自動化和專案管理的集中化。在此類工具中應用 VSDD 原則可確保每個工作流程、整合和自動化流程均根據經過驗證的規範構建,從而減少返工並幫助團隊在整個業務堆疊中更快地交付可靠的系統。