Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Programación de normativas

No description

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Programación de normativas

Programación de normativas
Una aproximación al BPM basada en DSLs embebidos
¿Programar normativas?
Normativas, procesos, procedimientos administrativos, protocolos, etc.: las
reglas del juego
definidas por una organización
El programa implementa las reglas de la normativa con el objetivo de regular las interacciones entre los distintos actores involucrados
BPM tools
Puramente funcional
La implementación de la normativa no debe estar contaminada por aspectos
no funcionales
: persistencia, web, interfaz de usuario, etc.
Completa
Si un aspecto de la normativa debe ser programado, la implementación lo contempla
Amigable
Tanto al programador, como al experto funcional
Buena, bonita y barata
Fácilmente modificable, extensible, corregible, etc.
En resumen ...
General purpose tools
Workflow & rules engines, activity monitor tools, etc.; BPM Suites
Plain Old Java/C#, Spring Integration, etc.; EAI tools
Qué
roles
desempeñan los distintos actores
Qué
declaraciones
realizan
Qué
autorizaciones
y
permisos
regulan su realización
Qué
obligaciones
contraen los actores en función del rol que desempeñan
Cómo se estructuran sus
interacciones
Quién puede
ver
qué, y a quién se le debe
notificar
qué cosas
etc.
Objetivo
Nuestra aproximación (I)
DSL - Domain specific languages
BPMN
Embebidos en lenguajes de programación funcionales
DSLs
Los lenguajes específicos de dominio permiten implementar los requisitos funcionales de una aplicación de una forma directa
Silver bullets
DSLs embebidos (EDSLs)
Implementación de DSLs mediante librerías de un lenguaje de programación de propósito general (Scala, F#, Haskell, Ruby, ...), no mediante una sintaxis visual o textual específica
Lenguajes funcionales (LF)
Scala, F#, Haskell, Ruby, Clojure, ... ofrecen la posibilidad de implementar DSLs de manera embebida; Scala, además, corre sobre la máquina virtual de Java.
Programadores funcionales
Expertos
funcionales
El proceso de desarrollo se estructura en dos grupos principales: los que se dedican a diseñar e implementar la normativa, y los que se responsabilizan de la implementación de los aspectos no-funcionales: interfaces de usuario, persistencia, servicios web, etc.
Los grupos de normativa tienen como objetivo paquetizar de forma autónoma los requisitos funcionales
sin contraer ningún compromiso extra-funcional
, de tal manera que la implementación pueda ser reutilizada en cualquier plataforma tecnológica (persistencia relacional/noSQL, servicios Web SOAP/Restful, etc.)
Requisitos (I)
Equipos funcionales
Equipos UI, Web, persistencia, etc.
PURAMENTE FUNCIONAL
Requisitos (II)
COMPLETITUD
Workflow
Organización
Comunicación
Monitorización
Contenido
Reglas
etc.
Requisitos (III)
PROGRAMMER & EXPERT FRIENDLY
Requisitos (IV)
BUENA, RÁPIDA & BARATA
Tolerante a cambios
Fácilmente programable
Asequible económicamente
Deuda técnica baja
EAI tools
BPM Suites
vs
EAI tools
Puramente funcional
BPMS
EAI
Completa
BPMS
EAI
Amigable al programador
BPMS
EAI
Amigable al experto
BPMS
EAI
BPM tools
Amigabilidad con el experto
DSLs
¿Por qué utilizar DSLs?
Legibilidad del código
Eficiencia del proceso de desarrollo
Calidad del resultado
¿Por qué utilizar DSLs embebidos?
Ecosistema habitual de librerías y herramientas
Expresividad del lenguaje host
Eliminar barreras de entrada: llegada a más programadores
Completitud
Amigabilidad
con el programador
EDSLs
EDSLs
¿Por qué los lenguajes funcionales?
Abstracciones esenciales para desacoplar requisitos funcionales de elecciones tecnológicas concretas
Además, ofrecen muchas ventajas de cara a la distribución de aplicaciones en la nube (escalabilidad horizontal)
Puramente
funcional
Nuestra aproximación (II)
Roles, contextos, permisos, declaraciones, notificaciones, etc.: conceptos comunes a múltiples normativas
Speech: un DSL genérico que proporciona el punto de partida para diseñar DSLs dirigidas a normativas específicas
Nuestra aproximación (III)
Lenguaje completamente compatible con Java y Javascript
Gran soporte de abstracciones funcionales y EDSLs
Gran ecosistema de librerías y herramientas: Spark, Akka, Play, Lift, etc., más todo lo que Java y Javascript te pueden ofrecer
Adoptado por compañias como Twitter, Foursquare, LinkedIn, ...
Uno de los lenguajes más populares en la actualidad
DSLs embebidos
Speech
Expertos en diseño de DSLs,
programación funcional y Scala
Spin-off Universidad Rey Juan Carlos (2011)
Alojada en el Parque Científico de la Universidad Carlos III (2015)
Co-financiada por un préstamo NEOTEC del CDTI (2011-2013)
http://speechlang.org
Track record
Speech apps: CIRBE, Pintxapp, Do&Follow, ...
Partners en consultoría de Scala & programación funcional
Formación en programación funcional & Scala
Organización de la comunidad Scala en Madrid
¿Cómo podemos ayudar?
Arquitectos funcionales
Expertos
funcionales
Desarrolladores funcionales
Formación
Programación funcional, Scala
Consultoría arquitectónica
Diseño DSLs normativos
Contacto
https://goo.gl/y0K6Mt
https://twitter.com/hablapps
https://github.com/hablapps
©Habla Computing
Paquetizar la normativa
De tal manera, que la implementación recoja:
Las
abstracciones funcionales
permiten desacoplar al máximo la especificación de un lenguaje de sus distintas interpretaciones mediante tecnologías Web o de persistencia, concretas
La orientación a
DSLs
garantiza la comprensión de la implementación por los expertos funcionales (no serán capaces de implementar por sí solos la normativa, en general, pero sí de entenderla)
La implementación
embebida
garantiza a los programadores poder utilizar el ecosistema de librerías y herramientas a las que están habituados
La implementación embebida también posibilita el uso de los recursos expresivos del lenguaje host en el que se embebe el DSL
¿Cómo podemos programar normativas?
Las implementaciones realizadas con motores de workflow, reglas de negocio, etc., no son fácilmente reutilizables en contextos tecnológicos arbitrarios; el acoplamiento al conjunto de herramientas y conectores de la Suite es total
La amigabilidad con el experto es su punto fuerte
La completitud es uno de los puntos más débiles: no ofrecen lenguajes de programación, sino de
configuración

Por esa falta de expresividad, y por la imposibilidad de utilizar el ecosistema de herramientas al que los programadores están habituados, la amigabilidad con el programador es muy baja
Por el contrario, el grado de completitud de las herramientas de propósito general es óptimo
La amigabilidad con el programador también es muy alta, pero no es completa: los lenguajes de programación son muy difíciles de utilizar bien; es muy difícil hacer programas de calidad con Java, C#, etc.; los grados de libertad en el diseño son enormes, y es muy fácil hacerlo mal; el nivel de abstracción que ofrecen es muy bajo
Y por ese bajo nivel de abstracción precisamente, las implementaciones realizadas con estos lenguajes son absolutamente impenetrables por los expertos funcionales (no programadores)
Con respecto a la posibilidad de realizar implementaciones puramente funcionales, la posibilidad está ahí, aunque se requiere mucha experiencia para ello
Puramente funcional
Completa
Amigable al programador
Amigable al experto
Puramente funcional
Completa
Amigable al programador
Amigable al experto
¿Por qué
Speech
?
Facilita el diseño del DSL específico para una normativa concreta
Un DSL genérico que proporcione una implementación de calidad de los conceptos comunes a toda normativa y proceso es una ayuda clave
Bueno, rápido y barato
Programación de la normativa CIRBE, implementación de conectores, interfaces de usuario, etc.
Líneas de código:
+
Tiempo de desarrollo:
Fiabilidad:
> 525 miembros, 16 meetups
SCALA PROGRAMMING @ MADRID
(2013-)
Organizadores y patrocinadores del grupo
CIRBE- Central de Información de Riesgos de Banco de España

Las entidades financieras deben comunicar al Banco de España los riesgos (préstamos, avales, etc.) que contraen con sus clientes
La normativa CIRBE regula cómo deben interactuar los distintos actores (entidades declarantes y supervisor) en materia de declaración de riesgos: procesos mensuales, protocolos de resolución de conflictos, requerimientos, módulos de datos, etc.
La normativa se encuentra publicada en el BOE y distintas circulares del BdE
http://www.meetup.com/Scala-Programming-Madrid/
Programación de la normativa interna de BNP Paribas Security Services en materia de declaración de riesgos
CIRBE (2013-)
70%
versus
50%
100%
Tiempo de mantenimiento:
75%
Auditores
Operadores
Sistemas
Información
RESPONSABLE
Normativa
interna sobre
declaración
de riesgos
Cada entidad gestiona el proceso de declaraciones de riesgos de distinta forma, por lo que además de la normativa CIRBE común a todas las entidades es posible distinguir una normativa interna
Esta normativa interna identifica actores adicionales a los que la aplicación tiene que dar soporte específico: operadores, responsables, auditores, intervinientes, sistemas de información de la entidad, etc.
EJEMPLO (II)
EJEMPLO (I)
CIRBE
Full transcript