Topological graph theory
Combinatorial optimization: algorithms and complexity
Combinatorial optimization: algorithms and complexity
Search in Artificial Intelligence
Search in Artificial Intelligence
Keynote address - data abstraction and hierarchy
OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum)
Introduction to algorithms
Combinatorial algorithms for integrated circuit layout
Combinatorial algorithms for integrated circuit layout
Efficient algorithms for path problems with general cost criteria
Proceedings of the 18th international colloquium on Automata, languages and programming
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
Creating abstract superclasses by refactoring
CSC '93 Proceedings of the 1993 ACM conference on Computer science
The Sather programming language
Dr. Dobb's Journal
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Practical algorithms in C++
Object success: a manager's guide to object orientation, its impact on the corporation, and its use for reengineering the software process
LEDA: a platform for combinatorial and geometric computing
Communications of the ACM
Object oriented application frameworks
Object oriented application frameworks
Iteration abstraction in Sather
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Computing Surveys (CSUR)
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Reuse of algorithms: still a challenge to object-oriented programming
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Primitives for the manipulation of general subdivisions and the computation of Voronoi
ACM Transactions on Graphics (TOG)
Graph classes: a survey
PlaNet: A software package of algorithms and heuristics for disjoint paths in planar networks
Discrete Applied Mathematics
Practical Software Maintenance: Best Practices for Managing Your Software Investment
Practical Software Maintenance: Best Practices for Managing Your Software Investment
The STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library
The STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library
C++ FAQs
ACM SIGPLAN Notices
Recasting Algorithms to Encourage Reuse
IEEE Software
Specifying Reusable Components Using Contracts
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Aspect-Oriented Programming of Sparse Matrix Code
ISCOPE '97 Proceedings of the Scientific Computing in Object-Oriented Parallel Environments
Precision and Robustness in Geometric Computations
Algorithmic Foundations of Geographic Information Systems, this book originated from the CISM Advanced School on the Algorithmic Foundations of Geographic Information Systems
ECOOP '98 Workshop ion on Object-Oriented Technology
Characterizing Observability and Controllability of Software Components
ICSR '96 Proceedings of the 4th International Conference on Software Reuse
XXL - A Library Approach to Supporting Efficient Implementations of Advanced Database Queries
Proceedings of the 27th International Conference on Very Large Data Bases
The STL Model in the Geometric Domain
Selected Papers from the International Seminar on Generic Programming
Algorithm engineering: bridging the gap between algorithm theory and practice
Algorithm engineering: bridging the gap between algorithm theory and practice
Hi-index | 0.00 |
An algorithm component is an implementation of an algorithm which is not intended to be a stand-alone module, but to perform a specific task within a large software package or even within several distinct software packages. Therefore, the design of algorithm components must also incorporate software-engineering aspects. A key design goal is adaptability. This goal is important for maintenance throughout a project, prototypical development, and reuse in new, unforseen contexts. From a theoretical viewpoint most algorithms apply to a range of possible use scenarios. Ideally, each algorithm is implemented by one algorithm component, which is easily, safely, and efficiently adaptable to all of these contexts.Various techniques have been developed for the design and implementation of algorithm components. However, a common basis for systematic, detailed evaluations and comparisons in view of the real practical needs is still missing. Basically, this means a set of concrete criteria, which specify what sort of adaptability is really required in practice, and which are well-justified by convincing, representative use scenarios.This paper is intended to be a first “milestone” on the way towards such a system of criteria. We will present a set of concrete goals, which are general and problem-independent and might appear ubiquitously in the algorithmic realm. These goals are illustrated, motivated, and justified by an extensive requirements analysis for a particular algorithm from a particular algorithmic domain: Dijkstra's algorithm for shortest paths in networks.Clearly, the field of algorithmics might be too versatile to allow a comprehensive, yet concise set of precise, justified criteria. Even a domain as restricted as graph and network algorithms includes aspects that are not fully understood. The analysis will include a discussion of the limits of the case study and the scope of the goals. The case study was chosen because it seems to be close to the “boderline” between the aspects that are well understood and the aspects that are not. Hence, this example may well serve as an“acid test” for programming techniques in view of the state of the art.