Bibliography of Reverse Engineering Techniques

Ó Jussi Koskinen

Department of Computer Science and Information Systems

University of Jyväskylä

P.O. Box 35, 40351-Jyväskylä, Finland

Available at: <URL: http://www.cs.jyu.fi/~koskinen/bibre.htm> since 14th June 2000.

Email: koskinen@cs.jyu.fi

 

Abstract

Reverse engineering means the process of identifying a software system’s components and their interrelations and of creating representations of the system in another form or at a higher level of abstraction. Reverse engineering techniques are typically applied in the so-called “lower-CASE” tools. This bibliography refers to the many aspects of applying reverse engineering techniques. The bibliography has been gathered related to a project in which a reverse engineering tool for C-language has been developed. Main categories are: 1) general reverse engineering and design recovery issues, 2) general program analysis, 3) analysis of programming language –spesific issues, 4) intermediate representations, 5) program visualization, and 6) related topics. Some of the focus areas are program slicing, C program analysis and dependency analysis. Major references are listed based on a wide survey. The surveyed sources are listed, and the journal acronyms used are given at the end of the document.

 

1. General reverse engineering and design recovery issues

·        Biggerstaff, T. 1989. Design recovery for maintenance and reuse. Computer 22 (7), 36-49.

·        CACM. 1994. CACM 37 (5). Theme issue on reverse engineering.

·        Cimitile, A., De Lucia, A., Di Lucca, G. & Fasolino, A.R. 1999. Identifying objects in legacy systems using design metrics. The J. Systems and Software 44 (3), 199-212.

·        Chikofsky, E. & Cross, J. H. II. 1990. Reverse engineering and design recovery: a taxonomy. IEEE Software 7 (1), 13-17.

·        Cross, J. H. II, Chikofsky, E., May, C.H. Jr. 1992. Reverse engineering. AIC 35, 199-254.

·        Desclaux, C. 1992. Capturing design and maintenance decisions with MACS. Journal of Software Maintenance: Research and Practice 4 (4), 215-231.

·        IJSEKE. 1994. Int. J. Software Engineering and Knowledge Engineering 4 (3). Special issue on reverse engineering.

·        Kontogiannis. K., Galler, M., Demori, R., Bernstein, M. & Merlo, E. 1995. Pattern matching for design concept localization. In Proc. 2nd Working Conf. Reverse Engineering (WCRE'95). IEEE Computer Soc., 96-103.

·        Rich, C. & Wills, L. 1990. Recognizing a program's design: a graph-parsing approach. IEEE Software 7 (1), 82-89.

·        Rock-Evans, R. & Hales, K. 1992. Reverse Engineering: Markets, Methods and Tools. London: Ovum.

·        Rugaber, S., Ornburn, S. & LeBlanc, R. Jr. 1990. Recognizing design decisions in programs. IEEE Software 7 (1), 46-54.

·        Wills, L. 1990. Automated program recognition: a feasibility demonstration. Artificial Intelligence 45 (1/2), 113-171.

 

2. General program analysis

·        Aho, A.V. & Johnson, S. 1974. LR parsing. ACM Computing Surveys 6 (2), 99-124.

·        Aho, A.V., Sethi, R., & Ullman, J. 1986. Compilers - Principles, Techniques, and Tools. Reading, MA: Addison-Wesley.

·        Aho, A.V. & Ullman, J. 1972. The theory of parsing, translation, and compiling. Prentice-Hall.

·        Atkinson, D. & Griswold, W. 1996. The design of whole-program analysis tools. In M. Kavanaugh (Ed. production) Proc. 18th Int. Conf.  Software Engineering (ICSE'96). IEEE Computer Soc., 16-27.

·        Donnelly, C. & Stallman, R. 1991. BISON - The YACC-compatible Parser Generator. User Manual, Bison Version 1.16.

·        Favre, J.-M. 1996. Preprocessors from an abstract point of view. In: Proc. Int. Conf. Software Maintenance (ICSM'96), 329-338.

·        Gray, R., Heuring, V., Levi, S., Sloane, A. & Waite, W. 1992. Eli: a complete, flexible compiler construction system. CACM 35 (2), 121-131.

·        Holub, A. 1990. Compiler Design in C. Prentice-Hall.

·        IJMMS 1992. Int. J. Man-Machine Studies 37 (4). Theme issue on structure-based editors and environments.

·        Johnson, S. 1978. Yacc: Yet Another Compiler-Compiler. Murray Hill, NJ: Bell Labs.

·        Knapen, G., Lague, B., Dagenais, M. & Merlo, E. 1999. Parsing C++ despite missing declarations. In B. Werner (Ed. production) Proc. 7th Int. Workshop on Program Comprehension (IWPC'99). IEEE Computer Soc., 114-125.

·        Koskimies, K., Nurmi, O., Paakki, J. & Sippu, S. 1988. The design of a language processor generator. Software - Practice and Experience 18 (2), 107-135.

·        Lesk & Schmidt 1986. Lex - A Lexical Analyzer Generator (Unix Programmer's Manual: Supplementary Documents 1). Berkeley, CA: Univ. of California.

·        Mason, T. & Brown, D. 1990. Lex & Yacc. Sebastopol, CA: O'Reilly & Associates.

·        Parr, T. & Quong, R. 1995. ANTLR: a predicated-LL(k) parser generator. Software - Practice and Experience 25 (7), 789-810.

·        Parr, T. & Quong, R. 1996. LL and LR translators need k>1 lookahead. ACM SIGPLAN Notices 31 (2), 27-34.

·        Parsifal. 1993. AnaGramÔ - User's Guide. Wayland, MA: Parsifal Software.

·        von Mayrhauser, A. & Lang, S. 1999. On the role of static analysis during software maintenance. In B. Werner (Ed. production) Proc. 7th Int. Workshop on Program Comprehension (IWPC'99). IEEE Computer Soc., 170-177.

·        Welsh, J. & McKeag, M. 1980. Structured System Programming. N.J.: Prentice Hall.

·        Wichman, B., Canning, A., Clutterbuck, D., Winsborrow, L., Ward, N. & Marsh, D. 1995. Industrial perspective on static analysis. Software Engineering J. 10 (2), 69-75.

 

2.1. Metrics (complexity, cohesion, coupling)

·        Bieman, J. & Ott, L. 1994. Measuring functional cohesion. IEEE TOSE 20 (8), 644-657.

·        Briand, L., Devanbu, P. & Melo, W. 1997. An investigation into coupling measures for C++. In Proc. 19th Int. Conf. Software Engineering (ICSE'97). New York: ACM Press, 412-421.

·        Halstead, M. 1977. Elements of Software Science. New York: Elsevier.

·        IS 1990. IEEE Software 7 (2). Theme issue on metrics.

·        Kafura, D. & Reddy, G. 1987. The use of software complexity metrics in software maintenance. IEEE TOSE 13 (3), 335-343.

·        Khoshgoftaar, T., Szabo, R. & Voas, J. 1995. Detecting program modules with low testability. In Proc. Int. Conf. Software Maintenance (ICSM'95), 242-250.

·        McCabe, T. 1976. A complexity measure. IEEE TOSE 2 (4), 308-320.

·        Offutt, A., Harrold, M. & Kolte, P. 1993. A software metric system for module coupling. The J. Systems and Software 20 (3), 295-308.

·        Ott, L. & Bieman, J. 1998. Program slices as an abstraction for cohesion measurement. Information and Software Technology 40 (11/12), 691-700.

·        Ott, L. & Thuss, J. 1989. The relationship between slices and module cohesion. In Proc. 11th Int. Conf. Software Engineering (ICSE'89). IEEE Computer Soc./ACM Press, 198-204.

·        Yau, S. & Chang, P. 1988. A metric of modifiability for software maintenance. In Proc. Int. Conf. Software Maintenance (ICSM'88). IEEE Computer Soc., 374-381.

 

2.2. Component extraction (parts, chunks, cliches, fragments, objects)

·        Burnstein, I & Roberson, K. 1997. Automated chunking to support program comprehension. In P. Storms (Ed. production) Proc. 5th Int. Workshop on Program Comprehension (IWPC'97). Los Alamitos, CA: IEEE Computer Soc., 40-49.

·        Canfora, G., Cimitile, A. & Munro, M. 1996. An improved algorithm for identifying objects in code. Software - Practice and Experience 26 (1), 25-48.

·        Canfora, G., Cimitile, A., Munro, M. & Taylor, C. 1996. Extracting abstract data types from C programs: a case study. In Proc. Int. Conf. Software Maintenance (ICSM'96), 200-209.

·        Computer. 1999. Computer 32 (8). Theme issue on data mining.

·        Cutillo, F., Fiore, R. & Visaggio, G. 1993. Identification and extraction of domain independent components in large programs. In Proc. 1st Working Conf. Reverse Engineering (WCRE'93), 83-92.

·        Dekker, R. & Vervens, F. 1994. Abstract data structure recognition. In: Proc. 9th Knowledge-Based Software Engineering Conf., 133-140.

·        Henninger, S. 1991. Retrieving software objects in example-based programming environment. In: Proc. 14th Int. ACM SIGIR Conf. (SIGIR'91), 251-260.

·        JASIS. 1998. JASIS 49 (5). Special issue on knowledge discovery and data mining.

·        Kozaczynski, W., Ning, J. & Engberts, A. 1992. Program concept recognition and transformation. IEEE TOSE 18 (12), 1065-1075.

·        Livadas, P. & Johnson, T. 1994. A new approach to finding objects in programs. J. Software Maintenance: Research and Practice 6 (5), 249-260.

·        Ning, J., Engberts, A. & Kozaczynski, W. 1994. Automated support for legacy code understanding. CACM 37 (5), 50-57.

·        Palthepu, S., Greer, J. & McCalla, G. 1997. Cliche recognition in legacy software: a scalable, knowledge-based approach. In P. Storms (Ed. production) Proc. 4th Working Conf. Reverse Engineering (WCRE'97). Los Alamitos, CA: IEEE Computer Soc., 94-103.

·        Suetens, P., Fua, P. & Hanson, A. 1992. Computational strategies for object recognition. ACM Computing Surveys 24 (1), 5-61.

·        Waters, R. 1994. Cliche-based program editors. ACM TOPLAS 16 (1), 102-150.

 

2.3. Pattern matching

·        Baker, B. 1993. A theory of parameterized pattern matching: algorithms and applications. Proc. 25th ACM Symp. Theory of Computing, 71-80. ACM Press.

·        Griswold, W., Atkinson, D. & McCurdy, C. 1996. Fast, flexible syntactic pattern matching and processing. In A. Cimitile & H. Muller (Ed.) Proc. 4th Int. Workshop on Program Comprehension (IWPC'96). IEEE Computer Soc., 144-153.

·        Paul, S. & Prakash, A. 1993. Generating programming language-based pattern matchers. In: Gawman, A. et al. (Ed.) Proc. CASCON'93, 227-243.

·        Pirklbauer, K. 1992. A study of pattern-matching algorithms. Structured Programming 13 (2), 89-98.

 

2.4. Dependency analysis (data flow, control flow, def-use etc.)

·        Baratta-Perez, G., Conn, R., Finnell, C. & Walsh, T. 1994. Ada system dependency analyzer tool. Computer 27 (1), 49-55.

·        Ferrante, J., Ottenstein, K. & Warren, J. 1987. The program dependence graph and its use in optimization. ACM TOPLAS 9 (3), 319-349.

·        Fiutem, R., Tonella, P., Antoniol, G. & Merlo, E. 1999. Points-to analysis for program understanding. The J. Systems and Software 44 (3), 213-228.

·        Harrold, M., Rothermel, G. & Sinha, S. 1998. Computation of interprocedural control dependencies. In M. Young (Ed.) Proc. ACM SIGSOFT Int. Symp. Software Testing and Analysis (ISSTA'98). ACM Press, 11-20.

·        Harrold, M., Soffa, M. 1990. Computation of interprocedural definition and use dependencies. In Proc. IEEE Comput. Soc. 1990 Int. Conf. Comput. Languages. IEEE Computer Soc., 297-306.

·        Hutchens, D. & Basili, V. 1985. System structure analysis: clustering with data bindings. IEEE TOSE 11 (8), 749-757.

·        Jackson, D. & Rollins, E. 1994. A new model of program dependences for reverse engineering. ACM SIGSOFT Software Engineering Notes 19 (5), 2-10. SIGSOFT'94, Proc. 2nd ACM SIGSOFT Symp. Foundations of Software Engineering (FSE'2). ACM Press.

·        Liang, D. & Harrold, M. 1999. Efficient points-to-analysis for whole program analysis. ACM SIGSOFT Software Engineering Notes 24 (6), 199-215. Proc. 7th European Software Engineering Conf./7th ACM SIGSOFT Symp. Foundations of Software Engineering (ESEC/FSE'99).

·        Livadas, P. & Roy, P. 1992. Program dependency analysis. In Proc. Int. Conf. Software Maintenance (ICSM'92). IEEE Computer Soc., 356-365.

·        Marlowe, T. & Ryder, B. 1991. Hybrid incremental alias algorithms. In Proc. 24th Hawaii Int. Conf. System Sciences (HICSS'91) (Vol. II), 428-437.

·        Muller, H., Tilley, S., Orgun, M., Corrie, B. & Madhavji, N. 1992. A reverse engineering environment based on spatial and visual software interconnection models. In Proc. Fifth ACM SIGSOFT Symp. Software Development Environments. ACM Press, 88-98.

·        Murphy, G., Notkin, D., Griswold, W. & Lan, E. 1998. An empirical study of static call graph extractors. ACM TOSEM 7 (2), 158-191.

·        Paakki, J., Koskinen, J. & Salminen, A. 1997. From relational program dependencies to hypertextual access structures. Nordic Journal of Computing 4 (1), 3-36.

·        Pande, H., Landi, W. & Ryder, B. 1994. Interprocedural def-use associations for C systems with single level pointers. IEEE TOSE 20 (5), 385-403.

·        Perry, D. 1987. Software interconnection models. In Proc. 9th Int. Conf. Software Engineering (ICSE'87). ACM Press, 61-69.

·        Podgurski, A. & Clarke, L. 1990. A formal model of program dependences and its implications for software testing, debugging and maintenance. IEEE TOSE 16 (9), 965-979.

·        Pollock, L & Soffa, M. 1989. An incremental version of iterative data flow analysis. IEEE TOSE 11 (12), 1537-1549.

·        Pugh, W. 1992. A practical algorithm for exact array dependence analysis. CACM 35 (8), 102-114.

·        Wilde, N. & Huitt, R. 1991. A reusable toolset for software dependency analysis. The J. Systems and Software 14 (2), 97-102.

 

2.5. Flow analysis

·        Ashley, M. & Bybvig, R. 1998. A practical and flexible flow analysis for higher-order languages. ACM TOPLAS 20 (4), 845-868.

·        Bergeretti, J.-F. & Carre, B. 1985. Information-flow and data-flow analysis of while-programs. ACM TOPLAS 7 (1), 37-61.

·        Burke, M. 1990. An interval-based approach to exhaustive and incremental interprocedural data flow analysis. ACM TOPLAS 12 (3), 341-395.

·        Burke, M. & Ryder, B. 1990. A critical analysis of incremental iterative data flow analysis algorithms. IEEE TOSE 16 (7), 723-728.

·        Canfora, G. & Cimitile, A. 1992. Reverse-engineering and intermodular data flow: a theoretical approach. J. Software Maintenance: Research and Practice 4 (1), 37-59.

·        Chen, T. & Low, C. 1997. Error detection in C++ through dynamic data flow analysis. Software - Concepts and Tools 18 (1), 1-13.

·        Choi, J.-D., Miller, B. & Netzer, R. 1991. Techniques for debugging parallel programs with flowback analysis. ACM TOPLAS 13 (4), 491-530.

·        Foreman, L. & Zweben, S. 1993. A study of the effectiveness of control and data flow testing strategies. The J. Systems and Software 21, 215-228.

·        Johmann, K., Liu, S.-S. & Yau, S. 1995. Context-dependent flow-sensitive interprocedural dataflow analysis. J. Software Maintenance: Research  and Practice 7 (3), 177-202.

·        Lee, B. & Hurson, A. 1993. Issues in dataflow computing. AIC 37, 285-333.

·        Ryder, B. & Paul, M. 1988. Incremental data flow analysis algorithms. ACM TOPLAS 10 (1), 1-50.

 

2.6. Pointer analysis

·        Atkinson, D. & Griswold, W. 1998. Effective whole-program analysis in the presence of pointers. ACM SIGSOFT Software Engineering Notes 23 (6), 46-55. ACM SIGSOFT 6th Int. Symp. Foundations of Software Engineering (FSE'6).

·        Hasti, R. & Horwitz, S. 1998. Using static single assignment form to improve flow-sensitive pointer analysis. ACM SIGPLAN Notices 33 (5), 97-105. Proc. ACM SIGPLAN'98 Conf. Programming Language Design and Implementation (PLDI'98).

·        Wilson, R. & Lam, M. 1995. Efficient context-sensitive pointer analysis for C programs. In Proc. ACM SIGPLAN'95 Conf. Programming Language Design and Implementation (PLDI'95), 1-12.

 

2.7. Impact analysis (modification-, side-effect analysis, program integration)

·        Ajila, S. 1995. Software maintenance: an approach to impact analysis of objects change. Software - Practice and Experience 25 (10), 1155-1181.

·        Arnold, R. & Bohner, S. 1993. Impact analysis - towards a framework for comparison. In: Proc. Int. Conf. Software Maintenance (ICSM'93), 292-301.

·        Barros, S., Bodhuin, T., Escudie, A., Queille, J. & Voidrot, J. 1995. Supporting impact analysis: a semi-automated technique and associated tool. Proc. Int. Conf. Software Maintenance (ICSM'95), 42-51. IEEE Computer Soc.

·        Berzins, V. 1991. Software merge: models and methods for combining changes to programs. Int. J. on Systems Integration 1, 121-141.

·        Binkley, D., Horwitz, S. & Reps, T. 1995. Program integration for languages with procedure calls. ACM TOSEM 4 (1), 3-35.

·        Bohner, S. & Arnold, R. 1996. Software Change Impact Analysis. IEEE Computer Soc.

·        Fyson, M. & Boldyreff, C. 1998. Using application understanding to support impact analysis. J. Software Maintenance: Research and Practice 10 (2), 93-110.

·        Gallagher, K.B. 1997. Visual impact analysis. In Proc. Int. Conf. Software Maintenance (ICSM'96). IEEE Computer Soc., 52-58.

·        Jackson, D. & Ladd, D. 1994. Semantic diff: a tool for summarizing the effects of modifications. In Proc. Int. Conf. Software Maintenance (ICSM'94), 243-252.

·        Landi, W., Ryder, B. & Zhang, S. 1993. Interprocedural modification side effect analysis with pointer aliasing. ACM SIGPLAN Notices 28 (6), 56-67. Proc. SIGPLAN'93 Conf. Programming Language Design and Implementation (PLDI'93).

·        Moriconi, M. & Winkler, T. 1990. Approximate reasoning about the semantic effects of program changes. IEEE TOSE 16 (9), 980-992.

·        Queille, J.-P., Voidrot, J.-F., Wilde, N. & Munro, M. 1994. The impact analysis task in software maintenance: a model and a case study. In Proc. Int. Conf. Software Maintenance (ICSM'94).

·        Rayside, D., Kerr, S. & Kontogiannis, K. 1998. Change and adaptive maintenance detection in Java software systems. In Proc. 5th Working Conf. Reverse Engineering (WCRE'98). IEEE Computer Soc., 10-19.

·        Turver, R. & Munro, M. 1994. An early impact analysis technique for software maintenance. J. Software Maintenance: Research and Practice 6 (1), 35-52.

·        Yau, S. & Tsai, J. 1987. Knowledge representation of software component interconnection information for large-scale software modifications. IEEE TOSE 13 (3), 355-361.

·        Yur, J.-S., Ryder, B., Landi, W. & Stocks, P. 1997. Incremental analysis of side effects for C software system. In Proc. 19th Int. Conf. Software Engineering (ICSE'97). New York: ACM Press, 422-432.

 

2.8. Program slicing

·        Agrawal, H. 1991. Towards Automatic Debugging of Computer Programs. West Lafayette, Indiana: Purdue Univ (Diss.).

·        Agrawal, H. 1994. On slicing program with jump statements. ACM SIGPLAN Notices 29 (6), 302-312. Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI'94).

·        Agrawal, H., DeMillo, R. & Spafford, E. 1993. Debugging with dynamic slicing and backtracking. Software - Practice and Experience 23 (6), 589-616.

·        Ball, T. & Horwitz, S. 1992. Slicing programs with arbitrary control-flow. In P. Fritzson (Ed.) LNCS 749. Springer-Verlag, 206-222. First Int. Workshop on Automated and Algorithmic Debugging (AADEBUG'92).

·        Beck, J. & Eichmann, D. 1993. Program and interface slicing for reverse engineering. In E. Straub (Ed. production) Proc. 15th Int. Conf. Software Engineering (ICSE'93). Los Alamitos, CA: IEEE Computer Soc., 509-518.

·        Binkley, D. 1998. The application of program slicing to regression testing. Information and Software Technology 40 (11/12), 583-594.

·        Binkley, D. & Gallagher, K. 1996. Program slicing. AIC 43, 1-50.

·        Bodik, R. & Gupta, R. 1997. Partial dead code elimination using slicing transformations. ACM SIGPLAN Notices 32 (5), 159-170. Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI'97).

·        Chen, T. & Cheung, Y. 1993. Dynamic program dicing. In Proc. Int. Conf. Software Maintenance - 1993 (ICSM'93), 378-385.

·        Choi, J.-D. & Ferrante, J. 1994. Static slicing in the presence of goto statements. ACM TOPLAS 16 (4), 1097-1113.

·        Field, J., Ramalingam, G. & Tip, F. 1995. Parametric program slicing. In Proc. 22nd ACM SIGPLAN/SIGACT Symp. Principles of Programming Languages (POPL'95). ACM Press, 379-392.

·        Gallagher, K.B. 1992. Evaluating the Surgeon's Assistant: results of a pilot study. In Proc. Int. Conf. Software Maintenance - 1992 (ICSM'92), 236-244.

·        Gallagher, K.B. & Lyle, J.R. 1991. Using program slicing in software maintenance. IEEE TOSE 17 (8), 751-761.

·        Gopal, R. 1991. Dynamic program slicing based on dependence relations. In Proc. IEEE Int. Conf. Software Maintenance (ICSM'91), 191-200.

·        Gupta, A. 1997. Program understanding using program slivers: an experience report. In Proc. Int. Conf. Software Maintenance (ICSM'97). IEEE Computer Soc., 66-71.

·        Gupta, R., Harrold, M. & Soffa, M. 1996. Program slicing-based regression testing techniques. Software Testing, Verification and Reliability 6 (2), 83-111.

·        Gupta, R., Soffa, M. & Howard, J. 1998. Hybrid slicing: integrating dynamic information with static analysis. ACM TOSEM 6 (4), 370-397.

·        Harman, M. & Danicic, S. 1995. Using program slicing to simplify testing. Software Testing, Verification and Reliability 5, 143-162.

·        Harman, M. & Danicic, S. 1998. A new algorithm for slicing unstructured programs. J. Software Maintenance: Research and Practice 10 (6), 415-442.

·        Harman, M. & Gallagher, K.B. 1998. Program slicing. Information and Software Technology 40 (11/12), 577-582.

·        Hausler, P. 1989. Denotational program slicing. In: Proc. 22nd Hawaii Int. Conf. System Sciences (HICSS'89), 486-494.

·        Hoffner, T., Kamkar, M. & Fritzson, P. 1995. Evaluation of program slicing tools. In Proc. 2nd Workshop on Automated and Algorithmic Debugging (AADEBUG'95). IRISA-CNRS, 51-69.

·        Horwitz, S. & Reps, T. 1991. Efficient comparison of program slices. Acta Informatica 28 (8), 713-732.

·        Horwitz, S., Reps, T. & Binkley, D. 1990. Interprocedural slicing using dependence graphs. ACM TOPLAS 12 (1), 26-60.

·        Hwang, J., Du, M. & Chou, C. 1988. Finding program slices for recursive procedures. In: Proc. IEEE Compsac 88. IEEE Computer Soc.

·        IST. 1998. Information and Software Technology 40 (11/12). Special issue on program slicing.

·        Jackson, D. & Rollins, E. 1996. Abstraction mechanisms for pictorial slicing. In Cimitile, A. & Muller, H. (Ed.) Proc. 4th Int. Workshop on Program Comprehension (IWPC'96). IEEE Computer Soc.

·        Jiang, J., Zhou, X. & Robson, D. 1991. Program slicing for C - the problems in implementation. In Proc. Int. Conf. Software Maintenance (ICSM'91). IEEE Computer Soc., 182-190.

·        Kamkar, M. 1993. Interprocedural Dynamic Slicing with Applications to Debugging and Testing. Dept. of Computer and Information Science, Linköping Univ., Sweden. Linköping Studies in Science and Technology Dissertations 297 (Diss.).

·        Kamkar, M. 1995. An overview and comparative classification of program slicing techniques. The J. Systems and Software 31 (3), 197-214.

·        Kamkar, M. 1998. Application of program slicing in algorithmic debugging. Information and Software Technology 40 (11/12), 637-646.

·        Korel, B. & Laski, J. 1990. Dynamic slicing of computer programs. The J. Systems and Software 13, 187-195.

·        Korel, B. & Rilling, J. 1998. Dynamic program slicing methods. Information and Software Technology 40 (11/12), 647-660.

·        Reps, T., Horwitz, S., Sagiv, M. & Rosay, G. 1994. Speeding up slicing. ACM SIGSOFT Software Engineering Notes 19 (5), 11-20. ACM SIGSOFT'94, Proc. 2nd ACM SIGSOFT Symp. Foundations of Software Engineering (FSE'2). ACM Press.

·        Reps, T. & Rosay, G. 1995. Precise interprocedural chopping. ACM SIGSOFT Software Engineering Notes 20 (4), 41-52. G. Kaiser (Ed.) SIGSOFT'95: Proc. 3rd ACM SIGSOFT Symp. Foundations of Software Engineering (FSE'3).

·        Sloane, A. & Holdsworth, J. 1996. Beyond traditional program slicing. ACM SIGSOFT Software Engineering Notes 21 (3), 180-186. S. Zeil (Ed.) Proc. 1996 Int. Symp. Software Testing and Analysis (ISSTA'96).

·        Tip, F. 1995. A survey of programming slicing techniques. J. Programming Languages 13 (3), 121-189.

·        Tonella, G., Fiutem, R. & Merlo, E. 1997. Flow insensitive C++ pointers and polymorphism analysis and its application to slicing. In Proc. 19th Int. Conf. Software Engineering (ICSE'97). New York: ACM Press, 433-443.

·        Venkatesh, G. 1991. "The semantic approach to program slicing. ACM SIGPLAN Notices 26 (6), 107-119. Proc. ACM SIGPLAN'91, Conf. Programming Language Design and Implementation (PLDI'91).

·        Wang, Y., Tsai, W.-T. et al. 1996. The role of program slicing in ripple effect analysis. In Proc. 8th Int. Conf. Software Engineering and Knowledge Engineering (SEKE'96), 369-376.

·        Weiser, M. 1982. Programmers use slices when debugging. CACM 25 (7), 446-452.

·        Weiser, M. 1984. Program slicing. IEEE TOSE 10 (4), 352-357.

·        Weiser, M. & Lyle, J. 1986. Experiments on slicing-based debugging aids. In E. Soloway & S. Iyengar (Ed.) Empirical Studies of Programmers: Papers presented at the First Workshop (ESP'86). Norwood, NJ: Ablex, 187-197.

 

2.9. Architectural analysis

·        Fiutem, R., Tonella, P., Antoniol, G. & Merlo, E. 1996. A cliche-based environment to support architectural reverse engineering. In Proc. Int. Conf. Software Maintenance (ICSM'96), 319-328.

·        Harris, D., Reubenstein, H. & Yeh, A. 1995. Recognizers for extracting architectural features from source code. In Proc. 2nd Working Conf. Reverse Engineering (WCRE'95). IEEE Computer Soc., 252-261.

·        Muller, H., Orgun, M., Tilley, S., & Uhl, J. 1993. A reverse engineering approach to subsystem structure identification. J. Software Maintenance: Research and Practice 5 (4), 181-204.

·        Murphy, G. & Notkin, D. 1996. Lightweight lexical source model extraction. ACM TOSEM 5 (3), 262-292.

 

2.10. Year 2000 (Y2K) -analysis

·        Bohner, S. 1996. Impact analysis in the software change process: a year 2000 perspective. Proc. Int. Conf. Software Maintenance (ICSM'96).

·        van Deursen, A., Woods, S. & Quilici, A. 1997. Program plan recognition for Year 2000 tools. In P. Storms (Ed. production) Proc. 4th Working Conf. Reverse Engineering (WCRE'97). Los Alamitos, CA: IEEE Computer Soc., 124-135.

·        Hart, J. & Pizzarello, A. 1996. A scalable, automated process for Year 2000 system correction. In M. Kavanaugh (Ed. production) Proc. 18th Int. Conf. Software Engineering (ICSE'96). Los Alamitos, CA: IEEE Computer Soc., 475-484.

·        Jones, C. 1997. Slow response to Year 2000 problem. IEEE Software 14 (3), 114-115 (an interview).

·        Marcoccia, L. 1998. Building infrastructure for fixing the year 2000 bug: a case study. J. Software Maintenance: Research and Practice 10 (5), 333-352.

·        Martin, R. 1997. Dealing with dates: solutions for the Year 2000. Computer 30 (3), 44-51.

·        Newcomb, P. & Scott, M. 1997. Requirements for advanced Year 2000 maintenance tools. Computer 30 (3), 52-57.

·        Ragland, B. 1997. The Year 2000 Problem Solver: A Five Step Disaster Prevention Plan. McGraw-Hill.

·        Sharon, D. 1997. Year 2000 tool classification scheme. IEEE Software 14 (4), 107-111.

·        Wilde, N., Blackwell, K. & Justice, R. 1998. Understanding data-sensitive code: one piece of the Year 2000 puzzle. ACM SIGSOFT Software Engineering Notes 23 (5), 75-80.

·        Zvegintzov, N. 1997. A resource guide to Year 2000 tools. Computer 30 (3), 58-63.

 

2.11. Analysis of documentation and related information

·        Aho, A.V. 1990. Algorithms for finding patterns in strings. In J. van Leeuwen (Ed.) Handbook of Theoretical Computer Science (Vol. A). Elsevier & MIT Press, 255-300.

·        Cavazza, M. & Zweigenbaum, P. 1992. Extracting implicit information from free text technical reports. Information Processing & Management 28 (5), 609-618.

·        Horowitz, E. & Williamson, R. 1986. SODOS: a software documentation support environment -  its definition. IEEE TOSE 12 (8), 849-859.

·        Matwin, S. & Ahmad, A. 1994. Reuse of modular software with automated comment analysis. In Proc. Int. Conf. Software Maintenance (ICSM'94), 222-233.

·        Moulin, B. & Rousseau, D. 1992. Automated knowledge acquisition from regulatory texts. IEEE Expert 7 (5), 27-35.

 

3. Analysis of programming language –specific issues

 

3.1. C analysis

·        Chen, Y.-F., Nishimoto, M. & Ramamoorthy, C. 1990. The C information abstraction system. IEEE TOSE 16 (3), 325-334.

·        Darnell, P. & Margolis, P. 1991. C: A Software Engineering Approach. New York: Springer.

·        Gannod, G. & Cheng, B. 1996. Using informal and formal techniques for the reverse engineering of C programs. In Proc. Int. Conf. Software Maintenance (ICSM'96), 265-274.

·        Heisler, K., Kasho, Y. & Tsai, W. 1993. A reverse engineering model for C programs. Information Sciences 68, 155-189.

·        Imagix. 2000. Imagix 4D. Product information available (10-Mar-00) in www-form at <URL: http://www.imagix.com>. Company: Imagix. Description: a reverse engineering tool (for C, C++).

·        IntegriSoft. 2000. HindSight. Product information available (10-Mar-00) in www-form at <URL: http://www.integrisoft.com/hindsight.htm>. Company: IntegriSoft. Description: a reverse engineering tool (for C, C++, Fortran).

·        Kernighan, B. & Ritchie, D. 1988. The C Programming Language (2nd ed.). Englewood-Cliffs: Prentice Hall.

·        Linos, P., Aubet, P., Dumas, L., Helleboid, Y., Lejeune, P., & Tulula, P. 1993. Facilitating the comprehension of C programs: an experimental study. In Proc. 2nd  Int. Workshop on Program Comprehension (IWPC'93). IEEE Computer Soc., 55-63.

·        Linos, P., Aubet, P., Dumas, L., Helleboid, Y., Lejeune, P., & Tulula, P. 1993. CARE: an environment for understanding and re-engineering C programs. In Proc. Int. Conf. Software Maintenance (ICSM'93). IEEE Computer Soc., 130-139.

·        Muller, H. & Klashinsky, K. 1988. Rigi: a system for programming-in-the-large. In Proc. 10th Int. Conf. Software Engineering (ICSE'88), 80-86.

·        Platoff, M. & Wagner, M. 1991. An integrated program representation and toolkit for the maintenance of C programs. In Proc. Int. Conf. Software Maintenance (ICSM'91).

·        Red Hat. 2000. Cygnus Source Navigator v. 4.5. Product information available (10-Mar-00) in www-form at <URL: http://www.redhat.com/products/cygnus.html>. Company: Red Hat. Description: a reverse engineering tool.

·        Reasoning Systems 1992. REFINE/C Programmer's Guide. Palo Alto, CA: Reasoning Systems.

·        Ritchie, D. 1993. The development of the C language. ACM SIGPLAN Notices 28 (3), 201-208. Proc. 2nd ACM SIGPLAN Conf. History of Programming Languages (HOPL-II).

·        Samadzadeh, M. & Wichaipanitch, W. 1993. An interactive debugging tool for C based on dynamic slicing and dicing. In Proc. 21st Annual Computer Science Conf. ACM Press, 30-37.

·        SET. 2000. Discover. Product information available (10-Mar-00) in www-form at <URL: http://www.setech.com/products>. Company: SET Inc. Description: a reverse engineering tool (for ANSI C/C++ and other languages).

·        Storey, M.-A. & Muller, H. 1995. Manipulating and documenting software structures using SHriMP views. In Proc. Int. Conf. Software Maintenance (ICSM'95). IEEE Computer Soc., 275-284.

·        TakeFive. 2000. Sniff+. Product information available (10-Mar-00) in www-form at <URL: http://www.takefive.com/products/sniff+.html>. Company: TakeFive software. Description: a reverse engineering tool (C, C++ et al.).

·        Venkatesh, G. 1995. Experimental results from dynamic slicing of C programs. ACM TOPLAS 17 (2), 197-216.

·        Verilog. 2000. Logiscope. Product information available (10-Mar-00) in www-form at <URL: http://www.csverilog.com/products/logiscop.htm>. Company: Verilog. Description: a reverse engineering tool (for 80+ languages).

·        Wilde, N., Chapman, A. & Richardson, R. 1994. The extensible dependency analysis tool set: a knowledge base for understanding industrial software. Int. J. Software Engineering and Knowledge Engineering 4 (4), 521-534.

·        Wong, K. 1996. Rigi User's Manual Version 5.4.1. Product information available (10-Mar-00) in www-form at <URL: http://www.rigi.csc.uvic.ca/rigi/ manual/user.html>. Description: a reverse engineering tool (for C).

 

3.2. C++ analysis

·        Chen, X., Tsai, W.-T., Huang, H., Poonawala, M., Rayadurgam, S. & Wang, Y. 1996. Omega: an integrated environment for C++ program maintenance. In Proc. Int. Conf. Software Maintenance (ICSM'96), 114-123.

·        Chen, Y.-F., Gansner, E. & Koutsofios, E. 1998. A C++ data model supporting reachability analysis and dead code detection. IEEE TOSE 24 (9), 682-694.

·        Eyre-Todd, R. 1993. The detection of dangling references in C++ programs. ACM LOPLAS 2, 127-134.

·        Grass, J. 1992. Object-oriented design archaeology with CIA++. Computing Systems 5 (1), 5-67.

·        Linos, P. & Courtois, V. 1996. A toolset for maintaining hybrid C++ programs. J. Software Maintenance: Research and Practice 8 (6), 389-420.

·        Stroustrup, B. 1986. The C++ Programming Language. Reading, MA: Addison-Wesley.

·        Stroustrup, B. 1993. A history of C++: 1979-1991. In HOPL-II, The Second ACM SIGPLAN History of Programming Languages Conference. New York: ACM, 271-297.

·        Yueh, T. & Low, C. 1997. Error detection in C++ through dynamic data flow analysis. Software - Concepts and Tools 18 (1), 1-13.

 

3.3. Assembler analysis

·        Chen, S., Heisler, K., Tsai, W., Chen, X. & Leung, E. 1990. A model for assembly program maintenance. Software Maintenance 2, 3-32.

 

4. Intermediate representations

 

4.1. Program information storage (encoding)

·        Cameron, R. 1988. Source encoding using syntactic information source models. IEEE Trans. Inform. Theory 34 (4), 843-850.

·        Contla, J. 1985. Compact coding of syntactically correct source programs. Software - Practice and Experience 15 (7), 625-636.

·        Gil, J. & Itai, A. 1999. How to pack trees. J. Algorithms 32 (2), 108-132.

·        Katajainen, J. & Mäkinen, E. 1990. Tree compression and optimization with applications. Int. J. Foundations of Computer Science 1 (4), 425-447.

·        Katajainen, J., Penttonen, M. & Teuhola, J. 1986. Syntax-directed compression of program files. Software Practice and Experience 16 (3), 269-276.

·        Lelewer, D. & Hirschberg, D. 1987. Data compression. ACM Computing Surveys 19 (3), 261-296.

·        Noonan, R. 1985. An algorithm for generating abstract syntax trees. Computer Languages 10 (3/4), 225-236.

·        Peltola, H. & Tarhio, J. 1991. On syntactical data compression. In K. Koskimies et al. (Ed.) Proc. 2nd Symp. Programming Languages and Software Tools. Report A-1991-5. Dept. of Computer Science, Univ. of Tampere, Finland, 205-214.

·        Waddle, V. 1990. Production trees: a compact representation of parsed programs. ACM TOPLAS 12 (1), 61-83.

 

4.2. Graph representations (dependency-, program-, system-, flow-, call graphs)

·        Al-Zoubi, R. & Prakash, A. 1995. Program view generation and change analysis using attributed dependency graphs. J. Software Maintenance: Research  and Practice 7 (4), 239-261.

·        Bates, S. & Horwitz, S. 1993. Incremental testing using program dependence graphs. In: Proc. 20th Ann. ACM Symp. Principles of Programming Languages (POPL'93), 384-396. ACM Press.

·        Benedusi, P., Cimitile, A. & DeCarlini, U. 1989. A reverse engineering methodology to reconstruct hierarchical data flow diagrams for software maintenance. In Proc. Int. Conf. Software Maintenance (ICSM'89). IEEE Computer Soc., 180-191.

·        Choi, J.-D., Cytron, R. & Ferrante, J. 1991. Automatic construction of sparse data flow evaluation graphs. In Conf. Record of the 18th ACM Symp. Principles of Programming Languages (POPL'91). ACM Press, 55-66.

·        Cimitile, A. & De Carlini, U. 1991. Reverse engineering: algorithms for program graph production. Software - Practice and Experience 21 (5), 519-537.

·        Cytron, R., Ferrante, J., Rosen, B., Wegman, M. & Zadeck, F. 1991. Efficiently computing static single assignment form and the control dependence graph. ACM TOPLAS 13 (4), 451-490.

·        Grove, D., DeFouw, G., Dean, J. & Chambers, C. 1997. Call graph construction in object-oriented languages. ACM SIGPLAN Notices 32 (10), 108-124. Proc. OOPSLA'97.

·        Hall, M. & Kennedy, K. 1992. Efficient call graph analysis. ACM LOPLAS 1 (3), 227-242.

·        Harrold, M. & Malloy, B. 1993. A unified interprocedural program representation for a maintenance environment. IEEE TOSE 19 (6), 584-593.

·        Harrold, M., Malloy, B. & Rothermel, G. 1993. Efficient construction of program dependence graphs. In Proc. 1993 Int. Symp. Software Testing and Analysis (ISSTA'93), 160-170.

·        Horwitz, S., Prins, J. & Reps, T. 1988. On the adequacy of program dependence graphs for representing programs. In Proc. 15th ACM Symp. Principles of Programming Languages (POPL'88). New York: ACM Press, 146-157.

·        Horwitz, S. & Reps, T. 1992. The use of program dependence graphs in software engineering. In Proc. 14th Int. Conf. Software Engineering (ICSE'92). New York: ACM Press, 392-411.

·        Kinloch, D. & Munro, M. 1993. A combined representation for the maintenance of C programs. In Proc. 2nd Int. Workshop on Program Comprehension (IWPC'93). IEEE Computer Soc., 119-127.

·        Kinloch, D. & Munro, M. 1994. Understanding C programs using the combined C graph representation. In Proc. Int. Conf. Software Maintenance (ICSM'94), 172-180.

·        Korel, B. 1987. The program dependence graph in static program testing. Information Proc. Letters 24 (2), 103-108.

·        Lakhotia, A. 1993. Constructing call multigraphs using dependence graphs. In Conf. Record of the 20th ACM Symp. Principles of Programming Languages (POPL'93). ACM Press, 273-284.

·        Moser, L. 1990. Data dependence graphs for Ada programs. IEEE TOSE 16 (5), 498-502.

·        Ottenstein, K. & Ottenstein, L. 1984. The program dependence graph in a software development environment. ACM SIGPLAN Notices 19 (5), 177-184. ACM SIGSOFT Software Engineering Notes 9 (3). Proc. ACM SIGPLAN/SIGSOFT Symp. Practical Programming Developm. Environments.

·        Pezze, M., Taylor, R. & Young, M. 1995. Graph models for reachability analysis of concurrent programs. ACM TOSEM 4 (2), 171-213.

·        Reps, T. 1998. Program analysis via graph reachability. Information and Software Technology 40 (11/12), 701- 726.

·        Robertson, S. & Yu, C.-C. 1990. Common cognitive representations of program code across tasks and languages. IJMMS 33 (3), 343-360.

·        Vilela, P., Maldonado, J. & Jino, M. 1997. Program graph visualization. Software - Practice and Experience 27 (11), 1245-1262.

·        Yau, S. & Grabow, P. 1981. A model for representing programs using hierarchical graphs. IEEE TOSE 7 (6), 556-574.

 

5. Program visualization

·        Ball, T. 1996. Software visualization in the large. Computer 29 (4), 33-43.

·        Ball, T. & Eick, S. 1994. Visualizing program slices. Proc. IEEE/CS 10th Int. Symp. Visual Languages, 288-295. IEEE Computer Soc.

·        Catalin-Roman, G. & Fox, K. 1993. A taxonomy of program visualization systems. Computer 26 (12), 11-24.

·        Consens, M. 1994. Creating and Filtering Structural Data Visualizations Using Hygraph Patterns. Computer Systems Research Inst., CSRI-302. Toronto: Univ. Toronto (Diss.).

·        Consens, M., Eigler, F., Hasan, M., Mendelzon, A., Noik, E., Ryman, A. & Vista, D. 1994. Architecture and applications of the Hy+ visualization system. IBM Systems J. 33 (3), 458-476.

·        Consens, M., Mendelzon, A. & Ryman, A. 1992. Visualizing and querying software structures. In Proc. 14th Int. Conf. Software Engineering (ICSE'92). New York: ACM Press, 138-156.

·        Cowan, D., German, D., Lucena, C. & von Staa, A. 1994. Enhancing code for readability and comprehension using SGML. In Proc. Int. Conf. Software Maintenance (ICSM'94), 181-190.

·        Jeffries, R., Miller, J., Wharton, C. & Uyeda, K. 1991. User interface evaluation in the real world: a comparison of four techniques. In Proc. Conf. Human Factors in Computing Systems. New York: ACM Press, 119-124.

·        Krasner, G. & Pope, S. 1988. A cookbook for using the model-view-controller interface paradigm in Smalltalk-80. JOOP 1 (3), 26-49.

·        Linos, P., Aubet, P., Dumas, L., Helleboid, Y., Lejeune, P., & Tulula, P. 1994. Visualizing program dependencies: an experimental study. Software - Practice and Experience 24 (4), 387-403.

·        Linos, P., Ososanya, E. & Karunakaran, V. 1999. Improving the visibility of graphical program displays: an experimental study. In B. Werner (Ed. production) Proc. 7th Int. Workshop on Program Comprehension (IWPC'99). IEEE Computer Soc., 12-19.

·        Linton, M. 1994. Implementing relational views for programs. In: Proc. ACM SIGSOFT/SIGPLAN Software Engineering Symp. Practical Software Development Environments, 132-140. ACM Press.

·        Mendelzon, A. & Sametinger, J. 1995. Reverse engineering by visualizing and querying. Software - Concepts and Tools 16 (4), 170-182.

·        Myers, B. 1990. Taxonomies of visual programming and program visualization. Journal of Visual Languages and Computing 1, 97-123.

·        Myers, B., Hollan, J., Cruz, I. et al. 1996. Strategic directions in human-computer interaction. ACM Computing Surveys 28 (4), 794-809.

·        Price, B., Baecker, R. & Small, I. 1993. A principled taxonomy of software visualization. J. Visual Languages and Computing 4, 211-266.

·        Roman, G.-C. & Cox, K. 1992. Program visualization: the art of mapping programs to pictures. In: Proc. 14th Int. Conf. Software Engineering (ICSE'92), 412-420. New York: ACM Press.

·        Storey, M.-A., Fracchia, F. & Muller, H. 1997. Cognitive design elements to support the construction of a mental model during software visualization. In: P. Storms (Ed. production) Proc. 5th Int. Workshop on Program Comprehension (IWPC'97). Los Alamitos, CA: IEEE Computer Soc., 17-28.

·        Storey, M.-A., Fracchia, F. & Muller, H. 1999. Cognitive design elements to support the construction of a mental model during software exploration. The J. Systems and Software 44 (3), 171-185.

·        Storey, M.-A., Muller, H. & Wong, K. 1996. Manipulating and documenting software structures. In: Eades, P. & Zhang, K. (Ed.) Software Visualization, 244-263. World Scientific.

 

5.1. Code layout

·        Blaschek, G. & Sametinger, J. 1989. User-adaptable pretty-printing. Software - Practice and Experience 19 (7), 687-702.

·        van den Brand, M. & Visser, E. 1996. Generators of formatters for context-free languages. ACM TOSEM 5 (1), 1-41.

·        Oman, P. & Cook, C. 1990. The book paradigm for improved software maintenance. IEEE Software 7 (1), 39-45.

·        Oman, P. & Cook, C. 1990. Typographic style is more than cosmetic. CACM 33 (5), 506-520.

·        Raymond, D. 1992. Flexible text display with Lector. Computer 25 (8), 49-60.

·        Raymond, D. 1993. Reading source code. In: Proc. CASCON'91, 3-16.

·        Shneiderman, B., Shafer, P., Roland, S. & Weldon, L. 1986. Display strategies for program browsing - concepts and experiment. IEEE Software 3 (3), 7-15.

 

5.2. Algorithm animation

·        Brown, M. 1988. Exploring algorithms using Balsa-II. Computer 21 (5), 14-36.

·        Brown, M. & Hershberger, J. 1992. Color and sound in algorithm animation. Computer 25 (12), 52-63.

 

5.3. Document visualization

·        Chalmers, M. & Chitson, P. 1992. Bead: explorations in information visualization. In: ACM SIGIR Forum (Spec. Issue). SIGIR'92, Proc. 15th Ann. Int. ACM SIGIR Conf. Research and Development in Information Retrieval, 112-125. ACM Press.

·        Olsen, K., Korfhage, R., Sochats, K., Spring, M. & Williams, J. 1993. Visualization of a document collection: the VIBE system. Information Processing & Management 29 (1), 69-81.

 

5.4. Graph visualization

·        Coleman, M. & Parker, D.S. 1993. Aesthetics-based graph layout for human consumption. Software - Practice and Experience 26 (12), 1415-1438.

·        DiBattista, G., Eades, P., Tamassia, R. & Tollis, I. 1994. Algorithms for drawing graphs: an annotated bibliography. Comput. Geom. Theory Appl. 4 (5), 235-282.

·        Koike, H. 1995. Fractal views: a fractal-based method for controlling information display. ACM TOIS 13 (3), 305-323.

·        Leung, Y. & Apperley, M. 1994. A review and taxonomy of distortion-oriented presentation techniques. ACM TOCHI 1 (2), 126-160.

·        Linos, P., Rajlich, V. & Korel, B. 1991. Layout heuristics for graphical representations of programs. In: IEEE Conf. Man, Machine and Cybernetics, 1127-1132. IEEE Computer Soc.

·        Messinger, E., Rowe, L. & Henry, R. 1991. A divide-and-conquer algorithm for the automatic layout of large directed graphs. IEEE Transactions on Systems, Man, and Cybernetics 21 (1), 1-12.

·        Noik, E. 1993. Exploring large hyperdocuments: fisheye views of nested networks. In: Stotts, P.D. & Furuta, R. (Ed.)  Proc. 5th ACM Conf. Hypertext, Hypertext'93, 192-205. ACM Press.

·        Sarkar, M. & Brown, M. 1992. Graphical fisheye views of graphs. In: Proc. CHI'92: ACM Conf. Human Factors in Computing Systems. Reading, MA: Addison-Wesley, 83-91.

 

6. Related topics

 

6.1. Restructuring and redocumentation

·        Griswold, W. & Notkin, D. 1993. Automated assistance for program restructuring. ACM TOPLAS 2 (3), 228-269.

·        Griswold, W. & Notkin, D. 1995. Architectural tradeoffs for a meaning-preserving program restructuring tool. IEEE TOSE 21 (4), 275-287.

·        Younger, E. & Bennett, K. 1993. Model-based tools to record program understanding. In Proc. 2nd Int. Workshop on Program Comprehension (IWPC'93). IEEE Computer Soc., 119-127.

 

6.2. Reuse

·        Caldiera, G. & Basili, V. 1991. Identifying and qualifying reusable software components. Computer 24 (2), 61-70.

·        Canfora, G., Cimitile, A. & Munro, M. 1993. A reverse engineering method for identifying reusable abstract data types. In Proc. 1st Working Conf. Reverse Engineering (WCRE'93), 73-82.

·        Canfora, G., De Lucia, A., Di Lucca, G. & Fasolino, A. 1994. Slicing large programs to isolate reusable functions. In: Proc. EUROMICRO Conf., 140-147.

·        Faustle, S., Fugini, M.G. & Damiani, E. 1996. Retrieval of reusable components using functional similarity. Software - Practice and Experience 26 (5), 491-530.

·        Fischer, G., Henninger, S. & Redmiles, D. 1991. Cognitive tools for locating and comprehending software objects for reuse. In: Proc. 13th Int. Conf. Software Engineering (ICSE'91), 318-328. IEEE Computer Soc./ACM Press.

·        Ning, J., Engberts, A. & Kozaczynski, W. 1993. Recovering reusable components from legacy systems by program segmentation. In Proc. 1st Working Conf. Reverse Engineering (WCRE'93), 64-72.

·        Weide, B., Ogden, W. & Zweben, S. 1991. Reusable software components. AIC 33, 1-65.

·        Yang, H., Luker, P. & Chu, W. 1997. Code understanding through program transformation for reusable component identification. In P. Storms (Ed. production) Proc. 5th Int. Workshop on Program Comprehension (IWPC'97). Los Alamitos, CA: IEEE Computer Soc., 148-159.

 

6.3. CASE (Computer Assisted/Aided Software Engineering)

·        Fuggetta, A. 1993. A classification of CASE technology. Computer 26 (12), 25-38.

·        IS 1990. IEEE Software 7 (5). Theme issue on case-tools.

·        IS 1992. IEEE Software 9 (2). Theme issue on integrated case.

·        Marttiin, P., Rossi, M., Tahvanainen, V.-P. & Lyytinen, K. 1993. A comparative review of CASE shells: a preliminary framework and research outcomes. Information and Management 25 (1), 11-31.

·        Misra, S. 1990. Evaluating CASE system characteristics: evaluative framework. Information and Software Technology 32 (6), 415-422.

 

6.4. Version control

·        Horwitz, S. 1990. Identifying the semantic and textual differences between two versions of a program. In Proc. SIGPLAN'90 Conf. Programming Language Design and Implementation (PLDI'90), 234-246.

·        Horwitz, S., Prins, J. & Reps, T. 1989. Integrating non-interfering versions of programs. ACM TOPLAS 11 (3), 345-387.

·        Magnusson, B., Asklund, U. & Minör, S. 1993. Fine-grained revision control for collaborative software development. ACM SIGSOFT Software Engineering Notes 18 (5), 33-41. Proc. 1st ACM SIGSOFT Symp. the Foundations of Software Engineering (FSE'1).

·        Tichy, W. 1985. RCS: A system for version control. Software - Practice and Experience 15 (7), 637-654.

·        Yang, W. 1991. Identifying syntactic differences between two programs. Software - Practice and Experience 21 (7), 739-755.

 

6.5. Miscellaneous approaches

·        Devanbu, P. 1999. GENOA: a customizable, front-end-retargetable source code analysis framework. ACM TOSEM 8 (2), 177-212.

·        Dietrich, S. & Calliss, F. 1992. A conceptual design for a code analysis knowledge base. J. Software Maintenance: Research and Practice 4 (1), 19-36.

·        Fritzson, P., Shahmehri, N., Kamkar, M. & Gyimothy, T. 1992. Generalized algorithmic debugging and testing. ACM LOPLAS 1 (4), 303-322.

·        Harandi, M. & Ning, J. 1990. Knowledge-based program analysis. IEEE Software 7 (1), 74-81.

·        Onama, A., Tsai, W.-T., Poonawala, M. & Suganuma, H. 1998. Regression testing in an industrial environment. CACM 41 (5), 81-86.

·        Wilde, N. & Huitt, R. 1992. Maintenance support for object-oriented programs. IEEE TOSE 18 (12), 1038-1044.

 

Surveyed sources

The literature survey is based on the following journals and conference proceedings. The name of the source is followed by the possibly used acronym (in parentheses), and the range of years covered by the survey.

 

A. Journals

·        Communications of the ACM (CACM), 1990-99

·        IEEE Transactions on Software Engineering (IEEE TOSE), 1990-99

·        International Journal of Human-Computer (Man-Machine) Studies (IJHCS/IJMMS), 1990-99

·        IEEE Software, 1990-99

·        Computer, 1990-99

·        Information Processing and Management, 1990-99

·        Journal of Software Maintenance (JSM), 1990-99

·        Information and Software Technology, 1990-99

·        Software - Practice & Experience, 1990-99

·        ACM Transactions on Programming Languages and Systems (ACM TOPLAS), 1990-99

·        The Journal of Systems and Software, 1997-99

·        ACM Transactions on (Office) Information Systems (TOIS/TOOIS), 1990-99

·        Journal of the American Society for Information Science (JASIS), 1990-99

·        Journal of Algorithms, 1990-99

·        Advances in Computers (AIC), 1990-99

·        The Computer Journal, 1997-99

·        ACM Transactions on Software Engineering and Methodology (TOSEM), 1990-99

·        ACM Computing Surveys, 1990-99

·        IBM Systems Journal, 1990-99

·        International Journal of Software and Knowledge Engineering, 1990-99

·        Journal of Object-Oriented Programming (JOOP), 1997-99

·        Journal of the ACM, 1997-99

·        ACM SIGSOFT Software Engineering Notes (bulletin/excluding conf. proc:s), 1997-99

·        Human-Computer Interaction, 1997-99

·        Intelligent Systems and their Application (IEEE Expert), 1997-99

·        ACM Letters on Programming Languages and Systems (LOPLAS), 1990-99

·        Software - Concepts and Tools, 1990-99

·        Software Engineering Journal, 1997-99

·        Structured Programming, 1990-99

·        ACM SIGPLAN Notices (bulletin/excluding conf. proc:s), 1997-99

·        ACM Transactions on Computer-Human Interaction (TOCHI), 1990-99

 

B. Proceedings

·        International Conference on Software Maintenance (ICSM), 1990-99

·        International Workshop on Program Comprehension (IWPC), 1990-99

·        International Conference on Software Engineering (ICSE), 1990-99

·        Workshop on Empirical Studies of Programmers (ESP), 1990-99

·        ACM Hypertext Conference, 1990-99

·        Working Conference on Reverse Engineering (WCRE), 1990-99

·        ACM SIGIR Annual International Conference on Research and Development on Information Retrieval (SIGIR), 1990-99

·        Conference on Human Factors in Computing Systems (CHI), 1997-99

·        ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 1997-99

·        ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), 1997-99

 

C. Other related conferences

·        ACM SIGPLAN Symposium on Principles of Programming Languages (POPL)

·        European Conference on Hypertext/Hypermedia Technologies (ECHT)

·        ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE)

·        IBM Centre for Advanced Studies Conference (CASCON)

·        Hawaii International Conference on System Sciences (HICSS)

·        ACM SIGSOFT/SIGPLAN Symposium on Practical Programming Environments

·        ACM Conference on Management of Data (SIGMOD)

·        Conference on Object-oriented Systems and Languages (OOPSLA)

·        Conference on Intelligent Text and Image Handling (RIAO)

·        International Conference on Software Engineering and Knowledge Engineering (SEKE)

 

D. Journal name acronyms used

·        AIC                             Advances in Computers

·        ACM LOPLAS           ACM Letters on Programming Languages and Systems

·        ACM TOCHI              ACM Transactions on Computer-Human Interaction

·        ACM TOIS                 ACM Transactions on Information Systems

·        ACM TOOIS              ACM Transactions on Office Information Systems

·        ACM TOPLAS           ACM Transactions on Programming Languages and Systems

·        ACM TOSEM             ACM Transactions on Software Engineering and Methodology

·        CACM                        Communications of the ACM

·        IEEE TOSE                 IEEE Transactions on Software Engineering

·        IJHCS                          International Journal of Human-Computer Studies

·        IJMMS                        International Journal of Man-Machine Studies

·        JASIS                          Journal of the American Society for Information Science

·        JOOP                          Journal of Object-Oriented Programming

·        LNCS                          Lecture Notes in Computer Science

 

Updated: 12-Sept.-2003 by Jussi Koskinen.