雖然本書以Java為示例來講述全書內容,但其內容卻適合于使用各種編程語言的軟件開發(fā)工作。本書是一本深入介紹軟件開發(fā)的所有方面的書籍。作者討論了諸如問題描述、模塊化、編程美學、逐步完善、測試、驗證和文檔說明等軟件工程的實施過程。除了這些專題之外,軟件開發(fā)人員還需要理解性能分析和測試方法,并在數據結構和算法之間作出選擇,本書也討論了這些專題。作者使用Java來講授軟件開發(fā)并提供了許多示例。本書適合作為有關軟件開發(fā)、計算機科學導論和高級編程等課程的教科書。對于有經驗的程序員來說,本書也是有價值的參考讀物,而且是軟件開發(fā)人員手頭必備的書籍。譯者序本書所講述的有關軟件開發(fā)的諸多問題,并不只是在Java語言中才存在,而是對所有編程語言的軟件開發(fā)項目都同等適用。原書作者已經指出了這一點。原書作者說,本書不過是原來的《Pascal軟件開發(fā)》的Java版而已,這一點務必請有意選擇本書的讀者注意。我們這個翻譯小組雖然翻譯過許多軟件開發(fā)方面的書,但還是第一次接觸軟件開發(fā)理論,這使本書的翻譯增加了難度,但同時也是對我們的挑戰(zhàn)。善于啃硬骨頭是我們這個翻譯小組的長處。翻譯本書既鍛練了我們的"牙齒"也提高了我們的知識水平,真可謂一舉兩得。我們這個翻譯小組由掌握不同專業(yè)知識的人員組成,此時這種組成就發(fā)揮了優(yōu)越性。其中教數學課的老師成了我們的咨詢人員,這使得我們對本書中大量數學內容的翻譯能夠做到盡量準確、符合專業(yè)要求。盡管如此,我們畢竟是第一次接觸這樣的內容,錯誤與不當之處在所難免,還望廣大讀者批評指正。參加本書翻譯工作的有杜大鵬、岳麗君、李善茂和龔小平等人。其中,杜大鵬翻譯了前言和第1章~第5章,岳麗君翻譯了第6章~第8章,李善茂翻譯了第9章一第11章,龔小平翻譯了第12章~第14章和附錄。全書由杜國梁審校并統(tǒng)稿。參加本書錄入、打印、校對等工作的有管英強、傅燁、魏天超、梁國珍、任建暢、馬相生、劉發(fā)來、董明、遲春和楊天華等。在此對他們?yōu)楸緯龀龅呢暙I表示感謝。前言本書實際上是((Pascal軟件開發(fā)》(SoftwareDevelopmentinPascal,作者SartaiSahni,由地處佛羅里達州Gainesville的Camelot出版公司出版)一書的Java版本。我們的目的是提供介紹軟件開發(fā)任務的各個方面的導言性的書籍。本書的內容或許是軟件開發(fā)過程中遇到的困難的某種寫照。本書中講述的論題代表了我們要定義軟件工程的意圖。這些論題包括傳統(tǒng)軟件工程專題,如問題描述、操作界面設計、模塊化、編程藝術、逐步完善、測試和編制文檔等。除此之外,還包括了有關程序確認、性能分析和測試、數據結構和算法等方面。我們的看法是,后面這些論題對于軟件開發(fā)來說與前面的論題是同等重要的。這本教科書的內容可用于當前本科生所學的許多課程中。為了獲得對軟件開發(fā)的各個方面的較好的感受,完整地講授本書是必要的。介紹性的軟件工程課程可以以本書的第1章~第9章為基礎。介紹性的數據結構和算法課程可以以本書的第1章~第14章為基礎。編程的第二門課程(通常稱為高級編程)可以使用本書第1章一第7章以及第9章~第12章的內容。如要全面講述本書的內容,我們建議利用連續(xù)兩個學期的時間學習。