在軟件行業的職業划分中存在三個不同的等級,軟件工程師、軟件設計師、軟件架構師。軟件架構師處在最高層次。以前只是聽說過軟件架構師很牛,對於軟件架構師是做什么的,軟件架構究竟有什么用並沒有概念。時至今日,我沒有做架構的經驗,我只能在別人的經驗中去尋找自己對架構的理解,根據文字的記載來探索架構師的工作之旅。《架構漫談》是資深架構師王概凱之別的系列專欄,該專欄以作者的架構經驗為基礎,逐步討論什么是架構、怎樣做好架構、軟件架構如何落地、如何寫好程序等問題。對於我們這樣的初學架構的人有着很好的指導意義。
該專欄的第一篇談到了架構是什么。根據文章的描述,我對家都的理解是將需要解決的問題進行分析,切分為小的模塊,設計解決方法,執行解決方法,最后將結果合並的一個過程。軟件是由團隊開發的,開發過程就會涉及到人員的分工,軟件各個部分的分解,組合。那么軟件怎樣分割,人員怎么分配才能讓軟件開發周期最短,軟件成本最低,質量最好就是架構師要解決的問題。對軟件進行分割自然需要知道軟件需要解決什么問題,才可以根據問題進行分析。那么如何識別問題就是架構師要做的第一步。
作為軟件夠誠實或者架構師,我們大部分時間是要去解決別人的問題。“別人”是誰,是只得好好思考的,這才是問題的主體。明白了主體,這個主體就自然會帶來很多邊界約束,后續問題就能夠出來了。由此可見,找出問題的主體,是做架構的首要問題。我們要解決的問題,一定是人的問題。架構師要解決的,基本都是別人的問題,不是自己的問題。任何找上架構師的問題,絕對都不是真正的問題,因為如果是真正的問題,提問題過來的人肯定能夠自己解決了。對於架構師來說,發現問題永遠都比解決問題來的更加重要。
在識別出事誰的問題之后,會發現大部分情況下,問題都迎刃而解。很多時候問題的產生都是因為溝通的誤解,或者主觀上有很多不必要的利益訴求導致的。但是總是有部分確實是有問題的,需要做調整,那么就必須要所有動作,做相應的調整。這個調整就是架構的切分。切分調整都是對相關人的利益的調整。因為維護自己的利益,是每一個人的本性,是在骨子里面的。社會發展,每個人都希望能夠把自己的利益最大化。對弈一個人干所有事,分工可以讓大家都能夠得到更過,也產生了一個相互依賴的社會,相互之間誰都離不開誰。那么究竟該怎么切分呢?
每個人的時間呢是有限的,要在優先的時間內作出更多事情,就要把時間上連續的動作,切分成時間上可以並行的動作,在空間上橫向擴展。切分需要遵守以下原則:1. 必須在連續時間內發生的一個活動,不能切分。2. 切分出來的部分的負責人,對這個部分的權利和義務必須是對等的。3. 切分出來的部分,不應該超出一個自然人的負載。4. 切分是內部活動,內部無論怎么切,對整個系統的外部應該是透明的。切分的最終結果一定是一個樹狀,這也就是為什么會產生分層。層數越多溝通越多,效率越低,所以分層要越少越好。盡可能變成一顆平衡樹,才能讓整個系統的效率最大化。
軟件架構師軟件系統的核心,其影響久遠,並不隨着某個軟件系統生命周期的結束而終結。我們經常把軟件設計看作是為保證軟件系統能夠按照原來的設想正常運行而在各個環節上采取正確步驟,軟件架構所要考慮的問題更夾廣泛。架構設計師面臨的時諸多相互競爭的因素和需求。軟件架構對從事軟件開發的組織產生深遠影響的范式。在軟件開發中,構架和其開發組織相互影響,相互幫助,共同成長、發展。
對於剛剛接觸到軟件架構的大學生來說,是沒有機會實際組織項目的。所以我們只能通過書本來增長自己的見識與學習別人的經驗。書海浩如煙海,沒有那一本書籍可以囊括所有知識,所以養成讀書的好習慣尤為重要。