系统架构设计师 软件工程之逆向工程,净室软件工程

118 阅读3分钟

是记录过程,我不保证其正确性

思维导图

image.png

净室软件工程

在形式化开发中有所提及,了解一下就行,选择题

Cleanroom software engineeringCleanroom\ software\ engineering是软件开发的一种形式化方法

  1. 使用盒结构规约进行分析和建模

知道黑盒测试与白盒测试吧,就是盒结构的一种

  1. 正确性验证排除错误

即用一些数学的工具来验证排除错误

  1. 统计测试
  2. 质量控制

软件重用与逆向工程

大概率是选择题,你留一个印象就行

软件重用

我自己地理解:重用即重复地使用

在软件开发过程中重复的使用相同或类似软件元素的过程。

软件元素包括以下内容

  • 需求分析文档
  • 设计过程
  • 设计文档
  • 程序代码
  • 测试用例
  • 领域知识

分类

  • 横向重用:不同应用领域中的软件元素,例如数据结构,分类算法和人机界面构件等等,就比如函数库,每个语言都有自己地函数库
  • 纵向重用:即在一类具有较多公共性地应用领域之间进行软件重用

就比如支付组件,这个你电商、医疗、保健领域都要用

逆向工程

英文名:Reverse EnginerringReverse\ Enginerring 了解一下 举一个例子即你买来一部手机,拆开看看有什么东西,怎么拼起来来的,然后自己山寨一个

四个步骤

  1. 重构 restructuringrestructuring,这个官方解释是指在同一抽象级别上转换系统描述形式。说人话重新构造
  2. 设计恢复design recoverydesign\ recovery,借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息,说人话就是借助工具抽象出来数据结构是怎么设计的,总体怎么设计的
  3. 再工程reengineeringre-engineering,即修改或重构已有的系统,产生系统的一个新版本,包括逆向工程、新需求的考虑过程和正向工程

正向工程是再工程的一部分

  1. 正向工程forward engineeringforward\ engineering 从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。

四个层次

实现级别最低,领域级别最高

  1. 实现级别,即汇编语言那一层次,官方解释是抽象的语法树,符号表,过程的设计表示
  2. 结构界别,若是Java,就是用了哪些变量,等等。

官方解释:反映程序分量之间相互依赖关系的信息,如调用图、结构图、程序和数据结构。

  1. 功能级别,就是类方法之间的调用关系,官方解释反映程序段功能及程序段之间关系的信息,如数据和控制流模型。
  2. 领域级别,反映程序分量或程序实体与应用领域概念之间对应关系的信息,如E-R图

逆向工程的完备性:某一个抽象层次上提供信息的详细程度描述 抽象层次越高完备性越低,通过逆向工程恢复的难度越大,抽象层次就是上面的那四个层次