Results 1  10
of
64
Using role components to implement collaborationbased design
 In Proc. of OOPSLA’96, volume 28(10) of ACM SIGPLAN Notices
, 1996
"... In this paper we present a method of code implementation that works in conjunction with collaboration and responsibility based analysis modeling techniques to achieve better code reuse and resilience to change. Our approach maintains a closer mapping from responsibilities in the analysis model t ..."
Abstract

Cited by 162 (3 self)
 Add to MetaCart
(Show Context)
In this paper we present a method of code implementation that works in conjunction with collaboration and responsibility based analysis modeling techniques to achieve better code reuse and resilience to change. Our approach maintains a closer mapping from responsibilities in the analysis model to entities in the implementation. In so doing, it leverages the features of flexible design and design reuse found in collaborationbased design models to provide similar adaptability and reuse in the implementation. Our approach requires no special development tools and uses only standard features available in the C++ language. In an earlier paper we described the basic mechanisms used by our approach and discussed its advantages in comparison to the framework approach. In this paper we show how our approach combines code and design reuse, describing specific techniques that can be used in the development of larger applications. 1
OSKI: A library of automatically tuned sparse matrix kernels
 Institute of Physics Publishing
, 2005
"... kernels ..."
(Show Context)
Using C++ Templates to Implement RoleBased Designs
 JSSST International Symposium on Object Technologies for Advanced Software
, 1996
"... Abstract. Within the objectoriented technology community, much recent work on design reuse has focused on rolebased collaborations distributed across multiple objects. Many bene ts can be derived by mapping rolebased designs directly into implementations, including greater ease in maintaining the ..."
Abstract

Cited by 64 (3 self)
 Add to MetaCart
(Show Context)
Abstract. Within the objectoriented technology community, much recent work on design reuse has focused on rolebased collaborations distributed across multiple objects. Many bene ts can be derived by mapping rolebased designs directly into implementations, including greater ease in maintaining the connection between designs and implementations under change, and the opportunity for code reuse along with design reuse. Current e orts in rolebased designs do not generally provide these bene ts. We provide a method for mapping rolebased designs into implementation, preserving the design without unnecessary constraints on the design structures. Roles are represented as parameterized classes, where the parameters represent the types of the participants in the collaboration. Composition of roles is implicit in the binding of parameters to classes in the implementation. The bindings are created at compile time by class de nitions that are separate from the role implementations. In this paper we focus on the use of templates in the C++ language as the supporting mechanism. 1
Implementing productline features by composing component aspects
 In Proc. Int’l Software Product Line Conf
, 2000
"... ..."
(Show Context)
Using Generic Programming for Designing a Data Structure for Polyhedral Surfaces
 Comput. Geom. Theory Appl
, 1999
"... Appeared in Computational Geometry  Theory and Applications 13, 1999, 6590. Software design solutions are presented for combinatorial data structures, such as polyhedral surfaces and planar maps, tailored for program libraries in computational geometry. Design issues considered are flexibility, ..."
Abstract

Cited by 49 (5 self)
 Add to MetaCart
(Show Context)
Appeared in Computational Geometry  Theory and Applications 13, 1999, 6590. Software design solutions are presented for combinatorial data structures, such as polyhedral surfaces and planar maps, tailored for program libraries in computational geometry. Design issues considered are flexibility, time and space efficiency, and easeofuse. We focus on topological aspects of polyhedral surfaces and evaluate edgebased representations with respect to our design goals. A design for polyhedral surfaces in a halfedge data structure is developed following the generic programming paradigm known from the Standard Template Library STL for C++. Connections are shown to planar maps and facebased structures. Key words: Library design; Generic programming; Combinatorial data structure; Polyhedral surface; Halfedge data structure 1 Introduction Combinatorial structures, such as planar maps, are fundamental in computational geometry. In order to be useful in practice, a solid library for compu...
Concepts: Linguistic support for generic programming in C
 SIGPLAN Notices
, 2006
"... Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, ..."
Abstract

Cited by 43 (10 self)
 Add to MetaCart
(Show Context)
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
Efficient detection of unusual words
 J. COMP. BIOL
, 2000
"... Words that are, by some measure, over or underrepresented in the context of larger sequences have been variously implicated in biological functions and mechanisms. In most approaches to such anomaly detections, the words (up to a certain length) are enumerated more or less exhaustively and are indi ..."
Abstract

Cited by 41 (8 self)
 Add to MetaCart
Words that are, by some measure, over or underrepresented in the context of larger sequences have been variously implicated in biological functions and mechanisms. In most approaches to such anomaly detections, the words (up to a certain length) are enumerated more or less exhaustively and are individually checked in terms of observed and expected frequencies, variances, and scores of discrepancy and significance thereof. Here we take the global approach of annotating the suffix tree of a sequence with some such values and scores, having in mind to use it as a collective detector of all unexpected behaviors, or perhaps just as a preliminary filter for words suspicious enough to undergo a more accurate scrutiny. We consider in depth the simple probabilistic model in which sequences are produced by a random source emitting symbols from a known alphabet independently and according to a given distribution. Our main result consists of showing that, within this model, full tree annotations can be carried out in a timeandspace optimal fashion for the mean, variance and some of the adopted measures of significance. This result is achieved by an ad hoc embedding in statistical expressions of the combinatorial structure of the periods of a string. Specifically,
Introspective Sorting and Selection Algorithms
 Software Practice and Experience
, 1997
"... Quicksort is the preferred inplace sorting algorithm in many contexts, since its average computing time on uniformly distributed inputs is \Theta(N log N) and it is in fact faster than most other sorting algorithms on most inputs. Its drawback is that its worstcase time bound is \Theta(N ). Previo ..."
Abstract

Cited by 39 (1 self)
 Add to MetaCart
(Show Context)
Quicksort is the preferred inplace sorting algorithm in many contexts, since its average computing time on uniformly distributed inputs is \Theta(N log N) and it is in fact faster than most other sorting algorithms on most inputs. Its drawback is that its worstcase time bound is \Theta(N ). Previous attempts to protect against the worst case by improving the way quicksort chooses pivot elements for partitioning have increased the average computing time too muchone might as well use heapsort, which has a \Theta(N log N) worstcase time bound but is on the average 2 to 5 times slower than quicksort. A similar dilemma exists with selection algorithms (for finding the ith largest element) based on partitioning. This paper describes a simple solution to this dilemma: limit the depth of partitioning, and for subproblems that exceed the limit switch to another algorithm with a better worstcase bound. Using heapsort as the "stopper" yields a sorting algorithm that is just as fast as quicksort in the average case but also has an \Theta(N log N) worst case time bound. For selection, a hybrid of Hoare's find algorithm, which is linear on average but quadratic in the worst case, and the BlumFloydPrattRivestTarjan algorithm is as fast as Hoare's algorithm in practice, yet has a linear worstcase time bound. Also discussed are issues of implementing the new algorithms as generic algorithms and accurately measuring their performance in the framework of the C++ Standard Template Library.
Specifications as Search Keys for Software Libraries
 IN PROCEEDINGS OF THE EIGHTH INTERNATIONAL CONFERENCE ON LOGIC PROGRAMMING
, 1991
"... ..."
Implementing ProductLine Features with Component Reuse
 In Proceedings of the Fifth International Conference on Software Reuse
, 2000
"... ..."