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