The user facing part of your program can be planned out using conceptual design https://essenceofsoftware.com/tutorials/ the author of that book teaches it in MITs old software studio course https://61040-fa25.github.io/schedule the point is to plan out modularity and the prof does enjoy using overly complex language to describe this method but once you read through the slides and tutorials you will understand why he describes it that way because he's trying to differentiate between features and concepts. For example HN has an upvoting concept who's purpose is to establish rank then a seperate concept karma which allows you to downvote but placing both functions inside the upvoting concept breaks modularity and conceptual design makes this obvious once you practice with it. Once everything is planned out this way then generating code is trivial again in my limited experience as I'm no expert on agentic coding but I've had success doing this.
All the code the user won't see can be modeled using one of the 'lightweight' formal methods out there like forge or alloy https://forge-fm.github.io/book/2026/ where a complex protocol you write or entire system can be tested first to find illicit states. Imagine you are designing some company app where there needs to be multiple logins of different security abilities this is how you would model your security plan first and make sure a combination of states doesn't produce an unexpected breach or that you missed a state. A custom network protocol that does kernel bypass is another example. The rules of a game you build is another you don't want the system to reach a state like winner unless they actually won. I now use Forge to plan css too because I don't want to show broken css states since I have limited design experience.
Now generate the whole system as modules and never look at the code. The same property tests I used for the Forge model I make into an Oracle and then blast the agent code with random inputs.
I built several gigantic prototypes this way mostly of papers I read in database designs and screwing around with graphical interfaces for them.
No comments yet.