从逆向工程的角度来看,分析一个系统的源码,主要要把握软件的多个层次、多个视图。
软件在工程师的眼里实际上就是做数据转换用的,内部存在信息的流动。
软件在用户的眼里就是一个包含若干行为,能完成一定的功能的工具。
所以软件比不可少的就有了:行为域、功能域、信息域。
因此就产生了与用户交互的行为模型,用户使用工具的功能模型,工程师做数据转换、信息流动的信息域模型。
重点谈谈功能模型与信息模型
在工程师看来,要关注软件的输入、处理、输出,这其中最重要又是输入、处理。
在大型的软件系统,它的输入一般就是连接管理模型;它的处理模型包多线程并发模型、业务划分。
总而言之,连接管理模型、运行时模型(多线程并发模型)、业务层次划分就是软件的主要部分。
一个工程师可能能够轻易将连接管理模型、运行时模型、业务层次模型逐个击破,做到深刻理解。
但是还有一个更重要的问题,就是还要有整体把握的能力。当系统出现bug或性能问题时,能全局的分析问题,看到问题产生的原因,此时全局把控的能力至关重要。
将系统的各个关键部分整合起来,做系统分析的能力做逆向的时候是一种很重要的素质。
阅读(974) | 评论(0) | 转发(0) |