【文章內(nèi)容簡介】
major malfunctions. The elimination of such errors is one of the goals of software engineering. The fact that they are still prevalent means that a lot of research remains to be done. 不幸的是,成功地進行系統(tǒng)的測試和調(diào)試是極其困難的。經(jīng)驗表明,大型的軟件系統(tǒng)可能包含眾多的錯誤,甚至是經(jīng)過關鍵測試之后。許多這樣的錯誤在軟件的生命期中一直潛伏著,但是也有一些會導致關鍵性的錯誤。減少這樣的錯誤是軟件工程的一個目標。這些錯誤的普遍存在說明了在這方面還有許多的研究工作要做。 Chapter 6 Software Engineering 計算機專業(yè)英語 621 The Cycle as a Whole Recent Trends Early approaches to software engineering insisted on performing analysis, design, implementation, and testing in a strictly sequential manner. The feeling was that too much was at risk during the development of a large software system to allow for trialanderror techniques. 軟件工程的早期方法堅持要嚴格地遵守分析、設計、實現(xiàn)以及測試的順序。在大型軟件系統(tǒng)的開發(fā)過程中,感覺到采用試錯法是在冒著很大的風險進行開發(fā)的。 Chapter 6 Software Engineering 計算機專業(yè)英語 622 The Cycle as a Whole Recent Trends As a result, software engineers insisted that the entire analysis of the system be pleted before beginning the design and, likewise, that the design be pleted before beginning implementation. The result was a development process now referred to as the waterfall model, an analogy to the fact that the development process was allowed to flow in only one direction. 因此,軟件工程師堅持應當在設計之前進行完整的系統(tǒng)分析,同樣,設計應該在實現(xiàn)之前完成。這就形成了一個現(xiàn)在稱為瀑布模型的開發(fā)過程,這是對開發(fā)過程只允許以一個方向進行的事實的模擬。 Chapter 6 Software Engineering 計算機專業(yè)英語 623 The Cycle as a Whole Recent Trends You will notice a similarity between the four problemsolving phases identified by Polya and the analysis, design, implementation, and testing phases of software development. After all, to develop a large software system is to solve a problem. 你將注意到由 Polya提出的解決問題的 4個階段與軟件開發(fā)的分析、設計、實現(xiàn)和測試階段的類似性。畢竟,開發(fā)一個大型的軟件系統(tǒng)是去解決一個問題。 Chapter 6 Software Engineering 計算機專業(yè)英語 624 The Cycle as a Whole Recent Trends On the other hand, the traditional waterfall approach to software development is in stark contrast to the freewheeling , trialandcreative problem solving. Whereas the waterfall approach seeks to establish a highly structured environment in which development progresses in a sequential fashion, creative problem solving seeks a nonstructured environment in which one can drop previous plans of attack to pursue sparks of intuition without explaining why. 另一方面,傳統(tǒng)軟件開發(fā)的瀑布模型法與隨心所欲的反復試驗并創(chuàng)造性地解決問題的方法是完全相反的。瀑布模型法尋求建立一個高度結(jié)構化的環(huán)境,希望在這個環(huán)境中的開發(fā)可以順利地進行,而創(chuàng)造性的問題解決要尋找一個非結(jié)構化的環(huán)境,希望在這個環(huán)境中可以拋棄先前的計劃,來追逐思維的火花,而不用解釋為什么。 Chapter 6 Software Engineering 計算機專業(yè)英語 625 The Cycle as a Whole Recent Trends In recent years, software engineering techniques have begun to reflect this underlying contradiction as illustrated by the emergence of the incremental model for software development. Following this model, the desired software system is constructed in incrementsthe first being a simplified version of the final product with limited functionality. 近年來,軟件工程技術已經(jīng)開始反映這種本質(zhì)的對立了,這可以由軟件開發(fā)中出現(xiàn)的增量式模型來說明。根據(jù)這個模型,所需的軟件系統(tǒng)是通過增量模式來構造的 ——首先開發(fā)最終產(chǎn)品的簡化版本,它只有有限的功能。 Chapter 6 Software Engineering 計算機專業(yè)英語 626 The Cycle as a Whole Recent Trends Once this version has been tested and perhaps evaluated by the future user, more features are added and tested in an incremental manner until the system is plete. For example, if the system being developed is a student records system for a university register, the first increment may incorporate only the ability to view student records. Once that version is operational, additional features, such as the ability to add and update records, would be added in a stepwise manner. 一旦這個版本經(jīng)過測試、并且也許經(jīng)過了未來用戶的評估,更多的特性就可以添加進去并且進行測試,這樣就以一種增量的方式進行,直到完成系統(tǒng)。例如,如果正在開發(fā)的系統(tǒng)是為大學登記員設計的學生記錄系統(tǒng),第一次迭代版本僅僅包括瀏覽學生記錄的功能。一旦這個版本可以運行了,其他特性,諸如增加和更新記錄的功能,就可以分階段地添加到系統(tǒng)中了。 Chapter 6 Software Engineering 計算機專業(yè)英語 627 The Cycle as a Whole Recent Trends The incremental model is evidence of the trend in software development toward prototyping in which inplete versions of the proposed system, called prototypes, are built and evaluated. In the case of the incremental model these prototypes evolve into the plete, final systema process known as evolutionary prototyping. In other cases, the prototypes may be discarded in favor of a fresh implementation of the final design. This approach is known as throwaway prototyping. 這種增量式模型是軟件開發(fā)向原型法發(fā)展趨勢的一個證據(jù) ——在這種方法中,建立并測試的是不完善系統(tǒng),它也被稱為原型 ,被評估和測試。在增量式模型中,這些原型進化為一個完整的最終系統(tǒng) ——這個過程稱為演化式原型。對于其他情況,原型的拋棄會有利于新的最終設計的實現(xiàn),這種方法就是拋棄原型。 Chapter 6 Software Engineering 計算機專業(yè)英語 628 The Cycle as a Whole Recent Trends An example that normally falls within this throwaway category is rapid prototyping in which a simple example of the proposed system is quickly constructed in the early stages of development. Such a prototype may consist of only a few screen images that give an indication of how the system will interact with the user and what capabilities it will have. 一個拋棄原型的例子就是快速原型法,在這個方法中,系統(tǒng)的簡單版本在開發(fā)的早期就被很快搭建起來。這樣的原型也許僅僅包含少量界面圖片來展示系統(tǒng)怎樣與用戶交互以及它將具有的功能。 Chapter 6 Software Engineering 計算機專業(yè)英語 629 The Cycle as a Whole Recent Trends The goal is not to produce a working version of the product but to obtain a demonstration tool that can be used to clarify munication between the parties involved. For example, rapid prototypes have proved advantageous in ironing out system requirements during the analysis stage or as aids during sales presentations to potential clients. 我們的目標不是制作產(chǎn)品的有效版本,而是獲得一個示范工具,以便闡明有關方面之間的溝通。例如,在分析階段解決系統(tǒng)的需求問題,或在銷售階段作為向潛在客戶演示的輔助 , 快速原型具有很大的優(yōu)勢 Chapter 6 Software Engineering 計算機專業(yè)英語 630 The Cycle as a Whole Recent Trends Another development in software engineering has been the application of puter technology to the software development process itself, resulting in what is called puteraided software engineering