系統分析與設計 第八章_第1頁
系統分析與設計 第八章_第2頁
系統分析與設計 第八章_第3頁
系統分析與設計 第八章_第4頁
系統分析與設計 第八章_第5頁
已閱讀5頁,還剩55頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

第八章系統實施

8.1系統實施階段的主要問題8.2物理系統的實施8.3程序設計8.4系統實施階段任務8.5軟件的調試8.6軟件的測試系統實施階段任務系統實施是開發信息系統的最后一個階段。這個階段的任務是實現系統設計階段提出的物理模型,按照實施方案完成一個可以實際運行的信息系統,交付用戶使用。8.1系統實施階段任務具體任務包括:(1)硬件準備硬件準備包括計算機主機、輸入輸出設備、存儲設備、輔助設備(穩壓電源、空調設備)、通信設備等。(2)軟件準備軟件包括系統軟件、數據庫管理系統以及一些應用軟件。(3)程序的編碼與實現選用合適的程序設計語言,把模塊的過程性描述翻譯為源程序,源程序要求正確可靠、簡明清晰、效率高。8.1系統實施階段任務(4)數據準備沒有一定的基礎數據的準備,系統調試就不能很好的進行,所以系統實施前要將企業中相關基礎數據轉存到計算機存儲器中。(5)程序調試與測試程序調試是將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤過程,軟件測試屬于質量保證活動,用于發現軟件中存在的錯誤。8.1系統實施階段任務(6)人員培訓對新系統用戶的培訓內容包括兩方面:一方面是關于先進管理思想和方法的教育;另一方面是面向業務的培訓,使系統用戶學會新系統的使用方法。8.1系統實施階段的主要問題系統實施階段是一個非常重要的階段。此階段工作是否順利,關系到整個系統的前期投入是否成功。該階段的主要人員有程序開發人員和用戶。在這個階段,需要用戶積極主動地工作,而非簡單地參與和被動地配合,并且要求工作細致。因此,該階段存在許多問題。例如:(1)如何保證所開發軟件具有高質量,具有良好的用戶體驗?這是系統的計算機可執行模型的設計。(2)如何將所設計的新系統更快地投入運行?這是系統的轉換。(3)如何培訓系統用戶?這是系統文檔的撰寫。8.2物理系統的實施信息系統物理系統的實施是計算機系統和通信網絡系統設備的訂購、機房的準備和設備的安裝調試等一系列活動的總和。8.3.1計算機系統的實施1.計算機系統選擇2.機房準備3.設備安調與人員培訓8.3物理系統的實施8.3.2網絡系統實施網絡系統的實施主要包括以下幾點:(1)網絡設備的采購、到貨及驗收。(2)繪制網絡施工圖。(3)網絡工程施工。(4)設備的安裝與調試。(5)網絡系統的調試。8.3程序設計8.4.1程序設計的目標(1)可維護性(2)可靠性(3)可理解性(4)效率8.4程序設計8.4.2結構化程序設計語言機制1.結構化程序設計的原則(1)使用語言中的順序、選擇、重復等有限的基本控制結構表示程序邏輯。(2)選用的控制結構只準許有一個入口和一個出口。(3)程序語句組成容易識別的塊,每塊只有一個入口和一個出口。(4)復雜結構應該用基本控制結構進行組合嵌套來實現。8.4程序設計(5)語言中沒有的控制結構,可用一段等價的程序段模擬,但要求該程序段在整個系統中應前后一致。(6)嚴格控制GOTO語句,僅在用一個非結構化的程序設計語言去實現一個結構化的構造,或者在某種可以改善而不是損害程序可讀性的情況下才可以使用GOTO語句。8.4程序設計2.程序設計自頂向下,模塊化設計(1)自頂向下,逐步求精方法符合人們解決復雜問題的普遍規律??商岣哕浖_發的成功率和生產率;(2)用先全局后局部,先整體后細節,先抽象后具體的逐步求精的過程開發出來的程序具有清晰的層次結構,因此程序容易閱讀和理解;(3)程序自頂向下,逐步細化,分解成一個樹形結構。在同一層的結點上做的細化工作相互獨立。在任何一步發生錯誤,一般只影響它下層的結點,同一層其它結點不受影響。8.4程序設計(4)程序清晰和模塊化,使得在修改和重新設計一個軟件時,可復用的代碼量最大;(5)每一步工作僅在上層結點的基礎上做不多的設計擴展,便于檢查;(6)有利于設計的分工和組織工作。8.4程序設計在模塊化程序設計中需要注意以下幾點:(1)模塊的獨立性。在系統模塊之間盡可能地相互獨立,減少模塊間的耦合。(2)模塊大小劃分要適當。模塊中包含的子模塊數要合適,既便于模塊的單獨開發,又便于系統重構。(3)模塊功能要簡單。底層模塊一般只完成一項功能。(4)共享的功能塊應集中。對于可供各模塊共享的處理功能,應集中在上一層模塊中,供各模塊引用。8.4程序設計8.4.3面向對象程序設計語言機制(1)類。局部化設計原則是將數據結構與操作數據結構的行為集中在一起。類就很好地支持了這一原則,并且類的內部結構還提供外部訪問類內部的權限(public、protected和private)。類的封裝性很好地體現了模塊化的信息隱藏原則。(2)繼承性。繼承性是使得類自動具有其他類的屬性(數據結構)和方法(功能)的機制。通過繼承,使得現有系統在原有代碼基礎上,不加修改或稍做修改,就能實現新的需求。這不僅提高了開發效率,更保證了軟件質量。8.4程序設計(3)多態性。多態性是指相同的模塊接口定義,卻有完全不同的實現過程。這樣就使得具有相同語義而算法不同的模塊共享相同的接口定義,減少了調用模塊時的理解和記憶負擔。(4)消息機制。消息是實現多態性的重要機制之一。例如,鳥與獸關于“吃”都用Eat()來統一定義,如何區別調用兩類不同的Eat()呢?關鍵在于對象,消息(如“吃”)是由對象發送的。8.4程序設計8.4.4程序語言的選擇(1)工程項目規模。程序語言是用于實現工程的。工程規模的大小,需要程序語言結構的靈活性支持。因為項目規模越大,其不可預測性的因素也越多。因而需要程序語言在修改性、適應性、靈活性等方面給予更大的支持。(2)用戶需求。一是用戶需求的易變性;二是軟件維護中用戶的參與性。如果用戶參與到開發、維護過程中,則應聽取用戶對程序語言選擇的意見。8.4程序設計(3)開發和維護成本。這與程序語言及程序語言開發環境都密切相關。程序語言開發環境自身也是軟件系統,也需要維護和技術支持。這些都構成了項目成本。(4)編程人員對程序語言的熟悉程度。選擇編程人員熟悉的程序語言,不僅開發效率高,而且也能保證軟件質量。(5)項目的領域背景。有一些應用領域(如工程計算),有本領域專用程序設計語言。這樣就使得所選語言不僅有針對性,還能提高開發效率。8.4程序設計8.4.5軟件設計風格1.源程序文檔化源程序文檔化包括了標識符的命名、程序的注釋以及程序的視覺組織三個方面。(1)標識符的命名(2)程序的注釋(3)程序的視覺組織8.4程序設計2.數據說明在編寫程序時,需注意數據說明的風格。為了使程序中數據說明更易于理解和維護,必須注意以下幾點。(1)數據說明的次序應當規范化,使數據屬性容易查找。(2)當多個變量名用一個語句說明時,應當對這些變量按字母的順序排列。(3)如果設計了一個復雜的數據結構,應當使用注釋來說明在程序實現時這個數據結構的固有特點。8.4程序設計3.語句結構在設計階段確定了軟件的邏輯流結構,但構造單個語句則是編碼階段的任務。語句構造力求簡單,直接,不能為了片面追求效率而使語句復雜化。4.輸入和輸出(I/O)8.4程序設計8.4.6程序效率1.討論效率的準則程序的效率是指程序的執行速度及程序所需占用的內存的存儲空間。討論程序效率的幾條準則為:(1)效率是一個性能要求,應當在需求分析階段給出。軟件效率以需求為準,不應以人力所及為準。(2)好的設計可以提高效率。(3)程序的效率與程序的簡單性相關。8.4程序設計2.算法對效率的影響源程序的效率與詳細設計階段確定的算法的效率直接有關。在詳細設計翻譯轉換成源程序代碼后,算法效率反映為程序的執行速度和存儲容量的要求。許多編譯程序具有“優化”功能,可以自動生成高效率的目標代碼。它可剔除重復的表達式計算,采用循環求值法、快速的算術運算,以及采用一些能夠提高目標代碼運行效率的算法來提高效率。對于效率至上的應用來說,這樣的編譯程序是很有效的。8.4軟件的調試8.5.1軟件調試方法軟件調試有很多種方法。常用的有4種,即強行排錯法、回溯排錯法、歸納排錯法和演繹排錯法。1.強行排錯法這種方法需要動腦筋的地方比較少,因此叫強行排錯。通常有以下3種表現形式:8.5軟件的調試(1)打印內存變量的值。在執行程序時,通過打印內存變量的數值,將該數值同預期的數值進行比較,判斷程序是否執行出錯。對于小型程序,這種方法很有效。但程序較大時,由于數據量大,邏輯關系復雜,效果較差。(2)在程序關鍵分支處設置斷點,如彈出提示框。這種方法對于弄清多分支程序的流向很有幫助,可以很快鎖定程序出錯發生的大概位置范圍。(3)使用編程軟件的調試工具。通常編程軟件的IDE集成開發環境都有調試功能,使用最多的就是單步調試功能。它可以一步一步地跟蹤程序的執行流程,以便發現錯誤所在。8.5軟件的調試2.回溯排錯法這是在小型程序中常用的一種有效的調試方法。一旦發現了錯誤,可以先分析錯誤現象,確定最先發現該錯誤的位置。然后,人工沿程序的控制流程,追蹤源程序代碼,直到找到錯誤根源或確定錯誤產生的范圍。8.5軟件的調試3.歸納排錯法歸納法是一種從特殊推斷一般的系統化思考方法。歸納法調試的基本思想是,從一些線索(錯誤的現象)著手,通過分析它們之間的關系來找出錯誤,為此可能需要列出一系列相關的輸入,然后看哪些輸入數據的運行結果是正確的,哪些輸入數據的運行結果有錯誤,然后加以分析、歸納,最終得出錯誤原因。8.5軟件的調試4.演繹排錯法演繹法是一種從一般原理或前提出發,經過排除和精確化的過程來推導出結論的思考方法。調試時,首先根據錯誤現象,設想及枚舉出所有可能出錯的原因作為假設。然后再使用相關數據進行測試,從中逐個排除不可能正確的假設。最后,再用測試數據驗證余下的假設是否是出錯的原因。8.5軟件的調試8.5.2調試的原則1.調試的基本原則調試能否成功一方面在于方法,另一方面很大程度上取決于個人的經驗。但在調試時,通常應該遵循以下一些原則。(1)確定錯誤的性質和位置的原則(2)修改錯誤的原則8.5軟件的調試2.提升調試效率的方法(1)繪制程序流程圖(2)不要過多地依賴單步調試(3)修改代碼的原則(4)檢查循環語句(5)與外部設備打交道(6)數組下標和循環的上下限(7)屏蔽無關的代碼8.5軟件的測試8.6.1軟件測試概述1.軟件測試概念2.軟件測試的目的和原則設計測試的目標是想以最少的時間和人力,系統地找出軟件中潛在的各種錯誤和缺陷。如果我們成功地實施了測試,就能夠發現軟件中的錯誤。8.6軟件的測試8.6.2軟件測試的方法和技術測試的破壞性質主要體現在:(1)為了發現缺陷,而執行程序的過程;(2)好的測試方案是盡可能發現迄今為止尚未發現的錯誤的方案;(3)成功的測試是發現了至今為止未發現的錯誤的測試。8.6軟件的測試軟件測試的方法和技術是多種多樣的。對于軟件測試技術,可以從不同的角度加以分類從是否需要執行被測軟件的角度,可分為靜態測試和動態測試;從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為白盒測試和黑盒測試。1.靜態測試(1)源程序靜態分析(2)人工測試8.6軟件的測試2.動態測試靜態測試不運行被測程序,而動態測試需要運行被測程序。使用白盒測試技術和黑盒測試技術進行軟件測試,一般都屬于動態測試。黑盒測試又稱為數據驅動測試,把測試對象當作看不見的黑盒,在完全不考慮程序內部結構和處理過程的情況下,測試者僅依據程序功能的需求規范考慮,確定測試用例和推斷測試結果的正確性,它是站在使用軟件或程序的角度,從輸入數據與輸出數據的對應關系出發進行的測試。白盒測試和黑盒測試恰恰相反,按照程序內部的邏輯結構測試程序,測試人員完全知道程序內部結構和處理過程。8.6軟件的測試8.6.3軟件測試的流程軟件測試是通過一些典型數據的運行檢驗系統在各種情況下的正確性的過程。最簡單的測試途徑是擬定測試計劃,這些計劃應基于系統功能設計的規范。然后,將測試過程分為許多較小的、易于處理的部分。8.6軟件的測試(1)單元測試單元測試針對程序模塊,進行正確性檢驗的測試。其目的在于發現各模塊內部可能存在的各種差錯。單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。其目標是告訴程序員哪些程序部分需要改正或改進。8.6軟件的測試(2)集成測試集成測試是把已測試過的模塊單元組裝起來,主要對與概要設計相關的軟件體系結構的裝配進行測試,測試各模塊單元的接口是否吻合、代碼是否符合規定的標準、界面標準是否統一等。一般由有經驗的測試人員和主要的軟件開發者來完成集成測試。8.6軟件的測試(3)確認測試確認測試又稱有效性測試,目的是驗證目標系統的功能需求和性能需求及其他特性求是否與用戶的需求一致,因此,用戶要積極參與到這個步驟中。在這個測試步驟中所發現的錯誤主要是軟件需求規格說明中的錯誤。8.6軟件的測試(4)系統測試系統測試是把已確認的軟件系統移植到實際運行環境中,與其他系統元素(如硬件、人員、數據庫等)組合在一起。按照系統的功能和性能需求進行的測試。為了發現缺陷并度量產品質量,一般使用黑盒測試技術,由獨立的測試人員完成。系統測試通常包括功能測試、壓力測試、性能測試、容量測試、用戶界面測試以及兼容性測試等。8.6軟件的測試8.6.4單元測試1.單元測試的內容單元測試內容包括:(1)模塊接口測試對通過被測模塊的數據流進行測試。為此,對模塊接口,包括參數表、調用子模塊的參數、全局數據、文件輸入/輸出操作都必須檢查。8.6軟件的測試(2)局部數據結構測試設計測試用例檢查數據類型說明、初始化、缺省值等方面的問題,還要查清全局數據對模塊的影響。(3)路徑測試選擇適當的測試用例,對模塊中重要的執行路徑進行測試。對基本執行路徑和循環進行測試可以發現大量的路徑錯誤。8.6軟件的測試(4)錯誤處理測試檢查模塊的錯誤處理功能是否包含有錯誤或缺陷。例如,是否拒絕不合理的輸入;出錯的描述是否難以理解、是否對錯誤定位有誤、是否出錯原因報告有誤、是否對錯誤條件的處理不正確;在對錯誤處理之前錯誤條件是否已經引起系統的干預等。8.6軟件的測試(5)邊界測試要特別注意數據流、控制流中剛好等于、大于或小于確定的比較值時出錯的可能性。對這些地方要仔細地選擇測試用例,認真加以測試。此外,如果對模塊運行時間有要求的話,還要專門進行關鍵路徑測試,以確定最壞情況下和平均意義下影響模塊運行時間的因素。這類信息對進行性能評價是十分有用的。8.6軟件的測試2.單元測試的步驟通常單元測試在編碼階段進行。在源程序代碼編制完成,經過評審和驗證,確認沒有語法錯誤之后,就開始進行單元測試的測試用例設計。利用設計文檔,設計可以驗證程序功能、找出程序錯誤的多個測試用例。對于每一組輸入,應有預期的正確結果。 8.6軟件的測試8.6.5集成測試集成測試可以有多種方式,比如可以把所有模塊按程序結構組裝起來后整體進行測試,先對一個模塊測試,然后逐步組裝成系統,選擇什么方式把模塊組裝起來形成一個可運行的系統,直接影響到模塊測試用例的形式、所用測試工具的類型、模塊編號的次序和測試的次序、以及生成測試用例的費用和調試的費用。8.6軟件的測試1.一次性集成方式它是一種非增殖式集成方式。也叫做整體拼裝。使用這種方式,首先對每個模塊分別進行模塊測試,然后再把所有模塊組裝在一起進行測試,最終得到要求的信息系統。由于程序中不可避免地存在涉及模塊間接口、全局數據結構等方面的問題,所以一次試運行成功的可能性并不很大。8.6軟件的測試2.增殖式集成方式又稱漸增式集成方式。首先對一個個模塊進行模塊測試,然后將這些模塊逐步組裝成較大的系統,在組裝的過程中邊連接邊測試,以發現連接過程中產生的問題。最后通過增殖逐步組裝成為要求的信息系統。8.6軟件的測試8.6.6白盒測試技術根據軟件產品的內部工作過程,在計算機上進行測試,以證實每種內部操作是否符合設計規格要求,所有內部成分是否已經過檢查。這種測試方法就是白盒測試。白盒測試把測試對象看作一個打開的盒子,允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。8.6軟件的測試1.邏輯覆蓋【例】已知一段C語言代碼如下:intsetm(intA,intB,intC){ intM=1; if(A>C&&B>C)

M=A+C;elseif(B>M||M==1)

M=B;returnM;}8.6軟件的測試8.6.7黑盒測試技術黑盒測試又稱功能測試,即根據軟件產品的功能設計規格,在計算機上進行測試,以證實每個實現了的功能是否符合要求。黑盒測試意味著測試要在軟件的接口處進行。就是說,這種方法是把測試對象看作一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求分析規格說明,檢查程序的功能是否符合它的功能說明,力爭發現以下類型的錯誤:8.6軟件的測試功能錯誤或遺漏。在接口上,輸入接收錯誤或輸出結果錯誤。數據結構錯誤或外部信息訪問錯誤。性能錯誤。初始化或終止錯誤。8.6軟件的測試2.邊界值分析邊界值分析是一種很實用的黑盒測試方法,它具有很強的發現程序錯誤的能力,使用邊界值分析方法設計測試用例,首先應確定邊界情況。通常輸入等價類與輸出等價類的邊界,就是應著重測試的邊界情況。應當選取正好等于,剛剛大于,或剛剛小于邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據。8.6軟件的測試3.錯誤推測法人們也可以靠經驗和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤推測法。錯誤推測法的基本想法是:列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據它們選擇測試用例。8.6軟件的測試4.因果圖法利用因果圖生成測試用例的基本步驟是:(1)分析軟件規格說明描述中,哪些是原因(即輸入條件或輸入條件的等價類),哪些是結果(即輸出條件),并給每個原因和結果賦予一個標識符。(2)分析軟件規格說明描述中的語義,找出原因與結果之間,原因與原因之間對應的是什么關系?根據這些關系,畫出因果圖。8.6軟件的測試(3)由于語法或環境限制,有些原因與原因之間,原因與結果之間的組合情況不可能出現。為表明這些特殊情況,在因果

溫馨提示

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

評論

0/150

提交評論