2 thoughts on “Correct by Configuration

  1. I really enjoy the more technical podcasts!

    For future reference for anyone, the books that Neil recommended are listed below.

    Strategy:
    1. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma et.al
    2. Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
    3. Patterns of Enterprise Application Architecture by Martin Fowler
    4. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe and Bobby Woolf

    Technique
    1. UML Distilled: A Brief Guide to the Standard Object Modeling Language by Martin Fowler
    2. Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series by Martin Fowler
    3. Test Driven Development: By Example by Kent Beck
    4. Working Effectively with Legacy Code by Michael Feathers

    Honorable mention: Domain-Specific Languages by Martin Fowler, though Neil mentioned that for him, the content in this book was a bit obvious and redundant.

    I was able to find all these books (in various editions) in the US on Amazon.

  2. Wrap up:
    Correct by Construction: an architecture paradigm where objects are always in a valid state, or the system doesn’t compile. Parameters used to construct the object are checked at compile type.
    In this architecture, programmers still code, but they can’t possibly mess it up (theoretically) ➔ Framework.
    Correct by Configuration: an architecture paradigm that reduced the system to a highly tested and secure DSL.
    In this architecture, programmers don’t code, they configure the application through the DSL ➔ Platform.
    Low Code is a form of configuration.
    How to create a DSL?
    1. Team up with someone who perfectly understands the business domain and the requirements.
    2. Make idioms out of these requirements.
    3. Choose configuration style (JSON, CoffeeScript JSON, YAML…).
    4. Represent the requirements in this configuration style.
    5. Create the DSL using what you’ve learned with 3 and 4. Keep it very high level (example: When an order is made, …).
    See Austin’s comment for recommended books.
    I also recommend Neil’s talk “Writing Custom DSLs”, really complementary with this podcast.

    Pleasantly surprised by this podcast, you’ve been talking about this for a while and I really wanted to know more about it. Right now, I’m not sure how to apply this knowledge to my requirements, I guess it’s time to read those books and train for a while.

Add your thoughts