前言
2020年参加了软考高级系统架构师的考试,那是我在考场上第一次写论文,2小时2500字+,最后得分56。
拿到成绩后写了一篇关于七天复习考过系统架构师的文章,作为一个自学者,深知网上系统架构师的资料搜集不易,所以将自己收集的系统架构师资料和自己做的笔记分享了出来,希望能给考友们提供一点帮助。
前几天,上半年成绩出来了,很多朋友也开始准备下半年系统架构师的考试了,然后有人就艾特我说系统架构师论文该怎么写,于是在某天下午决定写一篇文章,来浅抒己见。
历年论文命题分析
系统架构师论文命题四选一,这里先看一下最近五年系统架构师论文真题。
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年的系统架构师考试中能够取得理想的成绩。
公众号:入门到放弃之路,期待您的关注。