逆向工程和净室软件工程___20240808
1:逆向工程
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。(1)重构/重组(Restructuring)。重构是指在【同一抽象级别】上【转换系统描述形式】
(2)设计恢复(Designrecovery)。设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)逆向工程(Reverse engineering):逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。
(4)正向工程(Forward engineering)。正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
(5)再工程/重构工程(Re-engineering)。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。
小试牛刀
软件逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。在逆向工程导出信息的四个抽象层次中,( )包括反映程序各部分之间相互依赖关系的信息;()包括反映程序段功能及程序段之间关系的信息。
A 实现级 B 结构级 C 功能级 D 领域级
A 实现级 B 结构级 C 功能级 D 领域级
答案: B C
实现级:包括程序的抽象语法树、符号表、过程的设计表示
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型
2:净室软件工程
技术手段
- 统计过程控制下的增量式开发: 控制迭代
- 基于函数的规范和设计: 盒子结构
- 定义3种抽象层次: 行为视图(黑盒)->有限状态机视图(状态盒)->过程视图(明盒)
- 正确性验证:净室工程的核心
- 统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法
缺点
太理论化,正确性验证的步骤比较困难且耗时。
开发小组不进行传统的模块测试,这是不现实的。
正确性验证的步骤比较困难且耗时。
开发小组不进行传统的模块测试,这是不现实的。
脱胎于传统软件工程,不可避免带有传统软件工程的一些弊端。