lreverse

软件测试

测试是为了证明“程序有错”,而无法证明“程序正确” 软件质量 只有极少数软件应该追求“零缺陷”,对绝大多数软件而言,商业目标决定了质量目标,而不该把质量目标凌驾于商业目标之上 航空、航天等系统对质量要求极高,任何缺陷都有可能导致机毁人亡,所以人们不惜一切代价去消除缺陷 绝大多数普通软件的缺陷并不会造成机毁人亡的重大损失;日常工作中用到的软件几乎都是有缺陷的 ...

软件需求

分类 业务需求 客户对系统的高层次目标要求,定义了项目的远景和范畴 用户需求 从用户角度描述的系统功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性 用户需求描述了用户能使用系统来做些什么 功能需求(FR) 系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,不考虑系统内部 的实现细节 非功能性需求(NFR) 从各个角度对系统的约束和限制,...

软件开发过程

概述 黑盒过程 需求稳定,不易变化 白盒过程 需求不稳定,需要不断获取反馈 软件过程模型 定义了软件开发的具体活动以及活动间的逻辑关系 瀑布模型 鲑鱼模型:向前一阶段回溯很难 遵循过程规律,按次序进行,上一个阶段结束,下一阶段才能开始,工作以线性的方式进行 计划、需求分析、设计、编码、测试、运行维护 优点 简单、易懂、快速 为项目...

代码优化

流图 基本块 基本块是满足下列条件的最大的连续三地址指令序列(一组总是一起执行的指令) 控制流只能从基本块的第一条指令进入该块 除了基本块的最后一条指令,控制流在离开基本块之前不会跳转或者停机 基本块划分(确定首指令) 指令序列的第一个三地址指令是一个首指令 任意一个条件或无条件转移指令的目标指令是一个首指令 紧跟在一个条件或无条件转移指令之后的指令是一个首指...

二进制漏洞

缓冲区溢出 缓冲区:程序在运行前会预留的内存空间,用于临时存储I/O数据 缓冲区溢出:通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃、系统关机或使程序执行其它指令,以达到攻击的目的 栈溢出 待填充…. 堆溢出 堆是程序运行时动态分配的内存,使用完毕后需要把堆指针传给堆释放函数来回收这片内存,否则会造成内存泄露 堆结构 堆块 ...