SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
A MOP Based DSL for Testing Java Programs using OCL,[object Object],Tony Clark,[object Object],http://itcentre.tvu.ac.uk/~clark/,[object Object],Centre for Model Driven Software Engineering,[object Object],School of Computing,[object Object],Thames Valley University,[object Object],London, UK,[object Object]
context SalesSystem::placeOrder(name:String,amount:int),[object Object],  pre: accountsSystem.accounts->exists(a | a.cid = name),[object Object],  post: accountsSystem.getAccount(name).items->exists(item | ,[object Object],item.amount = amount) and,[object Object],accountsSystem.getAccount(name).items->size = ,[object Object],          self@pre.accountsSystem.getAccount(name).items->size + 1,[object Object],2,[object Object],OCL 09,[object Object]
Aim,[object Object],To extend XMF with a language feature for testing Java implementations.,[object Object],To use OCL as the constraint language.,[object Object],Problem: how to deal with all the possible implementation strategies for the model?,[object Object],OCL 09,[object Object],3,[object Object]
A Little OCL-based Language,[object Object],@MSpec <name> [<method-name>] (<args>),[object Object],  pre <pre-condition>,[object Object],  do <body>,[object Object],  post <post-condition>,[object Object],end,[object Object],@Test <name>,[object Object],  <spec>*,[object Object],end,[object Object],OCL 09,[object Object],4,[object Object]
Example Test Scenario,[object Object],context SalesSystem,[object Object],@MSpecsuccessfulPlaceOrder[placeOrder](name,amount),[object Object],  pre accountsSystem.accounts->exists(a | a.cid = name),[object Object],  do run,[object Object],  post ,[object Object],accountsSystem.getAccount(name).items->exists(item |,[object Object],item.amount = amount) and,[object Object],accountsSystem.getAccount(name).items->size =,[object Object],preSelf.accountsSystem.getAccount(name).items->size + 1,[object Object],end,[object Object],@Test Test0,[object Object],successfulContact("fred"),[object Object],successfulRegister("fred"),[object Object],successfulPlaceOrder("fred",100),[object Object],end,[object Object],OCL 09,[object Object],5,[object Object]
Generate Reports,[object Object],OCL 09,[object Object],6,[object Object]
XMF and OCL,[object Object],@Class Account,[object Object],  @Attribute cid : String end,[object Object],  @Constructor(cid) end,[object Object],end,[object Object],@Class AccountsSystem,[object Object],  @Attribute accounts : Set(Account) (+) end,[object Object],end  ,[object Object],@Class SalesSystem,[object Object],  @Attribute accountsSystem : AccountsSystem = AccountsSystem() end,[object Object],  @Operation addAccount(cid:String)    ,[object Object],accountsSystem.addToAccounts(Account(cid)) end,[object Object],  @Operation checkNameExists(name:String):Boolean,[object Object],accountsSystem.accounts->exists(a | a.cid = name)  ,[object Object],  end,[object Object],end,[object Object],7,[object Object],OCL 09,[object Object]
Java Implementation,[object Object],public class Account {,[object Object],  public String cid;,[object Object],  ...,[object Object],},[object Object],public class AccountsSystem {,[object Object],  public Vector<Account> accounts = new Vector<Account>();,[object Object],  ...,[object Object],},[object Object],public class SalesSystem {,[object Object],  public AccountsSystemaccountsSystem,[object Object],    = new AccountsSystem();,[object Object],  public ContactsDatabasecontactsDatabase,[object Object],    = new ContactsDatabase();,[object Object],  public void addAccount(String cid) {,[object Object],accountsSystem.addToAccounts(new Account(cid));,[object Object],  },[object Object],  ...,[object Object],},[object Object],OCL 09,[object Object],8,[object Object]
Meta Classes in XMF,[object Object],OCL 09,[object Object],9,[object Object]
Foreign Objects,[object Object],OCL 09,[object Object],10,[object Object]
Java Classes in XMF,[object Object],OCL 09,[object Object],11,[object Object]
A Metaclass: JavaClass,[object Object],@Class JavaClass extends Class,[object Object],  @Attribute descriptor : JavaDescriptor (?,!) end,[object Object],  @Operation addDescriptor(d:JavaDescriptor),[object Object],xmf.foreignTypeMapping().put(d.type(),self);,[object Object],xmf.foreignMOPMapping().put(d.type(),d.mopName());,[object Object],self.setDescriptor(d),[object Object],  end,[object Object],  @Operation invoke(target,args),[object Object],    let class = xmf.javaClass(descriptor.type(),descriptor.paths()),[object Object],    in class.invoke(target,args),[object Object],    end,[object Object],  end,[object Object],  ...,[object Object],end,[object Object],OCL 09,[object Object],12,[object Object]
A Java MOP,[object Object],public class ForeignObjectMOP {,[object Object],  public void dot(Machine m, intobj, int name) { ,[object Object],    Object o = m.getForeignObject(obj);,[object Object],    Class<?> c = o.getClass();,[object Object],    Field f = c.getField(m.getString(name));,[object Object],m.pushStack(f.get(o));,[object Object],  },[object Object],  public void send(Machine m, int o, int m, intargs) {,[object Object],    // Send message and push return value...,[object Object],  },[object Object],  public booleanhasSlot(Machine m, int o, int name) {,[object Object],    // Return true when object has named slot,[object Object],  },[object Object],  public void set(Machine m, int o, int name, int value) {,[object Object],    // Set named slot...,[object Object],  },[object Object],},[object Object],OCL 09,[object Object],13,[object Object]
XMF access to Java,[object Object],@Class Account metaclassJavaClass,[object Object],JavaDescriptor("Account","",Seq{"@/bin"}),[object Object],end,[object Object],@Class AccountsSystemmetaclassJavaClass,[object Object],JavaDescriptor("AccountsSystem","",Seq{"@/bin"}),[object Object],end,[object Object],@Class SalesSystemmetaclassJavaClass,[object Object],JavaDescriptor("SalesSystem","",Seq{"@/bin"}),[object Object],  @Operation checkNameExists(name:String):Boolean,[object Object],accountsSystem.accounts->exists(a | a.cid = name)  ,[object Object],  end,[object Object],end,[object Object],OCL 09,[object Object],14,[object Object]
Making the Default MOP Explicit,[object Object],@Class Account metaclassJavaClass,[object Object],JavaDescriptor("Account",“foreignobj.ForeignObjectMOP",Seq{"@/bin"}),[object Object],end,[object Object],context Root,[object Object],@Class AccountsSystemmetaclassJavaClass,[object Object],JavaDescriptor("AccountsSystem",“foreignobj.ForeignObjectMOP",Seq{"@/bin"}),[object Object],end,[object Object],context Root,[object Object],@Class SalesSystemmetaclassJavaClass,[object Object],JavaDescriptor("SalesSystem","foreignobj.ForeignObjectMOP",Seq{"@/bin"}),[object Object],  @Operation checkNameExists(name:String):Boolean,[object Object],accountsSystem.accounts->exists(a | a.cid = name)  ,[object Object],  end,[object Object],end,[object Object],OCL 09,[object Object],15,[object Object]
A Different Implementation: EMF,[object Object],OCL 09,[object Object],16,[object Object]
An EMF MOP,[object Object],OCL 09,[object Object],17,[object Object]
A Metaclass: EMFClass,[object Object],@Class EMFClass extends JavaClass@Operation invoke(target,args)     let factory = descriptor.getFactory() then       package = descriptor.getPackage() then       class = package.send("get" + name,Seq{}) then       object = factory.create(class),[object Object],     in // Set fields from args using constructor...,[object Object],        object,[object Object],     end,[object Object],   end,[object Object],   ... ,[object Object],end,[object Object],OCL 09,[object Object],18,[object Object]
EMFMop,[object Object],public class EObjectMOP extends foreignobj.ForeignObjectMOP {,[object Object],  public void dot(Machine machine, int object, int name) {,[object Object],EObjecteobject = (Eobject)machine.getForeignObject(object);,[object Object],EClasseclass = eobject.eClass();,[object Object],    String string = machine.getString(name);,[object Object],EStructuralFeature feature = eclass.getEStructuralFeature(string);,[object Object],machine.pushStack(eobject.eGet(feature));,[object Object],  },[object Object],  public booleanhasSlot(Machine machine, intobj, int name) {,[object Object],    ...,[object Object],  },[object Object],  public void set(Machine machine, intobj, int name, int value) {,[object Object],    ...,[object Object],  },[object Object],},[object Object],OCL 09,[object Object],19,[object Object]
XMF access to EMF,[object Object],@Class Account metaclassEMFClass,[object Object],EMFDescriptor("sales.impl.AccountImpl","sales","sales","test.EObjectMOP"),[object Object],  @Constructor(cid) end,[object Object],end,[object Object],@Class AccountsSystemmetaclassEMFClass,[object Object],EMFDescriptor("sales.impl.AccountsSystemImpl","sales","sales","test.EObjectMOP"),[object Object],end,[object Object],@Class SalesSystemmetaclassEMFClass,[object Object],EMFDescriptor("sales.impl.SalesSystemImpl","sales","sales","test.EObjectMOP"),[object Object],  @Operation init(),[object Object],self.accountsSystem := AccountsSystem(),[object Object],  end,[object Object],  @Operation addAccount(cid:String),[object Object],accountsSystem.getAccounts().add(Account(cid)),[object Object],  end,[object Object],  @Operation checkNameExists(name:String):Boolean,[object Object],accountsSystem.accounts->exists(a | a.cid = name)  ,[object Object],  end,[object Object],end,[object Object],OCL 09,[object Object],20,[object Object]
Implementing the DSL,[object Object],21,[object Object],OCL 09,[object Object]
Example,[object Object],@MSpecsuccessfulPlaceOrder[placeOrder](name,amount),[object Object],  pre accountsSystem.accounts->exists(a | a.cid = name),[object Object],  do run,[object Object],  post accountsSystem.getAccount(name).items->exists(...) and ... ,[object Object],end,[object Object],@Operation successfulPlaceOrder(.args),[object Object], let name = args->at(0),[object Object],     amount = args->at(1),[object Object], in let preSelf = self.deepCopy(),[object Object],    in if accountsSystem.accounts->exists(a | a.cid = name),[object Object],       then let result = self.send(“placeOrder”,Seq{name,amount}),[object Object],            in if accountsSystem.getAccount(name).items->exists(...) and ...,[object Object],               then CallSucceeds(result,”placeOrder”,args),[object Object],               else PostFails(“placeOrder”,args),[object Object],               end,[object Object],            end,[object Object],       else PreFails(“placeOrder”,args),[object Object],       end,[object Object],     end,[object Object], end,[object Object],end,[object Object],OCL 09,[object Object],22,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

friends functionToshu
friends functionToshufriends functionToshu
friends functionToshuSidd Singh
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17LogeekNightUkraine
 
Operator overloading2
Operator overloading2Operator overloading2
Operator overloading2zindadili
 
C++ 11 Features
C++ 11 FeaturesC++ 11 Features
C++ 11 FeaturesJan Rüegg
 
Lambda выражения и Java 8
Lambda выражения и Java 8Lambda выражения и Java 8
Lambda выражения и Java 8Alex Tumanoff
 
Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Geeks Anonymes
 
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...Frank Nielsen
 
Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Sumant Tambe
 
Lec 42.43 - virtual.functions
Lec 42.43 - virtual.functionsLec 42.43 - virtual.functions
Lec 42.43 - virtual.functionsPrincess Sam
 
Java_practical_handbook
Java_practical_handbookJava_practical_handbook
Java_practical_handbookManusha Dilan
 
Python Part 1
Python Part 1Python Part 1
Python Part 1Sunil OS
 
C++11 concurrency
C++11 concurrencyC++11 concurrency
C++11 concurrencyxu liwei
 
C++aptitude questions and answers
C++aptitude questions and answersC++aptitude questions and answers
C++aptitude questions and answerssheibansari
 
classes & objects in cpp overview
classes & objects in cpp overviewclasses & objects in cpp overview
classes & objects in cpp overviewgourav kottawar
 

Was ist angesagt? (20)

Compile time polymorphism
Compile time polymorphismCompile time polymorphism
Compile time polymorphism
 
C Basics
C BasicsC Basics
C Basics
 
Summary of C++17 features
Summary of C++17 featuresSummary of C++17 features
Summary of C++17 features
 
friends functionToshu
friends functionToshufriends functionToshu
friends functionToshu
 
E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
 
Operator overloading2
Operator overloading2Operator overloading2
Operator overloading2
 
C++ 11 Features
C++ 11 FeaturesC++ 11 Features
C++ 11 Features
 
Lambda выражения и Java 8
Lambda выражения и Java 8Lambda выражения и Java 8
Lambda выражения и Java 8
 
Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)
 
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
 
Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)
 
Lec 42.43 - virtual.functions
Lec 42.43 - virtual.functionsLec 42.43 - virtual.functions
Lec 42.43 - virtual.functions
 
Java_practical_handbook
Java_practical_handbookJava_practical_handbook
Java_practical_handbook
 
Python Part 1
Python Part 1Python Part 1
Python Part 1
 
C++11 concurrency
C++11 concurrencyC++11 concurrency
C++11 concurrency
 
C++ via C#
C++ via C#C++ via C#
C++ via C#
 
C++aptitude questions and answers
C++aptitude questions and answersC++aptitude questions and answers
C++aptitude questions and answers
 
Java practical
Java practicalJava practical
Java practical
 
classes & objects in cpp overview
classes & objects in cpp overviewclasses & objects in cpp overview
classes & objects in cpp overview
 

Andere mochten auch

Model Slicing
Model SlicingModel Slicing
Model SlicingClarkTony
 
Mcms and ids sig
Mcms and ids sigMcms and ids sig
Mcms and ids sigClarkTony
 
Overview of the interim budget 2014 15
Overview of the interim budget 2014 15Overview of the interim budget 2014 15
Overview of the interim budget 2014 15Jiten Sharma
 
Reverse engineering and theory building v3
Reverse engineering and theory building v3Reverse engineering and theory building v3
Reverse engineering and theory building v3ClarkTony
 
Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享謝 宗穎
 
Sails.js Model / ORM introduce
Sails.js Model / ORM introduceSails.js Model / ORM introduce
Sails.js Model / ORM introduce謝 宗穎
 
Demand forecasting
Demand forecastingDemand forecasting
Demand forecastingJiten Sharma
 

Andere mochten auch (9)

Model Slicing
Model SlicingModel Slicing
Model Slicing
 
Mcms and ids sig
Mcms and ids sigMcms and ids sig
Mcms and ids sig
 
Overview of the interim budget 2014 15
Overview of the interim budget 2014 15Overview of the interim budget 2014 15
Overview of the interim budget 2014 15
 
Reverse engineering and theory building v3
Reverse engineering and theory building v3Reverse engineering and theory building v3
Reverse engineering and theory building v3
 
Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享
 
Demand & Supply
Demand & SupplyDemand & Supply
Demand & Supply
 
Sails.js Model / ORM introduce
Sails.js Model / ORM introduceSails.js Model / ORM introduce
Sails.js Model / ORM introduce
 
Lays Vs Bingo
Lays Vs BingoLays Vs Bingo
Lays Vs Bingo
 
Demand forecasting
Demand forecastingDemand forecasting
Demand forecasting
 

Ähnlich wie Ocl 09

Apache Commons - Don\'t re-invent the wheel
Apache Commons - Don\'t re-invent the wheelApache Commons - Don\'t re-invent the wheel
Apache Commons - Don\'t re-invent the wheeltcurdt
 
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesChoose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesCHOOSE
 
Deuce STM - CMP'09
Deuce STM - CMP'09Deuce STM - CMP'09
Deuce STM - CMP'09Guy Korland
 
NetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience ReportNetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience ReportAnton Arhipov
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design PatternsZohar Arad
 
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...Akaks
 
Eclipse Modeling Framework
Eclipse Modeling FrameworkEclipse Modeling Framework
Eclipse Modeling FrameworkAjay K
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 
Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016
Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016
Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016STX Next
 
Kotlin Developer Starter in Android projects
Kotlin Developer Starter in Android projectsKotlin Developer Starter in Android projects
Kotlin Developer Starter in Android projectsBartosz Kosarzycki
 
EclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling FrameworkEclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling FrameworkDave Steinberg
 
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...Tudor Dragan
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionHans Höchtl
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)Pavlo Baron
 
Introduction To Scala
Introduction To ScalaIntroduction To Scala
Introduction To ScalaPeter Maas
 

Ähnlich wie Ocl 09 (20)

Apache Commons - Don\'t re-invent the wheel
Apache Commons - Don\'t re-invent the wheelApache Commons - Don\'t re-invent the wheel
Apache Commons - Don\'t re-invent the wheel
 
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesChoose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
 
Deuce STM - CMP'09
Deuce STM - CMP'09Deuce STM - CMP'09
Deuce STM - CMP'09
 
NetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience ReportNetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience Report
 
Wien15 java8
Wien15 java8Wien15 java8
Wien15 java8
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
 
Eclipse Modeling Framework
Eclipse Modeling FrameworkEclipse Modeling Framework
Eclipse Modeling Framework
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
JavaScript Core
JavaScript CoreJavaScript Core
JavaScript Core
 
Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016
Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016
Kotlin Developer Starter in Android - STX Next Lightning Talks - Feb 12, 2016
 
Kotlin Developer Starter in Android projects
Kotlin Developer Starter in Android projectsKotlin Developer Starter in Android projects
Kotlin Developer Starter in Android projects
 
EclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling FrameworkEclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
 
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
 
TechTalk - Dotnet
TechTalk - DotnetTechTalk - Dotnet
TechTalk - Dotnet
 
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
 
Treinamento Qt básico - aula II
Treinamento Qt básico - aula IITreinamento Qt básico - aula II
Treinamento Qt básico - aula II
 
Introduction To Scala
Introduction To ScalaIntroduction To Scala
Introduction To Scala
 

Mehr von ClarkTony

The Uncertain Enterprise
The Uncertain EnterpriseThe Uncertain Enterprise
The Uncertain EnterpriseClarkTony
 
Actors for Behavioural Simulation
Actors for Behavioural SimulationActors for Behavioural Simulation
Actors for Behavioural SimulationClarkTony
 
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...ClarkTony
 
LEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and AnalysisLEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and AnalysisClarkTony
 
A Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven ArchitectureA Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven ArchitectureClarkTony
 
Context Aware Reactive Applications
Context Aware Reactive ApplicationsContext Aware Reactive Applications
Context Aware Reactive ApplicationsClarkTony
 
Patterns 200711
Patterns 200711Patterns 200711
Patterns 200711ClarkTony
 
Kings 120711
Kings 120711Kings 120711
Kings 120711ClarkTony
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testingClarkTony
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testingClarkTony
 
Kiss at oopsla 09
Kiss at oopsla 09Kiss at oopsla 09
Kiss at oopsla 09ClarkTony
 
Onward presentation.en
Onward presentation.enOnward presentation.en
Onward presentation.enClarkTony
 
Formalizing homogeneous language embeddings
Formalizing homogeneous language embeddingsFormalizing homogeneous language embeddings
Formalizing homogeneous language embeddingsClarkTony
 
Filmstrip testing
Filmstrip testingFilmstrip testing
Filmstrip testingClarkTony
 
Dsm as theory building
Dsm as theory buildingDsm as theory building
Dsm as theory buildingClarkTony
 
Dsl overview
Dsl overviewDsl overview
Dsl overviewClarkTony
 
Dsl tutorial
Dsl tutorialDsl tutorial
Dsl tutorialClarkTony
 
Code gen 09 kiss results
Code gen 09   kiss resultsCode gen 09   kiss results
Code gen 09 kiss resultsClarkTony
 

Mehr von ClarkTony (20)

The Uncertain Enterprise
The Uncertain EnterpriseThe Uncertain Enterprise
The Uncertain Enterprise
 
Actors for Behavioural Simulation
Actors for Behavioural SimulationActors for Behavioural Simulation
Actors for Behavioural Simulation
 
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
 
LEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and AnalysisLEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and Analysis
 
A Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven ArchitectureA Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven Architecture
 
Context Aware Reactive Applications
Context Aware Reactive ApplicationsContext Aware Reactive Applications
Context Aware Reactive Applications
 
Patterns 200711
Patterns 200711Patterns 200711
Patterns 200711
 
Kings 120711
Kings 120711Kings 120711
Kings 120711
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testing
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testing
 
Kiss at oopsla 09
Kiss at oopsla 09Kiss at oopsla 09
Kiss at oopsla 09
 
Scam 08
Scam 08Scam 08
Scam 08
 
Onward presentation.en
Onward presentation.enOnward presentation.en
Onward presentation.en
 
Hcse pres
Hcse presHcse pres
Hcse pres
 
Formalizing homogeneous language embeddings
Formalizing homogeneous language embeddingsFormalizing homogeneous language embeddings
Formalizing homogeneous language embeddings
 
Filmstrip testing
Filmstrip testingFilmstrip testing
Filmstrip testing
 
Dsm as theory building
Dsm as theory buildingDsm as theory building
Dsm as theory building
 
Dsl overview
Dsl overviewDsl overview
Dsl overview
 
Dsl tutorial
Dsl tutorialDsl tutorial
Dsl tutorial
 
Code gen 09 kiss results
Code gen 09   kiss resultsCode gen 09   kiss results
Code gen 09 kiss results
 

Kürzlich hochgeladen

Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 

Kürzlich hochgeladen (20)

Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 

Ocl 09

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.