On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
The C programming language
Identifying and Qualifying Reusable Software Components
Computer - Special issue on cryptography
Type inference for polymorphic references
Information and Computation
Type systems for programming languages
Handbook of theoretical computer science (vol. B)
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
Software salvaging and the call dominance tree
Journal of Systems and Software
Signature matching: a tool for using software libraries
ACM Transactions on Software Engineering and Methodology (TOSEM)
Software reuse: current status and trends
Journal of Systems and Software - Special issue on software reuse
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Reusing Software: Issues and Research Directions
IEEE Transactions on Software Engineering
Towards an ML-Style Polymorphic Type System for C
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
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
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Identifying Modules via Concept Analysis
IEEE Transactions on Software Engineering
An Empirical Analysis of C Preprocessor Use
IEEE Transactions on Software Engineering
Generalization in Type Theory Based Proof Assistants
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Converting java programs to use generic libraries
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Documenting software systems using types
Science of Computer Programming - Software analysis, evolution and re-engineering
Refactoring for Parameterizing Java Classes
ICSE '07 Proceedings of the 29th international conference on Software Engineering
WYSINWYX: What you see is not what you eXecute
ACM Transactions on Programming Languages and Systems (TOPLAS)
DIVINE: discovering variables in executables
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Efficiently refactoring java applications to use generic libraries
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Hi-index | 0.00 |
We consider the problem of software generalization: Given a program component C, create a parameterized program component C′ such that C′ is usable in a wider variety of syntactic contexts than C. Furthermore, C′ should be a semantically meaningful generalization of C; namely, there must exist an instantiation of C′ that is equivalent in functionality to C.In this paper, we present an algorithm that generalizes C functions via type inference. The original functions operate on specific data types; the result of generalization is a collection of C++ function templates that operate on parameterized types. This version of the generalization problem is useful in the context of converting existing C programs to C++.