Reuse of algorithms: still a challenge to object-oriented programming

This paper is about reusable, efficient implementations of complex algorithms and their integration into software packages. It seems that this problem is not yetwell understood, and that it is not at all clear how object-oriented and other approaches may contribute to a solution. We analyze the problem and try to reduce it to a few key design goals. Moreover, we discuss various existing approaches in light of these goals, and we briefly report experiences with experimental case studies, in which these goals were rigorously addressed.

[1]  Maria Grazia Scutellà,et al.  Toward a Programming Environment for Combinatorial Optimization: A Case Study Oriented to Max-Flow Computations , 1993, INFORMS J. Comput..

[2]  Robert Sedgewick,et al.  Algorithms in C , 1990 .

[3]  Philip Gray,et al.  Assessing the impact of time on user interface design , 1996, SGCH.

[4]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[5]  Karsten Weihe,et al.  Using Design Patterns for Reusable, Efficient Implementations of Graph Algorithms , 1996 .

[6]  Mark R. Headington,et al.  Data Abstraction and Structures Using C , 1994 .

[7]  Timothy A. Budd,et al.  Classic data structures in C++ , 1994 .

[8]  David R. Musser,et al.  STL tutorial and reference guide - C++ programming with the standard template library , 1996, Addison-Wesley professional computing series.

[9]  David S. Wise,et al.  Graph algorithms in a lazy functional programming language , 1991 .

[10]  Ian M. Holland,et al.  Specifying Reusable Components Using Contracts , 1992, ECOOP.

[11]  S. Yu,et al.  Software reuse via algorithmic abstraction , 1995 .

[12]  Martin Erwig,et al.  Graph Algorithms = Iteration + Data Structures? The Structure of Graph Algorithms and a Corresponding Style of Programming , 1992, WG.

[13]  Bryan Flamig Practical Algorithms in C , 1995 .

[14]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[15]  Kurt Mehlhorn,et al.  LEDA: a platform for combinatorial and geometric computing , 1997, CACM.

[16]  Karsten Weihe,et al.  Iterators and Handles for Nodes and Edges in Graphs , 1996 .

[17]  Vipin Kumar,et al.  Search in Artificial Intelligence , 1988, Symbolic Computation.

[18]  Ted J. Biggerstaff,et al.  The library scaling problem and the limits of concrete component reuse , 1994, Proceedings of 1994 3rd International Conference on Software Reuse.

[19]  John Launchbury,et al.  Graph Algorithms with a Functional Flavous , 1995, Advanced Functional Programming.

[20]  Karsten Weihe,et al.  Combining LEDA with Customizable Implementations of Graph Algorithms , 1996 .

[21]  Thomas Lengauer,et al.  Combinatorial algorithms for integrated circuit layout , 1990, Applicable theory in computer science.

[22]  David Notkin,et al.  Using C++ Templates to Implement Role-Based Designs , 1996, ISOTAS.