Solution Structural and behavioral simplification which supports growth by addition and refinement requires some experience but is not hard to do. A good strategy is to build a relative big chunk of the class dictionary of the application and to test it with several input sentences. You then first implement the simple behavior for the small class dictionary and in later phases you make class dictionary and behavior more complex. Gradual building of confidence in your programming skills. You can get early feedback from your customers by showing them early prototypes.
Testing is simplified.
If you get a bug in phase p then check whether it already shows up in an earlier phase where the situation is simpler. Using this approach iteratively you can faster zoom in on the bug. This is a software development planning pattern. Create separate directories for each growth phase so that you can easily go back to earlier phases. Document the increments from one phase to the next.