關於架構的小整理,僅限於個人

2021-08-27 10:50:16 字數 1746 閱讀 4294

1.關於架構過程:

a.充分分析需求,確定架構驅動力。在此階段,要根據需求找出關鍵功能,關鍵質量,關鍵質量間的影響,系統約束(功能和非功能,例如團隊,系統背景,效能,技術方向)

b.根據關鍵功能進行初步設計,然後根據初步設計進行高層分割,最後針對非功能需求(如業務需求,行業背景和約束)做出決策。在此階段,根據以上觀點,做出概念模型。

c.最後對系統整體結構進行細化。

其實架構很多時候最難得是在效能和可擴充套件性之間尋求平衡點,架構要多視角分析。

2.關於遵循的原則

a.依賴高層抽象,不要依賴底層的實現。

b.沒必要直接通訊的類,讓他們通過中間類通訊。就是建立乙個類,a和b類都和c類通訊,來訪問對方。

c.子類必須可以替換任何父類出現的地方,其實就是黎克特制代換

d.基於查詢和命令的實現。如果乙個方法a,訪問a會得到乙個結果,那麼方法a就是乙個查詢方法。如果方法b,更改了某些類的狀態,則b就是乙個命令方法。盡量將a和b的實現分離,既如果a是乙個查詢方法,就不應該改變其它類的狀態。

e.分包的時候,將可能相互影響的類放到乙個包裡,不要讓影響擴充套件到其它的包中。

f.介面職責單一,乙個介面最好只負責一件事。如果讓乙個介面負責太多的事情,要增加功能的時候太難了,因為子類必須實現介面所有的行為。所以提倡,先組合,在抽象。先確定乙個需求根據什麼組成,分出職責,然後抽象,形成介面,既標準和約束,然後就開整。

以上201211142310整理,不全面,睡覺了,以後想到了,繼續補充。

我想說,大家開發專案一定會混亂。因為大多數的開發都是經驗談,很少有方**。混亂的根源在於需求不明確,因為很少有人將需求分層次,一般對開發級重視度不夠。也很少有人對模組間的關係進行分析。所以,對模組間的關係也很少重視。但是,協作決定介面,沒有協作,介面將來也不能滿足應該用。開發經驗很重要,但是也要有方法的指導。

架構是業務到系統的橋梁。將業務轉換為我們要開發的系統。

1.需求階段。這個階段主目標是定關鍵功能,質量,約束。為概念架構做準備。

2.概念架構。這個階段主要目標是回答客戶的關心的業務(也可說是價值)如何實現,關心的問題如何解決。這裡要注意:

1)用例圖不能徹底覆蓋系統,因為用例圖並不能反應系統的非功能需求和約束。

2)不要過早概念架構不要進行介面+模組的設計。因為概念架構之前,並不能覆蓋系統關鍵質量約束和非功能需求,也就不能明確模組間的關係,所以這階段進行模組+介面的設計一定是不合理的。

3)概念架構只關心系統的關鍵部分。這樣粗的看待系統,才能覆蓋系統

4)圍繞關進需求,質量,約束進行設計。

5)明確影響系統幾個最大因素。針對關鍵問題進行設計。

6)概念架構要抓住客戶關心的價值和擔心的問題。

7)概念架構貴在有針對性,概念架構對關鍵部分,給出高層次的解決方案。主在確立架構大方向,針對關鍵要素進行設計和確定互動機制。(大體分層)

8)概念架構確定高層分割方案和其他關鍵決策是否合理。

概念架構的核心是發現職責,然後確定高層分割,考慮非功能需求。首先根據關鍵需求(質量,功能,約束,風險)發現職責(重點是發現職責,因為這是以後高層分割的基礎),劃分職責後確定高層分割。最後考慮非功能需求。這樣大體確定系統的結構和互動機制。由於都是圍繞關鍵功能和主要問題進行設計,所以一般情況下可以回答可會關心的功能和擔心的問題如何解決。

3.細化架構。概念架構並不足以對並行開發做出指導和開發的規範。所以,要進行細化架構設計。這個時候要考慮介面+模組的設計。

累了,不寫了,細化架構和之後的一些內容留到以後在寫吧。今天的比較細,本人是粗人,並不喜歡太細的東西。最後寫的內容一定要用一段話總結出來。就到這,剩下的以後寫。

關於架構的小整理,僅限於個人

1.關於架構過程 a.充分分析需求,確定架構驅動力。在此階段,要根據需求找出關鍵功能,關鍵質量,關鍵質量間的影響,系統約束 功能和非功能,例如團隊,系統背景,效能,技術方向 b.根據關鍵功能進行初步設計,然後根據初步設計進行高層分割,最後針對非功能需求 如業務需求,行業背景和約束 做出決策。在此階段...

早期教育的內容絕不僅限於智育

近一二十年來科學家對大腦的研究表明,嬰幼兒期腦的發育不僅快,而且已經達到一定的成熟程度,為兒童的早期教育提供了可能,這時如果及時給予早期教育,就會進一步促進腦的發育。在新生兒期,將多種色彩鮮豔的玩具和物體懸掛於孩子面前,給予色彩的刺激。國外一心理學家對300名嬰兒進行長達5年的研究,證明新生兒就能識...

前端 面試題(答案僅限於自己的理解,非正確答案)

告訴瀏覽器以何種規範 html xhtml 進行解析頁面 雖然div css能達到table一樣的效果。但是改版的時候div css改的更麻煩,而table只需要改css就行了。table寫的html結構更加簡潔明瞭。頁面渲染速度也能更快。減少主網域名稱的連線數,增快頁面響應速度 cdn內容分發網路...