Introduction to Domain-Specific Language#

  • Term: Domain-specific lauguage v.s. General-purpose language
  • Examples: widely used for common domains: HTML for web pages, used by one or a few pieces of software, such as MUSH for multiplayer online games
  • Classification: domain-specific markup languages (Latex/XML/HTML/Markdown), domain-specific modeling languages (specification languages) (flowchart/UML), domain specific programming languages
  • Term: Language-oriented programming and language workbench

Domain-specific modeling languages#

  • Keywords: rules to express data, information or knowledge or systems
  • Classification: graphical or textual
  • Classification: executable (model interpreter or code generator) or non-executable

List of graphical types (from wikipedia)

  • Behavior Trees: to express what the stakeholder needs
  • Business Process Modeling Notation (BPMN, and the XML form BPML): to express what the business process will look like
  • C-K theory: to express innovative design
  • DRAKON: to express an algorithm or a stepwise process, and a family of programming languages
  • EXPRESS and EXPRESS-G: to express data objects and relationships among data objects
  • Extended Enterprise Modeling Language (EEML): to express the business process across a number of layers
  • Flowchart: to express an algorithm or a stepwise process
  • Fundamental Modeling Concepts (FMC): modeling language for software-intensive systems.
  • IDEF is a family of modeling languages, which include IDEF0 for functional modeling, IDEF1X for information modeling, IDEF3 for business process modeling, IDEF4 for Object-Oriented Design and IDEF5 for modeling ontologies.
  • Jackson Structured Programming (JSP): to express structured programming
  • LePUS3: to model large object-oriented (Java, C++, C#) programs and design patterns
  • Lifecycle Modeling Language: to express the full system lifecycle
  • Object-Role Modeling (ORM): to express concepts
  • Petri nets: to formally express the logical interactions among parts or of the flow of activities in complex systems
  • Southbeach Notation is a visual modeling language used to describe situations in terms of agents that are considered useful or harmful from the modeler's perspective. The notation shows how the agents interact with each other and whether this interaction improves or worsens the situation. (?)
  • Specification and Description Language (SDL) is a specification language targeted at the unambiguous specification and description of the behavior of reactive and distributed systems.
  • SysML is a Domain-Specific Modeling language for systems engineering that is defined as a UML profile (customization).
  • Unified Modeling Language (UML) is a general-purpose modeling language that is an industry standard for specifying software-intensive systems.
  • Service-oriented modeling framework (SOMF) is a holistic language for designing enterprise and application level architecture models in the space of enterprise architecture, virtualization, service-oriented architecture (SOA), cloud computing, and more.
  • Architecture description language (ADL): to express the system architecture of a system
  • Architecture Analysis & Design Language (AADL): to express the system architecture of a system
  • EAST-ADL is a Domain-Specific Modeling language dedicated to automotive system design.
  • Energy Systems Language (ESL), a language that aims to model ecological energetics & global economics.
  • IEC 61499 defines Domain-Specific Modeling language dedicated to distribute industrial process measurement and control systems.

List of textual types (from wikipedia)

  • Gellish: to express facts or make statements, queries and answers

Specification Language#

  • An important use of specification languages is enabling the creation of proofs of program correctness. Not interested in this.

My gole is to find a proper domain-specific language to describe the behavior of devices (or peripherals). Well, one interesting thing is the lifecycle modeling language (specified here). It defines "Entity", "Relationship", "Attribute", and "Attribute on Relationship". They have equivalent English language elements: noun, verb, adjective and adverb. This is good but too general. In the end, I choose to use the finite state machine.