allows architects to define acceptable and unacceptable
dependencies in Java systems

    DCL (Dependency Constraint Language) is a declarative, statically checked, and domain-specific language that supports the definition of structural constraints between modules. The main purpose of the language is to support the definition of constraints between modules, restricting the spectrum of dependencies that are allowed in object-oriented systems.

    One of the main advantages of DCL is its simple and self-explaining syntax. The following figure summarizes the language syntax:


    To illustrate DCL, consider the following constraints:

         1: only Factory can-create Product
         2: Util can-depend-only $java, Util
         3: View cannot-access Model
         4: Product must-implement Serializable

    The following video illustrates the use of DCL:

    The manual of DCL can be found here.

p1 Installation
    The following video explains the complete procedure:

    DCL is an open source project, distributed under the terms of the MIT license.
    The code is publicly avaliable at:

p1 Publications

p1 Contact
  • Ricardo Terra - terra (at)
  • Marco Túlio Valente - mtov (at)

DCL is currently developed and maintained by the Applied Software Engineering Research Group (ASERG)
Department of Computer Science, Federal University of Minas Gerais, Brazil

comments on reddit