“軟件設計”是學習如何設計一個軟件,是“軟件工程’’中的重要一環(huán)。但是要說清楚如何設計一個軟件卻不是一件很容易的事。在應用軟件方面軟件的類型實在太多了.按開發(fā)規(guī)模分類,有個人、3人左右的小團隊、5-10人的中等團隊、企業(yè)式團隊(幾十人)等;按網(wǎng)絡方式分類,有單機、c/s(客戶機/服務器)、b/s(瀏覽器/服務器)等類型;按項目來源分類,則有自創(chuàng)自用型、科研型、內(nèi)部使用型、商業(yè)型等;按適用范圍可分為獨家訂做、通用型、行業(yè)型,等等。由于各種類型軟件的要求不同,實現(xiàn)的目標不同,對軟件開發(fā)的質(zhì)量不同,當然,編寫方式也是不同的。軟件設計課程通常會告訴你編制軟件所要遵循的原則,軟件開發(fā)需要經(jīng)歷哪些工程。但不能期望學完了軟件設計,什么軟件都能設計了。應該說,通常軟件設計這個課程屬于方法論范疇,而不是如同電路設計、程序語言設計那樣讓你學會一項技能。 很多讀者期望通過軟件設計課程的學習,就能學會如何去設計一個軟件,但事實上并不那么理想,F(xiàn)在,很多軟件設計的論著都致力于對軟件開發(fā)過程的總結(jié),力求在方法論上找出軟件設計的規(guī)律,用于指導學習者進行軟件設計。這方面*重要的成果應該是uml(統(tǒng)一建模語言)。這些抽象的法則和設計方法無疑是非常重要的,在本書中也有專門的介紹。但如果對一個沒有太多的軟件開發(fā)經(jīng)驗的大學生或研究生,尤其是非計算機專業(yè)的學生來說,這些理論實在是太抽象了,以至于很多學完軟件設計的學生感覺沒有實質(zhì)性的收獲。這些書本上的軟件設計的知識也許要等到從事軟件開發(fā)兩三年以后才有體會,如果那時還記得這些知識的話。 但是,要求學習者一定要等到積累了一定經(jīng)驗以后再來學習軟件設計的方法是不現(xiàn)買的。根據(jù)作者多年的軟件開發(fā)經(jīng)驗,并通過幾年的教學實踐,我們認為,對于沒有足夠編程經(jīng)驗的讀者來說,軟件設計課程也是可以學習的;但在學習抽象的軟件設計方法之前還是要學一些基本的軟件設計技巧,讓學習者積累一定的經(jīng)驗,然后再去理解抽象的方法論。 本書的主要對象是學過c++語言但沒有太多開發(fā)經(jīng)驗的學生,特別是非計算機專業(yè)的學生?勺鳛榇髮W四年級或新入學的研究生學習軟件設計的教材。 本書分四個部分,共11章。本書采用以實例為主,力求將抽象的設計方法融入到具體程序?qū)崿F(xiàn)中,讓讀者從實例中學習軟件設計的方法。本書所采用的程序語言是c++,開發(fā)工具是vc++,軟件設計實例是單機運行的繪圖軟件。 **部分是“程序設計基礎知識”,是由第1、2兩章組成。主要是c++語言和數(shù)據(jù)結(jié)構(gòu)的知識提要,供那些c++基礎不太好,或?qū)W得不夠深入的學生復習和深入學習用。其中著重介紹運算符重載、多態(tài)性、模板、線性表等概念。如果對這方面很熟的學生,則可以跳過或粗略瀏覽一遍即可。 第二部分是“mfc編程技術”,是由第3、4、5三章組成。主要介紹mfc程序調(diào)試方法、基本原理及基本的開發(fā)技術。使讀者對mfc程序有一個比較深入的了解。mfc程序結(jié)構(gòu)提供了一個很好的軟件設計范本,我們在了解它的編程技術的同時,也會對mfc程序結(jié)構(gòu)有一個比較深刻的印象,這對軟件設計的學習是非常有好處的。 第三部分是“軟件開發(fā)實例”,是由第6、7、8三章組成。這部分將引導讀者開發(fā)一個繪圖軟件系統(tǒng)。該軟件雖然很小,但其中包含的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)的管理、程序流程等對軟件設計的學習者都非常具有借鑒作用。 第四部分是“軟件工程與軟件設計”,是由第9、10、11三章組成。這部分將結(jié)合前面程序的例子,介紹軟件工程的概念和軟件設計的方法。后面還著重介紹了uml統(tǒng)一建模語言。*后還結(jié)合開發(fā)實例給出了uml的設計方法。從一個具體的開發(fā)實例中獲得軟件設計的思路,從而能夠理解軟件設計的理論。這就是本書所要追求的目標。
|