Building software imposes a set of general challenges, which are complemented by those specific to the business context. The use of declarative programming as key implementation technology provides several advantages in both areas, a fact that has not gone unnoticed by companies of all sizes and domains.
In particular, the functional programming language Erlang is getting big momentum in the last years thanks to its built-in capabilities for high availability, robustness, maintainability.
This presentation shows some practical examples and discusses the role that the implementation technology (Erlang) played in their successful outcome.
2. MADS
●
Models and Applications of Distributed Systems
http://www.madsgroup.org
●
Core language: Erlang
●
Well-known results:
–
VoDKA: Video on Demand system
–
ARMISTICE: Advanced Risk Management
Information System
–
Syntheractive
–
ADVERTISE
3. MADS
●
Models and Applications of Distributed Systems
http://www.madsgroup.org
●
Core language: Erlang
●
Well-known results:
–
VoDKA: Video on Demand system
–
ARMISTICE: Advanced Risk Management
Information System
–
Syntheractive
–
ADVERTISE
collaboration
2 spin-offs
with industry
4. MADS
●
Models and Applications of Distributed Systems
http://www.madsgroup.org
●
Core language: Erlang
●
Well-known results:
–
VoDKA: Video on Demand system
–
ARMISTICE: Advanced Risk Management
Information System
–
Syntheractive
–
ADVERTISE
2 spin-offs
5. Erlang
●
●
Functional programming language
Developed by Ericsson in the mid-eighties, open
source since 1998
●
Dynamically typed, eager evaluation
●
Key features:
–
Concurrency: lightweight processes, own memory
space, asynchronous message passing
–
Distribution: several VMs on several nodes
–
High avalilability: links between processes, built-in
fault-tolerance mechanisms
33. The key: Erlang
●
Erlang features common to all these projects
–
Supervision, monitoring
●
●
Lightweight processes
Behaviours (lots of boilerplate for free!)
–
Seamless distribution
–
Nonstop code upgrade
34. The key: Erlang
●
Erlang features common to all these projects
–
Supervision, monitoring
●
●
Lightweight processes
Behaviours (lots of boilerplate for free!)
–
Seamless distribution
–
Nonstop code upgrade
–
Pattern-matching
–
List comprehensions
–
Functions as first-class citizens
35. The key: Erlang
●
Erlang features common to all these projects
–
Supervision, monitoring
●
●
Lightweight processes
Behaviours (lots of boilerplate for free!)
–
Seamless distribution
–
Nonstop code upgrade
–
Pattern-matching
–
List comprehensions
–
Functions as first-class citizens
36. MADS (today)
●
Current research: software testing
–
●
Specifically: model-based and property-based
testing
2 European research projects:
–
ProTest (http://protestproject.eu): 2007-2011
–
PROWESS (http://prowessproject.eu): 2012-2015
37. ProTest: Property-based testing
●
●
Uses declarative statements to specify
properties that the software needs to satisfy
according to its specification
Using this approach:
–
–
●
Test cases can be automatically derived from
those properties
Test cases can be automatically run and
diagnosed
PBT in Erlang:
–
QuickCheck / PropEr
38.
39. PROWESS: PBT for web services
●
Reduce time spent on testing, whilst
increasing software quality
–
●
In order to quickly launch new, or
enhancements of existing, web services and
internet applications
Provide the European software industry with
efficient and effective testing tools and
techniques for web services
–
Erlang/QuickCheck as core
tools/technologies