理解變化的影響

作者:道格·克勞福德(DougGrawford)

好的架構師能夠將複雜性降低到最低限度,他在解決方案中給出的抽象,應該能夠爲更高的層次提供堅實基礎,同時,還應該能足夠務實地應付未來的變化。

優秀的架構師能夠深刻理解變化帶來的影響,這種影響不僅限於彼此隔離的軟件模塊之間,而且包括人與人之間,以及系統與系統之間。

變化有多種不同的表現形式:

  • 功能需求的變化。
  • 可擴展性需求的演進。
  • 系統接口被修改。
  • 團隊人員流動。
  • ……

軟件項目中變化的廣度和複雜性,是無法提前看得清楚,企圖事前消解所有潛在衝突(bump)是徒勞無功的。但是,在確定沿途遭的衝突和項目成敗之間的關係中,架構師扮演着關鍵角色。

管理變化並非架構師的的職責,但架構師要確保變化是可控的。

舉例而言,高展分佈式的解決方案,橫跨了許多應用程序,依賴多種中間件(middleware)將各個部分膠合在一起。如果沒有對依賴集(set of dependencies)進行準確跟蹤或以某種可視化模型表現出來,業務流程的變化可能會造成重大的危害。如果變化會影響數據或破壞現有接口,其對下游的影響會尤爲巨大。另個,現存的長時間運行中的有狀態事務(long-running stateful transaction),在老版本流程下也必須要能成功完成。

這上例子可能有點極端,但高度集成的解決方案現在是主流。架構師需要在可用的集成標準、框架和模式中做出選擇,這個例子無疑可以說明這點。爲了能給客戶提供一貫的支持,理解這些外圍系統的變化將帶來的潛在影響,顯得至關重要。

幸運的是,有許多工具和技術可以用心鹹輕變化的影響:

  • 進行小規模的增量漸變。
  • 構建可重複運行的測試用例,並經常運行。
  • 讓測試用例更易編寫。
  • 跟蹤好依賴關係。
  • 系統性(systematically)的行動,根據反饋信息作出進一步反應。
  • 自動化重複的任務。

架構師必須評估變化對項目範圍、時間和預算各個方面產生的影響,並準備好花較多時間在那些受影響最大的區域,即“沿途的衝突(a bump in the road)”上。通過衡量風險(measuring risk),可以知道該把寶貴時間花在哪裏。

降低複雜性很重要,但降低複雜性並不等於簡化處理。務必清楚認識解決方案中變化的類型和將來帶來的影響,對中長期而言,這樣做帶來的回報是無法估量的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章