一、在C语言中集合类型数据的定义及集合运算的实现(论文文献综述)
吕鸿余[1](2021)在《信息型文本的翻译实践报告书》文中研究表明
张协力,祝跃飞,顾纯祥,陈熹[2](2021)在《C2P:基于Pi演算的协议C代码形式化抽象方法和工具》文中研究指明形式化方法为安全协议分析提供了理论工具,但经过形式化验证过的协议标准在转换为具体程序实现时,可能无法满足相应的安全属性.为此,提出了一种检测安全协议代码语义逻辑错误的形式化验证方法.通过将协议C源码自动化抽象为Pi演算模型,基于Pi演算模型对协议安全属性形式化验证.最后给出了方案转换的正确性证明,并通过对Kerberos协议实例代码验证表明方法的有效性.根据该方案实现了自动化模型抽象工具C2P与成熟的协议验证工具ProVerif结合,能够为协议开发者或测试人员检测代码中的语义逻辑错误提供帮助.
杨汶锦[3](2021)在《基于源代码的影响域分析方法研究及实现》文中进行了进一步梳理随着软件规模不断扩大,软件中模块的耦合程度不断加深,软件中一些微小的改动实际上会产生很大的影响。影响域分析是评估给定变更产生的多项风险的一种重要的软件测试技术。影响域分析技术在回归测试中发挥重要作用,可以帮助测试人员提高工作效率和质量。尽管关于影响域分析的研究在过去的几十年间有了长足的发展,但是这些方法基本都是分析受变更点影响的函数,而很少有研究分析语句级别的影响域。另外,C语言中存在一些较为复杂的变量,例如:指针、数组、结构体,以往的研究很少对它们变更造成的影响进行分析。因此针对以上问题,本文提出一种新型的基于源代码的影响域分析方法,该方法使得对C语言中语句级的影响域分析成为可行。本文提出的影响域分析方法是以控制流图和抽象语法树为基础来进行影响域分析。该方法可以分析给定目标点在单元内和单元间的语句。针对C语言中的复杂变量结构,本文提出一种针对复杂变量的链式分解算法来分析复杂变量结构产生的影响域。本文提出的方法主要由三个部分构成:预处理、单元内影响域分析和单元间影响域分析。同时,本文重点阐述了该方法在关于全局变量和别名问题的收集以及分析过程中的详细设计,进一步提升了影响域分析的效率和覆盖率。最后,本文完成了基于源代码的影响域分析方法的工程实践,实现了静态的语句级的全局影响域分析工具。本文选取五个C语言开源工程,并从每个工程中选取50个影响域分析点进行实验测试。实验结果显示,本文提出的影响域分析方法的准确率约为79%,证明了本文提出的影响域分析方法是有效的。同时,该工具的实现给静态软件测试领域对影响域的分析提供了有力支持。
秦伯钦[4](2021)在《对现实Rust应用程序安全性的实证研究》文中提出Rust作为一种兼顾效率与安全的新兴编程语言,主要用于系统软件开发,如浏览器、操作系统、区块链、数据库等。其安全性通过编译时检查强制执行的一组严格的安全规则得到保障。但是为了支持更多的底层操作,Rust允许开发者编写不安全的代码来绕过这些编译器检查。为了解实际的Rust程序中存在哪些安全问题,以及Rust安全机制如何影响编程实践,本文重点研究了三个问题:(1)Rust开发者为什么要编写不安全代码,以及如何正确编写不安全代码。(2)真正的Rust程序存在哪些内存安全问题。(3)Rust开发者会犯哪些并发Bug。本文对Rust的安全性进行了首次实证研究,主要分析对象为现实Rust应用程序,即由Rust开发的并被广泛使用的实际项目,而非语言设计者为探索语言而构建的用例,通过研究现实Rust应用程序可以更好地反映Rust在实际使用中的问题。本文研究的现实Rust应用程序包括五个开源Rust项目、五个广泛使用的Rust库、两个在线安全数据库和Rust标准库中的850处不安全代码使用情况和170个程序Bug。在此基础上,本文提出了针对Rust设计者和开发者的1 1条见解和8条建议,开发了一个IDE插件,设计了 9个静态Bug检测算法,并构建了 4个静态Bug检测器,这些检测器均发现了未知的Bug,共计91个。具体工作如下:1.从Rust程序不安全代码的研究中,本文主要得到三个结果:(a)通过分析Rust程序中不安全代码的使用原因,本文发现Rust语言中大多数不安全代码的使用是出于良好或不可避免的原因。这表明Rust的规则检查有时过于严格,提供一种越过这些检查的替代方法对Rust开发者来说是不可或缺的。开发者可以尝试找到不安全的根源,并且仅将该代码段导出为不安全的接口,以最大程度地减少不安全的接口和代码检查的工作量。(b)通过分析Rust程序中不安全代码的移除记录,本文发现“内部不安全”(interior unsafe)是封装不安全代码的良好方式。Rust开发者可以在将不安全代码暴露为不安全的应用程序接口(Application Programming Interface,API)之前,尝试使用内部不安全函数来封装不安全代码。(c)通过分析内部不安全代码的封装,本文发现不安全代码的部分安全条件难以检测,内部不安全函数的安全性通常依赖于正确输入或执行环境的准备。因此,如果一个函数的安全性取决于其使用方式,那么最好将其标记为“不安全”而不是“内部不安全”;Rust设计者还应将“内部可变性”(interior mutability)函数与真正的不变函数区分开来。根据以上研究结果,本文从研究的Rust内部不安全代码中发现了 19处不良封装不安全代码的例子。2.从Rust程序内存Bug的研究中,本文主要得到两个结果:(a)通过分析Rust程序中内存Bug的传播,本文发现Rust的安全机制(在Rust的稳定版本中)在防止内存Bug方面非常有效。所有内存安全问题都涉及不安全的代码,尽管其中许多还涉及安全代码。因此,未来的内存Bug检测器可以忽略与不安全代码无关的安全代码,以减少误报并提高执行效率。(b)通过分析Rust程序中内存Bug的影响和修复,本文发现Rust的内存Bug多与开发者对生命周期的误解有关。根据以上研究结果,本文提出了 Rust内存Bug检测算法,并实现了释放后使用(Use After Free)检测器。3.从Rust程序并发Bug(包括阻塞性Bug和非阻塞性Bug)的研究中,本文主要得到两个结果:(a)通过研究Rust程序中的阻塞性Bug(Blocking Bug),本文发现对Rust的生命周期规则缺乏深入了解是造成阻塞性Bug的常见原因。因此,未来的IDE应该添加插件以突出显示隐式解锁的位置,这可以帮助开发者避免大量的阻塞性Bug。Rust还应该添加Mutex的显式解锁API以方便开发者修复此类Bug。根据以上研究结果,本文提出了 Rust阻塞性Bug检测算法,并实现了重复上锁(Double Lock)和上锁顺序冲突(Conflicting Lock)检测器。(b)通过研究Rust程序中的非阻塞性Bug(Non-blocking Bug),本文发现数据的共享方式不一定与非阻塞性Bug的发生方式相关,前者可能使用不安全的代码,而后者可能使用安全的代码。因此,如果一个结构体实现了 Sync特征(trait),那么必须仔细检查其内部可变性函数的内部互斥性。Rust非阻塞性Bug(和阻塞性Bug)的修复策略与传统语言相似,现有的自动错误修复技术也可能在Rust上起作用。根据以上研究结果,本文提出了Rust非阻塞性Bug检测算法,并实现了违反原子性(Atomicity Violation)检测器。本文的创新性体现在对Rust不安全代码的使用提出了新的观点和意见,对Rust程序中的常见内存和并发Bug进行了新的分类,并针对Rust相关的Bug提出了新的检测算法。本文解答了 Rust开发者如何使用不安全代码的疑惑,提出了针对Rust错误的检测算法和思路,对于指导Rust开发者的安全实践、提高Rust语言的安全性具有重要意义。
祝丽华[5](2021)在《基于定值特征的缺陷自动确认方法研究与应用》文中进行了进一步梳理静态缺陷检测工具不运行被测程序,通过分析源代码检查程序中是否有故障。这些静态检测工具可以帮助软件开发人员和测试人员在软件开发早期发现软件中的潜在缺陷。但是静态检测工具都面临误报和漏报的问题。漏报无可避免,但是误报会导致警报量大,人工确认成本高。因此寻找一种提高人工确认效率的方法势在必行。本文提出了一种基于定值特征的缺陷自动确认方法。该方法从与缺陷发生密切相关的缺陷变量出发,沿着控制流逆向推导缺陷变量的传播路径,并结合全局数据流在各个路径上寻找缺陷变量的定值数据。本文在研究了变量定值类型后总结出六种定值模式,之后具体分析了在每种定值模式下的定值数据查找策略和变量定值结构组成。接着根据全局定值点和语句结构特征提取出缺陷定值特征。最后基于此缺陷定值特征,在缺陷检测系统中实现了缺陷自动确认算法。本文所述的基于定值特征的缺陷自动确认方法已在DTS缺陷检测系统中实现,并在4个开源项目中进行实验验证,结果表明该方法进行自动确认的平均准确率为75.21%,符合设计预期。本文研究减少了人工确认的警报数量,为缺陷自动确认提供了技术支持。
杨棋智[6](2021)在《针对Vala语言的gRPC相关工具设计及实现》文中研究说明现代电子信息产业的逐渐发展,电子测量的规模不断扩大,测试流程日趋复杂,对高性能的电子测量仪器程控需求与日剧增。Vala是一种新兴的编程语言,它效率高,性能好、运行速度快,与底层硬件系统兼容性好的同时还具有高级语言抽象和便捷的语法特性,是嵌入式、电子测量开发的优秀编程语言。对于现代测量而言,模块化、网络化、远程化已经成为现代电子测量的重要需求和发展趋势。而近年来,面向服务的系统架构和微服务架构在很多计算机软件系统中广泛应用,为电子测量提供了新的契机,将一个电子测量系统的不同测试模块由不同服务的形式呈现,这离不开RPC(Remote Procedure Call)框架的软件支持。gRPC是谷歌开发的一款RPC框架,该框架提供了众多语言之间的RPC功能交互,如Python、Java,但并未提供Vala语言的RPC支持。Protocol Buffer是与gRPC匹配的序列化机制,用于解决RPC数据传输中的序列化问题,但也未包含Vala语言的支持。本文着笔于此,结合Vala语言在现代电子测量领域的优势和现代电子测量的需求和趋势,设计了一种针对Vala语言的gRPC软件工具,实现了Vala语言对gRPC框架的支持,研究如下:(1)本文设计了一种基于Protocol Buffer序列化机制的Vala语言的序列化库,该序列化库采用分层设计的思想,根据Protocol Buffer机制特有的编码算法,以底层的编解码模块为基础,将核心基类和属性注册机制相结合,为所有的派生类提供了数据的序列化和反序列化方法,最终根据用户定义的proto文件生成可用Vala库文件,实现了Vala语言序列化软件工具的功能。该序列化库能将二进制信息序列与Vala语言进行相互转换,可用于数据传输或RPC等场景,为实现Vala语言的远程过程调用提供了软件支撑。(2)在Vala语言的序列化库的基础上,本文设计了的Vala语言的gRPC库,通过将Vala语言特有的Vapi机制与gRPC核心库中的核心底层API进行接口适配,Vala语言得以使用C语言实现的gRPC底层功能接口。通过分层设计和模块化设计的软件设计思想,本设计将底层逻辑抽象为上层应用程序可用的、包含了RPC中主要功能行为的客户端和服务端基类,用户通过继承这些功能基类即可实现RPC功能。将该软件库和gRPC框架相结合,即可实现Vala语言与其他编程语言的远程过程调用,Vala语言程控的电子测量设备就可通过该软件工具与其他上层应用软件实现远程过程调用、远程测试、模块化测试等。
刘祥昆[7](2021)在《面向C++语言的代码去匿名化系统的设计与实现》文中进行了进一步梳理代码抄袭现象频发,网上出现大量的恶意代码、恶意软件,对许多人造成严重的危害。针对上述现象,源代码去匿名化技术用于检测源代码作者归属问题,能有效地遏制上述行为。在源代码去匿名化技术中,因为不同编程语言间语言特性不同、相关资料库不同,涉及动态特征的研究存在不同编程语言间方案迁移难问题。本文研究C++语言源代码去匿名化技术,其主要工作和创新点如下:(1)针对从Python语言到C++语言存在的方案迁移难问题,提出了面向C++编程语言源代码去匿名化的动态风格特征设计与提取方案。动态特征设计方案从时间和空间两个方面出发,分别进行设计,并区别于已有的面向Python语言的动态特征设计方案,考虑了部分能表征作者编程风格但是却被忽略的动态特征。在动态特征提取方案中,不同于已有的面向Python语言的动态特征提取方案中基于Python语言内部模块进行实现的方式,采用基于性能分析工具Gprof和Valgrind进行了具体实现。经过实验验证,动态风格特征的加入,明显提高了源代码去匿名的准确率,在涉及230个编程作者时,对比不包含动态风格特征的实验,源代码去匿名的准确率提高了约 8.5%。(2)设计并实现了一套面向C++语言的代码去匿名化系统。该系统以网页的形式呈现给用户,可以在线检测用户上传的源代码的作者身份信息。同时,在系统设计时,充分考虑各个模块的耦合度问题,保证后续在业务量激增的情况下,系统能快速拆分,以抵御高并发量的压力。最后,随机选取了 20份源代码文件,其作者身份信息均被正确识别,系统能有效用于代码去匿名化,符合预期。
卢利峰[8](2021)在《基于触发路径约束求解的警报自动确认方法研究与实现》文中提出源代码缺陷检测技术作为一种重要的软件测试技术,具有缺陷检测效率高、故障定位准确和自动化程度高等特性。然而人们在实际应用该技术的过程中,发现其检测结果存在警报量大、重复率高以及误报等问题,需要专业的技术人员投入大量时间对检测出来的缺陷进一步确认,这也就导致了人工确认效率低下的问题。针对该问题,本文在对缺陷模式分类的分析上,提出了基于触发路径约束求解的警报自动确认方法。本文的具体研究内容如下:(1)程序中存在多条路径经过警报点,尽早选择一条能够触发警报的路径能大大节省后续验证所花费的时间成本,因此本文提出了一种基于变量取值区间的路径排序方法。当路径上变量的取值区间越小时,采用基于区间运算的约束求解技术生成测试用例失败的可能性则越大,该方法以变量取值区间大小为权重对路径进行排序,降低由于区间运算失败而导致的时间开销。(2)对测试路径上的约束集进行求解后,生成的测试用例在实际执行过程中会覆盖警报点,但却无法保证能够触发警报,本文提出了一种基于警报触发约束的测试用例生成方法。该方法基于C语言代码中的缺陷特征,并结合测试路径中与警报点相关的上下文信息,修正测试路径约束集,使得生成的测试用例能够触发警报。(3)为了验证上述方法生成的测试用例能否触发警报点,以达到判定警报点真实性的目的,本文提出了一种基于程序插装和调试的判定方法。该方法基于源代码缺陷的特征信息,通过程序插装技术及程序调试工具,监控测试用例的动态执行状态,判断测试用例是否触发警报。论文对31种缺陷代码的自动确认结果进行了分析,结果表明上述方法在一定程度上提高了警报确认的自动化水平。
张天友[9](2020)在《从内存的角度解析C语言中的指针》文中指出指针被称为C语言的灵魂,但是其概念难以把握,成为C语言学习的主要障碍之一。以"开关"为基础,构建简易的内存模型,分析"变量概念"的两个基本特点:"地址信息"和"状态信息",进而解析"内存区域"、"变量"、"指针"之间的基本关系。从而理清"指针"概念的基本特点。
龚萌晓[10](2020)在《基于拓扑空间的C语言缺陷分析》文中研究指明C及后来的C++语言都是灵活高效且应用范围十分广泛的计算机编程语言,但是在使用C语言进行编程时,若使用不当则会产生缺陷。C语言产生缺陷的主要原因是语法安全性不够,尤其是在数据方面缺乏边界性检查。点集拓扑学是一门研究图形在连续变化下保持不变性质的数学学科。本文利用点集拓扑学中的连续性概念,给出了判定C语言字符串函数存在缓冲区溢出缺陷的方法。C语言缺陷的判定一直是信息科学领域的一个重点和难点。目前的判定方法主要是在计算机领域的一些检测方法,本文将C语言缺陷的判定和点集拓扑学相结合,给缺陷检测提供了一个全新的静态判定方法。本文通过刻画C语言字符串函数的拓扑空间,构造了字符次序拓扑空间和该空间的导集与凝聚点,证明了当代码没有缺陷时文中定义的字符串函数同名映射是连续映射,从而得出了当定义的同名映射不连续时代码存在缺陷的结论,达到了利用拓扑空间的连续性判定字符串函数存在缺陷的目的,得到了一种合理可行而且全新的静态检测方法。根据点集拓扑学的性质判定C语言中缺陷的存在,有利于促进编程人员改进代码,提高缺陷的查找精度,有利于更加良好和安全地开发C语言软件。
二、在C语言中集合类型数据的定义及集合运算的实现(论文开题报告)
(1)论文研究背景及目的
此处内容要求:
首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。
写法范例:
本文主要提出一款精简64位RISC处理器存储管理单元结构并详细分析其设计过程。在该MMU结构中,TLB采用叁个分离的TLB,TLB采用基于内容查找的相联存储器并行查找,支持粗粒度为64KB和细粒度为4KB两种页面大小,采用多级分层页表结构映射地址空间,并详细论述了四级页表转换过程,TLB结构组织等。该MMU结构将作为该处理器存储系统实现的一个重要组成部分。
(2)本文研究方法
调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。
观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。
实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。
文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。
实证研究法:依据现有的科学理论和实践的需要提出设计。
定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。
定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。
跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。
功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。
模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。
三、在C语言中集合类型数据的定义及集合运算的实现(论文提纲范文)
(3)基于源代码的影响域分析方法研究及实现(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究背景 |
1.2 国内外研究进展 |
1.3 研究内容 |
1.4 论文结构 |
第二章 影响域分析相关研究 |
2.1 基础 |
2.1.1 基本概念 |
2.1.2 评价标准 |
2.2 核心技术 |
2.2.1 程序切片技术 |
2.2.2 数据流分析技术 |
2.2.3 图可达性算法 |
2.3 常见分类 |
2.4 本章小结 |
第三章 基于源代码的影响域分析场景研究 |
3.1 分析点类型 |
3.2 预处理阶段场景分析 |
3.2.1 指针 |
3.2.2 结构体 |
3.2.3 别名 |
3.3 单元内影响域分析问题场景分析 |
3.3.1 单路径影响域 |
3.3.2 多路径影响域 |
3.3.3 基于控制变量造成的影响域 |
3.3.4 复杂变量影响域 |
3.4 单元间影响域分析问题场景分析 |
3.4.1 参数 |
3.4.2 返回值 |
3.4.3 全局变量 |
3.4.4 别名问题 |
3.4.5 单元内跨函数的间接影响 |
3.5 本章小结 |
第四章 基于源代码的影响域分析方法的设计 |
4.1 整体设计思路 |
4.2 界面模块设计 |
4.2.1 设计图 |
4.2.2 类图 |
4.2.3 算法 |
4.3 预处理模块设计 |
4.3.1 全局变量收集 |
4.3.2 基于影响域分析的函数摘要生成 |
4.3.3 别名集收集 |
4.4 单元内影响域分析模块设计 |
4.4.1 路径生成过程设计 |
4.4.2 节点解析算法 |
4.4.3 单元内后继节点查找算法 |
4.5 单元间影响域分析模块设计 |
4.5.1 函数跳转过程 |
4.5.2 别名分析过程 |
4.5.3 复杂变量分析过程 |
4.6 本章小结 |
第五章 基于源代码的影响域分析系统实现 |
5.1 新建工程 |
5.2 预处理 |
5.3 影响域分析 |
5.4 本章小结 |
第六章 实验及结果分析 |
6.1 实验环境 |
6.2 实验过程 |
6.3 实验结果及分析 |
6.3.1 单元内影响域分析测试 |
6.3.2 全局影响域分析测试 |
6.4 方法的理论分析 |
6.5 本章小结 |
第七章 总结以及展望 |
7.1 研究工作总结 |
7.2 进一步研究工作 |
参考文献 |
致谢 |
(4)对现实Rust应用程序安全性的实证研究(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究背景和意义 |
1.2 研究现状 |
1.2.1 形式化证明Rust程序的正确性 |
1.2.2 实证研究 |
1.2.3 现有的Rust Bug检测器 |
1.3 主要研究成果 |
第二章 基础知识及研究方法 |
2.1 Rust语言设计的安全特性 |
2.1.1 Rust语言的设计目标 |
2.1.2 Rust的安全机制 |
2.1.3 不安全和内部不安全 |
2.2 内存和并发Bug的概念解释 |
2.2.1 内存Bug类别 |
2.2.2 并发Bug类别 |
2.3 实证研究方法 |
2.3.1 本文研究的Rust软件和库 |
2.3.2 收集和研究程序错误 |
2.4 本章小结 |
第三章 Rust程序中不安全代码的使用 |
3.1 安全性保证 |
3.1.1 Rust安全保证的范围 |
3.1.2 Rust安全性保证的措施 |
3.2 不安全代码的使用原因 |
3.2.1 不安全代码的分类统计 |
3.2.2 编译器报错类型 |
3.3 不安全操作类型 |
3.4 不安全代码使用目的 |
3.5 不安全代码的移除 |
3.5.1 移除不安全代码的目的 |
3.5.2 移除不安全代码的方式 |
3.6 封装不安全代码 |
3.6.1 通过注释和文档理解不安全性 |
3.6.2 标准库中不安全函数的安全条件 |
3.6.3 标准库中不安全函数的条件检查 |
3.6.4 对不安全代码的错误封装 |
3.7 进一步讨论 |
3.7.1 插桩不安全函数 |
3.8 本章小结 |
第四章 Rust程序存在的内存安全问题 |
4.1 内存Bug分析 |
4.2 修复策略 |
4.3 进一步讨论 |
4.3.1 使用自动化C或C++转换Rust的工具 |
4.3.2 封装不安全代码提供安全接口 |
4.4 本章小结 |
第五章 Rust程序存在的并发安全问题 |
5.1 阻塞性Bug |
5.1.1 阻塞性Bug分析 |
5.1.2 修复策略 |
5.2 非阻塞性Bug |
5.2.1 Bug代码中的数据共享方式 |
5.2.2 非阻塞性Bug分析 |
5.2.3 内部可变性 |
5.2.4 修复策略 |
5.3 进一步讨论 |
5.4 本章小结 |
第六章 对Rust Bug的检测 |
6.1 IDE工具 |
6.1.1 内存Bug |
6.1.2 并发Bug |
6.1.3 VRLifetime |
6.2 动态检测 |
6.2.1 内存Bug |
6.2.2 并发Bug |
6.3 静态检测 |
6.3.1 内存Bug |
6.3.2 阻塞性并发Bug |
6.3.3 非阻塞性并发Bug |
6.4 进一步讨论 |
6.4.1 内存Bug检测算法 |
6.4.2 阻塞性Bug检测算法 |
6.4.3 非阻塞性Bug检测算法 |
6.5 本章小结 |
第七章 全文总结和展望 |
7.1 全文总结 |
7.2 全文展望 |
参考文献 |
附录A 缩略语表 |
致谢 |
攻读学位期间发表的学术论文目录 |
(5)基于定值特征的缺陷自动确认方法研究与应用(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究背景 |
1.2 研究内容 |
1.3 论文章节安排 |
第二章 相关技术 |
2.1 数据流分析技术 |
2.2 缺陷确认技术 |
2.3 本章小结 |
第三章 缺陷定值特征分析 |
3.1 缺陷定值特征描述 |
3.2 变量定值模式 |
3.2.1 赋值操作 |
3.2.2 函数返回值 |
3.2.3 函数入口参数 |
3.2.4 地址类型参数传递 |
3.2.5 函数副作用 |
3.2.6 混合定值 |
3.3 变量定值结构 |
3.3.1 赋值操作 |
3.3.2 函数返回值 |
3.3.3 函数入口参数 |
3.3.4 地址类型参数传递 |
3.3.5 函数副作用 |
3.3.6 混合定值 |
3.4 缺陷定值特征 |
3.4.1 定值点语句结构化模型 |
3.4.2 缺陷定值特征结构模型 |
3.4.3 实例分析 |
3.5 缺陷特征码 |
3.6 本章小结 |
第四章 缺陷自动确认系统设计与实现 |
4.1 自动确认系统架构设计 |
4.2 定值特征提取模块设计 |
4.2.1 定值特征提取流程设计 |
4.2.2 定值特征提取模块类设计 |
4.3 定值特征提取算法实现 |
4.3.1 路径生成 |
4.3.2 定值数据获取 |
4.3.3 定值语句结构生成 |
4.3.4 缺陷定值特征生成 |
4.4 缺陷特征码实现 |
4.5 缺陷自动确认实现 |
4.5.1 集合相似性度量 |
4.5.2 缺陷自动确认流程 |
4.5.3 缺陷自动确认算法实现 |
4.5.4 缺陷自动确认界面实现 |
4.6 本章小结 |
第五章 实验结果及分析 |
5.1 实验环境 |
5.2 实验结果及问题分析 |
5.3 本章小结 |
第六章 总结和展望 |
6.1 研究工作总结 |
6.2 进一步研究工作 |
参考文献 |
致谢 |
(6)针对Vala语言的gRPC相关工具设计及实现(论文提纲范文)
摘要 |
abstract |
第一章 绪论 |
1.1 研究工作的背景与意义 |
1.2 国内外研究历史与现状 |
1.3 论文的主要内容与章节安排 |
第二章 软件需求分析及总体方案设计 |
2.1 远程过程调用(RPC) |
2.1.1 远程过程调用流程 |
2.1.2 接口描述语言与Protocol Buffer |
2.1.3 远程过程调用框架功能分析 |
2.2 软件需求分析 |
2.2.1 软件结构总体需求分析 |
2.2.2 序列化库功能需求分析 |
2.2.3 Vala语言的gRPC工具功能需求分析 |
2.3 总体软件方案设计 |
2.3.1 模块设计与分层设计 |
2.3.2 元类设计思想与设计模式的应用 |
2.3.3 开发工具的选择 |
2.4 本章小结 |
第三章 序列化库设计 |
3.1 序列化库总体设计 |
3.1.1 序列化库结构方案设计 |
3.1.2 proto文件简介 |
3.2 编码解码模块软件设计 |
3.2.1 Protocol Buffer编码结构 |
3.2.2 Varint编码和Zig Zag编码 |
3.2.3 编解码模块的软件设计 |
3.3 核心逻辑模块软件设计 |
3.3.1 核心基类的设计与属性注册机制 |
3.3.2 序列化反序列化流程设计 |
3.4 数据描述模块软件设计 |
3.5 源码生成模块软件设计 |
3.6 本章小结 |
第四章 gRPC通信库设计 |
4.1 gRPC通信库总体设计 |
4.2 gRPC核心库与Vapi |
4.2.1 Vapi机制 |
4.2.2 gRPC核心服务Vapi设计 |
4.3 核心功能模块软件设计 |
4.3.1 RPC中的数据交换单元 |
4.3.2 RPC中的日志功能单元 |
4.4 客户端与服务端功能模块软件设计 |
4.4.1 客户端功能设计 |
4.4.2 服务端功能设计 |
4.4.3 gRPC相关功能设计 |
4.5 源码生成模块软件设计 |
4.6 本章小结 |
第五章 测试与验证 |
5.1 序列化库测试 |
5.1.1 编解码方法测试 |
5.1.2 源码生成及源码功能测试 |
5.2 gRPC库测试 |
5.3 本章小节 |
第六章 总结与展望 |
致谢 |
参考文献 |
攻读硕士学位期间取得的成果 |
(7)面向C++语言的代码去匿名化系统的设计与实现(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究背景 |
1.2 研究现状 |
1.3 论文主要工作 |
1.4 论文的组织结构 |
第二章 相关技术 |
2.1 性能分析工具 |
2.1.1 Valgrind工具集 |
2.1.2 Gprof工具 |
2.2 抽象语法树 |
2.3 随机森林机器学习算法 |
2.4 本章小结 |
第三章 结合动态特征的C++语言代码去匿名化解决方案 |
3.1 动态风格特征设计与提取 |
3.2 数据集获取 |
3.3 实验评估 |
3.3.1 随机森林参数评估 |
3.3.2 单个作者训练文件个数评估 |
3.3.3 动态特征效果评估 |
3.3.4 本章所提方案与已有方案的对比结果 |
3.4 本章小结 |
第四章 代码去匿名化系统需求分析与概要设计 |
4.1 需求分析 |
4.1.1 总体需求分析 |
4.1.2 功能需求分析 |
4.1.3 非功能需求分析 |
4.2 系统概要设计 |
4.2.1 系统框架设计 |
4.2.2 系统模块设计 |
4.2.3 系统子模块概要设计 |
4.3 本章小结 |
第五章 代码去匿名化系统实现 |
5.1 系统实现 |
5.1.1 前端模块 |
5.1.2 数据获取模块 |
5.1.3 风格特征模块 |
5.1.4 代码去匿名化模块 |
5.2 系统测试 |
5.2.1 部署环境 |
5.2.2 功能测试 |
5.2.3 性能测试 |
5.2.4 系统效果演示 |
5.3 本章小结 |
第六章 总结和展望 |
6.1 总结 |
6.2 展望 |
参考文献 |
致谢 |
(8)基于触发路径约束求解的警报自动确认方法研究与实现(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究背景 |
1.2 研究内容 |
1.3 论文结构 |
第二章 相关研究 |
2.1 软件缺陷 |
2.1.1 软件缺陷概述 |
2.1.2 软件缺陷模式 |
2.2 基于约束求解的测试用例自动生成技术 |
2.2.1 约束求解 |
2.2.2 静态测试用例生成方法 |
2.2.3 分支限界算法 |
2.3 静态检测的误报消除技术 |
2.4 本章小结 |
第三章 警报自动化确认技术分析与设计 |
3.1 面向警报点的路径选择 |
3.1.1 面向警报点的部分路径生成 |
3.1.2 路径可达性判定 |
3.1.3 路径集排序 |
3.2 面向警报触发的测试用例生成 |
3.2.1 路径约束提取 |
3.2.2 触发警报的约束信息生成 |
3.2.3 约束信息合并 |
3.2.4 测试用例生成 |
3.3 测试用例的运行状态监控 |
3.3.1 插装库的设计 |
3.3.2 插装流程 |
3.3.3 运行轨迹监控 |
3.3.4 运行状态信息监控 |
3.3.5 运行结果监控 |
3.4 本章小结 |
第四章 基于触发路径约束求解的警报自动确认的设计实现 |
4.1 设计目标 |
4.2 系统流程图 |
4.3 系统组成及设计 |
4.3.1 预处理模块 |
4.3.2 路径生成模块 |
4.3.3 约束信息提取/修改模块 |
4.3.4 测试用例自动生成模块 |
4.3.5 警报点验证模块 |
4.4 本章小结 |
第五章 实验结果及分析 |
5.1 实验环境 |
5.2 工具的实现 |
5.3 实验数据集 |
5.4 实验设置 |
5.5 实验结果及分析 |
5.6 本章小结 |
第六章 总结与展望 |
6.1 研究工作总结 |
6.2 进一步研究工作 |
参考文献 |
致谢 |
(10)基于拓扑空间的C语言缺陷分析(论文提纲范文)
摘要 |
Abstract |
1 引言 |
1.1 研究背景及研究意义 |
1.2 国内外研究现状 |
1.2.1 C语言缺陷研究现状 |
1.2.2 拓扑学应用研究现状 |
1.3 论文结构安排 |
2 C语言程序缺陷 |
2.1 C语言程序缺陷分类 |
2.2 C语言缺陷介绍及代码示例 |
2.2.1 缓冲区溢出缺陷 |
2.2.2 C语言常见缺陷示例 |
2.3 C语言缺陷检测技术 |
2.3.1 静态检测技术 |
2.3.2 动态检测技术 |
2.3.3 动静结合技术 |
2.4 本章小结 |
3 拓扑学的应用及定理 |
3.1 二维拓扑图的开端及应用 |
3.2 拓扑学在计算机科学中的应用 |
3.2.1 计算机网络拓扑结构 |
3.2.2 拓扑数据分析(TDA) |
3.3 点集拓扑学基本定义与定理 |
3.4 本章小结 |
4 基于拓扑空间分析字符串函数缺陷 |
4.1 字符串函数的拓扑刻画 |
4.2 strcpy函数缺陷检测 |
4.3 strcat函数缺陷检测 |
4.4 双参数字符串函数 |
4.5 本章小结 |
5 总结与展望 |
5.1 本文总结 |
5.2 下一步工作展望 |
参考文献 |
个人简介 |
导师简介 |
获得成果目录 |
致谢 |
四、在C语言中集合类型数据的定义及集合运算的实现(论文参考文献)
- [1]信息型文本的翻译实践报告书[D]. 吕鸿余. 大连理工大学, 2021
- [2]C2P:基于Pi演算的协议C代码形式化抽象方法和工具[J]. 张协力,祝跃飞,顾纯祥,陈熹. 软件学报, 2021(06)
- [3]基于源代码的影响域分析方法研究及实现[D]. 杨汶锦. 北京邮电大学, 2021(01)
- [4]对现实Rust应用程序安全性的实证研究[D]. 秦伯钦. 北京邮电大学, 2021(01)
- [5]基于定值特征的缺陷自动确认方法研究与应用[D]. 祝丽华. 北京邮电大学, 2021(01)
- [6]针对Vala语言的gRPC相关工具设计及实现[D]. 杨棋智. 电子科技大学, 2021(01)
- [7]面向C++语言的代码去匿名化系统的设计与实现[D]. 刘祥昆. 北京邮电大学, 2021(01)
- [8]基于触发路径约束求解的警报自动确认方法研究与实现[D]. 卢利峰. 北京邮电大学, 2021(01)
- [9]从内存的角度解析C语言中的指针[J]. 张天友. 现代计算机, 2020(33)
- [10]基于拓扑空间的C语言缺陷分析[D]. 龚萌晓. 北京林业大学, 2020(03)