第1章 產(chǎn)品
本書的第1版在80年代初出版后不久,Business Weekly(《商業(yè)周刊》)雜志在頭版給出如下的大標(biāo)題:“軟件:新的驅(qū)動力”。編輯們當(dāng)時并沒有意識到他們的預(yù)見是多么的正確。那時,大多數(shù)人對軟件還是一無所知。大軟件公司,如微軟公司,還不存在;擁有15000平方英尺專門出售包裝好的軟件的計算機超市聞所未聞;在電視上為計算機操作系統(tǒng)做60秒鐘商業(yè)廣告的想法是可笑的;而互聯(lián)網(wǎng)僅為個別研究者和高等學(xué)校學(xué)生所知。但是,在不到20年的時間里,所有這些(甚至更多)已經(jīng)成為現(xiàn)實。
計算機軟件已經(jīng)成為一種驅(qū)動力。它是進(jìn)行商業(yè)決策的引擎;它是現(xiàn)代科學(xué)研究和工程問題解決的基礎(chǔ);它也是區(qū)分現(xiàn)代產(chǎn)品和服務(wù)的關(guān)鍵因素。它在各種類型的系統(tǒng)中應(yīng)用,如交通、醫(yī)藥、通訊、軍事、產(chǎn)業(yè)化過程、娛樂、辦公……難以窮舉。軟件在現(xiàn)代社會中的確是必不可少的。而且當(dāng)我們進(jìn)入21世紀(jì),軟件將成為從基礎(chǔ)教育到基因工程的所有各領(lǐng)域新進(jìn)展的驅(qū)動器。
所有這一切已經(jīng)改變了軟件的常見概念。計算機軟件是無所不在的,人們把軟件看作是生活中現(xiàn)實的技術(shù)。在很多情況下,人們把他們的工作、他們的舒適、他們的安全、他們的娛樂、他們的決策、甚至他們的整個生活都依賴于計算機軟件。軟件千萬可不能出錯。
本書介紹的若干技術(shù)是那些想要建造正確的計算機軟件的人們需要用到的。這些技術(shù)包括一個過程,一組方法和一系列工具,我們稱之為軟件工程。
1.1軟件的發(fā)展
今天,軟件擔(dān)任著雙重角色。它是一種產(chǎn)品,同時又是開發(fā)和運行產(chǎn)品的載體。作為一種產(chǎn)品,它表達(dá)了由計算機硬件體現(xiàn)的計算潛能。不管它是駐留在蜂窩電話中,還是操作在主機上,軟件就是一個信息轉(zhuǎn)換器——產(chǎn)生、管理、獲取、修改、顯示或轉(zhuǎn)換信息,這些信息可以很簡單,如一個單個的位(bit),或很復(fù)雜,如多媒體仿真信息。作為開發(fā)運行產(chǎn)品的載體,軟件是計算機控制(操作系統(tǒng))的基礎(chǔ)、信息通信(網(wǎng)絡(luò))的基礎(chǔ),也是創(chuàng)建和控制其他程序(軟件工具和環(huán)境)的基礎(chǔ)。
許多人相信21世紀(jì)最重要的產(chǎn)品是——信息,軟件充分體現(xiàn)了這一觀點。它處理個人數(shù)據(jù)(如個人的金融事務(wù)),使得這些數(shù)據(jù)在局部范圍中更為有用;它管理商業(yè)信息增強了商業(yè)競爭力;它提供了通往全球信息網(wǎng)絡(luò)(如Internet)的途徑;它也提供了以各種形式獲取信息的手段。
計算機軟件的角色在20世紀(jì)后半葉發(fā)生了很大的變化。硬件性能的極大提高,計算機體系結(jié)構(gòu)的不斷變化,內(nèi)存和硬盤容量的快速增加,以及大量輸入輸出設(shè)備的多種選擇,均促進(jìn)了更為成熟和更為復(fù)雜的基于計算機的軟件系統(tǒng)的出現(xiàn)。如果一個系統(tǒng)是成功的,那么這種成熟性和復(fù)雜性能夠產(chǎn)生出奇跡般的結(jié)果,但是它們也給建造這些復(fù)雜系統(tǒng)的人員帶來很多的問題。
在70年代和80年代出版的受歡迎的書對于計算機、軟件和它們對我們文化的影響等方面提供了有用的歷史的視角。Osborne[OSB79]稱之為一次“新的工業(yè)革命”。Toffler[TOF80]稱微電子的發(fā)展是人類歷的“第三次浪潮”,Naisbitt[NAI82]則預(yù)言了從工業(yè)社會向“信息社會”的轉(zhuǎn)變。Feigenbaum和McCorduck[FEI83]認(rèn)為由計算機控制的信息和知識將是20世紀(jì)中表現(xiàn)能力的焦點,Stoll[STO89]則提出由網(wǎng)絡(luò)和軟件產(chǎn)生的“電子社會”將是全球知識交換的關(guān)鍵。
進(jìn)入90年代,Toffler[TOF90]描述了“權(quán)利的轉(zhuǎn)移”,因為計算機和軟件導(dǎo)致了“知識的民主化”,因而舊的權(quán)利結(jié)構(gòu)(政府,教育,工業(yè),經(jīng)濟(jì),及軍事)將要瓦解。Yourdon[YOU92]擔(dān)心美國公司在軟件相關(guān)的業(yè)務(wù)中會失去競爭力,并預(yù)言“美國程序員的衰落和下降”。Hammer和Champy[HAM93]提出信息技術(shù)將在“公司的再工程”中起到很關(guān)鍵的作用。在90年代中期,計算機和軟件的流行產(chǎn)生了大量“新勞工運動”的書籍(例如:由James Brook和Iain Boal編輯的“抵制虛擬的生活”,以及Stephen Talbot寫的“未來不是計算”)。這些作者把計算機看成是魔鬼,強調(diào)了其合法性,而忽略了已被人們意識到的巨大的利益[LEV95]問題。
在計算機發(fā)展的早期階段,大多數(shù)人把軟件看成是不需預(yù)先計劃的事情。計算機編程很簡單,沒有什么系統(tǒng)化的方法。軟件的開發(fā)沒有任何管理,一旦計劃延遲了或成本提高了,程序員才開始手忙腳亂地彌補,而他們的努力一般情況下也會取得成功。
在通用的硬件已經(jīng)非常普遍的時候,軟件卻相反,對每一類應(yīng)用均需自行再設(shè)計,應(yīng)用范圍很有限。軟件產(chǎn)品還在嬰兒階段,大多數(shù)軟件均是由使用它們的人員或組織自己開發(fā)的,如你寫軟件,使其運行,如果它有問題,你負(fù)責(zé)改好。工作的可變性很低,管理者必須得到保證:一旦發(fā)生了錯誤你必須在那里。因為這種個人化的軟件環(huán)境,設(shè)計往往僅是人們頭腦中的一種模糊想法,而文檔就根本不存在。
在早期,我們了解了很多關(guān)于計算機系統(tǒng)的實現(xiàn),但對于計算機系統(tǒng)工程幾乎一無所知。但是公平地講,我們應(yīng)該感謝這個時期開發(fā)的許多卓越的計算機系統(tǒng),其中不少一直到今天還在使用,并繼續(xù)發(fā)揮著巨大的作用。
計算機系統(tǒng)發(fā)展的第二階段跨越了從60年代中期到70年代末期的十余年(如圖1-1)。多道程序設(shè)計、多用戶系統(tǒng)引入了人機交互的新概念。交互技術(shù)打開了計算機應(yīng)用的新世界,以及硬件和軟件配合的新層次。實時系統(tǒng)能夠從多個源收集、分析和轉(zhuǎn)換數(shù)據(jù),從而使得進(jìn)程的控制和輸出的產(chǎn)生以毫秒而不是分鐘來進(jìn)行。在線存儲的發(fā)展導(dǎo)致了第一代數(shù)據(jù)庫管理系統(tǒng)的出現(xiàn)。
本書的第1版在80年代初出版后不久,Business Weekly(《商業(yè)周刊》)雜志在頭版給出如下的大標(biāo)題:“軟件:新的驅(qū)動力”。編輯們當(dāng)時并沒有意識到他們的預(yù)見是多么的正確。那時,大多數(shù)人對軟件還是一無所知。大軟件公司,如微軟公司,還不存在;擁有15000平方英尺專門出售包裝好的軟件的計算機超市聞所未聞;在電視上為計算機操作系統(tǒng)做60秒鐘商業(yè)廣告的想法是可笑的;而互聯(lián)網(wǎng)僅為個別研究者和高等學(xué)校學(xué)生所知。但是,在不到20年的時間里,所有這些(甚至更多)已經(jīng)成為現(xiàn)實。
計算機軟件已經(jīng)成為一種驅(qū)動力。它是進(jìn)行商業(yè)決策的引擎;它是現(xiàn)代科學(xué)研究和工程問題解決的基礎(chǔ);它也是區(qū)分現(xiàn)代產(chǎn)品和服務(wù)的關(guān)鍵因素。它在各種類型的系統(tǒng)中應(yīng)用,如交通、醫(yī)藥、通訊、軍事、產(chǎn)業(yè)化過程、娛樂、辦公……難以窮舉。軟件在現(xiàn)代社會中的確是必不可少的。而且當(dāng)我們進(jìn)入21世紀(jì),軟件將成為從基礎(chǔ)教育到基因工程的所有各領(lǐng)域新進(jìn)展的驅(qū)動器。
所有這一切已經(jīng)改變了軟件的常見概念。計算機軟件是無所不在的,人們把軟件看作是生活中現(xiàn)實的技術(shù)。在很多情況下,人們把他們的工作、他們的舒適、他們的安全、他們的娛樂、他們的決策、甚至他們的整個生活都依賴于計算機軟件。軟件千萬可不能出錯。
本書介紹的若干技術(shù)是那些想要建造正確的計算機軟件的人們需要用到的。這些技術(shù)包括一個過程,一組方法和一系列工具,我們稱之為軟件工程。
1.1軟件的發(fā)展
今天,軟件擔(dān)任著雙重角色。它是一種產(chǎn)品,同時又是開發(fā)和運行產(chǎn)品的載體。作為一種產(chǎn)品,它表達(dá)了由計算機硬件體現(xiàn)的計算潛能。不管它是駐留在蜂窩電話中,還是操作在主機上,軟件就是一個信息轉(zhuǎn)換器——產(chǎn)生、管理、獲取、修改、顯示或轉(zhuǎn)換信息,這些信息可以很簡單,如一個單個的位(bit),或很復(fù)雜,如多媒體仿真信息。作為開發(fā)運行產(chǎn)品的載體,軟件是計算機控制(操作系統(tǒng))的基礎(chǔ)、信息通信(網(wǎng)絡(luò))的基礎(chǔ),也是創(chuàng)建和控制其他程序(軟件工具和環(huán)境)的基礎(chǔ)。
許多人相信21世紀(jì)最重要的產(chǎn)品是——信息,軟件充分體現(xiàn)了這一觀點。它處理個人數(shù)據(jù)(如個人的金融事務(wù)),使得這些數(shù)據(jù)在局部范圍中更為有用;它管理商業(yè)信息增強了商業(yè)競爭力;它提供了通往全球信息網(wǎng)絡(luò)(如Internet)的途徑;它也提供了以各種形式獲取信息的手段。
計算機軟件的角色在20世紀(jì)后半葉發(fā)生了很大的變化。硬件性能的極大提高,計算機體系結(jié)構(gòu)的不斷變化,內(nèi)存和硬盤容量的快速增加,以及大量輸入輸出設(shè)備的多種選擇,均促進(jìn)了更為成熟和更為復(fù)雜的基于計算機的軟件系統(tǒng)的出現(xiàn)。如果一個系統(tǒng)是成功的,那么這種成熟性和復(fù)雜性能夠產(chǎn)生出奇跡般的結(jié)果,但是它們也給建造這些復(fù)雜系統(tǒng)的人員帶來很多的問題。
在70年代和80年代出版的受歡迎的書對于計算機、軟件和它們對我們文化的影響等方面提供了有用的歷史的視角。Osborne[OSB79]稱之為一次“新的工業(yè)革命”。Toffler[TOF80]稱微電子的發(fā)展是人類歷的“第三次浪潮”,Naisbitt[NAI82]則預(yù)言了從工業(yè)社會向“信息社會”的轉(zhuǎn)變。Feigenbaum和McCorduck[FEI83]認(rèn)為由計算機控制的信息和知識將是20世紀(jì)中表現(xiàn)能力的焦點,Stoll[STO89]則提出由網(wǎng)絡(luò)和軟件產(chǎn)生的“電子社會”將是全球知識交換的關(guān)鍵。
進(jìn)入90年代,Toffler[TOF90]描述了“權(quán)利的轉(zhuǎn)移”,因為計算機和軟件導(dǎo)致了“知識的民主化”,因而舊的權(quán)利結(jié)構(gòu)(政府,教育,工業(yè),經(jīng)濟(jì),及軍事)將要瓦解。Yourdon[YOU92]擔(dān)心美國公司在軟件相關(guān)的業(yè)務(wù)中會失去競爭力,并預(yù)言“美國程序員的衰落和下降”。Hammer和Champy[HAM93]提出信息技術(shù)將在“公司的再工程”中起到很關(guān)鍵的作用。在90年代中期,計算機和軟件的流行產(chǎn)生了大量“新勞工運動”的書籍(例如:由James Brook和Iain Boal編輯的“抵制虛擬的生活”,以及Stephen Talbot寫的“未來不是計算”)。這些作者把計算機看成是魔鬼,強調(diào)了其合法性,而忽略了已被人們意識到的巨大的利益[LEV95]問題。
在計算機發(fā)展的早期階段,大多數(shù)人把軟件看成是不需預(yù)先計劃的事情。計算機編程很簡單,沒有什么系統(tǒng)化的方法。軟件的開發(fā)沒有任何管理,一旦計劃延遲了或成本提高了,程序員才開始手忙腳亂地彌補,而他們的努力一般情況下也會取得成功。
在通用的硬件已經(jīng)非常普遍的時候,軟件卻相反,對每一類應(yīng)用均需自行再設(shè)計,應(yīng)用范圍很有限。軟件產(chǎn)品還在嬰兒階段,大多數(shù)軟件均是由使用它們的人員或組織自己開發(fā)的,如你寫軟件,使其運行,如果它有問題,你負(fù)責(zé)改好。工作的可變性很低,管理者必須得到保證:一旦發(fā)生了錯誤你必須在那里。因為這種個人化的軟件環(huán)境,設(shè)計往往僅是人們頭腦中的一種模糊想法,而文檔就根本不存在。
在早期,我們了解了很多關(guān)于計算機系統(tǒng)的實現(xiàn),但對于計算機系統(tǒng)工程幾乎一無所知。但是公平地講,我們應(yīng)該感謝這個時期開發(fā)的許多卓越的計算機系統(tǒng),其中不少一直到今天還在使用,并繼續(xù)發(fā)揮著巨大的作用。
計算機系統(tǒng)發(fā)展的第二階段跨越了從60年代中期到70年代末期的十余年(如圖1-1)。多道程序設(shè)計、多用戶系統(tǒng)引入了人機交互的新概念。交互技術(shù)打開了計算機應(yīng)用的新世界,以及硬件和軟件配合的新層次。實時系統(tǒng)能夠從多個源收集、分析和轉(zhuǎn)換數(shù)據(jù),從而使得進(jìn)程的控制和輸出的產(chǎn)生以毫秒而不是分鐘來進(jìn)行。在線存儲的發(fā)展導(dǎo)致了第一代數(shù)據(jù)庫管理系統(tǒng)的出現(xiàn)。