前言
2020年參加了軟考高級系統架構師的考試,那是我在考場上第一次寫論文,2小時2500字+,最后得分56。
拿到成績后寫了一篇關於七天復習考過系統架構師的文章,作為一個自學者,深知網上系統架構師的資料搜集不易,所以將自己收集的系統架構師資料和自己做的筆記分享了出來,希望能給考友們提供一點幫助。
后來在軟考群里,認識了很多朋友,也希望我整理軟考各科資料。在21年元旦前一天,花費一下午搜集整理了所有高級、大部分中級的視頻、真題資料。公眾號后台回復 軟考資料 即可獲取,架構師論文范文也在其中。
前幾天,上半年成績出來了,很多朋友也開始准備下半年系統架構師的考試了,然后有人就艾特我說系統架構師論文該怎么寫,於是在某天下午決定寫一篇文章,來淺抒己見。
歷年論文命題分析
系統架構師論文命題四選一,這里先看一下最近五年系統架構師論文真題。
2020年
論企業集成架構設計及應用、論軟件測試中缺陷管理及其應用、論雲原生架構及其應用、論數據分片技術及其應用
2019年
論軟件設計方法及其應用、論軟件評估系統架構評估及其應用、論數據湖技術及其應用、論負載均衡技術在web系統中的應用
2018年
論軟件開發過程RUP及其應用、論軟件體系結構的演化、論面向服務架構設計及其應用、論NoSQL數據庫技術及其應用
2017年
論軟件架構風格、論軟件系統建模方法及其應用、論無服務器架構及其應用、論軟件質量保證及其應用。
2016年
論軟件系統架構評估、論軟件設計模式及其應用、論數據訪問層設計技術及其應用、論微服務架構及其應用
縱觀近五年的架構師論文命題,你會發現每年命題里的知識點,一部分書上有、一部分書上沒有。像軟件開發過程、軟件設計、軟件方法、建模、體系結構等,這些知識點書上都有。
各位同學,請翻開<系統架構師設計教程 第四版>,你會發現,下列章節幾乎包含了大部分的知識點。
第 6 章:開發方法
第 7 章:系統規划
第 8 章:系統分析與設計方法
第 9 章:軟件架構設計
第 10 章:設計模式
第 11 章:測試評審方法
第 13 章:開發管理
第 17 章:系統的可靠性分析與設計
再來說說書上沒有的部分,16年的微服務、17年的無服務器(serverless)、18年的NoSQL、19年的數據湖、以及20年的雲原生。除了Nosql在書中用了一個小章節簡單介紹了一下,其他的都只字未提。那么,為什么,為什么要考書里沒有的知識?
在我的思維里,作為一名架構師需要對新技術有着強大的學習理解能力,以此來完成技術選型,或者決定架構的迭代升級,維護系統的穩定和性能,所以,這一塊考察的是個人對新技術的敏銳感知力和學習擴展能力。
20年甚至到現在,我關注很多公眾號都還在推送雲原生的概念、優勢和部署方案。
所以說,平時沒事多看看公眾號,不僅僅和朋友聊天能吹一下,而且對考試也會幫助的哦。
說了那么多,論文到底該怎么寫?
論文寫作思路
1. 快速審題
小學的時候,老師就講過寫作文要先審題,架構師論文命題也是如此。論文命題除了確定題目之外,還會給你寫作要求。而這個寫作要求會告訴你本命題涉及的知識點有哪些,並給你確立一個寫作方向。這個可以參考后面的論文真題分析。
2. 確定題目
一般在考試前五分鍾就會發卷,雖然不允許動筆,但可以看試題。在填寫並確認好個人信息之后,先看題,看完之后選擇一個最有把握的。如果感覺都沒太有把握,就選一個命題描述說明比較多的,這樣你可以獲得更多有用的信息,寫的內容也更容易貼近主題。
3. 構思正文內容
兩個小時的寫作時間,2500字+, 基本上是沒有什么思考的空間的。當你確定題目之后,你的腦海里,就得列舉出你的正文內容要寫哪些東西了。
正文內容分為兩部分。一部分是理論知識層面,即寫作要求中讓你闡述知識點概念的部分,另一部分就是項目實踐層面,即此理論或技術框架為什么要應用於項目,如何應用於項目、應用於項目之后獲得了怎么樣的結果。這一塊可以參考后面部分。
4. 學會分段
每一大段或者兩小段對應一個知識點。每段開頭先點題,先說明這一段要寫的知識點是那個。然后將理論與技術框架或者實現方法對應起來,接着描寫技術框架的選型依據、應用、優勢以及取得的效果。
如果分段太少,你就會發現寫着寫着突然沒話了,只能亂寫一通。如果分段太多,其一是知識點可能不夠,其二是草草幾筆帶過一個知識點,讓人覺得沒有深度,也容易失去得分點。
5.學會思維發散
假如你要升級一個組件,需要寫一個升級報告。當你無從下手的時候,你寫一些性能提升、運行穩定性提升、主備負載均衡高可用、故障用戶無感知等等專業詞語,讓人看起來就是有一種高大上的感覺。然后再和老版本對比,詳細描述一下新特性,大功告成。
在考場上,如果真的寫到一個地方實在寫不下去了,別划掉重寫,影響卷面;也別花太多時間思考,時間不夠,這個時候就要體現個人思維發散能力了。
但也不是為了湊點字數而亂寫一通,肯定是要圍繞主題有理有據。可不能加一些沒用的狀語或者語氣詞,讓文章看起來很沒有技術含量。
架構師論文結構
這里先看一下答題卡:
論文主要分為兩個部分:摘要、正文。在正文末再寫一下項目感言作為結尾,一篇論文就完結了。
摘要
摘要是最容易寫的,也是我論文唯一復習的部分,因為有固定的格式,直接套就行了。格式如下:
在xx年xx月,我參加了xxxx項目的開發工作,該項目主要用於實現xxxx功能(交代項目背景)。在整個項目開發過程中,我擔任了系統架構師的職務,主要負責xxx(例如技術選型、架構設計、設計方法等),整個項目歷時xxx月,最后在xxx時間圓滿完成。
項目的xxx模塊采用xxx技術/理論(圍繞命題),提高了xx系統性能,減少了維護成本(技術選型優點,這個就根據自己選擇的項目來展開)。xxx模塊采用了xxx技術,然后xxx。
本文以此項目為例,講述xxxx(圍繞命題)在xxx項目中的應用情況。
上面就是以我個人思路整理的一個摘要內容,也可以參照論文范圍的摘要模板。然后依此擴展出300~500字左右。摘要部分就大功告成了。
摘要確定了整個論文的基調,同時也要突出命題中的知識點。也就是說,必須在摘要中告訴別人,我寫這篇文章就是想告訴你,我用了什么理論或者技術框架。
正文
正文部分就是體現知識功底和寫作能力的時候了,這個就得嚴格按照命題中的要求來寫。一般會讓你先闡述某種理論或技術的含義,然后可能會再考考你相關的知識點,最后讓你寫在項目中的應用和效果。
先想好自己論文概要框架,然后按照之前在寫作思路中提到的思路,來完成正文內容的寫作。
結尾
總結一下項目完成感言,談談從項目中的收獲,和對項目中所使用技術的理解,最后發表一下自己對系統架構師的感悟。
2020論文真題分析
我參加的是2020年11月的系統架構師的考試。所以就先把20年論文命題列舉出來,然后闡述一下我自己的寫作思路。
論企業集成架構設計及應用
- 概要敘述你參與的軟件開發項目的及承擔的主要工作
- 詳細說明三類企業集成架構設計技術分列要解決的問題及其含義,並闡述每種技術具體包含了哪些集成架構。
- 根據你所參與的項目,說明用了哪些企業集成架構設計技術,實施效果如何。
對應教材第九章:軟件架構設計。
論軟件測試中缺陷管理及其應用
- 概要敘述你參與管理和開發的軟件項目以及承擔的工作
- 詳細論述常見的缺陷種類及級別,論述缺陷管理和基本流程
- 結合你具體參與管理和開發的實際項目,說明是如何進行缺陷管理的。請具體說明實施過程及應用效果。
對應教材第六章:開發方法。
論雲原生架構及其應用
- 概要敘述你參與管理和開發的軟件項目以及承擔的主要工作。
- 服務化,強性,可觀測性和自動化是雲原生架構重復的四類設計原則,請簡要對這四類設計原則的內涵進行闡述。
- 具體闡述你參與管理和開發的項目是如何采用雲原生架構的,並且圍繞上述四類設計原則詳細論述在項目設計與實現過程中遇到了哪些實際問題,是如何解決的。
超脫教材之外,不在大綱之中。
論數據分片技術及其應用
數據分片就是按照一定的規則,將數據集划分成相互獨立正交的數據子集。然后將數據子集分布到不同的節點上,通過設計合理的數據分片規則,可將系統中的數據分布在不同的物理數據庫中,達到提升應用系統數據處理速度的目的。
依次從以下三個方面進行論述:
- 概要敘述你參與管理和開發軟件的項目以及承擔的工作
- Hash分片,一致性Hash分片和按照數據范圍分片是三種常用的數據分片方式
- 具體闡述你參與管理和開發的項目,且采用了哪些分片方式,並且具體說明其實現過程和應用效果。
在第三章數據庫中提到了分片的概念,但是Hash、一致性Hash沒有提到。
看完四個論文命題,除了雲原生超脫於教材之外,其他三個命題在教材中都有跡可循。所以你把書上的知識點都搞懂了,沒有相關的工作經驗也是也能夠寫出論文的。
我的論文寫作思路
我看了兩天教材,實在看不下去了,就放棄了。論文只背了摘要部分,沒有背過范文,考場也是臨時發揮,完全屬於第一次寫論文。
選題
我沒看書,所以命題1、2放棄,雲原生聽過但不了解,也沒真正用過,怕寫跑偏了,也放棄了。最后選擇了數據分片。
選擇原因有二。一是命題描述長,都告訴你了數據分片就是將數據分布在不同的數據庫中。二就是作為大數據開發,分片、分區是大數據中也比較常見。
正文內容
先將Hash、一致性Hash、數據范圍分片的概念解釋清楚。Hash就是通過算法計算出hash值;一致性Hash就是環形結構,當物理節點刪除或者增加時,不需要修改hash算法;數據范圍就是根據某些字段的取值范圍來進行划分。
接着下面就是開始用技術框架來映射這些分片方法,從而來將理論實體化,更容易闡述這些分片方法在項目中的應用情況。Hash分片我對應的是Kafka、數據范圍分片對應的是數倉Hive和數據分表,至於一致性Hash分片對應的是什么,有點記不清了...
就拿Kakfa舉例:
- Hash分片原理:Kafka中的數據通過計算出key的hash值,來選擇節點
- 作用:存放數據時,只需要指定key,Kafka自動計算出hash
- 項目應用:不同進程間的不同消息數據存放於Kafka的topic中,實現事件通知、數據多次重做、一次性語義的功能。
- 效果:使數據均勻分布在不同broker物理節點的磁盤上,實現分區分片、高可用。而hash分區也解決了數據傾斜的問題,從而提高了數據處理的並行度和效率。
論文項目准備
考系統架構師的朋友大致分為兩類:一是計算機行業工作多年,想檢驗一下知識累積;二是評職稱需要架構師證書。不論怎樣,在考試前還是需要清楚論文的結構,以及基本寫作流程。
我是屬於前者,大數據工作兩年之后,想檢驗一下自己多年的自學結果,所以復習甚少。但是對於喜歡雙保險的同學來說,我的建議就是:先看書,再看范文,可以押題幾篇,背下來默寫幾遍。
前者
對於前者,浸淫IT行業多年,項目經驗比較豐富,也有一定的技術能力。所以即使自己沒有做過項目,也見過不少項目或者產品。
所以在論文准備的時候,主要背誦知識點,一是用來闡述論文命題中要求解釋的概念;二是表達專業性,讓閱卷老師一看,覺得寫的有點東西,沒有跑題。
如果像我一樣啥都不准備,需要個人技術知識面足夠寬廣,在論文選題的時候能夠遇到自己擅長的領域,能夠用專業知識和獨特理解表現在論文中,從而能得到45分+。
后者
對於后者,更多的可能是對項目進度的全局把控,對架構、技術可能了解的不多。所以,可以好好看看教材和視頻,好好學習教材上的架構知識,對下午的案例也會有很大的幫助。
接着也就是多看論文范文,多了解幾個項目,分析一下項目結構。實在不行就先背下來多寫幾遍,哪怕是生搬硬套,久而久之也能做到孰能生巧。
注意事項
論文寫作,一定也要卷面整潔、字跡工整,至少得讓別人看懂。字數也點到為止,不要寫太多,容易出錯。
我寫完之后,還有十多分鍾交卷,最后又提起筆想寫一段結尾總結。寫完一行半我覺得,再寫的話,結尾總結篇幅就有點大了,也太矯情了,然后就划去了。雖然是在文章最后,但是或多或少會讓人看起來不太舒服...
結語
本篇文章主要是從一個考生的角度,闡述了我對系統架構師論文的一些理解,可能分析並沒有那么專業,但是也能在一定程度上讓大家了解,系統架構師的論文寫作是怎樣的一個過程。
創作不易,寫了好幾天,真心希望對大家的寫作有所幫助。當然如果與你看法不一致,可翻篇而過,一笑了之,不必計較。如果對你有所啟示,我也甚是開心,亦希望共乘風破浪、扶搖而上。
最后,希望大家在2021年的系統架構師考試中能夠取得理想的成績。
95后小程序員,寫的都是日常工作中的親身實踐,置身於初學者的角度從0寫到1,詳細且認真。文章會在公眾號 [入門到放棄之路] 首發,期待你的關注。