Unit 4 of 4 · B.Sc IT Sem 5

Unit 4: Reengineering and CASE

Software Engineering notes · PTU syllabus (BSIT503/BSBC401)

3 min read6 topics10 exam questions
On this page
  1. Unit summary
  2. Software reengineering
  3. Reverse engineering
  4. Restructuring
  5. Forward engineering
  6. Computer-aided software engineering (CASE)
  7. Taxonomy of CASE tools
  8. Key terms
  9. Quick revision
  10. Important questions

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
ProcessSoftware re-engineering
  1. 1Inventory analysis

    Which systems to re-engineer

  2. 2Reverse engineering

    Recover the design

  3. 3Restructuring

    Clean code and data

  4. 4Forward engineering

    Rebuild with modern methods

1

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.
CycleSoftware reengineering process model
Software reengineering process model
1Inventory analysis
2Document restructuring
3Reverse engineering
4Code restructuring
5Data restructuring
6Forward engineering
  1. 1. Inventory analysis: List all applications by size, age, business criticality
  2. 2. Document restructuring: Re-document critical parts
  3. 3. Reverse engineering: Recover design from code
  4. 4. Code restructuring: Improve code without changing behaviour
  5. 5. Data restructuring: Redesign data structures and databases
  6. 6. Forward engineering: Build the improved system
2

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.
Key termsReverse engineering concepts
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.
3

Topic 3

Restructuring

ComparisonCode and data restructuring
Code restructuring
Data 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.
4

Topic 4

Forward engineering

  • Forward engineering: using recovered design information to rebuild the system with modern engineering practices — new architecture, technology and functionality.
Key termsForward engineering examples
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.

5

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.
HierarchyCASE building blocks
  1. CASE tools
  2. Integration framework

    Programs that let tools communicate and share a repository

  3. Portability services

    Let tools run on different platforms

  4. Operating system

    Database and object management services

  5. Hardware platform
  6. 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.
6

Topic 6

Taxonomy of CASE tools

Key termsCASE tools by function
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

  1. Q1.What is software reengineering?
  2. Q2.Define reverse engineering.
  3. Q3.Distinguish code and data restructuring.
  4. Q4.What is forward engineering?
  5. Q5.Distinguish upper and lower CASE.
  6. Q6.Give two examples of CASE tools.

Long-answer questions

  1. Q1.Explain the software reengineering process model.
  2. Q2.Explain reverse engineering, restructuring and forward engineering.
  3. Q3.Explain the building blocks of CASE.
  4. 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.

WhatsApp us