Ⅰ 程序静态分析的分析技术及实践
程序静态分析(Program Static Analysis)可以帮助软件开发人员、质量保证人员查找代码中存在的结构性错误、安全漏洞等问题,从而保证软件的整体质量。还可以用于帮助软件开发人员快速理解文档残缺的大规模软件系统以及系统业务逻辑抽取等系统文档化等领域。 如开发20年以上的金融核心COBOL系统,动辄上千万行代码的系统规模。对于理解这样规模的系统,基于程序静态分析的辅助理解工具就能发挥积极作用。
本文首先对程序静态分析的特点、常用静态分析技术、静态分析实现方式进行描述,然后通过一个实例讲解了程序静态分析的执行过程。 程序静态分析是与程序动态分析相对应的代码分析技术,它通过对代码的自动扫描发现隐含的程序问题,主要具有以下特点:
(1)不实际执行程序。动态分析是通过在真实或模拟环境中执行程序进行分析的方法,多用于性能测试、功能测试、内存泄漏测试等方面。与之相反,静态分析不运行代码只是通过对代码的静态扫描对程序进行分析。
(2)执行速度快、效率高。目前成熟的代码静态分析工具每秒可扫描上万行代码,相对于动态分析,具有检测速度快、效率高的特点。
(3)误报率较高。代码静态分析是通过对程序扫描找到匹配某种规则模式的代码从而发现代码中存在的问题,例如可以定位strcpy()这样可能存在漏洞的函数,这样有时会造成将一些正确代码定位为缺陷的问题,因此静态分析有时存在误报率较高的缺陷,可结合动态分析方法进行修正。 (1)词法分析:从左至右一个字符一个字符的读入源程序,对构成源程序的字符流进行扫描,通过使用正则表达式匹配方法将源代码转换为等价的符号(Token) 流,生成相关符号列表,Lex为常用词法分析工具。
(2)语法分析:判断源程序结构上是否正确,通过使用上下文无关语法将相关符号整理为语法树, Yacc为常用工具。
(3)抽象语法树分析:将程序组织成树形结构,树中相关节点代表了程序中的相关代码,目前已有javacc/ Antlra等抽象语法树生成工具。
(4)语义分析:对结构上正确的源程序进行上下文有关性质的审查。
(5)控制流分析:生成有向控制流图,用节点表示基本代码块,节点间的有向边代表控制流路径,反向边表示可能存在的循环;还可生成函数调用关系图,表示函数间的嵌套关系。
(6)数据流分析:对控制流图进行遍历,记录变量的初始化点和引用点,保存切片相关数据信息。
(7)污点分析:基于数据流图判断源代码中哪些变量可能受到攻击,是验证程序输入、识别代码表达缺陷的关键。
(8)无效代码分析,根据控制流图可分析孤立的节点部分为无效代码。
程序静态分析是在不执行程序的情况下对其进行分析的技术,简称为静态分析。而程序动态分析则是另外一种程序分析策略,需要实际执行程序。大多数情况下,静态分析的输入都是源程序代码,只有极少数情况会使用目标代码。静态分析这一术语一般用来形容自动化工具的分析,而人工分析则往往叫做程序理解。
静态分析越来越多地被应用到程序优化、软件错误检测和系统理解领域。Coverity Inc.的软件质量检测产品就是利用静态分析技术进行错误检测的成功代表。国内某软件公司的闪蝶(BlueMropho)代码分析平台,是利用程序静态分析技术专注于大型机遗留系统的代码理解领域,尤其擅长分析千万行代码规模级的COBOL系统。
Ⅱ 静态评价方法的最主要和最明显的缺点是不能真实反映资金的时间价值。
静态评价方法是评价项目财务收益的分析方法之一。它是不考虑时间因素的影响而直接对收支进行评价分析的方法。静态评价方法主要有:一、计算单位产品投资额。即增加单位产品生产能力的平均投资额,计算公式为:式中:K1——单位产品投资;K——总投资;Q——年总产量。二、计算投资回收期。是指一项工程建成投产后,从投入生产的时间起,到把全部建设投资收回所需要的时间。计算公式为:式中: P——企业的年纯收入,即利润
三、计算投资收益率。投资收益率是指工程项目建成后每年获得的净收入和建设总投资额之比,计算公式为:式中: r——投资收益率,它是投资回收期的倒数。四、追加投资回收期。追加投资是指一项建设工程不同建设方案所需投资之间的差额。追加投资回收期就是采用某建设方案后,依靠经营费用的节约额来回收追加投资的期限,其计算公式为:式中: K1、K2——各方案的投资额,其中K1>K2;C1、C2——各方案的年经营费用,其中C2>C1;K——追加的投资额;ΔC——节约的年生产成本额。
Ⅲ 一般情况下,静态测试、动态测试、白盒测试、黑盒测试之间有何关系
静态测试、动态测试相对。根据动态测试在软件开发过程中所处的阶段和作用分为单元测试、集成测试、组装测试、确认测试和系统测试。单元测试就是白盒测试。系统测试是黑盒测试。
静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处。
动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。
黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
(3)产品静态承重检测方法扩展阅读:
静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。
可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
Ⅳ 设备工作台承重检测方法
到现场由检测人员采集厂房结构的相关数据,例如长度、宽度、高度、混凝土强度、粉刷层厚度等,然后利用相关的电脑程序(如PKPM)进行建模分析计算,从而获得出该厂房承重能力和大小。这种方式是目前大部分厂房检测单位所采用的方式,它工作量较小,费用较低,而且实用性比较强。
第二、承重实验
这种方式一般被应用与特殊行业里,对厂房,楼层承重有较为严格要求的检测过程中,例如银行保险柜放置区域的检测。这种检测方式比较复杂,它需要在楼板底部设置观测点,需要将水泥,沙袋等均等荷载等重量叠加观测楼板和梁的变形情况,直到变形值接近规定范围的允许变形值为止,但是这种实验会对承重结构有较大的损伤,基本上不建议使用这种实验。
不同的厂房拥有的不同的结构和工况,其载重能力也不同,这就需要用不同的厂房承重检测方式进行检测。测试工作台是什么及特点 认识测试工作台: item工作台分类: 根据台面的不同分为:榉木工作台、钢板合成工作台、防静电工作台、高分子工作台; 根据承重的不同分为:轻型工作台、中型工作台、承重型工作台; 根据功能的不同分为:多功能工作台、带吊柜工作台等等。 item工作台适合于模具钳工、检测、维修、组装等各种不同应用场合,德国item在业内拥有良好的声誉,其公司产品具有良好的耐腐蚀性,耐脏性,抗冲击性和承重能力强。桌面经特殊处理,具有防腐、抗冲击力强等特点,多种item桌面的选择,可配合不同的使用要求;所配置的抽屉、柜门方便使用者存储工具;桌角上预留电源孔,方便安装电源插座。工作台(桌)分为轻型。
Ⅳ 织物弹性试验机测试方法是什么
织物弹性试验机主要用于测试伸缩性纱线或伸缩性纱制成的纺织织物在固定负荷条件下的伸长率和变形率,以评估其静态拉伸性能。
适用标准:
ASTM/D3107,ASTM/D2594
测试原理:
1.机器顶端夹持器夹住试样一端,给另一端施加一定的初始负荷重砝码,从夹持器的下端给试样做两个标记距离;
2.接着给试样施加规定的负重砝码,静等1个小时或规定时间后测量量两个标记的间距;
3.取下负重砝码,过30秒或1个小时或其它规定的时间后施加初始负重砝码,再次测量两个标记的间距;
4.然后通过特的公式计算出试样拉伸弹性回复率(%)和残留变形率(%)。
主要参数:
1、测试工位:6位;
2、高度:1500mm;
3、宽度:1200mm;
4、夹头面积:80mm*20mm;
5、砝码负重:3磅(1.35kg)或者可另选4磅(1.8kg);
6、夹持器有效夹持宽度:≥80mm;
7、夹持器间距:0-300mm可调节;
8、负重砝码挂钩长度:280mm。
主要特点:
1、全不锈钢机架设计,美观大方;
2、可实现单个工位随时定位测试,或者6个工位同时定位测试
3、仪器标配标准不锈钢尺(1mm刻度)
4、计时器(选配)
5、多种标准负荷砝码选配
测试方法:
1.定力值法:
将一定规格试样的上端夹持在上夹具内,下方悬挂一定重量的砝码,加载4次后测试试样的恢复性能。
2.定长度法:
将一定规格试样的上下两端分别夹在上下夹具内,移动下夹具将试样拉伸一定的长度后保持一定的时间后测量试样的恢复性能
Ⅵ 塑料袋检测方法
塑料袋已经成为我们生活中不可缺少的一部分了,它具备其他东西所不具备的一些功能,能在很大程度上帮助我们。同时它也是食品接触材料之一,因此我们要对它的安全和环保性重视起来。
塑料袋检测范围:
供水包装,家用包装,商用机器壳体,电子产品包装,医疗器械,食品包装等。
塑料袋检测项目:
理化指标:厚度、刚性、刚性、硬度、韧性、高水蒸气透过率、气体透过率、旋转粘度、固含量、挥发物含量、有毒有害物含量、单体残留量、pH值、酸值、水解酸值、羟值、交联度、氯含量等
耐候性:老化测试(紫外、氙灯、碳弧灯等)、盐雾测试(中性盐雾、酸性盐雾)、耐液体性测试(耐水、耐酸、耐碱、耐盐、耐有机溶剂、耐油等)、热老化等
热学性能:熔点、氧化诱导时间、熔体流动速率、热变形温度、维卡软化温度、线膨胀系数、氧指数、热稳定性,软化点等
电学性能:介电常数、介质损耗因数、体积电阻率、表面电阻率等
机械性能:拉伸强度及伸长率、拉伸弹性模量、弯曲强度、弯曲弹性模量、压缩强度、悬臂梁冲击强度、简支梁冲击强度、剪切强度、撕裂强度、剥离强度、戳穿性能、邵氏硬度、洛氏硬度、球压痕硬度、落锤冲 击、耐环境应力开裂等
环保:抗霉菌性、ROHs、甲醛、重金属、卫生性等
Ⅶ 什么是静态测试
静态测试又可分为代码走查(Walkthrough),代码审查(Inspection),技术评审(Review)。
代码走查(Walkthrough)
开发组内部进行的,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。
代码审查(Inspection)
开发组内部进行的,采用讲解、提问并使用编码模板进行的查找错误的活动。一般有正式的计划、流程和结果报告。
技术评审(Review)
开发组、测试组和相关人员(QA、产品经理等)联合进行的,采用讲解、提问并使用编码模板进行的查找错误的活动。一般有正式的计划、流程和结果报告。
实际工作,我们完全不必要被概念所束缚住,根据项目的实际情况来决定采取什么的静态测试形式,不用严格去区分到底是代码走查,代码审查和还是技术评审。
静态分析往往需要借助白盒测试工具(如Logiscope,C++ Test)来自动检测。
Ⅷ 静态测试和动态测试的方法有哪些
静态测试和动态测试的区别如下:
1、测试部分的不同
静态测试是指测试不运行的部分:只是检查和审阅,如规范测试、软件模型测试、文档测试等。动态测试是通常意义上的测试,也就是运行和使用软件。
2、测试方式不同
静态测试,通过评审文档、阅读代码等方式测试软件称为静态测试,通过运行程序测试软件称为动态测试。
3、测试方法不同
静态测试是指不用执行程序的测试,它主要采取方案—代码走查、技术评审、代码审查的方法对软件产品进行测试。动态测试主要通过构造测试实例、执行程序、分析程序的输出结果这三种方法来对软件进行测试。
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。
静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。
Ⅸ CREO可以做承重分析吗
CREO支持承重分析,但前提是安装的时候安装了组件creo simulate。
在模拟界面,根据具体需求设定基点、材料、重力、受力点等一系列模拟要素。设定完成后可以很快速的对零件进行分析。
Creo Simulate 产品线提供两个模块,即“结构”模块和“热”模块,每种模块都针对不同系列的机械特性解决问题。
结构此模块用于评估零件或装配的结构特性。此模块允许为模型创建结构载荷和约束,然后执行静态分析、模态分析、预应力分析、失稳分析和振动分析。
还可以评估模型的疲劳寿命和解决接触问题。可以使用此模块解决涉及到小变形和大变形以及使用各向同性和非各向同性、线性弹性、非线性超弹性和弹塑性等各种材料的静态问题。
热模块用于评估零件或装配的热行为。此模块允许对模型施加热载荷、规定的温度和对流条件,然后执行稳态或瞬态热分析。可使用这些分析的结果来研究模型中的热传递。还可以将热分析的结果用作“结构”模块中温度载荷的基础。
(9)产品静态承重检测方法扩展阅读:
应用程序
Creo 是一个可伸缩的套件,集成了多个可互操作的应用程序,功能覆盖整个产品开发领域。Creo 的产品设计应用程序使企业中的每个人都能使用最适合自己的工具,因此,他们可以全面参与产品开发过程。除了 Creo Parametric 之外,还有多个独立的应用程序在 2D 和 3D CAD 建模、分析及可视化方面提供了新的功能。Creo 还提供了空前的互操作性,可确保在内部和外部团队之间轻松共享数据 。
下面是Creo主要的应用程序:
1、Sketch
为构思和设计概念提供简单的二维“手绘”绘图功能。
2、Layout
捕捉早期二维概念布局,最终推动三维设计。
3、Parametric
适用于Creo Elements/Pro(原Pro/ENGINEER ®)中强大的三维参数化建模功能。扩展提供了更多无缝集成的三维CAD/CAID/CAM/CAE功能。新的扩展功能将拥有更大的设计灵活性,并支持采用遗留数据。
Creo的CAM功能相比之前的Pro_ENGINEER添加了不少新的命令,操作界面也有很大变化.后处理构建器也正式变为PTC旗下产品。
4、Direct
使用直接建模方法提供快速、灵活的三维几何创建和编辑功能。拥有与Creo参数化功能前所未有的协同性,从而使设计更加灵活。
5、Simulate
提供分析师进行结构仿真和热能仿真所需的功能。
参考资料来源:网络-creo
参考资料来源:网络-Creo Simulate
Ⅹ 薄膜厚度静态和动态监测方法分别有哪些
真空镀膜就是置待镀材料和被镀基板于真空室内,采用一定方法加热待镀材料,使之蒸发或升华,并飞行溅射到被镀基板表面凝聚成膜的工艺。
一、镀膜的方法及分类
在真空条件下成膜有很多优点:可减少蒸发材料的原子、分子在飞向基板过程中于分子的碰撞,减少气体中的活性分子和蒸发源材料间的化学反应(如氧化等),以及减少成膜过程中气体分子进入薄膜中成为杂质的量,从而提供膜层的致密度、纯度、沉积速率和与基板的附着力。通常真空蒸镀要求成膜室内压力等于或低于10-2Pa,对于蒸发源与基板距离较远和薄膜质量要求很高的场合,则要求压力更低。
主要分为一下几类:
蒸发镀膜、溅射镀膜和离子镀。
蒸发镀膜:通过加热蒸发某种物质使其沉积在固体表面,称为蒸发镀膜。这种方法最早由M.法拉第于1857年提出,现代已成为常用镀膜技术之一。
蒸发物质如金属、化合物等置于坩埚内或挂在热丝上作为蒸发源,待镀工件,如金属、陶瓷、塑料等基片置于坩埚前方。待系统抽至高真空后,加热坩埚使其中的物质蒸发。蒸发物质的原子或分子以冷凝方式沉积在基片表面。薄膜厚度可由数百埃至数微米。膜厚决定于蒸发源的蒸发速率和时间(或决定于装料量),并与源和基片的距离有关。对于大面积镀膜,常采用旋转基片或多蒸发源的方式以保证膜层厚度的均匀性。从蒸发源到基片的距离应小于蒸气分子在残余气体中的平均自由程,以免蒸气分子与残气分子碰撞引起化学作用。蒸气分子平均动能约为0.1~0.2电子伏。
蒸发源有三种类型。①电阻加热源:用难熔金属如钨、钽制成舟箔或丝状,通以电流,加热在它上方的或置于坩埚中的蒸发物质。电阻加热源主要用于蒸发Cd、Pb、Ag、Al、Cu、Cr、Au、Ni等材料。②高频感应加热源:用高频感应电流加热坩埚和蒸发物质。③电子束加热源:适用于蒸发温度较高(不低于2000[618-1])的材料,即用电子束轰击材料使其蒸发。
蒸发镀膜与其他真空镀膜方法相比,具有较高的沉积速率,可镀制单质和不易热分解的化合物膜。
为沉积高纯单晶膜层,可采用分子束外延方法。生长掺杂的GaAlAs单晶层的分子束外延装置。喷射炉中装有分子束源,在超高真空下当它被加热到一定温度时,炉中元素以束状分子流射向基片。基片被加热到一定温度,沉积在基片上的分子可以徙动,按基片晶格次序生长结晶用分子束外延法可获得所需化学计量比的高纯化合物单晶膜,薄膜最慢生长速度可控制在1单层/秒。通过控制挡板,可精确地做出所需成分和结构的单晶薄膜。分子束外延法广泛用于制造各种光集成器件和各种超晶格结构薄膜。
溅射镀膜:用高能粒子轰击固体表面时能使固体表面的粒子获得能量并逸出表面,沉积在基片上。溅射现象于1870年开始用于镀膜技术,1930年以后由于提高了沉积速率而逐渐用于工业生产。通常将欲沉积的材料制成板材——靶,固定在阴极上。基片置于正对靶面的阳极上,距靶几厘米。系统抽至高真空后充入 10-1帕的气体(通常为氩气),在阴极和阳极间加几千伏电压,两极间即产生辉光放电。放电产生的正离子在电场作用下飞向阴极,与靶表面原子碰撞,受碰撞从靶面逸出的靶原子称为溅射原子,其能量在1至几十电子伏范围。溅射原子在基片表面沉积成膜。与蒸发镀膜不同,溅射镀膜不受膜材熔点的限制,可溅射W、Ta、C、Mo、WC、TiC等难熔物质。溅射化合物膜可用反应溅射法,即将反应气体 (O、N、HS、CH等)加入Ar气中,反应气体及其离子与靶原子或溅射原子发生反应生成化合物(如氧化物、氮化物等)而沉积在基片上。沉积绝缘膜可采用高频溅射法。基片装在接地的电极上,绝缘靶装在对面的电极上。高频电源一端接地,一端通过匹配网络和隔直流电容接到装有绝缘靶的电极上。接通高频电源后,高频电压不断改变极性。等离子体中的电子和正离子在电压的正半周和负半周分别打到绝缘靶上。由于电子迁移率高于正离子,绝缘靶表面带负电,在达到动态平衡时,靶处于负的偏置电位,从而使正离子对靶的溅射持续进行。采用磁控溅射可使沉积速率比非磁控溅射提高近一个数量级。
离子镀:蒸发物质的分子被电子碰撞电离后以离子沉积在固体表面,称为离子镀。这种技术是D.麦托克斯于1963年提出的。离子镀是真空蒸发与阴极溅射技术的结合。一种离子镀系统如图4[离子镀系统示意图],将基片台作为阴极,外壳作阳极,充入惰性气体(如氩)以产生辉光放电。从蒸发源蒸发的分子通过等离子区时发生电离。正离子被基片台负电压加速打到基片表面。未电离的中性原子(约占蒸发料的95%)也沉积在基片或真空室壁表面。电场对离化的蒸气分子的加速作用(离子能量约几百~几千电子伏)和氩离子对基片的溅射清洗作用,使膜层附着强度大大提高。离子镀工艺综合了蒸发(高沉积速率)与溅射(良好的膜层附着力)工艺的特点,并有很好的绕射性,可为形状复杂的工件镀膜。
二、薄膜厚度的测量
随着科技的进步和精密仪器的应用,薄膜厚度测量方法有很多,按照测量的方式分可以分为两类:直接测量和间接测量。直接测量指应用测量仪器,通过接触(或光接触)直接感应出薄膜的厚度。
常见的直接法测量有:螺旋测微法、精密轮廓扫描法(台阶法)、扫描电子显微法(SEM);
间接测量指根据一定对应的物理关系,将相关的物理量经过计算转化为薄膜的厚度,从而达到测量薄膜厚度的目的。
常见的间接法测量有:称量法、电容法、电阻法、等厚干涉法、变角干涉法、椭圆偏振法。按照测量的原理可分为三类:称量法、电学法、光学法。
常见的称量法有:天平法、石英法、原子数测定法;
常见的电学法有:电阻法、电容法、涡流法;
常见的光学方法有:等厚干涉法、变角干涉法、光吸收法、椭圆偏振法。
下面简单介绍三种:
1. 干涉显微镜法
干涉条纹间距Δ0,条纹移动Δ,台阶高为t=(Δ/Δ0 )*0.5λ,测出Δ0 和Δ,即可,其中λ为单色光波长,如用白光,λ取 530nm。
2. 称重法
如果薄膜面积A,密度ρ和质量m可以被精确测定的话,膜厚t就可以计算出来:
d=m/Aρ。
3 石英晶体振荡器法
广泛应用于薄膜淀积过程中厚度的实时测量,主要应用于淀积速度,厚度的监测,还可以反过来(与电子技术结合)控制物质蒸发或溅射的速率,从而实现对于淀积过程的自动控制。
对于薄膜制造商而言,产品的厚度均匀性是最重要的指标之一,想要有效地控制材料厚度,厚度测试设备是必不可少的,但是具体要选择哪一类测厚设备还需根据软包材的种类、厂商对厚度均匀性的要求、以及设备的测试范围等因素而定。
三、真空镀膜机保养知识:
1. 关闭泵加热系统,然后分离蒸镀室(主要清洁灰尘,于蒸镀残渣)
2. 关闭电源或程序打入维护状态
3. 清洁卷绕系统(几个滚轴,方阻探头,光密度测量器)
4. 清洁中罩室(面板四周)
5. 泵系统冷却后打开清洁(注意千万不能掉入杂物,检查泵油使用时间与量计做出更换或添加处理)
6. 检查重冷与电气柜设备。