Educating industrial-strength software engineers
A roadmap is proposed for integrating trends in software technology and product development into a graduate curriculum in software engineering. We contend that the causal relationship between building model solutions and developing products from these solutions, provides a sound basis for industrial strength software engineering. We illustrate the impact of modern software technology on the two fundamental, complementary sets of activities of domain engineering and application engineering. This is presented within a scheme for integrating design abstractions, such as architectural styles, frameworks, and patterns, with domain models and product generation. We address questions such as where in the spectrum of technology development do our current education programs fit? Is the current focus on architectures (patterns, frameworks and the like) a passing fad or a true ingredient for a mature software profession? What kind of software engineers should we be preparing for the 21st century?.