標籤:軟體設計 軟體開發 演算法設計 演算法在電腦中的應用
軟體開發基礎知識1、軟體開發策略:
瀑布模型:通過順序執行前面的每個階段來構成的,當每完成一步後,開發過程就轉移到下一步驟。
原型模型:根據需要不斷重複地評估並修改這個模型,直到得到一個可以接受的版本,從這個版本可以開發出完整的系統或產品。
螺旋模型:綜合了瀑布模型和原型模型的特點,主要用於大型的複雜系統。
敏捷模型:根據需要進行適應和修改。一種得到極大關注的敏捷方法是極限模型(extreme programming,XP)。開發人員結成對子進行代碼的編寫和測試,隨著項目的開發將代碼整合到設計結構中,團隊的成員之間經常進行面對面的交流。
2、軟體設計方法:
自頂向下設計:將原始問題劃分成更簡單的子問題,每個子問題可以被單獨考慮。
物件導向設計(Object-Oriented Design,OOD):通過確認一系列的對象來實現模組化,每個這種對象都是由資料和在資料上的操作構成的,可以建模實際對象,並交相互從而解決問題。
它們的主要思想都是模組化。自頂向下設計主要關註解決問題必須執行的任務以及執行這些任務的演算法,而OOD主要關注問題中的“實際對象”。
小規模設計:小規模的設計可以使用類似於對大規模問題所描述的方法來設計解決方案。
3、類、執行個體、對象、資料成員、函數成員等的區別:
對象:每個對象都具有兩個部分,即儲存資料的資料成員和在資料上操作的函數成員;我們稱對象封裝了它的資料和這些資料上的操作。
類:同一類型的對象的集合。
執行個體:每個特定的對象被稱為這個類的一個執行個體。
4、物件導向編程的特性:
封裝性:對象可以封裝資料和在資料上的操作;
繼承性:一個類(子類或衍生類別)可以重用另一個類(基類或父類)的所有屬性和操作;
多態性:一個對象可以在不同時間表現出不同形式的行為。
5、演算法+資料結構=程式:
資料類型問題中每個資料元素的最重要的屬性就是它的類型,類型決定了它的取值和操作以及最終結果。不過,有些對象是一系列的值,而絕大多數程式設計語言提供結構化資料類型(即資料結構)來儲存這些成系列的值,例如,數組。絕大多數程式設計語言確實都提供一種機制用於建立能夠儲存不同類型元素的結構,例如,C++中的結構和類、Java中的類、Fortran中的結構以及Pascal中的記錄。而在C++中,主要學習如何設計和建立這些類型(被稱為抽象資料類型ADT)以及如何使用C++中提供的資料類型來實現它們。
在設計過程中,除了對象的資料成員,還必須考慮在這些資料上的操作,必須開發一種操作序列,稱為一個演算法,來產生這個結果。
演算法:可以被電腦執行的一個過程(無二義性、簡單性、演算法最終必須終止),演算法通常採用虛擬碼來編寫。
對於良構的演算法,常採用下面3種基本控制語句,即順序、選擇、迴圈。只使用這三種控制結構的演算法被稱為結構化演算法(可讀性、可理解性)。
6、編程的三大法則:
程式和子程式必須具有良好的結構;
所有原始碼應該有對應的文檔;
原始碼應該是美觀的。
7、通用建模語言(Unified Modeling Language,UML):
UML是一種在物件導向設計中使用的可視化建模語言。
原則:類的名字位於最頂層的部分,資料成員位於第二部分,函數成員位於第三部分。
演算法在電腦中的作用1、什麼是演算法?
演算法(algorithm)就是任何良已定義流程,該過程取某個值或值的集合作為輸入併產生某個值或值的集合作為輸出。這樣演算法就是把輸入轉換成輸出的計算步驟的一個序列。
2、演算法問題所共有的兩個特徵:
(1)、存在很多候選解,但絕大多數候選解都沒有解決手頭的問題。尋找一個真正的解或一個最好的解可能是很大的挑戰。
(2)、存在實際應用。
3、什麼是資料結構?
資料結構是一種儲存和組織資料的方式,旨在便於訪問和修改。沒有一種單一的資料結構對所有用途均有效,所以重要的是知道幾種資料結構的優勢和局限。
4、資料結構的類型及其它們各自的優勢與局限????
答:未完待續。。。。
軟體開發與演算法在電腦中的應用