Experiencias Industriales con Programación Declarativa

42
Experiencias Industriales con Programación Declarativa Laura M. Castro [email protected] www.madsgroup.org/staff/laura

description

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.

Transcript of Experiencias Industriales con Programación Declarativa

Page 1: Experiencias Industriales con Programación Declarativa

Experiencias Industrialescon Programación Declarativa

Laura M. [email protected]

www.madsgroup.org/staff/laura

Page 2: Experiencias Industriales con Programación Declarativa

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

Page 3: Experiencias Industriales con Programación Declarativa

2 spin-offs

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

– ADVERTISEcollaborationwith industry

Page 4: Experiencias Industriales con Programación Declarativa

2 spin-offs

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

– ADVERTISE2 spin-offs

Page 5: Experiencias Industriales con Programación Declarativa

● 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

Erlang

Page 6: Experiencias Industriales con Programación Declarativa
Page 7: Experiencias Industriales con Programación Declarativa
Page 8: Experiencias Industriales con Programación Declarativa
Page 9: Experiencias Industriales con Programación Declarativa
Page 10: Experiencias Industriales con Programación Declarativa
Page 11: Experiencias Industriales con Programación Declarativa
Page 12: Experiencias Industriales con Programación Declarativa
Page 13: Experiencias Industriales con Programación Declarativa
Page 14: Experiencias Industriales con Programación Declarativa
Page 15: Experiencias Industriales con Programación Declarativa
Page 16: Experiencias Industriales con Programación Declarativa
Page 17: Experiencias Industriales con Programación Declarativa
Page 18: Experiencias Industriales con Programación Declarativa
Page 19: Experiencias Industriales con Programación Declarativa
Page 20: Experiencias Industriales con Programación Declarativa
Page 21: Experiencias Industriales con Programación Declarativa
Page 22: Experiencias Industriales con Programación Declarativa
Page 23: Experiencias Industriales con Programación Declarativa
Page 24: Experiencias Industriales con Programación Declarativa

VoDKA

Page 25: Experiencias Industriales con Programación Declarativa

VoDKATV

Page 26: Experiencias Industriales con Programación Declarativa

ARMISTICE

Page 27: Experiencias Industriales con Programación Declarativa
Page 28: Experiencias Industriales con Programación Declarativa
Page 29: Experiencias Industriales con Programación Declarativa
Page 30: Experiencias Industriales con Programación Declarativa
Page 31: Experiencias Industriales con Programación Declarativa
Page 32: Experiencias Industriales con Programación Declarativa
Page 33: Experiencias Industriales con Programación Declarativa

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

Page 34: Experiencias Industriales con Programación Declarativa

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

Page 35: Experiencias Industriales con Programación Declarativa

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

Page 36: Experiencias Industriales con Programación Declarativa

● Current research: software testing– Specifically: model-based and property-based

testing

● 2 European research projects:– ProTest (http://protest­project.eu): 2007-2011

– PROWESS (http://prowess­project.eu): 2012-2015

MADS (today)

Page 37: Experiencias Industriales con Programación Declarativa

● 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

ProTest: Property-based testing

Page 38: Experiencias Industriales con Programación Declarativa
Page 39: Experiencias Industriales con Programación Declarativa

● 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

PROWESS: PBT for web services

Page 40: Experiencias Industriales con Programación Declarativa
Page 41: Experiencias Industriales con Programación Declarativa
Page 42: Experiencias Industriales con Programación Declarativa