參加完軟考后心里總有些話想說,那就談?wù)剬浛嫉母邢氚伞?(成績是50,47)。
首先,你要對軟件設(shè)計師證有個正確的認(rèn)識,它只是一張紙,有了它不能說明你水平就很強,沒有它也不能說明你就不適合搞軟件開發(fā),你不會因為一張紙就確定了自己的能力水平吧(你看過研究生或博士去考的嗎!如果你堅持看重的話,你應(yīng)該不適合做開發(fā)工作了,多也只能做個代碼寫手)。而且中國的考試向來都是只重課本不重應(yīng)用,所以對軟考也不要太害怕(我就是個半道出家的,沒進入正規(guī)的大學(xué),通過胡亂的自學(xué)也敢去考),考試出的題目技巧性都不強,很多都是那類一看就知道考點是什么,更過份的是有些題目很可能甚至?xí)净蛸Y料上都有(中國的教育也要進步了吧:()。更重要的一點是,現(xiàn)在感覺看重這個證的企業(yè)是越來越少了,所以請把自己的精力放在提高自己的理論基礎(chǔ)水平上,并且要不斷的提高自己的數(shù)學(xué)能力(看看國外的計算機課程開設(shè),你就不會再小看數(shù)學(xué)的作用了)。
其次,說說我參加軟考時的學(xué)習(xí)過程。
1.課本準(zhǔn)備:大綱、軟件工程的教材(推薦《軟件工程——原理、方法與應(yīng)用(第二版)》高等教育出版社)、編譯原理的教材(推薦《編譯原理(第2版)》清華大學(xué)出版社)、數(shù)據(jù)庫的教材(《數(shù)據(jù)庫設(shè)計原理》)、數(shù)據(jù)結(jié)構(gòu)的教材(推薦一本學(xué)C++用得上的(如果你有時間學(xué)C++的話)《數(shù)據(jù)結(jié)構(gòu)與算法——面向?qū)ο蟮腃++設(shè)計模式》國外計算機科學(xué)教材系列)、操作系統(tǒng)的教材(《操作系統(tǒng)教程(第3版)》高等教育出版社)、還有就是要準(zhǔn)備一到2本練習(xí)題及1套模擬試卷。
2.制定學(xué)習(xí)計劃,我是從報名的那個月開始,除了早晨用于學(xué)點英語外(不過英語水平一直很差,可能有英語學(xué)習(xí)障礙),每天分3個學(xué)習(xí)時段(上午、下午、晚上),每個時段學(xué)2門(一門簡單的,一門較難的),其中軟件工程、編譯原理、數(shù)據(jù)庫原理、操作系統(tǒng)、C++為單獨的課程,其它的課程就用大綱那本書。并且要保證考試前一個月做練習(xí)用的復(fù)習(xí)時間,除非你有計算機硬盤一樣的記憶能力,否則好有一個月的練習(xí)時間,其中前1-2個星期用來做模式試題。
軟件工程是復(fù)習(xí)的重點,因為下午一定少有2道軟件設(shè)計分析方面的題目,一定要熟練的掌握書本中說到的各種軟件分析設(shè)計方法及有關(guān)的分析用圖,對各種圖的功能作用和制作方法(特別是各種圖的組成元素)以及各種圖之間的轉(zhuǎn)換及聯(lián)系(如果有的話),UML面向?qū)ο蟮能浖O(shè)計方法及面象過程的軟件設(shè)計方法完全理解,軟件測試要達到理解的程度,其它的內(nèi)容只有去強記了,因為基本是都是上午題,而且每年的題都不定,但與CMM有關(guān)的一定會有。(這科的復(fù)習(xí)我認(rèn)為難一點,因為我沒有參加項目開發(fā)的經(jīng)驗,對里面的概念只能強行理解和記憶,所以在腦中的影像不太深刻,而且考完后就忘得一干二凈了,不過學(xué)還不是太難,可能是我的教材簡單)
數(shù)據(jù)庫也是重點,下午一定有至少一道數(shù)據(jù)庫的題目,而且也一定是考關(guān)系型數(shù)據(jù)庫,E-R模式也要搞懂,可由它導(dǎo)出關(guān)系,一定要弄懂關(guān)系數(shù)據(jù)庫的幾個范式及關(guān)系的建立方法(因此就要對關(guān)系數(shù)據(jù)庫的基礎(chǔ)概念非常清楚,如鍵的定義,函數(shù)依賴,范式的定義、作用及轉(zhuǎn)換是建立關(guān)系的基礎(chǔ)),要熟練SQL常用的幾個語句,好是自己用筆寫上幾遍每個語句的各種形式以加深記憶,數(shù)據(jù)庫的學(xué)習(xí)還是不太難的(因為考試不會考數(shù)據(jù)的物理存儲及數(shù)據(jù)安全,感覺這方面的知識更難,交叉學(xué)科更多)。
數(shù)據(jù)結(jié)構(gòu)的復(fù)習(xí)以普通的教材為主(相關(guān)書籍學(xué)計算機的應(yīng)該都有一本吧),對數(shù)組、鏈、隊列、棧、樹及堆等基本的數(shù)據(jù)組織方式要非常熟悉(要做到看見算法就知道要用什么數(shù)據(jù)組織方式更高效),排序、索引、HUSH及圖的各種算法要了然于心(算法的分析過程及代碼要非常清楚),算法的分析方法達到理解應(yīng)用的水平;對C語言要非常熟練(要會應(yīng)用C語言語句的一些技巧,如可以利用函數(shù)的返回值做為判定條件,在循環(huán)中對數(shù)組的處理可使用a[i++]來提高編寫代碼的效率,這類的小技巧只有通過大量的閱讀代碼才能提高),如果是初學(xué)面向?qū)ο蠓矫娴母呒壵Z言,建議還是先學(xué)C++,感覺它更象一種語言規(guī)范,而JAVA是一種編程的工具并且由于它的跨平臺特性所以它有很多自己獨有的功能和特點,有時間一定要看一本C++語言的數(shù)據(jù)結(jié)構(gòu)它能使你更全面和深刻的理解類及對象的編程方法。(下午那道編程題你拿不到分,就考慮做其它方面的工作吧,程序員不適合你了,因為你連編程工具都不會用)
編譯原理一定會考詞法分析它是后面編譯過程的基礎(chǔ),產(chǎn)生的表格在整個編譯過程中都會用到(主要考的內(nèi)容是NFA與DFA的轉(zhuǎn)換、正規(guī)式與有窮自動機的轉(zhuǎn)換等),文法分析有一年考過下午題,這科對初學(xué)者比較難,比較抽象,理論性也比較強,反正我是學(xué)了4個來月才學(xué)通一點,這課復(fù)習(xí)沒什么技巧,用功死學(xué)吧。
操作系統(tǒng)沒什么說得了,把它的幾個功能模塊搞清楚及相關(guān)的算法搞清楚就好了,如處理器的管理、存儲管理、設(shè)備管理、文件管理及系統(tǒng)安全,其中我認(rèn)為比較難理解的是PV操作(在并發(fā)進程中它的應(yīng)用非常靈活)和中斷(反正這個對我比較難),一定要把相關(guān)內(nèi)容所講到的算法及分析過程搞懂,這樣考試相關(guān)的題目對你來說就小兒科了。
其它課程的復(fù)習(xí)就按考試大綱進行,把里面的概念搞清楚就行,因為它大部分都是上午題。
3.復(fù)習(xí)練習(xí),在復(fù)習(xí)的一個月中,留出考前的一個星期作為做模式試卷的時間,此間以做練習(xí)為主,它能強化你的記憶,并能做到查缺補漏,遇到不懂不會的就查書把概念搞清楚,畢竟現(xiàn)在不明白總比考試時不明白好多了。后再說一句,別把考試看得太難了它只是名頭大(軟件設(shè)計師一個嚇人的虛頭),只要你準(zhǔn)備充分,我想沒有考不過的理由(要不就是上帝對你太記恨了)。
好了就說這些,由于本人水平有限(寫作能力就更差了),如有說的不對或表達不清楚的地方請指正(要不你就當(dāng)是癡人狂語),順祝打算參加軟考的朋友們順利過關(guān)。