Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411283
Huiqing Li, S. Thompson, George Orösz, M. Tóth
{"title":"Refactoring with wrangler, updated: data and process refactorings, and integration with eclipse","authors":"Huiqing Li, S. Thompson, George Orösz, M. Tóth","doi":"10.1145/1411273.1411283","DOIUrl":"https://doi.org/10.1145/1411273.1411283","url":null,"abstract":"Wrangler is a refactoring tool for Erlang, implemented in Erlang. This paper reports the latest developments in Wrangler, which include improved user experience, the introduction of a number of data- and process-related refactorings, and also the implementation of an Eclipse plug-in which, together with Erlide, provides refactoring support for Erlang in Eclipse.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125175488","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411276
Jonas Boberg
{"title":"Early fault detection with model-based testing","authors":"Jonas Boberg","doi":"10.1145/1411273.1411276","DOIUrl":"https://doi.org/10.1145/1411273.1411276","url":null,"abstract":"Current and future trends for software include increasingly complex requirements on interaction between systems. As a result, the difficulty of system testing increases. Model-based testing is a test technique where test cases are generated from a model of the system. In this study we explore model-based testing on the system level, starting from early development. We apply model-based testing to a subsystem of a message gateway product in order to improve early fault detection. The results are compared to another subsystem that is tested with hand-crafted test cases.\u0000 Based on our experiences, we present a set of challenges and recommendations for system-level, model-based testing. Our results indicate that model-based testing, starting from early development, significantly increases the number of faults detected during system testing.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"102 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134463357","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411280
T. Schütt, F. Schintke, A. Reinefeld
{"title":"Scalaris: reliable transactional p2p key/value store","authors":"T. Schütt, F. Schintke, A. Reinefeld","doi":"10.1145/1411273.1411280","DOIUrl":"https://doi.org/10.1145/1411273.1411280","url":null,"abstract":"We present Scalaris, an Erlang implementation of a distributed key/value store. It uses, on top of a structured overlay network, replication for data availability and majority based distributed transactions for data consistency. In combination, this implements the ACID properties on a scalable structured overlay.\u0000 By directly mapping the keys to the overlay without hashing, arbitrary key-ranges can be assigned to nodes, thereby allowing a better load-balancing than would be possible with traditional DHTs. Consequently, Scalaris can be tuned for fast data access by taking, e.g. the nodes' geographic location or the regional popularity of certain keys into account. This improves Scalaris' lookup speed in datacenter or cloud computing environments.\u0000 Scalaris is implemented in Erlang. We describe the Erlang software architecture, including the transactional Java interface to access Scalaris.\u0000 Additionally, we present a generic design pattern to implement a responsive server in Erlang that serializes update operations on a common state, while concurrently performing fast asynchronous read requests on the same state.\u0000 As a proof-of-concept we implemented a simplified Wikipedia frontend and attached it to the Scalaris data store backend. Wikipedia is a challenging application. It requires - besides thousands of concurrent read requests per seconds - serialized, consistent write operations. For Wikipedia's category and backlink pages, keys must be consistently changed within transactions. We discuss how these features are implemented in Scalaris and show its performance.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128225316","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411279
Francesco Cesarini, Viviana Pappalardo, C. Santoro
{"title":"A comparative evaluation of imperative and functional implementations of the imap protocol","authors":"Francesco Cesarini, Viviana Pappalardo, C. Santoro","doi":"10.1145/1411273.1411279","DOIUrl":"https://doi.org/10.1145/1411273.1411279","url":null,"abstract":"This paper describes a comparative analysis of several implementations of the IMAP4 client-side protocol, written in Erlang, C#, Java, Python and Ruby. The aim is basically to understand whether Erlang is able to fit the requirements of such a kind of applications, and also to study some parameters to evaluate the suitability of a language for the development of certain type of programs. We analysed five different libraries, comparing their characteristics through some software metrics: number of source lines of code, memory consumption, performances (execution time) and functionality of primitives. We describe pros and cons of each library and we conclude on the suitability of Erlang as a language for the implementation of protocol- and string-intensive TCP/IP-based applications.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"80 ","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120929027","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411277
Tamás Nagy, Anikó Nagyné Víg
{"title":"Erlang testing and tools survey","authors":"Tamás Nagy, Anikó Nagyné Víg","doi":"10.1145/1411273.1411277","DOIUrl":"https://doi.org/10.1145/1411273.1411277","url":null,"abstract":"As the commercial usage of Erlang increases, so does the need for mature development and testing tools. This paper aims to evaluate the available tools with their shortcomings, strengths and commercial usability compared to common practices in other languages.\u0000 To identify the needs of Erlang developers in this area we published an online survey advertising it in various media. The results of this survey and additional research in this field is presented. Through the comparison of tools and the requirements of the developers the paper identifies paths for future development.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"118 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122542607","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411275
T. Arts, Laura M. Castro, John Hughes
{"title":"Testing Erlang data types with quviq quickcheck","authors":"T. Arts, Laura M. Castro, John Hughes","doi":"10.1145/1411273.1411275","DOIUrl":"https://doi.org/10.1145/1411273.1411275","url":null,"abstract":"When creating software, data types are the basic bricks. Most of the time a programmer will use data types defined in library modules, therefore being tested by many users over many years. But sometimes, the appropriate data type is unavailable in the libraries and has to be constructed from scratch. In this way, new basic bricks are created, and potentially used in many products in the future. It pays off to test such data types thoroughly.\u0000 This paper presents a structured methodology to follow when testing data types using Quviq QuickCheck, a tool for random testing against specifications. The validation process will be explained carefully, from the convenience of defining a model for the datatype to be tested, to a strategy for better shrinking of failing test cases, and including the benefits of working with symbolic representations.\u0000 The leading example in this paper is a data type implemented for a risk management information system, a commercial product developed in Erlang, that has been used on a daily basis for several years.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133548995","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411281
A. Scalas, G. Casu, P. Pili
{"title":"High-performance technical computing with erlang","authors":"A. Scalas, G. Casu, P. Pili","doi":"10.1145/1411273.1411281","DOIUrl":"https://doi.org/10.1145/1411273.1411281","url":null,"abstract":"High-performance Technical Computing (HPTC) is a branch of HPC (High-performance Computing) that deals with scientific applications, such as physics simulations. Due to its numerical nature, it has been traditionally based on low-level or mathematically-oriented languages (C, C++, Fortran), extended with libraries that implement remote execution and inter-process communication (like MPI and PVM).\u0000 But those libraries just provide what Erlang does out-of-the-box: networking, process distribution, concurrency, interprocess communication and fault tolerance. So, is it possible to use Erlang as a foundation for developing HPTC applications?\u0000 This paper shows our experiences in using Erlang for distributed number-crunching systems. We introduce two extensions: a simple and efficient foreign function interface (FFI), and an Erlang binding for numerical libraries. We use them as a basis for developing a simple mathematically-oriented programming language (in the style of Matlab™) compiled into Core Erlang. These tools are later used for creating a HPTC framework (based on message-passing) and an IDE for distributed applications.\u0000 The results of this research and development show that Erlang/OTP can be used as a platform for developing large and scalable numerical applications.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122322448","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411284
Konstantinos Sagonas, D. Luna
{"title":"Gradual typing of erlang programs: a wrangler experience","authors":"Konstantinos Sagonas, D. Luna","doi":"10.1145/1411273.1411284","DOIUrl":"https://doi.org/10.1145/1411273.1411284","url":null,"abstract":"Currently most Erlang programs contain no or very little type information. This sometimes makes them unreliable, hard to use, and difficult to understand and maintain. In this paper we describe our experiences from using static analysis tools to gradually add type information to a medium sized Erlang application that we did not write ourselves: the code base of Wrangler. We carefully document the approach we followed, the exact steps we took, and discuss possible difficulties that one is expected to deal with and the effort which is required in the process. We also show the type of software defects that are typically brought forward, the opportunities for code refactoring and improvement, and the expected benefits from embarking in such a project. We have chosen Wrangler for our experiment because the process is better explained on a code base which is small enough so that the interested reader can retrace its steps, yet large enough to make the experiment quite challenging and the experiences worth writing about. However, we have also done something similar on large parts of Erlang/OTP. The result can partly be seen in the source code of Erlang/OTP R12B-3.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"20 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130607358","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}
Erlang WorkshopPub Date : 2008-09-27DOI: 10.1145/1411273.1411285
L. Lövei, Csaba Hoch, Hanna Köllö, Tamás Nagy, Anikó Nagyné Víg, Dániel Horpácsi, R. Kitlei, Roland Király
{"title":"Refactoring module structure","authors":"L. Lövei, Csaba Hoch, Hanna Köllö, Tamás Nagy, Anikó Nagyné Víg, Dániel Horpácsi, R. Kitlei, Roland Király","doi":"10.1145/1411273.1411285","DOIUrl":"https://doi.org/10.1145/1411273.1411285","url":null,"abstract":"This paper focuses on restructuring software written in Erlang. In large software projects, it is a common problem that internal structural complexity can grow to an extent where maintenance becomes impossible. This situation can be avoided by careful design, building loosely coupled components with strictly defined interfaces. However, when these design decisions are not made in the right time, it becomes necessary to split an already working software into such components, without breaking its functionality. There is strong industrial demand for such transformations in refactoring legacy code.\u0000 A refactoring tool is very useful in the execution of such a restructuring. This paper shows that the semantical analysis required for refactoring is also useful for making suggestions on clustering. Existing analysis results are used to cover the whole process of module restructuring, starting with planning the new structure, and finishing by making the necessary source code transformations.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"140 ","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133719065","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}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292527
Hans Svensson, Lars-Åke Fredlund
{"title":"Programming distributed erlang applications: pitfalls and recipes","authors":"Hans Svensson, Lars-Åke Fredlund","doi":"10.1145/1292520.1292527","DOIUrl":"https://doi.org/10.1145/1292520.1292527","url":null,"abstract":"We investigate the distributed part of the Erlang programminglanguage, with an aim to develop robust distributed systems andalgorithms running on top of Erlang runtime systems. Although the stepto convert an application running on a single node to a fullydistributed (multi-node) application is deceptively simple (changingcalls to spawn so that processes are spawned on differentnodes), there are some corner cases in the Erlang language and APIwhere the introduction of distribution can cause problems. In thispaper we discuss a number of such pitfalls, where the semantics ofcommunicating processes differs significantly depending if theprocesses reside on the same node or not, we also provide someguidelines for safe programming of distributed systems.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133982334","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}