2014软考软件设计师 软考软件设计师真题
- 作者: 阿灿99878251
- 来源: 51数据库
- 2020-04-15
2014下半年河南软考证书怎么领取?去年下半年考过的软件设计师,
工欲善其事,必先利其器。
在做一个项目时必定要先做好调试除错的预备在面向过程编程的时代都是以检测返回的错误代码来判定错误,可是这种方法的缺点是假如编写某一操作的时候可能出现的错误代码(比如说硬件操作)太多,那么最终用户将会陷入倒无穷无尽的检测代码中,可能会是这个样子 UINT err=Functionxx(…); if(err==xxx) … if(err==xxx) … … … 省略100行 只有这样程序才能在出现意外的时候有所相应和恢复,但是由于错误处理太庞大了最终用户很可能这样 if(Functionxx()!=SUCEEDED) exit(0); 这样某些可能可以恢复的操作也无法幸免了,(比如说网络连接超时,终止运行太过分了吧,只要弹出个对话框就行了) 在面向对象编程的时候,不可否认,很多人仍然还是这样排错的,其实各种面向对象的语言都提供了异常处理的手段(比如说Object Pascal,C++,本文以C++为例) 下面是我的关于异常的一些使专心得 对于各种用户来说,并不是每一种错误都是他关心的,非凡是小组开发的时候比如某一模块是关于文件操作的,那么编写这个模块的程序员只要注重关于文件操作失败的异常就行了,而网络模块的程序员只要知道网络出错的错误处理就行了,因此,我们可以定义一个这样的类 class CBasicException { CBasicException(…); char* GetDescription(); UINT GetErrorCode(); … }; 然后再从这个类继续几个子类 CFileException,CNetException… 然后和具体某一类错误相关的具体的异常分别从上面的类里面继续,比如文件打开失败,空间不够等等 可以从CFileException继续,而连接超时等等可以从CNetException继续,如此一来就将错误分类了整个类层次是这样的 CBasicException / \ CFileException CNetException / \ / \ COpenFailed … CTimeOut … 进入讨论组讨论。
之后将各个错误码和相应的异常对应起来,一些不太重要的信息可以封装在一个异常里,比如文件打不开可能是空间不够或共享冲突…,都可以放在一起,假如以后要专门处理某一样,比如空间不够,再从相应的基类继续即可(COpenFialed) 然后你的函数应该这样实现 CMyfunc() { … throw Cxxx(…); } 而在相应的调用部分则可以这样写 void Operation1() { try{ Myfunc() } catch(CFileException& e)//处理文件 { PRintf(“%s”,e.GetDescription()); throw;//重新抛出,假如搞定就不用再抛出了 } catch(CNetException& e)//网络 { … throw; } } 这样只要catch想要处理的异常就行了 但是你的主函数应该这样写 void main() { try{ Opertion1(); Operation2(); Operation…… … } catch(Cxxx& e)//处理未捕捉的重要异常 { … } catch(CBasicException& e)//对你所封装的错误总的处理 { … } catch(…)//其他异常,未被封装,比如除0 { … } } 这样处理就合理多了 而且假如在异常的描述里加上出错地点就更好了,比如出错函数名 不过千万不要将异常基类的catch写在子类的上面否则子类的catch可能永远不会工作了 比如: try{ … } catch(CBasicException& e) { … } catch(CFileException(& e) { … } 这样后面的catch就再也不会被执行了 另外在类的构造函数和析构函数里不能返回值的,这时就只能用异常了
软考找工作时,大家觉得软件设计师这个证书,有多大的用处?
这次考试通过了软件设计师考试,为了给后来人帮助,特说说我的复习方法。
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多天的时候,“看书时没有目的性,不带着任务走,看到哪里算哪里;看后不做题进行巩固”,我以前犯得就是这个毛病,每天看得是云里雾里的,不做练习巩固,过几天就忘记了。
所以,我看了书以后,总要找一两个相关的题来做一做。
后来,可以做模拟试题了,几天才做完一套,遇到做错的知识点,就找出教材或辅导教材来,争取弄懂;但进度...
转载请注明出处51数据库 » 2014软考软件设计师
