在研究软件架构中,有一种技术叫做逆向工程。
一直找不到比较好的关于逆向工程的定义。
偶尔看到一句关于逆向工程的定义,感觉还不错,就记下来与大家分享。
The process of extracting high-level models from the source code is often referred to as reverse engineering.
The discipline of reverse engineering has two main areas :
1.Technical approaches: These extraction approaches derive information about a system based on existing artifacts. In particular, source code, comments, user documentation, executable modules, and system descriptions are often extracted.
2.Human knowledge and inference: These approaches focus on how humans understand software.
Typically, human investigators use the following strategies:
1)Top-down strategies: start at the highest level of abstraction and recursively fill in understanding of the sub-parts.
2)Bottom-up strategies: understand the lowest level components and how these work together to accomplish the system’s goals .
3)Model-based strategies: understand the mental model of how the system works and tries to deepen the understanding of selected areas .
4)Opportunistic strategies: use some combination of the above approaches.