版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
质量评审设计评审单元测试测试验证测试管理
代码评审质量评审质量评审设计评审单元测试测试验证测试管理
代码评审质量评审质量评审特点优点复杂度分析代码评价度量代码结构化化简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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度个人承包物流配送合同3篇
- 2025涉外合同的相关事项
- 二零二五年度幼儿园园长任期教育信息化与智慧校园建设合同3篇
- 2025年度养猪场养殖保险与风险防控合作协议3篇
- 2025年度店面转让定金及后续培训服务协议3篇
- 2025年度农副产品电商平台售后服务合作协议3篇
- 二零二五年度物流仓储经营权承包管理协议书3篇
- 二零二五年度农村房屋买卖与景观设计合同2篇
- 2025年度专利技术许可及推广应用协议3篇
- 二零二五年度内墙腻子施工与智能家居安防系统合同3篇
- 《调水工程设计导则SL-T430-20XX-条文说明》
- 第二单元自测卷(试题)2023-2024学年统编版语文四年级下册
- 六年级上册数学应用题分类练习100道
- 土方开挖过程中的文物保存方案
- 临时安全用电要求安全培训
- 水稻田稻鸭共栖技术要点
- 肺功能科室工作报告
- 如何训练宝宝独立就寝
- 血常规报告单
- 宝宝大便观察及护理课件
- 学校最小应急单元应急预案
评论
0/150
提交评论