SlideShare ist ein Scribd-Unternehmen logo
1 von 123
Downloaden Sie, um offline zu lesen
Markus	Völter	
voelter@acm.org	
www.voelter.de	
@markusvoelter	
Language	Engineering	
Lessons	Learned	about		
from	the		
Development		
mbeddr	of
First:	
It‘s	not	just	me!
Health	&	Medical	
AutomoEve	
Aerospace	
RoboEcs	
Finance	
Embedded	
Government	
DOMAINS	 SoKware	Engineering	
Requirements	Engineering	
SpecificaEon	and	VerificaEon	
ImplementaEon	and	Test	
Mixed	NotaEons	and	End	User	Programming	
Informal	->	Semiformal	->	Formal	
Languages	+	VerificaEon	
OptmizaEons,	Performance	and	Concurrency	
Fundamentals:	Editors,	Type	Systems,	Trafos	
User-Friendly	IDEs,	Tools	
Safety	and	Security	
Architecture	
Science	
Methodology	
Language	Engineering
Background:	
MPS	
1	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
Freely	
define	
integrate	
them	
languages	and	
Language	
Workbench	(MarEn	Fowler,	2004)
powerful	
ediEng	
tesEng	
refactoring	
debugging	
language	definiEon	
IDE	definiEon	
implies	
+	
groupware	
Language	
Workbench	(MarEn	Fowler,	2004)
support	for	
„classical“	
programming	
„classical“	
modeling	
and	
+	
Language	
Workbench	(MarEn	Fowler,	2004)	
There‘s	no	difference!
A	Language	Workbench	–	
a	tool	for	defining,	composing	
and	using	ecosystems	of	languages.
[Language	Workbench]	
+ Refactorings, Find Usages, Syntax Coloring, Debugging, ...
Comprehensive	Support	for		
many	aspects	of	Language	DefiniEon.
Parsing	 ProjecEonal	EdiEng	
[ProjecEonal	EdiEng]
Regular	Code/Text	 MathemaEcal	
Tables	 Graphical	
SyntacEc	Flexibility	
[ProjecEonal	EdiEng]
Regular	Code/Text	 MathemaEcal	
Tables	 Graphical	
SyntacEc	Flexibility	
[ProjecEonal	EdiEng]
L2	 L1	
Separate	Files	 In	One	File	
Type	System	
TransformaEon	
Constraints	
	
Type	System	
TransformaEon	
Constraints	
Syntax	
IDE	
	
Language	ComposiEon	
[ProjecEonal	EdiEng]
Language	ComposiEon	
[ProjecEonal	EdiEng]
Background:	
mbeddr	
2	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
An	extensible	set	of	integrated	languages	
for	embedded	soKware	engineering.
Composable	extensions,	Diverse	notaEons
Smart	Meter	
Measures	Voltage	and	Current	
Computes	Derived	Values	
Shows	Data	on	LCD	Display	
Communicates	through	Networks	
Precision	is	criEcal	for	CerEficaEon.	
Evolvability	is	criEcal	for	it	to	be	a	viable	business.	
An	Industrial	Case	Study	
Developed	with																				,	a	set	of	domain-	
Specific	extensions	to	C,	plus	an	IDE.
Hardware	Architecture	
MSP430	F67791	
		25	MHz	
		256K	Flash	ROM			
		32K	RAM	
MSP430	F6736	
		25	MHz	
		128K	Flash	ROM			
		8K	RAM	
MQTT	
UART	
RS485	
IrDA	
DLMS/COSEM	
Metrology	ApplicaOon	Logic
SoKware	Architecture	
Energy
data
Non-
Volatile
data
Mains frequency
measurement
Instantaneous voltage &
current sampling
RMS voltage & current
calculation
Power & power factor
calculation
Energy and consumption
calculation
Energy	data	
display	
Multi-tariff &
billing periods
support
Magnetic
interference
protection
DLT645	
calibraEon	
commands	
Load profile
support
Reset function,
historical data
recording
COSEM
objects/OBIS
codes
Anti-tampering/
anti-fraud
Last/average/
maximum
demand
Output relay
control
Watch-
dog
Clock
System
USCI
LCD
Line
Temperature
Provider
RTC
Flash
Memory
Timer ADC10SD24EEPROM
HAL	
Calibration
Protocol
Rem. Device
Access Prot’l
...
Bin/Bcd
Converter
LCD format
Low-Pass
Filter
TickerModem Protocol
UTIL	COMM	
METROLOGY	APPLICATION	
No	RTOS	
Interrupt-Driven	
One-Threaded	Programming	
Required	Precision	leads	to		
4096	Hz	Sampling	Rate	
Interrupt-Triggered:	
		Measurement	
	
Foreground	Tasks:	
		App	Logic,	RTC
Size	of	the	System	
Common	code	runs	on	both	processors,	Metro	runs	on	the	
metrology	processor	and	App	runs	on	the	applicaOon	/	
communicaOon	processor.	
	
																											+	roughly	the	same	amount	again	for	tests.	
ca.	30,000	SLOC
Use	of	Extensions	
All	mbeddr	C	extensions	used	a	lot.		
Some	extensions	built	specifically	for	SM.
A	5-minute	
MPS	tutorial	
3	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
C	Extension	to	dequeue	a	value	
generated	to
Structure
Editor	+	AcEons	
Editor	acEons	to	implement	editor	
behavior.	Previously	manually	wrioen,	
now	generated	from	Grammar	Cells.	
See	SLE	Paper	:-)
Constraints	
Tree	Constraints:	
Scopes:
Type	System	
Checking	Rules:	
Typing	Rules:
Behavior
Generators/TransformaEons
And	many	more...	
IntenEons/Quick	Fixes	
Refactoring	
Text	Generators	
Language	Test	Cases	
Data	Flow	Graphs/Analyses	
Debuggers	
		...
Modularity	Fundamentally	OO
Project	
Stats	
4	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
Total	Effort	
10	
person	years
Size	of	the	Impl.	
ca.	90,000	SLOC
Tests	vs.	ImplementaEon
Timeline	of	the	Project
Kinds	of	Languages
What	can		
we	learn?	
5	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
1			Language		Modualarity	
2			ProjecEonal	EdiEng	
3			Managing	Complexity	
4			Tool	Scalability	
5			Development	Process	
RQ	
RQ	
RQ	
RQ	
RQ
For	a	scienEfic	treat-	
ment	with	all	caveats		
and		data	and	details,		
check	out	the	paper:	
hop://bit.ly/2dvXnBF
What	can		
we	learn?	
5	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr	
RQ	
1	 Language			
Modualarity
Booom-Up	Development
Some	Hooks	are	known	a	priori
Some	had	to	be	added	a	posteriori	
IAssignmentLike:	=,	+=,	*=,	etc.	
IFuncEonLike:	funcEon,	method	
IBinaryLike:	+-*/	but	also		.	?:	!	
IVoidTypeContainer:	funcEon,	Kype	
Conceptually	this	breaks	modularity.	
But	it‘s	like	OO	programming/frameworks.	
So	we	deem	it	acceptable.
OvermodularizaEon!	
Too	much	modularizaEon	is	also	not	helpful.	
We	had	a	lot	of	circular	dep‘s,	
solved	via	interfaces.		
	
Not	helpful.	
Refactoring	tough	because	of	MPS	bugs	in	Refactorings.
We	used	mostly	Extension	(+EC)	
Fundamentally	it	works	and	scales.
Is	Extension		
ComposiEon		
modular?	
MulEple	Extensions	in	C	
	
No	syntacEc	or	IDE	issues.	
Type	systems	compose	well.	
	
BUT:	SemanEc	InteracEons	cannot	be		
staEcally	guaranteed	to	be	correct.
Is	Extension		
ComposiEon		
modular?	
NesEng	in	C/in	each	other	
	
No	syntacEc	or	IDE	issues.	
Type	systems	compose	well.	
	
BUT:	SemanEc	InteracEons	cannot	be		
staEcally	guaranteed	to	be	correct.
Is	Extension		
ComposiEon		
modular?	
NesEng	in	each	other	
	
Adapter	language	Needed	
Type	system	adapters	needed	
	
Adapter	Language	also	deals	
with	semanEc	interacEons.	
	
Specifically	design	integraEons!	
No	modularity!
Yes,	to	the	degree	it	can	reasonably		
be	expected	to	be	(third	case!)	
Is	Extension		
ComposiEon		
modular?	
But	with	the	limitaEons	that	semanEcs	
cannot	be	staEcally	checked	to	be	compaEble.	
	
Might	be	solved	in	the	(far)	future	when	all	
transformaEons	are	declaraEve	and	analyzable.
Composing	Type	Systems	
DeclaraEve	
L1	 L2
Composing	Type	Systems	
DeclaraEve	
L1	+	L2	
Order	Irrelevant
Composing	TransformaEons	
DeclaraEve	
Order	Relevant
Composing	TransformaEons	
DeclaraEve	
Order	Relevant	
Simple	extension:	D	extends	I
Composing	TransformaEons	
DeclaraEve	
Order	Relevant	
Independent	extension:		
D1	and	D2	extend	I
Composing	TransformaEons	
DeclaraEve	
Order	Relevant	
Stacked	extension:		
D2	extends	D1	and	extends	I
Composing	TransformaEons	
DeclaraEve	
Order	Relevant	
Indep	extension	with	gen	dep:	
We	did	not	encounter	this.	
Hyp.	Example:	Method,	FuncEon,	Logging.
Gevng	the	ordering	right	can	be	a	
challenge.	We	discuss	debugging	later.	
Once	correct,	the	system	works	well.	
	
Composing	TransformaEons
RQ	
1	 Language			
Modualarity	
mbeddr’s	34	C	extensions	indicate	that	MPS’	language	modularity	
works.	It	is	useful	for	language	understanding,	tesOng	and	reuse.	
	
In	rare	cases,	modularity	is	compromised	by	necessary	changes	to	
the	base	language	and	unwanted	dependencies	between	
independent	extensions.	
	
Currently	there	is	no	way	to	detect	(unwanted)	semanEc	
interacEons	between	independent	language	extensions	through	
analysis	of	their	transformaOons.
What	can		
we	learn?	
5	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr	
RQ	
2	ProjecEonal	
EdiEng
ProjecEonal	EdiEng	
Language	ComposiEon
SyntacEc	Flexibility	is	actually	useful	
for	end	users	–	see	Smart	Meter.
Different	NotaEons	for	one	AbstracEon.	
State	Machines
Different	NotaEons	for	one	AbstracEon.	
State	Machines	
But:	type	checks	and	some	acEons	
based	on	AST,	not	on	what	is	shown.	
This	can	be	confusing	to	users.
OpEonally	projected	syntax.	
Requirements	Traces
Decoupled	NotaEonal	PrimiEves	
Sum	&	Trees	
Math	in	C	and	KernelF	
Trees	for	decisions	
and	feature	models
Developing	new	notaEons.	
MPS	is	Bootstrapped.
Editor	Usability		
Strongly	...	Neutral	...	Strongly	
agree																											disagree	
People	prefer	MPS	over	convenEonal	IDEs	
MPS	more	is	more	efficient	than	normal	IDEs	
MPS	more	is	more	producEve	than	normal	IDEs	
MPS	makes	it	easier	to	create	correct	programs	
MPS	enforces	a	structurally	correct	AST	
People	benefit	from	language	modularity	
People	benefit	from	the	flexible	notaEons	
The	experience	with	learning	MPS	is	mixed.	
It	takes	some	Eme	to	get	used	to	MPS	
Based	on	an	empirical	study.
Significantly	Improved	Editor	Usability		
Based	on	an	empirical	study.	
Generic		
CommenEng	
Grammar	Cells	
(see	SLE	Paper)	
Paleoes	and	other	
input	support	uEls.	
Top-Down	Progr.	
via	Target	CreaEon
But	sEll	issues/differences	in	Editor	Usability		
SelecEng	code	is	structural,	not	linear	
Copy/paste	of	similar	syntax	but		
different	structure	requires	customizaEon	
Grammar	cells	go	a	(very)	long	way,	but	
not	*every*	ediEng	acEon	is	possible.	
PasEng	from	text	requires	integraEon	
of	a	parser	(hooks	exist),	not	automaEc	
Very	few	complaints	since	we	did	the	improvements.	
We	consider	the	problem	mostly	solved.
Version	Control	IntegraEon	
Fundamentally	File-based	
We	used	git	–	worked	well	
diff/merge	in	MPS	
Can‘t	use	outside	tools	(gerrit)
RQ	
2	ProjecEonal	
EdiEng	
Two	main	benefits	of	projecOonal	ediOng	–	language	modularity	
and	a	range	of	combinable	notaEons	–	have	been	used	extensively	
in	mbeddr.	The	anOcipated	benefits	have	been	observed.	
	
Editor	can	be	flexibly	extended	with	new	notaOonal	styles	with	
acceptable	effort,	as	exemplified	by	math,	tables	and	diagrams.	
	
The	ability	to	use	mulEple	and	parEal	projecEons	must	be	further	
improved	by	integraOng	with	other	language	aspects,	in	parOcular,	
editor	acOons	and	type	checks.
What	can		
we	learn?	
5	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr	
RQ	
3	 Managing	
Complexity
ProjecEonal	EdiEng	
Reduced	Complexity	
Language	modularizaEon	
No	disambiguaEon	code
[Language	Aspects]	
+ Refactorings, Find Usages, Syntax Coloring, Debugging, ...
[Language	Aspects]	
+ Refactorings, Find Usages, Syntax Coloring, Debugging, ...
A	separate	DSL	for	each	aspect	
DeclaraOve	
Metamodel	
DeclaraOve	
Editor	Cells	
DeclaraOve	
Typing	Rules	
ImperaOve	
ValitaOons	
DeclaraOve	
Templates	
DeclaraOve	
PrioriOes	
ImperaOve	
Constraints
[Language	Aspects]	
A	separate	DSL	for	each	aspect	
DeclaraOve	
Metamodel	
DeclaraOve	
Editor	Cells	
DeclaraOve	
Typing	Rules	
ImperaOve	
ValitaOons	
DeclaraOve	
Templates	
DeclaraOve	
PrioriOes	
ImperaOve	
Constraints	
Each	language	opEmized	for	its	task.	
In	our	experience,	separate	aspect	DSL	
increase	producEvity	–	as	DSLs	should.
[Language	Aspects]	
A	separate	DSL	for	each	aspect,	but:	
DeclaraOve	
Metamodel	
DeclaraOve	
Editor	Cells	
DeclaraOve	
Typing	Rules	
ImperaOve	
ValitaOons	
DeclaraOve	
Templates	
DeclaraOve	
PrioriOes	
ImperaOve	
Constraints	
MPS	BaseLanguage	
essnOally	Java	+	X.	Mostly	ImperaOve
[Language	Aspects]	
A	separate	DSL	for	each	aspect,	but:	
DeclaraOve	
Metamodel	
DeclaraOve	
Editor	Cells	
DeclaraOve	
Typing	Rules	
ImperaOve	
ValitaOons	
DeclaraOve	
Templates	
DeclaraOve	
PrioriOes	
ImperaOve	
Constraints	
MPS	BaseLanguage	
essnOally	Java	+	X.	Mostly	ImperaOve	
DeclaraEve?	{	Analysis?	
OpEmizaEon?
[Language	Aspects]	
A	separate	DSL	for	each	aspect,	but:	
DeclaraEve?	{	Analysis?	
OpEmizaEon?	
	
The	non-declaraEveness	leads	to	problems	in	
analysis	(impact,	debugging,	verificaEons)	or	
opEmizaEon	(caching).
[Language	Aspects]	
A	separate	DSL	for	each	aspect.	Debugging?	
				Editor
[Language	Aspects]	
A	separate	DSL	for	each	aspect.	Debugging?	
				TransformaEons
[Language	Aspects]	
A	separate	DSL	for	each	aspect.	Debugging?	
				Type	System
[Language	Aspects]	
A	separate	DSL	for	each	aspect.	Debugging?	
System.out.println(...);	
All	in	all,	the	debugging	experience	is	not	
where	it	should	be.	Needs	improvement.	
				All	the	rest...
[Language	Aspects]	
A	separate	DSL	for	each	aspect,	but	missing	aspects:	
DeclaraOve	
Metamodel	
DeclaraOve	
Editor	Cells	
DeclaraOve	
Typing	Rules	
ImperaOve	
ValitaOons	
DeclaraOve	
Templates	
DeclaraOve	
PrioriOes	
ImperaOve	
Constraints	
MPS	BaseLanguage	
essnOally	Java	+	X.	Mostly	ImperaOve	
DocumentaOon	
Debugger	
Interpreter	
...	
Since	MPS	3.3,	one	can	define	custom	aspects.
MPS	is	bootstrapped.	
meaning:	it	is	built	with	itself.	
																		it	can	be	extended	with	itself.
MPS	is	bootstrapped.	
meaning:	it	is	built	with	itself.	
																		it	can	be	extended	with	itself.		
DeclaraEve	type	mappings	
Type	Guards	
Concise	syntax,	especially	for	recursive	calls	
Composable	(just	as	languages)	
AbstracEons	for	environments	and	stacks	Interpreter
MPS	is	bootstrapped.	
meaning:	it	is	built	with	itself.	
																		it	can	be	extended	with	itself.		
IncA	
Restricted,	DeclaraEve	Language	
Transformed	to	Paoerns	
Executed	incrementally	
Very	fast!
MPS	is	bootstrapped.	
meaning:	it	is	built	with	itself.	
																		it	can	be	extended	with	itself.		
New	primiEve	editor	cells	for	math,	diagram,	tables	
More	query-oriented	than	default	MPS	notaEons	
NotaEon	independent	from	Language	
Editor
RQ	
3	 Managing	
Complexity	
Using	a	DSL	for	each	language	aspect	works	well	based	on	our	
experience,	even	though	some	aspects	are	missing	and	some	are	
not	declaraOve	enough	to	support	meaningful	analyses.	
	
The	support	for	debugging	is	spooy:	it	works	well	for	
transformaOons,	but	debugging	generator	macros,	behav-	iors	and	
type	system	rules	is	very	tedious.	
	
The	ability	to	extend	MPS’	language	definiOon	DSLs	with	MPS	
itself	is	a	powerful	approach	for	managing	complexity,	and	we	
have	used	it	extensively,	even	though	it	has	some	limitaOons.
What	can		
we	learn?	
5	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr	
RQ	
4	 Tool	
Scalability
Editor	Responsiveness	
The	bigger	one	root	gets,	the	slower	the		
editor	gets	because	more	“stuff”	must	
be	rendered:	
-	incrementally	rendered,	but	sEll	...	
-	depends	on	the	notaEon		
-	3000	“lines”	of	C	code	
Split	into	several	roots.		
Impacts	Language	Design.
Editor	Responsiveness	
Code	compleEon	is	extremely	criEcal:	
you	can	only	enter	what	has	been	“put	into”		
the	code	compleEon	menu.	=>	Tree	Constraints	
						Scopes
Type	Checking	and	Constraints	
Type	checking	is	incremental,	and	happens	
in	the	background.		
Checks	may	run	long	–	but	are	interruptable.	
But	both	need	locks	on	the	repo:	they	can	
lead	to	performance	issues.	
=>	Cancellable	Checks	
						Assessments	
						SelecEve	Enabling	
						“Energy	Saver	Mode”
TransformaEon		
The	model	with	128	roots	corresponded	to	68,400	LoC	of	generated	C	
code	(for	Plain	C),	202,000	LoC	(C	+	State	Machines)	and	198,000	LoC	(C	
+	State	Machines	+	Units	+	Components).		
GeneraEon	Eme	(in	seconds)	
#	of	roots	with	1,000	nodes	each
TransformaEon		
GeneraEon	Eme	(in	seconds)	
#	of	roots	with	1,000	nodes	each	
Time				Size			&&			Time				Intermediate	Model	Volume	~	 ~
RQ	
4	 Tool	
Scalability	
With	ahenOon	to	root	size	and	the	distribuOon	of	code	over	
models,	then	systems	of	significant	size	can	be	built	with	MPS.	
	
The	performance	of	the	type	system	(as	it	is	evaluated	in	realOme	
in	the	editor)	and	support	for	cross-model	generaEon	are	the	two	
most	criOcal	ways	of	improving	MPS	performance.	
	
During	the	development	of	languages	we	have	not	run	into	any	
problems	regarding	performance	or	scalability	(of	editor,	type	
system	or	generator	definiOons).
What	can		
we	learn?	
5	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr	
RQ	
5	Development	
Process
TesEng	the	editor	
No	need	to	test	if	“parsing”	works.	
But	you	have	to	check	if	you	can	enter	what	
you	need	to	enter,	where	you	think	it	belongs.
TesEng	the	editor	
No	need	to	test	if	“parsing”	works.	
And	you	have	to	test	if	the	the	tree	is	con-	
structure	correctly	when	linear	input	is	used.
TesEng	the	type	system	
Do	typing	rules	and	constraints	work?	
EssenEally	check	if	the	red	squigglies	
show	up	where	you	expect	them.
TesEng	semanEcs	
Whenever	possible,	test	semanEcs	by	
execuEon	and	test	cases,	and	not	by	checking	
(the	structure	of)	the	generated	code.
TesEng	semanEcs	
Test	case	generaEon:	
•  Select	a	set	of	language	extensions		
•  Randomly	generate	structurally	sound	programs	
•  If	the	type	system	finds	errors	in	the	program,	discard	
the	program	(because	errors	are	correctly	reported)		
•  If	the	program	has	no	errors,	try	to	generate	and	
compile	it.	If	either	generaOon	or	compilaOon	fails,	flag	
this	parOcular	generated	program	as	a	failed	test.		
Helps	finding	inconsistencies	in	the	mulE-	
stage	transformaEon	process.
Version	Control	
Works.	As	long	as	you	are	willing	to		
use	MPS	for	diff/merge.
CI	Server	IntegraEon	
We	successfully	run	all	our	builds,	tests	and	
packaging	on		
However,	the	effort	to	get	the	MPS	builds	
to	run	there	is	too	high	
the	usual	build	dependency	hell	
the	MPS	build	language	is	not	flexible	enough	
maybe	iniEally	not	enough	experience	with	“build	stuff”	
Also,	builds	tend	to	take	(too)	long.		
a	full	mbeddr	build	takes	12	minutes	on	the	server	and	ca.		
30	minutes	on	a	fast	developer	PC	
Mixed	bag!
Languages	have	version	numbers	
MigraEon	of	Models	
Automated	refactorings	increment	that	
number;	so	can	developers.	
MigraEon	scripts	bring	models	up	to	date		
based	on	the	language	versions.	
Mixed	bag!	
This	is	already	more	than	in	most	other		
tools	we	know	about.	But	it	is	clumsy	and	
someEmes	slow.
RQ	
5	 Process	
IntegraEon	
Except	for	the	missing	test	support	for	model	migraOons	and	
single-step	transformaOons,	language	tesEng	works	well;	we	have	
achieved	good	coverage	as	demonstrated	by	a	stable	code	base.	
	
We	have	successfully	integrated	mbeddr’s	build,	test	and	
packaging	with	the	Teamcity	CI	server,	but	the	effort	was	too	high,	
parOally	because	of	the	inadequacy	of	MPS’	build	language.	
	
MigraEng	models	as	languages	change	incompaObly	is	feasible	
with	manually	scripted	migraOons	and	their	automaOc	execuOon	
based	on	implicitly-maintained	language	version	numbers.
Concluding	
Thoughts	
6	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
C	is	a	strange	language	
The	details	were	
harder	to	build	than		
we	iniEally	thought.	
But	MPS	can	do	it!
Language	is	not	enough.	
IDE,	Debugger,	
Analyses,	Interpreter.
Tool	Chrome	hurts.	
MPS	„looks“	too	complicated	
for	the	prospecEve	end	user.
Onboarding	devs.	
It	took	4	–	8	weeks	to	get	
competent	new	devs	on	board.
OpEmizing	Generators	
is	hard	:-)
Modularity	vs.	OpEmizaEon	
Global	opEmizaEon	are	in	
conflict	with	modularity	
and	extensibility.	
	
Perhaps	two	generators?
Open	vs.	Closed	World	
How	do	you	build	trust	
into	a	system	that	is	
inherently	extensible?
More	DeclaraEveness	
More	declarariveness	and	inproved	
ability	to	analyze	language	definiEon	
code	would	help!
Shadow	Models	
We	need	incremental,	real-Eme,	
mulE-step,	in-IDE	transformaEons	
for	advanced	analyses.
Change	is	hard.	
ProspecEve	users	were	hard	
to	convince	to	adopt	mbeddr.
Wrap		
Up	
7	
Lessons	Learned	
about	Language	
Engineering	from	the	
Development	of	
mbeddr
MPS	is	a	capable	LWB.	
Overall	we	are	happy	and	conEnue	to	use	it.	
It	is	definitely	ready	for	real-world	use	
mbeddr	–	and	this	evaluaEon	–	is	testament	to	that.	
Many	architectural	desicisons	are	good...	
ProjecEon,	Aspect	DSLs,	Bootstrapping.	
...	but	it	has	some	weak	points	as	well.	
Internal	complexity,	imperaEveness,	build,	fat	Java	client.	
A	good	choice	for	LE	projects	today.	
Great	starEng	point	for	next	gen	LWBs	:-)

Weitere ähnliche Inhalte

Was ist angesagt?

Ontologies and Software Modeling: Potentials, Experience and Challenges
Ontologies and Software Modeling: Potentials, Experience and Challenges Ontologies and Software Modeling: Potentials, Experience and Challenges
Ontologies and Software Modeling: Potentials, Experience and Challenges Dragan Gasevic
 
DSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentDSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentESUG
 
0. Course Introduction
0. Course Introduction0. Course Introduction
0. Course IntroductionIntro C# Book
 
Computer Programming Languages in Psychological Perspective
Computer Programming Languages in Psychological PerspectiveComputer Programming Languages in Psychological Perspective
Computer Programming Languages in Psychological PerspectiveZunairaRasheed4
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific LaguagesMarkus Voelter
 
Coding principles
Coding principles Coding principles
Coding principles DevAdnani
 
Programming languages and paradigms
Programming languages and paradigmsProgramming languages and paradigms
Programming languages and paradigmsJohn Paul Hallasgo
 
Concept of computer programming iv
Concept of computer programming ivConcept of computer programming iv
Concept of computer programming ivEyelean xilef
 
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
 
Which is better, Java or Python? And how?
Which is better, Java or Python? And how?Which is better, Java or Python? And how?
Which is better, Java or Python? And how?narendrachinnu
 
Variability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesVariability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesDavid Méndez-Acuña
 

Was ist angesagt? (16)

Program Logic and Design
Program Logic and DesignProgram Logic and Design
Program Logic and Design
 
Ontologies and Software Modeling: Potentials, Experience and Challenges
Ontologies and Software Modeling: Potentials, Experience and Challenges Ontologies and Software Modeling: Potentials, Experience and Challenges
Ontologies and Software Modeling: Potentials, Experience and Challenges
 
DSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentDSL, the absolute weapon for the development
DSL, the absolute weapon for the development
 
Ryan_Resume
Ryan_ResumeRyan_Resume
Ryan_Resume
 
0. Course Introduction
0. Course Introduction0. Course Introduction
0. Course Introduction
 
Computer Programming Languages in Psychological Perspective
Computer Programming Languages in Psychological PerspectiveComputer Programming Languages in Psychological Perspective
Computer Programming Languages in Psychological Perspective
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
Coding principles
Coding principles Coding principles
Coding principles
 
Programming languages and paradigms
Programming languages and paradigmsProgramming languages and paradigms
Programming languages and paradigms
 
.Pigeon Project
.Pigeon Project.Pigeon Project
.Pigeon Project
 
Concept of computer programming iv
Concept of computer programming ivConcept of computer programming iv
Concept of computer programming iv
 
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?
 
Characteristics of c#
Characteristics of c#Characteristics of c#
Characteristics of c#
 
Which is better, Java or Python? And how?
Which is better, Java or Python? And how?Which is better, Java or Python? And how?
Which is better, Java or Python? And how?
 
Variability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesVariability Management in Domain Specific Languages
Variability Management in Domain Specific Languages
 

Ähnlich wie Lessons Learned from building mbeddr

Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?CHOOSE
 
Php oops interview questions
Php oops interview questionsPhp oops interview questions
Php oops interview questionsVIjay Sunder
 
How Domains Shape Languages
 How Domains Shape Languages How Domains Shape Languages
How Domains Shape LanguagesMarkus Voelter
 
From MDE to SLE (April 17th, 2015)
From MDE to SLE (April 17th, 2015)From MDE to SLE (April 17th, 2015)
From MDE to SLE (April 17th, 2015)Benoit Combemale
 
c4_computer_software.ppt
c4_computer_software.pptc4_computer_software.ppt
c4_computer_software.pptsamiultawsif97
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenationAshwini Awatare
 
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...Benoit Combemale
 
Introducing Language-Oriented Business Applications - Markus Voelter
Introducing Language-Oriented Business Applications - Markus VoelterIntroducing Language-Oriented Business Applications - Markus Voelter
Introducing Language-Oriented Business Applications - Markus VoelterJAXLondon2014
 
Language Engineering With Xtext
Language Engineering With XtextLanguage Engineering With Xtext
Language Engineering With XtextSven Efftinge
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling WorldsIstvan Rath
 
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.docICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.docAmanGunner
 
Week 3 Lecture 1 - Business SoftwareManagement of Information .docx
Week 3 Lecture 1 - Business SoftwareManagement of Information .docxWeek 3 Lecture 1 - Business SoftwareManagement of Information .docx
Week 3 Lecture 1 - Business SoftwareManagement of Information .docxjessiehampson
 
Tesseract OCR Engine - OpenFest 2009
Tesseract OCR Engine - OpenFest 2009Tesseract OCR Engine - OpenFest 2009
Tesseract OCR Engine - OpenFest 2009Svetlin Nakov
 
Emmanuel Palle – The Versatility of Software Development Tools and IDEs..pptx
Emmanuel Palle – The Versatility of Software Development Tools and IDEs..pptxEmmanuel Palle – The Versatility of Software Development Tools and IDEs..pptx
Emmanuel Palle – The Versatility of Software Development Tools and IDEs..pptxLode Emmanuel Palle
 
wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...
wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...
wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...juristsjunction
 

Ähnlich wie Lessons Learned from building mbeddr (20)

Intro1
Intro1Intro1
Intro1
 
Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?
 
Php oops interview questions
Php oops interview questionsPhp oops interview questions
Php oops interview questions
 
How Domains Shape Languages
 How Domains Shape Languages How Domains Shape Languages
How Domains Shape Languages
 
From MDE to SLE (April 17th, 2015)
From MDE to SLE (April 17th, 2015)From MDE to SLE (April 17th, 2015)
From MDE to SLE (April 17th, 2015)
 
c4_computer_software.ppt
c4_computer_software.pptc4_computer_software.ppt
c4_computer_software.ppt
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
week1.ppt
week1.pptweek1.ppt
week1.ppt
 
SEOC 2004-2011
SEOC 2004-2011SEOC 2004-2011
SEOC 2004-2011
 
Bis Chapter4
Bis Chapter4Bis Chapter4
Bis Chapter4
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenation
 
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...
 
Introducing Language-Oriented Business Applications - Markus Voelter
Introducing Language-Oriented Business Applications - Markus VoelterIntroducing Language-Oriented Business Applications - Markus Voelter
Introducing Language-Oriented Business Applications - Markus Voelter
 
Language Engineering With Xtext
Language Engineering With XtextLanguage Engineering With Xtext
Language Engineering With Xtext
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.docICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
 
Week 3 Lecture 1 - Business SoftwareManagement of Information .docx
Week 3 Lecture 1 - Business SoftwareManagement of Information .docxWeek 3 Lecture 1 - Business SoftwareManagement of Information .docx
Week 3 Lecture 1 - Business SoftwareManagement of Information .docx
 
Tesseract OCR Engine - OpenFest 2009
Tesseract OCR Engine - OpenFest 2009Tesseract OCR Engine - OpenFest 2009
Tesseract OCR Engine - OpenFest 2009
 
Emmanuel Palle – The Versatility of Software Development Tools and IDEs..pptx
Emmanuel Palle – The Versatility of Software Development Tools and IDEs..pptxEmmanuel Palle – The Versatility of Software Development Tools and IDEs..pptx
Emmanuel Palle – The Versatility of Software Development Tools and IDEs..pptx
 
wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...
wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...
wepik-understanding-computer-languages-and-translators-a-comprehensive-analys...
 

Mehr von 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
 
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
 
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
 
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
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
Architecture As Language
Architecture As LanguageArchitecture As Language
Architecture As LanguageMarkus Voelter
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesMarkus Voelter
 

Mehr von Markus Voelter (20)

Consulting
ConsultingConsulting
Consulting
 
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
 
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
 
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
 
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
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Architecture As Language
Architecture As LanguageArchitecture As Language
Architecture As Language
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
 

Kürzlich hochgeladen

Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456KiaraTiradoMicha
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyAnusha Are
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 

Kürzlich hochgeladen (20)

Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 

Lessons Learned from building mbeddr