The concept of software appeared in the fifties of last century. Since then, this concept has played a more and more important role in humane mixture of software code with the knowledge it contains. Based on our own experience, we propose to separate knowledge from software, separate knowledge development from software development and separate knowledge developers from software developers. The product, as contrasted to software, is called knowware. In this talk, we will discuss the definition of knowware and knowware engineering. We provide a framework of knowware engineering including its methodology, language and ontology. Concerning methodology we propose a ternary family of life cycle models: furnace model, crystallization model and spiral model. Further we propose a paradigm of software/knowware co-engineering, which is both object and component oriented. Two life cycle models of this co-engineering, the tower model and the ladder model, are proposed. Finally some conclusion is driven.