The synthesis of knowledge engineering and software engineering