Database

Creator

Date

Thumbnail

Search results

13 records were found.

Software libraries have emerged as one of the most common ways of providing reusable, organized collections of software. Practically every software project nowadays uses a number of software libraries for the most basic tasks as well as for domain-specific programming tasks. As the number, complexity, and importance of libraries increases, the need for support in development and maintenance becomes apparent. Yet, only little assistance exists for the developers and maintainers of libraries.

In this thesis we are concerned with the large class of libraries known as generic libraries, that is, libraries in the philosophy of the Standard Template Library (STL). Specifically, we tackle two issues, one related to the development and one related to the use of generic libraries.

The first issue, particularly important for a libr...

Generic programming is an indispensable ingredient of modern programming languages. In the C++ programming language, generic programming is implemented by the means of parameterized fragments of code, called templates, in which parameters are constrained by concepts. This thesis consists of seven publications investigating different aspects of generic programming with concepts---formal semantics of the concepts language feature, the mathematical foundations of concepts as a specification tool, change impact analysis of generic libraries, performance-based component composition, and multi-paradigm, multi-language library development.

Formally specifying the semantics of programming languages is a difficult task, one that is taken up rarely due to its complexity. In this thesis we provide a formal semantics of the separate t...
This document describes the syntax and the semantics of a simplified version of the recently proposed concept sublanguage of C++.
Since the Standard Template Library (STL), generic libraries in C++ rely on concepts to precisely specify the requirements of generic algorithms (function templates) on their parameters (template arguments). Modifying the definition of a concept even slightly, can have a potentially large impact on the (interfaces of the) entire library. In particular the non-local effects of a change, however, make its impact difficult to determine by hand. In this paper we propose a \conceptual change impact analysis (CCIA), which determines the impact of changes of the conceptual specification of a generic library. The analysis is organized in a pipe-and-filter manner, where the first stage finds any kind of impact, the second stage various specific kinds of impact. Both stages describe reachability algorithms, which operate on a conceptual depe...
Design and implementation of generic libraries in C++ are based on conceptual specifications---what if such specifications have to change? In a quite practical sense, this question arises because of a new proposal for iterator concepts that is under discussion among C++ library developers. Given the fundamental role of iterator concepts, it is important to anticipate which impact the proposed changes have on legacy code. Yet, no tool has been available to safely check for unwanted effects. We introduce a conceptual change impact analysis and apply it to the proposed iterator specification. Surprisingly, the analysis yields that the proposed iterator concepts are neither (fully) backward- nor forward-compatible with the current, standardized concepts. Since the analysis also lists the sources of incompatibility, it can help library des...
With the recent developments in the C++ language, concepts are mostly discussed as a form of constrained polymorphism. Yet, concepts also allow for an alternative, implementation-independent view that comes from their origin in (algebraic) specification languages. In this paper, we return to this specification view on concepts and formalize C++ concepts as institutions, a well-established notion for precise specifications of software components. We argue that institutions form a suitable theoretical framework for software systems like libraries where the different parts establish relations that are captured by different logics, or no formal logic at all. Assuming the C++ concept descriptions, concept maps, and axioms as in the draft currently accepted by the C++ standardization committee, we show that concept descriptions and axioms...
Component-based programming is a methodology for designing software systems as assemblages of components with a low degree of coherence and a high degree of orthogonality. Decoupling and orthogonality, however, require coupling and assembling on the side of the component's client. This paper addresses performance problems that occur in the composition specifically of library components. We discuss the design and implementation of a composer, which assembles library components based on a classification of their declarative performance descriptions. Employing an off-the-shelf decision-tree procedure for selecting, and the C++ technique of traits for propagating the desired behavior throughout the whole library, our system allows for rapid performance predictions. It is applied to FFTL, an "STL-like" C++ library for the Fast Fourier Trans...
"Scrap Your Boilerplate" (SYB) is a well studied and widely used design pattern for generic traversal in the Haskell language, but almost unknown to generic programmers in C++. This paper shows that SYB can be implemented in C++. It identifies the features and idioms of C++ that correspond to the Haskell constructs that implement SYB, or can be used to emulate them, and provides a prototype C++ implementation.
A class of closely related problems, a problem domain, can often be described by a domain-specific language, which consists of algorithms and combinators useful for solving that particular class of problems. Such a language can be of two kinds: it can form a new language or it can be embedded as a sublanguage in an existing one. We describe an embedded DSL in the form of a library which extends a general purpose language. Our domain is that of vulnerability assessment in the context of climate change, formally described at the Potsdam Institute for Climate Impact Research. The domain is described using Haskell, yielding a domain specific sublanguage of Haskell that can be used for prototyping of implementations. In this paper we present a generic C++ library that implements a domain-specific language for vulnerability assessment, base...
Want to know more?If you want to know more about this cutting edge product, or schedule a demonstration on your own organisation, please feel free to contact us or read the available documentation at http://www.keep.pt/produtos/retrievo/?lang=en