Scope Of Reverse Engineering In Software . RRS feed

  • General discussion

  • Greetings,

    My Question are given below

    •  Can anyone tell me the scope of reverse engineering in software development ?
    •  Benefits of reverse engineering in software development.
    •  Demerits of reverse engineering in software development.

    Thanks in advance.

    Warm Regards,
    ProgrammerLive - PL

    Helping People To Solve Technical Problems
    Tuesday, November 3, 2009 4:48 PM

All replies

  • Hi PL,

    Can anyone tell me the scope of reverse engineering in software development ?

    Scenerio 1

    If you have seen legacy applications be it Mainframe or legacy like VB, most of the applications would have been built over a period of time and there will be lack of documentation and also resources who would have been part of the app, which means the understanding the app will make it difficult in cases where you want to rearchitect the application.
    The scope here will be reverse engg and generate the Class and sequence diagrams from the existing source code and extending the same to the traget application.

    This will helps in reducing the design and arch effort of the by resuing the exisiting designs and also ensuring that the  Requirement and the scope of the app is not missing, which is a possibility if you do it from a scratch

    Scenrio 2

    Take case you want to enhance the existing applicaiton, there is going to be difference in the exisintg design and code as these phases are seprarte and design my not be updated.

    IN this case of enhancement you can use the exisiting code to reverse engg and generate the class and Sq diagrams. Then get a bigger picture of the app and make changes to the design to enhance the app

     Benefits of reverse engineering in software development.

    a. Understand the exisitng design
    b. save time and cost by reuse the design
    c. Need not start from scratch
    d. Leverage the exisiting knowledge base

     Demerits of reverse engineering in software development

    a. May not be helpful in case the business requirement of the app to the reversed engged will be changing and if you try to reuse it might bring in complexity
    b. Might not be good idea to reuse the design of legacy apps which were not oops based


    mark as answer if this helps

    Thanks and Regards Azhar Amir
    Wednesday, November 4, 2009 4:19 AM
  • Hi Azhar,

    Thank you for your reply.

    Helping People To Solve Technical Problems
    Wednesday, November 4, 2009 5:59 AM
  • Hi PL,

    Let me know if you need any more details


    Mark as answer if it helps
    Thanks and Regards Azhar Amir
    Wednesday, November 4, 2009 6:14 AM
  • Hello PL

    Scope of Reverse engineering exists in all types of application especially legacy Mainframes, client server apps, etc.
    Reverse engineering can be applied to all the layers of the application including Database.

    You would know Database tables can be reverse engineered in to ER diagrams using tools like MS VISIO, ORACLE DESIGNER, ER WIN, etc.
    Middle tier code can reverse engineered in to class diagrams, sequence diagrams using MS VISIO, Rational XDE, VS 2010 helps to reverse engineer in to class, sequence and other UML diagrams.

    Reverse Engineering is recommended in scenarios when it is difficult to extract knowledge from existing legacy code base because the business processes, rules have not changed much and more than 50% of existing can be reused.

    1) lack of documentation causing loss of knowledge or more time to incoporate changes
    2) Lack of programming skills in that area
    3) Code base is huge to manually mine it
    4) Existing technology is not supported and upgrades need to be done to catch up technology. e.g. a VB application although functioning well and catering business functionality will have to be upgraded to .net as support for VB is stopped from MS, in such case migration and reverse engineering is better option as compared to rewrite by capturing fresh requirements.

    There are tools from Relativity, Microfocus which helps you mine Mainframe COBOL code and reverse engineer business processes.

    Demerits of reverse engineering
    1) You continue to carry the bagage of old design issues, decisions.
    2) Sometimes a bandage approach and is good in scenarios where fix is desired from ROI perspective
    3) Cant benefit from new technology improvements
    4) Not recommended where life of application is very high.

    Many a times, it is important to show working applications/prototypes to client and hence many people first build and then reverse engineer to document.

    hope this helps.


    Thursday, November 5, 2009 9:10 AM