Active In SP
Joined: Aug 2009
21-12-2009, 10:08 AM
Engineering is the profession involved in designing, manufacturing, constructing, and maintaining of products, systems, and structures. At a higher level, there are two types of engineering: forward engineering and reverse engineering.
Forward engineering is the traditional process of moving from high-level abstractions and logical designs to the physical implementation of a system. It is the quotidian engineering of a product from a design
Reverse engineering is the process of starting with a finished product and working backwards to analyze how the product operates or how it was made.
Reverse engineering can be viewed as the process of analyzing a system to:
1. Identify the system's components and their interrelationships
2. Create representations of the system in another form or a higher level of abstraction
3. Create the physical representation of that system
It is the process of analyzing a system's code, documentation, and behavior to identify its current components and their dependencies to extract and create system abstractions and design information. The subject system is not altered; however, additional knowledge about the system is produced.
Reverse engineering is the scientific method of taking something apart in order to figure out how it works. Reverse engineering has been used by innovators to determine a product's structure in order to develop competing or interoperable products. Reverse engineering is also an invaluable teaching tool used by researchers, academics and students in many disciplines, who reverse engineer technology to discover, and learn from, its structure and design.
The U.S. Supreme Court says "reverse engineering is a fair and honest means of starting with the known product and working backwards to derive the process which aided in its development or manufacture.
Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates. This kind of inquiry engages individuals in a constructive learning process about the operation of systems and products. Reverse engineering as a method is not confined to any particular purpose, but is often an important part of the scientific method and technological development. The process of taking something apart and revealing the way in which it works is often an effective way to learn how to build a technology or make improvements to it.
Through reverse engineering, a researcher gathers the technical data necessary for the documentation of the operation of a technology or component of a system. In "black box" reverse engineering, systems are observed without examining internal structure, while in "white box" reverse engineering the inner workings of the system are inspected.
When reverse engineering software, researchers are able to examine the strength of systems and identify their weaknesses in terms of performance, security, and interoperability. The reverse engineering process allows researchers to understand both how a program works and also what aspects of the program contribute to its not working. Independent manufacturers can participate in a competitive market that rewards the improvements made on dominant products. For example, security audits, which allow users of software to better protect their systems and networks by revealing security flaws, require reverse engineering. The creation of better designs and the interoperability of existing products often begin with reverse engineering.
Reverse engineering is very common in such diverse fields as software engineering, entertainment, automotive, consumer products, microchips, chemicals, electronics, and mechanical designs. For example, when a new machine comes to market, competing manufacturers may buy one machine and disassemble it to learn how it was built and how it works. A chemical company may use reverse engineering to defeat a patent on a competitor's manufacturing process. In civil engineering, bridge and building designs are copied from past successes so there will be less chance of catastrophic failure. In software engineering, good source code is often a variation of other good source code.
Another reason for reverse engineering is to compress product development times. In the intensely competitive global market, manufacturers are constantly seeking new ways to shorten lead-times to market a new product
Following are reasons for reverse engineering a part or product:
1. The original manufacturer of a product no longer produces a product
2. There is inadequate documentation of the original design
3. The original manufacturer no longer exists, but a customer needs the product
4. The original design documentation has been lost or never existed
5. Some bad features of a product need to be designed out. For example, excessive wear might indicate where a product should be improved
6. To strengthen the good features of a product based on long-term usage of the product
7. To analyze the good and bad features of competitors' product
8. To explore new avenues to improve product performance and features
9. To gain competitive benchmarking methods to understand competitor's products and develop better products
10. The original supplier is unable or unwilling to provide additional parts
11. The original equipment manufacturers are either unwilling or unable to supply replacement parts, or demand inflated costs for sole-source parts
12. To update obsolete materials or antiquated manufacturing processes with more current, less-expensive technologies
People have many reasons why they might wish to reverse engineer software, but two important ones are
1) To make software that can interoperate with the software being studied and
2) To make a product that will compete with it. Why might the knowledge not be visible?
Dan Shearer, Samba Team and open source virtualization specialist, provides some possible reasons:
Â¢ The original programmer is dead, or the company has died, or otherwise events have buried the explanation for how a technology works from the engineer and perhaps everyone else;
Â¢ Commercial protection. A company feels its commercial goals would be compromised if the knowledge was published, so it keeps the knowledge secret (and often tries to obscure the knowledge so it is difficult for anyone to find it.)
Â¢ Encumbrance on the knowledge. The knowledge might be published, but under such terms as anyone who agrees to the conditions under which the publication is made is limited in what he can do with it. A basic encumbrance is sometimes cost for access to the documentation.
Common misperception regarding reverse engineering is that it is used for the sake of stealing or copying someone else's work. Reverse engineering is not only used to figure out how something works, but also the ways in which it does not work.
Some examples of the different uses of reverse engineering include:
Â¢ Understanding how a product works more comprehensively than by merely observing it
Â¢ Investigating and correcting errors and limitations in existing programs
Â¢ Studying the design principles of a product as part of an education in engineering
Â¢ Making products and systems compatible so they can work together or share data
Â¢ Evaluating one's own product to understand its limitations
Â¢ Determining whether someone else has literally copied elements of one's own technology
Â¢ Creating documentation for the operation of a product whose manufacturer is unresponsive to customer service requests
Â¢ Transforming obsolete products into useful ones by adapting them to new systems and platforms