1 / 16

Reengineering

Reengineering. Horseshoe Model. Reverse Engineering. Forward Engineering. High-level (Abstract) View. New System. Existing System. Reengineering Process. Reengineering Process. 1. Reverse Engineering (Program Understanding) Reverse Engineering Collect Data Browsing

tucker-lee
Download Presentation

Reengineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Reengineering

  2. Horseshoe Model Reverse Engineering Forward Engineering High-level (Abstract) View New System Existing System Reengineering Process

  3. Reengineering Process • 1. Reverse Engineering (Program Understanding) • Reverse Engineering • Collect Data • Browsing • 2. Forward Engineering (Software Evolution) • Redocumentation • Restructuring • Remodularization [

  4. Reverse Engineering • “Reverse engineering is the process of analyzing a subject system to • identify the systems’ components and their interrelationships and • create representations of the system in another form or at a higher level of abstraction” • Simply: Extract and Abstract and Present • Does not change the system.

  5. Reverse Engineerin • Information Sources: • Code • Documents • Database Schema • User Interviews • Recovered Knowledge • Business Rules • Control flow • Classes and Patterns • Modules and Dependencies • Architecture

  6. Reverse Engineering Strategies - Top Down • Top-down • Take high-level information (e.g. the documented architecture) and use it as the basis for reverse engineering the lower levels • Unpopular - Usually costly because it requires analysis of the application domain. • Knowledge based - searches a database of domain concepts and looks to match it with code.

  7. Reverse Engineering Strategies - Bottom-up • Bottom-up • Start with the source code and apply various techniques to create high level abstractions • Examples • Rigi- After gathering facts about the source code, organize based on basic software engineering principles. • Pattern-based • Concepts from File names • Extensive Research in Automating Reverse Engineering at this level. Limits to Success? Missing semantics not explicit in the source code.

  8. Reverse Engineering Strategies - Hybrid • Hybrid Approach • Take information from the high-level, take facts from the source and works toward making a model that matches both. • PBS Bookshelf - start with a conceptual model and facts about the system. Create a model around this information.

  9. Reverse Engineering- Tools • Maintenance Workbenches • Typically consist of a DB containing an abstract syntax of the source • provides static analysis (e.g. call graphs) • a debugger • filters - show only relevant information, limited querying abilities. • Navigation tools or Browser • Program Slicing • Transformations (porting)

  10. Forward Engineering • Strategies for moving forward: • Ignore • Replace • Rewrite (“Cold Turkey”) • Incremental (“Chicken Little”) • Evolutionary (“Butterfly”)

  11. Forward Engineering (cont’d) • Ignore • Don’t do anything. No other alternatives currently feasible. • Replace • Scrap old system in favor of an OTS system. (Popular Option) • Rewrite • Scrap old system and start coding from scratch - high cost, high risk

  12. Forward Engineering (cont’d) • Incremental • Develop a ‘skeleton’ for the new system • Incrementally phase out parts of the old system and replace with the new one. • Using Gateways and Wrappers • Evolutionary • Phase in new features over time • New functionality is added bit by bit.

  13. Forward Engineering-Development • Different from new development • Already existing implementation that (usually) works. • Similar to new development • Usually a manual process • Not many good tools available • On-going Research

  14. Forward Engineering - Tools • Making Changes • Transformation systems • Essentially search and replace • Some Y2K Tools • Planning tools • McCabe Reengineer (http://www.mccabe.com) [OhWo98] • Classify Modules / Files on a complexity scale (red, yellow, green) • Restructuring tools • C to C++, C++ to Java. • At code level, simply follow specification • Still not simple, semantic differences between languages, inheritance issues, etc…

  15. Reengineering Tools & Technology • The Simple Tools that can also help out: • grep • cscope • cxref

  16. examples • Recent prominence because of Y2K problem • Transition from Mainframe to Client/Server • Object-oriented Programming • Large demand from industry • Lot of research areas • Visualization • Machine recognition of ‘concepts’ and ‘semantics’ above programming level • More powerful automated reengineering tools

More Related