Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Reverse Engineering Process

 
Barkha Moryani
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Isn't this the wrong way around - shouldn't code changes be motivated by changes in the requirements???
 
Valentin Crettaz
Gold Digger
Sheriff
Posts: 7610
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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 ]
 
Ilja Preuss
author
Sheriff
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 1934
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Valentin Crettaz
Gold Digger
Sheriff
Posts: 7610
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 1934
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic