SlideShare una empresa de Scribd logo
1 de 135
Descargar para leer sin conexión
Markus	Völter	
voelter@acm.org	
www.voelter.de	
@markusvoelter	
Domain	Requirements		
Languages	
How	
shape	
Language	Design	Experience	from		
10	Years	of	Building	DSLs
Health	&	Medical	
AutomoFve	
Aerospace	
RoboFcs	
Finance	
Embedded	
Government	
DOMAINS	 SoNware	Engineering	
Requirements	Engineering	
SpecificaFon	and	VerificaFon	
ImplementaFon	and	Test	
Mixed	NotaFons	and	End	User	Programming	
Informal	->	Semiformal	->	Formal	
Languages	+	VerificaFon	
OptmizaFons,	Performance	and	Concurrency	
Fundamentals:	Editors,	Type	Systems,	Trafos	
User-Friendly	IDEs,	Tools	
Safety	and	Security	
Architecture	
Science	
Methodology	
Language	Engineering
What	is	a		
Language	
1	
How		
Domain		
Requirements	
Shape	
Languages
Metamodel	for	
Business	Logic	
Clearly	defined	data	structure	to	express	all	
business-relevant	structures,	behaviors	and		
non-funcFonal	concerns.
Metamodel	for	
Business	Logic	
{
Data	Structures	
Behavioral	Rules	
Expressions	
ValidaFons	
Special	Types	(eg.	temporal)	
...
Metamodel	for	
Business	Logic	
SemanFcs	
Clearly	defined	data	structure	to	express	all	
business-relevant	structures,	behaviors	and		
non-funcFonal	concerns.	
Well-defined	meaning	of	this	data	structure
Metamodel	for	
Business	Logic	
SemanFcs	
Clearly	defined	data	structure	to	express	all	
business-relevant	structures,	behaviors	and		
non-funcFonal	concerns.	
		Well-defined	meaning			of	this	data	structure	
IDE	Support	is	possible	
EvoluFon	is	possible	
Portability	is	possible
Metamodel	for	
Business	Logic	
SemanFcs	
Clearly	defined	data	structure	to	express	all	
business-relevant	structures,	behaviors	and		
non-funcFonal	concerns.	
		Well-defined	meaning			of	this	data	structure	
IDE	Support	is	possible	
EvoluFon	is	possible	
Portability	is	possible	
Type	Checking	
Solver-IntegraFon	
Model	Checking	
Contracts
Tech	Infrastructure	
Metamodel	for	
Business	Logic	
SemanFcs	
Clearly	defined	data	structure	to	express	all	
business-relevant	structures,	behaviors	and		
non-funcFonal	concerns.	
Well-defined	meaning	of	this	data	structure	
ExecuFon	
Engine	
Technical	Pla_orm	for	correct,		efficient		
and	scalable	execuFon
Metamodel	for	
Business	Logic	
SemanFcs	
Clearly	defined	data	structure	to	express	all	
business-relevant	structures,	behaviors	and		
non-funcFonal	concerns.	
Well-defined	meaning	of	this	data	structure	
Technical	Pla_orm	for	correct,		efficient		
and	scalable	execuFon	
Tech	Infrastructure	
generate	code,	
deploy	
transfer	data,		
interpret
Tech	Infrastructure	
generate	code,	
deploy	
transfer	data,		
interpret	
+	Code	Inspec9on	
+	Debugging	
+	Performance	&	
			Op9miza9on	
+	PlaBorm	Con-	
			formance	
GeneraFon	 InterpretaFon	
+	Turn	around	Time	
+	Run9me	Change
Metamodel	for	
Business	Logic	
SemanFcs	
Tech	Infrastructure	
generate	code,	
deploy	
transfer	data,		
interpret
Tech	Infrastructure	
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
generate	code,	
deploy	
transfer	data,		
interpret
Tech	Infrastructure	
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
generate	code,	
deploy	
transfer	data,		
interpret	
Syntax	is			criFcally	important			for	
ProducFvity	
CommunicaFon	and	Review	
Domain	Expert	IntegraFon	
Only	Buaons	and	Forms		
don‘t	work!
Tech	Infrastructure	
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
generate	code,	
deploy	
transfer	data,		
interpret	
IDE	is			criFcally	important			for	acceptance	IDE
Tech	Infrastructure	
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
generate	code,	
deploy	
transfer	data,		
interpret	
IDE	is			criFcally	important			for	acceptance	
Learning	
ExploraFon	
ProducFvity	
Tool	IntegraFon	
IDE
Tech	Infrastructure	
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
generate	code,	
deploy	
transfer	data,		
interpret	
IDE	
L		a		n		g		u		a		g		e	
	W		o		r		b		e		n		c		h			
Language	Workbenches	let	
you	efficiently	implement	
languages	and	IDEs.	
They	are	essenFal	for	the	
language	implementor.
What	is	
Language	Design	
2	
How		
Domain		
Requirements	
Shape	
Languages
L		a		n		g		u		a		g		e	
W		o		r		b		e		n		c		h			
Requirements	
from	Domain	
	
Language	
ImplementaFon	
Other	
Requirements	
ImplementaFon	
R	
D	
Iterate!	
Language	
Design
Language	
Design	
Forces	
Constraints	
Tradeoffs	
CommunicaFon	
Compromises	
ValidaFon	
{
Done	by	people.	
Supported	by	Tools.
Domain		
Structure	
Model	
Purpose	
Analyze,	Generate	
User		
Skills	
SoNware	
Engineering	
PracFces	
Non		
FuncFonals	
Permissions,	
IP,	Sharing	
Tool		
CapabiliFes	
NotaFons,	
EdiFng,	Scale	
Sep.	of	Concerns	
Different	Views	
Get	a	beaer	tool	:-)	
Refactor	towards	
Structure	
Educate,		
Put	results	in	context	
Language	Design::Influences
Domain		
Structure	
Model	
Purpose	
Analyze,	Generate	
User		
Skills	
SoNware	
Engineering	
PracFces	
Non		
FuncFonals	
Permissions,	
IP,	Sharing	
Tool		
CapabiliFes	
NotaFons,	
EdiFng,	Scale	
Sep.	of	Concerns	
Different	Views	
Get	a	beaer	tool	:-)	
Refactor	towards	
Structure	
Educate,		
Put	results	in	context	
Language	Design::Influences	
Style!
Good	
Language	
Design	
Fitness	for	purpose	
EvaluaFon.	
	
Balancing	the	Forces	
RaFonales.	
	
Conceptual	Frameworks	
e.g.	CogniFve	Dimensions	of	NotaFons	
	
?
AbstracFon	gradient	Ÿ	Closeness	of	mapping	Ÿ	Consistency	Ÿ	
Diffuseness/Terseness		Ÿ	Error-proneness	Ÿ	Hard	mental	operaFons	Ÿ	
Hidden	dependencies	Ÿ	Juxtaposability	Ÿ	Premature	commitment	Ÿ	
Progressive	evaluaFon	Ÿ	Role-expressiveness	Ÿ	Secondary	notaFon	
and	escape	from	formalism	Ÿ	Viscosity	Ÿ	Visibility
Language	Design::Main	Paaerns	
New	Language	
GPL	Extension	
ExisFng		
Domain	NotaFon		
(Informal)	
FormalizaFon	
Formalized	
Language	
Reuse	GPL	incl.	Expressions	and	TS	
Add/Embed	DS-extensions	
CompaFble	notaFonal	style		
Reduce	to	GPL	
Analyze	Domain	to	find	AbstracFons	
Define	suitable,	new	notaFons	
Rely	on	exisFng	behavioral	paradigm	
Reuse	standard	expression	language	
Interpret/Generate	to	one	or	more	GPLs	
Use	exisFng	notaFon	from	domain	
Clean	up	and	formalize	
Generate/Interpret	
ONen	import	exisFng	„models“
Language	Design::Granularity	
Contract	Structure?	
Inheritance?	
State	Machine?	
Graphical	or	Textual?	
ImperaFve?	
Temporal	Types?	
Error	Handling?	
Syntax	f.	OpFon	Types?	
vs.	
vs.	
?
Language	
Great	IDE	
Analyses	
Refactorings	
TesFng	
Debuggers	
AbstracFons	
NotaFons	
Syntax	Coloring	
Code	CompleFon	
Goto	DefiniFon	
Relevant	
Good	Errors	
Aligned	with	Processes	
Write	Tests	
Run	them	
Report	Back	
Animate	ExecuFon	
Simulators	
GOOD	
GREAT	
Language	Design::More	than	Lang
Language	 Great	IDE	 Analyses	 Refactorings	 TesFng	 Debuggers	
Language	Design::Cross	Influences	
Some	Syntaxes	can	be	
beaer	supported	by	IDEs	
More	first-class	abstracFons	
make	analyses	simpler				
Can	only	refactor	what	
can	be	analyzed	
Syntax	to	express	tests	
Some	abstracFons	are	easier	to	debug	
Good	test	support	may		
limit	need	for	debugging
Example	Domains	
&	Languages	
3	
How		
Domain		
Requirements	
Shape	
Languages
Stakeholder	integraFon,	Scalable	Business,	Document	GeneraFon	+	CerFficaFon	
Code	Complexity,	Frameworks	(Autosar),	Product	Lines	
ReducFon	of	Accidental	Complexity	in	Code,	Process	Conformance	(Docs)	
A	powerful	language	and	IDE	for	exisFng	frameworks	(Industry	Robots,	ROS)	
Precise	SpecificaFon	and	ImplementaFon	of	Insurance	Products	(„Rules“)	
MulF-Paradigm	Programming,	not	just	Simulink	and	C	
Consistent	Derived	Documents	
Changing	RegulaFons,	Fast	ImplementaFon,	End	User	Empowerment
Mixed	NotaFons	and	End	User	Programming	
Informal	->	Semiformal	->	Formal	
Languages	+	VerificaFon	
OptmizaFons,	Performance	and	Concurrency	
Fundamentals:	Editors,	Type	Systems,	Trafos	
User-Friendly	IDEs,	Tools	
SimulaFon,	ExecuFon,	Test	
Consistent	Derived	Documents	
Language	vs.	Library,	Code	Gen	
ObservaFons:	
1)  Every	domain	has	different	reasons	
why	language	engineering	is	used.	
2)  No	domain	has	only	one	reason	–	it	is	
always	a	combina9on	
3)  Languages,	Editors,	Type	Systems	and	
good	IDEs	are	always	important!
F	I	N	A	N	C	E	
Customer	had	„coded“	in	Word	
Needed	a	real	IDE	
Syntax	to	be	retained	if	possible
Insurance	
Programs	
Specify/Program	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
No	tool	support	whatsoever	
No	tesFng	(except	inspecFon)	
No	reuse	
No	modularity	
No	varibility
Insurance	
Programs	
Specify/Program	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
No	tool	support	whatsoever	
No	tesFng	(except	inspecFon)	
No	reuse	
No	modularity	
No	varibility
Insurance	
Programs	
Specify/Program	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
No	tool	support	whatsoever	
No	tesFng	(except	inspecFon)	
No	reuse	
No	modularity	
No	varibility
Insurance	
Programs	
„Pixelcrap“	
Specify/Program	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
No	tool	support	whatsoever	
No	tesFng	(except	inspecFon)	
Printed,	PDF	
No	reuse	
No	modularity	
No	varibility
Insurance	
Programs	
„Pixelcrap“	
C	Code	
Implement	
Specify/Program	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
No	tool	support	whatsoever	
No	tesFng	(except	inspecFon)	
Printed,	PDF	 Developer	reads	„spec“		
Very	idiomaFc	implementaFon	
	
Dev	acts	as	a	human	compiler	and	implements	it	in	C	
No	reuse	
No	modularity	
No	varibility
Insurance	
Programs	
„Pixelcrap“	
C	Code	
Debug	
Implement	
Specify/Program	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
No	tool	support	whatsoever	
No	tesFng	(except	inspecFon)	
Printed,	PDF	 Developer	reads	„spec“		
Very	idiomaFc	implementaFon	
	
Dev	acts	as	a	human	compiler	and	implements	it	in	C	
Debugging	directly	in	C	
Search-for-use	by	text	search	
Don‘t	trust	the	documents	–		
					may	be	outdated!	
No	reuse	
No	modularity	
No	varibility
Insurance	
Programs	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
Now	with	IDE	support	and	executable	tests	
	
The	same	notaFon!	
Specify/Program/Test/Debug
Insurance	
Programs	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
Now	with	IDE	support	and	executable	tests	
	
The	same	notaFon!	
Specify/Program/Test/Debug
Insurance	
Programs	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
Now	with	IDE	support	and	executable	tests	
	
The	same	notaFon!	
Specify/Program/Test/Debug
Insurance	
Programs	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
Now	with	IDE	support	and	executable	tests	
	
The	same	notaFon!	
Specify/Program/Test/Debug
Insurance	
Programs	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
Now	with	IDE	support	and	executable	tests	
	
The	same	notaFon!	
Specify/Program/Test/Debug
Insurance	
Programs	
C	Code	
Specify/Program/Test/Debug	
Write	formal	code	in	a	DSL	
mixed	with	tables	and	text	
Now	with	IDE	support	and	executable	tests	
	
The	same	notaFon!	
Exactly	the	same	C	code.	
Generate
Insurance	
Programs	
C	Code	
Generate	
Incremental	Refinement/Refactoring	of	languages:	
	
ParFally	automated	migraFon	of	models	
Add	model	natural	notaFons	(insurance-specific,	math)	
Add	Support	for	modularity,	reuse,	variants	
	
SFll	exactly	the	same	C	code,		
or	improved	as	needed.	
Specify/Program/Test/Debug
Small-scale	syntacFc	decisions
Small-scale	syntacFc	decisions	
Tool	support	via	paleaes	is	important	for	
things	that	„cannot	be	typed“.
Structure/Guid.	
NotaFon	
Views	
IDE/Tool	
Learn/EffecFve	
+	
Mixed	
*	
Clean 		
L	
-	
Text	
1	
Powerful	
E
Syntax	is	the	„UI“	of	the	language.	
	
ONen	perceived	as	the	most	important	aspect		
from	the	customer‘s	perspecFve.	
ReplicaFng	exisFng	syntax	is	oNen	a		
good	starFng	point,	if	your	tool	can	do	it.
EMBEDDED	SOFTWARE	
„General	Purpose	DSL“	
Based	on	C	
Improved	Robustness,	ProducFvity	
Designed	for	end-user	extensibility
An	extensible	set	of	integrated	languages	
for	embedded	soNware	engineering.
Composable	extensions,	Diverse	notaFons
Different	kinds	of	languages,	as		
illustrated	by	the	different	
distribuFons	of	aspect	code.
Relying	on	modular	language	extension		
and	extension	composiFon.
Typical	OO	paaerns	to	support	extensibility
Design	for	Extensibility	
	
The	internal	design	decisions	may	not	be	relevant	to	
the	end	user,	but	they	are	decisive	wrt.	the	ability	to	
modularly	extend	a	language.		
This	may	in	itself	be	a	goal!
Integrated	VerificaFons	
Bounded	Model	Checking	
for	C	using	the	CBMC	tool.
Formal	VerificaFon	is	simplified	if	the	
language	has	the	right	abstracFons.	
	
	
	
...	because	no	semanFc	recovery	is	required.
A	E	R	O	S	P	A	C	E	
C-based	satellite	on-board	soNware	
Standardized	Architecture	
Lots	of	infrastructure	code	
Lots	of	documentaFon
Further	domain-specific	extensions	to	C.	
Developed	by	end-user	lang	engineer.
Infrastructure	Specifics	in	C
Infrastructure	Specific	in	C
Generated	DocumentaFon
An	exisFng	meta	model	/	standard	
is	oNen		a	great	starFng	point	for	a	DSL.	
There	is	more	to	generate/derive	
than	just	executable	soNware.
„ “I	am	comminng	myself	to	
develop	the	next	satellite‘s	on	
board	soNware	in	one	year	
instead	of	the	usual	50.
The	more	infrastructure	you	have	to	deal	
with,	the	more	can	be	generated.	
Remote	communicaFon,	protocols,			
buffering/serializaFon,	mulF-pla_orm	interfaces...
AUTOMOTIVE	
SpecificaFon	of	FuncFons	and	Interfaces	
And	the	Data	communicated	betw.	Them	
Incrementally	more	specific
Start	with	a	few	
ontological	data	
definiFons
Define	components	
that	produce	or	
consume	the	data	
items	(allocate	
responsibiliFes).
Establish	
refinement	
relaFonships	
between	
data	items.
Only	then	
do	you	start	
defining	
types	and	
value	
constraints.
Then	decompose	
hierarchical	system	
structures.
...	recursively.
Workflow	may	impact	the	language.	
	
Not	defining	a	type	for	a	variable	is	unintuiFve	for	
the	soNware	engineer.	But	it	is	the	way	a	systems	
engineer	works.	Make	sure	you	accomodate	this.
HEALTH/MEDICINE	
SoNware	Medical	Devices	
Accessible	to	Doctors	
Robustness/Correctness	Required	
To	be	FDA-cerFfied
Semi-Graphical	Expressions
Prose-like	call	syntax		
Extension	funcFon	can	be	called	in	dot-notaFon,	
perfectly	suitable	for	developers.
Prose-like	call	syntax		
For	non-programmers,	a	more	prose-like	notaFon	is	
helpful.	NoFce	the	prose-call	facility	is	a	modular	
extension	of	the	expression	language.
Once	again,	be	creaFve	in	the	notaFons	
you	use	to	accomodate	end	users.		
	
They	might	not	like	your	fancy	higher-order,		
lambda-based	pure	funcFonal	language.
Test	+	Monitoring	Aspects	
System	Model	MS	
T	&	V	Model	MT	
ensures	
LWB	
System	Implementa9on	IS	
T&V	Implementa9on	IT	
ensures	
transform	
transform	
	
TS	
TT	
RTE	
Established	approaches	for	developing	reliable	
and	safe	systems	applied	to	languages.
Test	+	Monitoring	Aspects	
System	Model	MS	
T	&	V	Model	MT	
ensures	
LWB	
Behavior	
Constraints	
monitors	 System	Implementa9on	IS	
T&V	Implementa9on	IT	
ensures	
transform	
TS	
TT	
RTE	
Established	approaches	for	developing	reliable	
and	safe	systems	applied	to	languages.
Test	+	Monitoring	Aspects	
System	Model	MS	
T	&	V	Model	MT	
ensures	
LWB	
Behavior	
Constraints	
monitors	 System	Implementa9on	IS	
T&V	Implementa9on	IT	
ensures	
transform	
TS	
TT	
RTE	
During	TesFng	
Established	approaches	for	developing	reliable	
and	safe	systems	applied	to	languages.
Test	+	Monitoring	Aspects	
System	Model	MS	
T	&	V	Model	MT	
ensures	
LWB	
Behavior	
Constraints	
monitors	 System	Implementa9on	IS	
T&V	Implementa9on	IT	
ensures	
transform	
TS	
TT	
RTE	
During	Regular	
OperaFon	
Established	approaches	for	developing	reliable	
and	safe	systems	applied	to	languages.
Redundancy	in	the	Tool	Chain	
The	basic	idea	is	that	the	system	model	and	the	test	
model	are	disFnct,	and	are	transformed	separately.
Redundancy	in	the	Tool	Chain	
A	number	of	addiFonal	steps	must	be	taken	to	address	
possible	error	scenarios;	many	rely	on	redundancy.
Integrated	VerificaFons	
Integrated	SMT	solver	checks	for	logical	and	arithmeFc	
inconsistencies	in	decision	tables.	
Solver	also	for	decision	trees,	state	machines	and	
protocol/contract	checking	in	other	projects.
Non-FuncFonal	Concerns	can	have	a		
huge	impact	on	language	design	and	
transformaFon	architecture.	
	
Safety,	Security,	Performance
End	Users	vs.	SemanFcs	
Estsblished	NotaFons	
End-user	Happyness	
Expressive	Formalism	
VerificaFon	feasible	
Ask	user	for	X	
...	 ...	
reply	aYer	2	minutes	otherwise	
Some	kind	of	decision		
tree/diagram	
?
S1	
S2	
S3	
/entry	Ask	
aNer	2	min	
on	Reply	[data.isValid]	
State	Machine	
Asynchronicity	(User	InteracFon)	
Time-based	decisions	(Fmeouts)	
Checking	for	completeness	and	other	
criteria	(model	checking)	
No	problem	for	semanFc	issues.	
But	„strange“	way	of	expressing	things.	
Hard	to	get	accepted.
GeneraFng	„nice“	reports	
Start	with	this	...	 ...	derive	this.	
Editable.	Analyzable.	
Read-only.	
Traceback.	
Configurable.
GeneraFng	„nice“	reports	
Read-only.	
Traceback.	
Configurable.	
{
Generate	parFally.	
Avoid	some	details.	
Mark	ExcepFonal	Paths.	
Show	only	Happy	Path.	
Highlight	Safety-Checks.	
...
Generate	derived	arFfacts	
Review	the	DSL	sources	
Pair	programming	
Independent	Development	
Levels	of		
Domain	Expert	IntegraFon	
User	sophisFcaFon	
Development	over	Fme.
SemanFcs	First	Language	Design!	
Robust,	reusable,	embeddable.	
Established	paradigms	and	
semanFcs,	but	custom	language	
Completely	Custom	
LWB	must	support	language	composiFon!
E	X	P	R	E	S	S	I	O	N	S	
Reusable	Expression	Language	
Embedded	in	>	10	DSLs	
What	is	a	good	way	to	do	opFon	types?
Basic	Expressions	and	types	
OpFon	Types
What	is	a	good	way	to	do	opFon	types?	
Good		==		Safe	
	
																		Checkable	
	
																		Concise	
	
																		Non-Surprising	
	
																		Implementable		
?can	the	value	only	be	used	in	the	then	part?	
does	type	checking	work?	
how	writable	and	readable	is	it?	
is	the	syntax	surprising	or	obvious?	
is	it	implementable	with	MPS	and	easily	
extensible	for	language	extension	developers?	
StarFng	Point:	a	first-class	expression	...	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable
Problem:	what	about	nesFng?	
one	has	specify	names	for	the	value		
otherwise	the	val	is	ambiguous	
Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
SoluFon:	two	styles	for	opFonal	names	
Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
We	opted	for	the	2nd	version,	because		
			IDE	support	is	beaer:	write	post-facto	
			we	already	had	a	framework	for	the	as	notaFon
NesFng:	one	can	now	write	this	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
This	is	ugly!	
Beaer:	support	comma-separated	mulFple	tests	
Safe	
Checkable	
Concise	
Non-Surprising		
Implementable
NesFng:	one	can	now	write	this	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
This	is	ugly!	
Beaer:	support	comma-separated	mulFple	tests	
Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
But:	why	not	just	use	an	if?
Why	not	just	use	an	if?	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
Problem:	how	to	analyze	this?	
SoluFon:	enfore	some	to	be	topmost	expression	
Safe	
Checkable	
Concise	
Non-Surprising		
Implementable
Use	an	opFon	as	bool?	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
Discarded:	too	much	magic.	
Use	the	expression	in	the	then	part?	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
Challenging	to	implement	with	MPS	because		
-	one	cannot	change	the	type	of	a	node	(x)					
		depending	on	its	context.	
-	alternaFvely,	the	x	in	the	then	part	must	be	a		
		different	lang	concept	with	negaFve	consequences		
		for	scoping.	
Adopted,	accepFng	the	scoping	challenge.
Final	issue:	comma	in	expressions	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
SoluFon:	allow	&&	but	not	other	operators	
Safe	
Checkable	
Concise	
Non-Surprising		
Implementable
Final,	adopted	soluFon:	 Safe	
Checkable	
Concise	
Non-Surprising		
Implementable		
We	accept	the	tradeoff	between	end-user	syntax	and	the	
somewhat	more	complicated	implementaFon	(scoping).
Many	concerns	affect	language	design;	
tradeoffs	are	oNen	required.	
	
Specifically,	if	the	language	is	expected	to	be	
extended	or	embedded,	since	then	the	customers‘	
language	engineers	are	also	stakeholders.
How	to	deal	with	numbers?	
?
Seems	to	be	obvious:	why	think	about	it?	
We	have	int	and	real.	Why	bother?	
But	many	domains	have	to	deal	with	
-  numbers	bigger	than	int	or	long	
-  fixed	precision	(e.g.,	currencies)	
-  numbers	with	specific	ranges	
-  or	other	constraints	on	the	values.	
This	should	be	part	of	the	language!
Ranges	and		Constraints
Modifying	Precision
Modifying	Limits
Ranges	and	Operators	
Ranges	are	checked	staFcally	by	the	TS.	
Other	constraints	are	checked	at	runFme.	
(Later	maybe	with	a	solver).
Even	„obvious“	issues	may	be	
worth	revisiFng	for	DSLs.	
	
„Normal	people“	don‘t	really	care	about	
integer	and	real,	they	just	want	to	work	
with	numbers.
Science	
High-Performance	CompuFng	
OpFmized	Math	on	Specialized	H/W	
Parallel	CompuFng	
High-Throughput
Math	computaFon	with	sliding	windows
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
IDE	
Different	Data	Layouts	
OpFmizing	f.	Registers	
Minimizing	Mem	Accs	
CPU	 GPU	
OpFmizing	Generators.
„
“ANer	making	an	algorithm	
efficient	(for	efficient	execuFon),	
we	cannot	recognize	the	science	
or	math	anymore.	We	cannot	
maintain	the	code.
Metamodel	for	
Business	Logic	
SemanFcs	
Syntax	
L		a		n		g		u		a		g		e		
IDE	
Different	Data	Layouts	
OpFmizing	f.	Registers	
Minimizing	Mem	Accs	
CPU	 GPU	
AbstracFons		
that	contain	enough		
semanFcs	to	enable		
generators!	
NotaFons		
that		make	„the	power“	
accessible	to	scienFtsts.
Meta	
4	
How		
Domain		
Requirements	
Shape	
Languages
MPS	is	bootstrapped,	
i.e.	it	is	mostly	built	with	itself.	
The	MPS	team	and	us	are	eaFng	our	own	dogfood.	
Java	Expressions	and	Statements	(BL)	
Refactorings	
Inten9ons	
Ac9ons	
Structure	
Type	System	
Transforma9on	
Editor	
f(x)	
Dataflow	
ImperaFve/OO	 DeclaraFve
MPS	is	bootstrapped,	
i.e.	it	is	mostly	built	with	itself.	
The	MPS	team	and	us	are	eaFng	our	own	dogfood.	
Java	Expressions	and	Statements	(BL)	
Refactorings	
Inten9ons	
Ac9ons	
Structure	
Type	System	
Transforma9on	
Editor	
Interpreter	
Math	
Tables	
Diagrams	
f(x)	
IncA	
Dataflow	
Pa]erns	
ImperaFve/OO	 DeclaraFve	
Tree
Interpreter		
DeclaraFve	type	mappings	
Type	Guards	
Concise	syntax,	especially	for	recursive	calls	
Composable	(just	as	languages)	
AbstracFons	for	environments	and	stacks
Program	Analysis	(IncA)	
Restricted,	DeclaraFve	Language	
Transformed	to	Paaerns	
Executed	incrementally	
Very	fast!
New	Editor	NotaFons	
New	primiFve	editor	cells	for	math,	diagram,	tables	
More	query-oriented	than	default	MPS	notaFons	
NotaFon	independent	from	Language
Java	as	an	imperaFve	base	language	is	problemaFc	
Because	of	side	effects,	it	is	very	hard	to	analyze	and	opFmize	
Java	Expressions	and	Statements	(BL)	
Refactorings	
Inten9ons	
Ac9ons	
Structure	
Type	System	
Transforma9on	
Editor	
Interpreter	
Math	
Tables	
Diagrams	
f(x)	
IncA	
Dataflow	
Pa]erns	
ImperaFve/OO	 DeclaraFve
Java	as	an	imperaFve	base	language	is	problemaFc	
Because	of	side	effects,	it	is	very	hard	to	analyze	and	opFmize	
f(x)	
Refactorings	
Inten9ons	
Ac9ons	
Structure	
Type	System	
Transforma9on	
Editor	
Interpreter	
Math	
Tables	
Diagrams	
IncA	
Dataflow	
Pa]erns	
ImperaFve/OO	 DeclaraFve	
We	are	invesFgaFng	how	to	get	a	
more	funcFonal	core	into	MPS
Summing	up	
5	
How		
Domain		
Requirements	
Shape	
Languages
All	languages	shown	in	this	talk	
are	built	with	the	open	source	
JetBrains	MPS	language	workbench.
Lots	of	further	reading	is	available.
NotaFon	is	crucial	for	users.	
Be	open	to	requirements	and	be	creaFve.	
Rely	on	a	solid	semanFc	foundaFon.	
Otherwise	you	cannot	deliver	the	promises	of	DSLs.	
SimulaFon,	VerificaFon	and	TesFng	
the	models	is	a	major	part	of	the	value-add	of	a	DSL.	
Try	to	incorporate	SE	best	pracFces	
(modularity,	SoC)	to	keep	overall	complexity	in	check.	
Use	a	powerful	language	workbench	
to	make	sure	it	does	not	unduly	constrain	the	design.
A	personal	note.	
1999	
UML	Modeling	with	RaFonal	Rose	and	„Skeleton	Code“	generaFon.	
Classes,	Stereotypes,	Tagged	Values,	Simple	OCL	constraints.
A	personal	note.	
2016	
MPS	with	full	code	generaFon.	
	
Mixed	notaFons,	mulFple	integrated	languages,	type	checking	and	
inferencing,	data	flow	checking,	refactoring,	version	control,	diff/
merge,	non-trivial	transformaFons,	languages	for	non-programmers.	
Modeling	2.0	„ “I	cannot	understand	how	developers	sFll	deal	with	modeling	1.0	
–	and	then	complain	that	it	does	not	work.																																															
Try	2.0!

Más contenido relacionado

Similar a 10 Years of Building DSLs: How Domain Requirements Shape Language Design

Developing an Enterprise Architecture Capability
Developing an Enterprise Architecture CapabilityDeveloping an Enterprise Architecture Capability
Developing an Enterprise Architecture CapabilityAnthony Draffin
 
VEERAREDDY_TIBCO_MULESOFT_CONSULTANT
VEERAREDDY_TIBCO_MULESOFT_CONSULTANTVEERAREDDY_TIBCO_MULESOFT_CONSULTANT
VEERAREDDY_TIBCO_MULESOFT_CONSULTANTVeera Reddy Bapthu
 
MOND Semantics Integration
MOND Semantics IntegrationMOND Semantics Integration
MOND Semantics IntegrationSales Emea
 
The New Enterprise Alphabet - .Net, XML And XBRL
The New Enterprise Alphabet - .Net, XML And XBRLThe New Enterprise Alphabet - .Net, XML And XBRL
The New Enterprise Alphabet - .Net, XML And XBRLJorgen Thelin
 
Software development training for technical recruiters
Software development training for technical recruitersSoftware development training for technical recruiters
Software development training for technical recruitersObi Mba Ogbanufe
 
Software Development Training For Technical Recruiters
Software  Development  Training  For  Technical  RecruitersSoftware  Development  Training  For  Technical  Recruiters
Software Development Training For Technical RecruitersObi Mba Ogbanufe
 
Application Engineer Capital Markets
Application Engineer Capital MarketsApplication Engineer Capital Markets
Application Engineer Capital Marketschalikars
 
Lixsql port enterprise integration
Lixsql port   enterprise integrationLixsql port   enterprise integration
Lixsql port enterprise integrationSandro Pereira
 

Similar a 10 Years of Building DSLs: How Domain Requirements Shape Language Design (20)

Ravinder-1
Ravinder-1Ravinder-1
Ravinder-1
 
Mohamed attia farag
Mohamed attia faragMohamed attia farag
Mohamed attia farag
 
Steve Shepherd Resume
Steve Shepherd ResumeSteve Shepherd Resume
Steve Shepherd Resume
 
Developing an Enterprise Architecture Capability
Developing an Enterprise Architecture CapabilityDeveloping an Enterprise Architecture Capability
Developing an Enterprise Architecture Capability
 
VEERAREDDY_TIBCO_MULESOFT_CONSULTANT
VEERAREDDY_TIBCO_MULESOFT_CONSULTANTVEERAREDDY_TIBCO_MULESOFT_CONSULTANT
VEERAREDDY_TIBCO_MULESOFT_CONSULTANT
 
MOND Semantics Integration
MOND Semantics IntegrationMOND Semantics Integration
MOND Semantics Integration
 
Akshay Rathi
Akshay RathiAkshay Rathi
Akshay Rathi
 
The New Enterprise Alphabet - .Net, XML And XBRL
The New Enterprise Alphabet - .Net, XML And XBRLThe New Enterprise Alphabet - .Net, XML And XBRL
The New Enterprise Alphabet - .Net, XML And XBRL
 
Omar Lahlou
Omar LahlouOmar Lahlou
Omar Lahlou
 
ResumeCurrent
ResumeCurrentResumeCurrent
ResumeCurrent
 
Software development training for technical recruiters
Software development training for technical recruitersSoftware development training for technical recruiters
Software development training for technical recruiters
 
Software Development Training For Technical Recruiters
Software  Development  Training  For  Technical  RecruitersSoftware  Development  Training  For  Technical  Recruiters
Software Development Training For Technical Recruiters
 
Omar Lahlou
Omar LahlouOmar Lahlou
Omar Lahlou
 
AkankshaSharma
AkankshaSharmaAkankshaSharma
AkankshaSharma
 
Salesforce 11 yrs exp - Vinoth
Salesforce 11 yrs exp - VinothSalesforce 11 yrs exp - Vinoth
Salesforce 11 yrs exp - Vinoth
 
Application Engineer Capital Markets
Application Engineer Capital MarketsApplication Engineer Capital Markets
Application Engineer Capital Markets
 
Sudhir_Resume
Sudhir_ResumeSudhir_Resume
Sudhir_Resume
 
Mustafacv
MustafacvMustafacv
Mustafacv
 
CV - Manuel_Lara
CV - Manuel_LaraCV - Manuel_Lara
CV - Manuel_Lara
 
Lixsql port enterprise integration
Lixsql port   enterprise integrationLixsql port   enterprise integration
Lixsql port enterprise integration
 

Más de Markus Voelter

Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?Markus Voelter
 
Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart ContractsMarkus Voelter
 
Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...Markus Voelter
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language WorkbenchesMarkus Voelter
 
Why Modeling Suck Sucks
Why Modeling Suck SucksWhy Modeling Suck Sucks
Why Modeling Suck SucksMarkus Voelter
 
Fusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented ProgrammingFusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented ProgrammingMarkus Voelter
 
The future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsThe future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsMarkus Voelter
 
Lessons Learned from building mbeddr
Lessons Learned from building mbeddrLessons Learned from building mbeddr
Lessons Learned from building mbeddrMarkus Voelter
 
The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelFThe Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelFMarkus Voelter
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific LanguagesMarkus Voelter
 
Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)Markus Voelter
 
Language-Oriented Business Applications
Language-Oriented Business ApplicationsLanguage-Oriented Business Applications
Language-Oriented Business ApplicationsMarkus Voelter
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific LaguagesMarkus Voelter
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language DesignMarkus Voelter
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back AgainMarkus Voelter
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination SegelfliegenMarkus Voelter
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting GuideMarkus Voelter
 

Más de Markus Voelter (20)

Consulting
ConsultingConsulting
Consulting
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart Contracts
 
Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language Workbenches
 
Why Modeling Suck Sucks
Why Modeling Suck SucksWhy Modeling Suck Sucks
Why Modeling Suck Sucks
 
Fusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented ProgrammingFusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented Programming
 
The future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsThe future of DSLs - functions and formal methods
The future of DSLs - functions and formal methods
 
Lessons Learned from building mbeddr
Lessons Learned from building mbeddrLessons Learned from building mbeddr
Lessons Learned from building mbeddr
 
The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelFThe Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelF
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific Languages
 
Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)
 
Language-Oriented Business Applications
Language-Oriented Business ApplicationsLanguage-Oriented Business Applications
Language-Oriented Business Applications
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back Again
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination Segelfliegen
 
Introduction To MDD
Introduction To MDDIntroduction To MDD
Introduction To MDD
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting Guide
 

Último

Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 

Último (20)

Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 

10 Years of Building DSLs: How Domain Requirements Shape Language Design