Is there a happy marriage between software engineering and knowledge engineering?

The recent advances in visual software engineering, UML, software patterns and component-based software engineering have once again posed challenges to software engineers and knowledge engineers to understand how to design better software based upon design knowledge, and how such knowledge is represented. In this keynote lecture, I will survey some of the recent approaches and attempt to clarify the concept of design knowledge and how the design knowledge is embedded in the software process. Finally I will illustrate how one can use generalized objects for knowledge representation in the software process.