面向?qū)ο蠓椒▽W(xué)_第1頁
面向?qū)ο蠓椒▽W(xué)_第2頁
面向?qū)ο蠓椒▽W(xué)_第3頁
面向?qū)ο蠓椒▽W(xué)_第4頁
面向?qū)ο蠓椒▽W(xué)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

面向?qū)ο蠓椒▽W(xué)第一頁,共七十頁,2022年,8月28日討論軟件?軟件危機(jī)?軟件工程?你開發(fā)軟件采用的方法?第二頁,共七十頁,2022年,8月28日軟件危機(jī)軟件定義:一個(gè)軟件必須由一個(gè)完整的配置組成。

軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。第三頁,共七十頁,2022年,8月28日軟件開發(fā)的高成本與低質(zhì)量的矛盾稱為軟件危機(jī)。軟件危機(jī)第四頁,共七十頁,2022年,8月28日

軟件開發(fā)和維護(hù)過程中遇到一系列嚴(yán)重的問題(1)對軟件開發(fā)成本和進(jìn)度估計(jì)不準(zhǔn)確。

經(jīng)費(fèi)預(yù)算經(jīng)常突破,完成時(shí)間一再拖延。(2)開發(fā)的軟件不能滿足用戶要求。

開發(fā)初期對用戶的要求了解不夠明確,未能得到明確表達(dá)。開發(fā)工作開始后,軟件人員和用戶又未能及時(shí)交換意見,使得一些問題不能及時(shí)解決,導(dǎo)致開發(fā)的軟件不能滿足用戶的要求,使開發(fā)失敗。(3)軟件產(chǎn)品質(zhì)量靠不住。(4)

軟件可維護(hù)性差。

開發(fā)過程沒有統(tǒng)一的、公認(rèn)的規(guī)范,軟件開發(fā)人員按各自的風(fēng)格工作,各行其事。開發(fā)過程無完整、規(guī)范的文檔,發(fā)現(xiàn)問題后進(jìn)行雜亂無章的修改。程序結(jié)構(gòu)不好,運(yùn)行時(shí)發(fā)現(xiàn)錯(cuò)誤也很難修改,導(dǎo)致維護(hù)性差。第五頁,共七十頁,2022年,8月28日(5)開發(fā)的軟件可靠性差。由于在開發(fā)過程中,沒有確保軟件質(zhì)量的體系和措施,在軟件測試時(shí),又沒有嚴(yán)格的、充分的、完全的測試,提交給用戶的軟件質(zhì)量差,在運(yùn)行中暴露出大量的問題。這種不可靠的軟件,輕者會影響系統(tǒng)正常工作,重者會發(fā)生事故,造成生命財(cái)產(chǎn)的重大損失。(6)軟件沒有適當(dāng)?shù)奈臋n材料(7)傳統(tǒng)的軟件開發(fā)速度遠(yuǎn)遠(yuǎn)跟不上應(yīng)用速度。

第六頁,共七十頁,2022年,8月28日與軟件本身的特點(diǎn)有關(guān)和軟件開發(fā)與維護(hù)的方法不正確有關(guān)。

產(chǎn)生軟件危機(jī)的原因第七頁,共七十頁,2022年,8月28日缺乏“可見性”管理和控制軟件開發(fā)過程相當(dāng)困難軟件較難維護(hù)。規(guī)模龐大為了在預(yù)定時(shí)間內(nèi)開發(fā)出規(guī)模龐大的軟件,必須由許多人分工合作,然而,如何保證每個(gè)人完成的工作合在一起確實(shí)能構(gòu)成一個(gè)高質(zhì)量的大型軟件系統(tǒng),不僅涉及許多技術(shù)問題,更重要的是必須有嚴(yán)格而科學(xué)的管理。(1)與軟件本身的特點(diǎn)有關(guān)第八頁,共七十頁,2022年,8月28日忽視軟件需求分析的重要性

(2)與軟件開發(fā)與維護(hù)的方法不正確有關(guān)輕視維護(hù)軟件已經(jīng)完成之后進(jìn)行的維護(hù)是極端艱巨復(fù)雜的工作,需要花費(fèi)很大代價(jià)。統(tǒng)計(jì)數(shù)據(jù)表明,實(shí)際上用于軟件維護(hù)的費(fèi)用占軟件總費(fèi)用的55%~70%。

作好軟件定義時(shí)期的工作,是降低軟件成本提高軟件質(zhì)量的關(guān)鍵。第九頁,共七十頁,2022年,8月28日

克服軟件危機(jī)的途徑用現(xiàn)代工程的概念、原理、技術(shù)和方法進(jìn)行軟件開發(fā)、管理和維護(hù)。組織管理措施軟件開發(fā)不是某種個(gè)體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目。技術(shù)措施(方法和工具)在軟件開發(fā)的每個(gè)階段都有許多繁瑣重復(fù)的工作需要做,在適當(dāng)?shù)能浖ぞ咻o助下,開發(fā)人員可以把這類工作做得既快又好。第十頁,共七十頁,2022年,8月28日《系統(tǒng)工程》

系統(tǒng)建模第十一頁,共七十頁,2022年,8月28日

系統(tǒng)模型的定義系統(tǒng)模型是一個(gè)系統(tǒng)某一方面本質(zhì)屬性的描述,它以某種確定的形式(例如文字、符號、圖表、實(shí)物、數(shù)學(xué)公式等)提供關(guān)于該系統(tǒng)的知識。系統(tǒng)模型一般不是系統(tǒng)對象本身,而是現(xiàn)實(shí)系統(tǒng)的描述、模仿或抽象。系統(tǒng)是復(fù)雜的,系統(tǒng)的屬性也是多方面的。對于大多數(shù)研究目的而言,沒有必要考慮系統(tǒng)的全部屬性,因此,系統(tǒng)模型只是系統(tǒng)某一方面本質(zhì)屬性的描述,本質(zhì)屬性的選取完全取決系統(tǒng)工程研究的目的第十二頁,共七十頁,2022年,8月28日根據(jù)不同的研究目的,同一個(gè)系統(tǒng)可以建立不同的系統(tǒng)模型。例如,城市經(jīng)濟(jì)模型,可以用一、二、三產(chǎn)業(yè)表示,也可以用各個(gè)行政管理部門來表示。同一種模型可以代表多個(gè)系統(tǒng)。例如,y=kx(k是為常量),幾何上:代表一條通過原點(diǎn)的直線;代數(shù)上:表示比例關(guān)系;設(shè)k=π,x代表直徑,則y表示圓周長;設(shè)k表示彈簧剛度,x表示伸長量,則y表示彈簧力大小;當(dāng)k=a表示加速度,x=m表示質(zhì)量,則y表示物體所受外力大小等等。第十三頁,共七十頁,2022年,8月28日

系統(tǒng)模型與原型系統(tǒng)模型反映實(shí)際系統(tǒng)的主要特征,但它又高于實(shí)際系統(tǒng)而具有同類問題的共性。因此一個(gè)適用的系統(tǒng)模型應(yīng)該具有如下三個(gè)特征:(1)它是現(xiàn)實(shí)系統(tǒng)的抽象或模仿;(2)它是由反映系統(tǒng)本質(zhì)或特征的主要因素構(gòu)成的;(3)它集中體現(xiàn)了這些主要因素之間的關(guān)系。第十四頁,共七十頁,2022年,8月28日

系統(tǒng)模型與原型給對象實(shí)體以必要的簡化,用適當(dāng)?shù)谋憩F(xiàn)形式或規(guī)則把它的主要特征描繪出來,這樣得到的模仿品稱為模型,對象實(shí)體稱為原型。模型也有結(jié)構(gòu),模型結(jié)構(gòu)與原型結(jié)構(gòu)是不同的兩碼事,但兩者又有直接或間接的聯(lián)系。原型中必須考慮的結(jié)構(gòu)問題都應(yīng)在模型中有所反映,能以模型的語言描述出來。第十五頁,共七十頁,2022年,8月28日

系統(tǒng)模型與原型數(shù)學(xué)模型是抽象模型,不能要求它直接反映系統(tǒng)原型的結(jié)構(gòu),但必定與原型結(jié)構(gòu)有內(nèi)在聯(lián)系,原型中的結(jié)構(gòu)問題在模型中用數(shù)學(xué)語言描述,能用數(shù)學(xué)方法分析和解決。例如,原型的結(jié)構(gòu)穩(wěn)定與否可以轉(zhuǎn)化為模型中數(shù)學(xué)結(jié)構(gòu)的穩(wěn)定與否。構(gòu)造模型是為了研究原型,通過模型研究能夠把握原型的主要特性。模型又是對原型的簡化,應(yīng)當(dāng)壓縮一切可以壓縮的信息力求經(jīng)濟(jì)性好,便于操作。沒有簡化不成其為模型,同原型比較未能顯著簡化的模仿品不是好模型。第十六頁,共七十頁,2022年,8月28日

系統(tǒng)模型的分類實(shí)體模型即系統(tǒng)本身,當(dāng)系統(tǒng)的大小剛好適合研究而又不存在危險(xiǎn)時(shí),就可以把系統(tǒng)本身作為模型。實(shí)體模型包括抽樣模型,例如標(biāo)準(zhǔn)件的生產(chǎn)檢驗(yàn)是從總體中抽取一定數(shù)量的樣本進(jìn)行的,樣本就是實(shí)體模型。相似模型根據(jù)相似原理,利用一種系統(tǒng)去代替另一種系統(tǒng)。例如用電路系統(tǒng)代替機(jī)械系統(tǒng)、熱力學(xué)系統(tǒng)進(jìn)行研究,則電路系統(tǒng)就是后二者的相似模型。第十七頁,共七十頁,2022年,8月28日

系統(tǒng)模型的分類比例模型是放大或縮小的系統(tǒng),使之適合于研究。文字模型如技術(shù)報(bào)告、說明書等。在物理模型和數(shù)學(xué)模型都很難建立時(shí),有時(shí)不得不用它來描述研究結(jié)果。網(wǎng)絡(luò)模型用網(wǎng)絡(luò)圖來描述系統(tǒng)的組成元素以及元素之間的相互關(guān)系(包括邏輯關(guān)系與數(shù)學(xué)關(guān)系)第十八頁,共七十頁,2022年,8月28日

系統(tǒng)模型的分類圖表模型用圖像和表格描述的模型,它們可以互相轉(zhuǎn)化,這里說的圖像是指坐標(biāo)系中的曲線、曲面和點(diǎn)等幾何圖形。邏輯模型表示邏輯關(guān)系的模型,如方框圖、程序單等。數(shù)學(xué)模型用數(shù)學(xué)方程式表示的模型。計(jì)算機(jī)模型用計(jì)算機(jī)設(shè)計(jì)語言描寫的模型。第十九頁,共七十頁,2022年,8月28日

數(shù)學(xué)模型所謂系統(tǒng)的數(shù)學(xué)模型,指的是描述元素之間、子系統(tǒng)之間、層次之間相互作用以及系統(tǒng)與環(huán)境相互作用的數(shù)學(xué)表達(dá)式。原則上講,現(xiàn)代數(shù)學(xué)所提供的一切數(shù)學(xué)表達(dá)形式,包括幾何圖形、代數(shù)結(jié)構(gòu)、拓?fù)浣Y(jié)構(gòu)、序結(jié)構(gòu)、分析表達(dá)式等,均可以作為一定系統(tǒng)的數(shù)學(xué)模型。大量的數(shù)學(xué)模型是定量分析系統(tǒng)的工具。用數(shù)學(xué)形式表示的輸出對輸入的響應(yīng)關(guān)系,就是廣泛使用的一種定量分析模型第二十頁,共七十頁,2022年,8月28日

數(shù)學(xué)模型技術(shù)科學(xué)層次的系統(tǒng)理論和系統(tǒng)工程,都主要使用數(shù)學(xué)模型作為定量分析工具,以便給出設(shè)計(jì)、操作系統(tǒng)所必須的定量結(jié)論。數(shù)學(xué)模型同樣可以作為定性描述系統(tǒng)的工具,對于描述系統(tǒng)演化現(xiàn)象來說,人們關(guān)心的主要是系統(tǒng)定性性質(zhì)的改變與否,定性分析是更基本的。定量描述系統(tǒng)的數(shù)學(xué)模型必須以正確認(rèn)識系統(tǒng)的定性性質(zhì)為前提。描述系統(tǒng)的特征量的選擇建立在建模者對系統(tǒng)行為特性的定性認(rèn)識基礎(chǔ)上。第二十一頁,共七十頁,2022年,8月28日

數(shù)學(xué)模型優(yōu)點(diǎn)定量分析的基礎(chǔ)在自然科學(xué)和工程技術(shù)領(lǐng)域里,數(shù)量不準(zhǔn)將招致質(zhì)量低劣,在社會科學(xué)領(lǐng)域里,沒有定量分析會使人心中無數(shù),造成決策失誤,引起不必要的混亂。因此,采用數(shù)學(xué)模型進(jìn)行定量分析已成為當(dāng)代自然科學(xué)和社會科學(xué)進(jìn)一步發(fā)展的共同要求。第二十二頁,共七十頁,2022年,8月28日

數(shù)學(xué)模型優(yōu)點(diǎn)系統(tǒng)預(yù)測和決策的工具

可以利用系統(tǒng)已有的數(shù)據(jù)建立預(yù)測模型,用來預(yù)測系統(tǒng)的未來狀態(tài),為正確決策提供依據(jù)。靈活性好它可變性好、適應(yīng)性強(qiáng)、分析問題速度快,省時(shí)省錢,而且便于使用計(jì)算機(jī),因此,它是所有模型中使用最廣泛的一種。我們通常所說的系統(tǒng)建模,大多數(shù)情況下都是指建立系統(tǒng)的數(shù)學(xué)模型。第二十三頁,共七十頁,2022年,8月28日

計(jì)算機(jī)模型用計(jì)算機(jī)程序定義的模型。首先明確構(gòu)成系統(tǒng)的“構(gòu)件”,把它們之間的相互關(guān)聯(lián)方式提煉成若干簡單的行為規(guī)則,并以計(jì)算機(jī)程序表示出來,以便通過在計(jì)算機(jī)上的數(shù)值計(jì)算來模仿系統(tǒng)運(yùn)行演化,觀察如何通過對構(gòu)件執(zhí)行這些簡單規(guī)則而涌現(xiàn)出系統(tǒng)的整體性質(zhì),預(yù)測系統(tǒng)的未來走向。所有數(shù)學(xué)模型都可以轉(zhuǎn)化為基于計(jì)算機(jī)的模型,通過計(jì)算來研究系統(tǒng)。許多無法建立數(shù)學(xué)模型的系統(tǒng),如復(fù)雜的物理過程,特別是生物、社會和行為過程,也可能建立基于計(jì)算機(jī)的模型。第二十四頁,共七十頁,2022年,8月28日

計(jì)算機(jī)模型用數(shù)學(xué)表達(dá)式定義的傳統(tǒng)模型,求解和處理往往需用復(fù)雜艱深的理論和技巧,費(fèi)時(shí)費(fèi)力,可行性常常較差,所得結(jié)果有時(shí)無法用實(shí)驗(yàn)檢驗(yàn)。用計(jì)算機(jī)程序定義的模型,可以做到既嚴(yán)格,又可行,能夠在計(jì)算機(jī)上研究和預(yù)測系統(tǒng),通過計(jì)算實(shí)驗(yàn)來檢驗(yàn)結(jié)果。對于那些無法用真實(shí)的實(shí)驗(yàn)來檢驗(yàn)的復(fù)雜系統(tǒng),計(jì)算實(shí)驗(yàn)是唯一可用的實(shí)驗(yàn)檢驗(yàn)手段。計(jì)算實(shí)驗(yàn)是一種新興的實(shí)驗(yàn)形式,它為研究復(fù)雜巨系統(tǒng)提供了唯一普遍可用的實(shí)驗(yàn)手段。第二十五頁,共七十頁,2022年,8月28日

系統(tǒng)建模方法1系統(tǒng)模型的要求

2建模的原則第二十六頁,共七十頁,2022年,8月28日1系統(tǒng)模型的要求真實(shí)性要求建立的模型能夠很好地反映系統(tǒng)的客觀實(shí)際,應(yīng)把系統(tǒng)本質(zhì)特征和關(guān)系反映進(jìn)去,而把非本質(zhì)的東西去掉,但又不影響反映本質(zhì)的真實(shí)程度。也就是說,系統(tǒng)模型應(yīng)有足夠的精度,以保證它的真實(shí)性。精度要求不僅與研究對象有關(guān),而且與所處的時(shí)間、狀態(tài)和條件有關(guān)。因此,為滿足真實(shí)性要求,對同一對象在不同情況下可以提出不同的精度要求。第二十七頁,共七十頁,2022年,8月28日1系統(tǒng)模型的要求簡明性在滿足真實(shí)性要求的基礎(chǔ)上,應(yīng)盡量使系統(tǒng)模型簡單明了,以節(jié)約建模的費(fèi)用和時(shí)間。這也就是說,如果一個(gè)簡單的模型已能使實(shí)際問題得到滿意的解答,就沒有必要去建一個(gè)復(fù)雜的模型,因?yàn)榻ㄔ煲粋€(gè)復(fù)雜的模型并求解是要付出很高代價(jià)的,其次模型過于復(fù)雜難以滿足快速決策的需要。第二十八頁,共七十頁,2022年,8月28日1系統(tǒng)模型的要求現(xiàn)實(shí)性在建立某些系統(tǒng)的模型時(shí),如果已有某種標(biāo)準(zhǔn)化模型可供借鑒,則應(yīng)盡量采用標(biāo)準(zhǔn)化模型,或者對標(biāo)準(zhǔn)化模型加以某些修改,使之適合對象系統(tǒng),不追求另起爐灶。其次,在建立模型時(shí),要考慮數(shù)據(jù)采集的可能性和今后的發(fā)展方向,使建立的模型具有現(xiàn)實(shí)可操性和發(fā)展?jié)摿?。第二十九頁,共七十頁?022年,8月28日2建模的原則抓住主要矛盾模型只應(yīng)包括與研究目的有關(guān)的方面,而不是對象系統(tǒng)的所有方面。例如,對—個(gè)空運(yùn)指揮調(diào)度系統(tǒng)的研究,建模只需考慮飛機(jī)的飛行航向而無需考慮其飛行姿態(tài)。清晰明了一個(gè)大型復(fù)雜系統(tǒng)是由許多聯(lián)系密切的子系統(tǒng)組成的,因此對應(yīng)的系統(tǒng)模型也是由許多子模型(或模塊)組成的。在子模型與子模型之間,除了保留研究目的所必要的信息聯(lián)系外,其它的耦合關(guān)系要盡可能減少,以保證模型結(jié)構(gòu)盡可能清晰明了。第三十頁,共七十頁,2022年,8月28日2建模的原則精度要求適當(dāng)建立系統(tǒng)模型,應(yīng)該視研究目的和使用環(huán)境不同,選擇適當(dāng)?shù)木鹊燃?,以保證模型切題、實(shí)用,而又不致花費(fèi)太多。例如,一個(gè)受外力F作用下的物體M,其動力學(xué)系統(tǒng)的數(shù)學(xué)模型,在不同使用環(huán)境下有不同精度等級,應(yīng)該適當(dāng)選擇。第三十一頁,共七十頁,2022年,8月28日2建模的原則當(dāng)物體的運(yùn)動速度v足夠小時(shí),可以忽略空氣阻力的影響,其符合精度要求的數(shù)學(xué)模型為當(dāng)速度v提高到必須考慮空氣阻力的影響時(shí),則其符合精度要求的數(shù)學(xué)模型為當(dāng)物體的運(yùn)動速度接近于光速3×108m/s時(shí),按相對論原理,此時(shí)M將不是常數(shù),因此其符合精度要求的數(shù)學(xué)模型為第三十二頁,共七十頁,2022年,8月28日2建模的原則盡量使用標(biāo)準(zhǔn)模型在建立一個(gè)實(shí)際系統(tǒng)的模型時(shí),應(yīng)該首先大量調(diào)閱模型庫中的標(biāo)準(zhǔn)模型,如果其中某些可供借鑒,不妨先試用一下。如能滿足要求,就應(yīng)該使用標(biāo)準(zhǔn)模型,或者盡可能向標(biāo)準(zhǔn)模型靠攏。這樣有利于比較分析,有利于節(jié)省費(fèi)用和時(shí)間第三十三頁,共七十頁,2022年,8月28日3建模的主要方法推理法對于內(nèi)部結(jié)構(gòu)和特性已經(jīng)清楚的系統(tǒng),即所謂的“白箱”系統(tǒng)(例如大多數(shù)的工程系統(tǒng)),可以利用已知的定律和定理,經(jīng)過一定的分析和推理,得到系統(tǒng)模型。實(shí)驗(yàn)法對于那些內(nèi)部結(jié)構(gòu)和特性不清楚或不很清楚的系統(tǒng),即所謂的“黑箱”或“灰箱”系統(tǒng),如果允許進(jìn)行實(shí)驗(yàn)性觀察,則可以通過實(shí)驗(yàn)方法測量其輸入和輸出,然后按照一定的辨識方法,得到系統(tǒng)模型。第三十四頁,共七十頁,2022年,8月28日3建模的主要方法統(tǒng)計(jì)分析法對于那些屬于“黑箱”,但又不允許直接進(jìn)行實(shí)驗(yàn)觀察的系統(tǒng)(例如非工程系統(tǒng)多數(shù)屬于此類),可以采用數(shù)據(jù)收集和統(tǒng)計(jì)分析的方法來建造系統(tǒng)模型。第三十五頁,共七十頁,2022年,8月28日3建模的主要方法類似法即建造原系統(tǒng)的類似模型。有的系統(tǒng),其結(jié)構(gòu)和性質(zhì)雖然已經(jīng)清楚,但其模型的數(shù)量描述和求解卻不好辦,這時(shí)如果有另一種系統(tǒng)其結(jié)構(gòu)和性質(zhì)與之相同,因而建造出的模型也類似,但是該模型的建立及處理要簡單得多,把后一種系統(tǒng)的模型看成是原系統(tǒng)的類似模型。利用類似模型,按對應(yīng)關(guān)系就可以很方便地求得原系統(tǒng)的模型。例如很多機(jī)械系統(tǒng)、氣動力學(xué)系統(tǒng)、水力學(xué)系統(tǒng)、熱力學(xué)系統(tǒng)與電路系統(tǒng)之間某些現(xiàn)象彼此類似,特別是通過微分方程描述的動力學(xué)方程基本一致,因此可以利用成熟的電路系統(tǒng)來構(gòu)造上述系統(tǒng)的類似模型第三十六頁,共七十頁,2022年,8月28日3建模的主要方法混合法大部分系統(tǒng)模型的建造往往是上述幾種方法綜合運(yùn)用的結(jié)果真正解決系統(tǒng)建模問題還必須充分開發(fā)人的創(chuàng)造力,綜合運(yùn)用各種科學(xué)知識,針對不同的系統(tǒng)對象,或者建造新模型,或者巧妙地利用已有的模型,或者改造已有的模型,這樣才能創(chuàng)造出更加適用的系統(tǒng)模型。因此,有人把建造系統(tǒng)模型看成是一種藝術(shù),這說明建造系統(tǒng)模型確實(shí)需要充分發(fā)揮人的創(chuàng)造性,而不可能有現(xiàn)成的模式可以照搬第三十七頁,共七十頁,2022年,8月28日軟件生命周期-傳統(tǒng)方法軟件生命周期是指一個(gè)軟件項(xiàng)目被提出并著手實(shí)施開始,到該軟件報(bào)廢或停止使用為止。經(jīng)歷三個(gè)時(shí)期

.軟件定義

.軟件開發(fā)

.運(yùn)行維護(hù)(也稱為軟件維護(hù))第三十八頁,共七十頁,2022年,8月28日軟件生命周期各階段的基本任務(wù)1.問題定義2.可行性研究3.需求分析4.總體設(shè)計(jì)5.詳細(xì)設(shè)計(jì)6.編碼和單元測試7.綜合測試8.運(yùn)行與維護(hù)

軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)(也稱為軟件維護(hù))3個(gè)時(shí)期組成,每個(gè)時(shí)期又進(jìn)一步劃分成若干個(gè)階段。第三十九頁,共七十頁,2022年,8月28日1.問題定義回答:“要解決的問題是什么?”

通過調(diào)研,寫出關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的書面報(bào)告,并得到客戶的確認(rèn)。2.可行性研究回答:“對于上一個(gè)階段所確定的問題有行得通的解決辦法嗎?”

研究并論證軟件系統(tǒng)的可行性,對方案進(jìn)行選擇并形成可行性分析報(bào)告。第四十頁,共七十頁,2022年,8月28日3.需求分析這個(gè)階段的任務(wù)主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。建立邏輯模型

必須準(zhǔn)確完整地體現(xiàn)用戶的要求。數(shù)據(jù)模型(實(shí)體-聯(lián)系圖)功能模型(數(shù)據(jù)流圖)行為模型(狀態(tài)轉(zhuǎn)換圖)書寫規(guī)格說明書用正式文檔準(zhǔn)確地記錄對目標(biāo)系統(tǒng)的需求。第四十一頁,共七十頁,2022年,8月28日4.總體設(shè)計(jì)(概要設(shè)計(jì))

回答“概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”

軟件設(shè)計(jì)的一條基本原理就是,程序應(yīng)該模塊化,也就是說,一個(gè)程序應(yīng)該由若干個(gè)規(guī)模適中的模塊按合理的層次結(jié)構(gòu)組織而成。因此,總體設(shè)計(jì)的另一項(xiàng)主要任務(wù)就是設(shè)計(jì)程序的體系結(jié)構(gòu),也就是確定程序由哪些模塊組成以及模塊間的關(guān)系。建立軟件系統(tǒng)的總體結(jié)構(gòu)定義功能模塊的接口設(shè)計(jì)全局?jǐn)?shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)規(guī)定設(shè)計(jì)約束編制概要設(shè)計(jì)文檔第四十二頁,共七十頁,2022年,8月28日5.詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))

把解法具體化,回答“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?”模塊詳細(xì)設(shè)計(jì)

模塊的詳細(xì)功能、算法、數(shù)據(jù)結(jié)構(gòu)、模塊間的接口等設(shè)計(jì),擬定模塊測試方案。編制模塊的詳細(xì)規(guī)格說明

匯總模塊詳細(xì)設(shè)計(jì)的結(jié)果,形成模塊詳細(xì)規(guī)格說明書。第四十三頁,共七十頁,2022年,8月28日6.編碼和單元測試寫出正確的容易理解、容易維護(hù)的程序模塊。編碼根據(jù)模塊詳細(xì)規(guī)格說明書,把詳細(xì)設(shè)計(jì)的結(jié)果翻譯成用選定的語言書寫的程序。單元測試對模塊程序進(jìn)行測試,驗(yàn)證模塊功能及接口與詳細(xì)設(shè)計(jì)文檔的一致性,并形成單元測試報(bào)告。第四十四頁,共七十頁,2022年,8月28日7.綜合測試通過各種類型的測試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求。集成測試根據(jù)設(shè)計(jì)的軟件結(jié)構(gòu),把經(jīng)過單元測試檢驗(yàn)的模塊按某種選定的策略裝配起來,在裝配過程中對程序進(jìn)行必要的測試。驗(yàn)收測試按照規(guī)格說明書的規(guī)定,由用戶對目標(biāo)系統(tǒng)進(jìn)行驗(yàn)收?,F(xiàn)場測試或平行運(yùn)行平行運(yùn)行就是同時(shí)運(yùn)行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個(gè)系統(tǒng)的處理結(jié)果。用正式的文檔資料把測試計(jì)劃、詳細(xì)測試方案以及實(shí)際測試結(jié)果保存下來,作為軟件配置的一個(gè)組成部分。第四十五頁,共七十頁,2022年,8月28日8.軟件維護(hù)維護(hù)階段的關(guān)鍵任務(wù)是,通過各種必要的維護(hù)活動使系統(tǒng)持久地滿足用戶的需要。改正性維護(hù)診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯(cuò)誤;適應(yīng)性維護(hù)修改軟件以適應(yīng)環(huán)境的變化;完善性維護(hù)根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使它更完善;預(yù)防性維護(hù)修改軟件為將來的維護(hù)活動預(yù)先做準(zhǔn)備。每一項(xiàng)維護(hù)活動都應(yīng)該經(jīng)過提出維護(hù)要求(或報(bào)告問題),分析維護(hù)要求,提出維護(hù)方案,審批維護(hù)方案,確定維護(hù)計(jì)劃,修改軟件設(shè)計(jì),修改程序,測試程序,復(fù)查驗(yàn)收等一系列步驟。第四十六頁,共七十頁,2022年,8月28日傳統(tǒng)的生命周期方法學(xué)傳統(tǒng)方法學(xué)的本質(zhì)是在具體的軟件開發(fā)工作開始之前,通過需求分析預(yù)先定義軟件需求,然后一個(gè)階段接著一個(gè)階段有條不紊地開發(fā)用戶所要求的軟件,實(shí)現(xiàn)預(yù)先定義的軟件需求。生命周期方法學(xué)是一個(gè)巨大的進(jìn)步,對實(shí)現(xiàn)軟件開發(fā)工程化曾經(jīng)起了重要的促進(jìn)作用,部分地緩解了軟件危機(jī)。第四十七頁,共七十頁,2022年,8月28日結(jié)構(gòu)化程序設(shè)計(jì)思想的提出背景回首計(jì)算機(jī)的發(fā)展歷程,人們發(fā)現(xiàn)計(jì)算機(jī)軟件的發(fā)展速度始終滯后于計(jì)算機(jī)硬件的發(fā)展,它已經(jīng)成為制約計(jì)算機(jī)產(chǎn)業(yè)整體發(fā)展的瓶頸。究其原因可能有很多方面,但下面兩點(diǎn)不容忽視。軟件產(chǎn)業(yè)的個(gè)體化受限于程序設(shè)計(jì)語言結(jié)構(gòu)化程序設(shè)計(jì)方法學(xué)第四十八頁,共七十頁,2022年,8月28日結(jié)構(gòu)化程序設(shè)計(jì)方法自頂向下、逐步求精的開發(fā)方法模塊化的組織方式結(jié)構(gòu)化的語句結(jié)構(gòu)第四十九頁,共七十頁,2022年,8月28日自頂向下、逐步求精將編寫程序看成是一個(gè)逐步演化的過程。所謂自頂向下是指將分析問題的過程劃分成若干個(gè)層次,每一個(gè)新的層次都是上一個(gè)層次的細(xì)化,即步步深入,逐層細(xì)分。第五十頁,共七十頁,2022年,8月28日模塊化將整個(gè)系統(tǒng)分解成若干個(gè)模塊,每個(gè)模塊實(shí)現(xiàn)特定的功能,最終的系統(tǒng)將由這些模塊組裝而成。模塊之間通過接口傳遞信息,力求模塊具有良好的獨(dú)立性。第五十一頁,共七十頁,2022年,8月28日語句結(jié)構(gòu)化ABTAB順序結(jié)構(gòu)分支結(jié)構(gòu)YN第五十二頁,共七十頁,2022年,8月28日結(jié)構(gòu)化程序設(shè)計(jì)的特點(diǎn)程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法程序內(nèi)容=過程+過程調(diào)用第五十三頁,共七十頁,2022年,8月28日結(jié)構(gòu)化程序設(shè)計(jì)的基本過程軟件開發(fā)的基本過程:需求分析系統(tǒng)設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)系統(tǒng)測試系統(tǒng)維護(hù)當(dāng)結(jié)構(gòu)化思想貫穿于每個(gè)過程時(shí),其基本過程:分解和組裝第五十四頁,共七十頁,2022年,8月28日MM1M2M3M4Mn……M31M32M33分解過程組裝過程一個(gè)結(jié)構(gòu)化程序設(shè)計(jì)的例子第五十五頁,共七十頁,2022年,8月28日一個(gè)結(jié)構(gòu)化程序設(shè)計(jì)的例子第五十六頁,共七十頁,2022年,8月28日問題創(chuàng)建一個(gè)程序顯示給定日期的月歷。

既程序提示用戶輸入年和月,然后顯示該月的日歷。第五十七頁,共七十頁,2022年,8月28日思考1把問題分解為兩個(gè)子問題:讀取用戶輸入(readInput)和打印日歷(printMonth)

在這一步,我們思考的是怎樣分解子問題而不是用什么方法輸入數(shù)據(jù)和打印日歷,可以畫一個(gè)結(jié)構(gòu)圖把問題的分解表達(dá)出來。打印日歷系統(tǒng)readInput子系統(tǒng)printMonth子系統(tǒng)第五十八頁,共七十頁,2022年,8月28日思考2

要打印一個(gè)月的日歷,應(yīng)當(dāng)知道這個(gè)月的第一天是星期幾以及該月有幾天,有了這些信息就可以打印日歷的標(biāo)題和主體了。因此,打印月歷問題進(jìn)一步可以分解成四個(gè)子問題:得到第一天對應(yīng)的星期(getStartDay),求得這個(gè)月的天數(shù)(getNumOfDaysInMonth),打印標(biāo)題(printMonthTitle),打印月歷主體(printMonthBody)。打印日歷系統(tǒng)readInput子系統(tǒng)printMonth子系統(tǒng)getStartDaygetNumOfDaysInMonthprintMonthTitleprintMonthBody第五十九頁,共七十頁,2022年,8月28日思考3怎樣知道一個(gè)月的第一天是星期幾呢?有幾種方法可以求得(如使用java中的Date和Calendar類)。我們采用另外一種方法:假設(shè)知道1800年1月1日是星期三(startDay1800=3),計(jì)算1800年1月1日和該月第一天相差的總天數(shù)(totalNumOfDays),該月第一天的星期就是(totalNumOfDays+startDay1800)%7。想要計(jì)算1800年1月1日和月歷第一天之間的總天數(shù),需要求出1800年到該年的天數(shù),并求出在該年中日歷前的天數(shù)。這兩個(gè)數(shù)相加就是totalNumOfDays。為了計(jì)算這個(gè)天數(shù)還需要知道一年和一個(gè)月的天數(shù)。算法:第六十頁,共七十頁,2022年,8月28日一月、三月、五月、七月、八月、十月和十二月各31天四月、六月、九月和十一月各30天二月通常有28天,但是在閏年有29天,因此一年通常有365天,閏年366天。利用下面的條件可以判定某年是否為閏年:

if((year%400==0)||((year%4==0)&&(year%100!=0)))returntrue;elsereturnfalse。我們把判斷是否是潤年的工作也放在一個(gè)子問題中解決(isLeapYear)。把計(jì)算總天數(shù)的工作放在子問題getTotalNumOfDays中。第六十一頁,共七十頁,2022年,8月28日完整的結(jié)構(gòu)化分打印日歷系統(tǒng)readInput子系統(tǒng)printMonth子系統(tǒng)getStartDaygetNumOfDaysInMonthprintMonthTitleprintMonthBodygetTotalNumOfDaysisLeapYear第六十二頁,共七十頁,2022年,8月28日實(shí)驗(yàn):月歷系統(tǒng)主要方法實(shí)現(xiàn)打印日歷子程序staticvoidprintMonth(intyear,intmonth){//獲得該月的第一天是星期幾

intstartDay=getStartDay(year,month);//獲得該月共多少天

intnumOfDaysInMonth=getNumOfDaysInMonth(year,month);//打印月歷的表頭

printMonthTitle(year,month);//打印月歷的表體

printMonthBody(startDay,numOfDaysInMonth);}第六十三頁,共七十頁,2022年,8月28日staticintgetStartDay(intyear,intmonth){intstartDay1800=3;//先計(jì)算從1800/1/1到該月之前的總天數(shù)

longtotalNumOfDays=getTotalNumOfDays(year,month);//計(jì)算該月第一天的星期并返回該值

return(int)((totalNumOfDays+startDay1800)%7);}第六十四頁,共七十頁,2022年,8月28日計(jì)算總天數(shù)staticlonggetTotalNumOfDays(intyear,intmonth){longtotal=0;for(inti=1800;i<year;i++)//從1800到該年的前一年的每年循環(huán)

if(isLeapYear(i))total=total+366;//如果是閏年,則天數(shù)是366elsetotal=total+365;//否則是365for(inti=1;i<month;i++)//該年第1個(gè)月到該月的前一個(gè)月循環(huán)

total=total+getNumOfDaysInMonth(year,i);//計(jì)算每個(gè)月的天數(shù)并加到total中returntotal;//計(jì)算結(jié)果返回}第六十五頁,共七十頁,2022年,8月28日計(jì)算某月的天數(shù)staticintgetNumOfDaysInMonth(intyear,intmonth){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)//大月情況

return31;if(month==4||month==6||month==9||month==11)//小月情況

return30;if(month==2)//閏月情況

if(isLeapYear(year))return29;elsereturn28;return0;}第六十六頁,共七十頁,2022年,8月28日判斷是否是閏月的程序staticbooleanisLeapYear(intyear){if((year%400==0)||((year%4==0)&&(year%100!=0)))returntrue;returnfalse;}第六十七頁,共七十頁,2022年,8月28日打印月歷體的程序staticvoidprintMonthBody(intstartDay,intnumOfDaysInMonth){int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論