软件设计师考试后天就要开考了,在此根据我这一段时间的复习感受和对历年真题的分析,向大家分享一下做下午题的心得跟体会。
纵观05到11年的真题,我们不难发现,考试的重点越来越倾向于对概念的理解和软件设计的基本功。因此考试题目不是特别难,只要沉着冷静、仔细读题基本没有什么大问题。
下午题的第一道题是数据流图题,我们就拿它开刀说事吧!经调查分析发现很多人在这道题上不能拿满分,发现很多人不是因为这方面的解题能力不够,而是缺乏解这种题的方法与技巧。
一.解题当中考生表现出的特点
1.没有全局观:拿题就做,对题目没有一个整体的把控。
2.急功近利:读一遍题就开始动手做。逐字读题,心想看一遍就能做出题来。
3.读题目时,不做标记,不前后联系起来思考。
4.边做边怀疑边修改,浪费时间。
5.粗心大意:忽略了答题格式,丢了不应该丢的分。
二.解题的方法与技巧
1.首先要懂得数据流图设计要领。
答题时须谨记以下三条:
(1)自外向内,自顶向下,逐层细化,完善求精。
(2)保持父图与子图的平衡。
(3)保持数据守恒。
2.解题的方法。
(1) 数据平衡原则。
数据平衡原则分为两个方面:
① 在分层数据流图中,父图和子图要平衡,也就是说,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。
②数据平衡的另一个方面是说:每个加工必须即有输入数据流又有输出数据流,而且一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
(2) 要特别注意的几个细节问题。
① 除了流向数据存储(文件)或从数据存储流出的数据流不必命名外,其它每个数据流都必须有一个合适的名字。
②流向文件的数据流,表示写入数据,流出文件的数据流表示读文件。在整套数据流图中,每个文件必须既有读的数据流又有写的数据流,但在某一张子图中可能只有读没有写,或者只有写没有读。
③在逐步精化的过程中,若一个文件首次出现时只与一个加工有关,既该文件是个加工的内部文件,那么该文件在当层图中不必画出,可在该加工的细化图中画出。
3.解题的技巧。
(1)阅读题干的技巧。快速的阅读第一遍,基本了解题目所涉及到的知识点或者事务,标记实体对象和存储文件,甚至可以将数据流也标记一下;这一步重点落在问题上,一般问题不难,但一定要看清问题。带着问题来看第二遍,边看边解决。
(2)要有整体的概念,不能因一个点符合就断定是它,尤其是数据对象。
(3)注意解题的速度,一般在20分钟以内为最好。
(4)解题的过程中,每一条数据流都能够在[说明]中找到相应的语句。
(5)做好以后,复查一遍;不要边做边怀疑、边修改,那样会担误时间,且错误更多。
以上方法同样适合于第二道题——数据库设计。
第三题是UML,这道题一般都很简单,只要仔细读题认真看图基本可以轻松搞定。
第四题是很多人都头疼的算法题。很多人一想到算法头就大了,更别说把题作对了。其实算法并没有你想象的那么难!虽然要学好算法需要扎实的基础跟清晰的逻辑思维,但是软考中考的算法并没有那么难。看到算法首先不要有抵触心理,不要想算法太难啦,我不会啊等等。如果你那样想那你就真的完了。
考试当中无论遇到什么样的题都要以平常心对待。最近几年的算法都是结合C来考的,想多拿点分还是比较容易的,因为题目里给出的空基本上都能在原题里找到答案。所以一定要仔细阅读代码,从整体来分析。就算一点都不懂也没关系,空白前后肯定有类似的代码,只要照猫画虎、按葫芦画瓢就能写对好几个空。
另外算法题经常会问到时间复杂度,求时间复杂度就找代码的循环结构。如果就一层循环那一般就是n了,要是两层嵌套就是n的平方或者n乘以一个变量,基本就是这个规律。当然不要一上来就用这个方法,次方法只是在你实在不会的情况下才可以用的。
至于设计模式嘛,这个也不是特别难,首先看他给的图,理清大致的关系,搞懂类之间的关系,什么依赖、组合、聚合之类的。然后根据题目给的代码慢慢分析。如果他在一个接口前留一个空,那就填interface了,如果抽象类之前有空就写abstract,如果是类与类之间就是extends、类跟接口之间那就写implements等等。
总之,下午题总的战略方针就是从整体出发,逐步细化。放松心态平静对待。要做到战略上轻视敌人,战术上重视敌人。最后预祝各位软考的同志考试顺利!