Skip to Content

Ebook Re-engineering a Credit Card Authorization System for Maintainability and Reusability of Components – a Case Study

A credit card authorization system (CAS) is one of the largest information systems used worldwide. CAS handles various types of transactions in large volume, such as purchase authentication, balance transfer, affiliated discount services, etc. One characteristic of CAS is its frequent update, and the maintainability of CAS is a crucial issue for credit card companies. Government frequently creates and enforces laws targeting the business of card companies.

In addition, due to heavy competition in the credit card market, card companies are pressed to offer new services or change existing services frequently. For example, the discount rate on gas purchase for freight vehicles changes many times a year due to gas price changes and discount rate changes of other card companies. These situations cause constant revisions of CAS, which increases the complexity of system maintenance. Thus, in order to manage frequent revisions, CAS should be designed to accommodate changing requirements easily and isolate effects of updates as much as possible.

From the review of the CAS of LG Card Co. Ltd, we found several opportunities to enhance reusability of the CAS components. One manifest problem was that new services have been added to CAS by simply adding new components specially developed for those services without consideration of common/reusable characteristics of the services. This was caused by the lack of proactive design that anticipates updates of services based on market evolution. This ad-hoc way of evolution resulted in redundant code and difficulty of understanding program behavior. As a result, newly added services or updates of services easily affected unnecessarily large segments of CAS and caused high maintenance costs.

In this paper, we present our experience of improving reusability of the CAS components through proactive re-engineering based on a feature model. First, we reviewed the existing CAS code and the revision history with help of domain experts and extracted the legacy design. Then, we constructed a feature model of the CAS domain that captures variabilities of CAS from the revision history and a market analysis. Based on the recovered legacy design and the feature model, we could re-design components of CAS to preplan adoption of future evolution, which enhanced system maintainability. This re-engineering task was conducted based on three re-engineering principles: encapsulation of variabilities, generalization of common processes, and separation of data-streams.

Section 2 describes related works briefly. Section 3 gives an overview of CAS and its corresponding feature model. Section 4 explains the three design principles we applied to the re-engineering task. In section 5, we explain details of the re-engineering task. Lessons learned from this re-engineering project are summarized in section 6. Finally, we conclude this paper with future works in section 7.

Download
PDF Ebook Re-engineering a Credit Card Authorization System for Maintainability and Reusability of Components – a Case Study