from domain-driven design to internal domain-specific languages?

25
modeling{ from :domain_driven_design to :internal_dsls? } #Phillip Calçado #http://fragmental.tw #[email protected]

Upload: phil-calcado

Post on 20-Aug-2015

4.625 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: From Domain-Driven Design to internal Domain-Specific Languages?

modeling{ from :domain_driven_design to :internal_dsls?}

#Phillip Calçado#http://fragmental.tw#[email protected]

Page 2: From Domain-Driven Design to internal Domain-Specific Languages?

Turing Complete

Page 3: From Domain-Driven Design to internal Domain-Specific Languages?
Page 4: From Domain-Driven Design to internal Domain-Specific Languages?
Page 5: From Domain-Driven Design to internal Domain-Specific Languages?
Page 6: From Domain-Driven Design to internal Domain-Specific Languages?
Page 7: From Domain-Driven Design to internal Domain-Specific Languages?
Page 8: From Domain-Driven Design to internal Domain-Specific Languages?

An User belongs to a group. He must authenticate

using a login.

class Userattr_reader :login, :group

def authenticate(login)#do stuff

endend

Dev

Business

Page 9: From Domain-Driven Design to internal Domain-Specific Languages?

class, module, def...

User, Group, Bill...

User pays Bill from his GroupApplication

DomainModel

Language

1001010100110010101010101010111010111010001000001111100000

Page 10: From Domain-Driven Design to internal Domain-Specific Languages?

SELECT u.name, g.name

FROM (SELECT p.name FROM USER u, PEOPLE p WHERE u.status=’published’ AND u.id = p.id) u,GROUP g

WHERE g.id = u.group_idANDg.type = ‘ADMIN’

Page 11: From Domain-Driven Design to internal Domain-Specific Languages?
Page 12: From Domain-Driven Design to internal Domain-Specific Languages?
Page 13: From Domain-Driven Design to internal Domain-Specific Languages?
Page 14: From Domain-Driven Design to internal Domain-Specific Languages?

class, module, def...

User, Group, Bill...

User pays Bill from his GroupApplication

DomainModel

Language

1001010100110010101010101010111010111010001000001111100000

Page 15: From Domain-Driven Design to internal Domain-Specific Languages?

User, Group, Bill...

User pays Bill from his GroupApplication

DomainLanguage

1001010100110010101010101010111010111010001000001111100000

Page 16: From Domain-Driven Design to internal Domain-Specific Languages?

An User belongs to a group. He must authenticate

using a login.

authenticate ‘phill’

Dev

Business

Page 17: From Domain-Driven Design to internal Domain-Specific Languages?

External DSLs

Page 18: From Domain-Driven Design to internal Domain-Specific Languages?

External DSLs

Page 19: From Domain-Driven Design to internal Domain-Specific Languages?

Internal DSLs

Page 20: From Domain-Driven Design to internal Domain-Specific Languages?

authenticate

loginpassword

User

namebirth_date

Person

Group1*Customer

Page 21: From Domain-Driven Design to internal Domain-Specific Languages?
Page 22: From Domain-Driven Design to internal Domain-Specific Languages?
Page 23: From Domain-Driven Design to internal Domain-Specific Languages?

['20080102', '18:23:06,026'] - (INFO "Program started")['20080102', '18:23:07,027'] - (DEBUG "Infra-check")['20080102', '18:23:08,028'] - (INFO "Checking classloaders")['20080102', '18:23:09,029'] - (WARN "Classloader not set properly")['20080102', '18:23:10,030'] - (ERROR <<TEXT Could not load the org.jboss.webservice.server.Service interceptorjava.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.webservice.server.ServiceEndpointInterceptor at org.jboss.mx.loading(LoadMgr3.java:212) at org.jboss.mx.loading(RepositoryClassLoader.java:490)

at org.jboss.mx.loading(RepositoryClassLoader.java:392) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at org.jboss.util.loading.(DelegatingClassLoader.java:89) at org.jboss.mx.loadClass(LoaderRepositoryClassLoader.java:90) at java.lang.ClassLoader.loadClass(ClassLoader.java:235)TEXT)['20080102', '18:23:09,029'] - (INFO "Program finished")

Page 24: From Domain-Driven Design to internal Domain-Specific Languages?

@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,26), :info, "Program started")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,27), :debug, "Infra-check")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,26), :info, "Checking classloaders")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,28), :warn, "Classloader not set properly" )@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,29), :error, "Could not load the org.jboss.webservice.server.Service interceptor\njava.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.webservice.server.ServiceEndpointInterceptor\n at org.jboss.mx.loading(LoadMgr3.java:212)\n at org.jboss.mx.loading(RepositoryClassLoader.java:490)\n\nat org.jboss.mx.loading(RepositoryClassLoader.java:392)\nat java.lang.ClassLoader.loadClass(ClassLoader.java:235)\nat org.jboss.util.loading.(DelegatingClassLoader.java:89)\nat org.jboss.mx.loadClass(LoaderRepositoryClassLoader.java:90)\nat java.lang.ClassLoader.loadClass(ClassLoader.java:235)")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,30), :info, "Program finished")

Page 25: From Domain-Driven Design to internal Domain-Specific Languages?

#eof