SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
Re-Implementing Apache Thrift using
Model-Driven Engineering Technologies:
An Experience Report
Sina Madani and Dimitris Kolovos
Department of Computer Science
University of York
{sm1748, dimitris.kolovos}@york.ac.uk
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 1/9
Motivation
Several experience reports on applications of MDE in industry
Mostly based on interviews
Limited availability of “hard data”
e.g. measurements extracted by implementing the same
software with/without MDE technologies
Such data can provide useful insights and/or act as a good
marketing tool for MDE
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 2/9
In this work . . .
We re-implemented a subset of Apache Thrift using EMF,
Xtext and Epsilon
Thrift is a web-services framework originally developed at
Facebook (http://thrift.apache.org)
Re-implementaton available in
https://github.com/SMadani/ThriftMDE/
We performed quantitative and qualitative comparison of the
two implementations
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 3/9
Apache Thrift
Interface description language for modelling services,
input/output data types/structures (similar to CORBA’s IDL)
Several transport protocols (e.g. JSON, binary, compressed)
“Compiler” that produces client/server stubs from interface
descriptions in Java, Ruby, JavaScript etc.
Compiler implemented using flex, Bison and C++
Code generation through string concatenation (!!)
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 4/9
MDE re-implementation of Thrift’s Compiler
Hand-crafted abstract syntax → EMF
flex, Bison → Xtext
Model validation in C++ → OCL-like constraints
Implemented using the Epsilon Validation Language (EVL)
Concatenation-based code generators → Template-based code
generators
Implemented using the Epsilon Generation Language (EGL)
Only re-implemented code generators for Ruby and Java
To enable automated equivalence testing we produce identical
code (including bugs)
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 5/9
Quantitative Evaluation: Lines of Code
Implementation Original MDE Difference
Language definition
(parsing & validation)
3,419 447 -87%
Language-neutral
code
712 1,036 +68%
Java generator 5,129 2,224 -57%
Ruby generator 1,231 422 -66%
Total 10,491 4,149 -60%
Remarks
We only counted hand-written code for both implementations
(i.e. excluded code generated by flex, Bison, EMF and Xtext)
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 6/9
Quantitative Evaluation: KBs (characters)
Implementation Original MDE Difference
Language definition
(parsing & validation)
105 14 -87%
Language-neutral
code
22 26 +15%
Java generator 187 73 -61%
Ruby generator 40 14 -65%
Total 395 128 -68%
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 7/9
Qualitative Evaluation
The MDE implementation is more modular
Code generation is split over a number of templates for each
language vs. all in one class in the current implementation
Validation logic is contained in a set of EVL constraints vs.
being spread across the codebase
Xtext is significantly more concise than flex and Bison
Using a template-based code generation language
Reduced the accidental complexity of string concatenation
Made little difference in terms of the complexity of the output
computation logic
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 8/9
Conclusions and Further Work
The MDE re-implementation is significantly more concise
(60-70%)
To argue about maintainability we need to conduct
experiments involving developers
Xtext is a significant improvement over flex and Bison
A template-based code generation language is more concise
but does not reduce the complexity of the code generator
Irreducable essential complexity?
Our conclusions are based on one data point
Need to repeat this exercise with additional software to build
confidence (e.g. Google Protocol Buffers?)
S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 9/9

Mais conteúdo relacionado

Semelhante a Re-Implementing Apache Thrift using Model-Driven Engineering Technologies: An Experience Report

Towards Design-space Exploration of Component Chains in Vehicle Software
Towards Design-space Exploration of Component Chains in Vehicle SoftwareTowards Design-space Exploration of Component Chains in Vehicle Software
Towards Design-space Exploration of Component Chains in Vehicle SoftwareAlessio Bucaioni
 
Spark-MPI: Approaching the Fifth Paradigm with Nikolay Malitsky
Spark-MPI: Approaching the Fifth Paradigm with Nikolay MalitskySpark-MPI: Approaching the Fifth Paradigm with Nikolay Malitsky
Spark-MPI: Approaching the Fifth Paradigm with Nikolay MalitskyDatabricks
 
Towards Logic Programming as a Service: Experiments in tuProlog
Towards Logic Programming as a Service: Experiments in tuPrologTowards Logic Programming as a Service: Experiments in tuProlog
Towards Logic Programming as a Service: Experiments in tuPrologAndrea Omicini
 
Supporting software documentation with source code summarization
Supporting software documentation with source code summarization Supporting software documentation with source code summarization
Supporting software documentation with source code summarization Ra'Fat Al-Msie'deen
 
Ahmed Kamal - Software Development Expert
Ahmed Kamal - Software Development ExpertAhmed Kamal - Software Development Expert
Ahmed Kamal - Software Development ExpertAhmed Kamal
 
A Study on MDE Approaches for Engineering Wireless Sensor Networks
A Study on MDE Approaches  for Engineering Wireless Sensor Networks A Study on MDE Approaches  for Engineering Wireless Sensor Networks
A Study on MDE Approaches for Engineering Wireless Sensor Networks Ivano Malavolta
 
Model-Driven Development of Web Applications
Model-Driven Development of Web ApplicationsModel-Driven Development of Web Applications
Model-Driven Development of Web Applicationsidescitation
 
Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)Roberto Casadei
 
Rajas mhaskar resume2k19
Rajas mhaskar resume2k19Rajas mhaskar resume2k19
Rajas mhaskar resume2k19Rajas Mhaskar
 
resume_anuj_sharma
resume_anuj_sharmaresume_anuj_sharma
resume_anuj_sharmaAnuj Sharma
 
Guia 2-examen-de-ingles
Guia 2-examen-de-inglesGuia 2-examen-de-ingles
Guia 2-examen-de-inglesLiz Castro B
 
Monitoring and Operational Data Analytics from a User Perspective at First Eu...
Monitoring and Operational Data Analytics from a User Perspective at First Eu...Monitoring and Operational Data Analytics from a User Perspective at First Eu...
Monitoring and Operational Data Analytics from a User Perspective at First Eu...University of Maribor
 
The Simple Assembly Line Balancing Problem
The Simple Assembly Line Balancing ProblemThe Simple Assembly Line Balancing Problem
The Simple Assembly Line Balancing ProblemNicole Wells
 
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages ijseajournal
 

Semelhante a Re-Implementing Apache Thrift using Model-Driven Engineering Technologies: An Experience Report (20)

Towards Design-space Exploration of Component Chains in Vehicle Software
Towards Design-space Exploration of Component Chains in Vehicle SoftwareTowards Design-space Exploration of Component Chains in Vehicle Software
Towards Design-space Exploration of Component Chains in Vehicle Software
 
Spark-MPI: Approaching the Fifth Paradigm with Nikolay Malitsky
Spark-MPI: Approaching the Fifth Paradigm with Nikolay MalitskySpark-MPI: Approaching the Fifth Paradigm with Nikolay Malitsky
Spark-MPI: Approaching the Fifth Paradigm with Nikolay Malitsky
 
Towards Logic Programming as a Service: Experiments in tuProlog
Towards Logic Programming as a Service: Experiments in tuPrologTowards Logic Programming as a Service: Experiments in tuProlog
Towards Logic Programming as a Service: Experiments in tuProlog
 
Supporting software documentation with source code summarization
Supporting software documentation with source code summarization Supporting software documentation with source code summarization
Supporting software documentation with source code summarization
 
Kshama_Parakh
Kshama_ParakhKshama_Parakh
Kshama_Parakh
 
Ahmed Kamal - Software Development Expert
Ahmed Kamal - Software Development ExpertAhmed Kamal - Software Development Expert
Ahmed Kamal - Software Development Expert
 
Ijetcas14 533
Ijetcas14 533Ijetcas14 533
Ijetcas14 533
 
A Study on MDE Approaches for Engineering Wireless Sensor Networks
A Study on MDE Approaches  for Engineering Wireless Sensor Networks A Study on MDE Approaches  for Engineering Wireless Sensor Networks
A Study on MDE Approaches for Engineering Wireless Sensor Networks
 
Industrial Training report on java
Industrial  Training report on javaIndustrial  Training report on java
Industrial Training report on java
 
Model-Driven Development of Web Applications
Model-Driven Development of Web ApplicationsModel-Driven Development of Web Applications
Model-Driven Development of Web Applications
 
Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)Software Testing (in Scala): A Practitioner's Survey (Quickly)
Software Testing (in Scala): A Practitioner's Survey (Quickly)
 
Ashutosh's resume
Ashutosh's resumeAshutosh's resume
Ashutosh's resume
 
Rajas mhaskar resume2k19
Rajas mhaskar resume2k19Rajas mhaskar resume2k19
Rajas mhaskar resume2k19
 
resume_anuj_sharma
resume_anuj_sharmaresume_anuj_sharma
resume_anuj_sharma
 
Guia 2-examen-de-ingles
Guia 2-examen-de-inglesGuia 2-examen-de-ingles
Guia 2-examen-de-ingles
 
Ashutosh's resume (3)
Ashutosh's resume (3)Ashutosh's resume (3)
Ashutosh's resume (3)
 
Monitoring and Operational Data Analytics from a User Perspective at First Eu...
Monitoring and Operational Data Analytics from a User Perspective at First Eu...Monitoring and Operational Data Analytics from a User Perspective at First Eu...
Monitoring and Operational Data Analytics from a User Perspective at First Eu...
 
TripathiAkriti_resume
TripathiAkriti_resumeTripathiAkriti_resume
TripathiAkriti_resume
 
The Simple Assembly Line Balancing Problem
The Simple Assembly Line Balancing ProblemThe Simple Assembly Line Balancing Problem
The Simple Assembly Line Balancing Problem
 
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages
 

Mais de Dimitris Kolovos

Picto: Model Visualisation via M2T Transformation
Picto: Model Visualisation via M2T TransformationPicto: Model Visualisation via M2T Transformation
Picto: Model Visualisation via M2T TransformationDimitris Kolovos
 
The Epsilon Pattern Language
The Epsilon Pattern LanguageThe Epsilon Pattern Language
The Epsilon Pattern LanguageDimitris Kolovos
 
Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...
Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...
Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...Dimitris Kolovos
 
Partial Loading of XMI Models
Partial Loading of XMI ModelsPartial Loading of XMI Models
Partial Loading of XMI ModelsDimitris Kolovos
 
Merging Models with the Epsilon Merging Language - A Decade Later
Merging Models with the Epsilon Merging Language - A Decade LaterMerging Models with the Epsilon Merging Language - A Decade Later
Merging Models with the Epsilon Merging Language - A Decade LaterDimitris Kolovos
 
Assessing the Use of Eclipse MDE Technologies in Open-Source Software Projects
Assessing the Use of Eclipse MDE Technologies in Open-Source Software ProjectsAssessing the Use of Eclipse MDE Technologies in Open-Source Software Projects
Assessing the Use of Eclipse MDE Technologies in Open-Source Software ProjectsDimitris Kolovos
 
Code Generation as a Service
Code Generation as a ServiceCode Generation as a Service
Code Generation as a ServiceDimitris Kolovos
 
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Dimitris Kolovos
 
Eclipse Modellng Forums: Looking at the Data
Eclipse Modellng Forums: Looking at the DataEclipse Modellng Forums: Looking at the Data
Eclipse Modellng Forums: Looking at the DataDimitris Kolovos
 
Programmatic Muddle Management
Programmatic Muddle ManagementProgrammatic Muddle Management
Programmatic Muddle ManagementDimitris Kolovos
 
Managing XML documents with Epsilon
Managing XML documents with EpsilonManaging XML documents with Epsilon
Managing XML documents with EpsilonDimitris Kolovos
 
COMPASS Early Safety Warning System (ESWS)
COMPASS Early Safety Warning System (ESWS)COMPASS Early Safety Warning System (ESWS)
COMPASS Early Safety Warning System (ESWS)Dimitris Kolovos
 

Mais de Dimitris Kolovos (14)

Picto: Model Visualisation via M2T Transformation
Picto: Model Visualisation via M2T TransformationPicto: Model Visualisation via M2T Transformation
Picto: Model Visualisation via M2T Transformation
 
The Epsilon Pattern Language
The Epsilon Pattern LanguageThe Epsilon Pattern Language
The Epsilon Pattern Language
 
Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...
Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...
Developing a new Epsilon Language through Grammar Extension: The Epsilon Dem...
 
Partial Loading of XMI Models
Partial Loading of XMI ModelsPartial Loading of XMI Models
Partial Loading of XMI Models
 
Merging Models with the Epsilon Merging Language - A Decade Later
Merging Models with the Epsilon Merging Language - A Decade LaterMerging Models with the Epsilon Merging Language - A Decade Later
Merging Models with the Epsilon Merging Language - A Decade Later
 
Assessing the Use of Eclipse MDE Technologies in Open-Source Software Projects
Assessing the Use of Eclipse MDE Technologies in Open-Source Software ProjectsAssessing the Use of Eclipse MDE Technologies in Open-Source Software Projects
Assessing the Use of Eclipse MDE Technologies in Open-Source Software Projects
 
Code Generation as a Service
Code Generation as a ServiceCode Generation as a Service
Code Generation as a Service
 
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
 
Eclipse Modellng Forums: Looking at the Data
Eclipse Modellng Forums: Looking at the DataEclipse Modellng Forums: Looking at the Data
Eclipse Modellng Forums: Looking at the Data
 
Programmatic Muddle Management
Programmatic Muddle ManagementProgrammatic Muddle Management
Programmatic Muddle Management
 
Managing XML documents with Epsilon
Managing XML documents with EpsilonManaging XML documents with Epsilon
Managing XML documents with Epsilon
 
Epsilon
EpsilonEpsilon
Epsilon
 
COMPASS Early Safety Warning System (ESWS)
COMPASS Early Safety Warning System (ESWS)COMPASS Early Safety Warning System (ESWS)
COMPASS Early Safety Warning System (ESWS)
 
Eugenia
EugeniaEugenia
Eugenia
 

Último

Conjugation, transduction and transformation
Conjugation, transduction and transformationConjugation, transduction and transformation
Conjugation, transduction and transformationAreesha Ahmad
 
Forensic Biology & Its biological significance.pdf
Forensic Biology & Its biological significance.pdfForensic Biology & Its biological significance.pdf
Forensic Biology & Its biological significance.pdfrohankumarsinghrore1
 
Sector 62, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 62, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
Pulmonary drug delivery system M.pharm -2nd sem P'ceutics
Pulmonary drug delivery system M.pharm -2nd sem P'ceuticsPulmonary drug delivery system M.pharm -2nd sem P'ceutics
Pulmonary drug delivery system M.pharm -2nd sem P'ceuticssakshisoni2385
 
Pests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdfPests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdfPirithiRaju
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPirithiRaju
 
module for grade 9 for distance learning
module for grade 9 for distance learningmodule for grade 9 for distance learning
module for grade 9 for distance learninglevieagacer
 
GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)Areesha Ahmad
 
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.Nitya salvi
 
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑Damini Dixit
 
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICESAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICEayushi9330
 
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...Monika Rani
 
Molecular markers- RFLP, RAPD, AFLP, SNP etc.
Molecular markers- RFLP, RAPD, AFLP, SNP etc.Molecular markers- RFLP, RAPD, AFLP, SNP etc.
Molecular markers- RFLP, RAPD, AFLP, SNP etc.Silpa
 
Grade 7 - Lesson 1 - Microscope and Its Functions
Grade 7 - Lesson 1 - Microscope and Its FunctionsGrade 7 - Lesson 1 - Microscope and Its Functions
Grade 7 - Lesson 1 - Microscope and Its FunctionsOrtegaSyrineMay
 
GBSN - Microbiology (Unit 2)
GBSN - Microbiology (Unit 2)GBSN - Microbiology (Unit 2)
GBSN - Microbiology (Unit 2)Areesha Ahmad
 
Bacterial Identification and Classifications
Bacterial Identification and ClassificationsBacterial Identification and Classifications
Bacterial Identification and ClassificationsAreesha Ahmad
 
Introduction to Viruses
Introduction to VirusesIntroduction to Viruses
Introduction to VirusesAreesha Ahmad
 
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...chandars293
 
GBSN - Biochemistry (Unit 1)
GBSN - Biochemistry (Unit 1)GBSN - Biochemistry (Unit 1)
GBSN - Biochemistry (Unit 1)Areesha Ahmad
 
chemical bonding Essentials of Physical Chemistry2.pdf
chemical bonding Essentials of Physical Chemistry2.pdfchemical bonding Essentials of Physical Chemistry2.pdf
chemical bonding Essentials of Physical Chemistry2.pdfTukamushabaBismark
 

Último (20)

Conjugation, transduction and transformation
Conjugation, transduction and transformationConjugation, transduction and transformation
Conjugation, transduction and transformation
 
Forensic Biology & Its biological significance.pdf
Forensic Biology & Its biological significance.pdfForensic Biology & Its biological significance.pdf
Forensic Biology & Its biological significance.pdf
 
Sector 62, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 62, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Pulmonary drug delivery system M.pharm -2nd sem P'ceutics
Pulmonary drug delivery system M.pharm -2nd sem P'ceuticsPulmonary drug delivery system M.pharm -2nd sem P'ceutics
Pulmonary drug delivery system M.pharm -2nd sem P'ceutics
 
Pests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdfPests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdf
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
 
module for grade 9 for distance learning
module for grade 9 for distance learningmodule for grade 9 for distance learning
module for grade 9 for distance learning
 
GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)
 
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
 
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
 
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICESAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
 
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
 
Molecular markers- RFLP, RAPD, AFLP, SNP etc.
Molecular markers- RFLP, RAPD, AFLP, SNP etc.Molecular markers- RFLP, RAPD, AFLP, SNP etc.
Molecular markers- RFLP, RAPD, AFLP, SNP etc.
 
Grade 7 - Lesson 1 - Microscope and Its Functions
Grade 7 - Lesson 1 - Microscope and Its FunctionsGrade 7 - Lesson 1 - Microscope and Its Functions
Grade 7 - Lesson 1 - Microscope and Its Functions
 
GBSN - Microbiology (Unit 2)
GBSN - Microbiology (Unit 2)GBSN - Microbiology (Unit 2)
GBSN - Microbiology (Unit 2)
 
Bacterial Identification and Classifications
Bacterial Identification and ClassificationsBacterial Identification and Classifications
Bacterial Identification and Classifications
 
Introduction to Viruses
Introduction to VirusesIntroduction to Viruses
Introduction to Viruses
 
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
 
GBSN - Biochemistry (Unit 1)
GBSN - Biochemistry (Unit 1)GBSN - Biochemistry (Unit 1)
GBSN - Biochemistry (Unit 1)
 
chemical bonding Essentials of Physical Chemistry2.pdf
chemical bonding Essentials of Physical Chemistry2.pdfchemical bonding Essentials of Physical Chemistry2.pdf
chemical bonding Essentials of Physical Chemistry2.pdf
 

Re-Implementing Apache Thrift using Model-Driven Engineering Technologies: An Experience Report

  • 1. Re-Implementing Apache Thrift using Model-Driven Engineering Technologies: An Experience Report Sina Madani and Dimitris Kolovos Department of Computer Science University of York {sm1748, dimitris.kolovos}@york.ac.uk S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 1/9
  • 2. Motivation Several experience reports on applications of MDE in industry Mostly based on interviews Limited availability of “hard data” e.g. measurements extracted by implementing the same software with/without MDE technologies Such data can provide useful insights and/or act as a good marketing tool for MDE S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 2/9
  • 3. In this work . . . We re-implemented a subset of Apache Thrift using EMF, Xtext and Epsilon Thrift is a web-services framework originally developed at Facebook (http://thrift.apache.org) Re-implementaton available in https://github.com/SMadani/ThriftMDE/ We performed quantitative and qualitative comparison of the two implementations S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 3/9
  • 4. Apache Thrift Interface description language for modelling services, input/output data types/structures (similar to CORBA’s IDL) Several transport protocols (e.g. JSON, binary, compressed) “Compiler” that produces client/server stubs from interface descriptions in Java, Ruby, JavaScript etc. Compiler implemented using flex, Bison and C++ Code generation through string concatenation (!!) S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 4/9
  • 5. MDE re-implementation of Thrift’s Compiler Hand-crafted abstract syntax → EMF flex, Bison → Xtext Model validation in C++ → OCL-like constraints Implemented using the Epsilon Validation Language (EVL) Concatenation-based code generators → Template-based code generators Implemented using the Epsilon Generation Language (EGL) Only re-implemented code generators for Ruby and Java To enable automated equivalence testing we produce identical code (including bugs) S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 5/9
  • 6. Quantitative Evaluation: Lines of Code Implementation Original MDE Difference Language definition (parsing & validation) 3,419 447 -87% Language-neutral code 712 1,036 +68% Java generator 5,129 2,224 -57% Ruby generator 1,231 422 -66% Total 10,491 4,149 -60% Remarks We only counted hand-written code for both implementations (i.e. excluded code generated by flex, Bison, EMF and Xtext) S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 6/9
  • 7. Quantitative Evaluation: KBs (characters) Implementation Original MDE Difference Language definition (parsing & validation) 105 14 -87% Language-neutral code 22 26 +15% Java generator 187 73 -61% Ruby generator 40 14 -65% Total 395 128 -68% S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 7/9
  • 8. Qualitative Evaluation The MDE implementation is more modular Code generation is split over a number of templates for each language vs. all in one class in the current implementation Validation logic is contained in a set of EVL constraints vs. being spread across the codebase Xtext is significantly more concise than flex and Bison Using a template-based code generation language Reduced the accidental complexity of string concatenation Made little difference in terms of the complexity of the output computation logic S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 8/9
  • 9. Conclusions and Further Work The MDE re-implementation is significantly more concise (60-70%) To argue about maintainability we need to conduct experiments involving developers Xtext is a significant improvement over flex and Bison A template-based code generation language is more concise but does not reduce the complexity of the code generator Irreducable essential complexity? Our conclusions are based on one data point Need to repeat this exercise with additional software to build confidence (e.g. Google Protocol Buffers?) S. Madani et. al. – OCL Workshop 2016 September 14, 2016 – Slide 9/9