Erlang WorkshopPub Date : 2010-09-30DOI: 10.1145/1863509.1863522
Tino Breddin
{"title":"Using Erlang to implement a autonomous build and distribution system for software projects","authors":"Tino Breddin","doi":"10.1145/1863509.1863522","DOIUrl":"https://doi.org/10.1145/1863509.1863522","url":null,"abstract":"The uptake of Open-Source Software (OSS) has led to new business models as well as software development practices. OSS projects are constrained by their limited resources both in time and manpower. In order to be successful such projects have to leverage tools to automate as many tasks as possible while providing usable results. One such set of tools used in software development are continuous build systems, which help teams to build and test their software whenever a change is published without manual interaction. The available systems have proven to be essential for any kind software project but are lacking real innovation.\u0000 This paper presents how Erlang, especially its distributed operation, fault-tolerance and lightweight processes, has been utilized to develop a next-generation continuous build system. This system executes many long-running tasks in parallel for any given change of the monitored software project, providing developers not only with the latest state of the project but also offers customizable software packaging and patch distribution.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125911143","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 : 2009-09-05DOI: 10.1145/1596600.1596606
Sten Grüner, Thomas Lorentsen
{"title":"Teaching Erlang using robotics and player/stage","authors":"Sten Grüner, Thomas Lorentsen","doi":"10.1145/1596600.1596606","DOIUrl":"https://doi.org/10.1145/1596600.1596606","url":null,"abstract":"Computer science is often associated with dull code debugging instead of solving interesting problems. This fact causes a decrease in the number of computer science students which can be stopped by giving lectures on an interesting context like robotics. In this paper we introduce an easily deployable and extensible library which allows programming a popular robot simulator in Erlang. New possibilities for visual, simple and attractive teaching of functional languages are open.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"68 10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130782997","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 : 2009-09-05DOI: 10.1145/1596600.1596611
Nicolae Paladi, T. Arts
{"title":"Model based testing of data constraints: testing the business logic of a Mnesia application with Quviq QuickCheck","authors":"Nicolae Paladi, T. Arts","doi":"10.1145/1596600.1596611","DOIUrl":"https://doi.org/10.1145/1596600.1596611","url":null,"abstract":"Correct implementation of data constraints, such as referential integrity constraints and business rules is an essential precondition for data consistency. Though most modern commercial DBMSs support data constraints, the latter are often implemented in the business logic of the applications. This is especially true for non relational DBMS like Mnesia, which do not provide constraints enforcement mechanisms. This case study examines a database application which uses Mnesia as data storage in order to determine, express and test data constraints with Quviq QuickCheck, adopting a model-based testing approach. Some of the important stages of the study described in the article are: reverse engineering of the database, analysis of the obtained database structure diagrams and extraction of data constraint, validation of constraints, formulating the test specifications and finally running the generated test suits. As a result of running the test suits randomly generated by QuickCheck, we have detected several violations of the identified and validated business rules. We have found that the applied methodology is suitable for applications using non relational, unnormalized databases. It is important to note the methodology applied within the case study is not bound to a specific application or DBMS, and can be applied to other database applications.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121485478","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 : 2009-09-05DOI: 10.1145/1596600.1596608
G. Fehér, A. G. Békés
{"title":"ECT: an object-oriented extension to Erlang","authors":"G. Fehér, A. G. Békés","doi":"10.1145/1596600.1596608","DOIUrl":"https://doi.org/10.1145/1596600.1596608","url":null,"abstract":"To structure the code of an Erlang program, one can split it into modules. There are also available some basic data structures: lists, records and tuples. However, there are no fully functional classes that encapsulate data and functionality, and can be extended with inheritance. We think these features could promote code reuse in certain cases, therefore we decided to extend the language with object-oriented capabilities. A strong evidence of the usability of this is the fact that part of the program itself was rewritten using our newly created language elements, and the new version was simpler and cleaner than the original Erlang one. Our main goals were to preserve the single-assignment nature of Erlang and to keep method-call and value-access times constant. It was also a priority to make the extension easily installable, to reach as much developers as possible. For this, we avoided changes in the Erlang compiler itself. Instead, we created the extension as a parse transformation1 . In our implementation a class is a module that contain the methods, and a record type whose instances are the object instances. Both methods and fields can be inherited. We also examined the currently available other object-oriented extensions for Erlang, and compared them with ours. Our implementation has strong advantages, but it also lacks some features. Compatibility with records and speed are the main advantages. In this paper - among describing and comparing our extension - we also show the possible ways of adding the missing features.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127507979","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 : 2009-09-05DOI: 10.1145/1596600.1596607
Hugo Cortés, Mónica García, Jorge Hernández, M. Hernández-Gutiérrez, Esperanza Pérez-Cordoba, Erik Ramos
{"title":"Development of a distributed system applied to teaching and learning","authors":"Hugo Cortés, Mónica García, Jorge Hernández, M. Hernández-Gutiérrez, Esperanza Pérez-Cordoba, Erik Ramos","doi":"10.1145/1596600.1596607","DOIUrl":"https://doi.org/10.1145/1596600.1596607","url":null,"abstract":"The emergence of networked computers has originated new technologies for teaching and learning, particularly, the technology of learning management systems. We have applied Erlang to deal with the concurrent part of a distributed system to support teaching and learning tasks. We have also employed declarative programming together with some formal tools to elaborate the specification and the conceptual model of the system and some extreme programming techniques to deal with some issues of software development. We show how Erlang supports the transition from the specification to the implementation, and the whole concurrent and computational process of our distributed system.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"39 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131734632","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 : 2009-09-05DOI: 10.1145/1596600.1596612
J. París, T. Arts
{"title":"Automatic testing of TCP/IP implementations using QuickCheck","authors":"J. París, T. Arts","doi":"10.1145/1596600.1596612","DOIUrl":"https://doi.org/10.1145/1596600.1596612","url":null,"abstract":"We describe how to use model based testing for testing a network stack. We present a framework that together with the property based testing tool QuickCheck can be used to test the TCP layer of the Internet protocol stack. TCP is a rather difficult protocol to test, since it hides a lot of operations for the user that communicates to the stack via a socket interface. Internally, a lot happens and by only controlling the interface, full testing is not possible. This is typical for more complex protocols and we therefore claim that the presented method can easily be extended to other cases. We present an automatic test case generator for TCP using Quickcheck. This tester generates packet flows to test specific features of a TCP stack. It then controls the stack under test to run the test by using the interface provided by it (for example, the socket interface), and by sending replies to the packets created by the stack under test. We validated the test framework on the standard Linux TCP/IP implementation.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115840465","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 : 2009-09-05DOI: 10.1145/1596600.1596603
L. Lövei
{"title":"Automated module interface upgrade","authors":"L. Lövei","doi":"10.1145/1596600.1596603","DOIUrl":"https://doi.org/10.1145/1596600.1596603","url":null,"abstract":"During the lifetime of a software product the interface of some used library modules might change in such a way that the new interface is no longer compatible with the old one. This paper proposes a generic interface migration schema to automatically transform the software in the case of such an incompatible change. The solution is based on refactoring techniques and data flow analysis, and makes use of a formal description of the differences between the old and the new interfaces. The approach is illustrated with a real-life example.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"114 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116482084","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 : 2009-09-05DOI: 10.1145/1596600.1596610
Hans Svensson
{"title":"Implementing an LTL-to-Büchi translator in Erlang: a protest experience report","authors":"Hans Svensson","doi":"10.1145/1596600.1596610","DOIUrl":"https://doi.org/10.1145/1596600.1596610","url":null,"abstract":"In order to provide a nice user experience in McErlang, a model checker for Erlang programs, we needed an LTL-to-Büchi translator. This paper reports on our experiences implementing a translator in Erlang using well known algorithms described in literature. We followed a property driven development schema, where QuickCheck properties were formulated before writing the implementation. We successfully implement an LTL-to-Büchi translator, where the end result performs on par (or better) than two well known reference implementations.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125598321","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 : 2009-09-05DOI: 10.1145/1596600.1596613
Clara Benac Earle, Lars-Åke Fredlund
{"title":"Recent improvements to the McErlang model checker","authors":"Clara Benac Earle, Lars-Åke Fredlund","doi":"10.1145/1596600.1596613","DOIUrl":"https://doi.org/10.1145/1596600.1596613","url":null,"abstract":"In this paper we describe a number of recent improvements to the McErlang model checker, including a new source to source translation to enable more Erlang programs to work under McErlang, a methodology for writing properties that can be verified by McErlang, and a combination of simulation and model checking. The latter two features are illustrated by means of the messenger example found in the documentation of the Erlang/OTP distribution.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129523244","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 : 2009-09-05DOI: 10.1145/1596600.1596602
Thanassis Avgerinos, Konstantinos Sagonas
{"title":"Cleaning up Erlang code is a dirty job but somebody's gotta do it","authors":"Thanassis Avgerinos, Konstantinos Sagonas","doi":"10.1145/1596600.1596602","DOIUrl":"https://doi.org/10.1145/1596600.1596602","url":null,"abstract":"This paper describes opportunities for automatically modernizing Erlang applications, cleaning them up, eliminating certain bad smells from their code and occasionally also improving their performance. In addition, we present concrete examples of code improvements and our experiences from using a software tool with these capabilities, tidier, on Erlang code bases of significant size.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"21 4","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120910482","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}