Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Oscar Nierstrasz is active.

Publication


Featured researches published by Oscar Nierstrasz.


The Journal of Object Technology | 2008

Context-oriented Programming

Robert Hirschfeld; Pascal Costanza; Oscar Nierstrasz

Context-dependent behavior is becoming increasingly important for a wide range of application domains, from pervasive computing to common business applications. Unfortunately, mainstream programming languages do not provide mechanisms that enable software entities to adapt their behavior dynamically to the current execution context. This leads developers to adopt convoluted designs to achieve the necessary runtime exibility. We propose a new programming technique called Context-oriented Programming (COP) which addresses this problem. COP treats context explicitly, and provides mechanisms to dynamically adapt behavior in reaction to changes in context, even after system deployment at runtime. In this paper, we lay the foundations of COP, show how dynamic layer activation enables multi-dimensional dispatch, illustrate the application of COP by examples in several language extensions, and demonstrate that COP is largely independent of other commitments to programming style.


dagstuhl seminar proceedings | 2013

Software Engineering for Self-Adaptive Systems: A Second Research Roadmap

Rogério de Lemos; Holger Giese; Hausi A. Müller; Mary Shaw; Jesper Andersson; Marin Litoiu; Bradley R. Schmerl; Gabriel Tamura; Norha M. Villegas; Thomas Vogel; Danny Weyns; Luciano Baresi; Basil Becker; Nelly Bencomo; Yuriy Brun; Bojan Cukic; Ron Desmarais; Schahram Dustdar; Gregor Engels; Kurt Geihs; Karl M. Göschka; Alessandra Gorla; Vincenzo Grassi; Paola Inverardi; Gabor Karsai; Jeff Kramer; Antónia Lopes; Jeff Magee; Sam Malek; Serge Mankovskii

The goal of this roadmap paper is to summarize the state-of-the-art and identify research challenges when developing, deploying and managing self-adaptive software systems. Instead of dealing with a wide range of topics associated with the field, we focus on four essential topics of self-adaptation: design space for self-adaptive solutions, software engineering processes for self-adaptive systems, from centralized to decentralized control, and practical run-time verification & validation for self-adaptive systems. For each topic, we present an overview, suggest future directions, and focus on selected challenges. This paper complements and extends a previous roadmap on software engineering for self-adaptive systems published in 2009 covering a different set of topics, and reflecting in part on the previous paper. This roadmap is one of the many results of the Dagstuhl Seminar 10431 on Software Engineering for Self-Adaptive Systems, which took place in October 2010.


european conference on object-oriented programming | 2002

Traits: Composable Units of Behavior

Nathanael Shärli; Stéphane Ducasse; Oscar Nierstrasz; Andrew P. Black

Inheritance is the fundamental reuse mechanism in object-oriented programming languages; its most prominent variants are single inheritance, multiple inheritance, and mixin inheritance. In the first part of this paper, we identify and illustrate the conceptual and practical reusability problems that arise with these forms of inheritance. We then present a simple compositional model for structuring object-oriented programs, which we call traits. Traits are essentially groups of methods that serve as building blocks for classes and are primitive units of code reuse. In this model, classes are composed from a set of traits by specifying glue code that connects the traits together and accesses the necessary state. We demonstrate how traits overcome the problems arising with the different variants of inheritance, we discuss how traits can be implemented effectively, and we summarize our experience applying traits to refactor an existing class hierarchy.


conference on object-oriented programming systems, languages, and applications | 2000

Finding refactorings via change metrics

Serge Demeyer; Stéphane Ducasse; Oscar Nierstrasz

Reverse engineering is the process of uncovering the design and the design rationale from a functioning software system. Reverse engineering is an integral part of any successful software system, because changing requirements lead to implementations that drift from their original design. In contrast to traditional reverse engineering techniques ---which analyse a single snapshot of a system--- we focus the reverse engineering effort by determining where the implementation has changed. Since changes of object-oriented software are often phrased in terms of refactorings, we propose a set of heuristics for detecting refactorings by applying lightweight, object-oriented metrics to successive versions of a software system. We validate our approach with three separate case studies of mature object-oriented software systems for which multiple versions are available. The case studies suggest that the heuristics support the reverse engineering process by focusing attention on the relevant parts of a software system.


ACM Transactions on Programming Languages and Systems | 2006

Traits: A mechanism for fine-grained reuse

Stéphane Ducasse; Oscar Nierstrasz; Nathanael Schärli; Roel Wuyts; Andrew P. Black

Inheritance is well-known and accepted as a mechanism for reuse in object-oriented languages. Unfortunately, due to the coarse granularity of inheritance, it may be difficult to decompose an application into an optimal class hierarchy that maximizes software reuse. Existing schemes based on single inheritance, multiple inheritance, or mixins, all pose numerous problems for reuse. To overcome these problems we propose traits, pure units of reuse consisting only of methods. We develop a formal model of traits that establishes how traits can be composed, either to form other traits, or to form classes. We also outline an experimental validation in which we apply traits to refactor a nontrivial application into composable units.


Communications of The ACM | 1992

Component-oriented software development

Oscar Nierstrasz; Simon J. Gibbs; Dennis Tsichritzis

Object-oriented programming techniques promote a new approach to software engineering in which reliable, open applications can be lar gely constructed, rather than programmed, by reusing “frameworks” [3] of plug-compatible software components. Although the dream of a components-based software industry is very old [9], only now does it appear that we are close to realizing the dream. The reason for this is twofold: • Modern applications are increasingly open in terms of topology, platform and evolution, and so the need for a component-oriented approach to development is even more acute than in the past; • Objects provide an organizational paradigm for decomposing large applications into cooperating objects as well as a reuse paradigm for composing applications from pre-packaged software components. Despite the contributions of object-oriented technology , there are several open research problems that must be resolved to reach the goal of ef f ctive component-oriented development. First, object-oriented mechanisms for composition and reuse must be cleanly integrated with other features, such as concurrency , persistence and distribution. Second, ef fective reuse of software presupposes the existence of tools to support the organisation and retrieval of components according to application requirements and the interactive construction of running applications from components. Third, the design of reusable frameworks is an iterative, evolutionary process, so it is necessary to manage software and software information in such a way that designs and implementations can evolve gracefully. Finally, present object-oriented methodologies do not explicitly address the design of reusable frameworks. Not only the languages and tools, but the economics, methods and culture of software development must ultimately adapt to a new evolutionary software life-cycle if we are to realize the benefits of large-scale software reuse [2][17].


foundations of software engineering | 2005

The story of moose: an agile reengineering environment

Oscar Nierstrasz; Stéphane Ducasse; Tudor Gǐrba

MOOSE is a language-independent environment for reverse- and re-engineering complex software systems. MOOSE provides a set of services including a common meta-model, metrics evaluation and visualization, a model repository, and generic GUI support for querying, browsing and grouping. The development effort invested in MOOSE has paid off in precisely those research activities that benefit from applying a combination of complementary techniques. We describe how MOOSE has evolved over the years, we draw a number of lessons learned from our experience, and we outline the present and future of MOOSE.


mining software repositories | 2009

Assigning bug reports using a vocabulary-based expertise model of developers

Dominique Matter; Adrian Kuhn; Oscar Nierstrasz

For popular software systems, the number of daily submitted bug reports is high. Triaging these incoming reports is a time consuming task. Part of the bug triage is the assignment of a report to a developer with the appropriate expertise. In this paper, we present an approach to automatically suggest developers who have the appropriate expertise for handling a bug report. We model developer expertise using the vocabulary found in their source code contributions and compare this vocabulary to the vocabulary of bug reports. We evaluate our approach by comparing the suggested experts to the persons who eventually worked on the bug. Using eight years of Eclipse development as a case study, we achieve 33.6% top-1 precision and 71.0% top-10 recall.


conference on object oriented programming systems languages and applications | 1987

Active objects in hybrid

Oscar Nierstrasz

Most object-oriented languages are strong on reusability or on strong-typing, but weak on concurrency. In response to this gap, we are developing Hybrid , an object-oriented language in which objects are the active entities. Objects in Hybrid are organized into domains , and concurrent executions into activities . All object communications are based on remote procedure-calls. Unstructured sends and accepts are forbidden. To this the mechanisms of delegation and delay queues are added to enable switching and triggering of activities. Concurrent subactivities and atomic actions provided for compactness and simplicity. We show how solutions to many important concurrent problems, such a pipelining, constraint management and “administration” can be compactly expressed using these mechanisms.


Object-oriented concepts, databases, and applications | 1989

A survey of object-oriented concepts

Oscar Nierstrasz

The object-oriented paradigm has gained popularity in various guises not only in programming languages, but in user interfaces, operating systems, databases, and other areas. We argue that the fundamental object-oriented concept is en apsulation, and that all object-oriented mechanisms and approaches exploit this idea to various ends. We introduce the most important of these mechanisms as they are manifested in existing object-oriented systems, and we discuss their relevance i the context of modern application development. *.In Object-Oriented Concepts, Databases and Applications , ed. W. Kim and F. Lochovsky, pp. 3-21, ACM Press and AddisonWesley, 1989. †.Author’s address: Centre Universitaire d’Informatique, 24 rue Général Dufour, CH-1211 Genève 4, Switzerland. E-mail: [email protected]. Tel: +41 (22) 705.7664. Fax: +41 (22) 320.2927.

Collaboration


Dive into the Oscar Nierstrasz's collaboration.

Top Co-Authors

Avatar

Mircea Lungu

University of Groningen

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge