This document describes a master's thesis that develops multiple interacting domain-specific languages (DSLs) to model different technical domains for the purpose of generating a complete Java-based web application. It aims to increase productivity and quality by abstracting away implementation details and focusing on domain concepts. The thesis will develop DSLs for modeling domain data (generating JPA), modeling the view side of web applications (generating Seam/JSF/Facelets), and modeling domain-specific business rules. It explores whether multiple interacting DSLs are feasible and how their interaction should be implemented.
This document provides a summary of Srinivasa Vithal Charakana's technical background and experience. It outlines over 12 years of experience in architecting, designing, and developing applications using languages like C++, C, Linux, and design patterns. Some key projects mentioned include work on Disk to Disk Backup Systems, Cisco Enterprise Printing Software, and handwriting recognition tools. The document details skills, responsibilities, education history, and additional experience in areas such as networking, telecom, and storage domains.
Subhadra Banerjee has over 10 years of experience in software development using technologies like Java, J2EE, Documentum, and Oracle. He has worked as a senior systems engineer, lead engineer, and project lead on various projects for clients in banking, energy, and other industries. His experience includes requirements gathering, design, development, testing, deployment, and support of Documentum and Java applications.
This document provides a summary of an individual's experience as a data scientist and solution architect. It includes details on their skills and qualifications in areas like machine learning, deep learning, neural networks, NLP, computer vision, and data engineering. It also lists several projects they have worked on involving building machine learning models for tasks like threat detection, hand detection for safety, and endpoint detection and response. Their roles included developing and validating models, deploying solutions, and collaborating with cross-functional teams.
This document describes data from a controlled, multiple case study of software evolution and defects from industrial projects. The study involved 12 software projects developed by 6 programmers across 2 systems. Data was collected on code smells, code changes, defects, task dates and other variables. Code, code smells and evolution data are available online, along with defect reports extracted from issue tracking systems. The goal is to enable further analysis of factors that influence software maintainability.
Sagar Ware has over 9 years of experience in the VOIP domain working with companies like TATA Elxsi, Avaya, and Polycom. He has extensive experience in C/C++ and networking protocols like SIP, H323, and BFCP. He has worked as a team lead and individual contributor on projects involving VOIP devices, telepresence solutions, and docking stations. His roles have included requirements gathering, documentation, estimates, implementations, testing, and customer support.
Vinod Pachpute has over 5 years of experience working with Tibco BW, EMS, and other technologies. He has worked on projects for clients like CitiBank and ICICI Bank developing integrations and interfaces. His skills include Java, Tibco products, SQL, and web technologies. He is currently working as a Software Developer at LnT Infotech.
- The document is a resume for Anand Madhab summarizing his career and technical experience. He has over 6 years of experience developing software in C/C++/Python with a focus on computer networking. His most recent role is at Cisco Systems developing SNMP infrastructure. He is proficient in data structures, networking concepts, and Agile methodologies.
N. Muruganandam has over 7 years of experience in networking, with a focus on LTE and wireless technologies. He is currently a Senior Engineer at Radisys India Pvt. Ltd. He has worked on various projects involving LTE protocol stack development, integration, and testing. His skills include C/C++ programming, Linux, networking tools like Wireshark, and software engineering methodologies like version control systems. He has a Bachelor's degree in Electrical and Electronics Engineering from PSG College of Technology.
This document provides a summary of Srinivasa Vithal Charakana's technical background and experience. It outlines over 12 years of experience in architecting, designing, and developing applications using languages like C++, C, Linux, and design patterns. Some key projects mentioned include work on Disk to Disk Backup Systems, Cisco Enterprise Printing Software, and handwriting recognition tools. The document details skills, responsibilities, education history, and additional experience in areas such as networking, telecom, and storage domains.
Subhadra Banerjee has over 10 years of experience in software development using technologies like Java, J2EE, Documentum, and Oracle. He has worked as a senior systems engineer, lead engineer, and project lead on various projects for clients in banking, energy, and other industries. His experience includes requirements gathering, design, development, testing, deployment, and support of Documentum and Java applications.
This document provides a summary of an individual's experience as a data scientist and solution architect. It includes details on their skills and qualifications in areas like machine learning, deep learning, neural networks, NLP, computer vision, and data engineering. It also lists several projects they have worked on involving building machine learning models for tasks like threat detection, hand detection for safety, and endpoint detection and response. Their roles included developing and validating models, deploying solutions, and collaborating with cross-functional teams.
This document describes data from a controlled, multiple case study of software evolution and defects from industrial projects. The study involved 12 software projects developed by 6 programmers across 2 systems. Data was collected on code smells, code changes, defects, task dates and other variables. Code, code smells and evolution data are available online, along with defect reports extracted from issue tracking systems. The goal is to enable further analysis of factors that influence software maintainability.
Sagar Ware has over 9 years of experience in the VOIP domain working with companies like TATA Elxsi, Avaya, and Polycom. He has extensive experience in C/C++ and networking protocols like SIP, H323, and BFCP. He has worked as a team lead and individual contributor on projects involving VOIP devices, telepresence solutions, and docking stations. His roles have included requirements gathering, documentation, estimates, implementations, testing, and customer support.
Vinod Pachpute has over 5 years of experience working with Tibco BW, EMS, and other technologies. He has worked on projects for clients like CitiBank and ICICI Bank developing integrations and interfaces. His skills include Java, Tibco products, SQL, and web technologies. He is currently working as a Software Developer at LnT Infotech.
- The document is a resume for Anand Madhab summarizing his career and technical experience. He has over 6 years of experience developing software in C/C++/Python with a focus on computer networking. His most recent role is at Cisco Systems developing SNMP infrastructure. He is proficient in data structures, networking concepts, and Agile methodologies.
N. Muruganandam has over 7 years of experience in networking, with a focus on LTE and wireless technologies. He is currently a Senior Engineer at Radisys India Pvt. Ltd. He has worked on various projects involving LTE protocol stack development, integration, and testing. His skills include C/C++ programming, Linux, networking tools like Wireshark, and software engineering methodologies like version control systems. He has a Bachelor's degree in Electrical and Electronics Engineering from PSG College of Technology.
- Dishit Joshi is an embedded software engineer with over 3 years of experience developing firmware in C/C++/Python for microcontrollers and networking applications.
- He has expertise in software design, development, and testing of real-time embedded systems, as well as experience implementing networking protocols and continuous integration tools.
- His background includes projects in fields such as industrial automation, networking infrastructure, and industrial IoT/IIoT systems.
Jelita Asian is an experienced software developer, researcher, and lecturer with over 15 years of experience. She has worked as a lecturer at Surya University since 2011, teaching programming, data structures, algorithms, and other computer science courses. Prior to that, she held various software engineering roles in Australia and Singapore, developing applications using languages such as Java, C++, Python and more. She received her PhD in Computer Science from RMIT University in 2007.
The document provides an overview of docfacto, a company developing tools to help developers and technical authors with documentation. Docfacto tools work within IDEs to link code and documentation, capture designs, and help eliminate documentation debt. The tools include docfacto Adam for checking Javadoc comments against code, docfacto Links for linking code and docs and tracking broken links, and docfacto Beermat for creating diagrams. The goal is to put developers at the core of the documentation process and structure content for reusability.
This curriculum vitae summarizes the education and experience of Mohamed El-Sayed Ahmed EL-Abacy. He has a BS.c in Computer Science from Ain Shams University with a grade of 63%. His graduation project involved developing a web-based recruitment and job search application. He has experience in programming languages like C#, Java, C++ and databases like SQL Server. He is seeking a position in business solutions development.
This document contains a resume summary for an IT professional seeking senior level technical architecture roles. It outlines over 14 years of experience in application design, development and testing using technologies like Java, JSP, Spring and various application servers and databases. It also lists roles as a technical lead and experience in requirements gathering, design, security reviews, troubleshooting, and managing project teams. Core competencies include architecture definition, technology selection, process setup, implementation, and testing.
This document contains a summary of Bikram Kishor Rout's resume. It outlines his experience working as a Business Intelligence delivery specialist for 9 years. It lists his technical skills including programming languages like C, C++, Perl, and databases like Oracle. It also provides details of several projects he has worked on for clients like Infosys, DNB Bank, Neptune Oriented Lines, and Hitachi Network, focusing on areas like data warehousing, business intelligence, and network monitoring.
This document contains the resume of DinakaraPandian.P. It summarizes his objective, experience, skills and qualifications. He has over 9 years of experience in the IT industry with expertise in automotive and home media infotainment systems. He is seeking a challenging role in the automotive/embedded industry where he can contribute to organizational success. He has extensive experience developing software for instrument clusters, infotainment systems and other automotive electronics.
This document summarizes a project report submitted by Anish Yadav for a summer training at HCL CDC on Core Java (J2SE). The project involved developing the game "Housie" using Java Swing and event handling. The report acknowledges the guidance provided, describes the game and its winning combinations, outlines the objectives and hardware/software requirements, and discusses key aspects of Java used in developing the project.
Madhurima Das is seeking a challenging role in software design and development. She has 7 years of experience in the SDLC, including requirements gathering, design, testing, and support. She is proficient in C++, Verilog, and VHDL and has expertise in EDA tools. Her previous roles include projects involving mixed Verilog-VHDL support, state machine conversion, and netlist optimization. She is a team player with strong technical skills.
V.S.Vamsi Krishna has over 8 years of experience in C, C++, Linux, and network application development. He currently works as a Senior Staff Engineer at Broadcom, Bangalore, where he performs proof of concepts for Broadcom switches and features. Previously he held roles at Cisco, Emerson Network Power, and Embedded Infotech developing software for networking and security applications and devices.
Balaji K has over 10 years of experience in release management, deployment management, and configuration management. He is currently working as a Release & Deployment Manager for Nielsen NDX, a retail project, where he is leading the DevOps initiative including managing code in Bitbucket and implementing continuous integration in Jenkins. Previously he has worked on other projects for clients like Nielsen and A.P. Moller-Maersk. He is proficient with tools like Oracle, Java, Hudson, Jenkins, Hadoop, UNIX, and version control systems.
PrimeSoft Solutions was contracted to develop a UMA Handset Simulator for a client. An 18-member team at PrimeSoft's offshore development center was created to work on the project. The team developed the simulator through requirements analysis, specifications, design, coding, testing, and delivering documentation. The UMA Simulator allows automated testing of UMA functionality and supports complex handover scenarios. PrimeSoft also supports long-term testing of the client's Multi Access Gateway product through manual and automation test plans.
The document introduces model-driven software development (MDSD) and provides examples to illustrate key concepts. MDSD uses models as primary artifacts in the development process which are transformed to executable code. Models conform to metamodels and can be transformed through one or more steps. Examples show models of components, workflows, and a power grid, along with their corresponding metamodels. MDSD aims to increase reuse, separate domain expertise from technical concerns, and make the development process more efficient.
DAVETM 3 is a free toolset for automatic code generation that significantly shortens the time and effort for software development for Infineon's XMC 4500 microcontroller series. It merges the functionalities of earlier DAVETM tools into a single tool. DAVETM 3 uses predefined and tested software components called DAVETM Apps that can be selected and configured graphically to generate optimized code. This component-based approach allows developers to quickly build embedded applications.
20090410 J Spring Pragmatic Model Driven Development In Java Using SmartSander Hoogendoorn
Ā
In this unstable economy, organizations target software development at shorter time-to-market and high productivity. Model driven development has a promise of raising productivity in projects. However, many approach fail to deliver this promise. During this high-paced, interactive talk speakers Sander Hoogendoorn (Principal Technology Officer and agile thought leader at Capgemini) and Rody Middelkoop (Technical evangelist at Avisi, and lecturer at the Hogeschool Arnhem Nijmegen) share their very pragmatic approach to delivering software using model driven development. First, Sander will elaborate on the modeling and code generation approach, that relies on smart use cases and smart use case stereotype, a solid software architecture and domain driven design. Next, Rody will take the stage and demonstrate how this approach effects building Java web applications, generating a fully deployable Java EAR live on stage! Although other architectures and frameworks can be applied, Rody will use open source Java frameworks such as Ant, FreeMarker, Struts2, Spring and JPA/Hibernate3.
This document summarizes the motivations and challenges of compiling heterogeneous models. It discusses bringing together system, software, and control engineering disciplines by defining a common intermediate language. This presents challenges including achieving semantic convergence between different domain-specific modeling languages and verifying integration while ensuring properties are maintained from models to generated code. Flexible and open qualification is also a challenge to enable incremental re-qualification and support for new inputs and code generation strategies.
The document summarizes IBM's Rational Software Conference 2009. It discusses challenges in embedded software development like requirements shifts, low memory footprints, and debugging difficulties. It introduces IBM Rational Test RealTime as a solution that allows automated component testing at all levels from simple functions to distributed systems. It also enables runtime analysis through profiling, tracing, and linking of code, tests, and models. The tool aims to help developers test throughout development rather than just debugging later, to catch issues early and ensure quality and stability of embedded software projects.
Siva Srinivas is a Senior Technical Specialist at TPVision in Bangalore, India. He has over 9 years of experience developing Android and embedded software solutions. His skills include Java, C/C++, Android, REST APIs, DVB standards, and Agile methodologies. He has experience leading projects for digital TV applications and set-top boxes.
The document discusses the concept of owning or enclosing a language. It argues that if someone could own the English language, it would severely limit free speech and communication. The architecture used to implement currencies inherently leads to enclosure, concentrating power and wealth. Overall, the document cautions against allowing ownership of languages or architectures like currencies that can enable enclosure.
- Dishit Joshi is an embedded software engineer with over 3 years of experience developing firmware in C/C++/Python for microcontrollers and networking applications.
- He has expertise in software design, development, and testing of real-time embedded systems, as well as experience implementing networking protocols and continuous integration tools.
- His background includes projects in fields such as industrial automation, networking infrastructure, and industrial IoT/IIoT systems.
Jelita Asian is an experienced software developer, researcher, and lecturer with over 15 years of experience. She has worked as a lecturer at Surya University since 2011, teaching programming, data structures, algorithms, and other computer science courses. Prior to that, she held various software engineering roles in Australia and Singapore, developing applications using languages such as Java, C++, Python and more. She received her PhD in Computer Science from RMIT University in 2007.
The document provides an overview of docfacto, a company developing tools to help developers and technical authors with documentation. Docfacto tools work within IDEs to link code and documentation, capture designs, and help eliminate documentation debt. The tools include docfacto Adam for checking Javadoc comments against code, docfacto Links for linking code and docs and tracking broken links, and docfacto Beermat for creating diagrams. The goal is to put developers at the core of the documentation process and structure content for reusability.
This curriculum vitae summarizes the education and experience of Mohamed El-Sayed Ahmed EL-Abacy. He has a BS.c in Computer Science from Ain Shams University with a grade of 63%. His graduation project involved developing a web-based recruitment and job search application. He has experience in programming languages like C#, Java, C++ and databases like SQL Server. He is seeking a position in business solutions development.
This document contains a resume summary for an IT professional seeking senior level technical architecture roles. It outlines over 14 years of experience in application design, development and testing using technologies like Java, JSP, Spring and various application servers and databases. It also lists roles as a technical lead and experience in requirements gathering, design, security reviews, troubleshooting, and managing project teams. Core competencies include architecture definition, technology selection, process setup, implementation, and testing.
This document contains a summary of Bikram Kishor Rout's resume. It outlines his experience working as a Business Intelligence delivery specialist for 9 years. It lists his technical skills including programming languages like C, C++, Perl, and databases like Oracle. It also provides details of several projects he has worked on for clients like Infosys, DNB Bank, Neptune Oriented Lines, and Hitachi Network, focusing on areas like data warehousing, business intelligence, and network monitoring.
This document contains the resume of DinakaraPandian.P. It summarizes his objective, experience, skills and qualifications. He has over 9 years of experience in the IT industry with expertise in automotive and home media infotainment systems. He is seeking a challenging role in the automotive/embedded industry where he can contribute to organizational success. He has extensive experience developing software for instrument clusters, infotainment systems and other automotive electronics.
This document summarizes a project report submitted by Anish Yadav for a summer training at HCL CDC on Core Java (J2SE). The project involved developing the game "Housie" using Java Swing and event handling. The report acknowledges the guidance provided, describes the game and its winning combinations, outlines the objectives and hardware/software requirements, and discusses key aspects of Java used in developing the project.
Madhurima Das is seeking a challenging role in software design and development. She has 7 years of experience in the SDLC, including requirements gathering, design, testing, and support. She is proficient in C++, Verilog, and VHDL and has expertise in EDA tools. Her previous roles include projects involving mixed Verilog-VHDL support, state machine conversion, and netlist optimization. She is a team player with strong technical skills.
V.S.Vamsi Krishna has over 8 years of experience in C, C++, Linux, and network application development. He currently works as a Senior Staff Engineer at Broadcom, Bangalore, where he performs proof of concepts for Broadcom switches and features. Previously he held roles at Cisco, Emerson Network Power, and Embedded Infotech developing software for networking and security applications and devices.
Balaji K has over 10 years of experience in release management, deployment management, and configuration management. He is currently working as a Release & Deployment Manager for Nielsen NDX, a retail project, where he is leading the DevOps initiative including managing code in Bitbucket and implementing continuous integration in Jenkins. Previously he has worked on other projects for clients like Nielsen and A.P. Moller-Maersk. He is proficient with tools like Oracle, Java, Hudson, Jenkins, Hadoop, UNIX, and version control systems.
PrimeSoft Solutions was contracted to develop a UMA Handset Simulator for a client. An 18-member team at PrimeSoft's offshore development center was created to work on the project. The team developed the simulator through requirements analysis, specifications, design, coding, testing, and delivering documentation. The UMA Simulator allows automated testing of UMA functionality and supports complex handover scenarios. PrimeSoft also supports long-term testing of the client's Multi Access Gateway product through manual and automation test plans.
The document introduces model-driven software development (MDSD) and provides examples to illustrate key concepts. MDSD uses models as primary artifacts in the development process which are transformed to executable code. Models conform to metamodels and can be transformed through one or more steps. Examples show models of components, workflows, and a power grid, along with their corresponding metamodels. MDSD aims to increase reuse, separate domain expertise from technical concerns, and make the development process more efficient.
DAVETM 3 is a free toolset for automatic code generation that significantly shortens the time and effort for software development for Infineon's XMC 4500 microcontroller series. It merges the functionalities of earlier DAVETM tools into a single tool. DAVETM 3 uses predefined and tested software components called DAVETM Apps that can be selected and configured graphically to generate optimized code. This component-based approach allows developers to quickly build embedded applications.
20090410 J Spring Pragmatic Model Driven Development In Java Using SmartSander Hoogendoorn
Ā
In this unstable economy, organizations target software development at shorter time-to-market and high productivity. Model driven development has a promise of raising productivity in projects. However, many approach fail to deliver this promise. During this high-paced, interactive talk speakers Sander Hoogendoorn (Principal Technology Officer and agile thought leader at Capgemini) and Rody Middelkoop (Technical evangelist at Avisi, and lecturer at the Hogeschool Arnhem Nijmegen) share their very pragmatic approach to delivering software using model driven development. First, Sander will elaborate on the modeling and code generation approach, that relies on smart use cases and smart use case stereotype, a solid software architecture and domain driven design. Next, Rody will take the stage and demonstrate how this approach effects building Java web applications, generating a fully deployable Java EAR live on stage! Although other architectures and frameworks can be applied, Rody will use open source Java frameworks such as Ant, FreeMarker, Struts2, Spring and JPA/Hibernate3.
This document summarizes the motivations and challenges of compiling heterogeneous models. It discusses bringing together system, software, and control engineering disciplines by defining a common intermediate language. This presents challenges including achieving semantic convergence between different domain-specific modeling languages and verifying integration while ensuring properties are maintained from models to generated code. Flexible and open qualification is also a challenge to enable incremental re-qualification and support for new inputs and code generation strategies.
The document summarizes IBM's Rational Software Conference 2009. It discusses challenges in embedded software development like requirements shifts, low memory footprints, and debugging difficulties. It introduces IBM Rational Test RealTime as a solution that allows automated component testing at all levels from simple functions to distributed systems. It also enables runtime analysis through profiling, tracing, and linking of code, tests, and models. The tool aims to help developers test throughout development rather than just debugging later, to catch issues early and ensure quality and stability of embedded software projects.
Siva Srinivas is a Senior Technical Specialist at TPVision in Bangalore, India. He has over 9 years of experience developing Android and embedded software solutions. His skills include Java, C/C++, Android, REST APIs, DVB standards, and Agile methodologies. He has experience leading projects for digital TV applications and set-top boxes.
The document discusses the concept of owning or enclosing a language. It argues that if someone could own the English language, it would severely limit free speech and communication. The architecture used to implement currencies inherently leads to enclosure, concentrating power and wealth. Overall, the document cautions against allowing ownership of languages or architectures like currencies that can enable enclosure.
This document describes a branded personal assistance program that companies can provide to customers, prospects, employees, and members. The program involves distributing custom greeting cards that contain a toll-free number to access live 24/7 phone-based personal assistants. Assistants are trained to help with various tasks like making reservations, finding information, completing purchases, and more. The goal is to provide a high level of personalized service and help callers feel valued.
The document discusses the concept of owning or enclosing a language. It argues that if someone could own the English language, it would severely limit free speech and communication. The architecture used to implement currencies inherently leads to enclosure, concentrating power and wealth. Overall, the document cautions against allowing ownership of languages or architectures like currencies that can enable enclosure.
1. The document appears to be a collection of assignments, writing samples, and reflections from a student in Term 4 of 2009.
2. It includes summaries of the student's spelling achievements, goals, a wanted poster they created, and monster portrait description.
3. It also touches on the student's participation in athletics, use of language features in writing, and knowledge of topics like geometry, te reo, and music artists.
The document discusses green and sustainable practices for event venues and meetings. It recommends establishing a green team to brainstorm strategies like waste reduction, recycling, using reusable and biodegradable products, electronic registration, energy efficiency, and public recognition to minimize environmental impact throughout event planning and execution. The goal is to incorporate environmental considerations at all stages to meet industry standards for green meetings.
Cross-Build Injection attacks are a completely new class of attacks that take place at build time. In this presentation (which was presented at JavaOne 2012) I show what the problem is and what can be done about. As always, security doesn't come for free: you'll have to work to get it right!
(unfortunately, some graphics got mangled by the SlideShare conversion. Sorry!)
Trust Evaluation through User Reputation and Provenance AnalysisDavide Ceolin
Ā
This document proposes combining user reputation and provenance analysis to evaluate trust in crowdsourced video annotations. It outlines using a beta distribution to model user reputation based on past annotation matches. Provenance-based trust is estimated using support vector machines on annotation metadata like timestamp. Results found reputation provides a more fine-grained trust estimate than provenance alone, but provenance can estimate trust when reputation data is limited. Future work aims to apply the approach to other domains and develop a generic trust assessment platform based on annotated provenance graphs.
We take existing popular paid BlackberryĀ® mobile applications that people often use (e.g. Texas HoldāEm, Solitaire, Tip Calculator, etc.), brand them, and allow companies to give them out as promotional incentives
Contextual discovery in business intelligence allows users to personalize their workspaces and connect both structured and unstructured data. It features recorded annotations, discussions, and contextual search capabilities. Relevancy is determined by a user's interests, friends, discussions, and annotations, in addition to the underlying data. This helps users focus on relevant information faster to move from data to actionable insights.
Violating The Rights of The Child; When "Faith" Violates the Faith in Human R...Bayan Waleed Shadaideh
Ā
The document discusses the widespread sexual abuse of children by Catholic priests across many countries. It provides statistics on the large number of victims and massive financial costs of the abuse. The author argues that such abuse by religious leaders deeply damages victims' development and mental health, and often leads to problems like substance abuse, domestic violence, and further criminal behavior. While efforts have been made to prevent child abuse, the author says it is still a major global problem enabled by failures to protect children's rights and hold abusers accountable.
The document discusses the need for open source economies and open currencies. It proposes that three new components are needed to enable open currencies: open transport, open rules, and open data. Open transport, rules, and data would allow for greater choice, power, and transparency compared to closed systems.
This document provides an overview of key performance indicators (KPIs) and how to define them in Necto Training. It discusses how KPIs can help monitor progress towards goals and highlight variances from targets. It then demonstrates how to use the KPI wizard to define KPIs, including selecting a view, goal, minimum/maximum values, display options, and trend. Users are instructed to define KPIs to track whether sales goals and customer targets have been reached.
The document discusses domain-specific languages (DSLs), which are programming languages designed for a specific application domain. It notes that DSLs allow for more expressive and declarative programming compared to traditional languages. The document also outlines some of the challenges in developing and ensuring reusability of DSLs. However, it argues that DSLs can capture domain expertise in a dedicated syntax that is easier for developers to learn and use compared to general purpose languages. When integrated with Bird Technology's tools, DSLs can provide added value by delivering high performance interpreters and compilers.
This document provides an overview and introduction to domain-driven design (DDD). It discusses the core principles of DDD, including focusing on modeling the domain, capturing domain knowledge in software models, and structuring software around domain concepts. The document also summarizes some common DDD patterns and techniques for managing complexity, such as ubiquitous language, layered architecture, aggregates, entities, value objects, services, factories, and repositories. The overall goal of DDD is to build software that is closely aligned with the conceptual model of the problem domain.
The document discusses using model-driven architectures and code generators to increase efficiency in software development. It proposes generating code from models and databases to avoid duplicative work. This allows focusing on domain-specific architectures and knowledge work rather than repetitive coding. Examples of code generators like MyGeneration and CodeSmith Studio are provided.
DSM is a higher level of CASE process, a way to model data structures and logic in domain concepts independent from programming languages and thus also include syntax details. The final source code in a desired programming language is derived automatically from these high concept models by using exact language generators.The whole process of Meta-modeling in the MetaEdit+ tool rotates around the Meta types represented together as GOPPRR
Ravindra Prasad has over 10 years of experience as a Software Development Engineer and SDET. He has extensive experience developing automation frameworks using C# and technologies like Selenium, Coded UI, and Visual Studio. Some of his responsibilities include writing test automation scripts; developing keyword-driven and page object frameworks; and managing teams of 4-7 people on projects for clients such as Dell and Microsoft. He is proficient in languages like C# and databases like SQL Server, and has experience across the full development lifecycle from requirements to delivery.
This document discusses domain-specific languages (DSLs) and the Xtext framework for developing DSLs. It provides an overview of what is needed to build a DSL, including a parser, type checker, code generator, and IDE features. The document also summarizes the history and key features of Xtext, such as its grammar-driven and proven compiler architecture, and demonstrates Xtext through examples.
Stream SQL eventflow visual programming for real programmers presentationstreambase
Ā
Richard Tibbetts, CTO, StreamBase Systems.
StreamSQL EventFlow is one of the most popular languages for Complex Event Processing (CEP), a data management paradigm for real-time applications. Based on a stream-relational data model common to other CEP languages, EventFlow is unique in that it is a visual language. This talk will focus on the design of visual representations for key features including event dispatch, modularity, data parallelism, polymorphism, and dependency injection, and on the co-development of an Eclipse-based IDE along with a new programming language. StreamSQL EventFlow is the primary programming language for the StreamBase Event Processing Platform.
Complex Event Processing platforms are used to process large volumes of event-oriented data in real-time, often in latency-critical applications such as securities trading. Combining clustering, messaging, queuing, data storage, and application logic into one system minimizes latency and gives the programmer control over all aspects of the application.
StreamSQL EventFlow is an executable visual language for building CEP applications, unlike visual environments designed for non-developers, or architecture-focused modeling tools. The talk will cover experiences overcoming prejudice against visual programming languages, and how critical development tools are to that process. We will also discuss some details of the implementation including the compiler, a visual debugger, and diff/merge functionality.
Class 6: Introduction to web technology entrepreneurshipallanchao
Ā
This document outlines the agenda and content for a startup programming course session. The session covers advanced integrated development environments, backend programming, databases, APIs, and technology stacks. It provides overviews and comparisons of these topics. It also includes examples, such as code snippets, database models, and technology stack options. Homework involves continuing to build a startup project by programming additional pages, designing a database, and developing a pitch deck.
This document introduces domain-driven design (DDD) as an approach to tackling complexity in software development. It discusses how DDD draws from concepts like dividing problems into smaller pieces and iterative development. The core of DDD involves collaboratively building domain models through a ubiquitous language within bounded contexts. This helps create a shared understanding between domain experts and software developers. The document provides examples of DDD building blocks like entities, value objects, aggregates, and events. It suggests DDD is best for problems that are complicated, innovative, and high value, where organizations are committed to collaboration between domain and development teams.
Sudhir Srivastava is a senior software engineer with over 4 years of experience in Java/J2EE development. He is currently working on the Global Sales Platform for MetLife Insurance, which provides quoting and point of sale capabilities using technologies like Spring, Hibernate, and IBM WebSphere. Previously, he worked on the Enterprise Claim System for StateFarm Insurance, developing solutions involving Java, XSL, and DB2 and providing defect support. He has expertise in the software development life cycle, agile methodologies, and technologies like Java, SQL, and XML.
The document discusses domain-driven design (DDD) and its advantages. It explains that DDD focuses development around modeling a problem domain to address the complexity of different characters communicating in different languages. It advocates developing a shared language and domain model so that everybody involved talks using the same terminology. This improves cohesion, isolates domain logic, and makes the solution more robust and less brittle.
The resume summarizes Mahesh Meesala's experience as a webMethods developer with around 3 years of experience in middleware integration development. He has worked on several projects for clients like GE, developing and implementing interfaces between various applications using webMethods. Some of the key projects mentioned are an ongoing SMF interfaces project, a Maximo thermal upgrade project, and a ZealERP to MaximoHungary integration project.
The document contains a resume for Mohamed Aashik Ali A, an experienced Lotus Notes/Web/XPages developer seeking a new role. He has over 7 years of experience developing applications using technologies like Lotus Notes, HTML, CSS, JavaScript, and more. Some of his project experiences include developing applications for British American Tobacco and Parexel.
Saiganesh Chintala has over 8 years of experience as a Java developer. He has extensive experience with technologies like Java, J2EE, Spring, Hibernate, XML, and databases like Oracle. He has worked as a senior developer and technical lead on projects for clients like Baxter and Deutsche Bank, developing applications involving web services, user interfaces, databases, and following agile methodologies. He is proficient in all phases of the development lifecycle from requirements to deployment.
This document contains a summary of Rizwan Farooq's professional experience and qualifications. He has over 6 years of experience developing web and desktop applications using Microsoft technologies like C#, ASP.NET, and SQL Server. Some of the projects he has worked on include an HR information system, orthodontics practice management software, and accounting software for publishers. He also has a bachelor's degree in computer science and engineering.
ļ
ļ
Guidance on next steps
Links to relevant content
Custom Process
ļ¬
Customers can:
ļ
ļ
ļ
ļ
ļ¬
Create new process templates
Customize existing templates
Define new work item types
Customize workflow, forms, rules
Process Editor:
ļ
ļ
ļ
Visual designer
Import/export process definitions
Versioning of process definitions
Team Foundation Server
V2 Roadmap
ļ¬
Integration with SharePoint
ļ
ļ¬
Customizable dashboards
ļ
Siva Kumar S G has over 8 years of experience designing and developing Java/J2EE applications. He has expertise in technologies like Spring, Struts, Hibernate, JPA, JMS, Web Services, and RESTful services. He has worked extensively on projects involving content management systems, SOA, and integrating applications using BPEL and web services. Siva Kumar currently works as a Java Technical Architect for Daimler Trucks on their online warranty application.
Dipalee Shah is seeking assignments with major international organizations that allow her to demonstrate her potential. She has over 2 years of experience in product development with skills in Java, algorithms, agile methodology, and telecom domains. Her technical skills include Java, XML, databases, application servers, and source control tools. She has worked on projects involving CRM platforms, de-duplication tools, network configuration, and DNS implementation.
Similar to Interacting Domain Specific Languages (20)
It seems like keeping up to date with Java nowadays can be a daunting task. Gone is the era of big, delayed Java releases that span years. Weāre now getting a new major release every six months. Whatās up with that? Youāre probably still developing on Java 8, even though Java 13 is almost released already. Attend this session to get a code-first overview of whatās new in Java since Java 8. Youāll get an overview of the module system (Java 9), the local variable type inference feature (Java 10), and the new HttpClient API (Java 11), plus a sneak peek of Java 12 and 13 preview features. Itās time to embrace the newfound agility of the Java platform!
It seems like keeping up to date with Java nowadays is an enormous task. Gone is the era of big, delayed Java releases that span years. We're now getting a new major release every six months. What's up with that? You're probably still developing on Java 8, even though Java 12 is already available.
Join this session to get a code-first overview of what's new in Java since Java 8. We'll give an overview of the module system (Java 9), the local-variable type inference feature (Java 10), the new HttpClient API (Java 11) and a sneak peek of Switch Expressions in Java 12. Expect lots of advice on what to expect when migrating beyond Java 8. It's time to embrace the newfound agility of the Java platform!
In September 2017 the long-awaited release of Java 9 gave us a new module system in Java. It also kick-started the release-train of frequent Java releases, with Java 11 being the first long-term supported Java version poised to take modules into the mainstream. So what has happened since the introduction of the module system?
This talk will provide an overview adoption of modules in open-source libraries, IDEs, build tools, and so on. It will also feature tools that have emerged to make working with modules easier. Expect an honest overview of the current state of modules in Java, with lots of demos to show what's possible. After this talk you can start developing your own modular Java application without hesitation!
Java 9 brings modules as a core concept to the platform, but itās more than just a language feature. With modules in Java 9, we can improve the design of code to increase maintainability and extensibility. As with every design principle, modularity requires thought and trade-offs to really reap the benefits. This session covers design practices for making codebases more maintainable and extensible. You will also find out about trade-offs to help you make the best choices. Topics include hiding implementations, using services for extensibility, API modules, avoiding cycles, optional dependencies, and dynamically loading modules. Familiarity with modules is helpful but not required. The speakers are the authors of Java 9 Modularity (OāReilly).
Also see https://javamodularity.com
Microservices promise a scalable architecture, increased flexibility, and better performance. But then you find out whatās actually involved in designing, developing, and running a microservices-based architecture. It turns out itās not that straightforward after all.
Often the discussion around microservices is framed by a false dichotomy between the messy monolith and the lean and mean microservices architecture. Sander Mak explains that thereās a third way: the modularized application. Functional decomposition of your application doesnāt imply that every component has to become its own independent process.
Modularization is about strong encapsulation, well-defined interfaces, and explicit dependencies. Many languages offer in-process modularization features (for example, Java 9 with its upcoming module system), and thereās a strong overlap between the microservices philosophy and development benefitsāwithout incurring the penalty of operational complexity.
Sander explores the right (and wrong) reasons for going with a microservices architecture, as well as what a modularized application entails. Youāll see that splitting up an existing service or application into microservices isnāt always the clear winner. Youāll leave able to choose between the alternatives for the right reasons. Thereās a place for both independently deployed microservices and larger applications with a strong internal modular structure. Choose wisely.
With Java 9 modules coming to us soon, you want your existing code to be fully ready for the module system. Making code modular can be a daunting task, but Java 9 comes with a number features to ease migration. This includes automatic modules, the unnamed module and a number of command line arguments.
In this talk we will look at examples of migrating real code. It discusses common problems youĀll run into during migration, leading to practical tips and the ability to set realistic goals. ItĀs also a good way to understand the module system itself and the various migration paths it supports. This talk is an excellent preparation to start migrating your own code.
* Understanding modules and the module path
* Automatic modules
* Mixing classpath and modulepath
* Dealing with reflection
* Escape switches
* Jdeps
All topics will be based on examples of often used libraries and frameworks.
With Java 9, modularity comes to your doorstep (whether you ordered it or not). This isn't your average language feature: making the most out of it may involve rewiring your brain. In this session we explore the benefits of a modular codebase using Java 9 modules. Because who doesnāt like more reliable and secure applications, meanwhile killing the dreaded classpath?
After reviewing the basic concepts of modules, we'll explore modularity patterns that enhance your design and development skills. We all have existing software, so migration of codebases to a modular world is an important topic as well. Automatic modules and other new concepts are added to your toolbox to this end.
Want examples? We've got plenty in this practical and code-driven talk. Even if you intend to use Java 9 without modules, this talk helps you prevent common issues. You'll be ready for Java 9 before you know it.
Both speakers are currently writing āJava 9 Modularityā for OāReilly, expected early 2017. They have extensive experience under the belt already with the Java 9 Jigsaw early access builds.
With modularity coming to the core Java platform in Java 9, are all our modularity needs fulfilled, or does it still make sense to use something like OSGi? In this talk you will learn how Jigsaw helps modularity, and in what cases it might fall short.
Java 9 will provide a module-system, called Jigsaw. Besides modularising the JDK itself, Java developers can build more modular applications with Jigsaw. Modularity and Java go back way longer, though. OSGi, the de facto standard for modularity in Java has been around since 2000. Adoption is increasing in recent years.
A modular architecture has many advantages, such as increased decoupling resulting in more flexibility. In that sense, native support for Java modularity is very welcome. The big question now is: does Java 9 provide everything you need to build truly modular applications? Since Java 9 needs to maintain backwards compatibility, some compromises need to be made while enforcing module boundaries.
This talk discusses what you really need to build modular applications. We'll investigate which requirements are met (or not) by both module systems. You'll see that both Jigsaw and OSGi provided pieces of the modularity puzzle. Also, you'll learn whether having an additional modular runtime such as OSGi on top of Java 9 still makes sense.
How do we get our software out on the Internet of Things? Many assumptions in current deployment practices don't hold up. Devices can be occasionally connected, through low-bandwidth networks and are generally outside of direct control. Manually shuffling around binaries is not an option.
Apache ACE is an open-source Java provisioning tool tackling such challenges.You can manage Java apps and configs in a modular fashion. The foundations of ACE are OSGi, semantic versioning and reliable communication. Pushing out incremental updates and managing numerous devices becomes possible.
Slides for my talk event-sourced architectures with Akka. Discusses Akka Persistence as mechanism to do event-sourcing. Presented at Javaone 2014 and Jfokus 2015.
This document discusses TypeScript, a superset of JavaScript that adds optional static typing and class-based object-oriented programming. It allows developers to gradually introduce typing into JavaScript code for improved productivity and catch errors early. The document covers TypeScript features like interfaces, classes, modules, type definitions, and comparisons to alternatives like CoffeeScript and Dart. It concludes that TypeScript allows gradual adoption of typing while following the future ECMAScript standard.
Working with micro-services is arguably the best part of OSGi development. However, everyone agrees that tracking service dependencies with the bare-bones OSGi API is not ideal. So, you pick one of the available dependency managers: either Declarative Services, Felix Dependency manager, Blueprint or iPojo.
But how do you pick the right one? Easy! After this shoot-out youāll know all about the performance, usability and other aspects of the existing dependency managers. We show the strengths and weaknesses of the implementations side-by-side. How usable is the API? What about performance, does it scale beyond trivial amounts of services? Does it matter which OSGi framework you run the dependency manager in?
Make up your mind with the facts presented in this session.
The document discusses JavaScript modularity and module systems. It describes some of the challenges of modularity in JavaScript, like globals and namespacing issues. It then compares different module systems for JavaScript like AMD, CommonJS, and ES6 modules. RequireJS is presented as a robust implementation of the AMD specification that supports features like lazy-loading and backwards compatibility. The document advocates picking one module system and sticking with it for consistency.
This document discusses how modularity was used to build an educational software system called PulseOn in a scalable way for the cloud. Some key points:
- PulseOn was divided into multiple modules (bundles) like personal dashboards, learning content, adaptive recommendations, etc. that communicated through well-defined interfaces.
- Technologies like OSGi, RESTful APIs, MongoDB, and HTML5/JavaScript were used to build these modular and interoperable components.
- The system was designed to automatically scale on demand across multiple servers using load balancers and auto-scaling groups.
- Open-source tools like Amdatu and Apache ACE helped with building and deploying modular cloud-
'Elevate your webapps with Scala & Lift', as presented on JEEConf 2012, Kiev, Ukraine
Also see: http://branchandbound.net/blog/conferences/2012/05/jeeconf-tripreport/
Hibernate Performance Tuning, presented on JEEConf 2012, Kiev, Ukraine.
Also see: http://branchandbound.net/blog/conferences/2012/05/jeeconf-tripreport/
Adaptation of presentation at http://www.slideshare.net/SanderMak/hibernate-performance-tuning
Introduction to Akka, as presented on May 3 2012 at the Belgian Java User Group (BeJUG). For more details see: http://www.bejug.org/confluenceBeJUG/display/BeJUG/ForkJoin+and+Akka
Demo code can be found at: http://bit.ly/bejug-akka
Introduction to JDK7's Fork/Join framework. Present on May 3 2012 at the Belgian Java User Group (BeJUG). For more information see: http://www.bejug.org/confluenceBeJUG/display/BeJUG/ForkJoin+and+Akka
Demo code can be found at http://bit.ly/bejug-fj
This session was presented at the JFall 2011 conference in The Netherlands. It introduces the Fork/Join framework that was introduced in Java 7. Example code can be found at http://bit.y/jfall-forkjoin
A Comprehensive Guide to DeFi Development Services in 2024Intelisync
Ā
DeFi represents a paradigm shift in the financial industry. Instead of relying on traditional, centralized institutions like banks, DeFi leverages blockchain technology to create a decentralized network of financial services. This means that financial transactions can occur directly between parties, without intermediaries, using smart contracts on platforms like Ethereum.
In 2024, we are witnessing an explosion of new DeFi projects and protocols, each pushing the boundaries of whatās possible in finance.
In summary, DeFi in 2024 is not just a trend; itās a revolution that democratizes finance, enhances security and transparency, and fosters continuous innovation. As we proceed through this presentation, we'll explore the various components and services of DeFi in detail, shedding light on how they are transforming the financial landscape.
At Intelisync, we specialize in providing comprehensive DeFi development services tailored to meet the unique needs of our clients. From smart contract development to dApp creation and security audits, we ensure that your DeFi project is built with innovation, security, and scalability in mind. Trust Intelisync to guide you through the intricate landscape of decentralized finance and unlock the full potential of blockchain technology.
Ready to take your DeFi project to the next level? Partner with Intelisync for expert DeFi development services today!
Ivantiās Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There weāll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Ā
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Ā
Inconsistent user experience and siloed data, high costs, and changing customer expectations ā Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their āmodern digital bankā experiences.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
Ā
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
Ā
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Ā
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3Data Hops
Ā
Free A4 downloadable and printable Cyber Security, Social Engineering Safety and security Training Posters . Promote security awareness in the home or workplace. Lock them Out From training providers datahops.com
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Ā
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Ā
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Ā
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
Ā
An English š¬š§ translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech šØšæ version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
1. Developing Interacting Domain Speciļ¬c Languages
Developing Interacting Domain Speciļ¬c Languages
Masterās thesis
Sander Mak
Center for Software Technology, Universiteit Utrecht
October 25, 2007
Supervisor : Doaitse Swierstra
Daily supervision : Bastiaan Heeren
Eelco Visser
Center for Software Technology Sander Mak
2. Developing Interacting Domain Speciļ¬c Languages > Introduction
Outline
Introduction
1
DomainModel
2
WebLayer
3
Interaction
4
Reļ¬ection
5
Conclusion
6
Center for Software Technology Sander Mak
3. Developing Interacting Domain Speciļ¬c Languages > Introduction
Domain Speciļ¬c Language
Increased productivity
Increased quality
Advantages:
Clarity by abstraction
Center for Software Technology Sander Mak
4. Developing Interacting Domain Speciļ¬c Languages > Introduction
Languages?
Why the plural, i.e. DSLs
Center for Software Technology Sander Mak
5. Developing Interacting Domain Speciļ¬c Languages > Introduction
Languages?
Why the plural, i.e. DSLs
One-size ļ¬ts all, monolithic
approaches generally not
succesful (like 4GLs)
Separation of concerns, and:
reusability of DSL in other
contexts
Premise: Technical domains are a
good unit of composition
Center for Software Technology Sander Mak
6. Developing Interacting Domain Speciļ¬c Languages > Introduction
Languages?
Why the plural, i.e. DSLs
One-size ļ¬ts all, monolithic
approaches generally not
succesful (like 4GLs)
Separation of concerns, and:
reusability of DSL in other
contexts
Premise: Technical domains are a
good unit of composition
Center for Software Technology Sander Mak
7. Developing Interacting Domain Speciļ¬c Languages > Introduction
Languages?
Why the plural, i.e. DSLs
One-size ļ¬ts all, monolithic
approaches generally not
succesful (like 4GLs)
Separation of concerns, and:
reusability of DSL in other
contexts
Premise: Technical domains are a
good unit of composition
Research questions:
Are multiple interacting DSLs feasible?
1
How should interaction be concretized and implemented?
2
Center for Software Technology Sander Mak
8. Developing Interacting Domain Speciļ¬c Languages > Introduction
The case study
DomainModel Modeling domain data, generating
JPA (similar to Hibernate) implementation
WebLayer Modeling the view side of web-applications,
generating Seam/JSF/Facelets
BusinessRules Modeling functionality speciļ¬c to a domain
Diļ¬erent compilers, one goal: build a complete Java based web-app
Center for Software Technology Sander Mak
9. Developing Interacting Domain Speciļ¬c Languages > Introduction
Goals
Why create DSLs for these domains:
Increase productivity
Abstract away from implementation details, focus on domain
concepts (also gives more clarity)
Java frameworks are (inherently?) verbose
Increase quality
Dynamic, interpreted mechanisms subvert static safety of Java code
Report domain speciļ¬c errors
Center for Software Technology Sander Mak
10. Developing Interacting Domain Speciļ¬c Languages > Introduction
Goals
Why create DSLs for these domains:
Increase productivity
Abstract away from implementation details, focus on domain
concepts (also gives more clarity)
Java frameworks are (inherently?) verbose
Increase quality
Dynamic, interpreted mechanisms subvert static safety of Java code
Report domain speciļ¬c errors
What is explicitly not our goal:
creation of production quality languages,
unleashing every bit of power of target frameworks
Center for Software Technology Sander Mak
11. Developing Interacting Domain Speciļ¬c Languages > Introduction
Goals
Why create DSLs for these domains:
Intended use
Increase productivity
To create data-intensive web-applications, focus on conļ¬nes of
within domain
Abstract away from implementation details,
company guidelines. gives more clarity)
concepts (also
Java frameworks are (inherently?) verbose
Increase quality
Dynamic, interpreted mechanisms subvert static safety of Java code
āYou canāt be everything to everyone,
Report domain speciļ¬c errors
so be something for someoneā
What is explicitly not our goal:
creation of production quality languages,
unleashing every bit of power of target frameworks
Center for Software Technology Sander Mak
12. Developing Interacting Domain Speciļ¬c Languages > DomainModel
DomainModel language
Language for deļ¬ning persistent domain (or data) models
Essential features:
Concise deļ¬nition of concepts (entities)
Generates JPA implementation (standardized library)
Encodes domain speciļ¬c technical knowledge (e.g. object identity)
Allows for domain speciļ¬c semantic checking
May be used in combination with diļ¬erent DSLs
Center for Software Technology Sander Mak
13. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Center for Software Technology Sander Mak
14. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Types: Value, Extended (validated), Concept, List, Enumeration
Center for Software Technology Sander Mak
15. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Types: Value, Extended (validated), Concept, List, Enumeration
Center for Software Technology Sander Mak
16. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Types: Value, Extended (validated), Concept, List, Enumeration
Center for Software Technology Sander Mak
17. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Types: Value, Extended (validated), Concept, List, Enumeration
Center for Software Technology Sander Mak
18. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Types: Value, Extended (validated), Concept, List, Enumeration
Center for Software Technology Sander Mak
19. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Associations: Value, Reference, Composite
Center for Software Technology Sander Mak
20. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Associations: Value, Reference, Composite
Center for Software Technology Sander Mak
21. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
Associations: Value, Reference, Composite
Center for Software Technology Sander Mak
22. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
DomainModel annotations
Center for Software Technology Sander Mak
23. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
contents :: String (required)
user -> User
date :: Date (name)
tags -> [Tag]
replies <> [Reply]
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
DomainModel annotations
Center for Software Technology Sander Mak
24. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
title :: String (name, required)
abstract :: String
Compiling a DomainModel concept
contents :: String (required)
Deļ¬nition -> User
BlogEntry results in BlogEntry.java, a
user
persistable:: Date
JPA entity: (name)
date
tags -> [Tag]
replies <> [Reply]
268 LoC
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
trackback :: URL
}
DomainModel annotations
Center for Software Technology Sander Mak
25. Developing Interacting Domain Speciļ¬c Languages > DomainModel
Concept deļ¬nition
concept BlogEntry {
Q: Isnāt DomainModel almost the same as UML Class diagrams?
title :: String (name, required)
A: Yes!
abstract :: String
contents :: String (required)
userWe even āborrowedā some of the association symbols
-> User
date āā :: Date
>ā for references (name)
ā<>ā for composites
tags -> [Tag]
replies way, prior UML knowledge helps when using
<> [Reply]
That
category :: {quot;Technicalquot; : TECH, quot;Otherquot; : NONTECH}
DomainModel
trackback :: URL UML class diagram could serve as input for
Theoretically, a
} the DomainModel compiler (if only we had a UML
front-end)
DomainModel annotations
Center for Software Technology Sander Mak
26. Developing Interacting Domain Speciļ¬c Languages > WebLayer
WebLayer language
Language for deļ¬ning pages (views) in web-app
Essential features:
Works seamlessly with DomainModel deļ¬nitions
Abstracts away from the Seam framework and Java intricacies
Strongly typed
Explicit, checked data-ļ¬ow between pages
Generic constructs
Center for Software Technology Sander Mak
27. Developing Interacting Domain Speciļ¬c Languages > WebLayer
WebLayer compiler
Center for Software Technology Sander Mak
28. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
29. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
30. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
Multiple page deļ¬nitions in one ļ¬le, starting with a header:
var Reply r
weblayer blog
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
using domainmodel blog{ quot;Assigned tagsquot; -> t.tagName }
table Tag t in be.tags
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
31. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
32. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
33. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
34. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
35. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
36. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
quot;Reply to this post:quot;
form( input(r)
action( quot;Add replyquot;
, r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
37. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Page deļ¬nition
page ViewBlog(BlogEntry be, User u){
var Reply r
header(be.title + quot; (written on quot; + be.date + quot;)quot;)
text(be.contents)
Ideas for extension
table Tag t in be.tags { quot;Assigned tagsquot; -> t.tagName }
Query language
quot;Reply to this page abstraction
Partial post:quot;
form( input(r)
Parameterized, reusable actions
action( quot;Add replyquot;
... , r.user = u; be.replies.add(r); be.save())
)
text(quot;Replies for post quot; + be.title + quot; :quot;)
for Reply r in be.replies { show(r) }
navigate(quot;Homequot;, Blog(u))
}
Center for Software Technology Sander Mak
38. Developing Interacting Domain Speciļ¬c Languages > WebLayer
Issues
Layout is more or less ļ¬xed
Example: every page element is placed beneath each other
We donāt want to replicate all of HTML inside WebLayer
Partial solution: embed generated page in freely editable template
For the rest: make assumptions, although compiler becomes more
speciļ¬c
Editing lists
Our solution is speciļ¬c and ad-hoc
Action language
Why not, for example, embed Java?
Center for Software Technology Sander Mak
39. Developing Interacting Domain Speciļ¬c Languages > Interaction
DSL Interaction
We can use DomainModel constructs within WebLayer, but how does
this interaction work?
Goals
Interaction must be intuitive to DSL user
Languages must be as separate as possible
For the sake of reusability
Generated code must statically link
Center for Software Technology Sander Mak
40. Developing Interacting Domain Speciļ¬c Languages > Interaction
DSL Interaction
We can use DomainModel constructs within WebLayer, but how does
this interaction work?
Goals
Interaction must be intuitive to DSL user
Languages must be as separate as possible
For the sake of reusability
Generated code must statically link
Our solution
Separate compilation for each DSL, communicating essential
information through interface ļ¬les.
Center for Software Technology Sander Mak
41. Developing Interacting Domain Speciļ¬c Languages > Interaction
DSL Interaction
Separate compilation illustrated
We can use DomainModel constructs within WebLayer, but how does
this interaction work?
Goals
Interaction must be intuitive to DSL user
Languages must be as separate as possible
For the sake of reusability
Generated code must statically link
Our solution
Separate compilation for each DSL, communicating essential
information through interface ļ¬les.
Center for Software Technology Sander Mak
42. Developing Interacting Domain Speciļ¬c Languages > Interaction
Interface ļ¬les
DSL compiler emits interface ļ¬le. We chose ATerms as generic
representation format.
Interface characteristics
Aggregates information
Contains disambiguated information
Contains linking information (types, hooks)
Written interface guarantees a consistent, checked module to be
present
Center for Software Technology Sander Mak
43. Developing Interacting Domain Speciļ¬c Languages > Interaction
Interface ļ¬les
DSL compiler emits interface ļ¬le. We chose ATerms as generic
representation format.
Interface characteristics
Aggregates information
Contains disambiguated information
Contains linking information (types, hooks)
Written interface guarantees a consistent, checked module to be
present
One way to view interface ļ¬le mechanism is as cache for compiler
operations
Center for Software Technology Sander Mak
44. Developing Interacting Domain Speciļ¬c Languages > Interaction
Interface ļ¬les
DSL compiler emits interface ļ¬le. We chose ATerms as generic
representation format.
Interface characteristics
Aggregates information
Q: Why cache, are these operations so expensive?
A: No, not at all. The information the importing compiler
Contains disambiguated issue is that
otherwise needs toinformation (types, hooks)
Contains linking know how to perform these operations. We
donāt want that, since it breaks our notion of modular interacting
Written interface guarantees a consistent, checked module to be
languages!
present
One way to view interface ļ¬le mechanism is as cache for compiler
operations
Center for Software Technology Sander Mak
45. Developing Interacting Domain Speciļ¬c Languages > Interaction
Interface ļ¬les
DSL compiler emits interface ļ¬le. We chose ATerms as generic
representation format.
Interface characteristics
Aggregates information
Contains disambiguated information
Contains linking information (types, hooks)
Written interface guarantees a consistent, checked module to be
present
One way to view interface ļ¬le mechanism is as cache for compiler
operations
Issues: explicit vs. implicit interface, cyclic dependencies between
DSLs
Center for Software Technology Sander Mak
46. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Does this approach really work?
Promises of model driven software development:
Gain productivity
Gain quality
... so do we live up to this expectation?
Center for Software Technology Sander Mak
47. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Does this approach really work?
Promises of model driven software development:
Gain productivity
Gain quality
LoC metrics - Blog example ... so do we live up to this expectation?
DSL Source Generated code
DomainModel 45
Java 801
XML 22
WebLayer 110
Java 841
XML/Facelets 501
XML 48
ā¼ Ć14
Totals 155 2213
Center for Software Technology Sander Mak
48. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Does this approach really work?
Promises of model driven software development:
Gain productivity
Gain quality
... so do we live up to this expectation?
Productivity:
1 The factor ā¼14 increase in LoC seems to be typical
2 DRY: refactoring in DSL code is much easier
3 Start-up costs manageable
Center for Software Technology Sander Mak
49. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Does this approach really work?
Promises of model driven software development:
Gain productivity
Gain quality
... so do we live up to this expectation?
Productivity:
1 The factor ā¼14 increase in LoC seems to be typical
2 DRY: refactoring in DSL code is much easier
3 Start-up costs manageable
Quality:
1 DSL Type checker guarantees correctness of dynamic
constructions (and thereās much of that in Java web frameworks!)
2 Typed, explicit dataļ¬ow between pages
3 Concrete example: guaranteed prevention of cross-site scripting
Center for Software Technology Sander Mak
50. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Drawbacks of our approach
Every semantic check must be written from scratch
For each DSL
Type checking, resolving symbolic references, and so on
Fortunately, we can get very speciļ¬c with our checks and
associated messages
Center for Software Technology Sander Mak
51. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Drawbacks of our approach
Every semantic check must be written from scratch
For each DSL
Type checking, resolving symbolic references, and so on
Fortunately, we can get very speciļ¬c with our checks and
associated messages
Module system must be written from scratch
This might be solved generically (parameterizing over interface
deļ¬nitions), though we have not researched this
Center for Software Technology Sander Mak
52. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Drawbacks of our approach
Every semantic check must be written from scratch
For each DSL
Type checking, resolving symbolic references, and so on
Fortunately, we can get very speciļ¬c with our checks and
associated messages
Module system must be written from scratch
This might be solved generically (parameterizing over interface
deļ¬nitions), though we have not researched this
What are the semantics of our DSLs?
Center for Software Technology Sander Mak
53. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Alternative approaches
Embedded DSLs
Asynchronous, runtime linking of generated code (independent
code generation)
Larger role for the IDE
Long-term: active libraries and a universal language
Center for Software Technology Sander Mak
54. Developing Interacting Domain Speciļ¬c Languages > Reļ¬ection
Alternative approaches
Embedded DSLs
Asynchronous, runtime linking of generated code (independent
code generation)
Larger role for the IDE
Long-term: active libraries and a universal language
Realistically, this probably never happens
Center for Software Technology Sander Mak
55. Developing Interacting Domain Speciļ¬c Languages > Conclusion
Demonstration
Center for Software Technology Sander Mak
56. Developing Interacting Domain Speciļ¬c Languages > Conclusion
Topics not discussed
... but interesting nevertheless
Actual implementation details of compilers
1
Implemented using Stratego/XT toolkit
BusinessRules interface deļ¬nition
2
To overcome limitations of WebLayer action language in multiple
DSL style
Interaction with GPL code
3
Necessary for real-world adoptation, but how to implement it?
Much more context and related work
4
... my thesis will be available shortly
Center for Software Technology Sander Mak
57. Developing Interacting Domain Speciļ¬c Languages > Conclusion
Concluding remarks
Interacting DSLs indeed feasible
Especially suited for layered architectures (like web-applications)
DSLs encode principled usage of frameworks and framework
interaction
Interaction implemented through interface ļ¬les
Separate compilation allows for reuse of DSLs
Implicit interface may be a limiting factor
DSLs for technical domains are a serious option for a company to
pursue, with demonstrated advantages, but also requiring considerable
eļ¬ort.
Center for Software Technology Sander Mak