Abstract
More than twenty years ago the idea of producing software systems from reusable software components was proposed. Since that time many changes have taken place in Computer Science and Software Engineering, but software systems are still built as one-of-a-kind craftsman efforts. A method for software construction using components is rationalized using experience from software components, program transformations, system architecture, industrial large systems, automatic programming and program generation. Experience with the method is discussed. The limiting factors of the method that prevent the widespread use of reusable software components are identified.