1. 程式人生 > >軟件架構師如何工作

軟件架構師如何工作

.html div 軟件工程師 med www. 之間 新的 軟件 解決問題

  • 原文鏈接(轉載請註明出處):軟件架構師如何工作

前言

要想了解軟件架構師如何工作,首先要搞清楚這麽幾個問題:什麽是架構,怎樣理解架構,如何做好架構,什麽是軟件,什麽是軟件架構師,軟件架構師的工作是什麽,怎麽理清技術、業務和架構三者的關系。資深架構師王概凱在《架構漫談》系列專欄中一一給出了這些問題的答案。本文也是本人閱讀《架構漫談》時所做的筆記與思考。

什麽是架構

什麽是架構,為什麽會產生架構,作者由人類社會的演化,人類社會中分工的出現來引入問題的答案。把一個整體(完成人類生存的所有工作)切分成不同的部分(分工),由不同角色來完成這些分工,並通過建立不同部分相互溝通的機制,使得這些部分能夠有機的結合為一個整體,並完成這個整體所需要的所有活動,這就是架構。為什麽會產生構架,對於人類社會而言,由於人群的生產力提高,人類學會了越來越多的技術,但是不可能一個人都會這些新的技術,所有就產生了分工,一旦產生了分工,就把所有的事情切分成不同人去完成,從而以更高的效率來認識世界以及改造世界。這實際上形成了社會的架構,它是人類發展過程中,由懵懵懂懂的,被動的去認識這個世界,變成主動的去認識,並以更高的效率去改造這個世界的方法。而在現如今生活中而言,架構實際上就是指人們根據自己對世界的認識,為解決某個問題,主動地、有目的地去識別問題,並進行分解、合並,解決這個問題的實踐活動。

怎麽理解架構

怎樣理解架構呢,作者講到,認識概念是理解架構的基礎,那麽問題又來了,什麽是概念,怎麽理解概念。一般認為,概念屬於人認識這個世界並用來溝通的手段,這個問題的概念是抽象的,就像面向對象裏面的類與對象之間的關系。根據架構的定義,要做好架構所首先必須具備的能力,就是能夠正確的認識概念,能夠發現概念背後所代表的問題,進而才能夠認識目標領域所需要解決的問題,這樣才能夠為做好架構打好基礎。

如何做好架構

如何做好架構,作者從兩個方面來談。首先是識別問題,這裏需要的不僅僅是溝通能力,還有你對問題的定位問題,問題的主體是誰,這是識別問題的關鍵也是最難的地方,在這之中,我們要明白我們要解決的都是人的問題。在識別問題之後,我們要做的就是利益的切分

,所謂的利益的切分,就是平均好在解決這個問題的過程中所有人員的自身利益。要做到權利與義務的對等。這其實就是一個建模的過程,並且是一個樹狀的模型,是一個分層的模型,要做好架構,必須讓所建的模型樹是一顆平衡樹,讓整個系統的效率最大化,讓每個人的利益最大化。

什麽是軟件

什麽是軟件,這個問題來到了計算機,程序這些概念上來,軟件的主要目的,是把人類的生活模擬化,虛擬化,提供更低成本,高效率的新的生活。軟件主要依賴的是人類幾千年來的生活知識,軟件的出現也是為了解決人的問題,剛開始的時候,一個人就能寫出一個非常出色的軟件,但是隨著人們需求的日益增加,人類想通過軟件來解決的問題越來越多,導致軟件寫的越來越大,再加上一些新的語言,技術出現,一個人難以開發如此龐大的軟件,開發軟件需要幾個人,或者更多的人一起合作,並且在開發過程中各司其職。一開始是懵懵懂懂的去寫軟件,後來慢慢的就有意識的去切分,於是演變成了不同的軟件架構。而對軟件需求,問題進行識別切分,對系統進行設計的人就稱之為軟件架構師。

什麽是軟件架構師

但是做架構的並不都叫架構師,架構師是以解決問題為自己的工作,並且這個問題是別人的問題。架構師是要去平衡別人的利益,甚至會調整別人的利益的。這就要求架構師有非常強的影響力。從具體來說,軟件架構師要做的就是從做好架構出發,讓軟件工程師寫好代碼,架構師對需求以及問題做好了分析和切分之後,設計系統框架,然後程序員按照框架來編寫代碼,如果最終編寫出來的軟件不能用來解決用戶的需求或者問題,或者太復雜繁瑣,說明在整個系統架構是上出現了問題,而一個好的架構師則會充分做好軟件架構,包括代碼架構以及承載代碼運行的硬件部署架構,設計出來的框架會真正的解決各方的問題包括自己的。

怎麽理清技術、業務與架構的關系

一個好的軟件架構師,技術、業務和架構這三者之間的關系一定理解的十分清楚。作者講到,技術是為了解決業務的問題而產生的,沒有了業務,技術就沒有了存在的前提;有了更好的技術,效率更差的技術,就會慢慢的被淘汰,消失,一切都遵從人類的利益訴求--也就是業務。做為軟件架構師,其主要角色應該是解決業務問題,至於技術問題應該交給技術人員,自己專註於軟件本身的架構,當然在解決業務問題的過程中,軟件架構師還要準確識別要采用什麽技術來解決問題更加高效方便,這個能力也是軟件架構師所應該具備的。考慮的主要因素也是長期的成本和收益。

軟件架構師如何工作