| 計(jì)算機(jī)軟件的發(fā)展受到應(yīng)用和硬件的推動(dòng)與制約,反之,軟件的發(fā)展也推動(dòng)了應(yīng)用和硬件的發(fā)展。軟件技術(shù)發(fā)展歷程大致可分為三個(gè)不同時(shí)期: 第一是軟件技術(shù)發(fā)展早期(20世紀(jì)50和60年代);第二是結(jié)構(gòu)化程序和對象技術(shù)發(fā)展時(shí)期(70和80年代);第三是從90年代到現(xiàn)在,軟件工程技術(shù)發(fā)展新時(shí)期。 1、軟件技術(shù)發(fā)展早期 在計(jì)算機(jī)發(fā)展早期,應(yīng)用領(lǐng)域較窄,主要是科學(xué)與工程計(jì)算,處理對象是數(shù)值數(shù)據(jù)。1956年在J.Backus領(lǐng)導(dǎo)下為IBM機(jī)器研制出第一個(gè)實(shí)用高級(jí)語言Fortran及其翻譯程序。此后,相繼又有多種高級(jí)語言問世,從而使設(shè)計(jì)和編制程序的功效大為提高。這個(gè)時(shí)期計(jì)算機(jī)軟件的巨大成就之一,就是在當(dāng)時(shí)的水平上成功地解決了兩個(gè)問題:一方面從Fortran及Algol60開始設(shè)計(jì)出了具有高級(jí)數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu)的高級(jí)程序語言,另一方面又發(fā)明了將高級(jí)語言程序翻譯成機(jī)器語言程序的自動(dòng)轉(zhuǎn)換技術(shù),即編譯技術(shù)。然而,隨著計(jì)算機(jī)應(yīng)用領(lǐng)域的逐步擴(kuò)大,除了科學(xué)計(jì)算繼續(xù)發(fā)展以外,出現(xiàn)了大量的數(shù)據(jù)處理和非數(shù)值計(jì)算問題。為了充分利用系統(tǒng)資源,出現(xiàn)了操作系統(tǒng);為了適應(yīng)大量數(shù)據(jù)處理問題的需要,開始出現(xiàn)數(shù)據(jù)庫及其管理系統(tǒng)。軟件規(guī)模與復(fù)雜性迅速增大。當(dāng)程序復(fù)雜性增加到一定程度以后,軟件研制周期難以控制,正確性難以保證,可靠性問題相當(dāng)突出。為此,人們提出用結(jié)構(gòu)化程序設(shè)計(jì)和軟件工程方法來克服這一危機(jī)。軟件技術(shù)發(fā)展進(jìn)入一個(gè)新的階段。 2、結(jié)構(gòu)化程序和對象技術(shù)發(fā)展時(shí)期 從70年代初開始,大型軟件系統(tǒng)的出現(xiàn)給軟件開發(fā)帶來了新問題。大型軟件系統(tǒng)的研制需要花費(fèi)大量的資金和人力,可是研制出來的產(chǎn)品卻是可靠性差、錯(cuò)誤多、維護(hù)和修改也很困難。一個(gè)大型操作系統(tǒng)有時(shí)需要幾千人年的工作量,而所獲得的系統(tǒng)又常常會(huì)隱藏著幾百甚至幾千個(gè)錯(cuò)誤。程序可靠性很難保證,程序設(shè)計(jì)工具的嚴(yán)重缺乏也使軟件開發(fā)陷入困境。 結(jié)構(gòu)程序設(shè)計(jì)的討論導(dǎo)致產(chǎn)生了由Pascal到Ada這一系列的結(jié)構(gòu)化語言。這些語言具有較為清晰的控制結(jié)構(gòu),與原來常見的高級(jí)程序語言相比有一定的改進(jìn),但在數(shù)據(jù)類型抽象方面仍顯不足。面向?qū)ο蠹夹g(shù)的興起是這一時(shí)期軟件技術(shù)發(fā)展的主要標(biāo)志。“面向?qū)ο蟆边@一名詞在80年代初由Smalltalk語言的設(shè)計(jì)者開始提出,而后逐漸流行起來。 面向?qū)ο蟮某绦蚪Y(jié)構(gòu)將數(shù)據(jù)及其上作用的操作一起封裝,組成抽象數(shù)據(jù)或者叫做對象。具有相同結(jié)構(gòu)屬性和操作的一組對象構(gòu)成對象類。對象系統(tǒng)就是由一組相關(guān)的對象類組成,能夠以更加自然的方式模擬外部世界現(xiàn)實(shí)系統(tǒng)的結(jié)構(gòu)和行為。對象的兩大基本特征是信息封裝和繼承。通過信息封裝,在對象數(shù)據(jù)的外圍好像構(gòu)筑了一堵“圍墻”,外部只能通過圍墻的“窗口”去觀察和操作圍墻內(nèi)的數(shù)據(jù),這就保證了在復(fù)雜的環(huán)境條件下對象數(shù)據(jù)操作的安全性和一致性。通過對象繼承可實(shí)現(xiàn)對象類代碼的可重用性和可擴(kuò)充性。可重用性使能處理父、子類之間具有相似結(jié)構(gòu)的對象共同部分,避免代碼一遍又一遍的重復(fù)。可擴(kuò)充性使能處理對象類在不同情況下的多樣性,在原有代碼的基礎(chǔ)上進(jìn)行擴(kuò)充和具體化,以求適應(yīng)不同的需要。 傳統(tǒng)的面向過程的軟件系統(tǒng)以過程為中心。過程是一種系統(tǒng)功能的實(shí)現(xiàn),而面向?qū)ο蟮能浖到y(tǒng)是以數(shù)據(jù)為中心。與系統(tǒng)功能相比,數(shù)據(jù)結(jié)構(gòu)是軟件系統(tǒng)中相對穩(wěn)定的部分。對象類及其屬性和服務(wù)的定義在時(shí)間上保持相對穩(wěn)定,還能提供一定的擴(kuò)充能力,這是十分重要的事情,這樣就可大為節(jié)省軟件生命周期內(nèi)系統(tǒng)開發(fā)和維護(hù)的開銷。就像建筑物的地基對于建筑物的壽命十分重要一樣,信息系統(tǒng)以數(shù)據(jù)對象為基礎(chǔ)構(gòu)筑,其系統(tǒng)穩(wěn)定性就會(huì)十分牢固。到20世紀(jì)80年代中期以后,軟件的蓬勃發(fā)展更來源于當(dāng)時(shí)兩大技術(shù)進(jìn)步的推動(dòng)力:一是微機(jī)工作站的普及應(yīng)用,另一是高速網(wǎng)絡(luò)的出現(xiàn)。其導(dǎo)致的直接結(jié)果是:一個(gè)大規(guī)模的應(yīng)用軟件,可以由分布在網(wǎng)絡(luò)上不同站點(diǎn)機(jī)的軟件協(xié)同工作去完成。由于軟件本身的特殊性和多樣性,在大規(guī)模軟件開發(fā)時(shí),人們幾乎總是面臨困難處境。軟件工程面臨許多新問題和新挑戰(zhàn),而進(jìn)入一個(gè)新的發(fā)展時(shí)期。 3、軟件工程技術(shù)發(fā)展新時(shí)期 自從軟件工程名詞誕生,歷經(jīng)三十余年的研究和開發(fā),人們深刻認(rèn)識(shí)到,軟件開發(fā)必須按照工程化的原理和方法來組織和實(shí)施。軟件工程技術(shù)在軟件開發(fā)方法和軟件開發(fā)工具方面,在軟件工程發(fā)展的早期,特別是20世紀(jì)70、80年代軟件蓬勃發(fā)展時(shí)期,已經(jīng)取得了非常重要的進(jìn)步。軟件工程作為一個(gè)學(xué)科方向,愈來愈受到人們的重視。但是,隨著大規(guī)模網(wǎng)絡(luò)應(yīng)用軟件的出現(xiàn)所帶來的新問題,使得軟件工程中,在如何協(xié)調(diào)合理預(yù)算、控制開發(fā)進(jìn)度和保證軟件質(zhì)量等方面,軟件人員面臨更加困難的境地。 進(jìn)入20世紀(jì)90年代,Internet和WWW技術(shù)的蓬勃發(fā)展使軟件工程進(jìn)入一個(gè)新的技術(shù)發(fā)展時(shí)期。以軟件組件復(fù)用為代表,基于組件的軟件工程技術(shù)正在使軟件開發(fā)方式發(fā)生巨大改變。早年軟件危機(jī)中提出的嚴(yán)重問題,有望從此開始找到切實(shí)可行的解決途徑。在這個(gè)時(shí)期軟件工程技術(shù)發(fā)展代表性標(biāo)志在三個(gè)方面,即: ①基于組件的軟件工程和開發(fā)方法成為主流。組件是自包含的,具有相對獨(dú)立的功能特性和具體實(shí)現(xiàn),并為應(yīng)用提供預(yù)定義好的服務(wù)接口。組件化軟件工程是通過使用可復(fù)用組件來開發(fā)、運(yùn)行和維護(hù)軟件系統(tǒng)的方法、技術(shù)和過程。 ②軟件過程管理進(jìn)入軟件工程的核心進(jìn)程和操作規(guī)范。軟件工程管理應(yīng)以軟件過程管理為中心去實(shí)施,貫穿于軟件開發(fā)過程的始終。在軟件過程管理得到保證的前提下,軟件開發(fā)進(jìn)度和產(chǎn)品質(zhì)量也就隨之得到保證。 ③網(wǎng)絡(luò)應(yīng)用軟件規(guī)模愈來愈大,復(fù)雜性愈來愈高,使得軟件體系結(jié)構(gòu)從兩層向三層或者多層結(jié)構(gòu)轉(zhuǎn)移,使應(yīng)用的基礎(chǔ)架構(gòu)和業(yè)務(wù)邏輯相分離。應(yīng)用的基礎(chǔ)架構(gòu)由提供各種中間件系統(tǒng)服務(wù)組合而成的軟件平臺(tái)來支持,軟件平臺(tái)化成為軟件工程技術(shù)發(fā)展的新趨勢。軟件平臺(tái)為各種應(yīng)用軟件提供一體化的開放平臺(tái),既可保證應(yīng)用軟件所要求基礎(chǔ)系統(tǒng)架構(gòu)的可靠性、可伸縮性和安全性的要求;又可使應(yīng)用軟件開發(fā)人員和用戶只要集中關(guān)注應(yīng)用軟件的具體業(yè)務(wù)邏輯實(shí)現(xiàn),而不必關(guān)注其底層的技術(shù)細(xì)節(jié)。當(dāng)應(yīng)用需求發(fā)生變化時(shí),只要變更軟件平臺(tái)之上的業(yè)務(wù)邏輯和相應(yīng)的組件實(shí)施就行了。 以上這些標(biāo)志象征軟件工程技術(shù)已經(jīng)發(fā)展上升到一個(gè)新階段。這個(gè)階段尚遠(yuǎn)未結(jié)束。軟件技術(shù)發(fā)展日新月異,Internet的進(jìn)步促使計(jì)算機(jī)技術(shù)和通信技術(shù)相結(jié)合,更使軟件技術(shù)發(fā)展呈五彩繽紛局面。軟件工程技術(shù)的發(fā)展也永無止境。 (本文摘自《現(xiàn)代軟件技術(shù)》) |