【正文】
計劃任務(wù)執(zhí)行時,出現(xiàn)的意外情況 .銜接任務(wù)在軟件發(fā)展方面的工作包 括采取人們的行動,就是凡涉及 他們的住所,或一個軟件系統(tǒng)的異常行為,或與可以影響系統(tǒng)改變的人的協(xié)商 .這種銜接工作的概念也被稱為軟件處理的推動力 . 2 傳統(tǒng)軟件生命周期模型 傳統(tǒng)的軟件演化模型對于我們來說已經(jīng)很熟悉,因為早期的軟件開發(fā)就應(yīng)用了這些 .經(jīng)典的軟件生命周期(或 “瀑布圖 ”)一 同逐步求精的模型在當(dāng)前現(xiàn)代編程方法和軟件工程中被廣泛采用 .增量釋放模型和 工業(yè)實踐密切相關(guān) .基于模型的規(guī)范標(biāo)準(zhǔn)將經(jīng)典的生命周期模型具體化到 為政府的 承建商的軟件開發(fā) .這四種模式分別使用粗粒度或宏觀特征來 描述軟件的開發(fā) .軟件開發(fā)的漸進過 程經(jīng)常被描述為需求分析,設(shè)計,實施,這些通常很少或沒有進一步的表征每一階段都 應(yīng)具備 .此外,這些模型是獨立于任何組織的開發(fā)環(huán)境、編程語言的選擇、軟件應(yīng)用領(lǐng)域等 .傳統(tǒng)的模型是上下文無關(guān)的,而不是和上下文都有聯(lián)系的 .但由于這些生命周期的所有模型在使用了一段時間,我們統(tǒng)稱他們?yōu)閭鹘y(tǒng)的模式,刻畫每個轉(zhuǎn)折 . 經(jīng)典的軟件生命周期模型 經(jīng)典的軟件生命周期通常表示為一個簡單的規(guī)范瀑布軟件階段模型,即從一個階段有序的過渡到下一個階段 .這種模式類似于 描述軟件開發(fā)的 有窮狀態(tài)機 .但是,這些模型對于在復(fù)雜的組織環(huán)境下架構(gòu),分 配人員和管理大型的軟件開發(fā)項目中已經(jīng)也許是最有用的了,這就是它的主要目的所在 . 另外,這些經(jīng)典模型已被廣泛用來描述如何開發(fā)小型或者大型的軟件項目 . 逐步細化 在這種方法中,軟件系統(tǒng)的開發(fā)是通過逐步完善和由 高層次的系統(tǒng)規(guī)格說明書升級到源代碼組件 實現(xiàn)的 .不過,至于選擇那一個步驟以及運用哪一種升級辦法,這些仍然沒有言明 .相反,在越來越多的工程實踐中,隨著不斷地反思和學(xué)習(xí)并應(yīng)用這些方法,規(guī)范必定會出現(xiàn) .在 指導(dǎo)程序員如何組織 軟件開發(fā)工作的過程中,這一模式已被廣泛有效深入的應(yīng)用 .經(jīng)典的軟件生命周期的許多說法也 在他們的設(shè)計和實現(xiàn)過程中得到闡釋 . 5 替代傳統(tǒng)的軟件生命周期模型 至少有三種可供選擇的軟件開發(fā)模型, 這些模型都是 傳統(tǒng)的軟件生命周期模型 .它們關(guān)注的重點在于 產(chǎn)品,開發(fā)過程,軟件的開發(fā)環(huán)境 .總的來說,這些模型是細粒度,通常計算形式化的要點描述得很詳細,往往以實證基礎(chǔ),有時也闡述一些新的能促進軟件開發(fā)的自動化技術(shù) . 3 軟件產(chǎn)品開發(fā)模型 軟件產(chǎn)品代表了信息密集化的手工產(chǎn)品,經(jīng)歷了逐步設(shè)計并通過反復(fù)修改的開發(fā)工作才完成的 .這一過程可以使用軟件產(chǎn)品的生命周期模型來說明 .這些產(chǎn)品開發(fā)模型代表了基于傳統(tǒng)的軟件生 命周期模型上的漸進式開發(fā)模式 .由于新的軟件開發(fā)技術(shù),諸如軟件原型語言和環(huán)境,可重用的軟件,應(yīng)用類,和文件支持環(huán)境的出現(xiàn),這些模型才產(chǎn)生 .這些技術(shù)旨在使每一個可執(zhí)行的軟件實施步驟提前完成 .因此,這樣看來,軟件設(shè)計模式隱含于技術(shù)的實踐中,而不是明確的闡述 .這是可能的,因為這些模式在那些有經(jīng)驗的開發(fā)人員的實踐中顯得越來越直觀 .因此,當(dāng)這些技術(shù)應(yīng)用于工程實踐中,才是核查這些模型最合適的時候 . 快速原型和聯(lián)合應(yīng)用開發(fā) 原型是在軟件系統(tǒng)開發(fā)初期,提供精簡功能或有限版本性能的技術(shù)(巴爾澤 1983年,布德 1984 年, Hekmatpour 1987 年) .相對于傳統(tǒng)的系統(tǒng)生命周期,原型是一種更著重于軟件開發(fā)早期階段(需求分析和功能設(shè)計)的策略 .反過來,原型在定義、確定以及評估新系統(tǒng)的功能時就要更多的用戶參與 .因此,這些努力的前期任務(wù),再加上原型技術(shù)的運用,都旨在權(quán)衡或減少后期的軟件設(shè)計任務(wù),并簡化軟件開發(fā)工作 . 軟件原型有多種不同的形式,包括一次性原型,實物原型,示范系統(tǒng),快速原型,漸進式原型( Hekmatpour 1987年) .增加的功能和隨后的演化性是區(qū)分這些原型形式的所在 . 快速原型技術(shù)通常以軟件功能說明書的形 式作為其出發(fā)點,而這反過來是模擬,分析,或直接執(zhí)行 .這些技術(shù)可以讓開發(fā)人員能夠快速構(gòu)建軟件的早期或原始版本系統(tǒng),用戶就可以評估 .用戶評價后可以進一步作為反饋,進而改進系統(tǒng)規(guī)格說明和設(shè)計 .此外,根據(jù)原型技術(shù),完整的軟件開發(fā)工作可以通過不斷的開發(fā)修改 /精煉已有的規(guī)格說明 .這就一向提供了有利的系統(tǒng)工作版本,來重新定義軟件設(shè)計和測試方案,使得規(guī)范說明不斷完善并得以執(zhí)行 .另外,其他原型方法最適合發(fā)展一次性或演示系統(tǒng),或者通過復(fù)用部分 /所有的已有軟件系統(tǒng)來構(gòu)造原型 .其次,為什么現(xiàn)代軟件開發(fā)模式比如螺旋模型和 ISO 12207預(yù)期原型將是一個共同的活動,其有利于捕捉和完善軟件需求,以及全面的軟件開發(fā),這樣看來就變得很清楚了 . 6 外文翻譯原文: Abstract Software systems e and go through a series of passages that account for their inception, initial development, productive operation, upkeep, and retirement from one generation to another. This article categorizes and examines a number of methods for describing or modeling how software systems are developed. It begins with background and definitions of traditional software life cycle models that dominate most textbook discussions and current software development practices. This is followed by a more prehensive review of the alternative models of software evolution that are of current use as the basis for anizing software engineering projects and technologies. 1 Introduction Explicit models of software evolution date back to the earliest projects developing large software systems in the 195039。s and 196039。s, many descriptions of the classic software life cycle have appeared (., Hosier 1961, Royce 1970, Boehm 1976, Distaso 1980, Scacchi 1984, Somerville 1999). Royce (1970) originated the formulation of the software life cycle using the now familiar waterfall chart, displayed in Figure 1. The chart summarizes in a single display how developing large software systems is difficult because it involves plex engineering tasks that may require iteration and rework before pletion. These charts are often employed during introductory presentations, for people (., customers of custom software) who may be unfamiliar with the various technical problems and strategies that must be addressed when constructing large software systems (Royce 1970). These classic software life cycle models usually include some version or subset of the following activities: ? System Initiation/Planning: where do systems e from? In most situations, new feasible systems replace or supplement existing information processing mechanisms whether they were previously automated, manual, or informal. ? Requirement Analysis and Specification: identifies the problems a new software system is suppose to solve, its operational capabilities, its desired performance characteristics, and the resource infrastructure needed to support system operation and maintenance. 7 ? Functional Specification or Prototyping: identifies and potentially formalizes the objects of putation, their attributes and relationships, the operations that transform these objects, the constraints that restrict system behavior, and so forth. ? Partition and Selection (Build vs. Buy vs. Reuse): given requirements and functional specifications, divide the system into manageable pieces that denote logical subsystems, then determine whether new, existing, or reusable software systems correspond to the needed pieces. ? Architectural Design and Configuration Specification: defines the interconnection and resource interfaces between system subsystems, ponents, and modules in ways suitable for their detailed design and overall configuration management. ? Detailed Component Design Specification: defin