Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Identifying and Qualifying Reusable Software Components
Computer - Special issue on cryptography
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software reconnaissance: mapping program features to code
Journal of Software Maintenance: Research and Practice
Understanding interleaved code
Reverse engineering
Identifying objects using cluster and concept analysis
Proceedings of the 21st international conference on Software engineering
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Locating Features in Source Code
IEEE Transactions on Software Engineering
Function Recovery Based on Program Slicing
ICSM '93 Proceedings of the Conference on Software Maintenance
Slicing Programs with Arbitrary Control-flow
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Identifying reusable functions using specification driven program slicing: a case study
ICSM '95 Proceedings of the International Conference on Software Maintenance
The Role of Concepts in Program Comprehension
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Effective, Automatic Procedure Extraction
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
A Method to Re-Organize Legacy Systems via Concept Analysis
IWPC '01 Proceedings of the 9th International Workshop on Program Comprehension
Code Extraction Algorithms which Unify Slicing and Concept Assignment
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
CONSIT: a fully automated conditioned program slicer
Software—Practice & Experience
Incubating Services in Legacy Systems for Architectural Migration
APSEC '04 Proceedings of the 11th Asia-Pacific Software Engineering Conference
Aligning technology and business: applying patterns for legacy transformation
IBM Systems Journal
Feature Analysis for Service-Oriented Reengineering
APSEC '05 Proceedings of the 12th Asia-Pacific Software Engineering Conference
A Service-Oriented Componentization Framework for Java Software Systems
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Recovering Data Models via Guarded Dependences
WCRE '07 Proceedings of the 14th Working Conference on Reverse Engineering
Hi-index | 0.00 |
Transaction processing is a key constituent of the IT workload of commercial enterprises (e.g., banks, insurance companies). Even today, in many large enterprises, transaction processing is done by legacy "batch" applications, which run offline and process accumulated transactions. Developers acknowledge the presence of multiple loosely coupled pieces of functionality within individual applications. Identifying such pieces of functionality (which we call "services") is desirable for the maintenance and evolution of these legacy applications. This is a hard problem, which enterprises grapple with, and one without satisfactory automated solutions. In this paper, we propose a novel static-analysis-based solution to the problem of identifying services within transaction-processing programs. We provide a formal characterization of services in terms of control-flow and data-flow properties, which is well-suited to the idioms commonly exhibited by business applications. Our technique combines program slicing with the detection of conditional code regions to identify services in accordance with our characterization. A preliminary evaluation, based on a manual analysis of three real business programs, indicates that our approach can be effective in identifying useful services from batch applications.