Published Sep 3, 2019

Episode 151: Intentional Software with Shane Clifford

Shane Clifford reveals the groundbreaking approach of Intentional Software, showcasing the development of domain-specific languages and intentional programming to enhance domain-oriented development, improve usability, and optimize complex transformations for various industries.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Intentional Programming

    , a lead engineer at Intentional Software, introduces the concept of intentional programming, which focuses on domain-oriented development. This approach captures domain experts' contributions in a structured syntax, allowing for expressive code generation through intentional trees 1. Unlike traditional domain-specific languages (DSLs), intentional programming uses a structured editing environment, enabling direct manipulation of the intentional tree rather than converting textual syntax into an abstract syntax tree 1. explains that this method allows for the representation of complex notations, such as mathematical symbols, in a way that closely resembles how they appear in textbooks 2.

    Intentional software is about doing domain-oriented or language-oriented development.

    ---

    The system's core is developed in .NET using C#, and much of it is bootstrapped with its own technology, allowing for the creation and enhancement of new intentional domains 3.

       

    Intentional Trees

    Intentional trees are a fundamental component of intentional programming, providing a flexible structure for representing diverse aspects of a software system. describes these trees as hierarchical collections of nodes, each with fields that can reference other nodes, allowing for complex relationships and representations 4. This structure enables the integration of multiple languages within a single model, offering different projections for various stakeholders without the need for separate languages 4.

    The intentional tree is made up of something we just call a node, and each node forms the intentional tree in a primarily hierarchical relationship.

    ---

    Schemas define the rules for participating in a domain's capabilities, but do not constrain the tree's storage structure, allowing for growth and extension over time 5.

       

    Projections & Transformations

    Projections and transformations in intentional software allow for dynamic editing and visualization of data. explains that intentional trees can be projected in various ways, enabling different views and contexts for the same data 6. This flexibility allows developers to define properties that parameterize projections, such as changing visual attributes or transforming data into different formats 6.

    We can provide the adequate mapping and editing rules during the transformation such that we can actually make those edits and have them go into that underlying intentional tree.

    ---

    The system supports editable views in target programming languages, allowing for seamless integration and modification of code across different domains 7.

Related Episodes