公共基礎(chǔ) 一.算法:解決問題的方法和步驟 基本特征:可行性,確定性,有窮性,擁有足夠的情報(有0個或多個輸入,有1個或多個輸出)。 算法的控制結(jié)構(gòu):順序,選擇,循環(huán) 算法的復(fù)雜度主要包括時間復(fù)雜度和空間復(fù)雜度。時間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量??臻g復(fù)雜度是指執(zhí)行算法所需要的內(nèi)存空間。 二.數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)主要研究和討論的三個方面: 1.數(shù)據(jù)集合中各數(shù)據(jù)之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu)。 2.在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計(jì)算機(jī)中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu)。 3.對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。 主要目的是為了提高數(shù)據(jù)處理的效率。主要包括兩方面:1.提高數(shù)據(jù)處理的速度,2.盡量節(jié)省在數(shù)據(jù)處理過程中所占用的計(jì)算機(jī)存儲空間。 數(shù)據(jù)的存儲結(jié)構(gòu)類型:順序,鏈?zhǔn)健?/span> 程序設(shè)計(jì)基礎(chǔ): 程序=算法+數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計(jì)主要經(jīng)過了結(jié)構(gòu)程序設(shè)計(jì)和面向?qū)ο蟮某绦蛟O(shè)計(jì)階段。 程序設(shè)計(jì)風(fēng)格會深刻的影響軟件的質(zhì)量和可維護(hù)性,良好的程序設(shè)計(jì)風(fēng)格可以使程序結(jié)構(gòu)清晰合理,使程序代碼便于維護(hù),因此,程序設(shè)計(jì)風(fēng)格對保證程序的質(zhì)量是很重要的。 程序文檔化應(yīng)考慮的幾點(diǎn): 1.符號的命名 2.程序注釋:注釋一般分為序言性注釋和功能性注釋。 3.視覺組織 結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語句。 程序設(shè)計(jì)語言僅僅使用順序,選擇,循環(huán)三種基本控制結(jié)構(gòu)。 遵循結(jié)構(gòu)化程序的設(shè)計(jì)原則,按結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)出的程序具有明顯的優(yōu)點(diǎn):1.程序易于理解,使用和維護(hù) 2.提高了編程工作的效率,降低了軟件開發(fā)成本。 面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn): 1.與人類習(xí)慣的思維方法一致 2.穩(wěn)定性好 3.可重用性好 4.易于開發(fā)大型軟件產(chǎn)品 5.可維護(hù)性好(體現(xiàn)在封裝性好) 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個實(shí)體,是構(gòu)成系統(tǒng)的一個基本單位,它由一組表示其靜態(tài)特征的屬性和它可執(zhí)行的一組操作組成。 通常把對象的操作也稱為方法或服務(wù)。 對象的基本特征: 1.標(biāo)識惟一性 2.分類性 3.多態(tài)性 4.封裝性 5.模塊獨(dú)立性好 類是對象的抽象,一個對象則是其對應(yīng)類的一個實(shí)例。 繼承是使用已有的類定義作為基礎(chǔ)建立新類的定義技術(shù),是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。 繼承分為單繼承與多重繼承。 多態(tài)性:對象根據(jù)所接受的信息而做出動作,同樣的信息被不同的對象接受時可導(dǎo)致完全不同的行動,該現(xiàn)象稱為多態(tài)性。 軟件工程基礎(chǔ) 計(jì)算機(jī)軟件是包括程序,數(shù)據(jù)及相關(guān)文檔的完整集合。 軟件的特點(diǎn): 1.軟件是一種邏輯實(shí)體,而不是物體實(shí)體,具有抽象性。 2.軟件的生產(chǎn)與硬件不同,他沒有明顯的制作過程。 3.軟件在運(yùn)行,使用期間不存在磨損,老化問題。 4.軟件的開發(fā),運(yùn)行對計(jì)算機(jī)系統(tǒng)具有依賴性,受計(jì)算機(jī)系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題。 5.軟件復(fù)雜性高,成本昂貴。 6.軟件開發(fā)涉及諸多的社會因素。 軟件危機(jī)主要表現(xiàn): 1.軟件需求的增長得不到滿足。 2.軟件開發(fā)成本(高)和進(jìn)度無法控制。 3.軟件質(zhì)量難以保證。 4.軟件不可維護(hù)或維護(hù)程度非常低。 5.軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。 軟件工程是應(yīng)用于計(jì)算機(jī)軟件的定義,開發(fā)和維護(hù)的一整套方法,工具,文檔,實(shí)踐標(biāo)準(zhǔn)和工序。 軟件工程包括3個要素,即方法,工具和過程。 軟件工程的核心思想是把軟件產(chǎn)品看作一種工程產(chǎn)品來處理。 軟件生命周期 通常,將軟件產(chǎn)品從提出,實(shí)現(xiàn),使用維護(hù)到停止使用退役的過程稱為軟件生命周期。一般包括可行性研究與需求分析,設(shè)計(jì),實(shí)現(xiàn),測試,交付使用以及維護(hù)等活動。 軟件生命周期分為軟件定義,軟件開發(fā)及軟件運(yùn)行維護(hù)三個階段。 主要活動階段是: 1.可行性研究與計(jì)劃制定。 2.需求分析。 3.軟件設(shè)計(jì)。 4.軟件實(shí)現(xiàn)。 5.軟件測試。 6.運(yùn)行和維護(hù)。 軟件工程的目標(biāo)是,在給定成本,進(jìn)度的前提下,開發(fā)出具有有效性,可靠性,可理解性,可維護(hù)性,可重用性,可適應(yīng)性,可移植性,可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。 軟件工程的原則: 基本原則包括抽象,信息隱蔽,模塊化,局部化,確定性,一致性,完備性和可驗(yàn)證性。 軟件開發(fā)工具的完善和發(fā)展將促進(jìn)軟件開發(fā)方法的進(jìn)步和完善,促進(jìn)軟件開發(fā)的高速度和高質(zhì)量。 軟件開發(fā)環(huán)境或稱軟件工程環(huán)境是全面支持軟件開發(fā)全過程的軟件工具集合。 軟件需求是指用戶對目標(biāo)軟件系統(tǒng)在功能,行為,性能,設(shè)計(jì)約束等方面的期望。需求分析的任務(wù)是發(fā)現(xiàn)需求,求精,建模,和定義需求的過程。 需求分析階段: 1.需求獲取。 2.需求分析。 3.編寫需求規(guī)格說明書。 4.需求評審。(驗(yàn)證需求文檔的一致性,可行性,完整性和有效性) 需求分析方法: 1.數(shù)據(jù)結(jié)構(gòu)的Jackson方法,面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法。 2.面向?qū)ο蟮姆治龇椒ā?/font> 結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖(DFD),數(shù)據(jù)字典(DD),結(jié)構(gòu)化英語,判定表和判定樹等工具。 結(jié)構(gòu)分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。 結(jié)構(gòu)流圖是描述數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,他直接支持系統(tǒng)的功能。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。 建立數(shù)據(jù)流圖的步驟: 1.由外向里 2.自頂向下 3.逐層分解 頂層數(shù)據(jù)流圖應(yīng)該包括所有相關(guān)外部實(shí)體,以及外部實(shí)體與軟件中間的數(shù)據(jù)流,其作用主要是描述軟件的作用范圍,對總體功能,輸入,輸出進(jìn)行抽象描述,并反映軟件和系統(tǒng),環(huán)境的關(guān)系。 數(shù)據(jù)流圖的構(gòu)造規(guī)則和注意事項(xiàng): 1.對加工處理建立惟一,層次性的編號,且每個加工處理通常要求既有輸入又有輸出。 2.數(shù)據(jù)存儲之間不應(yīng)該有數(shù)據(jù)流。 3.數(shù)據(jù)流圖的一致性。數(shù)據(jù)存儲(文件)應(yīng)被數(shù)據(jù)流圖中的處理讀和寫,而不是僅讀不寫或僅寫不讀。 4.父圖,子圖關(guān)系與平衡規(guī)則。相鄰兩層DFD之間具有父,子關(guān)系,子圖代表了父圖中某個加工的詳細(xì)描述,父圖表示了子圖間的接口。子圖個數(shù)不大于父圖中的處理個數(shù)。所有子圖的輸入,輸出數(shù)據(jù)流和父圖中相應(yīng)處理的輸入,輸出數(shù)據(jù)流必須一致。 數(shù)據(jù)字典是結(jié)構(gòu)化分析方法的核心。數(shù)據(jù)字典是對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確的,嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對于輸入,輸出,存儲成分和中間計(jì)算結(jié)果有共同的理解。 數(shù)據(jù)字典的作用是對DFD中出現(xiàn)的被命名的圖形元素的確切理解。 軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。 軟件需求規(guī)格書的作用: 1.便于用戶,開發(fā)人員進(jìn)行理解和交流。 2.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)。 3.作為確定測試和驗(yàn)收的依據(jù)。 軟件需求規(guī)格說明書的特點(diǎn): 1.正確性, 2.無歧義性, 3.完整性, 4.可驗(yàn)證性, 5.一致性, 6.可理解性, 7.可修改性, 8.可追蹤性。 作為設(shè)計(jì)的基礎(chǔ)和驗(yàn)證的依據(jù),軟件需求規(guī)格說明書應(yīng)該是精確而無二義性的,需求說明書越精確,則以后出現(xiàn)錯誤,混淆,反復(fù)的可能性越小。用戶能看懂需求說明書,并且發(fā)現(xiàn)和指出其中的錯誤是保證軟件系統(tǒng)質(zhì)量的關(guān)鍵,因而需求說明書必須簡明易懂,盡量少包含計(jì)算機(jī)的概念和術(shù)語,以便用戶和軟件人員雙方都能接受它。 軟件設(shè)計(jì)的基本原理: 1.抽象,2.模塊化(每個模塊可以完成一個特定的子功能,各個模塊可以按一定的方法組裝起來成為一個整體,從而實(shí)現(xiàn)整個系統(tǒng)的功能。)3.信息隱蔽,4.模塊獨(dú)立性,5.內(nèi)聚性。 詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)的任務(wù),是為軟件結(jié)構(gòu)圖中的每一個模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。 常見的過程設(shè)計(jì)工具有: 圖形工具:程序流程圖,N-S,PAD,HIPO。 表格工具:判定表。 語言工具:PDL(偽碼)。 程序流程:順序型,選擇型,先判斷重復(fù)型,后判斷重復(fù)型,多分支選擇型。 數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ) 數(shù)據(jù)是描述事物的符號記錄。臨時性數(shù)據(jù),一般存放于計(jì)算機(jī)內(nèi)存中,持久性數(shù)據(jù)。 |
|