Ralf Westphal
38 posts.
- Who do you want to KISS? - About simplicity in codingWhat does KISS really mean? How do you write KISS code like required by TDD for phase two when going from red to green? To answer that we need to know…
- There is no such thing as technical debtWard Cunningham coined the “technical debt” metaphor. It sounds plausible, it might resonate with management. But it’s far from reality.
- IODA Architecture by ExampleThe IODA Architecture to me is fundamental. But as many fundamental notions it might be a bit abstract. That's why I want to provide an example of how to…
- The IODA ArchitectureThe common architectural patterns are all pretty much the same. Layered architecture, MVC, Hexagonal architecture, Onion Architecture, Clean architecture……
- Sweet AspectsWhen a module has a single responsibility that means it’s focused on producing the behavior of a single aspect. That’s how I described the Single…
- Feedback-Centric Development - The One Hacker WayErik Meijer got something right in his talk "One Hacker Way". There's a lot of bashing and ranting... but at the core there also is a precious diamond to…
- How Agility leads to functional design and even TDDWhat is it that the customer wants when she orders a software? Behavior. I define behavior as the relationship between input, output, and side effects.
- The Incremental Architect´s Napkin - #7 - Nest flows to scale functional designYou can design the functionality of any Entry Point using just 1D and 2D data flows. Each processing step in such flows contains logic1 to accomplish a…
- The Incremental Architect’s Napkin - #5 - Design functions for extensibility and readabilityThe functionality of programs is entered via Entry Points. So what we´re talking about when designing software is a bunch of functions handling the…
- Abstracting functionalityWhat is more important than data? Functionality. Yes, I strongly believe we should switch to a functionality over data mindset in programming. Or actually…
- The Inkremental Architect´s Napkin - #4 - Make increments tangibleThe driver of software development are increments, small increments, tiny increments. With an increment being a slice of the overall requirement scope…
- The Incremental Architect´s Napkin - #1 - It´s about the money, stupidSoftware development is an economic endeavor. A customer is only willing to pay for value. What makes a software valuable is required to become a trait of…
- There´s no #antifragilesoftwareAntifragility has attracted some attention lately. I, too, pressed the “I like” button. :-) A cool concept, a term that was missing. Just when Agility…
- What does Antifragility mean?The notion of Antifragility has hit the software community, it seems. Russ Miles has posted a couple of small articles on it in his blog, asking what it…
- Informed TDD – Using Mocks to Allow for True Stepwise RefinementIn my previous article I described a process of designing and implementing software. It combined TDD with explicit thinking before coding. The dialog I…
- Recursively descending test-driven development aided by thinking“Hey, Ron, wanna try something new”, Janine asked across the table in their team room. Ron looked at her uneasily over his line of monitors. For hours he…
- The Self-Similar Software Development ProcessI read, with interest, Robert C. Martin´s on Justin Searl´s critique of a common TDD teaching approach. Strange it was to see “the good uncle” to be so…
- Spinning – A Core Practice for Agile TeamsI´ve seen many teams struggling with agility. Faithfully they were trying to live by Scrum or Kanban rules – but still it was hard to “get into the flow”.…
- Bus or Flow? - Messaging done one way or the otherMessaging is neutral to the way it´s done. There is nor right or wrong. You think of a message bus, when you hear about communication by messages in…
- Messaging for More DecouplingObject orientation true to its inventors original intent uses messaging for communication between objects. That means, data is flowing one-way during each…
- Nested Messaging - Flows on Different Levels of AbstractionBuilding large object oriented systems requires us to be able to think/visualize them on different levels of abstraction. Whatever we want to describe –…
- Flows – Visualizing the Messaging Programming ModelObject orientation was ment to be based on messaging – at least if you follow Alan Kay. But that´s not really how it turned out to be, I´d say. Today´s…
- Messaging as a programming model – Let´s get realSteve Bate just has written two very hones and straightforward blog articles \1,[2\] on how he approaches programming. I very much agree with him. For…
- Catch Exceptions in Concurrent Flows Using CausalitiesThe previous article showed you how to easily parallelize flow operation execution with NPantaRhei (download the sources from github).
- Introduction to the Flow Execution Engine NPantaRheiHow can data processing flows be implemented in an easy manner? What I call data flow processing – or flow design (FD) - I´ve defined here and described…
- Get into the flow with SpinningSpinning as described in my previous article is all about flow. Its premise is: flow can emerge when work is partitioned in small, evenly sized chunks…
- From Agile to ElasticIn my previous article I came to a couple of conclusions based on the reality of software development, or should I say “the nature of software…
- Agile Process Reality CheckLet´s get real about software development: It´s never going to be a quietly flowing river. Never. And that´s why the current approaches to software…
- Flowing Bowling Game Kata IRon Jeffries challenged me to show how Flow-Design and Event-Based Components can help software development. This is the problem he posed in the Software…
- AppKata - Enter the next level of programming exercisesDoing CodeKatas is all the rage lately. That´s great since widely accepted exercises are important to further the art. They provide a means of…
- Flow-Design Cheat Sheet – Part II, TranslationIn my previous post I summarized the notation for Flow-Design (FD) diagrams. Now is the time to show you how to translate those diagrams into code.…
- Flow-Design Cheat Sheet – Part I, NotationYou want to avoid the pitfalls of object oriented design? Then this is the right place to start. Use Flow-Oriented Analysis (FOA) and –Design (FOD or just…
- Going asynchronous - AOP made easy with Event-Based Components – Part IIILogging, validation, exception handling: that´s easy aspects to insert into an Event-Based Components design as I´ve shown in my previous post. But what…
- Aspect Oriented Programming made easy with Event-Based Components – Part IIIn my previous post I described the architecture for a small application to index .TXT files. Here´s are the napkins with my design EBC diagrams so far:
- Aspect Oriented Programming made easy with Event-Based Components – Part IAOP still is pretty much a pain when living according to “traditional” object orientation. You need fancy tools or you need to do some advanced code…
- Improving the Event-Based Components Desktop CalculatorIn my previous article I designed and implemented a small desktop calculator using Event-Based Components. That was fun and went smoothly – but in the end…
- Designing on different levels of abstractions with Event-Based ComponentsOne of the biggest problems with object oriented designs is its inability to express architectures on different levels of abstractions. True, there are…
- Event-Based Components – Leaving the beaten path of canonical object orientationSince long I´ve been doubting the canonical object oriented way of programming was of much help. I´ve never seen a “true” object oriented software system…
