系統架構設計之三:系統開發基礎知識

一、本章要點

1)開發管理。

2)需要管理。

3)軟件開發方法。

4)軟件開發環境與工具。

5)設計方法。

6)基於構件的開發。

7)應用系統構建。

8)測試與評審。


二、軟件開發生命週期


三、軟件開發方法學

1)從開發風範上看,可分爲自頂向下開發方法和自底向上開發方法。

2)從性質上看,可分爲形式化方法和非形式化方法。

3)從適用範圍上看,可分爲整體性方法和局部性方法。

4)軟件自動化方法是從形式的軟件功能約束到可執行的程序代碼這一過程的自動化,其實現途徑主要有過程途徑、演繹途徑、轉換途徑和歸納途徑。


1、淨室方法

1)淨室軟件工程師軟件開發的一種形式化方法。

2)使用盒結構規約進行分析和設計建模,並且強調正確性驗證(而不是測試)作爲發現和消除錯誤的主要機制。

3)使用統計的測試來獲取認證被交付的軟件的可靠性所必需的出錯率消息。

4)淨室方法主要使用三種盒:

  (1)黑盒。這種盒刻畫系統或系統的某部分行爲。

  (2)狀態盒。這種盒以類似於對象的方式封裝狀態數據和服務(操作)。

  (3)清晰盒。在清晰盒中定義狀態盒所蘊含的變遷功能,簡單地說,清晰盒包含了對狀態盒的過程設計。

5)一旦完成了盒結構設計,則運用正確性驗證;一旦完成了正確性驗證,則開始統計的使用測試。


2、結構化方法

1)結構化方法屬於自頂向下的開發方法,基本思想是“自頂向下,逐步求精”。

2)結構是指系統內各個組成要素之間相互聯繫、相互作用的框架。

3)提高軟件結構合理性的準則:分解與抽象、模塊獨立性、信息隱蔽。

4)軟件生存週期的不同階段包括了:結構化分析(Structured Analysis,SA)、結構化設計(Structured Design,SD)和結構化程序設計(Structured Programing,SP)。

5)結構化方法基本原則:

  (1)面向用戶的觀點。

  (2)嚴格區分工作階段,每個階段有明確的任務和應得的成果。

  (3)按照系統的觀點,自頂向下地完成系統的開發工作。

  (4)充分考慮變化的情況。在系統設計中,把系統的可變更性放在首位。

  (5)工作成果文獻化、文檔化。

6)結構化分析的手段:數據流圖、數據字典、結構化語言、判定表及判定樹。

7)SA方法步驟如下:

  (1)分析當前的情況,作出反映當前物理模型的數據流圖(Data Flow Diagram,DFD)。

  (2)推導出等價的邏輯模型的DFD。

  (3)設計新的邏輯系統,生成數據字典和基元描述。

  (4)建立人機接口,提出可供選擇的目標系統物理模型的DFD。

  (5)確定各種方案的成本和風險等級,據此對各種方案進行分析。

  (6)選擇一種方案。

  (7)建立完整的需求規約。

8)結構化設計尤其適用於變換型結構和事務型結構的目標系統。

9)SD方法步驟如下:

  (1)評審和細化數據流圖。

  (2)確定數據流圖的類型。

  (3)把數據流圖映射到軟件模塊結構,設計出模塊結構的上層。

  (4)基於數據流圖逐步分解高層模塊,設計中下層模塊。

  (5)對模塊結構進行優化,得到更爲合理的軟件結構。

  (6)描述模塊接口。

10)SD方法設計原則如下:

  (1)是每個模塊執行一個功能(堅持功能性內聚)。

  (2)每個模塊使用過程語句(或函數方法等)調用其他模塊。

  (3)模塊間傳送的參數作爲數據使用。

  (4)模塊間公用的消息(如參數等)儘量少。

11)結構化方法的缺點

  (1)開發週期長。

  (2)早期的結構化方法注重系統功能,兼顧數據結構方面不多。

  (3)結構化程度較低的系統,在開發初期難於鎖定功能要求。


3、面向對象方法

1)主要包括OMT(Object Model Technology,對象建模技術)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向對象的軟件工程)及Booch方法。

2)OMT、OOSE及Booch最後統一爲UML(United Model Language,統一建模語言)。

3)Coad/Yourdon方法主要由面向對象的分析(Object-Oriented Analysis,OOA)和麪向對象的設計(Object-Oriented Design,OOD)構成。

4)OOA和OOD使用完全一致的概念和表示法。

5)OOA任務主要是建立問題域的分析模型。5各層次:類與對象層、屬性層、服務層、結構層和主題層。5個步驟:標識對象類、標識結構與關聯(包括繼承、聚合、組合及實例化)、劃分主題、定義屬性和定義服務。

6)Booch認爲軟件開發是一個螺旋上升的過程,每個週期包括4個步驟:標識類和對象、確定類和對象的含義、標識關係、說明每個類的接口和實現。

7)Booch方法的開發模型包括靜態模型:邏輯模型(類圖、對象圖)和物理模型(模塊圖、進程圖);動態模型:狀態圖和時序圖。

8)OMT方法作爲一種軟件工程方法學,支持整個軟件生存週期,覆蓋了問題構成分析、設計和實現等階段。

9)OMT方法使用了建模的思想:對象模型、動態模型和功能模型。

10)OOSE在OMT基礎上,對功能模型進行了補充,提出了用例(use case)的概念,取代了數據流圖來進行需求分析和建立功能模型。

11)OOSE方法採用5類模型來建立目標系統:

  (1)需求模型(2)分析模型(3)設計模型(4)實現模型(5)測試模型

12)用例是貫穿OOSE活動的核心,用例實際上是描述系統用戶(使用者、執行者)對於系統的使用情況,是從使用者角度來確定系統的功能。


4、原型法

1)結構化方法和麪向對象方法有一個共同點:在系統開發初期必須明確系統的功能要求,確定系統邊界。

2)原型是指軟件的一個早期可運行的版本。

3)在需求分析階段要使用原型化方法,必須從系統結構、邏輯結構、用戶特徵、應用約束、項目管理和項目環境來考慮,以決定是否採用原型化方法。

4)聯機事務處理系統,互相關聯的應用系統適合於用原型化方法,而批處理、批修改等結構不適宜用原型化方法。

5)有結構的系統,如操作支持系統、管理信息系統和記錄管理系統適於用原型化方法,而基於大量算法的系統不適宜用原型化方法。

6)原型生存期

7)原型開發技術

  (1)可執行規格說明,用於需求規格說明的一種自動化技術。描述系統要“做什麼”,但不描述系統要“怎樣做”。包括形式化規格說明、有限狀態模型和可執行的數據流圖。

  (2)基於場景的設計。一個場景可模擬在系統運行期間用戶經歷的事件。

  (3)自動程序設計。可執行規格說明的替身,主要是指在程序自動生成環境的支持下,利用計算機實現軟件的開發。

  (4)專用語言。應用領域的模型化語言。

  (5)軟件複用技術。合成技術:用構件來構造軟件系統。用構件合成較大的構件有三種方式:連接;消息傳遞和繼承;管道機制。生成技術:利用可複用的模式,通過生成程序產生一個新的程序或程序段,產生的程序可看做是模式的示例。可複用的模式有兩種不同的形式:代碼模式和規則模式。前者的例子是應用生成器,後者的例子是變換系統。

  (6)簡化假設。

  (7)面向對象技術。

8)原型法適合於用戶需求不明確的場合。


5、逆向工程

1)再工程是對現有軟件系統的重新開發過程,包括逆向工程(Reverse Engineering,反向工程)、新需求的考慮(軟件重構)和正向工程三個步驟。

2)軟件重構是對源代碼、數據進行修改,使其易於修改和維護,以適應將來的變更。通常並不修改軟件體系結構,而是關注模塊的細節。

3)逆向工程是分析程序,力圖在比源代碼更高的抽象層次上建立程序表示的過程。


四、軟件開發模型

1、瀑布模型

1)也成爲生命週期法,是結構化方法。

2)把軟件開發過程分爲:軟件計劃、需求分析、軟件設計、程序編碼、軟件測試和運行維護6各階段。

2、其他經典模型

1)演化模型。也稱爲變換模型,是在快速開發一個原型的基礎上,根據用戶提出的意見,對原型進行改進,重複這一過程,直到演化成最終的產品。

2)螺旋模型。將瀑布模型和變換模型相結合。以原型爲基礎,沿着螺線自內向外旋轉,每旋轉一圈都要經過制定計劃、風險分析、實施工程及客戶評價,並開發原型的一個新版本。經過若干次螺旋上升過程,得到最終的系統。

3)噴泉模型。主要支持面向對象的開發方法,分析、設計和編碼之間不存在明顯的邊界。

4)智能模型。與專家系統結合在一起,應用基於規則的系統,採用規約和推理機制。

5)增量模型。融合了瀑布模型的基本成分(重複的應用)和原型實現的迭代特徵。與原型不同在於,每一個增量均發佈一個可操作產品。

6)迭代模型。迭代包括產生產品發佈的全部開發活動和要使用該發佈必需的所有其他外圍元素。適用於視線不能完整定義產品所有需求、計劃多期開發的軟件開發中。

7)構件組裝模型。基於構件的軟件開發(Component Based Software Development,CBSD)模型是利用模塊化方法,將整個系統模塊化,並在一定構件模型的支持下,複用構件庫中的一個或多個軟件構件,通過組合手段高效率、高質量地構造應用軟件系統的過程。融合了螺旋模型的許多特徵,本質上是演化型的,開發過程是迭代的。

8)V模型。以測試爲中心的開發模型。


3、快速應用開發

快速應用開發(Rapid Application Development,RAD)模型是一個增量型的軟件開發過程模型,強調極短的開發週期。是瀑布模型的一個高速變種,通過大量使用可複用構件,採用基於構件的建造方法贏得快速開發。

1)業務建模。輔之以數據流圖。

2)數據建模。輔之以E-R圖。

3)過程建模。使數據對象在信息流中完成各業務功能。

4)應用程序生成。利用第四代語言(4GL)寫出處理程序,重用已有構件或創建新的可用構件,自動生成並構造出整個應用系統。

5)測試與交付。


4、敏捷方法

1)流派:極限編程(Extreme Programming,XP)、自適應軟件開發、水晶方法和特性驅動開發。

2)開發者的角度,基本原則有:

  (1)短平快會議(Stand Up)

  (2)小版本發佈(Frequent Release)

  (3)較少的文檔(Minimal Documentation)

  (4)合作爲重(Collaborative Focus)

  (5)客戶直接參與(Customer Engagement)

  (6)自動化測試(Automated Testing)

  (7)適應性計劃調整(Adaptive Planning)

  (8)結對編程(Pair Programming)

3)管理者角度,基本原則有:

  (1)測試驅動開發(Test-Driven Development)

  (2)持續集成(Continuous Integration)

  (3)重構(Refactoring)

4)與其他方法最大不同如下:

  (1)在更短的週期內,更早地提供具體、持續的反饋信息。

  (2)迭代地進行計劃編制,首先在最開始迅速生成一個總體計劃,然後在整個項目開發過程總不斷地發展它。

  (3)依賴於自動測試程序來監控開發進度,並及早捕獲缺陷。

  (4)依賴於口頭交流、測試和源程序進行溝通。

  (5)倡導持續的演化式的設計。

  (6)依賴於開發團隊內部的緊密協作。

  (7)儘可能達到程序員短期利益和項目長期利益的平衡。

5)主要適用於小規模軟件的開發和小型團隊的開發。


5、統一過程

1)統一過程(Unified Process,UP)是一個通用過程框架,可用於種類廣泛的軟件系統、不同應用領域、不同的組織類型、不同的性能水平和不同的項目規模。

2)基於構件,使用UML進行系統建模。用例驅動、以基本架構爲中心、迭代和增量。

3)時間上分解爲4個順序的階段,初始階段、細化階段、構件階段和交付階段。

4)初始階段的任務是爲系統建立業務模型並確定項目的邊界。

5)細化階段的任務是分析問題領域,建立健全的架構基礎,淘汰項目中最高風險的元素。

6)在構件階段,要開發所有剩餘的構件和應用程序功能,把這些構件集成爲產品,並進行詳細測試。

7)交付階段的重點是確保軟件對最終用戶是可用的。

8)UP的工作流程分爲兩部分,即核心工作流程與核心支持工作流程。核心工作流程(在項目中的流程)包括業務需求建模、分析設計、實施、測試和部署;核心支持工作流程(在組織中的流程)包括環境、項目管理、配置與變更管理。

9)Rational公司提出此方法,一般稱爲RUP(Rational Unified Process),IBM收購Rational,於是又稱IBM RUP。


五、系統規劃與問題定義

總體規劃階段主要目標是制定軟件的長期發展方案,決定軟件在整個生命週期的發展方向、規模和發展進程。

總體規劃階段主要任務如下:

  (1)制定軟件的發展戰略。

  (2)確定組織的主要信息需求,形成總體結構方案,安排項目開發計劃。

  (3)制定系統建設的資源分配計劃。

進行軟件系統的總體規劃一般包括如下幾個階段:

  (1)對當前系統進行初步的調查。

  (2)分析和確定系統目標。

  (3)分析子系統的組成以及基本功能。

  (4)擬定系統的實施方案。

  (5)進行系統的可行性分析。

  (6)編寫可行性報告。

主要方法有:關鍵成功因素法(Critical Success Factors,CSF)、戰略目標集轉化法(Strategy Set Transformation,SST)和企業系統規劃方法。


1、可行性分析

可行性分析研究的任務就是研究系統開發的必要性和可能性。

1)可行性分析的內容:技術可行性、經濟可行性和操作可行性。

2)可行性分析工作的步驟:

  (1)覈實問題定義與目標。

  (2)研究分析現有系統。

  (3)爲新系統建模。有幾種技術:系統上下文關係範圍圖(數據流圖的0層圖);實體關係圖;用例模型;域模型;IPO(Input/Process/Output)表。

  (4)用戶複覈。

  (5)提出並評價解決方案。

  (6)確定最終推薦的解決方案。

  (7)草擬開發計劃。

  (8)提交可行性分析報告。


2、成本效益分析

成本效益分析首先是估算新系統的開發成本,然後與可能取得的效益(有形的和無形的)進行比較權衡。

1)貨幣的時間價值。

  (1)單利計算公式:

  (2)複利計算公式:

  (3)P爲本金,n爲年期,i爲利率,F爲P元錢在n年後的價值

2)折現率與折現係數

折現又稱貼現,就是把將來某一時點的資金額換算成現在時點的等值金額。折現時所使用的利率稱爲折現率(貼現率)。


爲折現係數。

3)淨現值分析法(Net Present Value,NPV)

是指項目在生命週期內各年的淨現金流量按照一定的、相同的貼現率貼現到初時的現值之和,即

4)淨現值率(Net Present Value Ratio,NPVR)

是項目淨現值與項目投資總額現值P之比,反映了資金的利用效率。

5)現值指數(Net Present Value Index, NPVI)

是投資方案經營期各年末淨現金流入量的總現值與建設期各年初投資額總現值之比,即

6)內含報酬率(Internal Rate of Return,IRR)

隨着實際折現率的升高,方案的可行性在下降,這就存在一個臨界點,當實際折現率高於此值時,方案就不可行。這個臨界點通常稱爲內含報酬率(內部收益率),即一種能夠是投資方案的淨現值爲0的折現率。

7)投資回收期

投資回收期是指用投資方案所產生的淨現金收入回收初始全部投資所需的時間。

  (1)靜態投資回收期,不考慮資金時間價值因素。

  (2)動態投資回收期,考慮資金時間價值因素。

8)投資回收率

投資回收率反映企業投資的獲利能力:


3、新舊系統分析與比較

1)比較的主要目的如下:

  (1)評估舊系統存在的問題,評估升級舊系統的價值和升級的代價。

  (2)在項目可行性分析和方案設計階段,通過分析舊的系統,尋找舊系統中存在的主要問題,爲新系統的設計目標提供參考。

  (3)在新系統方案確定後,進行新舊系統比較以便驗證系統的設計是否完備。

  (4)理解新舊系統之間的差異、確定新舊系統轉換的技術路線。

2)分析原則

  (1)比較新舊系統(2)複查問題(3)控制規模

3)轉換策略

  (1)直接轉換(2)逐步轉換(3)並行轉換


4、結構化系統建模

1)軟件開發項目是要實現目標系統的物理模型,即確定待開發軟件的系統元素,並將功能和數據結構分配到這些系統元素中,它是軟件實現的基礎。

2)邏輯模型與物理模型不同,忽視實現機制與細節,只描述系統要完成的功能和要處理的數據。

3)系統分析的任務就是藉助於當前系統的邏輯模型導出目標系統的邏輯模型,解決目標系統“做什麼”的問題。

4)設計步驟:

  (1)獲得當前系統的物理模型

  (2)抽象出當前系統的邏輯模型

  (3)建立目標系統的邏輯模型

  (4)建立目標系統的物理模型


5、問題定義

問題分析的目標就是在開始開發之前對要解決的問題有一個更透徹的理解。

經過的步驟有:

  (1)在問題定義上達成共識

  (2)理解問題的本質,因果魚骨圖和帕雷託圖

  (3)確定項目干係人

  (4)定義系統的界限

  (5)確定系統實現的約束

對一個問題的完成定義,通常應包括目標、功能需求和非功能需求三個方面。


六、需求工程

需求工程是包括創建和維護系統需求文檔所必需的一切活動的過程,可分爲需求開發和需求管理。

1)需求開發。包括需求獲取、需求分析、編寫規格說明書(需求定義)和需求驗證4個階段。

2)需求管理。通常包括定義需求基線、處理需求變更及需求跟蹤。

3)需求開發是主線,是目標;需求管理是支持,是保障。

1、需求開發概述

需求開發主要確定開發軟件的功能、性能、數據和界面等要求。

1)需求開發工作

  (1)問題識別(2)分析與綜合(3)編制需求分析的文檔(4)需求分析與評審

2)需求開發的原則

  (1)必須能夠表達和理解問題的信息域和功能域

  (2)必須表示軟件的行爲

  (3)必須劃分描述信息、功能和行爲的模型,從而可以以層次的方式揭示細節

  (4)分析過程應該從要素信息移向細節實現

  (5)必須按自頂向下、逐層分解的方式對問題進行分解和不斷細化

  (6)要給出系統的邏輯視圖和物理視圖

3)需求的分類

  (1)功能需求(2)非功能需求(3)設計約束(4)業務需求(5)用戶需求(6)系統需求


2、需求獲取

1)要捕獲的信息

  (1)與問題域相關的信息(如業務資料、組織結構圖和業務處理流程)

  (2)與要求解決的問題相關的信息

  (3)用戶對系統的特別期望與施加的任何約束信息

2)信息的來源,從項目干係人入手

3)需求捕獲技術

  (1)用戶訪談(2)用戶調查(3)現場觀摩(4)閱讀歷史文檔(5)聯合討論會

4)需求捕獲的策略

在整個需求過程中,需求捕獲、需求分析、需求定義和需求驗證4個階段不是瀑布式的發展,而是應該採用迭代式的演化過程。


3、需求分析

需求分析的方法:(1)結構化分析方法(2)面向對象分析方法(3)面向問題域的分析(Problem Domain Oriented Analysis,PDOA)

1)業務流程分析

2)數據流圖分析DFD,是結構化分析,表達系統內數據的流動並通過數據流描述系統功能的一種方法

DFD主要作用如下:

  (1)DFD是理解和表達用戶需求的工具,是系統分析的手段。

  (2)DFD概括地描述了系統的內部邏輯過程,是系統分析結果的表達工具,是系統設計的重要參考資料,是系統設計的起點。

  (3)DFD作爲一個存檔的文字材料,是進一步修改和充實開發計劃的依據。

3)DFD中的4中基本符號:數據流、加工、數據存儲和外部實體(數據源及數據終點)

4)數據字典是關於數據的信息的集合,也就是對DFD中包含的所有元素的定義的集合。DFD和數據字典共同構成系統的邏輯模型。

5)數據字典設計包括數據流設計、數據元素字典設計、數據處理字典設計、數據結構字典設計和數據存儲設計。

6)對加工的描述是數據字典的組成內容之一,常用的加工描述方法有結構化語言、判定樹及判定表。


4、需求定義

需求定義的過程也就是形成需求規格說明書的過程,通常有兩種需求定義的方法,分別是嚴格定義方法和原型方法。

軟件需求說明書(Software Requirements Specification,SRS)是需求開發階段的成果,代表用戶和開發人員對軟件系統的共同理解,是軟件項目後期開發和維護的基礎。


5、需求管理

需求管理通常包括定義需求基線、處理需求變更及需求跟蹤等方面的工作。

對於需求變更的管理,則主要使用需求變更流程和需求跟蹤矩陣的管理方式。

需求跟蹤包括編制每個需求與系統元素之間的聯繫文檔。


七、軟件設計

從工程管理角度來看,軟件設計可分爲概要設計和詳細設計。

1)概要設計也稱爲高層設計或總體設計,即將軟件需求轉化爲數據結構和軟件的系統結構。

2)概要設計主要包括設計軟件的結構、確定系統由哪些模塊組成,以及每個模塊之間的關係。它採用的是結構圖(包括模塊、調用和數據)來描述程序的結構,還可以使用層次圖和HIPO(層次圖加輸入/處理/輸出圖)。

3)詳細設計也稱爲低層設計,即對結構圖進行細化,得到詳細的數據結構與算法。

4)經常使用的工具包括程序流程圖,盒圖,PAD圖(Problem Analysis Diagram,問題分析圖)及PDL(Program Design Language,僞代碼)

1、軟件設計活動

1)軟件設計包括4個既獨立又互相聯繫的活動,即數據設計、軟件結構設計、人機界面設計和過程設計。

2)軟件結構設計的主要目標是開發一個模塊化的程序結構,並表示出模塊間的控制關係。

2、結構化設計

1)結構化設計包括架構設計、接口設計、數據設計和過程設計等任務。

2)面向數據流的設計方法,自頂向下、逐步求精和模塊化。

3)模塊是指執行某一特定任務的數據結構和程序代碼。

4)抽象化:(1)過程的抽象(2)數據抽象(3)控制抽象

5)信息隱蔽是開發整體程序結構時使用的法則,即將每個程序的成分隱蔽或封裝在一個單一的設計模塊中,並且儘可能少地暴露其內部的處理過程。

6)模塊獨立的兩個標準是“高內聚,低耦合”。

3、工作流設計

1)工作流(Work Flow)就是自動運作的業務過程部分或整體,表現爲參與者對文件、信息或任務按照規程採取行動,並令其在參與者之間傳遞。

2)工作流就是一系列相互銜接、自動進行的業務活動或任務。

3)工作流管理(Workflow Management,WFM)是人與計算機共同工作的自動化協調、控制和通信,在計算機化的業務過程上,通過在網絡上運行軟件,使所有命令的執行都處於受控狀態。

4)工作流管理系統(Workflow Management System,WFMS)通過軟件定義、創建工作流並管理其執行。

5)企業流程自動化的應用平臺工作流管理系統最直接的用途就是和企業業務流程重組(Business Process Reengineering,BPR)技術相結合管理企業的各種流程,實現企業流程的自動化。

6)工作流機是一個爲工作流實例的執行提供運行環境的軟件服務或“引擎”,其一個重要功能就是控制實例和活動實例的狀態轉換。

7)以工作流實現ERP和OA集成


七、軟件測試

Bill Hetzel指出:“測試是以評價一個程序或系統屬性爲目標的任何一種活動。測試是對軟件質量的度量”

Grenford J.Myers指出:

  (1)軟件測試是爲了發現錯誤而執行程序的過程

  (2)測試是爲了證明程序有錯,而不是證明程序無錯誤

  (3)一個好的測試用例在於它能發現至今未發現的錯誤

  (4)一個成功的測試是發現了至今未發現的錯誤的測試

1、測試的類型

1)動態測試

  (1)黑盒法:等價類劃分;邊界值劃分;錯誤推測;因果圖。

  (2)白盒法:邏輯覆蓋;循環覆蓋;基本路徑法。

  (3)灰盒法:介於白盒測試與黑盒測試之間。

2)靜態測試

採用人工檢測和計算機輔助靜態分析的手段對程序進行檢測。

  (1)桌前檢查(2)代碼審查(3)代碼走查


2、測試的階段

1)單元測試:針對軟件設計的最小單元(程序模塊)進行正確性檢驗的測試工作。通常在軟件詳細設計階段完成計劃,一般使用白盒測試方法。

2)集成測試:將已通過單元測試的模塊集成在一起,主要測試模塊之間的協作性。通常在軟件概要設計階段完成計劃,一般使用黑盒測試方法。

3)確認測試:主要包括驗證軟件的功能、性能及其他特性是否與用戶要求(需求)一致。通常在需求分析階段完成計劃,包括以下4種類型:

  (1)內部確認測試(2)Alpha測試(3)Beta測試(4)驗收測試

4)系統測試:在實際運行環境下,對計算機系統進行一系列集成與確認測試。通常在系統分析階段(需求分析階段)完成計劃。


3、性能測試

性能測試是通過自動化的測試工具模擬多種正常、峯值及異常負載條件對系統的各項性能指標進行測試。

1)性能測試的目的

  (1)評估系統的能力(2)識別系統中的弱點(3)系統調優(4)檢測軟件中的問題(5)驗證穩定性和可靠性

2)性能測試的類型

  (1)負載測試(2)強度測試(3)容量測試

3)負載壓力測試

系統在應用環境下主要承受併發訪問用戶數、無故障穩定運行時間和大數據量操作等負載壓力。併發用戶數是負載壓力的重要體現。


4、測試自動化

爲提高軟件測試效率,運用既有的測試工具或開發相應的測試程序進行測試,此過程稱爲自動化測試。

1)好處:

  (1)提高測試執行速度(2)提高運行效率(3)保證測試結果正確性(4)連續運行測試腳本(5)模擬現實環境下受約束的情況

2)無法做到:

  (1)所有測試活動都可以自動完成(2)減少人力成本(3)可以免費獲取(4)降低測試工作量

3)三個類別:分析自動化(靜態分析、動態分析)、功能測試類和系統測試類


5、軟件調試

三種方法:蠻力法、回溯法和原因排除法


6、測試設計

幾個層次:用戶層、應用層、功能層、子系統層和協議層


7、測試管理

1)測試管理組包括評審小組、測試小組和支持小組

2)軟件測試管理分爲測試團隊管理、測試計劃管理、錯誤(缺陷)跟蹤管理和測試件管理


八、軟件維護

1)軟件可維護性是指糾正軟件系統出現的錯誤和缺陷,以及爲滿足新的要求進行修改、擴充和壓縮的容易程度

2)衡量因素:可理解性、可測試性和可修改性

3)維護類型:改正性維護、適應性維護和改善性維護。還有預防性維護。

4)影響維護工作量的因素主要有系統大小、程序設計語言、系統年齡、數據庫技術的應用及先進的軟件開發技術。


九、軟件開發環境與工具

軟件支持環境可分爲:軟件開發支持環境和軟件生存期支持環境。

ICASE(Intergrated Computer-Aided Software Engineering,集成化計算機輔助軟件工程)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章