- 面向?qū)ο蠓治雠c設(shè)計(第2版·雙色版)
- 麻志毅編著
- 2294字
- 2024-06-27 15:49:03
1.1 傳統(tǒng)軟件開發(fā)方法中存在的問題
20世紀(jì)60年代以前,軟件開發(fā)者構(gòu)造的軟件系統(tǒng)的規(guī)模大多較小,且構(gòu)造相對簡單。那時所使用的編程語言和編程環(huán)境也相對簡單,常見的編程語言有匯編語言以及隨后出現(xiàn)的一些高級編程語言(如FORTRAN和COBOL等)。當(dāng)時人們認(rèn)為軟件開發(fā)是一項強烈依賴個人技巧和技術(shù)能力的藝術(shù)性勞動,崇尚程序員的個人技能,沒有認(rèn)識到需要使用什么方法。那時產(chǎn)生的代碼,按現(xiàn)在的人們所形容的,是意大利細(xì)面條式的,那是因為代碼中含有較多的GOTO語句。
隨著軟件復(fù)雜性的增長,那種隨心所欲的做法會帶來問題,一個典型的問題是代碼難以維護(hù)。一些高級編程語言試圖解決所出現(xiàn)的問題,但這些語言并不能充分解決問題,因為軟件開發(fā)也需要方法。
隨后出現(xiàn)了多種軟件開發(fā)方法,這些開發(fā)方法都能解決一些問題,但也都有一定的局限性。下面對三種典型的開發(fā)方法進(jìn)行簡要分析,以找出其中存在的主要問題。
1. 功能分解法
早期的一種開發(fā)方法稱為功能分解法,它是以系統(tǒng)需要提供的功能為中心來開發(fā)系統(tǒng)的。它的基本思想為:首先定義頂層功能,然后把功能分解為子功能,同時定義功能之間的接口。對較大的子功能進(jìn)一步分解,直到可給出明確的定義,進(jìn)而根據(jù)功能/子功能設(shè)計數(shù)據(jù)結(jié)構(gòu)和算法。
在那時,人們都認(rèn)為功能分解法非常自然,因為它以系統(tǒng)需要提供的功能為中心來組織系統(tǒng)。此外,功能分解法也較好地運用了過程抽象原則。當(dāng)時,計算機的應(yīng)用還不是很普及,只有特定的用戶有著軟件需求,而且要求規(guī)模并不是很大。功能分解法的發(fā)明,在很大程度上解決了以前存在的問題,開發(fā)效率也有了很大的提高。特別是提出了模塊化思想,并與模塊化編程相結(jié)合,使得軟件維護(hù)更加有效。這些是功能分解法在當(dāng)時大受歡迎的主要原因。
使用這種以功能為中心的方法開發(fā)軟件系統(tǒng),一個顯著特點是開始容易深入難。因為一開始按照功能需求進(jìn)行自頂向下的功能分解是很直接的,但功能和功能接口這些系統(tǒng)成分卻不能直接地映射到問題域中的事物,這導(dǎo)致所建立的功能模型難以準(zhǔn)確而深入地描述問題域,而且也難以檢驗所建立的模型的正確性。特別是,該方法對需求變化性的適應(yīng)能力差:需求的變化必定導(dǎo)致功能模塊發(fā)生變化,一個功能模塊的變化往往引起其接口發(fā)生變化,這又致使其他模塊發(fā)生變化,最終的結(jié)果經(jīng)常是局部的變化導(dǎo)致全局性的影響。
2. 結(jié)構(gòu)化方法
結(jié)構(gòu)化方法包括結(jié)構(gòu)化需求分析、設(shè)計、編程和測試方法等。結(jié)構(gòu)化需求分析使用數(shù)據(jù)流圖、加工說明和數(shù)據(jù)字典來構(gòu)造系統(tǒng)的需求分析模型。結(jié)構(gòu)化需求分析方法比較嚴(yán)謹(jǐn),使用它可避免很多錯誤和疏漏。此外,該方法也運用了逐步求精的原則,把加工逐步細(xì)化。結(jié)構(gòu)化設(shè)計在需求分析的基礎(chǔ)上,要針對給定的問題給出軟件解決方案。結(jié)構(gòu)化設(shè)計中的總體設(shè)計部分要給出被建系統(tǒng)的模塊結(jié)構(gòu),詳細(xì)設(shè)計部分要為各模塊提供關(guān)于算法的詳細(xì)描述。
結(jié)構(gòu)化方法比功能分解法更強調(diào)對問題域的分析,但所使用的建模概念仍然不能直接地映射到問題域中的事物。需求的變化往往會引起相應(yīng)的加工和數(shù)據(jù)流的變化,進(jìn)而影響與之相關(guān)的其他加工和數(shù)據(jù)流的變化。系統(tǒng)復(fù)雜時也不能檢驗分析模型的正確性。此外,結(jié)構(gòu)化需求分析與后續(xù)的結(jié)構(gòu)化設(shè)計所采用的概念與表示法是不一致的(基于不同的概念體系),且轉(zhuǎn)換規(guī)則不嚴(yán)格、具體,僅是指導(dǎo)性的,這致使從需求分析模型過渡到設(shè)計模型較為困難。
人們用功能分解法和結(jié)構(gòu)化方法已經(jīng)開發(fā)了很多軟件系統(tǒng),但是同時由于上述原因,對系統(tǒng)的開發(fā)與維護(hù)問題也日益顯現(xiàn)出來。對于功能穩(wěn)定的應(yīng)用領(lǐng)域,如某些科學(xué)計算,上述方法是適用的。但對于眾多的領(lǐng)域而言,它們的需求是易變的,如企業(yè)管理和商業(yè)管理領(lǐng)域就是如此。因為隨著市場的變化,要對這些領(lǐng)域的管理模式不斷地進(jìn)行調(diào)整。對于較為復(fù)雜的系統(tǒng),用上述方法進(jìn)行軟件開發(fā),容易導(dǎo)致模塊的低內(nèi)聚和模塊間的高耦合,從而使得系統(tǒng)缺乏良好的靈活性和可維護(hù)性。加上當(dāng)時團(tuán)隊的開發(fā)與管理方法的不足,這些因素使得在20世紀(jì)70年代的軟件危機情況更加嚴(yán)重。為了解決軟件危機,人們對開發(fā)技術(shù)進(jìn)行了一定的改進(jìn),對編程語言也進(jìn)行了革新,如產(chǎn)生了用于軟件開發(fā)的4GL、CASE工具、原型技術(shù)和代碼生成器。這些努力取得了一定的成就,但沒有從根本上解決問題。
3. 信息建模方法
信息建模方法是在實體聯(lián)系模型(entity relationship model)的基礎(chǔ)上發(fā)展起來的。該方法以稱為實體的數(shù)據(jù)集合作為系統(tǒng)的構(gòu)造塊,即以數(shù)據(jù)結(jié)構(gòu)為中心來開發(fā)軟件。因為有相當(dāng)多的人認(rèn)為實體是穩(wěn)定的,并且實體聯(lián)系模型有相當(dāng)好的理論基礎(chǔ),所以當(dāng)時該方法為很多開發(fā)團(tuán)隊所采用。
對于數(shù)據(jù)及其關(guān)系比較復(fù)雜的系統(tǒng)來說,信息建模方法很有用。但它也存在弱點,即它僅對問題域中事物的數(shù)據(jù)方面進(jìn)行了建模,而對功能行為在模型中沒有體現(xiàn)。這也是信息建模方法常常與其他開發(fā)方法相結(jié)合使用的一個原因。
包括上述方法在內(nèi)的幾乎所有的傳統(tǒng)方法都只注重于系統(tǒng)的一個或少數(shù)幾個方面,對系統(tǒng)的其他方面建模的能力都很弱。典型地,功能分解法集中于將功能作為系統(tǒng)的構(gòu)造塊,對數(shù)據(jù)組織的功能較弱,即使是在結(jié)構(gòu)化方法中,對數(shù)據(jù)組織的支持也不是很強;在信息建模方法中的構(gòu)造塊是實體,強調(diào)對數(shù)據(jù)的組織,但在該方法中忽略了系統(tǒng)功能。此外,上述方法都沒有較強的描述系統(tǒng)的動態(tài)行為的能力。
軟件學(xué)術(shù)界和產(chǎn)業(yè)界嘗試了數(shù)十年,一直在尋找有效的開發(fā)復(fù)雜軟件系統(tǒng)的方法。經(jīng)過堅持不懈的努力,形成了面向?qū)ο蠓椒ā?/p>
面向?qū)ο蠓椒ㄊ窃趥鹘y(tǒng)方法的基礎(chǔ)上發(fā)展起來的,例如仍使用抽象和模塊化等概念。然而,面向?qū)ο蠓椒ㄅc傳統(tǒng)方法相比發(fā)生了根本性的變化,主要在于面向?qū)ο蠓椒ň哂袕亩嗑S度把所建立的模型與問題域進(jìn)行直接映射的能力,在整個開發(fā)過程中均采用一致的概念和表示法,采用諸如封裝、繼承和消息等機制使得問題域的復(fù)雜性在模型上得以控制。
- 中山大學(xué)242俄語歷年考研真題及詳解
- 穿出你的西裝風(fēng)格
- 中國人民大學(xué)商學(xué)院436資產(chǎn)評估專業(yè)基礎(chǔ)[專業(yè)碩士]歷年考研真題及詳解
- STM32嵌入式系統(tǒng)設(shè)計與應(yīng)用
- 南京財經(jīng)大學(xué)會計學(xué)院436資產(chǎn)評估專業(yè)基礎(chǔ)[專業(yè)碩士]歷年考研真題及詳解
- 材料化學(xué)專業(yè)綜合實驗
- 常耀信《美國文學(xué)簡史》(第3版)筆記和考研真題詳解
- 中國文化概論
- 2020年黑龍公務(wù)員錄用考試專用教材:數(shù)量關(guān)系【考點精講+典型題(含歷年真題)詳解】
- 統(tǒng)計質(zhì)量評價理論基礎(chǔ)
- 新編體育經(jīng)紀(jì)人教程(第三版)
- 北京交通大學(xué)語言與傳播學(xué)院211翻譯碩士英語[專業(yè)碩士]歷年考研真題及詳解
- 從問題到程序:C/C++程序設(shè)計基礎(chǔ)
- 現(xiàn)代控制理論(第2版)
- 石油工程專業(yè)英語教程