軟件工程的基本概念_第1頁
軟件工程的基本概念_第2頁
軟件工程的基本概念_第3頁
軟件工程的基本概念_第4頁
軟件工程的基本概念_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件工程的基本概念軟件工程是指導軟件開發(fā)、運行、維護的系統(tǒng)方法。軟件工程是強調使用生存周期方法和各種結構分析及設計技術。這些方法和技術適用于軟件生存周期的各個階段。所謂軟件生存周期,是指一項軟件從構思起,從經過開發(fā)成功投入使用,到停止使用或被另一項軟件代替的全過程。軟件工程采用的生存周期方法就是從時間角度對軟件開發(fā)的維護的復雜問題進行分解,把軟件生存的漫長周期依次劃分為若干階段,每個階段有相對獨立的任務,然后逐步完成每個階段的任務。采用軟件工程方法開發(fā)軟件時,從對任務的抽象邏輯分析開始,一個階段一個階段地進行開發(fā)。前一個階段任務的完成是下一階段開始進行的前提和基礎,而后一階段任務的完成使得肖一

2、階段提出的結果更加具體化。每一階段的開始和結束都有嚴格標準,文檔中階段通信的工具,是階段銜接的紐帶。概括起來,軟件工程的基本思想是:(1) 軟件開發(fā)劃分為若干個階段,每個階段的任務相對獨立和簡單。(2) 完成各階段任務是使用系統(tǒng)化技術和方法論。(3) 適時地建立里程碑,從技術和管理兩方面加以嚴格審查。(4) 在軟件的整個生存周期中編制完整的文檔。根據中華人民共和國國家標準GB8567-88計算機軟件產品開發(fā)文件編制指南規(guī)定,軟件生存周期可以分為六個階段:可行性研究與計劃階段,需求分析階段,設計階段、實現(xiàn)階段、測試階段和運行與維護階段。其中:可行性研究與計劃階段,主要確定軟件的開發(fā)目標和總體的要

3、求,進行可行性分析、投資一效益分析,制定開發(fā)計劃。需求分析階段,重點對被設計的軟件進行系統(tǒng)分析,確定對軟件的各項功能,性能需求和設計約束,確定對文檔編制的要求。設計階段,根據軟件需求提出多個設計,分析每個設計能履行的功能并進行相互比較,最后確定一個設計,包括軟件的結構、模塊的劃分、功能的分配以及處理流程。當軟件比較復雜的情況下,設計階段可分成概要設計和詳細設計兩個步驟。實現(xiàn)階段,要完成源程序的編碼、編譯(或匯編)和排錯調試,得出無語法錯誤的程序清單。測試階段,對提出的程序全面進行測試,檢查審定已編制出的文檔。運行和維護階段,軟件將在運行使用中不斷地被維護,根據新提出的需求進行必要而且可能的擴充

4、和刪改??傊捎密浖こ炭梢源筇岣哕浖_發(fā)的成功率,軟件的質量和生產率也會明顯提高。一、可行性研究與計劃軟件開發(fā)之初必須要搞清楚解決的問題是什么,因此,進行可行性研究與計劃是軟件開發(fā)的第一步。明確軟件開發(fā)目標、研究軟件能否實現(xiàn)、提出開發(fā)計劃就是可行性研究與計劃的目的和任務。1 .主要任務首先確切地定義用戶要求解決的問題,也就是問題的性質、軟件的目標和總的要求,然后是用最小的代價在盡可能短的時間內確定問題是否能夠解決。具體就就是,在澄清了問題定義之后,要導出系統(tǒng)的邏輯模型,從此出發(fā)探索若干種解決辦法。對每種解決辦法都要認真仔細研究三個可行性:(1)技術可行性,即回答現(xiàn)有技術條件能否完成軟件。(

5、2)經濟合理性,即回答軟件的成本與效益相比是否合算。(3)實施可行性,即回答軟件在實際使用時是否可行得通。所以說,可行性研究與計劃階段要解決的關鍵在于對今后的行為提出建議;如果問題沒有可行的解,立刻停止軟件開發(fā),以免造成更大的浪費;如果問題值得一解,則要推薦一個較好的解決方案,并為今后的工作制定一個初步的計劃。2 .基本步驟(1)對用戶需求和現(xiàn)實環(huán)境進行調查。分析人員要訪問有關用戶,仔細閱讀和分析有關材料,認真傾聽理解用戶口頭提出的需求,從而確定問題的性質、軟件的目標和規(guī)模。在復查確認的基礎上,確保要解決的問題即用戶要求解決的問題。(2)提出解決辦法。要對現(xiàn)有系統(tǒng)進行認真研究,根據用戶需求導出

6、新系統(tǒng)的高層邏輯模型。一般用數(shù)據流圖和數(shù)據字典表示。然后把新系統(tǒng)的邏輯模型與用戶重新交換意見,復查問題定義、工程規(guī)模和目標。從建議的邏輯模型出發(fā),提出若干個較高層次的物理解法供比較和選擇,提出書面材料。(3)進行可行性研究。根據書面材料和有關資料對欲開發(fā)的軟件從經濟、技術和實施等方面進行可行性研究,寫出可行性研究報告。(4)評審。根據可行性研究結果,評審和審批決定軟件項目是否繼續(xù)。若項目可行,則制訂初步的軟件開發(fā)計劃。3 .主要要求(1)實施可行性切不可忽略,技術上、經濟上可行,但實施不可行的軟件同樣行不通。(2)進行成本/效益分析要提供幾種可供選擇的解答,要有確切的數(shù)據和估算方法,避免主觀臆

7、斷。(3)軟件開發(fā)計劃中要有明確的、可檢查的標志。要提交齊全的、可驗證的文檔。包括:可行性研究報告;初步的軟件開發(fā)計劃。總之,可行性研究與計劃的關鍵在于保證軟件開發(fā)人員和用戶目標一致的前提下,提交供審查批準的行動方案。二、需求分析需求分析也叫要求分析,指在準確地解決“軟件必須實現(xiàn)什么”的問題。1 .主要任務(1) 確定對軟件的綜合需求包括四方面的需求:功能需求,即要劃分出軟件必須完成的一切功能。性能需求,包括需要的存儲容量、安全性、響應時間等。 運行需求,主要是對軟件運行時所處環(huán)境的要求。如支持軟件運行的系統(tǒng)軟件是什么;采用什么數(shù)據庫管理系統(tǒng);需要什么樣的外存儲器和數(shù)據通信接口等。將來可能提出

8、的需求,即列出那些雖然眼下不屬于系統(tǒng)開發(fā)范疇,但將來可能會提出來的需求,以便在設計過程中考慮將來的擴充和修改。(2)分析軟件的數(shù)據需求任何一個軟件本質上都是信息處理系統(tǒng),軟件必須處理的信息和軟件應該產生的信息在很大程度上決定著軟件的面貌,對軟件設計影響深遠。因此,分析軟件的數(shù)據需求就成為需求分析階段的重要任務之一。軟件中的數(shù)據分析要建立在對軟件功能理解的基礎上,借助圖形工具進行。對于要長期保存的數(shù)據分析,一般要分四個階段進行: 對數(shù)據元素進行分組并且規(guī)范化,即把軟件將要處理的數(shù)據元素分組歸并成若干個實體,建立起規(guī)范化的關系。畫出實體關系圖,來描述不同實體之間的關系。 事務分析,包括劃分事務的入

9、口點,確定為了滿足事務的數(shù)據需求所需要的實體聯(lián)系數(shù)目、實體間的事務流以及需要的訪問類型等等。 建立數(shù)據模型,來表明事務的類型、具體的通路、重要的加載和周期等。(3)推到出軟件的邏輯模型一般用數(shù)據流圖、數(shù)據字典和主要的處理算法來表示這個邏輯模型。(4)修正軟件開發(fā)計劃即把分析過程中得到的更深入具體的了解,在可行性研究與計劃階段制定的開發(fā)計劃中修正。(5)快速產生軟件原型即在較短的時間內將軟件雛形呈現(xiàn)在用戶面前,使用戶可以獲得關于未來的軟件的更直接具體的概念,從而能夠更準確地提出需求。2 .基本步驟既然軟件本質上是信息處理系統(tǒng),即將輸入數(shù)據經過處理轉變?yōu)檩敵鲂畔⒌倪^程,而數(shù)據又決定了需要的處理和算

10、法,因此需求分析的著眼點就是數(shù)據。(1)調查開發(fā)軟件的環(huán)境,進一步明確用戶需求。首先搞清輸出數(shù)據是由哪些元素組成的,然后沿數(shù)據流圖從輸出端往輸入端回溯,得出輸入數(shù)據元素,初步明確有關算法,交由用戶仔細進行復查。(2)細化數(shù)據流圖。通過功能分解可以完成數(shù)據流圖的細化,即把數(shù)據流圖擴展到更低的層次,之后得到一組新的數(shù)據流圖,不同的元素之間的關系變得更清楚了。(3)編制文檔。經過分析確定了軟件具有的功能和性能,定義了軟件中的數(shù)據并簡略描述了處理的算法,這時首要任務是編制一份完整、一致、精確且簡明易懂的軟件需求說明書,此外還要修正開發(fā)計劃行等。(4)嚴格履行審查手續(xù)。分析結果產生后,要成立審查小組對分

11、析結果進行審查,待審查通過,鑒定認可之后,方可進行下階段工作。3 .主要要求(1)需求分析階段的工作,主要由分析員承擔,用戶一方應派負責人代表參加。而分析員通常由研制方業(yè)務資歷較高的人擔任,他處在用戶和設計人員之間,溝通彼此的認識和見解。經過充分分析,確定下來的軟件需求應該在所編寫的軟件需求說明書中確切地闡述出來。(2)需求分析要以運行環(huán)境為基礎,需求說明書要經過用戶確認。(3)要交付需求說明書和軟件開發(fā)計劃等文檔。需求分析是軟件生存周期中的一個重要階段。軟件的功能和性能、軟件需求的運行環(huán)境都在這階段確定下來。分析的重點是數(shù)據流,需求分析結果的正確性決定軟件開發(fā)能否成功。三、軟件設計經過需求分

12、析階段的工作,建立了由數(shù)據流圖、數(shù)據字典和一組算法描述所定義的軟件系統(tǒng)邏輯模型,軟件必須做什么已經清楚了,下來就要進行設計階段解決“怎樣做”的問題了。1 .主要任務對于較大規(guī)模的軟件,設計階段也往往再細分為概要設計和詳細設計兩個階段。概要設計的主要任務就是根據軟件需求說明,建立目標系統(tǒng)的總體結構和模塊間的關系,定義各功能模塊的接口、控制接口,設計全局數(shù)據庫/數(shù)據結構,規(guī)定設計限制,制訂測試計劃;詳細設計的主要任務是對概要設計中產生的功能模塊進行過程描述,設計功能模塊的內部細節(jié),包括算法和數(shù)據結構,為編寫源代碼提供必要的說明。對于小規(guī)模的軟件,則要一次設計到底。應該說,經過概要設計后產生的程序、

13、文件、數(shù)據庫、處理過程和文檔等物理元素仍處于“黑盒子”狀態(tài),經過詳細設計之后,則得到目標系統(tǒng)的精確描述,軟件系統(tǒng)的“藍圖”就基本呈現(xiàn)出來了。2 .基本步驟(1)建立目標系統(tǒng)的總體結構。從軟件需求出發(fā),對于大規(guī)模軟件系統(tǒng),可以分解劃分為若干子系統(tǒng),然后為每個子系統(tǒng)定義功能模塊及各功能模塊間的關系,并描述各子系統(tǒng)的接口界面;對于小規(guī)模軟件系統(tǒng),則可按軟件需求直接定義目標系統(tǒng)的功能模塊及模塊間的關系。對各功能模塊要給出功能描述,數(shù)據接口描述,外部文件及全局數(shù)據定義。(2)數(shù)據庫設計。針對數(shù)據需求進行數(shù)據庫設計,經歷模式設計、子模塊設計、完整性和安全性設計、優(yōu)化等四個步驟。(3)模塊設計。將概要設計產

14、生的構成軟件系統(tǒng)的各個功能模塊逐步細化,形成若干個程序模塊(可編程模塊)。采用某種詳細設計表示方法對各個程序模塊進行過程描述,確定各程序模塊之間的詳細接口信息,擬定模塊測試方案。(4)制定測試計劃。在軟件設計中就考慮測試問題,能促使提高軟件可測試性。(5)編制文檔并進行審查。要編制完整的文檔,并對軟件設計結果進行嚴格的技術審查,審查通過后,有關人員要簽字認可。3.主要要求(1)在設計目標系統(tǒng)的整體結構時,應力爭使其具有好的形態(tài),各功能模塊間要相對獨立,降低模塊接口的復雜性。(2)模塊設計要盡可能按結構化程序設計原則進行。要詳細地規(guī)定各程序模塊之間的接口,包括參數(shù)的形式和傳送方式、上下層調用關系

15、等,確定模塊內的算法及數(shù)據結構。(3)要交付齊全、可驗證的文檔,包括:概要設計說明書;詳細設計說明書;數(shù)據庫設計說明書;模塊開發(fā)卷宗;測試計劃??傊?,軟件設計就是把軟件需求轉化為軟件的具體設計方案的過程。首先要根據軟件需求,采用結構化設計技術,導出軟件模塊總體結構;其次是使用表格、流程圖或文字等方式給出軟件各個模塊的具體過程描述。軟件設計的結果是編程實現(xiàn)的直接依據。四、軟件實現(xiàn)實現(xiàn)階段亦即軟件編程或叫軟件編碼階段,是為軟件設計階段得出的每個模塊編寫程序。1 .主要任務就是將詳細設計說明轉化為所要求的程序設計語言或數(shù)據庫語言書定的源程序。并對編制出的源程序進行程序單元測試,驗證程序模塊接口與詳細

16、設計說明的一致性。2 .基本步驟(1)選擇程序設計語言。大量實踐證明,高級程序設計語言優(yōu)于匯編語言。但選擇何種高級程序設計語言,有三條實用標準: 高級程序設計語言有本身的特點,不同的語言適應范圍有所不同。比如FORTRAN語言更適合科學計算;VB、PB、Delph則更適合輔助管理;C、ADA更適合于系統(tǒng)和實時應用;LISP更適合于組合問題領域;PROLO便適合于表達知識和推理。 環(huán)境因素,如問題性質。要解決的問題是科學計算呢,還是實時應用或輔助管理?這對程序設計語言選擇有一定要求。用戶熟悉程度。(2)編程。使用所選定的程序設計語言對每個程序模塊進行編程。盡管這步工作十分具體,難度相對不大,但也

17、要配齊必要的人力,以確保程序質量。程序員要掌握結構化程序設計、編程等技術方法,注意抓住程序設計語言或數(shù)據庫操縱語言的特點,精心考慮程序的結構和文件組織,使編制出的程序易讀、易懂、易維護、易移植,執(zhí)行效率高。(3)進行程序單元測試。按照事先制定的測試方案產生一批測試數(shù)據,按照規(guī)定的方法進行程序單元測試。(4)編寫完整的文檔。3.主要要求(1)要盡量選擇符合國家標準的、適用的程序設計語言,采用結構化的程序設計方法。(2)為了提高程序的可理解性,要在源程序中加入適當?shù)淖⒔狻?3)盡量采用增加程序可讀性的排版格式,即程序內部的良好文檔資料、有規(guī)律的數(shù)據說明格式、簡單清晰的語句構造和輸入/輸出格式等。(

18、4)利用適當?shù)能浖ぞ咻o助編程,以提高生產率和減少程序中的錯誤。(5)不僅要考慮對合法的輸入產生測試用例,而且要對非法的、非預期的輸入產生測試用例。既要對正常的處理路徑進行測試,也要考慮對出錯處理路徑進行測試。程序模塊的測試用例、預期結果及測試結果應存檔保留。(6)要提交“模塊開發(fā)卷宗”??偨Y一下,編程是在軟件設計之后進行的,程序質量主要由設計質量決定。但編程選用的語言、編程風格和途徑對程序質量同樣有較大影響。五、軟件測試任何軟件,在開發(fā)的各個階段,由于會遇到極其復雜的情況,加上開發(fā)人員的主觀認識總不可能那么周密而完美無缺,因而會不可避免地出現(xiàn)錯誤。測試階段就是要找出并排除這些錯誤。1 .主要

19、任務所謂測試就是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。由此定義出發(fā),測試的主要任務就是要發(fā)現(xiàn)錯誤并改正錯誤,提交高質量的完全符合用戶需要的軟件。有人認為測試的目的是為了說明程序的正確,只要隨便找?guī)讉€數(shù)據,把程序走通就行了。這種認識不僅不對,而且是非常有害的。因為這可能導致去找那些容易在機器上通過的測試數(shù)據,致使隱藏的錯誤不易被發(fā)現(xiàn)。另一方面,個別測試數(shù)據走得通并不意味著程序里沒有問題。因此,我們測試的目的是立足于找錯誤,暴露問題。2 .基本步驟與開發(fā)過程類似,軟件測試過程也要分步驟進行,每個步驟在邏輯上是前一個步驟的繼續(xù)。大型軟件系統(tǒng)的測試可分為五個步驟:(1)模塊測試。在軟件設計中,每個模塊

20、要完成一個子功能,模塊間是相對獨立的。因此,有可能把每個模塊作為一個單獨的實體來測試,而且通常比較容易設計檢驗模塊正確性的測試方案。通過模塊測試可以發(fā)現(xiàn)編程和設計中的錯誤,保證每個模塊作為一個單元正確運行。(2)子系統(tǒng)測試。即把經過測試的模塊裝配在一起形成一個子系統(tǒng)來測試,重點測試模塊間的協(xié)調、通信和模塊的接口。(3)系統(tǒng)測試。即把經過測試的子系統(tǒng)裝配成一個完整的軟件系統(tǒng)來測試。在此過程中不僅要發(fā)現(xiàn)編程和設計的錯誤,還要驗證整個軟件系統(tǒng)是否達到了要求。如果把模塊測試稱為單元測試的話,那么子系統(tǒng)測試和系統(tǒng)測試則稱為集成測試。(4)驗收測試。驗收測試是把軟件系統(tǒng)作為單一的實體進行測試,測試內容與系

21、統(tǒng)測試基本類似,但是它是在用戶積極參與下進行的,而且主要使用實際數(shù)據進行測試。這樣就可驗證軟件是否確實能夠滿足用戶的需要。(5)雙軌運行。重大的軟件在驗收后也不可立刻撤掉原有(手工)系統(tǒng)而投入生產性運行,必須要經過一段時間的雙軌運行考驗。這樣可以使用戶對軟件更熟悉,驗證有關文檔,在準生產環(huán)境中全負荷測試并驗證軟件,對所有文件進行整理。3.主要要求(1)軟件測試要建立獨立的測試小組進行,并邀請用戶一起參加。程序員應避免測試其本人的程序;程序設計單位在條件允許時應避免測試本單位編制的程序。測試的評審者,可邀請測試專家或其它人員。(2)要對軟件的輸入/輸出處理進行測試,使其達到設計要求,軟件的容量要

22、留有足夠的余地。(3)測試前應仔細研究有關資料,測試中由程序編制者介紹程序算法,參加者隨時提出問題,由編制者回答。對數(shù)據引用、數(shù)據說明、計算、比較、控制流程、接口、輸入輸出等逐一檢查測試。測試過程中應防止審查者和軟件制作者之間產生對立情緒。測試用的例子應預先估算輸出結果,以便比較。全部預期結果、測試結果及測試數(shù)據應存檔保留。(4)要交付完整的文檔:測試分析報告;用戶手冊和操作手冊;項目開發(fā)總結報告。軟件測試是保證軟件可靠性的主要手段,此階段的任務是艱巨而繁重的。測試計劃、測試方案和測試結果直接影響軟件質量和可維護性,要仔細記錄和保存。六、使用和維護使用和維護是軟件生存周期的最后一個階段,即在軟件交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。1 .主要任務首先,要發(fā)現(xiàn)和修改在開發(fā)階段產生、在測試階段又未發(fā)現(xiàn)的錯誤,即改正性維護;其次,要針對運行環(huán)境的變化修改軟件,即適應性維護;再次,在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論