Software productivity and quality have lagged far behind the gains in hardware productivity and quality over the past 50 years.
Object-oriented analysis, design, and programming promise to dramatically improve both software productivity and quality.
The IBM SanFrancisco™ project is presented as an example of the promise of Java-based middleware for improving productivity and quality in OOP software development.
Component-based software development is employed to maximize the reusability of proven software components to build large systems.
Components can be defined at various sizes, from atomic to molecular, to function based on size.
Small components maximize reusability, and large components reduce complexity and improve performance.
Extreme Programming technology enhances programming productivity.
N-Version Programming enhances program reliability.
Modern programming environments harness the sophistication of modern programming languages and technology and improve both programmer productivity and program trustworthiness.
Programming development will continue to enjoy greater and greater automation as application domain specialists become the application "programmers" using the tools developed by "metaprogrammers."