軟件工程概述
軟件工程
(Software Engineering,簡稱為SE)是一門研究用工程化方法構(gòu)建和維護(hù)有效的、實用的和高質(zhì)量的軟件的學(xué)科。它涉及到程序設(shè)計語言,數(shù)據(jù)庫,軟件開發(fā)工具,系統(tǒng)平臺,標(biāo)準(zhǔn),設(shè)計模式等方面。

在現(xiàn)代社會中,軟件應(yīng)用于多個方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機(jī)界面,辦公套件,操作系統(tǒng),編譯器,數(shù)據(jù)庫,游戲等。同時,各個行業(yè)幾乎都有計算機(jī)軟件的應(yīng)用,比如工業(yè),農(nóng)業(yè),銀行,航空,政府部門等。這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會的發(fā)展,使得人們的工作更加高效,同時提高了生活質(zhì)量。

軟件工程師是對應(yīng)用軟件創(chuàng)造軟件的人們的統(tǒng)稱,軟件工程師按照所處的領(lǐng)域不同可以分為系統(tǒng)分析員,軟件設(shè)計師,系統(tǒng)架構(gòu)師,程序員,測試員等等。人們也常常用程序員來泛指各種軟件工程師。

軟件工程的主要課程
外語、高等數(shù)學(xué)線性代數(shù)、高等代數(shù)、電子技術(shù)基礎(chǔ)、離散數(shù)學(xué)、計算機(jī)引論(C語言)、數(shù)據(jù)結(jié)構(gòu)、C++程序設(shè)計、匯編語言程序設(shè)計、算法設(shè)計與分析、計算機(jī)組成原理與體系結(jié)構(gòu)、數(shù)據(jù)庫系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、軟件工程、軟件測試技術(shù)、軟件需求與項目管理、軟件設(shè)計實例分析、CMM/ISO9000等。

軟件工程(SoftWare Engineering)的框架可概括為:目標(biāo)、過程和原則。
(1)軟件工程目標(biāo):生產(chǎn)具有正確性、可用性以及開銷合宜的產(chǎn)品。正確性指軟件產(chǎn)品達(dá)到預(yù)期功能的程度。可用性指軟件基本結(jié)構(gòu)、實現(xiàn)及文檔為用戶可用的程度。開銷合宜是指軟件開發(fā)、運行的整個開銷滿足用戶要求的程度。這些目標(biāo)的實現(xiàn)不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
(2)軟件工程過程:生產(chǎn)一個最終能滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護(hù)過程。它們覆蓋了需求、設(shè)計、實現(xiàn)、確認(rèn)以及維護(hù)等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設(shè)計活動一般包括概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計建立整個軟件系統(tǒng)結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說明、每一模塊的接口定義。詳細(xì)設(shè)計產(chǎn)生程序員可用的模塊說明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說明及加工描述。實現(xiàn)活動把設(shè)計結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認(rèn)活動貫穿于整個開發(fā)過程,實現(xiàn)完成后的確認(rèn),保證最終產(chǎn)品滿足用戶的要求。維護(hù)活動包括使用過程中的擴(kuò)充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓(xùn)過程等。
(3)軟件工程的原則是指圍繞工程設(shè)計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。

軟件工程的定義
軟件工程
一直以來都缺乏一個統(tǒng)一的定義,很多學(xué)者、組織機(jī)構(gòu)都分別給出了自己的定義:

(1)。Barry Boehm:運用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并構(gòu)造計算機(jī)程序及為開發(fā)、運行和維護(hù)這些程序所必需的相關(guān)文件資料。

(2)。IEEE在軟件工程術(shù)語匯編中的定義:軟件工程是:1.將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運行和維護(hù),即將工程化應(yīng)用于軟件;2.在1中所述方法的研究

(3)。Fritz Bauer在NATO會議上給出的定義:建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實際機(jī)器上有效運行的可靠軟件的一系列方法。
目前比較認(rèn)可的一種定義認(rèn)為:軟件工程是研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護(hù)軟件,以及如何把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來。

(4)。《計算機(jī)科學(xué)技術(shù)百科全書》中的定義:軟件工程是應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本。其中,計算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計范型(paradigm)、評估成本及確定權(quán)衡,管理科學(xué)用于計劃、資源、質(zhì)量、成本等管理。

軟件工程學(xué)的內(nèi)容
  軟件工程學(xué)的主要內(nèi)容是軟件開發(fā)技術(shù)和軟件工程管理.
  軟件開發(fā)技術(shù)包含軟件工程方法學(xué)、軟件工具軟件開發(fā)環(huán)境;軟件工程管理學(xué)包含軟件工程經(jīng)濟(jì)學(xué)和軟件管理學(xué)。

軟件工程基本原理
著名軟件工程專家B.Boehm綜合有關(guān)專家和學(xué)者的意見并總結(jié)了多年來開發(fā)軟件的經(jīng)驗,于1983年在一篇論文中提出了軟件工程的七條基本原理。
(1)用分階段的生存周期計劃進(jìn)行嚴(yán)格的管理。
(2)堅持進(jìn)行階段評審。
(3)實行嚴(yán)格的產(chǎn)品控制。
(4)采用現(xiàn)代程序設(shè)計技術(shù)。
(5)軟件工程結(jié)果應(yīng)能清楚地審查。
(6)開發(fā)小組的人員應(yīng)該少而精。
(7)承認(rèn)不斷改進(jìn)軟件工程實踐的必要性。
B.Boehm指出,遵循前六條基本原理,能夠?qū)崿F(xiàn)軟件的工程化生產(chǎn);按照第七條原理,不僅要積極主動地采納新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗。
軟件工程(SoftWare Engineering)的框架可概括為:目標(biāo)、過程和原則。
  (1)軟件工程目標(biāo):生產(chǎn)具有正確性、可用性以及開銷合宜的產(chǎn)品。正確性指軟件產(chǎn)品達(dá)到預(yù)期功能的程度。可用性指軟件基本結(jié)構(gòu)、實現(xiàn)及文檔為用戶可用的程度。開銷合宜是指軟件開發(fā)、運行的整個開銷滿足用戶要求的程度。這些目標(biāo)的實現(xiàn)不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
  (2)軟件工程過程:生產(chǎn)一個最終能滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護(hù)過程。它們覆蓋了需求、設(shè)計、實現(xiàn)、確認(rèn)以及維護(hù)等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設(shè)計活動一般包括概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計建立整個軟件系統(tǒng)結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說明、每一模塊的接口定義。詳細(xì)設(shè)計產(chǎn)生程序員可用的模塊說明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說明及加工描述。實現(xiàn)活動把設(shè)計結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認(rèn)活動貫穿于整個開發(fā)過程,實現(xiàn)完成后的確認(rèn),保證最終產(chǎn)品滿足用戶的要求。維護(hù)活動包括使用過程中的擴(kuò)充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓(xùn)過程等。
  (3)軟件工程的原則是指圍繞工程設(shè)計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則

軟件工程必須遵循什么原則
圍繞工程設(shè)計、工程支持以及工程管理已提出了以下四條基本原則:

(1)選取適宜的開發(fā)模型

該原則與系統(tǒng)設(shè)計有關(guān)。在系統(tǒng)設(shè)計中,軟件需求、硬件需求以及其它因素間是相互制約和影響的,經(jīng)常需要權(quán)衡。因此,必需認(rèn)識需求定義的易變性,采用適當(dāng)?shù)拈_發(fā)模型,保證軟件產(chǎn)品滿足用戶的要求。

(2)采用合適的設(shè)計方法

在軟件設(shè)計中,通常需要考慮軟件的模塊化、抽象與信息隱蔽、局部化、一致性以及適應(yīng)性等特征。合適的設(shè)計方法有助于這些特征的實現(xiàn),以達(dá)到軟件工程的目標(biāo)。

(3)提供高質(zhì)量的工程支撐

工欲善其事,必先利其器。在軟件工程中,軟件工具與環(huán)境對軟件過程的支持頗為重要。軟件工程項目的質(zhì)量與開銷直接取決于對軟件工程所提供的支撐質(zhì)量和效用。

(4)重視軟件工程的管理

  軟件工程的管理直接影響可用資源的有效利用,生產(chǎn)滿足目標(biāo)的軟件產(chǎn)品以及提高軟件組織的生產(chǎn)能力等問題。因此,僅當(dāng)軟件過程予以有效管理時,才能實現(xiàn)有效的軟件工程。


  軟件工程是指導(dǎo)計算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。

  采用工程的概念、原理、 技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠 得到的最好的技術(shù)方法結(jié)合起來,這就是軟件工程。

  軟件工程強調(diào)使用生存周期方法學(xué)和各種結(jié)構(gòu)分析及結(jié)構(gòu)設(shè)計技術(shù)。它們是在七十年代為了對付應(yīng)用軟件日益增長的復(fù)雜程度、漫長的開發(fā)周期以及用戶對軟件產(chǎn)品經(jīng)常不滿意的狀況而發(fā)展起來的。人類解決復(fù)雜問題時普遍采用的一個策略就是“各個擊破”,也就是對問題進(jìn)行分解然后再分別解決各個子問題的策略。軟件工程采用的生存周期方法學(xué)就是從時間角度對軟件開發(fā)和維護(hù)的復(fù)雜問題進(jìn)行分解,把軟件生存的漫長周期依次劃分為若干個階段,每個階段有相對獨立的任務(wù),然后逐步完成每個階段的任務(wù)。采用軟件工程方法論開發(fā)軟件的時候,從對任務(wù)的抽象邏輯分析開始,一個階段一個階段地進(jìn)行開發(fā)。前一個階段任務(wù)的完成是開始進(jìn)行后一個階段工作的前提和基礎(chǔ),而后一階段任務(wù)的完成通常是使前一階段提出的解法更進(jìn)一步具體化,加進(jìn)了更多的物理細(xì)節(jié)。每一個階段的開始和結(jié)束都有嚴(yán)格標(biāo)準(zhǔn),對于任何兩個相鄰的階段而言,前一階段的結(jié)束標(biāo)準(zhǔn)就是后一階段的開始標(biāo)準(zhǔn)。在每一個階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審,從技術(shù)和管理兩方面對這個階段的開發(fā)成果進(jìn)行檢查,通過之后這個階段才算結(jié)束;如果檢查通不過,則必須進(jìn)行必要的返工,并且返工后還要再經(jīng)過審查。審查的一條主要標(biāo)準(zhǔn)就是每個階段都應(yīng)該交出“最新式的”(即和所開發(fā)的軟件完全一致的)高質(zhì)量的文檔資料,從而保證在軟件開發(fā)工程結(jié)束時有一個完整準(zhǔn)確的軟件配置交付使用。文檔是通信的工具,它們清楚準(zhǔn)確地說明了到這個時候為止,關(guān)于該項工程已經(jīng)知道了什么,同時確立了下一步工作的基礎(chǔ)。此外,文檔也起備忘錄的作用,如果文檔不完整,那么一定是某些工作忘記做了,在進(jìn)入生存周期的下一階段之前,必須補足這些遺漏的細(xì)節(jié)。在完成生存周期每個階段的任務(wù)時,應(yīng)該采用適合該階段任務(wù)特點的系統(tǒng)化的技術(shù)方法──結(jié)構(gòu)分析或結(jié)構(gòu)設(shè)計技術(shù)。

  把軟件生存周期劃分成若干個階段,每個階段的任務(wù)相對獨立,而且比較簡單,便于不同人員分工協(xié)作,從而降低了整個軟件開發(fā)工程的困難程度;在軟件生存周期的每個階段都采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,而且在每個階段結(jié)束之前都從技術(shù)和管理兩個角度進(jìn)行嚴(yán)格的審查,合格之后才開始下一階段的工作,這就使軟件開發(fā)工程的全過程以一種有條不紊的方式進(jìn)行,保證了軟件的質(zhì)量,特別是提高了軟件的可維護(hù)性。總之,采用軟件工程方法論可以大大提高軟件開發(fā)的成功率,軟件開發(fā)的生產(chǎn)率也能明顯提高。

  目前劃分軟件生存周期階段的方法有許多種,軟件規(guī)模、種類、開發(fā)方式、開發(fā)環(huán)境以及開發(fā)時使用的方法論都影響軟件生存周期階段的劃分。在劃分軟件生存周期的階段時應(yīng)該遵循的一條基本原則就是使各階段的任務(wù)彼此間盡可能相對獨立,同一階段各項任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜程度,簡化不同階段之間的聯(lián)系,有利于軟件開發(fā)工程的組織管理。一般說來,軟件生存周期由軟件定義、軟件開發(fā)和軟件維護(hù)三個時期組成,每個時期又進(jìn)一步劃分成若干個階段。下面的論述主要針對應(yīng)用軟件,對系統(tǒng)軟件也基本適用。

  軟件定義時期的任務(wù)是確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性,導(dǎo)出實現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源和成本,并且制定工程進(jìn)度表。這個時期的工作通常又稱為系統(tǒng)分析,由系統(tǒng)分析員負(fù)責(zé)完成。軟件定義時期通常進(jìn)一步劃分成三個階段,即問題定義、可行性研究和需求分析。

  開發(fā)時期具體設(shè)計和實現(xiàn)在前一個時期定義的軟件,它通常由下述四個階段組成:總體設(shè)計,詳細(xì)設(shè)計,編碼和單元測試,綜合測試。

  維護(hù)時期的主要任務(wù)是使軟件持久地滿足用戶的需要。具體地說,當(dāng)軟件在使用過程中發(fā)現(xiàn)錯誤時應(yīng)該加以改正;當(dāng)環(huán)境改變時應(yīng)該修改軟件以適應(yīng)新的環(huán)境;當(dāng)用戶有新要求時應(yīng)該及時改進(jìn)軟件滿足用戶的新需要。通常對維護(hù)時期不再進(jìn)一步劃分階段,但是每一次維護(hù)活動本質(zhì)上都是一次壓縮和簡化了的定義和開發(fā)過程。


下面扼要介紹軟件生存周期每個階段的基本任務(wù)和結(jié)束標(biāo)準(zhǔn)。
1問題定義

  問題定義階段必須回答的關(guān)鍵問題:“要解決的問題是什么?”如果不知道問題是什么就試圖解決這個問題,顯然是盲目的,只會白白浪費時間和金錢,最終得出的結(jié)果很可能是毫無意義的。盡管確切地定義問題的必要性是十分明顯的,但是在實踐中它卻可能是最容易被忽視的一個步驟。

  通過問題定義階段的工作,系統(tǒng)分析員應(yīng)該提出關(guān)于問題性質(zhì)、工程目標(biāo)和規(guī)模的書面報告。通過對系統(tǒng)的實際用戶和使用部門負(fù)責(zé)人的訪問調(diào)查,分析員扼要地寫出他對問題的理解,并在用戶和使用部門負(fù)責(zé)人的會議上認(rèn)真討論這份書面報告,澄清含糊不精的地方,改正理解不正確的地方,最后得出一份雙方都滿意的文檔。

  問題定義階段是軟件生存周期中最簡短的階段,一般只需要一天甚至更少的時間。

2可行性研究

  這個階段要回答的關(guān)鍵問題:“對于上一個階段所確定的問題有行得通的解決辦法嗎?”為了回答這個問題,系統(tǒng)分析員需要進(jìn)行一次大大壓縮和簡化了的系統(tǒng)分析和設(shè)計的過程,也就是在較抽象的高層次上進(jìn)行的分析和設(shè)計的過程。

  可行性研究應(yīng)該比較簡短,這個階段的任務(wù)不是具體解決問題,而是研究問題的范圍,探索這個問題是否值得去解,是否有可行的解決辦法。

  在問題定義階段提出的對工程目標(biāo)和規(guī)模的報告通常比較含糊。可行性研究階段應(yīng)該導(dǎo)出系統(tǒng)的高層邏輯模型(通常用數(shù)據(jù)流圖表示),并且在此基礎(chǔ)上更準(zhǔn)確、更具體地確定工程規(guī)模和目標(biāo)。然后分析員更準(zhǔn)確地估計系統(tǒng)的成本和效益,對建議的系統(tǒng)進(jìn)行仔細(xì)的成本/效益分析是這個階段的主要任務(wù)之一。

  可行性研究的結(jié)果是使用部門負(fù)責(zé)人做出是否繼續(xù)進(jìn)行這項工程的決定的重要依據(jù),一般說來,只有投資可能取得較大效益的那些工程項目才值得繼續(xù)進(jìn)行下去。可行性研究以后的那些階段將需要投入要多的人力物力。及時中止不值得投資的工程項目,可以避免更大的浪費。

3需求分析

  這個階段的任務(wù)仍然不是具體地解決問題,而是準(zhǔn)確地確定“為了解決這個問題,目標(biāo)系統(tǒng)必須做什么”,主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。

  用戶了解他們所面對的問題,知道必須做什么,但是通常不能完整準(zhǔn)確地表達(dá)出他們的要求,更不知道怎樣利用計算機(jī)解決他們的問題;軟件開發(fā)人員知道怎樣使用軟件實現(xiàn)人們的要求,但是對特定用戶的具體要求并不完全清楚。因此系統(tǒng)分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出經(jīng)過用戶確認(rèn)的系統(tǒng)邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和簡要的算法描述表示系統(tǒng)的邏輯模型。

  在需求分析階段確定的系統(tǒng)邏輯模型是以后設(shè)計和實現(xiàn)目標(biāo)系統(tǒng)的基礎(chǔ),因此必須準(zhǔn)確完整地體現(xiàn)用戶的要求。系統(tǒng)分析員通常都是計算機(jī)軟件專家,技術(shù)專家一般都喜歡很快著手進(jìn)行具體設(shè)計,然而,一旦分析員開始談?wù)摮绦蛟O(shè)計的細(xì)節(jié),就會脫離用戶,使他們不能繼續(xù)提出他們的要求和建議。較件工程使用的結(jié)構(gòu)分析設(shè)計的方法為每個階段都規(guī)定了特定的結(jié)束標(biāo)準(zhǔn),需求分析階段必須提供完整準(zhǔn)確的系統(tǒng)邏輯模型,經(jīng)過用戶確認(rèn)之后才能進(jìn)入下一個階段,這就可以有效地防止和克服急于著手進(jìn)行具體設(shè)計的傾向。

4總體設(shè)計

  這個階段必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該如何解決這個問題?”

  首先,應(yīng)該考慮幾種可能的解決方案。列如,目標(biāo)系統(tǒng)的一些主要功能是用計算機(jī)自動完成還是用人工完成;如果使用計算機(jī),那么是使用批處理方式還是人機(jī)交互方式;信息存儲使用傳統(tǒng)的文件系統(tǒng)還是數(shù)據(jù)庫……。通常至少應(yīng)該考慮下述幾類可能的方案:

  低成本的解決方案。系統(tǒng)只能完成最必要的工作,不能多做一點額處的工作。

  中等成本的解決方案。這樣的系統(tǒng)不僅能夠很好地完成預(yù)定的任務(wù),使用起來很方便,而且可能還具有用戶沒有具體指定的某些功能和特點。雖然用戶沒有提出這些具體要求,但是系統(tǒng)分析員根據(jù)自己的知識和經(jīng)驗斷定,這些附加的能力在實踐中將證明是很有價值的。

  高成本的“十全十美”的系統(tǒng)。這樣的系統(tǒng)具有用戶可能希望有的所有功能和特點。

  系統(tǒng)分析員應(yīng)該使用系統(tǒng)流程圖或其他工具描述每種可能的系統(tǒng),估計每種方案的成本和效益,還應(yīng)該在充分權(quán)衡各種方案的利弊的基礎(chǔ)上,推薦一個較好的系統(tǒng) (最佳方案),并且制定實現(xiàn)所推薦的系統(tǒng)的詳細(xì)計劃。如果用戶接受分析員推薦的系統(tǒng),則可以著手完成本階段的另一項主要工作。

  上面的工作確定了解決問題的策略以及目標(biāo)系統(tǒng)需要哪些程序,但是,怎樣設(shè)計這些程序呢?結(jié)構(gòu)設(shè)計的一條基本原理就是程序應(yīng)該模塊化,也就是一個大程序應(yīng)該由許多規(guī)模適中的模塊按合理的層次結(jié)構(gòu)組織而成。總體設(shè)計階段的第二項主要任務(wù)就是設(shè)計軟件的結(jié)構(gòu),也就是確定程序由哪些模塊組成以及模塊間的關(guān)系。通常用層次圖或結(jié)構(gòu)圖描繪軟件的結(jié)構(gòu)。

5詳細(xì)設(shè)計

  總體設(shè)計階段以比較抽象概括的方式提出了解決問題的辦法。詳細(xì)設(shè)計階段的任務(wù)就是把解法具體化,也就是回答下面這個關(guān)鍵問題:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”

  這個階段的任務(wù)還不是編寫程序,而是設(shè)計出程序的詳細(xì)規(guī)格說明。這種規(guī)格說明的作用很類似于其他工程領(lǐng)域中工程師經(jīng)常使用的工程藍(lán)圖,它們應(yīng)該包含必要的細(xì)節(jié),程序員可以根據(jù)它們寫出實際的程序代碼。

  通常用HIPO圖(層次圖加輸入/處理/輸出圖)或PDL語言(過程設(shè)計語言)描述詳細(xì)設(shè)計的結(jié)果。

6編碼和單元測試

  這個階段的關(guān)鍵任務(wù)是寫出正確的容易理解、容易維護(hù)的程序模塊。

  程序員應(yīng)該根據(jù)目標(biāo)系統(tǒng)的性質(zhì)和實際環(huán)境,選取一種適當(dāng)?shù)母呒壋绦蛟O(shè)計語言(必要時用匯編語言),把說細(xì)設(shè)計的結(jié)果翻譯成用選定的語言書寫的程序,并且仔細(xì)測試編寫出的每一個模塊。

7綜合測試

  這個階段的關(guān)鍵任務(wù)是通過各種類型的測試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求。

  最基本的測試是集成測試和驗收測試。所謂集成測試是根據(jù)設(shè)計的軟件結(jié)構(gòu),把經(jīng)過單元測試檢驗的模塊按某種選定的策略裝配起來,在裝配過程中對程序進(jìn)行必要的測試。所謂驗收測試則是按照規(guī)格說明書的規(guī)定(通常在需求分析階段確定),由用戶(或在用戶積極參加下)對目標(biāo)系統(tǒng)進(jìn)行驗收。

  必要時還可以再通過現(xiàn)場測試或平行運行等方法對目標(biāo)系統(tǒng)進(jìn)一步測試檢驗。

  為了使用戶能夠積極參加驗收測試,并且在系統(tǒng)投入生產(chǎn)性運行以后能夠正確有效地使用這個系統(tǒng),通常需要以正式的或非正式的方式對用戶進(jìn)行培訓(xùn)。

  通過對軟件測試結(jié)果的分析可以預(yù)測軟件的可靠性;反之,根據(jù)對軟件可靠性的要求也可以決定測試和調(diào)試過程什么時候可以結(jié)束。

  應(yīng)該用正式的文檔資料把測試計劃、詳細(xì)測試方案以及實際測試結(jié)果保存下來,做為軟件配置的一個組成成分。

8軟件維護(hù)

  維護(hù)階段的關(guān)鍵任務(wù)是,通過各種必要的維護(hù)活動使系統(tǒng)持久地滿足用戶的需要。

  通常有四類維護(hù)活動:改正性維護(hù),也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤;適應(yīng)性維護(hù),即修改軟件以適應(yīng)環(huán)境的變化;完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使它更完善;預(yù)防性維護(hù),即修改軟件為將來的維護(hù)活動預(yù)先做準(zhǔn)備。

  雖然沒有把維護(hù)階段進(jìn)一步劃分成更小的階段,但是實際上每一項維護(hù)活動都應(yīng)該經(jīng)過提出維護(hù)要求(或報告問題),分析維護(hù)要求,提出維護(hù)要求,提出維護(hù)方案,審批維護(hù)方案,確定維護(hù)計劃,修改軟件設(shè)計,修改程序,測試程序,復(fù)查驗收等一系列步驟,因此實質(zhì)上是經(jīng)歷了一次壓縮和簡化了的軟件定義和開發(fā)的全過程。

  都應(yīng)該經(jīng)過提出維護(hù)要求(或報告問題),分析維護(hù)要求,提出維護(hù)要求,提出維護(hù)方案,審批維護(hù)方案,確定維護(hù)計劃,修改軟件設(shè)計,修改程序,測試程序,復(fù)查驗收等一系列步驟,因此實質(zhì)上是經(jīng)歷了一次壓縮和簡化了的軟件定義和開發(fā)的全過程。
軟件開發(fā)模型
1.瀑布模型
瀑布模型是1970年Winston Royce提出的最早出現(xiàn)的軟件開發(fā)模型。
2.漸增模型
3.演化模型
4.螺旋模型
5.噴泉模型
6.轉(zhuǎn)換模型
7.智能模型