質量評審培訓課件_第1頁
質量評審培訓課件_第2頁
質量評審培訓課件_第3頁
質量評審培訓課件_第4頁
質量評審培訓課件_第5頁
已閱讀5頁,還剩97頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

質量評審設計評審單元測試測試驗證測試管理

代碼評審質量評審質量評審設計評審單元測試測試驗證測試管理

代碼評審質量評審質量評審特點優點復雜度分析代碼評價度量代碼結構化化簡LCSAJs質量模型質量評審特點優點復雜度分析代碼評價度量代碼結構化化簡LCSA質量評審能力檢查多個代碼復雜性度量元圈復雜度結點度量LCSAJ控制流(測試路徑)識別死代碼和不可測試代碼提供功能強大的結構化化簡工具結構化程序驗證

將你的代碼化簡到基本復雜度使用工業標準或自定義質量模型提供邊界檢查產生定量評估將所有結果總結成頂層的度量指標

清晰性/測試性/維護性提供直觀的報告和代碼可視化工具質量評審能力檢查多個代碼復雜性度量元復雜性通常檢查多余的復雜性是非常困難的程序的復雜性并不可怕,但是多余的復雜性會引起軟件出問題復雜性通常檢查多余的復雜性是非常困難的度量元度量元是軟件度量的基礎,就象“米”是對長度的度量注意度量結果本身并不能直接就反應出質量好壞在質量評審中使用度量源元時,相互的關聯是最重要的度量元度量元是軟件度量的基礎,就象“米”是對長度的度量質量評審–代碼評價度量清晰性系統的可理解性如何可維護性軟件的可維護性如何?可測試性對系統進行測試需要多少工作?質量評審–代碼評價度量清晰性可維護性可測試性復雜度度量控制流結點圈復雜度基本結點和基本圈復雜度循環嵌套函數扇入和扇出不可達性復雜度度量控制流結點結點分類跳轉分為下列幾類:向上(向后)跳轉向下(向前)跳轉結點根據跳轉類型可以分為:下-下結點上-下結點上-上結點153421534215342結點分類跳轉分為下列幾類:153421534215342引起結點的C結構下列編程結構會引起結點: for while switch可利用基本結點度量消除這些局限性引起結點的C結構下列編程結構會引起結點:引起結點的Ada結構下列編程結構會引起結點:

IFTHENELSE CASE GOTO Exceptions可利用基本結點度量消除這些局限性引起結點的Ada結構下列編程結構會引起結點:圈復雜度從有向圖G,計算圈復雜度V(G):

V(G)=No.edges(邊數)-No.nodes(節點數)+2這樣也正確: V(G)=No.predicates(判定節點數)+1Case結構(有N種選擇)是個例外,計算為N–1 V(G)=No.regions(區域數)假如G是個連接的平面圖圈復雜度從有向圖G,計算圈復雜度V(G):圈復雜度例子12條邊9個節點VG=12-9+2=5145236789123456789101112圈復雜度例子145236789123456789101112圈復雜度例子3個判定結點計算為4case計算為2VG=4+1=53-111圈復雜度例子3-111圈復雜度例子5個區域VG=532451圈復雜度例子32451結點和圈復雜度13245此有向圖可表示為右邊兩種程序結構。1452315342V(G)=6-5+2=3V(G)=6-5+2=3Knots=4Knots=1結點和圈復雜度13245此有向圖可表示為右邊兩種程序結構。1結點和圈復雜度圈復雜度和結點度量是互補的兩個指標總之,程序結構化度量量化了軟件的屬性圈復雜度用于表明程序復雜性結點度量用于表明程序實施時附加的復雜性

結點和圈復雜度圈復雜度和結點度量是互補的兩個指標循環的復雜性度量

由流程圖研究源代碼的循環結構用于度量復雜性和代碼優化識別循環結構不被源代碼結構所影響函數度量:函數入口和出口(扇入扇出)循環總數循環最大深度循環的復雜性度量由流程圖研究源代碼的循環結構C++OO實現類的數目子類的數目每個類的方法繼承深度數據成員的數據類外的函數調用其他Chidamber和Kemerer度量C++OO實現類的數目程序結構化驗證程序結構化驗證程序結構化驗證通過匹配程序結構模版執行結構化驗證,模版使用源代碼基本塊的流程圖表示使用檢查工具自動運行檢查下列結構:if-then-endifif-then-else-endifdo-whilewhileforcase可配置成識別其他結構程序結構化驗證通過匹配程序結構模版執行結構化驗證,模版使用源程序結構化確認由于使用非正確的結構形式,C語言非常容易產生錯誤:需要

switch,case,default和break語句的case語句if-then語句也容易產生錯誤for循環結構也容易產生錯誤程序結構化確認由于使用非正確的結構形式,C語言非常容易產生SPV建議如果檢測到非結構化的代碼,這部分代碼應該由程序員重新編寫,這不包括為了解決某些特殊問題而有意使用的非結構化編程除了允許以修改非結構化程序會帶來不必要的復雜為理由以外,建議管理者可以先懷疑任何非結構化編程的使用流程圖看起來很混亂,并不總是意味著代碼是非結構化的。繪制流程圖的算法可能會誤導程序是高度復雜的通常程序的非結構化是由于代碼內部錯誤引起的SPV建議如果檢測到非結構化的代碼,這部分代碼應該由程序員重SPV流程圖SPV流程圖,圖形化地顯示設計良好的程序結構中節點的化簡過程SPV流程圖SPV流程圖,圖形化地顯示設計良好的程序結構中節代碼評審流程圖

代碼評審流程圖 基本結點度量將所有的結構化的程序結構進行化簡后,計算剩余的節點數就得到基本結點度量對于一個結構化的程序:基本結點數=0基本結點是非結構化程序引起的復雜性的度量基本結點度量將所有的結構化的程序結構進行化簡后,計算剩余的節基本圈復雜度某些結構化的編程結構會引起很高的圈復雜度這個局限性可用基本度量克服定義:EV(G)=V(G)-M

這里M是有唯一入口和出口節點的子圖G的數目對于一個結構化的程序:EV(G)=1基本圈復雜度某些結構化的編程結構會引起很高的圈復雜度SPV度量總結如果一個模塊通過SPV化簡之后是結構化的,它有:基本結點為0基本圈復雜度為1非結構化的程序含有很高的基本度量值

這兩個度量是對代碼中存在的結構缺陷的度量SPV度量總結如果一個模塊通過SPV化簡之后是結構化的,它有復雜度分析標準復雜度分析標準違反情況位于代碼評審報告中用于強制源代碼執行特定的質量特性1C CyclomaticComplexitygreaterthan***2C Procedureisnotreducibleintermsofintervals3C Procedurecontainsessentialknots4C Procedureisnotstructured5C Procedurecontainsinfiniteloop復雜度分析標準復雜度分析標準違反情況LCSAJs

線性代碼序列及跳轉LCSAJs

線性代碼序列及跳轉LCSAJs維護性度量指標檢測不可達代碼識別不可測試(或不合理)代碼強制用于歐洲安全苛刻性軍用航空電子項目路徑測試的覆蓋度量基礎最高級別的代碼覆蓋率度量LCSAJs維護性度量指標LCSAJ三要素根據定義和LDRA的代碼重格式化策略,LCSAJs能描述成三要素的形式:1. 起始點 [一個線性代碼序列]2. 結束點3. 目標點LCSAJ三要素根據定義和LDRA的代碼重格式化策略,LCSLCSAJ起始點LCSAJs開始于:程序的第一行可執行代碼A的第一行可執行代碼,A可以是:功能程序方法…任何控制流跳轉的目標行:標號else語句endif語句switch語句的子句循環函數調用的返回...LCSAJ起始點LCSAJs開始于:LCSAJ跨度

LCSAJ跨度是程序中的最小分割,任何LCSAJ的線型代碼序列都完全包含在LCSAJ的跨度中 LCSAJ跨度的第一行可以是程序的開始,或者是前面的LCSAJ序列不能到達的那一行 LCSAJ跨度的終止行可以是程序的結束行,或者是控制流不能經過其下一行的代碼行SpanFINISH82else1------------------------------------------------------------------------START83{184mess="HelloThere";185}1START86}2START87}3START88printf("%d%d%d%20s\n",i,j,k,mess);4FINISH89}4------------------------------------------------------------------------STARTFINISH90}1LCSAJ跨度 LCSAJ跨度是程序中的最小分割,任何LCSLCSAJ密度LCSAJ密度是維護性度量元如果某一行代碼作了修改,LCSAJ密度會告訴用戶由于此代碼修改影響到多少條LCSAJ如果密度越高,那么就越會降低對于所有的LCSAJ此改變都是正確的信心,因此必須增加需要的回歸測試數目Code

“LCSAJ”Lines Densitya=b 2if 2(a==x) 2{ 1b=y; 1} 1print(“ok”); 2LCSAJ密度LCSAJ密度是維護性度量元Code “LC不可達的LCSAJs如果從程序開始沒有任何路徑到達指定的代碼行,那么代碼將被標為不可達(或死代碼)這種現象通常出現在緊跟著goto語句的代碼行中,典型例子如右面最后一行代碼不可達的LCSAJs標記顯示在下面的例子中

ifI=0thengotolabel:endif;

FINISH235gotol6;2---------------------------------------------------------------------236z=5;0UNREACHABLE*****237z=9;0UNREACHABLE*****START238l6:1239z=10;1FINISH240}1不可達的LCSAJs如果從程序開始沒有任何路徑到達指定的代碼不可測試的LCSAJsLCSAJ是一路徑片段,通常在它的線性代碼序列中包含許多條件

如果LCSAJ的執行依賴于程序中的某些條件,而且永遠不會滿足這些條件,那么LCSAJ可能是不可測試的(因此是不可執行的)不可測試的LCSAJsLCSAJ是一路徑片段,通常在它的線性LCSAJ報告總結部分詳細的代碼清單:LCSAJs出現的地方源代碼內的位置LCSAJ三要素列表

不可達的LCSAJs列表通過追蹤局部的控制流分支,任何不可達的代碼都會在報告中著重顯示LCSAJ報告總結部分LCSAJ(路徑測試)流程圖

LCSAJ(路徑測試)流程圖 質量評審報告質量評審報告度量的解釋像大多數其他的物理度量一樣,度量的大小并不能表明事物的好或者壞通常認為最好要保證函數符合這樣的度量,這增加了程序的可讀性和可維護性度量的解釋像大多數其他的物理度量一樣,度量的大小并不能表明事質量評審報告顯示復雜度度量和源代碼的信息

顯示函數級別的復雜度度量和整體源代碼的復雜度度量

許多結果也能夠以圖形化的方式顯示可用的度量包括:圈復雜度度量源代碼基本塊結點度量

函數的入口出口循環數目和嵌套深度程序結構化驗證質量評審報告顯示復雜度度量和源代碼的信息可用的度量包括:質量評審報告質量評審報告質量評審-質量模型質量評審-質量模型質量評審報告

ReformattedCodeInformationforFileTotalreformattedLines,Totalcommentsinref.Code,Executableref.Lines,Non-executableref.Lines

NumberofProcedures,TotalsourceLines,ExpansionFactor.

CommentsAssociatedwithProcedures(%oftotal)TotalComments,CommentsinHeaders,CommentsinDeclarations,CommentsinExecutableCode

BlankLines.

RatioofCommentstoExecutablelines(%)TotalComments/Exe.Lines,HeaderComments/Exe.Lines,DeclarationComments/Exe.Lines,CodeComments/Exe.Lines

Halstead'sMetricsTotalOperators,TotalOperands,UniqueOperators,UniqueOperands

Vocabulary,Length,Volume.

LCSAJandUnreachabilityTotalLCSAJs,ReachableLCSAJs,UnreachableLCSAJs,MaximumLCSAJDensity

UnreachableLines,UnreachableBranches.

FileBasedC++OOMetricsTotalStructuredTypesDeclared,TotalObjectsCreated.

ClassLevelC++OOMetricsObjectsCreated,NumberofDataMembers,NumberofMembers,NumberofChildClasses

ClassLevelOOMetrics-withBaseClassesTotalBaseClasses,TotalDataMembers,TotalMembers,InheritanceDepth

ClassLevelOOMetrics-withBaseClasses(2)質量評審報告 ReformattedCodeInform質量評審報告包含質量評審產生的信息:復雜度標準違反情況詳細報告中有每個函數的復雜度匯總表質量評審報告包含質量評審產生的信息:柱狀圖柱狀圖用于圖形化顯示“質量度量”的數目,包括:測試中的文件(單元/模塊)Tbset系統范圍的結果柱狀圖柱狀圖用于圖形化顯示“質量度量”的數目,包括:Kiviat圖圖形化表示質量模型假如源代碼滿足質量標準,就顯示為綠色假如源代碼不滿足質量標準,就顯示為紅色直觀可視地表示與標準的一致性圖示給出度量元達到的實際值Kiviat圖圖形化表示質量模型Kiviat圖的解釋每個度量元都顯示在軸上度量元達到的值都繪制在軸上綠色的區域表明度量元的值在上邊界和下邊界之間超過邊界的區域顯示為紅色Kiviat圖的解釋每個度量元都顯示在軸上可用的不同Kiviat圖Kiviat圖可用于:維護性測試性清晰性以整個程序顯示或者以函數級別顯示C++方面有面向對象的Kiviats圖可用的不同Kiviat圖Kiviat圖可用于:質量評審總結結論:代碼質量可以度量和查看代碼評價度量中包含代碼質量度量質量報告提供總體度量結果快速顯示系統的復雜度自動生成有價值的軟件質量度量文檔化簡工具幫助減小復雜性質量評審總結結論:代碼質量可以度量和查看代碼評價度量中包含代練習使用.\Testbed\Examples\C_testbed_examples\Testrian目錄下Testrian.c程序做復雜度分析和程序結構化化簡等功能,查看質量報告、LCSAJ報告和圖形化顯示質量的結果練習使用.\Testbed\Examples\C_test質量評審設計評審單元測試測試驗證測試管理

代碼評審質量評審質量評審設計評審單元測試測試驗證測試管理

代碼評審質量評審質量評審特點優點復雜度分析代碼評價度量代碼結構化化簡LCSAJs質量模型質量評審特點優點復雜度分析代碼評價度量代碼結構化化簡LCSA質量評審能力檢查多個代碼復雜性度量元圈復雜度結點度量LCSAJ控制流(測試路徑)識別死代碼和不可測試代碼提供功能強大的結構化化簡工具結構化程序驗證

將你的代碼化簡到基本復雜度使用工業標準或自定義質量模型提供邊界檢查產生定量評估將所有結果總結成頂層的度量指標

清晰性/測試性/維護性提供直觀的報告和代碼可視化工具質量評審能力檢查多個代碼復雜性度量元復雜性通常檢查多余的復雜性是非常困難的程序的復雜性并不可怕,但是多余的復雜性會引起軟件出問題復雜性通常檢查多余的復雜性是非常困難的度量元度量元是軟件度量的基礎,就象“米”是對長度的度量注意度量結果本身并不能直接就反應出質量好壞在質量評審中使用度量源元時,相互的關聯是最重要的度量元度量元是軟件度量的基礎,就象“米”是對長度的度量質量評審–代碼評價度量清晰性系統的可理解性如何可維護性軟件的可維護性如何?可測試性對系統進行測試需要多少工作?質量評審–代碼評價度量清晰性可維護性可測試性復雜度度量控制流結點圈復雜度基本結點和基本圈復雜度循環嵌套函數扇入和扇出不可達性復雜度度量控制流結點結點分類跳轉分為下列幾類:向上(向后)跳轉向下(向前)跳轉結點根據跳轉類型可以分為:下-下結點上-下結點上-上結點153421534215342結點分類跳轉分為下列幾類:153421534215342引起結點的C結構下列編程結構會引起結點: for while switch可利用基本結點度量消除這些局限性引起結點的C結構下列編程結構會引起結點:引起結點的Ada結構下列編程結構會引起結點:

IFTHENELSE CASE GOTO Exceptions可利用基本結點度量消除這些局限性引起結點的Ada結構下列編程結構會引起結點:圈復雜度從有向圖G,計算圈復雜度V(G):

V(G)=No.edges(邊數)-No.nodes(節點數)+2這樣也正確: V(G)=No.predicates(判定節點數)+1Case結構(有N種選擇)是個例外,計算為N–1 V(G)=No.regions(區域數)假如G是個連接的平面圖圈復雜度從有向圖G,計算圈復雜度V(G):圈復雜度例子12條邊9個節點VG=12-9+2=5145236789123456789101112圈復雜度例子145236789123456789101112圈復雜度例子3個判定結點計算為4case計算為2VG=4+1=53-111圈復雜度例子3-111圈復雜度例子5個區域VG=532451圈復雜度例子32451結點和圈復雜度13245此有向圖可表示為右邊兩種程序結構。1452315342V(G)=6-5+2=3V(G)=6-5+2=3Knots=4Knots=1結點和圈復雜度13245此有向圖可表示為右邊兩種程序結構。1結點和圈復雜度圈復雜度和結點度量是互補的兩個指標總之,程序結構化度量量化了軟件的屬性圈復雜度用于表明程序復雜性結點度量用于表明程序實施時附加的復雜性

結點和圈復雜度圈復雜度和結點度量是互補的兩個指標循環的復雜性度量

由流程圖研究源代碼的循環結構用于度量復雜性和代碼優化識別循環結構不被源代碼結構所影響函數度量:函數入口和出口(扇入扇出)循環總數循環最大深度循環的復雜性度量由流程圖研究源代碼的循環結構C++OO實現類的數目子類的數目每個類的方法繼承深度數據成員的數據類外的函數調用其他Chidamber和Kemerer度量C++OO實現類的數目程序結構化驗證程序結構化驗證程序結構化驗證通過匹配程序結構模版執行結構化驗證,模版使用源代碼基本塊的流程圖表示使用檢查工具自動運行檢查下列結構:if-then-endifif-then-else-endifdo-whilewhileforcase可配置成識別其他結構程序結構化驗證通過匹配程序結構模版執行結構化驗證,模版使用源程序結構化確認由于使用非正確的結構形式,C語言非常容易產生錯誤:需要

switch,case,default和break語句的case語句if-then語句也容易產生錯誤for循環結構也容易產生錯誤程序結構化確認由于使用非正確的結構形式,C語言非常容易產生SPV建議如果檢測到非結構化的代碼,這部分代碼應該由程序員重新編寫,這不包括為了解決某些特殊問題而有意使用的非結構化編程除了允許以修改非結構化程序會帶來不必要的復雜為理由以外,建議管理者可以先懷疑任何非結構化編程的使用流程圖看起來很混亂,并不總是意味著代碼是非結構化的。繪制流程圖的算法可能會誤導程序是高度復雜的通常程序的非結構化是由于代碼內部錯誤引起的SPV建議如果檢測到非結構化的代碼,這部分代碼應該由程序員重SPV流程圖SPV流程圖,圖形化地顯示設計良好的程序結構中節點的化簡過程SPV流程圖SPV流程圖,圖形化地顯示設計良好的程序結構中節代碼評審流程圖

代碼評審流程圖 基本結點度量將所有的結構化的程序結構進行化簡后,計算剩余的節點數就得到基本結點度量對于一個結構化的程序:基本結點數=0基本結點是非結構化程序引起的復雜性的度量基本結點度量將所有的結構化的程序結構進行化簡后,計算剩余的節基本圈復雜度某些結構化的編程結構會引起很高的圈復雜度這個局限性可用基本度量克服定義:EV(G)=V(G)-M

這里M是有唯一入口和出口節點的子圖G的數目對于一個結構化的程序:EV(G)=1基本圈復雜度某些結構化的編程結構會引起很高的圈復雜度SPV度量總結如果一個模塊通過SPV化簡之后是結構化的,它有:基本結點為0基本圈復雜度為1非結構化的程序含有很高的基本度量值

這兩個度量是對代碼中存在的結構缺陷的度量SPV度量總結如果一個模塊通過SPV化簡之后是結構化的,它有復雜度分析標準復雜度分析標準違反情況位于代碼評審報告中用于強制源代碼執行特定的質量特性1C CyclomaticComplexitygreaterthan***2C Procedureisnotreducibleintermsofintervals3C Procedurecontainsessentialknots4C Procedureisnotstructured5C Procedurecontainsinfiniteloop復雜度分析標準復雜度分析標準違反情況LCSAJs

線性代碼序列及跳轉LCSAJs

線性代碼序列及跳轉LCSAJs維護性度量指標檢測不可達代碼識別不可測試(或不合理)代碼強制用于歐洲安全苛刻性軍用航空電子項目路徑測試的覆蓋度量基礎最高級別的代碼覆蓋率度量LCSAJs維護性度量指標LCSAJ三要素根據定義和LDRA的代碼重格式化策略,LCSAJs能描述成三要素的形式:1. 起始點 [一個線性代碼序列]2. 結束點3. 目標點LCSAJ三要素根據定義和LDRA的代碼重格式化策略,LCSLCSAJ起始點LCSAJs開始于:程序的第一行可執行代碼A的第一行可執行代碼,A可以是:功能程序方法…任何控制流跳轉的目標行:標號else語句endif語句switch語句的子句循環函數調用的返回...LCSAJ起始點LCSAJs開始于:LCSAJ跨度

LCSAJ跨度是程序中的最小分割,任何LCSAJ的線型代碼序列都完全包含在LCSAJ的跨度中 LCSAJ跨度的第一行可以是程序的開始,或者是前面的LCSAJ序列不能到達的那一行 LCSAJ跨度的終止行可以是程序的結束行,或者是控制流不能經過其下一行的代碼行SpanFINISH82else1------------------------------------------------------------------------START83{184mess="HelloThere";185}1START86}2START87}3START88printf("%d%d%d%20s\n",i,j,k,mess);4FINISH89}4------------------------------------------------------------------------STARTFINISH90}1LCSAJ跨度 LCSAJ跨度是程序中的最小分割,任何LCSLCSAJ密度LCSAJ密度是維護性度量元如果某一行代碼作了修改,LCSAJ密度會告訴用戶由于此代碼修改影響到多少條LCSAJ如果密度越高,那么就越會降低對于所有的LCSAJ此改變都是正確的信心,因此必須增加需要的回歸測試數目Code

“LCSAJ”Lines Densitya=b 2if 2(a==x) 2{ 1b=y; 1} 1print(“ok”); 2LCSAJ密度LCSAJ密度是維護性度量元Code “LC不可達的LCSAJs如果從程序開始沒有任何路徑到達指定的代碼行,那么代碼將被標為不可達(或死代碼)這種現象通常出現在緊跟著goto語句的代碼行中,典型例子如右面最后一行代碼不可達的LCSAJs標記顯示在下面的例子中

ifI=0thengotolabel:endif;

FINISH235gotol6;2---------------------------------------------------------------------236z=5;0UNREACHABLE*****237z=9;0UNREACHABLE*****START238l6:1239z=10;1FINISH240}1不可達的LCSAJs如果從程序開始沒有任何路徑到達指定的代碼不可測試的LCSAJsLCSAJ是一路徑片段,通常在它的線性代碼序列中包含許多條件

如果LCSAJ的執行依賴于程序中的某些條件,而且永遠不會滿足這些條件,那么LCSAJ可能是不可測試的(因此是不可執行的)不可測試的LCSAJsLCSAJ是一路徑片段,通常在它的線性LCSAJ報告總結部分詳細的代碼清單:LCSAJs出現的地方源代碼內的位置LCSAJ三要素列表

不可達的LCSAJs列表通過追蹤局部的控制流分支,任何不可達的代碼都會在報告中著重顯示LCSAJ報告總結部分LCSAJ(路徑測試)流程圖

LCSAJ(路徑測試)流程圖 質量評審報告質量評審報告度量的解釋像大多數其他的物理度量一樣,度量的大小并不能表明事物的好或者壞通常認為最好要保證函數符合這樣的度量,這增加了程序的可讀性和可維護性度量的解釋像大多數其他的物理度量一樣,度量的大小并不能表明事質量評審報告顯示復雜度度量和源代碼的信息

顯示函數級別的復雜度度量和整體源代碼的復雜度度量

許多結果也能夠以圖形化的方式顯示可用的度量包括:圈復雜度度量源代碼基本塊結點度量

函數的入口出口循環數目和嵌套深度程序結構化驗證質量評審報告顯示復雜度度量和源代碼的信息可用的度量包括:質量評審報告質量評審報告質量評審-質量模型質量評審-質量模型質量評審報告

ReformattedCodeInformationforFileTotalreformattedLines,Totalcommentsinref.Code,Executableref.Lines,Non-executableref.Lines

NumberofProcedures,TotalsourceLines,ExpansionFactor.

CommentsAssociatedwithProcedures(%oftotal)TotalComments,CommentsinHeaders,Com

溫馨提示

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

評論

0/150

提交評論