Unit 4: Reengineering and CASE
Software Engineering notes · PTU syllabus (BSIT503/BSBC401)
On this page
Unit summary
Much software work improves existing systems rather than building new ones, and CASE tools automate the engineering itself. This unit covers reverse engineering, restructuring, forward engineering and the taxonomy of CASE tools.
After this unit you can
- Explain software reengineering and its process model
- Explain reverse engineering, restructuring and forward engineering
- Explain CASE and its building blocks
- Classify CASE tools
PTU syllabus topics
- Reverse engineering
- restructuring
- forward engineering
- taxonomy of CASE tools
- 1Inventory analysis
Which systems to re-engineer
- 2Reverse engineering
Recover the design
- 3Restructuring
Clean code and data
- 4Forward engineering
Rebuild with modern methods
Topic 1
Software reengineering
- Reengineering: examining and altering an existing (legacy) system to reconstitute it in a new form — improving maintainability, moving to new platforms, or adding capability — at lower risk and cost than rewriting from scratch.
- 1. Inventory analysis: List all applications by size, age, business criticality
- 2. Document restructuring: Re-document critical parts
- 3. Reverse engineering: Recover design from code
- 4. Code restructuring: Improve code without changing behaviour
- 5. Data restructuring: Redesign data structures and databases
- 6. Forward engineering: Build the improved system
Topic 2
Reverse engineering
- Reverse engineering: analysing a program to create representations at a higher level of abstraction — recovering design, data structures and processing logic from source code.
- Abstraction level
- From code to program, data flow, ER models
- Completeness
- Detail provided at each level
- Interactivity
- Degree of human involvement with tools
- Directionality
- One-way (for maintenance) or two-way (for restructuring)
- Reverse engineering of data: recover data structures and database schemas; of processing: understand procedural abstractions; of user interfaces: understand screen behaviour before redesign.
Topic 3
Restructuring
Purpose
Easier-to-understand code with the same behaviour
Better data architecture
Activities
Remove spaghetti logic, apply structured constructs, refactor
Data analysis, normalisation, rationalising names, physical redesign
Example
Replacing goto chains with loops; splitting a large function
Moving flat files into a normalised database
- Refactoring is small-scale restructuring done continuously in agile development.
Topic 4
Forward engineering
- Forward engineering: using recovered design information to rebuild the system with modern engineering practices — new architecture, technology and functionality.
- Client–server re-engineering
- Mainframe application split into client and server
- Object-oriented re-engineering
- Procedural code redesigned into classes
- Web and cloud re-engineering
- Desktop application rebuilt as a web or cloud service
- User interface re-engineering
- Text screens replaced by graphical or mobile interfaces
Example
A college's 1990s FoxPro fee system is reverse engineered to recover its tables and rules, its data restructured into MySQL, and forward engineered into a web application with online payments.
Topic 5
Computer-aided software engineering (CASE)
- CASE: software tools that automate or support software engineering activities — from planning and analysis to testing and maintenance.
- CASE tools
- Integration framework
Programs that let tools communicate and share a repository
- Portability services
Let tools run on different platforms
- Operating system
Database and object management services
- Hardware platform
- Environment architecture
Network and people
- Upper CASE supports early phases (planning, analysis, design); lower CASE supports later phases (coding, testing, maintenance); integrated CASE (I-CASE) covers the whole life cycle with a shared repository.
Topic 6
Taxonomy of CASE tools
- Business process engineering tools
- Model business information flows
- Process modelling and management tools
- Represent and manage the software process
- Project planning tools
- Estimation, scheduling — MS Project
- Risk analysis tools
- Build risk tables
- Project management tools
- Track progress — Jira
- Requirements tracing tools
- Link requirements to design and tests
- Metrics and management tools
- Collect and analyse metrics
- Documentation tools
- Generate documents
- System software tools
- Network, email, object management
- Quality assurance tools
- Check standards compliance — SonarQube
- Database management tools
- Manage the CASE repository
- Software configuration management tools
- Version control — Git
- Analysis and design tools
- Models and UML — StarUML, Enterprise Architect
- Prototyping and simulation tools
- Screen painters, mock-ups — Figma
- Interface design tools
- GUI builders
- Programming tools
- Compilers, editors, IDEs — VS Code, Eclipse
- Web development tools
- Page and site builders
- Integration and testing tools
- Test managers, coverage — Selenium, JUnit
- Static analysis tools
- Code checkers
- Dynamic analysis tools
- Profilers, debuggers
- Test management tools
- Plan and track tests
- Client–server testing tools
- Load and network testing
- Reengineering tools
- Reverse engineering and restructuring
- Benefits of CASE: higher productivity, better quality and consistency, automatic documentation, easier maintenance. Limitations: cost, training, tool integration problems.
Key terms
- Reengineering
- Rebuilding an existing system in a new, improved form
- Reverse engineering
- Recovering design from existing code
- Restructuring
- Improving code or data structure without changing behaviour
- Forward engineering
- Building a new system from recovered design
- CASE
- Computer tools supporting software engineering
Quick revision
- Reengineering process: inventory, document, reverse engineer, restructure code and data, forward engineer.
- Reverse engineering: abstraction, completeness, interactivity, directionality.
- Code vs data restructuring; refactoring.
- Forward engineering to client–server, OO, web and cloud.
- CASE building blocks; upper, lower, integrated CASE; taxonomy of tools.
Important exam questions
Practice questions written to the PTU exam pattern for this unit's syllabus: short answers (Section A style) and long answers (Sections B and C style).
Short-answer questions
- Q1.What is software reengineering?
- Q2.Define reverse engineering.
- Q3.Distinguish code and data restructuring.
- Q4.What is forward engineering?
- Q5.Distinguish upper and lower CASE.
- Q6.Give two examples of CASE tools.
Long-answer questions
- Q1.Explain the software reengineering process model.
- Q2.Explain reverse engineering, restructuring and forward engineering.
- Q3.Explain the building blocks of CASE.
- Q4.Explain the taxonomy of CASE tools.
Stuck on this unit?
Message SBS on WhatsApp for help with Software Engineering, or to ask about studying B.Sc IT at Synetic.
