为什么考
系统架构设计师是国家设立的计算机技术与软件专业技术资格考试(简称软考)中的一个高级科目,属于工程师高级职称系列,具有一定含金量。浙江省每年通过软考高级的人数约为1000+人,其中系统架构设计师科目的通过人数约为200+人。从学习角度来说,通过准备系统架构设计师的考试的过程,可以查漏补缺,并且了解一些系统架构设计相关的基础知识,实现一定程度上的自我提升;从目的性的角度来说,通过考试,可以在一些城市成为高层次人才(如杭州可评E类)、落户(如上海技能落户)、体制内评高级职称,享受各种政策红利;对于要参与招投标项目的同学,国家的这个证书也是一个加分项。
我从SE科班毕业一年多,趁着学校里学到的知识还没忘完,字还会写,也正好有一年的实践经验,我打算在这个时候考这个证书,一方面是为了多学习一些知识,另一方面也是趁着这个恰到好处的时候提升自己的价值。
系统架构设计师考什么
考点以及针对考点的复习建议
计算机基础知识(20%)
对于计算机类科班的同学来说,这一部分主要就是在学校里学习的内容,主要包括计算机组成与体系结构(编码理论、计算机组成、性能评价理论、多媒体等)、操作系统(调度管理、内存管理、磁盘管理等)、数据库系统(范式、关系代数、SQL、数据架构等)、网络(常见网络设备、常用协议、组网方式等)、嵌入式系统这些东西,每个部分基本就是学校里面所学知识的简化版。针对这一部分,有科班基础的同学可以看视频1.5倍速复习一轮,题目基本大部分就是送分题了。没有基础的同学可以认真学学,这些都是程序员安家立命的根本,即使本来就不会,也可以先把解题的操作步骤记下来,对于学过理科的同学不是上面太大问题。
信息化战略与规划(9%)
这一部分是概念性并且十分抽象的东西,这一部分的内容涉及到企业和社会进行信息化需要怎么做,做什么。比如,企业内外部有信息系统的类型的信息系统,它们之间是如何进行系统集成的,如何进行系统迁移和系统迭代,信息系统如何支撑企业的发展(BI、电子商务等),信息系统如何服务企业、个人、政府,这些概念很抽象,但我认为是一个系统架构师以及信息系统规划者相关的岗位应该掌握的知识,它站在一个宏观的视角回答了“为什么要做信息化、智能化”这类问题。这部分内容是我在备考过程中收获较大的一部分,因为工作中也没有系统性地学习相关的理论。这一部分的学习建议看视频和讲义,结合实践经历来学习可以有不一样的收获,这一部分建议深度学习,因为在论文中写项目的背景、价值的时候可能也会用到,要深刻理解之后再开始刷题。
软件工程(25%)
这一部分也是很枯燥的理论性内容,包括软件开发生命周期、软件开发过程模型(瀑布模型、螺旋模型、原型模型等)、需求管理、开发管理、软件系统设计(易用性设计、设计模式)、软件系统建模(结构化设计、UML)、软件系统构建、软件测试(黑盒、白盒、回归、单元、集成、路径覆盖等)、项目管理(关键路径)。其中,系统建模很可能会在案例分析题中出现。这一部分的概念枯燥并且不好记忆,建议反复观看资料学习。
系统架构设计(35%)
这一部分是系统架构师这个科目考察内容的重中之重,也是学习的重点。无论是选择题还是案例分析题还是论文,都有涉及的部分。这一部分首先引出了软件架构的定义,紧接着讲如何从多个维度评价一个软件架构设计(质量属性、软件质量评估方法),为了达到软件系统设计的预期标准,如何通过一些架构模式(或叫架构风格)来实现整个架构的设计。并额外列举了一些派生的架构模式和现实系统中的架构设计案例,如MVC、Web Service、常用中间件等。这一部分的内容最少完整学习一遍,深刻理解每个章节的内容。这一部分很重要,很重要,很重要!这一部分除了固定题型的送分题,还有很发散的开放式问答。看完这一部分的内容,也基本上就知道怎么写论文了。
信息安全(3%)
这一部分内容是信息安全的基础内容,包括基础密码学(对称、非对称加解密、数字签名)、常用身份认证方案设计、访问控制方案设计、系统安全性设计等内容。在论文中,可能也要使用到这一部分的知识点。
法律常识(2%)
主要考关于著作权、专利、商标、商业机密等概念的理解,把概念看一遍然后刷题。
数学&逻辑&英语(6%)
这些是一些作为程序员的基础知识,数学一般考离散数学、运筹学里面的东西,比如高考考过的线性规划、大学学过的图论,一般在考场上都能硬算出来。英语主要是计算机和软件的专业英语,以5道完形填空的形式出现。这一部分不建议复习,直接刷真题,边刷边了解一些算法。英语在短时间内是没法复习的,任由天命吧。
题型
整个考试分三个题型,每种题型一场考试,一天内考完,上午考选择题,下午考案例分析和论文。三种题型每种题型满分都为75分,没有变过的合格要求是每种题型得分都达到45分以上,从考试角度来说,由于是资格性考试,而且通过后不区分等级,因此合格万岁。这个考试的其中一个难点在于,三个题型的分数都达到45分以上。
综合知识选择题
考试时间120分钟,75道四选一单项选择题,每道题1分,主要就考上面提到的知识点。
案例分析
主要是问答题和填空题,考试时间90分钟。
五道大题,每道大题25分,第一题必答,二到五题中四选二来回答,选定的三道答题一共75分。
第一道大题比较固定,一般是软件架构评估
2~5题中,
固定会有一道题是嵌入式系统设计
除此之外,还会有以下题型
-
软件系统建模(UML图填空、问答)
-
系统架构整体设计(表格填空、架构图填空、问答)
-
Web系统架构设计(表格填空、架构图填空、问答)
-
单个细节的方案详细设计(针对不同场景,进行高可用设计、性能设计、可扩展性设计等)(表格填空、图形填空、问答)
其中问答题的题目一般会这么问:
概念问答类:
-
请说明什么是XXX,并指出它的作用与特点
-
请说明A和B两种设计模式的区别和联系
方案分析与选择类:
-
项目组最终使用了xxx技术方案,请分析在题目所述场景下采用xxx技术方案的原因
-
请分析N种技术方案的优势和劣势/适用场景,并确定使用哪个技术方案
-
请指出选用xxx技术方案存在的问题
论文
考试时间120分钟。
论文是软考高级中经常出现不合格情况的题型,但如果自己有实际的工作经验,也有一定的理论基础,也认真准备了考试,达到45分合格线并不是一件很困难的事。
考试形式是给出4道论文题目,选其中一道题目来写论文,两个小时,手写在类似高考语文作文的答题卡上,一般要写到框框2200字以上。
通常来讲,论文给出的4道题目里面,有一道一般是最近两年比较火热的技术,如云原生、无服务架构等。
其它三道题的出题方向很固定,频次大致从高到低主要包括:
-
软件系统架构设计
-
软件系统建模
-
信息系统规划与集成
-
软件质量保证
-
软件可用性设计
-
软件安全性设计
-
需求管理
-
项目管理
我当时考试遇到的系统架构设计方向的题目是微服务架构设计,正好前一晚上练了SOA的题目,比较相近,很幸运。
想拿下论文,要准备一个大项目,一般是自己平时工作做的系统,从架构师全局的角度来梳理这个系统的方方面面,然后对于不同题目,从不同角度来描绘这个系统就行了。
结构
写作的结构也很固定,基本上是八股文,摘要几乎是有模板的。
摘要
-
交代自己做了项目,自己是做什么的(一般是架构师)
-
我在这个项目里面,用到了哪些与题目相关的技术
-
项目很成功,客户很开心,老板很开心
正文
-
我现在在哪里工作,是个啥职位(100字左右,注意数据脱敏,不要透露完全真实的项目名称和个人、公司信息,比如用某某代替)
-
我做了什么项目,业务背景和产品设计是怎么样的(300字左右,同样注意数据脱敏)
-
说说题目里面的技术或概念是什么(作为论点,300字左右)
-
项目中是怎么体现题目中的技术的(作为论据,也是整片论文的主体部分,1000字左右,举2到4个例子)
-
项目取得了怎么样的结果,有哪些 细小的 可以改进的点(结论,400字左右)
-
感叹人生,感叹社会(100字左右)
如何备考
我本着自己有一定基础,没有报班,买的书也基本没怎么用。
我主要的学习复习方式是视频+真题+他人的论文。视频用于掌握基础知识,还会附带一些练习题。学习完这些基础知识之后,就要拿分类的练习题来训练了。对于论文的准备,先看一下别人的论文,再自己写不同主题的三篇就够了,重点写架构设计方向的主题。其实我一开始还买了两本书,但是基本上没怎么看。除此之外,我还加了一个备考群,考友们会互相鼓励,互相答疑。
主要的资源如下:
-
文老师系统架构设计师教程 ,在小破站上,用来复习计算机基础相关内容。
-
希赛的直播课录播及其对应的讲义,用来学习除了计算机基础相关的内容,小破站上有时候有,也可以从备考群中获取。
-
希赛的真题分类汇编,备考群获取。
-
2013年至今的真题,每年一套,备考群获取。
我每天主要坐公司班车通勤上下班,因此就利用车上的1个多小时看视频学习复习。从8月下旬开始准备,首先花了一周多的时间复习计算机相关的基础知识,也就是计算机组成、操作系统、数据库、网络、嵌入式系统这一块,主要观看了小破站上面文老师的视频,这套视频把一些真题也讲解了一遍,然后进行练习。这一部分的内容我基本上曾经都学过,所以总花费是两周。
9月初,我开始学习信息化战略相关的内容,也有配套的练习。九月中旬开始学习软件工程和系统架构设计相关的内容,这一部分内容很多,学习时间也很长,同样加以练习。国庆长假我基本上全程在家学习,把剩下的部分也学完了。
从国庆长假后开始,我开始刷真题,每周抽3~4个晚上出来,每天洗完澡之后做一套或两套选择题或者问答题,其实很快,每套一般30~45分钟就OK了。班车上看看老师一些点评论文的课程,然后三个周末,每个周末一篇论文,我一共写了架构方向的两篇+系统集成的方向一篇论文。
刷题的时候有个情况是可能会发现得分一般会在55~60分,但是可能有一点水分,因为如果学过视频课程的话,有一些题是做过的,所以应该把最后一年的先留着不刷,等到最后一个周末再刷,最后会发现分数会低个5~10分。
最后一个晚上,打印一下论文的答题纸,然后手写一篇论文,找一下手速把握时间,也顺便练一下涂卡之类的操作。
然后就上考场了,杭州这边的考场应该都在杭电下沙校区。考前先预先打印准考证,然后算好从家到考点的时间和交通方式,第二天早上早点起,考试的时候也没什么要注意的,该带的证件和文具带好,选答题别忘涂框就行。可以带个非电子表防止考场没有钟,虽然如果是在杭电考的话一般都会有电子钟。
整个考试,算上报名费、交通费、书费以及备考群资料的费用,总花费大约400。
写在最后
总的来说,这个证如果有一定的理论基础加上一段时间的架构实践,能从软件整体架构的角度思考问题,并且认真准备,其实并不难考,特别是对于做Web系统方向的同学,命题显然是对这一块有倾斜的。虽然官方公布的通过率大概在20%,但其实我发现考场上有一半的考生没来。
最近终于拿到了证书,以后就是高级技工啦!
备考中有幸遇到了一起备考的同学,资源汇总都在Github上啦,大家如果有备考想法的,可以加群互相鼓励哦~
由于系统架构设计师考试一年只有一次(一般是每年11月前两个周六),如果想要备考软考高级的其它科目(比如5月的系统分析师、信息系统项目管理师等)的话,也可以采用类似的方式准备哦!