日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

也許您對軟件設(shè)計存在一些疑惑,或者缺乏明確思路,那么本文將非常適合您。

1、設(shè)計很重要

我們可以看一下周邊的事物,那些好的東西,他們并不會天然存在,都是被設(shè)計出來的,因此設(shè)計就是創(chuàng)造和改善事物的重要過程。設(shè)計的重要之處在于,最初的設(shè)計往往決定最終的結(jié)果,甚至決定著事物的長期的發(fā)展。例如兩個品牌的手機之間,他們可以使用同一個代工廠,但他們差異在設(shè)計時就已經(jīng)決定了。

架構(gòu)設(shè)計也是如此,我見過很多的軟件系統(tǒng),他們經(jīng)過了很多年的演進,在沒有完全重構(gòu)的情況下,始終無法改變最初設(shè)計模樣,最初的設(shè)計決定了長期的發(fā)展。而對于業(yè)務(wù)深度耦合的系統(tǒng),重構(gòu)成本非常高,風(fēng)險也非常大,變化也更加不確定,所以要更加重視設(shè)計。

我們要尋求更好的技術(shù)方案,推動架構(gòu)的良性演進,每一步都是經(jīng)過深度思考的,而架構(gòu)設(shè)計方法就是幫助我們思考的框架。

通過做架構(gòu)設(shè)計,我們應(yīng)該提升軟件的質(zhì)量和效率,降低風(fēng)險和成本。

2、架構(gòu)設(shè)計的目的是什么?

是為了解決軟件系統(tǒng)復(fù)雜度帶來的問題(架構(gòu)的目標是用于管理復(fù)雜性、易變性和不確定性,以確保在長期的系統(tǒng)演化過程中,一部分架構(gòu)的變化不會對其它部分產(chǎn)生不必要的負面影響。這樣做可以確保業(yè)務(wù)和研發(fā)效率的敏捷,讓應(yīng)用的易變部分能夠頻繁地變化,對應(yīng)用的其它部分的影響盡可能地小。)

要解決復(fù)雜度問題,首先需要識別復(fù)雜度的來源,主要集中在以下三個方面:

業(yè)務(wù)復(fù)雜度:流程多,參與者多、狀態(tài)和變量多等;由業(yè)務(wù)本身決定,但業(yè)務(wù)復(fù)雜不代表軟件系統(tǒng)復(fù)雜,例如工作流引擎并不復(fù)雜,但他可以做非常復(fù)雜的業(yè)務(wù),在面對復(fù)雜業(yè)務(wù)時,我們常使用抽象思維,不要讓軟件邏輯與業(yè)務(wù)邏輯綁定在一起。

技術(shù)復(fù)雜度:高性能、高可用、高可擴展、安全,成本、規(guī)模等;這部分復(fù)雜度常常由技術(shù)本身決定,也應(yīng)該由技術(shù)本身解決,通常是采用更合理的框架和工具;避免這些技術(shù)特性穿透到應(yīng)用層。也可以有所取舍,在不同業(yè)務(wù)情況下,采用不同的實現(xiàn)程度。

設(shè)計復(fù)雜度:職責(zé)不是最小的完備的、概念不清晰的、層次不清的、業(yè)務(wù)邏輯與技術(shù)實現(xiàn)綁定的,組件過多以及關(guān)聯(lián)依賴復(fù)雜的;這部分是由設(shè)計不合理導(dǎo)致的,也是對業(yè)務(wù)系統(tǒng)影響最大的一部分,要通過良好的設(shè)計來解決。

3、架構(gòu)設(shè)計的主要內(nèi)容是什么?

找到系統(tǒng)中的元素并搞清楚他們之間關(guān)系(如果我們不知道系統(tǒng)是怎么運行的,那么他一定是很復(fù)雜的。對于龐大的軟件系統(tǒng),如何才可以被掌控?這就需要將大系統(tǒng)分解為很元素,每個元素需要足夠簡單,并且元素與元素之間的關(guān)系清晰)

軟件架構(gòu)是一種結(jié)構(gòu),結(jié)構(gòu)中包含了一些元素和元素之間的關(guān)系描述;

元素的種類:系統(tǒng)、子系統(tǒng)、模塊,組件、服務(wù)、類、接口...

關(guān)系的種類:層次關(guān)系、數(shù)據(jù)關(guān)系、調(diào)用關(guān)系、影響力關(guān)系...

"架構(gòu)表示對一個系統(tǒng)的成型起關(guān)鍵作用的設(shè)計決策,架構(gòu)定系統(tǒng)基本就成型了,這里的關(guān)鍵性可以由變化的成本來決定。"-- Grady Booch. 

"Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change." -- Grady Booch.

4、架構(gòu)設(shè)計有什么原則?

合適原則:“合適優(yōu)于業(yè)界領(lǐng)先”。 真正優(yōu)秀的架構(gòu)都是在企業(yè)當(dāng)前人力、條件、業(yè)務(wù)等各種約束下設(shè)計出來的,能夠合理地將資源整合在一起并發(fā)揮出最大功效,并且能夠快速落地。

簡單原則:“簡單優(yōu)于復(fù)雜”。 優(yōu)先使用直接的不復(fù)雜的方案解決問題;

演化原則:“演化優(yōu)于一步到位”。軟件需要根據(jù)業(yè)務(wù)的發(fā)展不斷地變化,架構(gòu)要不斷地在實際應(yīng)用過程中迭代,在某個階段必定有所取舍,但架構(gòu)的演化必須是低成本的,當(dāng)業(yè)務(wù)發(fā)生變化時能夠最高效的迭代;在這個過程中修復(fù)缺陷的設(shè)計,積累優(yōu)秀的設(shè)計;

5、架構(gòu)師的職責(zé)是什么?

業(yè)務(wù)分析:梳理對業(yè)務(wù)和技術(shù)的理解和判斷、形成業(yè)務(wù)領(lǐng)域知識、明確的業(yè)務(wù)目標和本質(zhì)的業(yè)務(wù)訴求;

系統(tǒng)建設(shè):降低系統(tǒng)復(fù)雜性、規(guī)劃系統(tǒng)遠期架構(gòu)、推動架構(gòu)的合理演化;

技術(shù)方案:選擇合適的技術(shù)、提供對業(yè)務(wù)的解決方案,把控全局,包括質(zhì)量、效率、成本、風(fēng)險;

關(guān)鍵問題:攻克難點,解決關(guān)鍵問題,指導(dǎo)研發(fā)落地;

知識沉淀:以體系化的表達方式,面向不同人員的視圖語言,持續(xù)完善知識系統(tǒng);

6、架構(gòu)設(shè)計過程如何?

過程:全局分析業(yè)務(wù) → 設(shè)計方案 → 概要設(shè)計 → 詳細設(shè)計 → 補充設(shè)計

視角:業(yè)務(wù)級 → 系統(tǒng)級 → 應(yīng)用級 → 模塊級 → 技術(shù)級 → 代碼級 → 實施級;

架構(gòu)師的協(xié)作鏈路較長,每一個過程都應(yīng)該留下資料,越下游的角色往往需要更全面的資料;架構(gòu)設(shè)計文檔應(yīng)該包含架構(gòu)師參與的所有環(huán)節(jié),以及這些環(huán)節(jié)產(chǎn)生的圖文說明;不僅僅是空洞的結(jié)果,應(yīng)該包含架構(gòu)師的思路和想法;

全局分析階段

這階段需要對業(yè)務(wù)需求進行全面分析,需要將名詞羅列出來,區(qū)分名詞是功能、流程、名詞、參與者的哪一種。再通過分析業(yè)務(wù)的本質(zhì)并找到其中的關(guān)鍵名詞,關(guān)鍵的名詞被稱之為領(lǐng)域,可以圍繞關(guān)鍵的領(lǐng)域構(gòu)建業(yè)務(wù)模型;

在這個過程中,需要統(tǒng)一語言、識別核心領(lǐng)域、按照相關(guān)性將功能歸屬到對應(yīng)的領(lǐng)域,對領(lǐng)域之間的關(guān)系做出必要的描述,輸出物是名詞與解釋、領(lǐng)域以及擁有的能力,業(yè)務(wù)架構(gòu)。

名詞的概念必須是清晰的,領(lǐng)域的職責(zé)必須是明確的,領(lǐng)域擁有的能力必須是相關(guān)的;

其中業(yè)務(wù)架構(gòu)可按照場景層、功能層、領(lǐng)域?qū)印⒁蕾噷觿澐郑缦聢D;

設(shè)計方案階段

在完成全局分析之后,我們應(yīng)該設(shè)計技術(shù)方案,盡可能提供多個備選方案的圖文說明。需要對備選方案做充分的優(yōu)劣分析,最終取舍一項最合適的方案,沒有被選擇的方案(或者取舍的部分)也要被說明;

我們需要找到各項約束條件(時間、人力、硬件等),評估在約束條件允許的情況下,哪個備選方案更合適,我們可能考慮如下方面:

方案對業(yè)務(wù)影響:主要判斷需求覆蓋程度、實現(xiàn)業(yè)務(wù)的短期目標、考慮業(yè)務(wù)的長期目標;

方案的技術(shù)需求:安全是否滿足、性能是否滿足、規(guī)模是否滿足、可維護性;

方案的可擴展性、方案的復(fù)雜程度、方案是否能夠演進、方案演進成本如何(高成本的 慎重考慮)、方案的影響力傳播如何(對上下游影響較大的 慎重考慮);

架構(gòu)設(shè)計階段 - 應(yīng)用架構(gòu)

用以說明當(dāng)前系統(tǒng)的元素(系統(tǒng)、子系統(tǒng)、模塊,組件)以及他們之間的關(guān)系(層次關(guān)系、依賴關(guān)系)

重點是將可復(fù)用的組件抽象后下沉,越往下層越是穩(wěn)定和通用,由上層承接不穩(wěn)定的業(yè)務(wù);

應(yīng)用架構(gòu)圖體現(xiàn)了層次關(guān)系,以及不完全體現(xiàn)了依賴關(guān)系,依賴只能是上層依賴下層,示例如下圖

架構(gòu)設(shè)計階段 - 部署架構(gòu)

用以說明支持應(yīng)用所需要的硬件能力、以及外部中間件、網(wǎng)絡(luò)、機房等情況;可參考下面兩張圖;

架構(gòu)設(shè)計階段 - 數(shù)據(jù)架構(gòu)

描述數(shù)據(jù)資產(chǎn)結(jié)構(gòu)、存儲、流轉(zhuǎn)、災(zāi)備的情況;最常用的是 ER 圖;

架構(gòu)設(shè)計階段 - 技術(shù)架構(gòu)

描述一些關(guān)鍵技術(shù)的說明,比如性能、安全、交互等;

描述技術(shù)選型和代碼框架的說明,比如 DDD 推薦的菱形對稱架構(gòu),文字和圖片描述都可以;

詳細設(shè)計階段

詳細設(shè)計是對質(zhì)量的把關(guān)、是對研發(fā)落地的指導(dǎo);

這部分涉及的內(nèi)容較多,比如服務(wù)、事件、接口、實體和值對象、時序圖、數(shù)據(jù)庫設(shè)計等等;

領(lǐng)域服務(wù)、領(lǐng)域事件

時序圖

實體關(guān)系圖

7、有什么方法能做的更好?

學(xué)習(xí)和使用領(lǐng)域驅(qū)動設(shè)計,使用正確的方法梳理和理解業(yè)務(wù),并落實到架構(gòu)過程;

盡早的介入,從業(yè)務(wù)領(lǐng)域建模和在產(chǎn)品方案階段介入、推動領(lǐng)域知識的傳遞、為后續(xù)做好鋪墊;

積累業(yè)務(wù)能力和洞察力,需要識別關(guān)鍵部分與輔助部分、預(yù)料可擴展部分與不變部分,識別水平能力與垂直擴展;

對于架構(gòu)設(shè)計產(chǎn)物,不要只畫圖,多輔以文字表述圖中內(nèi)容;

8、還需要掌握什么知識?

業(yè)務(wù)知識:業(yè)務(wù)架構(gòu)(是對當(dāng)前業(yè)務(wù)、領(lǐng)域、能力、流程、參與者、場景的介紹),現(xiàn)狀架構(gòu)(是對當(dāng)前架構(gòu)的描述,可以包含應(yīng)用架構(gòu)、技術(shù)架構(gòu)、部署架構(gòu)、數(shù)據(jù)架構(gòu)等),愿景架構(gòu)( 是架構(gòu)應(yīng)該演進到的完美情況),存在問題(現(xiàn)在面對的痛點、無用部分、缺陷部分)

高性能:多線程、隊列、緩存、分片、異步化,前置化、靜態(tài)化、預(yù)處理;

高可用:限流、降級、冗余、災(zāi)備、回滾、灰度;

擴展性:多態(tài)、防腐,依賴反轉(zhuǎn)(業(yè)務(wù)身份、擴展點、SPI),抽象化(比如流程引擎、規(guī)則引擎等)、事件驅(qū)動、設(shè)計模式;

本文部分圖片來源于互聯(lián)網(wǎng)

 

作者:京東科技 董健
來源:京東云開發(fā)者社區(qū)

分享到:
標簽:架構(gòu)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定