Wuyts Roel - Academia.edu (original) (raw)
Papers by Wuyts Roel
Lecture Notes in Computer Science
This full-day workshop was organized in four sessions. The first three were thematic technical se... more This full-day workshop was organized in four sessions. The first three were thematic technical sessions dedicated to the presentation of the recent research results of participants. Seven, out of eleven accepted submissions were orally presented during these three sessions. The first session also included a metrics collection tool demonstration. The themes of the sessions were, respectively, "Metrics Definition and Collection", "Quality Assessment" and "Metrics Validation". The last session was dedicated to the discussion of a set of topics selected by the participants.
Lecture Notes in Computer Science
This first edition of the workshop Model-driven Software Adaptation (M-ADAPT’07) took place in th... more This first edition of the workshop Model-driven Software Adaptation (M-ADAPT’07) took place in the Technische Universität Berlin with the International Conference ECOOP’07 in the beautiful and buzzing city of Berlin, on the 30th of July, 2007. The workshop was organized by Gordon Blair, Nelly Bencomo, and Robert France. Participants explored how to develop appropriate model-driven approaches to model, analyze, and
IEEE Transactions on Fuzzy Systems, 2009
The fuzzy cognitive map (FCM) has gradually emerged as a powerful paradigm for knowledge represen... more The fuzzy cognitive map (FCM) has gradually emerged as a powerful paradigm for knowledge representation and a simulation mechanism that is applicable to numerous research and application fields. However, since efficient methods to determine the states of the investigated system and to quantify causalities that are the very foundations of FCM theory are lacking, constructing FCMs for complex causal systems
Lecture Notes in Computer Science, 2005
The programming languages of today are stuck in a deep rut that has developed over the past 50 ye... more The programming languages of today are stuck in a deep rut that has developed over the past 50 years. Although we are faced with new challenges posed by enormous advances in hardware and internet technology, we continue to struggle with old-fashioned languages based on rigid, static, closed-world file-based views of programming. We argue the need for a new class of dynamic languages that support a view of programming as constant evolution of living and open software models. Such languages would require features such as dynamic first-class namespaces, explicit meta-models, optional, pluggable type systems, and incremental compilation of running software systems.
Proceedings of the international conference on Compilers, architecture, and synthesis for embedded systems - CASES '02, 2002
Case study description ABB's Instruments business unit develops a large number of different field... more Case study description ABB's Instruments business unit develops a large number of different field devices, such as temperature-, pressure-, and flow-sensors, actuators and positioners. A field device is an embedded hard real-time system. Field devices use sensors to 1 Funded by the European Commission under IST Program IST-1999-20398 and by the Swiss government as BBW 00.0170. The partners
Journal of Systems and Software, 2005
Following the successful 5th ICSE Workshop on Component-Based Software Engineering: Automated Com... more Following the successful 5th ICSE Workshop on Component-Based Software Engineering: Automated Component-Based Software Engineering held in Orlando, Florida, in May 2002, this special issue of The Journal of Systems and Software is devoted to automated component-based software engineering. We depend on software components for everyday activities at work, at home, in traffic and transport, banking, health, telecommunications, defence and other areas. Many
Computer Languages, Systems & Structures, 2008
Traits offer a fine-grained mechanism to compose classes from reusable components while avoiding ... more Traits offer a fine-grained mechanism to compose classes from reusable components while avoiding problems of fragility brought by multiple inheritance and mixins. Traits as originally proposed are stateless, that is, they contain only methods, but no instance variables. State can only be accessed within stateless traits by accessors, which become required methods of the trait. Although this approach works reasonably well in practice, it means that many traits, viewed as software components, are artificially incomplete, and classes that use such traits may contain significant amounts of boilerplate glue code. We present an approach to stateful traits that is faithful to the guiding principle of stateless traits: the client retains control of the composition. Stateful traits consist of a minimal extension to stateless traits in which instance variables are purely local to the scope of a trait, unless they are explicitly made accessible by the composing client of a trait. We demonstrate by means of a formal object calculus that adding state to traits preserves the flattening property: traits contained in a program can be compiled away. We discuss and compare two implementation strategies, and briefly present a case study in which stateful traits have been used to refactor the trait-based version of the Smalltalk collection hierarchy.
2010 IEEE 16th International Conference on Parallel and Distributed Systems, 2010
While the number of cores in both general purpose chip-multiprocessors (CMPs) and embedded Multi-... more While the number of cores in both general purpose chip-multiprocessors (CMPs) and embedded Multi-Processor Systems-on-Chip (MPSoCs) keeps rising, on-chip communication becomes more and more important. In order to write efficient programs for these architectures, it is therefore necessary to have a good idea of the communication behavior of an application. We present a communication profiler that extracts this behavior from compiled, sequential C/C++ programs, and constructs a dynamic data-flow graph at the level of major functional blocks. It can also be used to view differences between program phases, such as different video frames, which allows both input-and phase-specific optimizations to be made. Finally, PinComm can visualize inter-thread communication in parallel programs, which can help in optimizing communication behavior and spotting communication-related performance bottlenecks.
As object-oriented programmers, we are trained to capture common properties of objects in classes... more As object-oriented programmers, we are trained to capture common properties of objects in classes that can be reused. Similarly, we would like to capture common properties of classes in metaclass properties that can be reused. This goal has led researchers to propose models based on explicit metaclasses, but this has opened Pandora's box leading to metaclass composition problems. Numerous approaches have been proposed to fix the problem of metaclass composition, but the composition of conflicting properties was always resolved in an adhoc manner. Our approach uses traits, groups of methods that act as a unit of reuse from which classes are composed, and represent metaclass properties as traits. Metaclasses are then composed from these traits. This solution supports the reuse of metaclass properties, and their safe and automatic composition based on explicit conflict resolution. The paper compares existing models for composing metaclass properties, discusses traits and our solution, and shows some concrete examples implemented in the Smalltalk environment Squeak.
When developing software systems, the relation between design and implementation is typically lef... more When developing software systems, the relation between design and implementation is typically left unspecified. As a result design or implementation can be modified independently of each other, and a modification of either one does not leave any trace in the other. The practical result of this is a number of well-known problems such as drift and erosion, documentation maintenance problems or round-trip engineering trouble. To solve these problems we propose to make the relation between design and implementation explicit by expressing design as a logic meta-program over implementation. This is the cornerstone for building a complete synchronisation framework that allows one to synchronise changes to design and implementation. We have implemented such synchronisation framework, and applied it successfully on two case studies.
Due to the size and the extreme complexity of legacy systems, it is nearly impossible to write fr... more Due to the size and the extreme complexity of legacy systems, it is nearly impossible to write from scratch tests before refactoring them. In addition object-oriented legacy systems present specific requirements to test them. Indeed late-binding allow subclasses to change fundamental aspects of the superclass code and in particular call flows. Moreover Object-oriented programming promotes a distribution of the responsibilities to multiple entities leading to complex scenario to be tested. In such a context one of the few trustable source of information is the execution of the application itself. Traditional forward engineering approaches such as unit testing do not really provide adequate solution to this problem. Therefore there is a need for a more expressive way of testing the execution of object-oriented applications. We propose to represent the trace of object-oriented applications as logic facts and express tests over the trace. This way complex sequences of message exchanges, sequence matching, or expression of negative information are expressed in compact form. We validated our approach by implementing TestLog a prototype tool and testing the Moose reengineering environment and a meta-interpreter.
Traits are reusable units of behaviour that provide a level of structuring for object-oriented pr... more Traits are reusable units of behaviour that provide a level of structuring for object-oriented programs above the level of methods but below the level of classes. Structuring classes with single-inheritance alone can lead to duplicated code when different branches of the hierarchy need to use the same feature. Multiple-inheritance and mixins alleviate this problem, but lead to other difficulties in the face of evolution: changes to classes or mixins can break code lower in the hierarchy in unexpected ways. Traits solve both problems by factoring out shared behaviour as sets of methods that do not depend on state. Trait composition is symmetric and conflicts must be managed explicitly; this means that changes in the components do not lead to unexpected side effects. This paper presents a formal model of traits, and defines some basic properties of traits and classes. We also model the internal dependencies created by self and super-sends so that we can specify precisely when two classes are equivalent.
PhD, Vrije yiversity of Brussel, 2001
Wikis are often implemented using string-based approaches to parse and generate their pages. Whil... more Wikis are often implemented using string-based approaches to parse and generate their pages. While such approaches work well for simple wikis, they hamper the customization and adaptability of wikis to the variety of end-users when more sophisticated needs are required (i.e., different output formats, user-interfaces, wiki management, security policies, ...). In this paper we present SmallWiki, the second version of a fully object-oriented implementation of a wiki. SmallWiki is implemented with objects from the top to the bottom and it can be customized easily to accommodate new needs. In addition, SmallWiki is based on a powerful meta-description called Magritte that allows one to create user-interface elements declaratively.
In current-day software development, programmers oftenuse programming patterns to clarify their i... more In current-day software development, programmers oftenuse programming patterns to clarify their intents and toincrease the understandability of their programs. Unfortunately, most software development environments do not adequatelysupport the declaration and use of such patterns. To explicitly codify these patterns, we adopt a declarativemeta-programming approach. In this approach, we reify thestructure of an (object-oriented) program in terms of logicclauses. We declare programming patterns as logic ruleson top of these clauses. By ...
Lecture Notes in Computer Science
This full-day workshop was organized in four sessions. The first three were thematic technical se... more This full-day workshop was organized in four sessions. The first three were thematic technical sessions dedicated to the presentation of the recent research results of participants. Seven, out of eleven accepted submissions were orally presented during these three sessions. The first session also included a metrics collection tool demonstration. The themes of the sessions were, respectively, "Metrics Definition and Collection", "Quality Assessment" and "Metrics Validation". The last session was dedicated to the discussion of a set of topics selected by the participants.
Lecture Notes in Computer Science
This first edition of the workshop Model-driven Software Adaptation (M-ADAPT’07) took place in th... more This first edition of the workshop Model-driven Software Adaptation (M-ADAPT’07) took place in the Technische Universität Berlin with the International Conference ECOOP’07 in the beautiful and buzzing city of Berlin, on the 30th of July, 2007. The workshop was organized by Gordon Blair, Nelly Bencomo, and Robert France. Participants explored how to develop appropriate model-driven approaches to model, analyze, and
IEEE Transactions on Fuzzy Systems, 2009
The fuzzy cognitive map (FCM) has gradually emerged as a powerful paradigm for knowledge represen... more The fuzzy cognitive map (FCM) has gradually emerged as a powerful paradigm for knowledge representation and a simulation mechanism that is applicable to numerous research and application fields. However, since efficient methods to determine the states of the investigated system and to quantify causalities that are the very foundations of FCM theory are lacking, constructing FCMs for complex causal systems
Lecture Notes in Computer Science, 2005
The programming languages of today are stuck in a deep rut that has developed over the past 50 ye... more The programming languages of today are stuck in a deep rut that has developed over the past 50 years. Although we are faced with new challenges posed by enormous advances in hardware and internet technology, we continue to struggle with old-fashioned languages based on rigid, static, closed-world file-based views of programming. We argue the need for a new class of dynamic languages that support a view of programming as constant evolution of living and open software models. Such languages would require features such as dynamic first-class namespaces, explicit meta-models, optional, pluggable type systems, and incremental compilation of running software systems.
Proceedings of the international conference on Compilers, architecture, and synthesis for embedded systems - CASES '02, 2002
Case study description ABB's Instruments business unit develops a large number of different field... more Case study description ABB's Instruments business unit develops a large number of different field devices, such as temperature-, pressure-, and flow-sensors, actuators and positioners. A field device is an embedded hard real-time system. Field devices use sensors to 1 Funded by the European Commission under IST Program IST-1999-20398 and by the Swiss government as BBW 00.0170. The partners
Journal of Systems and Software, 2005
Following the successful 5th ICSE Workshop on Component-Based Software Engineering: Automated Com... more Following the successful 5th ICSE Workshop on Component-Based Software Engineering: Automated Component-Based Software Engineering held in Orlando, Florida, in May 2002, this special issue of The Journal of Systems and Software is devoted to automated component-based software engineering. We depend on software components for everyday activities at work, at home, in traffic and transport, banking, health, telecommunications, defence and other areas. Many
Computer Languages, Systems & Structures, 2008
Traits offer a fine-grained mechanism to compose classes from reusable components while avoiding ... more Traits offer a fine-grained mechanism to compose classes from reusable components while avoiding problems of fragility brought by multiple inheritance and mixins. Traits as originally proposed are stateless, that is, they contain only methods, but no instance variables. State can only be accessed within stateless traits by accessors, which become required methods of the trait. Although this approach works reasonably well in practice, it means that many traits, viewed as software components, are artificially incomplete, and classes that use such traits may contain significant amounts of boilerplate glue code. We present an approach to stateful traits that is faithful to the guiding principle of stateless traits: the client retains control of the composition. Stateful traits consist of a minimal extension to stateless traits in which instance variables are purely local to the scope of a trait, unless they are explicitly made accessible by the composing client of a trait. We demonstrate by means of a formal object calculus that adding state to traits preserves the flattening property: traits contained in a program can be compiled away. We discuss and compare two implementation strategies, and briefly present a case study in which stateful traits have been used to refactor the trait-based version of the Smalltalk collection hierarchy.
2010 IEEE 16th International Conference on Parallel and Distributed Systems, 2010
While the number of cores in both general purpose chip-multiprocessors (CMPs) and embedded Multi-... more While the number of cores in both general purpose chip-multiprocessors (CMPs) and embedded Multi-Processor Systems-on-Chip (MPSoCs) keeps rising, on-chip communication becomes more and more important. In order to write efficient programs for these architectures, it is therefore necessary to have a good idea of the communication behavior of an application. We present a communication profiler that extracts this behavior from compiled, sequential C/C++ programs, and constructs a dynamic data-flow graph at the level of major functional blocks. It can also be used to view differences between program phases, such as different video frames, which allows both input-and phase-specific optimizations to be made. Finally, PinComm can visualize inter-thread communication in parallel programs, which can help in optimizing communication behavior and spotting communication-related performance bottlenecks.
As object-oriented programmers, we are trained to capture common properties of objects in classes... more As object-oriented programmers, we are trained to capture common properties of objects in classes that can be reused. Similarly, we would like to capture common properties of classes in metaclass properties that can be reused. This goal has led researchers to propose models based on explicit metaclasses, but this has opened Pandora's box leading to metaclass composition problems. Numerous approaches have been proposed to fix the problem of metaclass composition, but the composition of conflicting properties was always resolved in an adhoc manner. Our approach uses traits, groups of methods that act as a unit of reuse from which classes are composed, and represent metaclass properties as traits. Metaclasses are then composed from these traits. This solution supports the reuse of metaclass properties, and their safe and automatic composition based on explicit conflict resolution. The paper compares existing models for composing metaclass properties, discusses traits and our solution, and shows some concrete examples implemented in the Smalltalk environment Squeak.
When developing software systems, the relation between design and implementation is typically lef... more When developing software systems, the relation between design and implementation is typically left unspecified. As a result design or implementation can be modified independently of each other, and a modification of either one does not leave any trace in the other. The practical result of this is a number of well-known problems such as drift and erosion, documentation maintenance problems or round-trip engineering trouble. To solve these problems we propose to make the relation between design and implementation explicit by expressing design as a logic meta-program over implementation. This is the cornerstone for building a complete synchronisation framework that allows one to synchronise changes to design and implementation. We have implemented such synchronisation framework, and applied it successfully on two case studies.
Due to the size and the extreme complexity of legacy systems, it is nearly impossible to write fr... more Due to the size and the extreme complexity of legacy systems, it is nearly impossible to write from scratch tests before refactoring them. In addition object-oriented legacy systems present specific requirements to test them. Indeed late-binding allow subclasses to change fundamental aspects of the superclass code and in particular call flows. Moreover Object-oriented programming promotes a distribution of the responsibilities to multiple entities leading to complex scenario to be tested. In such a context one of the few trustable source of information is the execution of the application itself. Traditional forward engineering approaches such as unit testing do not really provide adequate solution to this problem. Therefore there is a need for a more expressive way of testing the execution of object-oriented applications. We propose to represent the trace of object-oriented applications as logic facts and express tests over the trace. This way complex sequences of message exchanges, sequence matching, or expression of negative information are expressed in compact form. We validated our approach by implementing TestLog a prototype tool and testing the Moose reengineering environment and a meta-interpreter.
Traits are reusable units of behaviour that provide a level of structuring for object-oriented pr... more Traits are reusable units of behaviour that provide a level of structuring for object-oriented programs above the level of methods but below the level of classes. Structuring classes with single-inheritance alone can lead to duplicated code when different branches of the hierarchy need to use the same feature. Multiple-inheritance and mixins alleviate this problem, but lead to other difficulties in the face of evolution: changes to classes or mixins can break code lower in the hierarchy in unexpected ways. Traits solve both problems by factoring out shared behaviour as sets of methods that do not depend on state. Trait composition is symmetric and conflicts must be managed explicitly; this means that changes in the components do not lead to unexpected side effects. This paper presents a formal model of traits, and defines some basic properties of traits and classes. We also model the internal dependencies created by self and super-sends so that we can specify precisely when two classes are equivalent.
PhD, Vrije yiversity of Brussel, 2001
Wikis are often implemented using string-based approaches to parse and generate their pages. Whil... more Wikis are often implemented using string-based approaches to parse and generate their pages. While such approaches work well for simple wikis, they hamper the customization and adaptability of wikis to the variety of end-users when more sophisticated needs are required (i.e., different output formats, user-interfaces, wiki management, security policies, ...). In this paper we present SmallWiki, the second version of a fully object-oriented implementation of a wiki. SmallWiki is implemented with objects from the top to the bottom and it can be customized easily to accommodate new needs. In addition, SmallWiki is based on a powerful meta-description called Magritte that allows one to create user-interface elements declaratively.
In current-day software development, programmers oftenuse programming patterns to clarify their i... more In current-day software development, programmers oftenuse programming patterns to clarify their intents and toincrease the understandability of their programs. Unfortunately, most software development environments do not adequatelysupport the declaration and use of such patterns. To explicitly codify these patterns, we adopt a declarativemeta-programming approach. In this approach, we reify thestructure of an (object-oriented) program in terms of logicclauses. We declare programming patterns as logic ruleson top of these clauses. By ...