如何進行架構設計(一):制定戰略性指導方案

weixin_33935777發表於2018-07-25

1. 引言:程式碼未動,架構先行

  假如你是一名研發主管,有一個軟體產品的專案派到了你的團隊,你需要調動你的團隊開始攻克這個專案,當專案的啟動計劃書擺在你的面前的時候,立刻就有一大堆問題冒了出來,需要你去解決:

  • 如何滿足軟體產品的實際需要;
  • 如何合理的調配相關的開發人員;
  • 如何保證工期以及軟體質量;

以上這三個問題是你首要必須考慮解決的問題,假如這個專案是一個網際網路應用專案,那麼你還必須要考慮解決如下問題:

  • 如何應對產品的快速迭代;
  • 如何應對產品使用者的快速增長;
  • 如何應對產品規模的快速膨脹;

要想解決這些問題,其中一個必要的手段就是設計良好的軟體架構,當然設計良好的軟體架構不能保證我們解決所有這些問題,但可以幫助我們解決相當一部分問題,並且能夠輔助解決其他依靠軟體架構無法解決的問題。
  因此在進行開發之前,先進行架構設計是一個良好的開端,一上來就一頭扎進程式碼中,不但無法解決上述的問題,並且沒有架構約束的開發過程將會不受控制的產生新的問題並且積累下來,這些不斷累積的問題有一個很形象的稱謂:技術債,當然無論多麼優秀的架構都無法完全避免技術債的產生,但是良好的架構可以控制技術債的產生速度、規模以及範圍,同時可以降低我們償還技術債務(通常是通過重構的方式)的成本。
  那麼如何進行架構設計呢?接下來,讓我們進入正題,通過一步步制定架構設計的行動方案來講解架構設計的過程。

2. 制定戰略性指導方案

  如何進行架構設計呢?首先我們需要制定一個行動方案,在制定方案之前我們先來嘗試著回答一下這個問題:

如何進行架構設計:通過分析應用系統的上下文環境,選擇使用合適的架構模式或者設計新的架構模式一步一步勾劃出整個應用系統的架構模型。

這個答案給出了一個大體的思路,這個思路提供了制定方案的依據,通過這個思路,我們可以初步制定出一個包含三個步驟的行動方案:

行動方案初版:戰略性指導方案

  1. 分析應用系統的上下文環境;
  2. 根據具體的上下文環境選擇合適的架構模式或者設計新的架構模式;
  3. 使用選擇的架構模式逐步勾畫出應用系統的架構模型;

到了這裡,雖然已經有了一個方案,但是我們仍然會感到很困惑:這個方案到底如何執行,架構到底如何設計?這是因為這個方案只是一個初步的方案,具有一定的抽象性、概括性,不夠明確,不夠具體,因此還不具備可行性,只具有戰略性的指導作用,是一個戰略性指導方案。通常情況下,這種方案是老闆交給下屬的方案,個人認為,理想的上下級協作模式就是由上級提供戰略性指導方案給下級,下級明確化、具體化成戰術性可執行方案後交給上級,上級稽核後交由下級執行;當然,能夠遇到一個擅長提供戰略性指導方案的老闆,說明你的運氣還不錯,因為很多老闆在分派任務的時候只是會下達諸如:我要xxx、給我做個xxx之類的指令,他們期望你是那種聽到指令就能立刻明白怎麼做,然後馬上開始執行,很快就做出成果的超人員工。當然在這次學習之旅中,我們就是我們自己的老闆,同時,我們又是自己的下屬,我們給自己下達任務,然後自己執行;我們已經給自己提供了戰略性指導方案了,下面就讓我們將他明確化、具體化成為戰術性可執行方案。

相關文章