【企業軟體委外】外包程式碼的結構驗收問題

問題陳述—外包程式碼的結構驗收問題

  • 客戶(發包單位)可以透過自動化的功能測試碼來驗證系統功能的正確性,這是屬於系統外觀的驗收範疇。但是,客戶又如何來檢驗外包廠商(承包單位)有依據承包契約(Contract)內的設計藍圖來施工(Coding),確保系統內部的結構(Structure)設計,而不是以沙拉油桶混充建材,偷工減料?

從客戶端的角度來思考對策與解決方案

  • 系統內部結構設計的檢驗重點是什麼?
  • 能利用利器將程式碼反轉(Reverse)成為視覺化的模型,最好就是標準的 UML 圖,而得以方便與快速來作結構的檢驗。
  • 這個利器若能同步反應設計圖與程式碼的變更,那就更理想不過!
  • 因為設計圖與程式碼能透過該利器保持一致性,兩者成為系統的一體兩面:程式碼反應實做;設計圖反應視覺化的模型設計,更因之而能成為標準、實在、確實、非作假的設計產出(Artifacts)文件(Documents)了。

系統結構設計的檢驗核心—相依性分析

  • 兩個元素之間的關係,稱為相依性(Dependency)。
  • A 元件(Component)呼叫(call) B 元件所提供的服務(service),兩者之間構成了相依的關係 — A 相依於 B。
  • A 元件相依於 B 元件,代表當 B 元件變動時,會造成 A 元件的連帶變動。但反之則否(A 元件變動,不會影響到 B 元件)。

範例-A 元件相依於 B 元件
圖、範例-A 元件相依於 B 元件

相依性分析的目的與元素的單位

  • 讓元素之間相依性降低(低耦合性,Low Coupling),變動的影響不大。
  • 相依性分析的元素(或可稱之為元件,Component)單位
    • 類別(Class)
    • 套件(Package)
    • 模組(Module)
    • 子系統(Sub-System)
    • 單一系統
    • 系統與其它系統(如透過 Web Service 介面連接)

範例:巨觀的相依性分析 — 2-tier 的結構分析

  • Form AP 直接連接資料庫撈資料處理—Form AP 相依於資料庫。
  • 當資料庫的 DB Schema 變動時,會連動影響所有連接該資料庫的 Form AP。
  • 因沒有明確定義企業邏輯(Business Logic)的所在處,若位於 Form AP 處,則以 scripts 處理之;若位於資料庫內,則以 stored-procedure 處理之。這也意味了企業邏輯相依於 Form 或 資料庫的實體機制。

兩層式(2-tier)的結構
圖、兩層式(2-tier)的結構

範例:巨觀的相依性分析 — 3-tier 的結構分析

  • 企業系統的核心 — Problem Domain Model。
  • 由於 Problem Domain Model 沒有相依於任何元素,所以,包括 UI Form、資料庫系統等均可以各自抽換而不會連動影響。

三層式(3-tier)的結構
圖、三層式(3-tier)的結構

範例:微觀的相依性分析—分析類別的結構設計分析

分析類別的結構設計分析
(縮略圖,點擊圖片鏈接看原圖)