Jannik Laval, S. Denier, Stéphane Ducasse, Andy Kellens
When reengineering large systems, software developers would like to assess and compare the impact of multiple change scenarios without actually performing these changes. A change can be effected by applying a tool to the source code, or by a manual refactoring. In addition, tools run over a model are costly to redevelop. It raises an interesting challenge for tools implementors: how to support modification of large source code models to enable comparison of multiple versions. One naive approach is to copy the entire model after each modification. However, such an approach is too expensive in memory and execution time. In this paper we explore different implementations that source code metamodels support multiple versions of a system. We propose a solution based on dynamic binding of entities between multiple versions, providing good access performance while minimizing memory consumption.
{"title":"Supporting incremental change in large system models","authors":"Jannik Laval, S. Denier, Stéphane Ducasse, Andy Kellens","doi":"10.1145/1735935.1735937","DOIUrl":"https://doi.org/10.1145/1735935.1735937","url":null,"abstract":"When reengineering large systems, software developers would like to assess and compare the impact of multiple change scenarios without actually performing these changes. A change can be effected by applying a tool to the source code, or by a manual refactoring. In addition, tools run over a model are costly to redevelop. It raises an interesting challenge for tools implementors: how to support modification of large source code models to enable comparison of multiple versions. One naive approach is to copy the entire model after each modification. However, such an approach is too expensive in memory and execution time. In this paper we explore different implementations that source code metamodels support multiple versions of a system. We propose a solution based on dynamic binding of entities between multiple versions, providing good access performance while minimizing memory consumption.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"125 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127478545","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Dynamic programming languages offer high expressiveness and flexibility, improving programmer productivity. Still, making dynamic programming languages available for embedded systems is challenging because such environments are often constrained in terms of memory or computational power. For this, it is necessary to reduce the size of language implementations (virtual machines, VMs) while at the same time retaining good performance and robustness. Automatic memory management deserves special attention because its performance and space overhead have noticeable impact on overall system usability. In this paper, we present NXTalk, a VM and programming environment for the Smalltalk programming language, making high-level object-oriented programming available on Lego Mindstorms NXT robots. We describe its VM implementation and evaluate its size and performance characteristics.
{"title":"NXTalk: dynamic object-oriented programming in a constrained environment","authors":"M. Beck, M. Haupt, R. Hirschfeld","doi":"10.1145/1735935.1735942","DOIUrl":"https://doi.org/10.1145/1735935.1735942","url":null,"abstract":"Dynamic programming languages offer high expressiveness and flexibility, improving programmer productivity. Still, making dynamic programming languages available for embedded systems is challenging because such environments are often constrained in terms of memory or computational power. For this, it is necessary to reduce the size of language implementations (virtual machines, VMs) while at the same time retaining good performance and robustness. Automatic memory management deserves special attention because its performance and space overhead have noticeable impact on overall system usability. In this paper, we present NXTalk, a VM and programming environment for the Smalltalk programming language, making high-level object-oriented programming available on Lego Mindstorms NXT robots. We describe its VM implementation and evaluate its size and performance characteristics.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"82 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132250690","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In order to alleviate design decay, different program design documentation techniques are used for the specification and detection of design inconsistencies in code. However, these design documentation techniques do not always provide support for the diagnosis and (semi-) automatic correction of such inconsistencies. In case they do, corrective solutions are typically targeted to a reduced set of pre-defined inconsistency problems, and they are not easily customizable to new kinds of consistency checks defined by a user. In particular, they cannot infer possible corrective actions to solve new user-defined inconsistency problems. In this paper, we present a technique for the diagnosis and (semi-) automatic correction of inconsistencies in the context of an existing tool for inconsistency management: IntensiVE. Our technique uses logic abductive reasoning to infer solutions to detected user-defined inconsistencies, starting from basic composable corrective actions. A first prototype implementing our technique on top of IntensiVE is shown.
{"title":"Diagnosis and semi-automatic correction of detected design inconsistencies in source code","authors":"Sergio Castro, J. Brichau, K. Mens","doi":"10.1145/1735935.1735938","DOIUrl":"https://doi.org/10.1145/1735935.1735938","url":null,"abstract":"In order to alleviate design decay, different program design documentation techniques are used for the specification and detection of design inconsistencies in code. However, these design documentation techniques do not always provide support for the diagnosis and (semi-) automatic correction of such inconsistencies. In case they do, corrective solutions are typically targeted to a reduced set of pre-defined inconsistency problems, and they are not easily customizable to new kinds of consistency checks defined by a user. In particular, they cannot infer possible corrective actions to solve new user-defined inconsistency problems. In this paper, we present a technique for the diagnosis and (semi-) automatic correction of inconsistencies in the context of an existing tool for inconsistency management: IntensiVE. Our technique uses logic abductive reasoning to infer solutions to detected user-defined inconsistencies, starting from basic composable corrective actions. A first prototype implementing our technique on top of IntensiVE is shown.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"172 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116018694","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
David Röthlisberger, Oscar Nierstrasz, Alexandre Bergel, Stéphane Ducasse
The IDE used in most Smalltalk dialects, including Pharo, Squeak and Cincom Smalltalk, did not evolve significantly over the last years, if not to say decades. For other languages, for instance Java, the available IDEs made tremendous progress as Eclipse and Net-Beans illustrate. While the Smalltalk IDE served as an exemplar for many years, other IDEs caught up or even overtook the erstwhile leader in terms of feature-richness, usability and code navigation facilities. In this paper we first analyze the difficulty of software navigation in the Smalltalk IDE and second illustrate with concrete examples the features we added to the Smalltalk IDE to fill the gap to modern IDEs and to provide novel, improved means to navigate source space. We show that thanks to the agility and dynamics of Smalltalk, we are able to extend and enhance with reasonable effort the Smalltalk IDE to better support software navigation, program comprehension, and software maintenance in general. One such support is the integration of dynamic information into the static source views we are familiar with. Other means include easing the access to static information (for instance by better arranging important packages) or helping developers locating artifacts of interest.
{"title":"Tackling software navigation issues of the Smalltalk IDE","authors":"David Röthlisberger, Oscar Nierstrasz, Alexandre Bergel, Stéphane Ducasse","doi":"10.1145/1735935.1735945","DOIUrl":"https://doi.org/10.1145/1735935.1735945","url":null,"abstract":"The IDE used in most Smalltalk dialects, including Pharo, Squeak and Cincom Smalltalk, did not evolve significantly over the last years, if not to say decades. For other languages, for instance Java, the available IDEs made tremendous progress as Eclipse and Net-Beans illustrate. While the Smalltalk IDE served as an exemplar for many years, other IDEs caught up or even overtook the erstwhile leader in terms of feature-richness, usability and code navigation facilities. In this paper we first analyze the difficulty of software navigation in the Smalltalk IDE and second illustrate with concrete examples the features we added to the Smalltalk IDE to fill the gap to modern IDEs and to provide novel, improved means to navigate source space. We show that thanks to the agility and dynamics of Smalltalk, we are able to extend and enhance with reasonable effort the Smalltalk IDE to better support software navigation, program comprehension, and software maintenance in general. One such support is the integration of dynamic information into the static source views we are familiar with. Other means include easing the access to static information (for instance by better arranging important packages) or helping developers locating artifacts of interest.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131131883","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Object persistence is an important aspect of application architectures and development processes. Different solutions in this field evolved over the last decades and new approaches are still subject to research. While object-oriented databases become increasingly popular, the usage of relational databases through an object-relational mapping layer is still one of the most widely adopted techniques. However, most object-relational frameworks require a considerable amount of mapping descriptions between object models and relational database schemas. This additional layer has to be maintained by developers along with the object model itself. In this paper, we present an approach to object-relational mapping that utilizes the introspection and intercession features of Smalltalk to free developers from manually creating those mapping descriptions. The presented framework analyzes the existing models and automatically deduces suitable database schemas. Thus, it aids development processes by neglecting the need for a separate mapping layer. A detailed introduction of the programming interface is followed by a description of the framework's internal implementation details. Additionally, the performance of the framework is evaluated through a comparison against a comparable system for the same programming environment.
{"title":"Object-relational mapping with SqueakSave","authors":"T. Kowark, R. Hirschfeld, M. Haupt","doi":"10.1145/1735935.1735951","DOIUrl":"https://doi.org/10.1145/1735935.1735951","url":null,"abstract":"Object persistence is an important aspect of application architectures and development processes. Different solutions in this field evolved over the last decades and new approaches are still subject to research. While object-oriented databases become increasingly popular, the usage of relational databases through an object-relational mapping layer is still one of the most widely adopted techniques. However, most object-relational frameworks require a considerable amount of mapping descriptions between object models and relational database schemas. This additional layer has to be maintained by developers along with the object model itself.\u0000 In this paper, we present an approach to object-relational mapping that utilizes the introspection and intercession features of Smalltalk to free developers from manually creating those mapping descriptions. The presented framework analyzes the existing models and automatically deduces suitable database schemas. Thus, it aids development processes by neglecting the need for a separate mapping layer.\u0000 A detailed introduction of the programming interface is followed by a description of the framework's internal implementation details. Additionally, the performance of the framework is evaluated through a comparison against a comparable system for the same programming environment.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132872714","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Gwenaël Casaccio, Damien Pollet, M. Denker, Stéphane Ducasse
Long-lived systems rely on reflective self-modification to evolve. Unfortunately, since such a system is at both ends of a causal loop, this means modifications that impact the reflective layer itself can be overly difficult to apply. This paper introduces ObjectSpaces, a reification of the familiar Smalltalk image as a first-class entity. By confining the system inside an ObjectSpace, we isolate the evolution tools from it, while still giving them reflective access to the confined system. We describe the ObjectSpaces idea, the interface to communicate, inspect, and debug objects contained inside and ObjectSpace, based on a prototype implementation in GNU Smalltalk.
{"title":"Object spaces for safe image surgery","authors":"Gwenaël Casaccio, Damien Pollet, M. Denker, Stéphane Ducasse","doi":"10.1145/1735935.1735948","DOIUrl":"https://doi.org/10.1145/1735935.1735948","url":null,"abstract":"Long-lived systems rely on reflective self-modification to evolve. Unfortunately, since such a system is at both ends of a causal loop, this means modifications that impact the reflective layer itself can be overly difficult to apply.\u0000 This paper introduces ObjectSpaces, a reification of the familiar Smalltalk image as a first-class entity. By confining the system inside an ObjectSpace, we isolate the evolution tools from it, while still giving them reflective access to the confined system. We describe the ObjectSpaces idea, the interface to communicate, inspect, and debug objects contained inside and ObjectSpace, based on a prototype implementation in GNU Smalltalk.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116545104","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
To render 3D graphics there is a number of different frameworks written in Smalltalk. While most of them provide powerful facilities, many of them are outdated, abandoned, undocumented or heavyweight. In this paper we present Lumière, a novel lightweight framework for rendering 3D graphics using OpenGL based on a stage metaphor. Lumière is implemented using the Pharo IDE. In its current state it supports basic and composite shapes to populate 3D scenes, features a camera, and a lighting model. We illustrate the usage of Lumière with Gaucho, an environment for visual programming we are currently building.
{"title":"Lumière: a novel framework for rendering 3D graphics in Smalltalk","authors":"F. Olivero, Michele Lanza, R. Robbes","doi":"10.1145/1735935.1735940","DOIUrl":"https://doi.org/10.1145/1735935.1735940","url":null,"abstract":"To render 3D graphics there is a number of different frameworks written in Smalltalk. While most of them provide powerful facilities, many of them are outdated, abandoned, undocumented or heavyweight.\u0000 In this paper we present Lumière, a novel lightweight framework for rendering 3D graphics using OpenGL based on a stage metaphor. Lumière is implemented using the Pharo IDE. In its current state it supports basic and composite shapes to populate 3D scenes, features a camera, and a lighting model.\u0000 We illustrate the usage of Lumière with Gaucho, an environment for visual programming we are currently building.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"137 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122339143","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
We present Maispion, a tool for analysing software developer communities. The tool, developed in Smalltalk, mines mailing list and version repositories, and provides visualisations to provide insights into the ecosystem of open source software (OSS) development. We show how Maispion can analyze the history of medium to large OSS communities, by applying our tool to three well-known open source projects: Moose, Drupal and Python.
{"title":"Maispion: a tool for analysing and visualising open source software developer communities","authors":"François Stephany, T. Mens, Tudor Gîrba","doi":"10.1145/1735935.1735944","DOIUrl":"https://doi.org/10.1145/1735935.1735944","url":null,"abstract":"We present Maispion, a tool for analysing software developer communities. The tool, developed in Smalltalk, mines mailing list and version repositories, and provides visualisations to provide insights into the ecosystem of open source software (OSS) development. We show how Maispion can analyze the history of medium to large OSS communities, by applying our tool to three well-known open source projects: Moose, Drupal and Python.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"82 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126890876","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Integration of multiple languages into each other and into an existing development environment is a difficult task. As a consequence, developers often end up using only internal DSLs that strictly rely on the constraints imposed by the host language. Infrastructures do exist to mix languages, but they often do it at the price of losing the development tools of the host language. Instead of inventing a completely new infrastructure, our solution is to integrate new languages deeply into the existing host environment and reuse the infrastructure offered by it. In this paper we show why Smalltalk is the best practical choice for such a host language.
{"title":"Why Smalltalk wins the host languages shootout","authors":"L. Renggli, Tudor Gîrba","doi":"10.1145/1735935.1735954","DOIUrl":"https://doi.org/10.1145/1735935.1735954","url":null,"abstract":"Integration of multiple languages into each other and into an existing development environment is a difficult task. As a consequence, developers often end up using only internal DSLs that strictly rely on the constraints imposed by the host language. Infrastructures do exist to mix languages, but they often do it at the price of losing the development tools of the host language. Instead of inventing a completely new infrastructure, our solution is to integrate new languages deeply into the existing host environment and reuse the infrastructure offered by it. In this paper we show why Smalltalk is the best practical choice for such a host language.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131493214","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Foreign-function interfaces enable programs in a host language to interoperate with programs written in another language and vice-versa. Two languages that feature such an interface to a common language can even interoperate by means of this common intermediate language. Smalltalk and Java, for example, both offer an interface to C and can therefore interoperate through a connection of these interfaces. However, the resulting interactions will need to occur at the level of abstraction offered by the (low-level) C interfaces, although both Java and Smalltalk are object-oriented languages. In this paper, we describe how the dynamic and reflective facilities of the Smalltalk language permits us to raise the level of abstraction of these inter-language interactions to seamless message passing between objects. In addition, we introduce and explore the concept of language shifting objects where Java objects are not only represented in Smalltalk but can partially or completely migrate from Java to Smalltalk. Language-shifting effectively migrates Java methods to Smalltalk methods such that original Java objects can end up "living" in the Smalltalk environment without needing a connection to their originating Java environment.
{"title":"Language-shifting objects from Java to Smalltalk: an exploration using JavaConnect","authors":"J. Brichau, Coen De Roover","doi":"10.1145/1735935.1735956","DOIUrl":"https://doi.org/10.1145/1735935.1735956","url":null,"abstract":"Foreign-function interfaces enable programs in a host language to interoperate with programs written in another language and vice-versa. Two languages that feature such an interface to a common language can even interoperate by means of this common intermediate language. Smalltalk and Java, for example, both offer an interface to C and can therefore interoperate through a connection of these interfaces. However, the resulting interactions will need to occur at the level of abstraction offered by the (low-level) C interfaces, although both Java and Smalltalk are object-oriented languages. In this paper, we describe how the dynamic and reflective facilities of the Smalltalk language permits us to raise the level of abstraction of these inter-language interactions to seamless message passing between objects. In addition, we introduce and explore the concept of language shifting objects where Java objects are not only represented in Smalltalk but can partially or completely migrate from Java to Smalltalk. Language-shifting effectively migrates Java methods to Smalltalk methods such that original Java objects can end up \"living\" in the Smalltalk environment without needing a connection to their originating Java environment.","PeriodicalId":393791,"journal":{"name":"International Workshop on Smalltalk Technologies","volume":"40 39","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131500055","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}