Episode 151: Intentional Software with Shane Clifford

Topics covered
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


Episode 150: Software Craftsmanship with Bob Martin
Answers 383 questions

Episode 112: Roles in Software Engineering II
Answers 383 questions
Episode 172: Feature-Oriented Software Development with Sven Apel – Pt 1
Answers 383 questionsEpisode 1: Patterns
Answers 383 questions

Episode 110: Roles in Software Engineering I
Answers 383 questions

Episode 47: Interview Grady Booch
Answers 383 questions

Episode 441 Shipping Software - With Bugs
Answers 383 questions

Episode 182: Domain-Specific Languages with Martin Fowler and Rebecca Parsons
Answers 383 questionsEpisode 147: Software Development Manager
Answers 383 questions
Episode 173: Feature-Oriented Software Development with Sven Apel – Pt 2
Answers 383 questionsEpisode 87: Software Components
Answers 383 questions

Episode 228: Software Architecture Sketches with Simon Brown
Answers 383 questions

Episode 148: Software Archaeology with Dave Thomas
Answers 383 questions














