91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

架構(gòu)師需了解的一些知識

jf_78858299 ? 來源:元閏子的邀請 ? 作者:元閏子 ? 2023-05-10 17:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

當(dāng)你點開一個招聘APP,篩選條件選擇互聯(lián)網(wǎng)技術(shù),在列出來的一大堆職位上,往往有那么幾個帶有“ 架構(gòu)師 ”三個字眼的高薪職位。當(dāng)你被它的高薪所吸引而點擊查看職位詳情時,又會被它的高要求所勸退。它們往往要求工作年限在5年以上,需要求職者有過3年以上的系統(tǒng)設(shè)計經(jīng)驗,精通各種架構(gòu)模式和系統(tǒng)框架,反觀自己卻一個條件都不滿足。

軟件架構(gòu)師就是這么一個讓人向往,但又讓人望洋興嘆的一個職位。就像建筑設(shè)計師總有成為總設(shè)計師的夢想,航天工作者總有成為總工程師的壯志,相信每一個軟件工程師都有過成為軟件架構(gòu)師的想法。引用維基百科里的定義, 軟件架構(gòu)師的職責(zé)就是在軟件系統(tǒng)研發(fā)中,負(fù)責(zé)依據(jù)需求來確定主要的技術(shù)選擇、設(shè)計系統(tǒng)的主體框架結(jié)構(gòu),并負(fù)責(zé)搭建實施 。然而,架構(gòu)師所需的技能遠(yuǎn)遠(yuǎn)不止于技術(shù)選擇和系統(tǒng)設(shè)計。本文主要介紹軟件架構(gòu)的定義,以及要成為一個軟件架構(gòu)師所需具備的一些技能,讓你對軟件架構(gòu)師這一職位有一個更深的了解。

文中大部分的觀點來自于《Fundamentals of Software Architecture》一書,想了解更多詳情推薦閱讀原書。

軟件架構(gòu)的定義

對于 軟件架構(gòu) (Software Architecture),我們通常將它看成是軟件系統(tǒng)的藍(lán)圖(blueprint),但是如果要給出一個精確的定義,往往很難。維基百科里對軟件架構(gòu)的定義為, 有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計 。但是,這種定義也是片面的,軟件架構(gòu)并不僅僅是系統(tǒng)的整體結(jié)構(gòu)和組件,光有這些還不足以指導(dǎo)設(shè)計出好的軟件系統(tǒng)。

Mark Richards和Neal Ford在書中,從四個維度上對軟件架構(gòu)進(jìn)行了描述,分別是 Structure 、 Architecture characteristicsArchitecture decisionsDesign principles 。

圖片

軟件架構(gòu)的描述

Structure

Structure描述的是軟件系統(tǒng)所使用的架構(gòu)風(fēng)格 ,比如最常見的分層架構(gòu)(layered architecture)、事件驅(qū)動架構(gòu)(event-driven architecture)、微核架構(gòu)(microkernel architecture)、微服務(wù)架構(gòu)(microservices architecture)等等。當(dāng)你去問架構(gòu)師一個軟件系統(tǒng)使用什么架構(gòu)時,如果他告訴你,“系統(tǒng)使用的是微服務(wù)架構(gòu)”,那么也他僅僅闡明了系統(tǒng)的架構(gòu)風(fēng)格而已。若想了解整個系統(tǒng)的軟件架構(gòu),對architecture characteristics、architecture decisions和design principles都要有深入的認(rèn)識。

圖片

Structure

Architecture characteristics

Architecture characteristics也就是我們常說的非功能需求 ,比如有可用性(Availability)、可擴(kuò)展性(Scalability)、可靠性(Reliability)等。Architecture characteristics往往容易被軟件新手所忽略,但是它對于軟件系統(tǒng)而言卻是非常的重要。如果說功能需求決定了一個軟件系統(tǒng)的下限,那么非功能需求則決定了它的上限。

圖片

Architecture characteristics

Architecture decisions

Architecture decisions描述了開發(fā)軟件系統(tǒng)時所必須遵循的規(guī)則 ,比如圖中例子,對于一個分層架構(gòu)風(fēng)格的系統(tǒng)而言,開發(fā)工程師需要遵循以下規(guī)則:只有業(yè)務(wù)層才能直接訪問服務(wù)層,表現(xiàn)層不能直接訪問服務(wù)層。Architecture decisions更多的只是一種約束,違反了這種約束可能并不會對系統(tǒng)的功能造成影響,但是卻是系統(tǒng)架構(gòu)腐化的源頭。

圖片

Architecture decisions

Design principles

Design principles指的是系統(tǒng)設(shè)計的原則 ,用于引導(dǎo)開發(fā)團(tuán)隊選擇更符合系統(tǒng)特點的技術(shù)方案。Design principles只會給出一個方向,而不是具體的實現(xiàn)方案。比如圖中例子給出的系統(tǒng)設(shè)計原則就是:微服務(wù)之間應(yīng)該盡可能通過異步通信來提升系統(tǒng)的性能。至于開發(fā)團(tuán)隊通過REST或者RPC的方式進(jìn)行異步通信實現(xiàn),設(shè)計原則并未進(jìn)行限制。

圖片

Design principles

成為架構(gòu)師所需的技能

就像軟件架構(gòu)不僅僅是系統(tǒng)的整體結(jié)構(gòu)和組件一樣,要成為一個軟件架構(gòu)師,只會技術(shù)選型是遠(yuǎn)遠(yuǎn)不夠的。一個合格的軟件架構(gòu)師應(yīng)該具備以下的幾種技能:

進(jìn)行架構(gòu)決策

An architect is expected to define the architecture decisions and design principles used to guide technology decisions within the team, the department, or across the enterprise.

這是一個架構(gòu)師所需具備的最基本的技能,需要為開發(fā)團(tuán)隊給出系統(tǒng)設(shè)計的原則和系統(tǒng)開發(fā)的約束。 架構(gòu)師在這里的角色更多的是一個引導(dǎo)者,而不是具體技術(shù)方案的制定者 。比如,開發(fā)團(tuán)隊要進(jìn)行前端框架的選型,作為架構(gòu)師應(yīng)該給出的建議是選擇Reactive風(fēng)格的前端框架(引導(dǎo)團(tuán)隊在React.js、Angular、Vue.js或者其他Reactive風(fēng)格的前端框架之間進(jìn)行選擇),而不是直接建議選擇React.js框架。前者屬于架構(gòu)決策,而后者則是技術(shù)決策。

持續(xù)對系統(tǒng)架構(gòu)進(jìn)行分析

An architect is expected to continually analyze the architecture and current technology environment and then recommend solutions for improvement.

就像一個軟件系統(tǒng)的生命周期并不止于開發(fā)階段的結(jié)束,軟件架構(gòu)也不是一錘子買賣。這就要求架構(gòu)師能夠持續(xù)對系統(tǒng)架構(gòu)進(jìn)行分析,并提出改進(jìn)的建議,使得系統(tǒng)在面對業(yè)務(wù)和技術(shù)的雙重變化時,仍然能夠保持架構(gòu)良好。

保持對技術(shù)和業(yè)界的發(fā)展趨勢的敏感

An architect is expected to keep current with the latest technology and industry trends

作為一個架構(gòu)師必須時刻保持對技術(shù)和業(yè)界發(fā)展趨勢的敏感。在敏捷開發(fā)的潮流下,軟件的特性會頻繁的發(fā)生變化,但是軟件的基礎(chǔ)架構(gòu)往往是很少改變的。架構(gòu)師如果不能把握當(dāng)前技術(shù)和業(yè)界發(fā)展的趨勢,從而導(dǎo)致設(shè)計出來的軟件架構(gòu)不能夠應(yīng)付未來幾年的業(yè)務(wù)和技術(shù)變化,這對于一個軟件系統(tǒng)而言將會是災(zāi)難性的。

確保團(tuán)隊按照既定的規(guī)則進(jìn)行開發(fā)

An architect is expected to ensure compliance with architecture decisions and design principles.

架構(gòu)師不僅僅需要制定設(shè)計原則和開發(fā)約束,還需要確保團(tuán)隊能夠一直按照這些規(guī)則進(jìn)行軟件開發(fā)。這就要求架構(gòu)師對開發(fā)人員提交的核心代碼進(jìn)行Code Review,否則系統(tǒng)的架構(gòu)很容易就腐化掉了。

擴(kuò)展知識的廣度

An architect is expected to have exposure to multiple and diverse technologies, frameworks, platforms, and environments.

對于一個架構(gòu)師而言,他并不需要精通每一種框架、平臺和語言,但至少要盡可能多的了解它們,這樣才能更好的支撐架構(gòu)決策。這就要求架構(gòu)師能夠持續(xù)的學(xué)習(xí)新的知識,不斷地跳出自己的舒適區(qū)。最好的情況就是精通2~3種語言和框架,并且熟悉業(yè)界各種常用的語言和框架,這樣的知識深度和廣度的結(jié)合才能設(shè)計出更好的軟件架構(gòu)。

擁有一定的領(lǐng)域知識

An architect is expected to have a certain level of business domain expertise.

所有的技術(shù)都是服務(wù)于既有的業(yè)務(wù),剝離了業(yè)務(wù)的軟件技術(shù)毫無價值 。架構(gòu)師無需像領(lǐng)域?qū)<乙粯泳ㄏ到y(tǒng)的各種業(yè)務(wù),但至少也要有一定的業(yè)務(wù)積累。軟件是用來解決問題的,不懂業(yè)務(wù)的架構(gòu)師來做軟件架構(gòu)設(shè)計,就相當(dāng)于還沒讀懂題目就開始解題,結(jié)果往往適得其反。比如一個需要低時延的業(yè)務(wù),交給一個不懂業(yè)務(wù)的架構(gòu)師來進(jìn)行系統(tǒng)設(shè)計,可能得出來的是一個高吞吐量的架構(gòu)。

人際交往的能力

An architect is expected to possess exceptional interpersonal skills, including teamwork, facilitation, and leadership.

對于大部分的開發(fā)工程師和架構(gòu)師而言,這可能是最難的一條了要求了。他們很擅長,也很樂意去解決技術(shù)上的問題,但是對于與人相關(guān)的問題則相當(dāng)?shù)牡钟|。但這對于一個合格架構(gòu)師來說所必須克服的一點,因為架構(gòu)師不僅僅需要制定技術(shù)規(guī)則,更重要的是領(lǐng)導(dǎo)團(tuán)隊按照既定規(guī)則進(jìn)行開發(fā),這不可避免地就涉及到領(lǐng)導(dǎo)力和人際交往的能力。

當(dāng)一個開發(fā)工程師決定在一次需求開發(fā)中采用單例模式,可能團(tuán)隊里的其他人并不會有太多的關(guān)注。但是當(dāng)一個架構(gòu)師決定采用微服務(wù)架構(gòu)來設(shè)計系統(tǒng)時,可能就會受到團(tuán)隊內(nèi)各類人員的挑戰(zhàn),比如版本經(jīng)理可能覺得微服務(wù)架構(gòu)太復(fù)雜,會不會影響交付的節(jié)奏;開發(fā)人員可能覺得分層架構(gòu)更好實現(xiàn)。這種情況下就要求架構(gòu)師能夠有很好的人際交往能力,說服各類人員,這樣項目才能更好的進(jìn)行下去。

總結(jié)

軟件架構(gòu)是一個很抽象的東西,目前對它的定義大部分都是一些很寬泛的描述?!禙undamentals of Software Architecture》從四個維度上對軟件架構(gòu)進(jìn)行了描述,讓軟件架構(gòu)有了一個更加清晰的視圖。在此基礎(chǔ)上,書中也提出了一個合格的軟件架構(gòu)師所需要具備的幾種技能??偟膩碚f,就是 想要設(shè)計出一個好的軟件架構(gòu)很難,要成為一個好的軟件架構(gòu)師更難

另外,書中還提出了軟件架構(gòu)的兩個準(zhǔn)則,很有道理,就是有點抽象。不過沒關(guān)系, 不要試圖理解它,要去感受它 。

1、Everything in software architecture is a trade-off.

2、Why is more important than how.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 系統(tǒng)設(shè)計
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    22819
  • 軟件架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    10642
  • 架構(gòu)師
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    4913
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    高通Oryon架構(gòu)之父宣布離職:曾手定義移動芯片黃金時代

    披露具體離職原因。作為高通自研 CPU 架構(gòu) Oryon 的靈魂人物,他的離職不僅標(biāo)志著高通個技術(shù)周期的完成,也引發(fā)了業(yè)界對后 Oryon 時代移動芯片格局的深度討論。 ? 作為擁有30余年行業(yè)經(jīng)驗的頂尖芯片架構(gòu)師,Gerar
    的頭像 發(fā)表于 02-05 13:44 ?2033次閱讀

    貼片電容精度J±5%的一些詳細(xì)知識

    貼片電容精度J±5%表示電容的實際值與標(biāo)稱值之間的偏差范圍在±5%以內(nèi) ,以下是關(guān)于貼片電容精度J±5%的一些詳細(xì)知識、精度等級含義 J±5% :字母“J”在貼片電容的標(biāo)識中通常表示標(biāo)稱精度
    的頭像 發(fā)表于 11-20 14:38 ?651次閱讀
    貼片電容精度J±5%的<b class='flag-5'>一些</b>詳細(xì)<b class='flag-5'>知識</b>

    【高速數(shù)字設(shè)計(基礎(chǔ)篇)】閱讀體驗之--書籍排版設(shè)計和目錄架構(gòu)及初步閱讀

    看看這本書的目錄架構(gòu)。因為本書如果寫得好,那么每個章節(jié)它想要講述的內(nèi)容,然后作為個章節(jié)的標(biāo)題,在目錄這里總結(jié)出來。當(dāng)然一些對章節(jié)總結(jié)不太好的書,可能在目錄這里就看不出來這本書想要講
    發(fā)表于 11-06 22:49

    對浮點指令擴(kuò)展中一些問題的解決與分享

    出現(xiàn)無法寫的情況。 結(jié)論 以上就是我們組在擴(kuò)展浮點指令中出現(xiàn)的一些問題,這些問題總體上歸結(jié)于對蜂鳥的代碼沒有整體性的把握,對內(nèi)容的掌握程度還不夠。在后續(xù)的工作中應(yīng)注意理清功能的整體架構(gòu)而對所有的相關(guān)部分進(jìn)行修改。
    發(fā)表于 10-24 11:47

    蜂鳥E203的浮點指令集F的一些實現(xiàn)細(xì)節(jié)

    周期。 總結(jié) 本文介紹的內(nèi)容是為了完成基礎(chǔ)功能:對蜂鳥E203 RISC-V內(nèi)核的微架構(gòu)實現(xiàn)進(jìn)行定優(yōu)化,在添加F拓展的過程中的一些記錄。
    發(fā)表于 10-24 08:57

    在TR組件優(yōu)化與存算架構(gòu)中構(gòu)建技術(shù)話語權(quán)

    電磁兼容性、熱管理在內(nèi)的12項專業(yè)能力評估。\"這種評估體系,正是行業(yè)對技術(shù)人才的分級認(rèn)證標(biāo)準(zhǔn)。 1.2 異構(gòu)計算架構(gòu)下的能力矩陣 存算架構(gòu)的普及正在重構(gòu)工程
    發(fā)表于 08-26 10:40

    射頻工程需要知道的一些常見轉(zhuǎn)接頭

    ,是由于轉(zhuǎn)接頭的損壞造成的,而且有些接頭的連接固定的方式不對,每次修好的儀器,過去后客戶又按照他們原來的方式去擰緊了。特別是在一些生產(chǎn)型的企業(yè),由于操作人員流動性比較
    的頭像 發(fā)表于 08-06 17:39 ?1224次閱讀
    射頻工程<b class='flag-5'>師</b>需要知道的<b class='flag-5'>一些</b>常見轉(zhuǎn)接頭

    ARM入門學(xué)習(xí)方法分享

    的官方文檔,了解ARM架構(gòu)的細(xì)節(jié),并參考一些在線教程和博客來學(xué)習(xí)其他開發(fā)者的經(jīng)驗和技巧。 總的來說,學(xué)習(xí)ARM需要定的耐心和實踐。通過掌握基本概念、學(xué)習(xí)匯編語言、使用開發(fā)工具、進(jìn)行
    發(fā)表于 07-23 10:21

    Tenstorrent 首席架構(gòu)師:未來 RISC-V 會是計算機(jī)的主流

    強(qiáng),適合定制化需求等。在 7 月 17 日第五屆(2025)RISC-V 中國峰會的主論壇上,Tenstorrent 首席架構(gòu)師 Wei-Han Lien 表示,Tenstorrent 投入了大量人力
    發(fā)表于 07-17 11:26 ?1485次閱讀

    如何釋放異構(gòu)計算的潛能?Imagination與Baya Systems的系統(tǒng)架構(gòu)實踐啟示

    報告作者:PallaviSharma,Imaginaiton產(chǎn)品管理總監(jiān)Dr.EricNorige,BayaSystems首席軟件架構(gòu)師關(guān)注Imagination公眾號,消息框發(fā)送【異構(gòu)計算】,即可
    的頭像 發(fā)表于 06-13 08:33 ?1143次閱讀
    如何釋放異構(gòu)計算的潛能?Imagination與Baya Systems的系統(tǒng)<b class='flag-5'>架構(gòu)</b>實踐啟示

    關(guān)于芯片設(shè)計的一些基本知識

    芯片的設(shè)計理念眾所周知,芯片擁有極為復(fù)雜的結(jié)構(gòu)。以英偉達(dá)的B200芯片為例,在巴掌大的面積上,塞入了2080億個晶體管。里面的布局,堪稱個異次元空間級的迷宮。英偉達(dá)B200芯片如此復(fù)雜的架構(gòu)
    的頭像 發(fā)表于 06-11 12:16 ?1211次閱讀
    關(guān)于芯片設(shè)計的<b class='flag-5'>一些</b>基本<b class='flag-5'>知識</b>

    Debian和Ubuntu哪個好一些?

    兼容性對比Debian和Ubuntu哪個好一些,并為您揭示如何通過RAKsmart服務(wù)器釋放Linux系統(tǒng)的最大潛能。
    的頭像 發(fā)表于 05-07 10:58 ?1146次閱讀

    如何添加一些網(wǎng)絡(luò)上的庫到mpy固件的說明或手冊教程?

    下有沒有關(guān)于如何添加一些網(wǎng)絡(luò)上的庫到mpy固件的說明或手冊教程? 問題2: 關(guān)于mpy的image庫在哪里能了解學(xué)習(xí)內(nèi)部代碼,只了解一些python,想知道怎么從c轉(zhuǎn)換成mpy能調(diào)用的
    發(fā)表于 04-29 08:16

    如何成為名合格的KaihongOS北向應(yīng)用開發(fā)工程

    如何成為名合格的北向應(yīng)用開發(fā)工程 在快速發(fā)展的軟件開發(fā)領(lǐng)域,北向應(yīng)用開發(fā)工程個專注于系統(tǒng)級應(yīng)用開發(fā)的高需求職位。 以下是成為
    發(fā)表于 04-23 06:46

    硬件系統(tǒng)工程寶典—完整版

    資料介紹: 這是本硬件工程的必備書,介紹了硬件工程所必須的一些知識,例如EMC、SI、PI等知識
    發(fā)表于 03-22 15:47