The MCP Server That Leaked a Connection Every Four Minutes
How one underrated Actuator metric explained a recurring OutOfMemoryError in a Spring AI MCP server — and why the default keep-alive setting is the wrong default.
Modernizing Legacy Systems with the AI Unified Process
Most software modernization projects do not fail because of technology. They fail because nobody knows anymore what the old system actually does. The code is there. It runs. It carries the business every day. But the people who wrote it are gone, the documentation is outdated, and the requirements only exist implicitly in the code. [...]
Waterfall Was Never the Problem
Every time I talk about Spec-Driven Development, someone says the same thing. “That is just waterfall.” They mean it as a gotcha. It is not. Two things are going on here. First, most people have never read what Royce actually wrote. Second, even the real waterfall is good in the right place. Let me take [...]
Use-Case 3.0: The Refreshed Guide to Driving Development with Use Cases
Use cases have been around since 1987. In May 2024, Ivar Jacobson, Ian Spence, and Keith de Mendonca published a refreshed guide called Use-Case 3.0. If you read my earlier post on Use-Case 2.0, this is the natural next step. Use-Case 3.0 keeps the same core ideas and adds structure so that use cases fit any [...]
AI Writes the Code. This Book Still Teaches the Use Cases.
In the AI Unified Process (AIUP), the spec sits at the center. The use case is the unit of work. You write a system use case, AI generates the code, and tests confirm the behavior. The use case is the source of truth. The code is a derived artifact. That puts a lot of weight [...]
Shift-Left: Getting the Spec Right Before the Code
In software, “shift-left” means doing the important work earlier. The earlier you catch a problem, the cheaper it is to fix. We learned this with testing and later with security. The same idea now applies to specifications. And in the AI Unified Process (AIUP), it is the part that matters most.
Web Components Mean Less Code to Review (A Win for AI Built Business Apps)
When an AI agent builds a screen for you, the slow part is no longer writing the code. It is reviewing it. You have to read what the agent produced and decide if you trust it. The more code it writes, the more you have to read, and the more places a subtle mistake can [...]
Bug or Enhancement? How the AI Unified Process Handles Change Requests
In a spec-driven world, every change to the running system has a reason. Either the system does something it should not do, or we want it to do something new. AIUP captures this with two work item types that sit next to the main Use Case flow: Bug and Enhancement.
What, Harness, How: The Three Layers of AIUP
One of the recurring questions I hear about Spec-Driven Development is this: where does the spec end and the implementation begin? The line is often blurry. Specs leak into class names. Implementation choices sneak into use case descriptions. After a few weeks, nobody can tell anymore what is intent and what is accident.
AI Writes Code. Engineers Build Software.
With Claude Code and similar tools, I do not write much code by hand anymore. The AI does it for me. And most of the time, the result is good. For a moment this looks like the end of an era. If the AI writes the code, what is left for us? A lot. Just [...]
Why in Spec-Driven Development the Spec Must Be Readable for All Stakeholders
In Spec-Driven Development (SDD), the specification is at the center. It is not just a document for developers or architects. It is the shared foundation for everyone who works on the product. And here is the key point: if the spec is only understandable to technical people, SDD misses its purpose.
How and Why to Trace Use Cases and Tests
When you build business software, the same question keeps coming back: why does this code exist? The honest answer is almost always: because some business person needed it. A clinic user needs to register a new pet owner. An accountant needs to close the books. A clerk has to approve a request. Every line of code in a [...]


