Restructuring C programs into C++ programs

  • Zhang Ying
  • Zhou Yu-ming
  • Xu Bao-wen
  • Liu Yuan
Object-Oriented Method and Technology


There exist a lot of legacy systems written in C language, which are difficult to understand, modify, maintain and reuse. How to improve the quality of these non object-oriented systems has become an important issue in software engineering area. A possible way is to transform these procedural systems into semantically equivalent object-oriented systems implemented in C++ language, which provides object-oriented features such as data abstraction, inheritance and polymorphism, makes software system more comprehensible, maintainable and reusable. A detailed discussion on polymorphism analysis, object discovery and possible inheritance relation extraction on C-to-C++ conversion problem is made, which is also suitable to the transformation on legacy systems implemented in other procedural languages to equivalent object-oriented systems.

Key words

object extraction cohesion coupling inheritance 

CLC number

TP 311. 5 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Li Bang-qing, Xu Bao-wen, Yu H. Transforming Ada Serving Tasks into Protected Objects.Proceedings of SIGAda’98. Washington DC: ACM Press, 1998. 240–245.Google Scholar
  2. [2]
    Zhou Yu-ming, Xu Bao-wen. Extracting Objects of Ada Programs Using Module Features.Proceedings of IEEE Conference on Software Maintenance. Oxford: IEEE Society Press, 1999. 23–29.Google Scholar
  3. [3]
    Zhou Yu-ming, Xu Bao-wen. An Object-Abstracting Approach Using Module Cohesion.Journal of Software, 2000,11(6): 836–840.Google Scholar
  4. [4]
    Siff M B. Techniques for Software Renovation. [Ph. D. thesis]. University of Wisconsin, http://www. cs. wisc. edu/wpis/papers/ Scholar
  5. [5]
    Canfora G, Cimitile A, Munro M. A Reverse Engineering Method for Identifying Reusable Abstract Data Types.Proceedings of the First IEEE Working Conference on Reverse Engineering. Baltimore, Maryland: IEEE Computer Soc Press, 1993. 73–82.Google Scholar
  6. [6]
    Canfora G, Cimitile A, Munro M. An Improved Algorithm for Identifying Reusable Objects in Code.Software Practice and Experience, 1996,26(1): 25–48.CrossRefGoogle Scholar
  7. [7]
    Liu S, Wilde N. Identifying Objects in a Conventional Procedural Language: an Example of Data Design Recovery.Proceedings of the IEEE Conference on Software Maintenance, San Diego, CA: IEEE Computer Society Press, 1990. 266–271.Google Scholar
  8. [8]
    Myers G J.Composite/Structured Design. New York: Van Nostrand Reinhold Co, 1978.Google Scholar
  9. [9]
    Nandigam J. A Measure for Module Cohesion [Ph. D thesis]. University of Southwestern Louisiana, 1995.Google Scholar
  10. [10]
    Lakhotia A, Deprez J C. Restructuring Program by Tucking Statements into Functions.Information and Software Technology, 1998,40(11/12): 677–689.CrossRefGoogle Scholar

Copyright information

© Springer 2001

Authors and Affiliations

  • Zhang Ying
    • 1
  • Zhou Yu-ming
    • 1
  • Xu Bao-wen
    • 1
    • 2
  • Liu Yuan
    • 1
  1. 1.Department of Computer Science and EngineeringSoutheast UniversityNanjingChina
  2. 2.State Key Laboratory of Software EngineeringWuhan UniversityWuhanChina

Personalised recommendations