• <ruby id="sbli6"><nav id="sbli6"></nav></ruby>
  • <wbr id="sbli6"></wbr>
      1. <font id="sbli6"></font>
          <ruby id="sbli6"><nav id="sbli6"></nav></ruby>
          <i id="sbli6"><form id="sbli6"></form></i>
        1. <source id="sbli6"></source>
            消息通知

            軟件開發(fā)人員提高架構(gòu)設(shè)計(jì)能力的方法

                    今日再談?wù)?a title="軟件開發(fā)" href="http://www.lishuai04.com/service">軟件開發(fā)人員如何提高架構(gòu)設(shè)計(jì)能力。對(duì)軟件開發(fā)而言,一般3年是一道坎,3年的編碼基本上可以逐步做出初步的設(shè)計(jì),3年的設(shè)計(jì)基本上可以具備架構(gòu)設(shè)計(jì)的能力。盡管架構(gòu)設(shè)計(jì)是高屋建瓴,從頂向下對(duì)問題區(qū)域進(jìn)行分解,最終解決,但你會(huì)看到,真正的能力都來自于你的日常編碼,日常功能模塊設(shè)計(jì)的大量實(shí)踐積累。

            當(dāng)然,大多數(shù)軟件開發(fā)人員即使編碼多年,也很難有設(shè)計(jì)能力,這也是設(shè)計(jì)思維意識(shí)的轉(zhuǎn)變。例如,在前面文章中提到的編程階段,你應(yīng)該有自動(dòng)化和復(fù)用思維,在設(shè)計(jì)階段,你應(yīng)該有分層、分解、抽象、聚合等思維能力。

            軟件開發(fā)中的設(shè)計(jì)能力是什么?

            就軟件開發(fā)和編碼而言,我在前面的文章中已經(jīng)提到過,簡(jiǎn)單來說就是數(shù)據(jù)結(jié)構(gòu)+算法,那么你是否對(duì)常用的數(shù)據(jù)結(jié)構(gòu)和算法都很清楚,有設(shè)計(jì)能力?

            很明顯,答案是否定的。

            最基本的設(shè)計(jì)能力是當(dāng)你面對(duì)問題領(lǐng)域時(shí),你知道用什么樣的數(shù)據(jù)結(jié)構(gòu)或算法來解決這個(gè)問題。這是最基本的設(shè)計(jì)能力。

            例如一條路徑搜索問題,別人告訴你用二叉樹模型和算法來解決,你去編碼實(shí)現(xiàn)了,那么就具備了編碼能力。但可以自己分析和建模問題,最終得出二叉樹算法效率最高,最終實(shí)現(xiàn),然后具備設(shè)計(jì)能力。

            因此,設(shè)計(jì)能力的難點(diǎn)在于,當(dāng)你面對(duì)問題時(shí),你可以快速分析,找到最合適的數(shù)據(jù)結(jié)構(gòu)和算法來解決。這就是設(shè)計(jì)能力。

            從設(shè)計(jì)能力到結(jié)構(gòu)設(shè)計(jì)能力有什么區(qū)別?

            簡(jiǎn)言之,架構(gòu)設(shè)計(jì)則站得更高,你面臨的是一個(gè)完整的業(yè)務(wù)系統(tǒng)建設(shè)。該業(yè)務(wù)系統(tǒng)本身包括底層技術(shù)平臺(tái)的構(gòu)建、開源組件的選擇、開發(fā)框架和分層設(shè)計(jì)等非功能設(shè)計(jì)內(nèi)容。與此同時(shí),它也包括了整個(gè)業(yè)務(wù)需求的到來,你如何進(jìn)行分而治之。

            將整體需求分解為幾個(gè)子系統(tǒng)或模塊,這些模塊本身聚集了哪些功能,暴露了哪些接口,模塊之間如何協(xié)作才能完成完整的業(yè)務(wù)。如何分解才能保證分解后的組件高度聚集、松耦合、高度自主,最終通過界面集成完成整個(gè)業(yè)務(wù)。

            分解后的內(nèi)容可以分配給不同的設(shè)計(jì)或開發(fā)人員進(jìn)行詳細(xì)的設(shè)計(jì)和開發(fā)。同時(shí),你可以拍拍胸部,按照我的要求設(shè)計(jì)模塊和界面。我可以確保每個(gè)模塊最終都可以組裝。

            因此,結(jié)構(gòu)層面涉及兩個(gè)關(guān)鍵方面。

            首先,你可以從零開始構(gòu)建一個(gè)完整的開發(fā)或技術(shù)框架,制定分層設(shè)計(jì),界面設(shè)計(jì)原則,規(guī)劃共同的技術(shù)平臺(tái)和組件,制定總體的開發(fā)標(biāo)準(zhǔn)和流程等等。

            第二,你還需要了解體業(yè)務(wù),了解完整的業(yè)務(wù),才能做好系統(tǒng)分解和分解后的整合。我認(rèn)為分解、整合和抽象總是架構(gòu)設(shè)計(jì)的關(guān)鍵能力。

            了解以上內(nèi)容后,回頭看看

            例如,您可能會(huì)認(rèn)為您熟悉Redis、Kafka、SpingBoot等各種開源軟件或框架,這并不意味著您具備設(shè)計(jì)能力。但如果你清楚地知道在面對(duì)某個(gè)場(chǎng)景時(shí),到底是應(yīng)該使用緩存,還是應(yīng)該使用消息中間件事件機(jī)制,那么你就具備了設(shè)計(jì)能力。

            例如,你可能認(rèn)為你已經(jīng)詳細(xì)學(xué)習(xí)了常見的設(shè)計(jì)模式,并不意味著你有設(shè)計(jì)能力你遇到某個(gè)場(chǎng)景時(shí),你知道應(yīng)該使用什么樣的設(shè)計(jì)模型來解決它。這叫做設(shè)計(jì)能力。

            因此,培養(yǎng)設(shè)計(jì)能力有兩種方法

            首先,你做了大量的編碼,在整個(gè)過程中走了彎路,你發(fā)現(xiàn)需要抽象或復(fù)用,才能提高你的開發(fā)效率,也讓軟件具有可擴(kuò)展性,你只要懂得這種反思和復(fù)盤,就一定能提高你的設(shè)計(jì)能力。假如您在開發(fā)過程中做了大量的粘貼、復(fù)制動(dòng)作,而且沒有觸發(fā)您的思考,那么顯然很難培養(yǎng)您的設(shè)計(jì)能力。

            設(shè)計(jì)能力往往始于編碼和編程思維

            第一,自動(dòng)去除重復(fù)的東西,第二,通過參數(shù)抽象把類似的東西變成可重復(fù)使用的方法或函數(shù),在抽象之后實(shí)現(xiàn)自動(dòng)化。第二,自動(dòng)化之后,你會(huì)發(fā)現(xiàn)如何更好地應(yīng)對(duì)變化,為了應(yīng)對(duì)變化,你做了更多的抽象或界面設(shè)計(jì),在這個(gè)過程中逐漸積累設(shè)計(jì)能力。這個(gè)步驟你會(huì)發(fā)現(xiàn)你的問題是某個(gè)設(shè)計(jì)模式來解決的。

            二是編碼積累到一定數(shù)量后,可以閱讀軟件架構(gòu)設(shè)計(jì)的書籍,首先形成設(shè)計(jì)的完整思路和方法論,也可以閱讀設(shè)計(jì)模式的書籍,對(duì)設(shè)計(jì)模式有一個(gè)完整的了解,可以比較分析日常編碼實(shí)踐的內(nèi)容和設(shè)計(jì)模式。這樣遇到類似的問題,可以少走自己探索的彎路。

            但以上也只解決了設(shè)計(jì)能力問題

            沒有解決結(jié)構(gòu)思維水平的問題,結(jié)構(gòu)思維的核心是全球能力,是高抽象和建模能力,明確業(yè)務(wù),理解技術(shù)的相互聯(lián)系能力。

            當(dāng)然,大多數(shù)架構(gòu)設(shè)計(jì)師更熱衷于開發(fā)框架、技術(shù)平臺(tái)、開源組件選擇等。,而忽略了如何從一個(gè)業(yè)務(wù)需求中提出來。通過系統(tǒng)分析,你可以知道整個(gè)業(yè)務(wù)系統(tǒng)應(yīng)該如何劃分模塊,如何設(shè)計(jì)界面,如何設(shè)計(jì)整個(gè)數(shù)據(jù)模型和數(shù)據(jù)庫來支持業(yè)務(wù)。同時(shí),你也可以思考你需要遵循什么樣的開發(fā)框架和模式,分層架構(gòu)思完成某個(gè)功能模塊的開發(fā)。

            這件事實(shí)際上難,大多數(shù)人都沒有這種能力。

            但為什么很多人的結(jié)構(gòu)設(shè)計(jì)還是做得很好,簡(jiǎn)單來說,整個(gè)信息化和因特網(wǎng)發(fā)展到今天,各種業(yè)務(wù)系統(tǒng)、電商平臺(tái)、因特網(wǎng)應(yīng)用你基本上都能找到類似的結(jié)構(gòu)參考和原型,你只需參考別人的做法就可以了。

            例如,如果你想成為一個(gè)電子商務(wù)平臺(tái),你應(yīng)該如何分解每個(gè)子系統(tǒng),或者你是否建立每個(gè)中間能力中心,這些都是標(biāo)準(zhǔn)的方法。你不需要?jiǎng)?chuàng)新。你只需要參考別人的實(shí)踐來做。

            但如果你面對(duì)一項(xiàng)全新的業(yè)務(wù),你就要去規(guī)劃和構(gòu)建整個(gè)業(yè)務(wù)系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),模塊劃分,我相信大多數(shù)結(jié)構(gòu)設(shè)計(jì)師都不能做到這一點(diǎn)。這一能力已不再是簡(jiǎn)單的你技術(shù)多牛,而是考察全局思維和系統(tǒng)觀,考察的是分解與集成、分類與抽象、問題分析與解決、模式匹配、這些能力,統(tǒng)籌我常說的思維能力。

            如果一個(gè)人真的有能力獨(dú)立分析和解決問題,有系統(tǒng)思維,你會(huì)發(fā)現(xiàn)他不僅做好了結(jié)構(gòu)設(shè)計(jì),還做了很多其他的事情。就是這個(gè)道理。

            因此,為了具備這方面的能力,您可以首先熟悉相關(guān)的業(yè)務(wù)領(lǐng)域知識(shí),或者查看與目標(biāo)相似的完整軟件架構(gòu)設(shè)計(jì)書籍,領(lǐng)域驅(qū)動(dòng)建模書籍,傳統(tǒng)的RUP統(tǒng)一軟件過程方法論等等。看一看完整的業(yè)務(wù)需求是如何通過流程分析、用例建模、對(duì)象建模、界面設(shè)計(jì)逐漸落地的。

            請(qǐng)注意,在這一過程中,像UML這樣的建模設(shè)計(jì)語言是很好的輔助,但核心這些建模工具或語言也只是幫助你抽象或形式化地表達(dá)你的內(nèi)容,整個(gè)建模的核心還是系統(tǒng)分析思路。這一點(diǎn)始于原始需求輸入,如何逐步形成一個(gè)完整的構(gòu)架設(shè)計(jì)思路,才是關(guān)鍵。

            国产精品午夜无码体验区_国产婷婷在线五月综合亚洲_99精品日本二区留学生_国产亚洲欧美日韩俺去了

          1. <ruby id="sbli6"><nav id="sbli6"></nav></ruby>
          2. <wbr id="sbli6"></wbr>
              1. <font id="sbli6"></font>
                  <ruby id="sbli6"><nav id="sbli6"></nav></ruby>
                  <i id="sbli6"><form id="sbli6"></form></i>
                1. <source id="sbli6"></source>
                    亚洲欧美综合国产精品一区 | 亚洲综合色在线观看一区二区 | 一区二区三区欧美国产 | 中文字幕狠狠久久 | 五月天亚洲婷婷综合 | 亚洲精品无在线码 |