Future Ideas
In Architecture and Design for Testing, we discussed the impact of generative AI on conventional software architecture and design, including the long-standing practice of Test-Driven Development. In Testing Strategies and Techniques, we explored the techniques based on probabilities and statistics to evaluate AI systems, and adapted those techniques to application testing needs.
However, both sections assumed that software development principles and practices won’t change fundamentally with the introduction of AI. This section explores how AI might stimulate more fundamental changes in software development, both generally and in the specific context of application testing. Because this section is more forward looking, it is also more speculative.
We consider three topics:
- Specification-Driven Development: As the scope and power of code generation improves, it becomes more and more important to structure effective prompts. How can we specify enough detail using human language (e.g., English) to allow models to generate and validate whole applications?
- Can We Eliminate Source Code? Computer scientists have wondered for decades why we still program computers using structured text, i.e., programming languages. Attempts to switch to alternatives, such as graphical “drag-and-drop” environments, have failed (with a few exceptions). Could generative AI finally eliminate the need for source code?
- From Testing to Tuning: Our current approach to testing is to use tests to detect suboptimal behavior, fix it somehow, then repeat until we have the behavior we want. Can we instead add an iterative and incremental model tuning process that adapts the model to the desired behavior?
What’s Next?
Start with Specification-Driven Development, which discusses one approach to making user prompts sufficiently detailed and precise enough that reliable application generation can occur. Refer to the Glossary regularly for definitions of terms. See the References for more information.