Bibliography of Reverse Engineering Techniques
Department of Computer Science and Information
Systems
Available at: <URL: http://www.cs.jyu.fi/~koskinen/bibre.htm>
since 14th June 2000.
Email: koskinen@cs.jyu.fi
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.
·
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.
·
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.
·
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.
·
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.
·
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).
·
Mason,
T. & Brown, D. 1990. Lex & Yacc.
·
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.
·
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.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.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.
·
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.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.
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)
·
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.