在我看來,軟體架構就是乙個軟體的骨架,然後用**去填充皮肉。很明顯我的認識相當膚淺,且停留在表面漢語理解意思。那麼到底怎樣去理解軟體架構和使用軟體架構?
(1)架構是基於人的群居(以人為本)和乙個為了提高生產力的目的(問題的本質)的一種分工處理和合併聯絡。我的理解是分工是模組,合併是組裝,聯絡是組裝方式。
(2)要做好架構,首先要對概念有正確的認識。也就是透過現象看本質上所要解決的問題。
(3)明白「是誰的問題,是什麼問題」。首先是確定概念的主語,因為主語不同,理解不同,就像使用者和技術員對待問題的想法是不一樣的。開始的定位決定了整個過程是否有意義,所以問題的本質的發現和確定比解決問題更重要,而識別問題往往要區分解決方案和問題本身,需要去追根溯源。
(4)為了更好的去達成目標,也就是說得到乙個更高的生產力,更高的個人利益,自然而然產生了個人揚長避短,團體依賴合作的乙個現象,也就是切分。切分是把系統內時間上連續的動作,調整成時間上的並行,空間上的橫向擴充套件的樹狀結果,從而更合理的利用時間和勞動力。層數越少,越利於溝通,效率越高。
(5)軟體是用來模擬人和社會的。然後提供更低的成本,更高效率的生活。軟體工程師的任務過重,拆分形成了軟體架構,
(6)關於軟體架構,涉及軟體本身的業務體系和虛擬的業務體系。根據(
3),首先應該確定問題的主體,問題有業務問題和計算機問題兩個方向。組織架構要考慮參與角色、資訊傳遞的損失,角色之間的協調等。軟體不斷拆分,形成硬體架構、**架構、開發體系(參與人員)架構。
虛擬化業務主要步驟:學習業務知識,認識到業務所涉及的核心利益訴求;對業務進行建模,並用**實現;學習業務所參與的stakeholder如何和業務打交道,完成每個人的工作;業務執行結果的持久化。
(7)架構師是能夠有足夠的自信去克服對時間壓力的恐懼,解決別人的問題,把完成別人工作當成自己最大的利益。架構師就是要去平衡別人的利益,以達到平衡別人各司其職,以達到整體最大化利益的leader。作為乙個架構師,就要有比別人更多的能力,首先,語言和技術就是基本的信手拈來的工具,其次是發現問題,解決問題,平衡能力的管理能力。
(8)**的責任有表達業務邏輯的**和讀使用者提供訪問並儲存業務邏輯執行結果的**。**的架構:軟體**的相關利益人service-user的需求,glue code-組合的呼叫,business-實現業務的核心模型,repository-資料的儲存。service拆分成service,glue code repository。除了business其他都不能有邏輯,也就是單一的順序呼叫,不能繼續拆分。
(9)業務是技術存在的前提,技術的複雜化發展,分拆成架構。
總結:學習軟體架構,主要在於解決本質上的問題,以獲得最大的利益;及如何合理的拆分形成架構。
讀漫談架構
六 軟體架構到底要解決什麼問題?要解決誰的問題?軟體實際上就是把現實生活模擬到計算機中,並且軟體是需要在計算機的硬體中執行起來的。需要解決的問題 一 業務問題 具體的現實生活狀態中,沒有軟體的時候,所解決的問題的主題是誰,解決的是什麼問題,是如何解決,如何運作的?二 計算機問題 1.如何模擬?2.硬...
讀架構漫談 有感
什麼是架構 緣起一直以來,在軟體行業,對於什麼是架構,都有很多的爭論,每個人都有自己的理解。甚至於很多架構師一說架構,就開始談論什麼應用架構 硬體架構 資料架構等等。我曾經也到處尋找過架構的定義,請教過很多人,結果發現,沒有大家都認可的定義。套用一句關於 big data 流行的笑話,放在架構上也適...
讀《架構漫談》有感
上上週,在王老師的 威逼利誘 下,歷時兩周,總算是讀完了這九篇關於架構的部落格。雖然其中很多內容我還不是很理解,但是還是學到了很多,對於軟體工程以及架構的概念也有了更深的理解。首先就說說什麼是架構,用 架構漫談 中的原話來說,架構,就是 1.根據要解決的問題,對目標系統的邊界進行界定。2.並對目標系...