From Domain-Driven Design to internal Domain-Specific Languages?
Upcoming SlideShare
Loading in...5
×
 

From Domain-Driven Design to internal Domain-Specific Languages?

on

  • 6,528 views

I’ve presented at ThoughtWorks Melbourne tech forum today. Tech forums are short presentations we have 2 times a month, a nice excuse to get people around the office, enjoy free lunch and discuss ...

I’ve presented at ThoughtWorks Melbourne tech forum today. Tech forums are short presentations we have 2 times a month, a nice excuse to get people around the office, enjoy free lunch and discuss about some geeky stuff. We had a very nice talk about Internal Domain Specific Languages.

Feel free to download the slides and the script I used during the talk -without that the scripts the slides aren’t very useful. Find that at:

http://fragmental.tw/2008/02/26/internal-dsls-thoughtworks-tech-forum/

Statistics

Views

Total Views
6,528
Views on SlideShare
6,496
Embed Views
32

Actions

Likes
7
Downloads
75
Comments
0

3 Embeds 32

http://www.linkedin.com 18
https://www.linkedin.com 10
http://www.slideshare.net 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

From Domain-Driven Design to internal Domain-Specific Languages? From Domain-Driven Design to internal Domain-Specific Languages? Presentation Transcript

  • modeling{ from :domain_driven_design to :internal_dsls? } #Phillip Calçado #http://fragmental.tw #pcalcado@gmail.com
  • Turing Complete
  • Business An User belongs to a group. He must authenticate using a login. Dev class User attr_reader :login, :group def authenticate(login) #do stuff end end
  • Application User pays Bill from his Group Domain User, Group, Bill... Model Language class, module, def... 10010101001100101010101010101 11010111010001000001111100000
  • 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_id AND g.type = ‘ADMIN’
  • Application User pays Bill from his Group Domain User, Group, Bill... Model Language class, module, def... 10010101001100101010101010101 11010111010001000001111100000
  • Application User pays Bill from his Group Domain User, Group, Bill... Language 10010101001100101010101010101 11010111010001000001111100000
  • Business An User belongs to a group. He must authenticate using a login. Dev authenticate ‘phill’
  • External DSLs
  • External DSLs
  • Internal DSLs
  • Person name birth_date User Customer login * 1 Group password authenticate
  • ['20080102', '18:23:06,026'] - (INFO quot;Program startedquot;) ['20080102', '18:23:07,027'] - (DEBUG quot;Infra-checkquot;) ['20080102', '18:23:08,028'] - (INFO quot;Checking classloadersquot;) ['20080102', '18:23:09,029'] - (WARN quot;Classloader not set properlyquot;) ['20080102', '18:23:10,030'] - (ERROR <<TEXT Could not load the org.jboss.webservice.server.Service interceptor java.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 quot;Program finishedquot;)
  • @log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,26), :info, quot;Program startedquot;) @log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,27), :debug, quot;Infra-checkquot;) @log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,26), :info, quot;Checking classloadersquot;) @log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,28), :warn, quot;Classloader not set properlyquot; ) @log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,29), :error, quot;Could not load the org.jboss.webservice.server.Service interceptor njava.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.webservice.server.ServiceEndpointInterceptorn at org.jboss.mx.loading(LoadMgr3.java:212)n at org.jboss.mx.loading(RepositoryClassLoader.java:490)nnat 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)quot;) @log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,30), :info, quot;Program finishedquot;)
  • #eof