This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Agile and Other Processes and the fly likes Reverse Engineering Process Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Engineering » Agile and Other Processes
Bookmark "Reverse Engineering Process" Watch "Reverse Engineering Process" New topic
Author

Reverse Engineering Process

Barkha Moryani
Greenhorn

Joined: Jun 16, 2004
Posts: 2
In a normal scenario in any reverse Engg system, during the phase when the system is undergoing transformation, the code at the user end is also simultaneously being updated. Could anyone assist me in adopting the proper and accurate approach to dynamically capture these changes in system requirements, caused by changes in code. There is no doc abt these changes in code, as such.
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Isn't this the wrong way around - shouldn't code changes be motivated by changes in the requirements???


The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Valentin Crettaz
Gold Digger
Sheriff

Joined: Aug 26, 2001
Posts: 7610
Originally posted by Ilja Preuss:
Isn't this the wrong way around - shouldn't code changes be motivated by changes in the requirements???


I think so

According to Webopedia, Reverse Engineering is "the process of recreating a design by analyzing a final product."

I don't think your problem is about reverse engineering, but more about how to effectively synchronize the requirements and the code/design of a system. As Ilja pointed out, you should not change the code first and then try to adapt requirements accordingly, but the other way around. By doing this, you'll end up with some crappy software that is completely unmaintainable and very difficult to debug.

When the system has to undergo some transformation, you should start by updating the requirements (because they tell what the user wants from the software) and then repercute them on the code and/or design documents (if such exist). That way you keep in sync both the requirements (which is the informal contract between the developer and the user) and the implementation of those requirements.
[ June 16, 2004: Message edited by: Valentin Crettaz ]

SCJP 5, SCJD, SCBCD, SCWCD, SCDJWS, IBM XML
[Blog] [Blogroll] [My Reviews] My Linked In
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Valentin Crettaz:
When the system has to undergo some transformation, you should start by updating the requirements (because they tell what the user wants from the software) and then repercute them on the code and/or design documents (if such exist). That way you keep in sync both the requirements (which is the informal contract between the developer and the user) and the implementation of those requirements.


Exactly!

I prefer to write down the requirements as automated acceptance tests, for example using http://fitnesse.org/ - that way it's easy to notice wether your code actually does implement the requirements correctly.
Kishore Dandu
Ranch Hand

Joined: Jul 10, 2001
Posts: 1934
Reverse Engineering in my opinion needs talent of different nature. What I mean is, it needs developers that can decipher the system(some one else's undocumented efforts) and be able to create documentation out of it.

Following is the procedure I followed in one of my previous efforts.

1) Thorough reading and re-reading of the source code.
2) Create as much documentation in the source code as possible.
3) create flowcharts or algorithms out of the above source code as needed.
4) Then create sequence diagrams, class diagrams depending on the understanding of the system.

Its not easy, but it is achievable with a different set of resources at hand.


Kishore
SCJP, blog
Valentin Crettaz
Gold Digger
Sheriff

Joined: Aug 26, 2001
Posts: 7610
OK, your assumption is that you want to "reverse engineer" someone else's system and try to provide what the initial developer failed to provide, that is requirements and design documentation, right?
Kishore Dandu
Ranch Hand

Joined: Jul 10, 2001
Posts: 1934
sometimes 'reverse engineering' is employed to recreate the whole thing in a more standards compliant, productive, reliable way.

And is many times executed because of archaic code that has no documentation.
 
jQuery in Action, 2nd edition
 
subject: Reverse Engineering Process