Domain-Specific Modeling (DSM) is a way of designing and developing systems that involves the systematic use of Domain Specific Languages (DSLs) to represent the various facets of a system, in terms of models. Such languages tend to support higher-level abstractions than general-purpose modeling languages, and are closer to the problem domain than to the implementation domain. Defining a modeling language involves at least two aspects: the domain concepts and rules (abstract syntax), and the notation used to represent these concepts (concrete syntax)---let it be textual or graphical. This metamodeling approach enables the rapid and inexpensive development of DSLs and their associated tools (e.g., editors). In this talk we introduce the main DSL concepts, together with the mechanisms provided by some of the major approaches to DSM, in particular those defined by the OMG.