Results 1 -
8 of
8
On the design of CGAL a computational geometry algorithms library
- Softw. – Pract. Exp
, 1998
"... CGAL is a Computational Geometry Algorithms Library written in C++, which is being developed by research groups in Europe and Israel. The goal is to make the large body of geometric algorithms developed in the field of computational geometry available for industrial application. We discuss the major ..."
Abstract
-
Cited by 82 (15 self)
- Add to MetaCart
CGAL is a Computational Geometry Algorithms Library written in C++, which is being developed by research groups in Europe and Israel. The goal is to make the large body of geometric algorithms developed in the field of computational geometry available for industrial application. We discuss the major design goals for CGAL, which are correctness, flexibility, ease-of-use, efficiency, and robustness, and present our approach to reach these goals. Generic programming using templates in C++ plays a central role in the architecture of CGAL. We give a short introduction to generic programming in C++, compare it to the object-oriented programming paradigm, and present examples where both paradigms are used effectively in CGAL. Moreover, we give an overview of the current structure of the CGAL-library and consider software engineering aspects in the CGAL-project. Copyright c ○ 1999 John Wiley & Sons, Ltd. KEY WORDS: computational geometry; software library; C++; generic programming;
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, 65-90. 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 40 (6 self)
- Add to MetaCart
Appeared in Computational Geometry -- Theory and Applications 13, 1999, 65-90. 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 ease-of-use. We focus on topological aspects of polyhedral surfaces and evaluate edge-based 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 face-based 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...
Designing a Data Structure for Polyhedral Surfaces
- In Proc. 14th Annu. ACM Sympos. Comput. Geom
, 1998
"... Design solutions for a program library are presented for combinatorial data structures in computational geometry, such as planar maps and polyhedral surfaces. Design issues considered are genericity, flexibility, time and space efficiency, and ease-of-use. We focus on topological aspects of polyhedr ..."
Abstract
-
Cited by 28 (2 self)
- Add to MetaCart
Design solutions for a program library are presented for combinatorial data structures in computational geometry, such as planar maps and polyhedral surfaces. Design issues considered are genericity, flexibility, time and space efficiency, and ease-of-use. We focus on topological aspects of polyhedral surfaces. Edge-based representations for polyhedrons are evaluated with respect to the 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 face-based structures managing holes in facets. 1 Introduction Combinatorial structures, such as planar maps, are fundamental in computational geometry. In order to use computational geometry in practice, a solid library must provide generic and flexible solutions as one of its fundamental cornerstones. Other design criteria are time and space efficiency. Ease-of-use is necessar...
API-Based and InformationTheoretic Metrics for Measuring the Quality of Software Modularization
- IEEE Trans. Software Eng
, 2007
"... Abstract—We present in this paper a new set of metrics that measure the quality of modularization of a non-object-oriented software system. We have proposed a set of design principles to capture the notion of modularity and defined metrics centered around these principles. These metrics characterize ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Abstract—We present in this paper a new set of metrics that measure the quality of modularization of a non-object-oriented software system. We have proposed a set of design principles to capture the notion of modularity and defined metrics centered around these principles. These metrics characterize the software from a variety of perspectives: structural, architectural, and notions such as the similarity of purpose and commonality of goals. (By structural, we are referring to intermodule coupling-based notions, and by architectural, we mean the horizontal layering of modules in large software systems.) We employ the notion of API (Application Programming Interface) as the basis for our structural metrics. The rest of the metrics we present are in support of those that are based on API. Some of the important support metrics include those that characterize each module on the basis of the similarity of purpose of the services offered by the module. These metrics are based on information-theoretic principles. We tested our metrics on some popular open-source systems and some large legacy-code business applications. To validate the metrics, we compared the results obtained on human-modularized versions of the software (as created by the developers of the software) with those obtained on randomized versions of the code. For randomized versions, the assignment of the individual functions to modules was randomized. Index Terms—Metrics/measurement, modules and interfaces, information theory, distribution, maintenance and enhancement, maintainability, coupling, layered architecture. Ç 1
Technology Retargeting for IC Layout
, 1997
"... The ability to recognize polygon-based layout as a collection of objects representing circuit elements connected by path-based wires, enables existing designs implemented using an older fabrication process to be reimplanted quickly in a new process. The approach taken here, based on layout generator ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
The ability to recognize polygon-based layout as a collection of objects representing circuit elements connected by path-based wires, enables existing designs implemented using an older fabrication process to be reimplanted quickly in a new process. The approach taken here, based on layout generator technology, is to create a collection of parameterized circuit objects that, with appropriate arguments, are able to represent the devices (e.g., transistors, contacts) implicitly described in the flattened design. The recognition engine is fully programmable, is independent of any particular technology or device set, and is not restricted to manhattan or even octilinear geometries. In this paper, we describe a novel three-phase approach to object recognition: device recognition, exact wire recognition, and wire synthesis. We believe exact wire recognition to be entirely new and cover it in detail. Experimental results demonstrate the effectiveness of the algorithms on actual layout. 1. In...
Use of a Software Configuration Management Tool in LHCb
"... LHCb Software is made up of a variety of software packages, including legacy code written in Fortran, a new software framework written in C++, as well as many externally developed packages. It is typical that each package is developed and maintained by a different person and therefore evolves indepe ..."
Abstract
- Add to MetaCart
LHCb Software is made up of a variety of software packages, including legacy code written in Fortran, a new software framework written in C++, as well as many externally developed packages. It is typical that each package is developed and maintained by a different person and therefore evolves independently of the other packages. A set of working and production areas has been set up to ensure that developers can release their packages at any time without disturbing the main development line. The software librarian maintains the packages in a CVS code repository, and a release procedure has been established that makes use of a special tool for building the LHCb data processing applications on the various supported platforms. Here we describe in detail the configuration management requirements that led to the adoption of CMT as our software release tool and our experience using this tool over a 1 year period.
The Event as an Object-Relational Database: Avoiding the Dependency Nightmare
"... With the use of object-oriented languages for HEP, many experiments have designed their data objects to contain direct references to other objects in the event (e.g., tracks and electromagnetic showers have references to each other to denote matches). Unfortunately this creates tremendous dependenci ..."
Abstract
- Add to MetaCart
With the use of object-oriented languages for HEP, many experiments have designed their data objects to contain direct references to other objects in the event (e.g., tracks and electromagnetic showers have references to each other to denote matches). Unfortunately this creates tremendous dependencies between packages which lead to brittle development systems (e.g., if the electromagnetic code has a problem you may not be able to compile the tracking code) and makes the storage system more complex. We discuss how the CLEO III experiment avoided these problems by treating an event as an object-relational database. The discussion will include: the constraints we placed on our objects; our use of a separate Association class to deal with inter-object references; and our ability to use multiple sources to supply different data items for one event. 1.

