软件逆向工程:策略与战术
在软件开发中,我们常常会遇到一些难以理解的代码,这些代码可能由于历史原因、不良编程习惯等变得像一团乱麻。下面将介绍一些逆向工程的策略和战术,帮助我们理解和处理这类代码。
副作用与内聚性
副作用与内聚性是相悖的。一个内聚性强的函数应该专注于做一件事,而当一个函数有副作用时,它就会做很多事情,有些事情可能完全不相关。
逆向工程的通用策略
在处理大型程序时,我们需要一些通用策略来指导逆向工程的进行。
自上而下与自下而上
处理大型程序有两种方式:可以从高层接口开始,逐步向下;也可以找出底层例程,然后向上追溯。这两种方法的共同目标是构建一个调用树。
- 自下而上的方法 :我更倾向于自下而上的方法。首先,找出所有不调用其他函数(除标准库调用)的函数,这些函数构成了原子构建块。然后,找出调用这些原子函数的函数层,如此继续,直到所有层都被划分清楚。
- UML建模工具 :如果资金允许,可以使用像Rational Rose这样的UML建模工具,它能生成代码库的图形概要,方便工程师理解。但这类工具价格不菲,如果资金不足,可能只能使用调用树。
- 复杂代码的情况 :如果应用程序是一团乱麻般的代码,可能无法形成像理想中那样整齐分层的树状结构,甚至可能无法分离出原子例程。不过,调用树仍然有其价值,只是创建过程会更令人沮丧,因为追踪会更困难。
超级会员免费看
订阅专栏 解锁全文
949

被折叠的 条评论
为什么被折叠?



