1、具体学习每门课程的方法
(1)软件工程。软件工程是复习的重点,不但上午题当中占10左右,而且下午题里也有2道软件设计分析方面的题目,一定要熟练的掌握书本中说到的各种软件分析设计方法及有关的分析用图,对各种图的功能作用和制作方法(特别是各种图的组成元素)以及各种图之间的转换及联系(如果有的话),UML面向对象的软件设计方法及面象过程的软件设计方法完全理解,软件测试要达到理解的程度,其它的内容只有去强记了,因为基本是都是上午题,而且每年的题都不定,但与CMM有关的一定会有。
这科的复习我认为难一点,因为我没有参加项目开发的经验,对里面的概念只能强行理解和记忆,所以在脑中的影像不太深刻,而且考完后就忘得一干二净了,不过学还不是太难,可能是我的教材简单了。
(2)数据库。数据库部分也很重要,上午有5分左右,下午至少有一道数据库的题目,而且也一定是考关系型数据库,E-R模式也要搞懂,可由它导出关系,一定要弄懂关系数据库的几个范式及关系的建立方法。
因此,就要对关系数据库的基础概念非常清楚,如键的定义,函数依赖,范式的定义、作用及转换是建立关系的基础。数据的并发控制,要熟练掌握SQL常用的几个语句,最好是用笔将每个语句写上几遍,对语句的各种形式加深记忆,数据库的学习还是不太难的。因为考试不会考数据的物理存储及数据安全,感觉这方面的知识更难,交叉学科更多。
(3)学习数据结构和算法。数据结构和算法是考试的重点内容,它的复习以普通的教材为主(相关书籍学计算机的应该都有一本吧),对数组、链表、队列、栈、树及堆等基本的数据组织方式要非常熟悉(要做到看见算法就知道要用什么数据组织方式更高效),排序、索引及图的各种算法要了然于心(算法的分析过程及代码要非常清楚),算法的分析方法达到理解应用的水平。
对C语言要非常熟练(要会应用C语言语句的一些技巧,如可以利用函数的返回值做为判定条件,在循环中对数组的处理可使用a[i++]来提高编写代码的效率,这类的小技巧只有通过大量的阅读代码才能提高),如果是初学面向对象方面的高级语言,建议还是先学C++,感觉它更象一种语言规范,而Java是一种编程的工具并且由于它的跨平台特性所以它有很多自己独有的功能和特点,有时间一定要看一本C++语言的数据结构它能使你更全面和深刻的理解类及对象的编程方法。
算法的学习不是一朝一夕就能提高的,一定要静下心来学习一些经典算法,比如:穷举法、贪婪法、分治法、迭代法、递推法、递归法、回溯法;找一些有名的算法程序来分析,比如:背包问题、组合问题、斐波那契数列、马踏棋盘问题、货朗担问题、八皇后问题、迷宫问题、汉诺塔问题、约琴夫环问题等。
有了这些算法思想在你的头脑中扎根后,当看到问题,你就自然的想起用什么方法来求最优解了。(4)程序设计语言。程序设计语言包括C语言、编译原理和面向对象的程序设计语言(通常以C++为例)。编译原理一定会考词法分析,它是后面编译过程的基础。主要考的内容是NFA与DFA的转换、正规式与有穷自动机的转换等。
文法分析有一年考过下午题,这科对初学者比较难,比较抽象,理论性也比较强,反正我是学了4个来月才学通一点,这课复习没什么技巧,用功学吧!不过听听希赛的“编译原理视频教程”,学起来更快一些。
C语言要掌握好三种基本结构、数组、链表、结构体、共用体、参数传递、指针及指针数组、指针函数等等。面向对象的程序设计语言要对基本概念及初步应用要了解,考得不深。
(5)面向对象方法学。面向对象方法学不但是上午的考试重点,也是下午的考试重点。上午平均有12分左右,而下午有30分,一道与UML图形有关的题目,一道面向对象程序设计的选做题。所以要好好掌握这一块。UML当中的类图、用例图、状态图、协作图要掌握好,考试中会常出现。(在希赛辅导平台的在线课堂里,老师多次强调这个要学习的知识点,我通过做题,认为老师抓的很准。)
(6)操作系统。操作系统没什么说得了,把它的几个功能模块搞清楚及相关的算法搞清楚就好了,如处理器的管理、存储管理、设备管理、文件管理及系统安全,其中我认为比较难理解的是PV操作(在并发进程中它的应用非常灵活)和中断(反正这个对我比较难),一定要把相关内容所讲到的算法及分析过程搞懂,这样考试相关的题目对你来说就小儿科了。当然还要注意进程死锁的问题,段页式存储的问题。
其它课程的复习就按考试大纲进行,把里面的概念搞清楚就行,因为它大部分都是上午题。
2、看书与练习相结合
我记得在考前20多天的时候,在网上看到一篇文章,其中讲到了“看书时没有目的性,不带着任务走,看到哪里算哪里;看后不做题进行巩固”,我以前犯得就是这个毛病,每天看得是云里雾里的,不做练习巩固,过几天就忘记了。所以,我看了书以后,总要找一两个相关的题来做一做。
后来,可以做模拟试题了,几天才做完一套,遇到做错的知识点,就找出教材或辅导教材来,争取弄懂;但进度太慢了。从四月中旬开始,我就争取时间每两天做一套,还将做错题目的试题分析好好看懂,当然到了后来,一看就会的题目我就不做了,为了节省时间。通过做模拟试题、历年试题可以锻炼做题的节奏,树立解题的信心,熟能生巧。
以前我的数据结构与算法不太好,通过练习,到考之前做题,只要能做得了的就有八九成的把握。做题还能强化你的记忆,并能做到查漏补缺,遇到不懂不会的就查书把概念搞清楚,毕竟现在不明白总比考试时不明白好多了。最后再说一句,别把考试看得太难了,只要你准备充分,我想没有考不过的理由。
我终于在第四次通过了软件设计师考试,心情很平静,因为考完以后想不通过都很难了。其实,只要方法对头,加上必过的决心和辛勤的汗水,你会比我更早更易的通过。好了就说这些,由于本人水平有限,如有说的不对或表达不清楚的地方请指正,顺祝打算参加软考的朋友们顺利过关。我现在准备系统分析师的考试,愿与更多的朋友交流!